<?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[Joe's Blog]]></title><description><![CDATA[Joe's Blog]]></description><link>https://engjoe.com</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Apr 2026 06:36:32 GMT</lastBuildDate><atom:link href="https://engjoe.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Exploring Transformers Breaking the Ice]]></title><description><![CDATA[I told Twitter I'd read the most important AI paper ever written. Over the weekend. In public.
It took a few days longer than that. But I did it.
The paper is "Attention Is All You Need." Published in 2017 by a team at Google. 8 authors. 15 pages. An...]]></description><link>https://engjoe.com/exploring-transformers-breaking-the-ice</link><guid isPermaLink="true">https://engjoe.com/exploring-transformers-breaking-the-ice</guid><category><![CDATA[AI]]></category><category><![CDATA[transformers]]></category><dc:creator><![CDATA[Youssof Hammoud]]></dc:creator><pubDate>Mon, 16 Feb 2026 19:20:24 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/OAsF0QMRWlA/upload/759b924a29bf606cdde4e9dc53c06d31.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I told Twitter I'd read the most important AI paper ever written. Over the weekend. In public.</p>
<p>It took a few days longer than that. But I did it.</p>
<p>The paper is "Attention Is All You Need." Published in 2017 by a team at Google. 8 authors. 15 pages. And it changed everything.</p>
<p>ChatGPT, Claude, Gemini, LLaMA — every large language model you've ever used traces back to this paper. It introduced the <strong>Transformer</strong>. And I wanted to understand what that actually means.</p>
<hr />
<p>I saw a tweet from Ahmad Osman breaking down foundational AI papers. I commented that I'd tackle this one over the weekend. Public commitment. No backing out.</p>
<p>I'm a software engineer with genuine enthusiasm for AI — not just using the tools, but understanding what's underneath. I wanted to go to the source. The actual paper. The architecture that powers this entire wave.</p>
<hr />
<h2 id="heading-before-transformers">Before Transformers</h2>
<p>Before Transformers, the dominant approaches were <strong>RNNs</strong> (Recurrent Neural Networks) and <strong>CNNs</strong> (Convolutional Neural Networks). I had to learn these first to understand what the paper was replacing.</p>
<p>RNNs process words one at a time. Left to right. Each word depends on the previous one. Like reading a sentence but you're only allowed to look at one word, remember what you can, and move on. <strong>CNNs</strong> were better at parallelization, but struggled with words far apart in a sentence. <strong>ByteNet</strong> tried to fix that, but the computational path between distant words grew with distance.</p>
<p>The fundamental problem: <strong>sequential processing is slow.</strong> You can't train on word 5 until you've processed words 1 through 4.</p>
<p>The Transformer processes all words at the same time. Not one by one. Not left to right. All of them. Simultaneously.</p>
<p>That's the breakthrough. The paper threw out recurrence entirely and replaced it with <strong>self-attention</strong> — a mechanism that lets every word in a sentence look at every other word, all at once. The path between any two words? <strong>O(1).</strong> Constant. Doesn't matter if they're next to each other or 500 words apart.</p>
<p>This is why Transformers can be trained on massive datasets. This is why GPUs love them. This is why we went from "AI is a neat research topic" to "AI is rewriting every industry."</p>
<p>Parallelization. That's the unlock.</p>
<hr />
<h2 id="heading-how-attention-works">How Attention Works</h2>
<p>The paper introduces <strong>Scaled Dot-Product Attention</strong> built on three components: a <strong>Query</strong>, a <strong>Key</strong>, and a <strong>Value</strong>.</p>
<p>Think of it like a search engine. The Query is what you're looking for. The Keys are labels on every piece of information. The Values are the actual information. You compare your Query against all Keys to figure out which Values matter most. The more relevant a Key is to your Query, the more weight its Value gets.</p>
<p>Every word generates its own Query, Key, and Value. So every word is simultaneously asking "what should I pay attention to?" and answering that question for every other word.</p>
<p><strong>Multi-head attention</strong> takes this further. Instead of one attention operation, you run multiple in parallel — each one looking at different types of relationships. One head might focus on grammar. Another on meaning. Another on position. The paper uses 8 heads, each operating on a 64-dimensional slice of the 512-dimensional model (d_model = 512), then concatenated back together. More eyes on the same data, each looking for something different.</p>
<hr />
<h2 id="heading-encoder-decoder-and-three-types-of-attention">Encoder, Decoder, and Three Types of Attention</h2>
<p>The Transformer has two halves. The <strong>encoder</strong> takes the input and builds a rich representation using self-attention — every word attends to every other word. The <strong>decoder</strong> generates output one token at a time, but with <strong>masked self-attention</strong> — each word can only look at what came before it. No peeking at the future. If you're translating a sentence and generating word 3, you shouldn't know what word 4 is yet.</p>
<p>Then there's <strong>encoder-decoder attention</strong>, where the decoder looks at the encoder's output. This connects input to output — the decoder asks "what parts of the input are relevant to the word I'm generating right now?"</p>
<p>Three types of attention. Same mechanism. Different purposes.</p>
<hr />
<h2 id="heading-the-rest-of-the-architecture">The Rest of the Architecture</h2>
<p>The part that genuinely tripped me up: <strong>positional encoding</strong> and <strong>position-wise feed-forward networks</strong>. Two completely different concepts with nearly identical names.</p>
<p><strong>Positional encoding</strong> solves a real problem — since the Transformer processes all words simultaneously, it has no sense of order. "The cat sat on the mat" and "mat the on sat cat the" would look identical. So you inject position information using sine and cosine functions at different frequencies. The sine wave choice felt arbitrary at first. But sinusoids let the model learn relative positions — the encoding for position 10 can be expressed as a linear function of the encoding for position 5.</p>
<p><strong>Position-wise feed-forward networks</strong> are just regular neural network layers applied independently to each position. Nothing to do with encoding position. Completely different concept.</p>
<p>NotebookLM helped me untangle this. I'd paste a section, ask it to break down the terminology, and it pulled the definitions apart clearly.</p>
<p>Other things worth noting: <strong>layer normalization</strong> keeps values stable so numbers don't explode or vanish as they flow through the network. <strong>Dropout</strong> at 0.1 randomly cuts 10% of connections during training to prevent memorization. And the <strong>embedding and softmax layers share the same weight matrix</strong> — the model's understanding of words stays consistent whether it's reading or writing.</p>
<p>Harvard's NLP group published an <a target="_blank" href="https://nlp.seas.harvard.edu/2018/04/03/attention.html">annotated version</a> that reimplements the entire Transformer in code. Not all of it ran cleanly in their Colab notebook, but reading the implementation alongside the paper gave me a second lens on every concept. When the math was abstract, the code made it concrete.</p>
<hr />
<h2 id="heading-whats-next">What's Next</h2>
<p>Reading this paper did something I didn't expect. It didn't just teach me how Transformers work. It made me realize how badly research papers are designed for learning.</p>
<p>15 pages of dense notation. No interactive diagrams. No way to poke at the architecture and see what changes. You either already have the background or you're Googling every other sentence.</p>
<p>I want to build something that fixes this. A tool that takes a research paper and turns it into an interactive, visual experience — 3blue1brown-style animations where you can see attention weights flow, watch embeddings form, step through the architecture layer by layer.</p>
<p>Papers shouldn't be walls. They should be doors.</p>
<p>That's the project for the future.</p>
<hr />
<p>Every LLM you use today — every chatbot, every coding assistant, every AI-generated anything — runs on the ideas in this paper. Eight researchers in 2017 figured out that attention is all you need, and the world hasn't been the same since.</p>
<p>I spent a few days understanding their work. Now when someone says "Transformer" I don't just nod. I know what's happening under the hood.</p>
<p>Worth every hour.</p>
<hr />
<p><em>The paper: <a target="_blank" href="https://proceedings.neurips.cc/paper_files/paper/2017/file/3f5ee243547dee91fbd053c1c4a845aa-Paper.pdf">Attention Is All You Need</a> (Vaswani et al., 2017)</em></p>
]]></content:encoded></item><item><title><![CDATA[I Spent 3 Weeks Exploiting a Patched Vulnerability]]></title><description><![CDATA[As an authorized junior developer I was assigned a pentesting task. Something new with not much expertise, however problem-solving from computer science field got my back.
Spoiler: the vulnerability was already patched. I just didn't know it yet.

Th...]]></description><link>https://engjoe.com/i-spent-3-weeks-exploiting-a-patched-vulnerability</link><guid isPermaLink="true">https://engjoe.com/i-spent-3-weeks-exploiting-a-patched-vulnerability</guid><category><![CDATA[cybersecurity]]></category><category><![CDATA[pentesting]]></category><category><![CDATA[Synology]]></category><category><![CDATA[exploit]]></category><category><![CDATA[hacking]]></category><dc:creator><![CDATA[Youssof Hammoud]]></dc:creator><pubDate>Wed, 14 Jan 2026 10:07:22 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/gQdPafWDSyk/upload/b8a92c55d8da3e32cd8ab74f25fea799.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As an authorized junior developer I was assigned a pentesting task. Something new with not much expertise, however problem-solving from computer science field got my back.</p>
<p>Spoiler: the vulnerability was already patched. I just didn't know it yet.</p>
<hr />
<h2 id="heading-the-beginning-feels-easy">The Beginning (Feels Easy)</h2>
<p>Things were vague in the beginning. I started by information gathering, like any software engineer would:</p>
<ol>
<li><p>Have access to the target network (LAN or over the internet)</p>
</li>
<li><p>Know the services - domain finding and IP address scanning</p>
</li>
<li><p>Quick scan known ports against couple of servers</p>
</li>
<li><p>Identify services and corresponding versions</p>
</li>
<li><p>Map vulnerabilities by service/open port</p>
</li>
<li><p>Select highest CVE score vulnerability</p>
</li>
</ol>
<p>Scanner finds Netatalk 3.1.8 on port 548. CVE-2018-1160. CVSS score 9.8. Pre-authentication remote code execution.</p>
<p>I thought: "Nice. This will be easy."</p>
<p>It was not!</p>
<hr />
<h2 id="heading-what-is-netatalk">What is Netatalk?</h2>
<p>Netatalk is a Free and Open Source file server that implements the <a target="_blank" href="https://en.wikipedia.org/wiki/Apple_Filing_Protocol">Apple Filing Protocol (AFP)</a> over TCP/IP. It lets Apple devices talk to Linux/Unix servers. Synology NAS uses it so Mac users can access their files.</p>
<p>Simple enough. Now let's look at the bug.</p>
<hr />
<h2 id="heading-the-vulnerability-looks-simple-on-paper">The Vulnerability (Looks Simple on Paper)</h2>
<p>CVE-2018-1160 is a heap overflow in <code>dsi_opensess.c</code>. Here's the vulnerable code:</p>
<pre><code class="lang-c"><span class="hljs-comment">/* parse options */</span>
<span class="hljs-keyword">while</span> (i &lt; dsi-&gt;cmdlen) {
  <span class="hljs-keyword">switch</span> (dsi-&gt;commands[i++]) {
  <span class="hljs-keyword">case</span> DSIOPT_ATTNQUANT:
    <span class="hljs-built_in">memcpy</span>(&amp;dsi-&gt;attn_quantum, dsi-&gt;commands + i + <span class="hljs-number">1</span>,
            dsi-&gt;commands[i]);  <span class="hljs-comment">// &lt;-- THE BUG</span>
    dsi-&gt;attn_quantum = ntohl(dsi-&gt;attn_quantum);
  <span class="hljs-keyword">case</span> DSIOPT_SERVQUANT:
  <span class="hljs-keyword">default</span>:
    i += dsi-&gt;commands[i] + <span class="hljs-number">1</span>;
    <span class="hljs-keyword">break</span>;
  }
}
</code></pre>
<p>See the problem? <code>dsi-&gt;attn_quantum</code> is a 4-byte integer, but <code>dsi-&gt;commands[i]</code> controls how many bytes get copied. Attacker controls that value. Send a big number, overflow the buffer, overwrite the <code>commands</code> pointer, redirect execution to your shellcode.</p>
<p>Classic heap overflow. Tenable published a working exploit. Should be straightforward.</p>
<p>Should be.</p>
<hr />
<h2 id="heading-setup-and-replication-the-first-layer">Setup and Replication (The First Layer)</h2>
<p>The main target was a Synology running DSM 6.2.4-25556. I needed to replicate the environment.</p>
<p>Problem: Synology isn't just software. It's hardware with a custom OS. You can't just download an ISO.</p>
<p>I searched:</p>
<ul>
<li><p>"Synology 6.2.4-25556 iso"</p>
</li>
<li><p>"Synology docker"</p>
</li>
<li><p>"Synology virtualbox"</p>
</li>
</ul>
<p>Results were confusing. I had to zoom out and understand what I was even looking at.</p>
<p><strong>NAS</strong>: Network Attached Storage - the general category<br /><strong>Synology</strong>: A popular brand that makes NAS hardware<br /><strong>DSM</strong>: DiskStation Manager - the web-based OS that runs on Synology devices</p>
<p>To run DSM without Synology hardware, you need <strong>XPenology</strong> - a community project that creates bootloaders to run DSM on regular PCs/VMs.</p>
<p>This is where the pain started.</p>
<hr />
<h2 id="heading-the-virtualization-nightmare">The Virtualization Nightmare</h2>
<h3 id="heading-attempt-1-virtualbox">Attempt 1: VirtualBox</h3>
<p>Created a VM. Downloaded a bootloader. Configured the virtual disk.</p>
<p>Boot. Black screen. Nothing.</p>
<p>Tried different settings. Different SATA controllers. Different network adapters.</p>
<p>Boot. Black screen. Still nothing.</p>
<p>The e1000 network adapter wasn't being recognized properly. XPenology forums mentioned this. Solutions were vague. "Try VMware instead."</p>
<h3 id="heading-attempt-2-vmware-workstation">Attempt 2: VMware Workstation</h3>
<p>New VM. Same bootloader.</p>
<p>Boot. Actually got somewhere this time. Bootloader menu appeared.</p>
<p>Selected the option. Loading... loading...</p>
<p>Kernel panic.</p>
<h3 id="heading-the-bootloader-carousel">The Bootloader Carousel</h3>
<p>I tried them all:</p>
<ul>
<li><p><strong>Jun's Loader 1.03b</strong> - wouldn't boot</p>
</li>
<li><p><strong>Jun's Loader 1.04b</strong> - booted but couldn't find DSM</p>
</li>
<li><p><strong>RedPill</strong> - complex setup, failed</p>
</li>
<li><p><strong>ARPL (Automated RedPill Loader)</strong> - promising but version incompatibility</p>
</li>
<li><p><strong>TinyCore RedPill</strong> - finally something worked</p>
</li>
</ul>
<p>I rebuilt that VM probably 6-10 times. Each time thinking "this configuration will work."</p>
<p>Each time: it didn't.</p>
<h3 id="heading-the-dead-link-problem">The Dead Link Problem</h3>
<p>Finding the right DSM .pat file was its own adventure. I searched:</p>
<ul>
<li><p>Official Synology archive (missing old versions)</p>
</li>
<li><p>XPenology forums (half the links were dead)</p>
</li>
<li><p>Web Archive (saved my life multiple times)</p>
</li>
<li><p>Random forum posts from 2019</p>
</li>
</ul>
<p>Lost count of how many 404s I hit. Every promising link led to a dead end. Some files were corrupted. Some were wrong versions. Some required registration on forums that no longer existed.</p>
<hr />
<h2 id="heading-plot-twist-the-real-synology">Plot Twist: The Real Synology</h2>
<p>At some point I thought: "Maybe I should just buy the hardware."</p>
<p>I got my hands on a real DS920+. Used, from previous owner.</p>
<p>Problem: it had data on it. Previous owner's data. Couldn't just wipe it without complications.</p>
<p>Back to the VM.</p>
<hr />
<h2 id="heading-finally-a-working-environment">Finally: A Working Environment</h2>
<p>After weeks of VM failures, I got DSM 6.2.2-24922 running in VMware. Not the exact version I wanted (25556), but close enough. Same Netatalk version. Should be vulnerable.</p>
<p>Time to exploit.</p>
<hr />
<h2 id="heading-the-exploit-attempts-the-second-layer">The Exploit Attempts (The Second Layer)</h2>
<p>I read Tenable's writeup. Downloaded the Exploit-DB code (EDB-46034). Studied the DSI protocol.</p>
<p>The exploit strategy:</p>
<ol>
<li><p>Send malformed DSI OpenSession packet</p>
</li>
<li><p>Overflow <code>attn_quantum</code> to overwrite <code>commands</code> pointer</p>
</li>
<li><p>Point <code>commands</code> to the AFP dispatch table (<code>afp_switch</code>)</p>
</li>
<li><p>Next command executes from the dispatch table = code execution</p>
</li>
</ol>
<p>First step: find addresses. The binary has no PIE (Position Independent Executable), so addresses are fixed. Good news.</p>
<pre><code class="lang-bash">$ checksec usr/bin/afpd
    Arch:     amd64-64-little
    RELRO:    Partial RELRO
    Stack:    Canary found
    NX:       NX enabled
    PIE:      No PIE (0x400000)  <span class="hljs-comment"># &lt;-- NICE</span>
</code></pre>
<p>Extracted <code>afp_switch</code> address: <code>0x65b880</code></p>
<p>Now build the payload. Send it.</p>
<p><strong>Crash.</strong></p>
<p>Okay, wrong offset probably. Adjust. Send again.</p>
<p><strong>Crash.</strong></p>
<p>Different offset. Different approach.</p>
<p><strong>Crash. Crash. Crash.</strong></p>
<p>I wrote more than 10 different exploit scripts. Different offsets, different padding, different techniques.</p>
<p>Every. Single. One. Crashed the server.</p>
<hr />
<h2 id="heading-the-confusion">The Confusion</h2>
<p>The server crashed every time. But here's what was weird:</p>
<p>When I sent a <strong>normal</strong> DSI OpenSession (option length = 4 bytes), the server responded fine.</p>
<p>When I sent length = 6 or more, instant crash. No response.</p>
<p>My theory: "The exploit is working. I'm just hitting the wrong offset. Maybe ASLR is on somehow?"</p>
<p>I checked ASLR. It was off.</p>
<p>I kept trying different offsets. 16 bytes from <code>attn_quantum</code>. 24 bytes. 32 bytes. 40 bytes.</p>
<p>All crashed.</p>
<p>What was I missing?</p>
<hr />
<h2 id="heading-the-discovery">The Discovery</h2>
<p>After 2-3 weeks of this, I decided to actually look at what the server was doing.</p>
<p>Opened radare2 on the library file:</p>
<pre><code class="lang-bash">r2 -A usr/lib/libatalk.so.17.0.0
[0x00011d80]&gt; pdf @ sym.dsi_opensession
</code></pre>
<p>Scrolled through the disassembly. Looking for the <code>memcpy</code>. Looking for the vulnerable pattern.</p>
<p>Then I saw it:</p>
<pre><code class="lang-plaintext">0x00029c09      cmp r9b, 1           ; if option_type == 1
0x00029c0d      jne 0x29c24          ; skip if not
0x00029c0f      cmp rsi, 4           ; CHECK: is length == 4?
0x00029c13      jne 0x29d01          ; if NOT 4 → jump to ERROR
</code></pre>
<p>Followed the error path:</p>
<pre><code class="lang-plaintext">0x00029d01      ...
0x00029d18      lea r8, str.option__u_bad_length:__zu  
               ; "option %u bad length: %zu"
...
0x00029cfc      call sym.imp.exit    ; exit(1)
</code></pre>
<p>There it was.</p>
<p>The "crash" wasn't the vulnerability triggering. It wasn't my payload corrupting memory. It wasn't wrong offsets.</p>
<p><strong>It was a patch.</strong></p>
<p>Synology added a length check. If the option length isn't exactly 4, the server logs an error message and calls <code>exit(1)</code>. Clean termination. Not a crash.</p>
<p>The vulnerability was patched before I even started.</p>
<hr />
<h2 id="heading-the-timeline">The Timeline</h2>
<ul>
<li><p><strong>CVE-2018-1160</strong> disclosed: December 2018</p>
</li>
<li><p><strong>Synology patch</strong> (DSM 6.2.1-23824-4): December 2018</p>
</li>
<li><p><strong>My target</strong> (DSM 6.2.2-24922): May 2019</p>
</li>
<li><p><strong>Reality</strong>: Already patched for 6 months before the build date</p>
</li>
</ul>
<p>I spent 3 weeks trying to exploit something that was fixed before I started.</p>
<hr />
<h2 id="heading-what-i-actually-learned">What I Actually Learned</h2>
<p>Here's the thing: I'm not even mad. I learned more from this failure than I would have from a working exploit.</p>
<h3 id="heading-1-verify-the-vulnerability-exists-before-exploiting">1. Verify the vulnerability exists before exploiting</h3>
<p>I trusted the scanner. Scanner said "Netatalk 3.1.8 = vulnerable." Scanner didn't check for vendor patches.</p>
<p><strong>Lesson</strong>: Version numbers lie. Synology ships Netatalk 3.1.8 but with backported security fixes. Always verify by looking at the actual code.</p>
<h3 id="heading-2-read-the-disassembly-first">2. Read the disassembly FIRST</h3>
<p>10 minutes in radare2 would have saved me 3 weeks. I should have looked at <code>dsi_opensession</code> before writing a single line of exploit code.</p>
<p><strong>Lesson</strong>: Understand what you're attacking before you attack it.</p>
<h3 id="heading-3-the-setup-struggle-was-valuable">3. The setup struggle was valuable</h3>
<p>All those failed VMs taught me:</p>
<ul>
<li><p>How bootloaders work (and why they exist)</p>
</li>
<li><p>VirtualBox vs VMware networking differences</p>
</li>
<li><p>How to extract firmware (.pat files are just compressed archives)</p>
</li>
<li><p>How XPenology actually functions</p>
</li>
<li><p>That sometimes the "easy path" (buying hardware) isn't easy either</p>
</li>
</ul>
<h3 id="heading-4-document-everything">4. Document everything</h3>
<p>I wish I had written this article as I went. Half my notes were scattered across terminal history and random text files.</p>
<hr />
<h2 id="heading-tools-i-used">Tools I Used</h2>
<ul>
<li><p><strong>radare2</strong> - Binary analysis (the tool that finally showed me the truth)</p>
</li>
<li><p><strong>checksec</strong> - Quick binary security check (PIE, ASLR, etc.)</p>
</li>
<li><p><strong>file</strong> - Identifying file types during firmware extraction</p>
</li>
<li><p><strong>VMware Workstation</strong> - After VirtualBox failed me</p>
</li>
<li><p><strong>Various XPenology bootloaders</strong> - TinyCore RedPill eventually worked</p>
</li>
</ul>
<hr />
<h2 id="heading-what-would-i-do-differently">What Would I Do Differently?</h2>
<ol>
<li><p><strong>Check if patched first</strong> - Before any exploit development, look at the actual vulnerable function. Compare to patched version.</p>
</li>
<li><p><strong>Document from day one</strong> - Every failure, every dead end, every small victory.</p>
</li>
<li><p><strong>Trust but verify</strong> - Vulnerability scanners give you leads, not guarantees.</p>
</li>
</ol>
<hr />
<h2 id="heading-attack-end-goal-that-never-happened">Attack End Goal (That Never Happened)</h2>
<p>For the record, here's what CVE-2018-1160 <em>would</em> have allowed:</p>
<p>An <strong>unauthorized</strong> attacker could gain remote code execution on a Synology DiskStation NAS server. No authentication required. Send malformed packet → execute arbitrary code → own the box.</p>
<p>Critical vulnerability. CVSS 9.8. Would have been a clean kill.</p>
<p>If only it wasn't patched.</p>
<hr />
<h2 id="heading-final-thoughts">Final Thoughts</h2>
<p>Failing is part of the process. I went in expecting to pop a shell in a few days. Instead I learned how NAS systems work, how firmware is structured, how to read assembly, and how to properly verify a vulnerability before wasting weeks on it.</p>
<p>The next pentest will go differently. I'll check the code first.</p>
<p>But I wouldn't trade this experience for a quick win. The struggle taught me more than success ever could.</p>
<hr />
<p><em>This was an authorized penetration test in a controlled lab environment. Don't hack things you don't have permission to hack.</em></p>
]]></content:encoded></item><item><title><![CDATA[Overview of Cloud Computing]]></title><description><![CDATA[We will be diving into the world of cloud computing in this article. During this article, we will look at the basics of cloud computing, including its definition, and essential characteristics of cloud computing. I invite you to join me in exploring ...]]></description><link>https://engjoe.com/overview-of-cloud-computing</link><guid isPermaLink="true">https://engjoe.com/overview-of-cloud-computing</guid><category><![CDATA[Cloud Computing]]></category><category><![CDATA[Intro]]></category><dc:creator><![CDATA[Youssof Hammoud]]></dc:creator><pubDate>Sun, 05 Feb 2023 21:38:59 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/BWCgQw25XUE/upload/5766d85ec5c9478298db78db5fa0a6ac.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We will be diving into the world of cloud computing in this article. During this article, we will look at the basics of cloud computing, including its definition, and essential characteristics of cloud computing. I invite you to join me in exploring how cloud computing is changing the future of business and technology by exploring its many benefits and challenges.</p>
<p>There is a concept called cloud computing that allows on-demand access to a shared pool of configurable computing resources, allowing for convenient, on-demand access to these resources. As examples of these resources, networks, servers, storage, applications, and services can be rapidly provisioned and released with minimum management effort or service-provider interaction.</p>
<p>There are five key characteristics of cloud computing, three deployment models, and three service models that form the model of cloud computing. These five key characteristics are as follows:</p>
<ol>
<li><p>On-demand self-service: This allows users to access cloud resources such as processing power, storage, and network using a simple interface without interaction with the service provider.</p>
</li>
<li><p>Broad network access: Cloud computing resources can be accessed via the network through standard mechanisms and platforms such as mobile phones, tablets, laptops, and workstations.</p>
</li>
<li><p>Resource pooling: This gives providers economies of scale, which they pass on to their customers, making the cloud cost-efficient. Resources are dynamically assigned based on demand.</p>
</li>
<li><p>Rapid elasticity: This allows users to access more resources when they need them and scale back when they don't.</p>
</li>
<li><p>Measured service: Users can pay for what they use or reserve resources as they go. Resource usage is monitored, measured, and reported transparently based on utilization.</p>
</li>
</ol>
<p>Many characteristics make cloud computing a highly flexible, cost-effective, and efficient solution for companies of all sizes and across a wide variety of industries. This lesson will focus on the business case for cloud computing and how it changes the way businesses operate. Besides the five essential characteristics, cloud computing also includes three deployment models and three service models in addition to the five essential characteristics.</p>
<p>Among the three deployment models, the following are the most commonly used:</p>
<ol>
<li><p>Public cloud: This leverages cloud services over the open internet on hardware owned by the cloud provider, but its usage is shared by other companies.</p>
</li>
<li><p>Private cloud: The cloud infrastructure is provisioned for exclusive use by a single organization. It could run on-premises or it could be owned, managed, and operated by a service provider.</p>
</li>
<li><p>Hybrid cloud: This is a mix of both public and private clouds, working together seamlessly.</p>
</li>
</ol>
<p>As far as service models are concerned, there are three:</p>
<ol>
<li><p>Software as a Service (SaaS): This is a software licensing and delivery model in which software and applications are centrally hosted and licensed on a subscription basis. It is also known as "on-demand software."</p>
</li>
<li><p>Platform as a Service (PaaS): You get access to the platform, that is the hardware and software tools, usually those needed to develop and deploy applications to users over the internet.</p>
</li>
<li><p>Infrastructure as a Service (IaaS): You get access to infrastructure and physical computing resources such as servers, networking, storage, and data center space without the need to manage and operate them.</p>
</li>
</ol>
<p>These deployment and service models provide a wide range of options for organizations to choose from depending on their specific needs and requirements. In this article, we provided an overview of cloud computing, including its definition, essential characteristics, deployment models, and service models. We also discussed how these characteristics, models and service make cloud computing a highly flexible, cost-effective, and efficient solution for organizations of all sizes, across all industries.</p>
<p>As a conclusion, cloud computing has become more than a buzzword, but rather a reality which has dramatically changed how businesses operate and how IT resources are used in the digital age. In order to be able to decide which deployment and service model best suits the needs of their organization, it is important for them to be aware of the benefits and challenges of cloud computing.</p>
<p>It is crucial for businesses to keep up-to-date with the latest developments in this field to stay competitive in the future, and the future of technology largely revolves around the cloud.</p>
]]></content:encoded></item></channel></rss>