<?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 Peng on Medium]]></title>
        <description><![CDATA[Stories by Peng on Medium]]></description>
        <link>https://medium.com/@NilStack?source=rss-5f8e077857f4------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*oheTHkNILDEddskMLn3SkQ.jpeg</url>
            <title>Stories by Peng on Medium</title>
            <link>https://medium.com/@NilStack?source=rss-5f8e077857f4------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Mon, 13 Jul 2026 09:36:46 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@NilStack/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[ Claude Code Weekly Briefing: Huge Evolution from Assistant to Autonomous AI Agent! ]]></title>
            <link>https://medium.com/@NilStack/claude-code-weekly-briefing-huge-evolution-from-assistant-to-autonomous-ai-agent-cd199d584ac0?source=rss-5f8e077857f4------2</link>
            <guid isPermaLink="false">https://medium.com/p/cd199d584ac0</guid>
            <category><![CDATA[ai-agent]]></category>
            <category><![CDATA[llm]]></category>
            <category><![CDATA[claude-code]]></category>
            <category><![CDATA[claude]]></category>
            <category><![CDATA[ai]]></category>
            <dc:creator><![CDATA[Peng]]></dc:creator>
            <pubDate>Sun, 15 Mar 2026 10:31:22 GMT</pubDate>
            <atom:updated>2026-03-15T10:31:22.217Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/768/1*XbaO2KI6tqwfqd3FISXHvg.png" /></figure><p>This week (Mar 7–13) has been massive for Anthropic’s Claude Code. We are witnessing a shift from passive assistance to proactive, agentic automation and full-stack design capabilities.</p><p>Here’s your key-takeaway summary. Swipe through to see the details! 👉</p><p><strong>Highlights:</strong></p><ul><li><strong>[Active Agent Mode]</strong> (Mar 7): Passive tools are a thing of the past. Claude can now handle recurring local background tasks — like scanning logs and auto-fixing bugs — autonomously in a sandbox env.</li><li><strong>[Multi-Agent Code Review]</strong> (Mar 9): Parallel AI review squads analyze PRs, auto-detect bugs, and rank them by severity. Boosted useful PR comments from 16% to 54% in testing! 📉❌</li><li><strong>[Remote Control]</strong> (Mar 12): Control your PC from your phone! Initiate a local coding session remotely via the Claude app for faster response and flexible hybrid work. 📱💻</li><li><strong>[Full-Stack Design]</strong> (Mar 13): Breaking boundaries! By integrating via MCP, Claude can go from a blank canvas to a fully deployed React app. Design + Dev, all-in-one. 🎨🏗️</li><li><strong>[Market Update]</strong> (Wire analysis): Claude Code is crushing it with &gt;$2.5B ARR, making up ~1/5 of Anthropic’s revenue and dwarfing competitor OpenAI Codex ($1.0B ARR).</li></ul><p><strong>Summary:</strong> Anthropic is redefining the dev workflow by adding <strong>autonomy, judgement, cross-device, and full-stack capabilities</strong> to Claude. It’s time to leverage your own proactive “Cat-Agent.”</p><p>Which new feature are you most excited to try? Drop a comment! 👇</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=cd199d584ac0" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Claude 4.6 1M Context Officially GA]]></title>
            <link>https://medium.com/@NilStack/claude-4-6-1m-context-officially-ga-e0f60067213a?source=rss-5f8e077857f4------2</link>
            <guid isPermaLink="false">https://medium.com/p/e0f60067213a</guid>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[llm]]></category>
            <category><![CDATA[claude-code]]></category>
            <category><![CDATA[ai-agent]]></category>
            <category><![CDATA[claude]]></category>
            <dc:creator><![CDATA[Peng]]></dc:creator>
            <pubDate>Fri, 13 Mar 2026 23:19:37 GMT</pubDate>
            <atom:updated>2026-03-13T23:19:37.298Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/768/1*GyF_CurrSYDb1t17dnyEsQ.png" /></figure><p><strong>From complex engineering to native logical understanding. The 1M window is now standardized.</strong> 🐱🤖</p><h4>💡 The Core Shift: Why 1M Context Matters</h4><p>In the past, processing massive amounts of data required tedious ‘engineering patches.’ To make AI understand long texts, we had to rely on <strong>RAG (Retrieval-Augmented Generation)</strong> architectures, struggle with <strong>Lossy Summarization</strong>, or perform frequent <strong>Context Clearing</strong>.</p><p>The standardized 1M window makes these complex intermediate layers no longer mandatory. You can now load and use your data directly.</p><h4>🛠️ Three Typical Scenarios Transformed</h4><p><strong>1. Full Codebase Analysis (Entire Codebase)</strong></p><ul><li><strong>Before:</strong> Manual file selection, risk of missing cross-module logical connections. 🔴</li><li><strong>Now:</strong> <strong>Load Whole Projects Directly!</strong> Native understanding of the entire codebase development, maintaining perfect logical consistency. 🟢</li></ul><p><strong>2. Millions of Pages of Contracts (Legal Compliance)</strong></p><ul><li><strong>Before:</strong> Information Loss — Relying on summaries means risking missing tiny key clauses hidden in an annex. 🔴</li><li><strong>Now:</strong> <strong>Direct Reading of Original Docs!</strong> Leverage high recall to perform precise detail retrieval and cross-document comparison without skipping a word. 🟢</li></ul><p><strong>3. Full Trace of Agents (Agent Traces)</strong></p><ul><li><strong>Before:</strong> Memory Loss — Long logs cause context overload, forcing memory clearing and creating hard-to-trace causal loops. 🔴</li><li><strong>Now:</strong> <strong>Complete Process Backtracing!</strong> Full process trace and interactive debugging on thousands of logs, making causality clear at a glance. 🟢</li></ul><h4>📈 Key Advantages &amp; Summary</h4><ul><li><strong>Standard Pricing, Transparency:</strong> No long-context premium. A 900K request is billed at the exact same per-token rate as a 9K request.</li><li><strong>Multimodal Enhancement:</strong> Expand to <strong>600 images or PDFs</strong> per request (up from 100), streamlining the processing of scanned books and documents.</li><li><strong>Developer Benefits:</strong> <strong>Claude Code</strong> automatically enables the 1M window, reducing compactions and keeping your workflow intact.</li></ul><p><strong>In summary: 1M Context is officially standardized from an experimental feature to a foundational production tool! 🎉</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e0f60067213a" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Gemini Embedding 2: One Vector Space for All]]></title>
            <link>https://medium.com/@NilStack/gemini-embedding-2-one-vector-space-for-all-014c9d01136f?source=rss-5f8e077857f4------2</link>
            <guid isPermaLink="false">https://medium.com/p/014c9d01136f</guid>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[google]]></category>
            <category><![CDATA[gemini]]></category>
            <category><![CDATA[llm]]></category>
            <dc:creator><![CDATA[Peng]]></dc:creator>
            <pubDate>Wed, 11 Mar 2026 23:55:34 GMT</pubDate>
            <atom:updated>2026-03-11T23:55:34.474Z</atom:updated>
            <content:encoded><![CDATA[<p><strong>Gemini Embedding 2</strong> is Google’s first <strong>native multimodal embedding model</strong>. It moves beyond text-only vectors, mapping text, images, audio, video, and PDFs into a single, unified vector space. By assigning a shared “semantic coordinate” to different data types, it enables AI to understand the world more like we do.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/768/1*nCHZHB9RDC23yMHdNB1Ttw.png" /></figure><h4>1. Key Breakthroughs</h4><ul><li><strong>Vectorize Anything, Instantly:</strong> Skip the tedious preprocessing. There’s no need for Speech-to-Text (STT) — feed raw audio, video, or images directly to generate high-quality embeddings.</li><li><strong>True Cross-Modal Search:</strong> Experience seamless retrieval across formats. Use a text query to find a specific video clip, or use an image to surface a relevant PDF. It’s about deep semantic understanding, not just keyword matching.</li><li><strong>Matryoshka Representation Learning (MRL):</strong> This “nesting doll” feature allows the default 3072-dimension vectors to be truncated to 1536 or 768 with minimal loss in accuracy. The result? <strong>Dramatically lower storage costs and faster retrieval.</strong></li><li><strong>Interleaved Input Support:</strong> The model can process mixed sequences of text and images in a single request, capturing the nuanced relationships between different modalities.</li></ul><h4>2. Superpowers for Developers &amp; Users</h4><ul><li><strong>Text-to-Everything Search:</strong> Find exactly what you need. Enter a prompt like <em>“cat rolling over,”</em> and the AI will pinpoint that exact moment within hours of raw video footage.</li><li><strong>Image-to-Document Retrieval:</strong> Upload a photo of a circuit diagram or a mechanical part, and let the AI find the corresponding technical manual (PDF) or a specific video tutorial.</li><li><strong>Search That “Gets” You:</strong> Move beyond rigid queries. Ask, <em>“Where is the coffee recipe I bought yesterday?”</em> and the AI will intelligently retrieve the correct voice memo or digital note.</li><li><strong>The New Standard for RAG:</strong> This is the ultimate tool for building next-gen <strong>Multimodal RAG</strong>, advanced semantic search, and highly personalized recommendation engines.</li></ul><h4>3. Technical Specifications</h4><ul><li><strong>High Throughput:</strong> Supports up to <strong>8,192 tokens</strong> for text.</li><li><strong>Comprehensive Media Support:</strong> Handles up to <strong>6 images, 120s of video, 80s of raw audio, or 6-page PDFs</strong> in a single pass.</li><li><strong>SOTA Performance:</strong> Achieves State-of-the-Art results on the <strong>MTEB</strong> (Massive Text Embedding Benchmark) and supports over <strong>100 languages</strong>.</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=014c9d01136f" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[ Enable Web Access for OpenClaw: Mastering the Tavily Search Skill]]></title>
            <link>https://medium.com/all-about-openclaw/enable-web-access-for-openclaw-mastering-the-tavily-search-skill-02a485390bda?source=rss-5f8e077857f4------2</link>
            <guid isPermaLink="false">https://medium.com/p/02a485390bda</guid>
            <category><![CDATA[llm]]></category>
            <category><![CDATA[openclaw]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[ai-agent]]></category>
            <dc:creator><![CDATA[Peng]]></dc:creator>
            <pubDate>Wed, 11 Mar 2026 09:40:46 GMT</pubDate>
            <atom:updated>2026-03-11T12:25:09.477Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*uvvx9HJGFz47z_2f" /><figcaption>Photo by <a href="https://unsplash.com/@fotoinshadows?utm_source=medium&amp;utm_medium=referral">Monika Borys</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>Is your AI’s knowledge out of date? Supercharge your OpenClaw with the <strong>Tavily Web Search</strong> skill. It grants your agent real-time internet access to find the latest information. Critically, it extracts only clean text, stripping away ads and clutter for a seamless reading experience.</p><h4>One Picture for Tavily Web Search skill</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/768/1*gFo0s-8YYvEBHjw-EwaZrg.png" /></figure><h4>🔧 What Can It Do? (Key Capabilities)</h4><ul><li><strong>Intelligent Search (Smart Recall)</strong>: Need a quick overview? Use a basic query. For thorough investigations, activate deep research with the <strong>--deep</strong> flag.</li><li><strong>Topic Filtering (Precise Categories)</strong>: Use the <strong>--topic</strong> parameter to narrow results to specific verticals like &quot;news&quot; or &quot;finance,&quot; ensuring highly relevant data.</li><li><strong>Content Dehydration (Extract Content)</strong>: Throw a direct URL at the skill. It automatically extracts the main text, transforming long articles into concise summaries in seconds.</li></ul><h4>🎯 Real-World Application Scenes</h4><ul><li><strong>Query Live Information</strong>: Ask immediate questions like “What is the current weather in Beijing?” or “What is the Bitcoin price today?”</li><li><strong>Monitor Industry News</strong>: Combine the news topic with the <strong>--days 1</strong> parameter to track the latest developments within the last 24 hours.</li><li><strong>Rapid Article Digestion</strong>: Provide a link. Don’t waste time browsing; OpenClaw directly extracts the core content, saving you time and effort!</li></ul><h4>✨ Key Advantages (Why Use Tavily?)</h4><ul><li><strong>Curated Data Only</strong>: It automatically filters webpage ads and noise, providing the AI with pure text. This saves on tokens, bandwidth, and processing time.</li><li><strong>Fresh Information (Real-Time Truth)</strong>: Access last night’s game scores or this morning’s breaking news, eliminating outdated AI hallucinations.</li><li><strong>Verifiable Sources (Citation Support)</strong>: Every search result includes the original URL, making it easy for you to click through and verify the data.</li></ul><h4>🚀 Installation &amp; Activation</h4><ol><li><strong>Get Your Key</strong>: Visit the Tavily official website and apply for a free API key, called <strong>TAVILY_API_KEY</strong>.</li><li><strong>Install the Skill</strong>: Crucially, use <strong>only</strong> official OpenClaw-recommended channels and methods to download and install the “Tavily Web Search” skill.</li><li><strong>Automatic Recognition</strong>: When OpenClaw starts, it automatically identifies skills within the skills folder and invokes this script when a search is required.</li></ol><h4>🔐 Security Tips:</h4><ul><li>Always download and install skills from <strong>official channels</strong>.</li><li>It is best practice to run OpenClaw within an <strong>isolated environment</strong>.</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=02a485390bda" width="1" height="1" alt=""><hr><p><a href="https://medium.com/all-about-openclaw/enable-web-access-for-openclaw-mastering-the-tavily-search-skill-02a485390bda">🦞 Enable Web Access for OpenClaw: Mastering the Tavily Search Skill</a> was originally published in <a href="https://medium.com/all-about-openclaw">All About OpenClaw</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[/loop: Claude Code 2.7.1 Deep Dive]]></title>
            <link>https://medium.com/@NilStack/loop-claude-code-2-7-1-deep-dive-b7da0fdcfec7?source=rss-5f8e077857f4------2</link>
            <guid isPermaLink="false">https://medium.com/p/b7da0fdcfec7</guid>
            <category><![CDATA[ai-agent]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[claude-code]]></category>
            <category><![CDATA[claude]]></category>
            <dc:creator><![CDATA[Peng]]></dc:creator>
            <pubDate>Sun, 08 Mar 2026 14:36:44 GMT</pubDate>
            <atom:updated>2026-03-08T14:36:44.245Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*oef3yBJMUdbcgXeg" /><figcaption>Photo by <a href="https://unsplash.com/@malvestida?utm_source=medium&amp;utm_medium=referral">Malvestida</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h4>No More Manual Repetition — One Command Lets Claude Automatically Execute Tasks on a Schedule</h4><p>On March 7, 2026, Anthropic released Claude Code version 2.7.1. The most notable new feature is the `/loop` command — a built‑in task scheduler that allows developers to create recurring tasks within the current session. AI will automatically and repeatedly execute any prompt or command at a specified interval, freeing you from repetitive monitoring and letting you focus on more creative work.</p><h4>What is /loop and How Can It Help You?</h4><p>Simply put, `/loop` is like setting a “scheduled alarm” inside Claude Code. You tell it “what to do and how often,” and it works silently in the background, proactively reporting results when needed.</p><h4>Everyday Use Cases</h4><p>Scenario 1: Monitoring Deployment Status** <br>You just pushed a new version to production and need to confirm whether the deployment succeeded. Previously, you might have manually refreshed a page or run a command every few minutes. Now, just type:</p><pre>/loop 5m check if the deployment finished and tell me what happened</pre><p>Claude checks every 5 minutes and notifies you as soon as the deployment completes or fails.</p><h4>Scenario 2: Scheduled Test Runs</h4><p>In a large project, you might want to run the test suite every hour to ensure no new bugs were introduced:</p><pre>/loop 1h run all tests, if any fail, attempt to auto-fix and report</pre><p>Claude runs the tests hourly, attempts to fix failures, and keeps you informed of code health.</p><h4>Scenario 3: Automatic GitHub Issue Triage</h4><p>As an open‑source maintainer, you want to stay on top of new issues:</p><pre>/loop 15m scan new issues in the repo, label them by priority and type, and @ me for critical bugs</pre><p>Claude checks every 15 minutes, automatically categorizes issues, and alerts you to important ones.</p><h4>Scenario 4: Periodic Log Analysis</h4><p>You need to regularly analyze application logs for anomalies:</p><pre>/loop 30m analyze errors in /var/log/app.log from the last 30 minutes and summarize</pre><p>Claude analyzes logs every 30 minutes and outputs a summary, helping you quickly identify problems.</p><h4>Flexible Time Expressions</h4><p>The syntax of /loop is very flexible: the interval can be placed before or after the prompt, or even omitted (defaulting to 10 minutes). Supported units include:</p><pre>- `s`: seconds (rounded up to minutes due to cron granularity)<br>- `m`: minutes<br>- `h`: hours<br>- `d`: days</pre><p>Claude automatically translates natural language descriptions (e.g., “every 2 hours”) into precise schedules. For example:</p><pre><br>/loop check build status every 2 hours<br>/loop 30s refresh status page # actually runs every minute</pre><p>For irregular intervals like 7 minutes, Claude rounds to the nearest whole minute and informs you of the actual interval used.</p><h4>Looping Over Other Commands</h4><p>One of `/loop`’s powerful features is its ability to loop over other Claude Code commands or skills, enabling complex automation workflows. For example:</p><pre>/loop 10m /review-pr 123</pre><p>This executes the PR review skill every 10 minutes, continuously monitoring a specific pull request.</p><p>You can also combine multiple instructions into a single prompt, such as checking deployment, running tests, and sending notifications.</p><h4>One‑Time Reminders: Natural Language Timers</h4><p>Beyond recurring tasks, `/loop` supports one‑time reminders using natural language:</p><pre>1. remind me to launch the new feature at 4pm<br>2. check if the backup task completed in 1 hour<br>3. remind me to call the team at 3:15pm</pre><p>Claude converts these requests into single‑fire tasks that delete themselves after execution — perfect for temporary reminders.</p><h4>Task Management: Listing, Canceling, and Underlying Tools</h4><p>Once you have multiple scheduled tasks, how do you manage them? Claude provides natural language commands:</p><pre>What scheduled tasks do I have?<br>Cancel the deployment check task<br>List all recurring tasks</pre><p>Under the hood, Claude uses three dedicated tools:</p><p>| Tool Name | Purpose |<br>| `CronCreate` | Creates a new task. Accepts a 5‑field cron expression, the prompt to run, and a recurring/one‑shot flag. |<br>| `CronList` | Lists all scheduled tasks, including their IDs, schedules, and prompts. |<br>| `CronDelete` | Cancels a task by its ID. |</p><p>Each task is assigned a unique 8‑character ID (e.g., `a1b2c3d4`) upon creation, allowing precise cancellation. A single session can hold up to **50 scheduled tasks** concurrently — enough for most needs.</p><p>For example, running `CronList` might return:<br>- ID: `a1b2c3d4` | every 5 minutes | check deployment status<br>- ID: `e5f6g7h8` | hourly | run tests</p><h4>Technical Details: Time Parsing, Jitter, and Session Limits</h4><p>1. <strong>Time Parsing and Jitter</strong><br>- All times are interpreted in your local timezone. Cron expressions follow the standard 5‑field format (minute hour day‑of‑month month day‑of‑week), supporting `*`, `*/5`, `1–5`, `1,15,30`, but not aliases like `MON` or `JAN`.<br>- To avoid all tasks firing simultaneously and causing API congestion, the scheduler adds a small deterministic offset based on the task ID (jitter):<br> — Recurring tasks may fire up to 10% late (capped at 15 minutes).<br> — One‑shot tasks scheduled exactly on the hour or half‑hour may fire up to 90 seconds early.</p><p><strong>2. 3‑Day Auto‑Expiry</strong><br>To prevent forgotten tasks from running indefinitely, all recurring tasks automatically expire **3 days after creation**. They fire one last time and then delete themselves. If you need a task to last longer, simply recreate it before expiration.</p><p><strong>3. Session‑Bound Scope</strong><br>These tasks exist only within the current Claude Code session. Closing the terminal or exiting Claude Code removes all tasks. For durable scheduling that survives restarts, use Claude Code Desktop’s “scheduled tasks” feature or integrate with GitHub Actions.</p><h4>Disabling the Scheduler</h4><p>If you need to completely disable scheduled tasks, set the environment variable `CLAUDE_CODE_DISABLE_CRON=1`. This makes `/loop` and all cron tools unavailable, and any existing tasks will stop firing.</p><h4>Conclusion</h4><p>The introduction of `/loop` transforms Claude Code from a passive Q&amp;A tool into an autonomous assistant capable of working independently. Developers no longer need to stare at terminals waiting for results; instead, they define tasks and let AI execute them silently in the background. One line of command spawns a tireless “digital employee”.</p><p>For developers, this is not just an efficiency boost — it’s a paradigm shift. We can finally delegate repetitive monitoring, testing, and maintenance to AI, freeing ourselves for creative core development.</p><p>Claude Code 2.7.1 also brings other improvements, such as customizable voice keys, startup stability enhancements, and multi‑instance runtime optimizations, but the most exciting addition is undoubtedly `/loop`.</p><p>In the future, perhaps every developer will have their own AI scheduled assistant. And it all starts with a single `/loop`.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b7da0fdcfec7" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Building App with VIP Part 1: Prerequisite]]></title>
            <link>https://medium.com/swiftworld/building-app-with-vip-part-1-prerequisite-d0412c69afb6?source=rss-5f8e077857f4------2</link>
            <guid isPermaLink="false">https://medium.com/p/d0412c69afb6</guid>
            <category><![CDATA[apple]]></category>
            <category><![CDATA[mobile-app-development]]></category>
            <category><![CDATA[ios-app-development]]></category>
            <category><![CDATA[ios]]></category>
            <category><![CDATA[swift]]></category>
            <dc:creator><![CDATA[Peng]]></dc:creator>
            <pubDate>Thu, 06 Sep 2018 03:07:27 GMT</pubDate>
            <atom:updated>2018-09-06T03:11:03.825Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*get4YXeQKCIL7rwb" /><figcaption>Photo by <a href="https://unsplash.com/@johnschno?utm_source=medium&amp;utm_medium=referral">John Schnobrich</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>Today, we have more choices on architecture of iOS app including Apple’s MVC, MVVM, MVP, VIPER, VIP, etc. The decision depends on different contexts. So we will start a new series to explain them one by one with practical examples.</p><p>VIP(<a href="https://clean-swift.com/clean-swift-ios-architecture/">Clean Swift iOS Architecture</a>) is a newcomer which means View Controller, Interactor and Presenter. But there are more components than these three. I will build a simple app step by step while explaining different roles in VIP including what they are and how they work together.</p><h4>Prerequisite</h4><p>In this example, it will display our starred repositories in GitHub. Please start a new project with single view template in Xcode. Before start coding, please install <a href="https://github.com/nerdishbynature/octokit.swift">octokit.swift</a> as our networking layer. <a href="https://github.com/nerdishbynature/octokit.swift">octokit.swift</a> is</p><blockquote>A Swift API Client for GitHub and GitHub Enterprise</blockquote><p>Here I will use <a href="https://cocoapods.org/">CocoaPods</a>.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/be6bb894143ee24ed2b86ebc3b0d8c7c/href">https://medium.com/media/be6bb894143ee24ed2b86ebc3b0d8c7c/href</a></iframe><p>Then please generate a new personal access tokens for our example app in <a href="https://github.com/settings/tokens">tokens page</a> of GitHub’s Settings. Finally, put this token config in new AppConfig.swift</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/a5507f4c730c09719a8b50f391d5a89e/href">https://medium.com/media/a5507f4c730c09719a8b50f391d5a89e/href</a></iframe><h4>Scene</h4><p>In VIP, a scene can be considered as a complete functional “view”. As in the diagram, the scene includes its own models, worker, i<em>nteractor, </em>presenter and router except UI components.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/873/1*oxeYh0d-NrhBtwfBQos3VA.png" /></figure><p>Don’t mind if you don’t know what they are now. We will explain them one by one with their responsibilities and relationships. For simplicity, in our example there will be only on scene to show list of our starred repositories. The screenshot below gives us a complete view on what this scene looks like physically.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/396/1*SvSpRbc_s9yh_fOpiYWroA.png" /></figure><h4>Xcode Template</h4><p>Don’t worry on so many folders. [<a href="https://github.com/ustwo/vip-templates-swift">VIP Xcode Templates</a>] is a great tool to create the folder structure for you automatically. Please install this template and create new file.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*RFeTvcEt8XrWPzLa1sPskg.png" /></figure><p>Input the scene name.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*4_He1Q7_o4RBr9-NBdTQPQ.png" /></figure><p>That’s all for our first part for VIP. In next article, we will introduce different components of VIP from bottom-up.</p><h3>Subscribe</h3><p>Subscribe my weekly to see what happened in world of Swift.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fupscri.be%2F10bc6c%3Fas_embed%3Dtrue&amp;dntp=1&amp;url=https%3A%2F%2Fupscri.be%2F10bc6c&amp;image=https%3A%2F%2Fe.enpose.co%2F%3Fkey%3DdRXnS9Gplk%26w%3D700%26h%3D425%26url%3Dhttps%253A%252F%252Fupscri.be%252F10bc6c%252F%253Fenpose&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=upscri" width="800" height="400" frameborder="0" scrolling="no"><a href="https://medium.com/media/2577867dd74a81c3c6d3ed97c73e7edf/href">https://medium.com/media/2577867dd74a81c3c6d3ed97c73e7edf/href</a></iframe><p>Thanks for your time. Please <strong>clap</strong> to get this article seen by more people. Please click <strong>Follow </strong>to get latest blogs from me<strong>. </strong>As<strong> </strong><em>a passionate iOS developer, blogger and open source contributor, I’m also active on </em><a href="https://twitter.com/NilStack">Twitter</a> and <a href="https://github.com/NilStack">GitHub</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d0412c69afb6" width="1" height="1" alt=""><hr><p><a href="https://medium.com/swiftworld/building-app-with-vip-part-1-prerequisite-d0412c69afb6">Building App with VIP Part 1: Prerequisite</a> was originally published in <a href="https://medium.com/swiftworld">SwiftWorld</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Swift World This Week(08.27–09.02)]]></title>
            <link>https://medium.com/swiftworldweekly/swift-world-this-week-08-27-09-02-1d552ee5b558?source=rss-5f8e077857f4------2</link>
            <guid isPermaLink="false">https://medium.com/p/1d552ee5b558</guid>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[react-native]]></category>
            <category><![CDATA[ios]]></category>
            <category><![CDATA[ios-app-development]]></category>
            <category><![CDATA[swift]]></category>
            <dc:creator><![CDATA[Peng]]></dc:creator>
            <pubDate>Mon, 03 Sep 2018 03:25:44 GMT</pubDate>
            <atom:updated>2018-09-03T03:25:44.913Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*1EhBqBdZb39CClGV" /><figcaption>“person holding maple leaf” by <a href="https://unsplash.com/@californong?utm_source=medium&amp;utm_medium=referral">Nong Vang</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h3>Machine Learning</h3><ul><li><a href="https://github.com/google/dopamine">GitHub - google/dopamine: Dopamine is a research framework for fast prototyping of reinforcement learning algorithms.</a></li><li><a href="https://uxdesign.cc/the-present-and-future-of-ai-in-design-infographic-5ca90de10e72">The present and future of AI in Design [Infographic]</a></li></ul><h3>React Native</h3><p><a href="https://github.com/madhavanmalolan/awesome-reactnative-ui">GitHub - madhavanmalolan/awesome-reactnative-ui: Awesome React Native UI components updated weekly</a></p><h3>macOS</h3><p><a href="https://github.com/brentsimmons/NetNewsWire">brentsimmons/NetNewsWire</a></p><h3>Article</h3><ul><li><a href="https://larder.io/blog/larder-links-05-ios-onboarding/">What&#39;s in your Larder: Onboarding libraries for iOS</a></li><li><a href="https://www.raywenderlich.com/5743-dynamic-features-in-swift">Dynamic Features in Swift</a></li></ul><h3>Code</h3><ul><li><a href="https://github.com/mercari/Mew">mercari/Mew</a></li><li><a href="https://github.com/NSHipster/PasswordRules">NSHipster/PasswordRules</a></li></ul><h3>Tools</h3><p><a href="https://github.com/dgurkaynak/Penc">dgurkaynak/Penc</a></p><h3>Design</h3><p><a href="https://www.smashingmagazine.com/2018/08/best-practices-for-mobile-form-design/">Best Practices For Mobile Form Design - Smashing Magazine</a></p><h3>Marketing</h3><p><a href="https://github.com/amirrajan/survivingtheappstore">amirrajan/survivingtheappstore</a></p><h3>Random</h3><p><a href="https://blog.coleadership.com/build-a-feedback-loop-for-your-own-growth/">How to Build a Feedback Loop for Your Own Growth</a></p><h3>Learn Design Patterns in Swift</h3><p></p><h3>Subscribe</h3><p>Get Swift World This Weekly in another way.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fupscri.be%2F10bc6c%3Fas_embed%3Dtrue&amp;dntp=1&amp;url=https%3A%2F%2Fupscri.be%2F10bc6c&amp;image=https%3A%2F%2Fe.enpose.co%2F%3Fkey%3DdRXnS9Gplk%26w%3D700%26h%3D425%26url%3Dhttps%253A%252F%252Fupscri.be%252F10bc6c%252F%253Fenpose&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=upscri" width="800" height="400" frameborder="0" scrolling="no"><a href="https://medium.com/media/2577867dd74a81c3c6d3ed97c73e7edf/href">https://medium.com/media/2577867dd74a81c3c6d3ed97c73e7edf/href</a></iframe><p>Thanks for your time. Please <strong>clap</strong> to get this article seen by more people. Please click <strong>Follow </strong>to get latest blogs from me<strong>. </strong>As<strong> </strong><em>a passionate iOS developer, blogger and open source contributor, I’m also active on </em><a href="https://twitter.com/NilStack">Twitter</a> and <a href="https://github.com/NilStack">GitHub</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1d552ee5b558" width="1" height="1" alt=""><hr><p><a href="https://medium.com/swiftworldweekly/swift-world-this-week-08-27-09-02-1d552ee5b558">Swift World This Week(08.27–09.02)</a> was originally published in <a href="https://medium.com/swiftworldweekly">SwiftWorldWeekly</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Swift World This Week(08.20–08.26)]]></title>
            <link>https://medium.com/swiftworldweekly/swift-world-this-week-08-20-08-26-3521bfc78bd?source=rss-5f8e077857f4------2</link>
            <guid isPermaLink="false">https://medium.com/p/3521bfc78bd</guid>
            <category><![CDATA[augmented-reality]]></category>
            <category><![CDATA[ios]]></category>
            <category><![CDATA[ios-app-development]]></category>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[apple]]></category>
            <dc:creator><![CDATA[Peng]]></dc:creator>
            <pubDate>Mon, 27 Aug 2018 02:53:50 GMT</pubDate>
            <atom:updated>2018-08-27T02:53:50.903Z</atom:updated>
            <content:encoded><![CDATA[<h3>Machine Learning</h3><ul><li><a href="https://github.com/afshinea/stanford-cs-229-machine-learning">GitHub - afshinea/stanford-cs-229-machine-learning: VIP cheatsheets for Stanford&#39;s CS 229 Machine Learning</a></li><li><a href="https://github.com/hollance/CoreMLHelpers">GitHub - hollance/CoreMLHelpers: Types and functions that make it a little easier to work with Core ML in Swift.</a></li></ul><h3>AR</h3><p><a href="https://www.raywenderlich.com/5491-ar-face-tracking-tutorial-for-ios-getting-started">AR Face Tracking Tutorial for iOS: Getting Started</a></p><h3>Article</h3><ul><li><a href="https://nshipster.com/swift-property-observers/">Swift Property Observers</a></li><li><a href="https://medium.mybridge.co/swift-top-10-articles-for-the-past-month-v-aug-2018-cb3c8e33a72c">Swift Top 10 Articles for the Past Month (v.Aug 2018)</a></li></ul><h3>Code</h3><ul><li><a href="https://github.com/swiftengine/SwiftEngine">swiftengine/SwiftEngine</a></li><li><a href="https://github.com/jianstm/Schedule">jianstm/Schedule</a></li></ul><h3>Tools</h3><ul><li><a href="https://github.com/JohnSundell/Splash">JohnSundell/Splash</a></li><li><a href="https://github.com/rockbruno/swiftshield">GitHub - rockbruno/swiftshield: 🔒 Swift Obfuscator that protects iOS apps against reverse engineering attacks.</a></li><li><a href="https://nspredicate.xyz/">NSPredicate.xyz - NSPredicate / Core Data usage examples</a></li></ul><h3>Design</h3><p><a href="http://www.rexfeng.com/blog/2018/08/using-svg-pdf-assets-in-your-ios-app/">Using SVG / PDF assets in your iOS app</a></p><h3>Marketing</h3><p><a href="https://appfigures.com/resources/reply-to-ios-android-app-reviews">How to Reply to iOS and Google Play Reviews Like a Pro - 13 Power Tips You Should Always Keep In Mind</a></p><h3>Random</h3><p><a href="https://andrewchen.co/mobile-app-startups-are-failing-like-its-1999/">Mobile app startups are failing like it&#39;s 1999</a></p><h3>Learn Design Patterns in Swift</h3><p><a href="https://github.com/NilStack/learn-design-patterns-in-swift">NilStack/learn-design-patterns-in-swift</a></p><h3>Subscribe</h3><p>Get Swift World This Weekly in another way.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fupscri.be%2F10bc6c%3Fas_embed%3Dtrue&amp;dntp=1&amp;url=https%3A%2F%2Fupscri.be%2F10bc6c&amp;image=https%3A%2F%2Fe.enpose.co%2F%3Fkey%3DdRXnS9Gplk%26w%3D700%26h%3D425%26url%3Dhttps%253A%252F%252Fupscri.be%252F10bc6c%252F%253Fenpose&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=upscri" width="800" height="400" frameborder="0" scrolling="no"><a href="https://medium.com/media/2577867dd74a81c3c6d3ed97c73e7edf/href">https://medium.com/media/2577867dd74a81c3c6d3ed97c73e7edf/href</a></iframe><p>Thanks for your time. Please <strong>clap</strong> to get this article seen by more people. Please click <strong>Follow </strong>to get latest blogs from me<strong>. </strong>As<strong> </strong><em>a passionate iOS developer, blogger and open source contributor, I’m also active on </em><a href="https://twitter.com/NilStack">Twitter</a> and <a href="https://github.com/NilStack">GitHub</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=3521bfc78bd" width="1" height="1" alt=""><hr><p><a href="https://medium.com/swiftworldweekly/swift-world-this-week-08-20-08-26-3521bfc78bd">Swift World This Week(08.20–08.26)</a> was originally published in <a href="https://medium.com/swiftworldweekly">SwiftWorldWeekly</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Swift World This Week(07.30–08.05)]]></title>
            <link>https://medium.com/swiftworldweekly/swift-world-this-week-07-30-08-05-8570838637f4?source=rss-5f8e077857f4------2</link>
            <guid isPermaLink="false">https://medium.com/p/8570838637f4</guid>
            <category><![CDATA[ios]]></category>
            <category><![CDATA[ios-app-development]]></category>
            <category><![CDATA[app-development]]></category>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[swift]]></category>
            <dc:creator><![CDATA[Peng]]></dc:creator>
            <pubDate>Tue, 07 Aug 2018 03:28:48 GMT</pubDate>
            <atom:updated>2018-08-07T06:15:48.046Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*U3ac5y7Y8j2umX0T" /><figcaption>Photo by <a href="https://unsplash.com/@conner3400?utm_source=medium&amp;utm_medium=referral">Conner Murphy</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h3>Machine learning</h3><p><a href="https://github.com/Avik-Jain/100-Days-Of-ML-Code">GitHub - Avik-Jain/100-Days-Of-ML-Code: 100 Days of ML Coding</a></p><h3>iOS 12</h3><ul><li><a href="https://hackernoon.com/building-siri-shortcuts-using-nsuseractivity-in-ios-12-ff252339e98a">Building Siri Shortcuts Using NSUserActivity in iOS 12</a></li><li><a href="https://hackernoon.com/getting-started-with-siri-shortcuts-in-ios-12-using-intents-8206099aa5ce">Getting Started with Siri Shortcuts in iOS 12 Using Intents</a></li><li><a href="https://medium.com/@azamsharp/building-inline-ui-for-siri-shortcuts-using-custom-intents-54218d9dcd72">Building Inline UI for Siri Shortcuts Using Custom Intents</a></li></ul><h3>Articles</h3><ul><li><a href="https://medium.com/the-traveled-ios-developers-guide/uigraphicsimagerenderer-fe40edc3a464">UIGraphicsImageRenderer</a></li><li><a href="https://swiftrocks.com/writing-cleaner-view-code-by-overriding-loadview.html">Writing Cleaner View Code By Overriding loadView - SwiftRocks</a></li><li><a href="https://www.swiftbysundell.com/posts/structuring-swift-code">Structuring Swift code</a></li></ul><h3>Tools</h3><p><a href="https://medium.com/swift2go/installing-the-clean-swift-template-in-xcode-6b4367006827">Installing the Clean Swift Template in Xcode</a></p><h3>Codes</h3><ul><li><a href="https://medium.mybridge.co/swift-open-source-of-the-month-v-july-2018-fcf794fbc833">Swift Open Source of the Month (v.July 2018)</a></li><li><a href="https://github.com/ra1028/DifferenceKit">GitHub - ra1028/DifferenceKit: 💻 A fast and flexible O(n) difference algorithm framework for Swift collection.</a></li></ul><h3>Marketing</h3><p><a href="https://uxplanet.org/how-to-build-a-brand-for-your-mobile-app-strategies-tips-and-examples-29718ab6a291">How to Build a Brand for Your Mobile App: Strategies, Tips and Examples</a></p><h3>Random</h3><p><a href="https://blog.producthunt.com/best-products-of-the-year-so-far-1895571fbf0d">BEST products of the year so far 🏆</a></p><h3>Learn Design Patterns in Swift</h3><p><a href="https://github.com/NilStack/learn-design-patterns-in-swift">NilStack/learn-design-patterns-in-swift</a></p><h3>Subscribe</h3><p>Get Swift World This Weekly in another way.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fupscri.be%2F10bc6c%3Fas_embed%3Dtrue&amp;dntp=1&amp;url=https%3A%2F%2Fupscri.be%2F10bc6c&amp;image=https%3A%2F%2Fe.enpose.co%2F%3Fkey%3DdRXnS9Gplk%26w%3D700%26h%3D425%26url%3Dhttps%253A%252F%252Fupscri.be%252F10bc6c%252F%253Fenpose&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=upscri" width="800" height="400" frameborder="0" scrolling="no"><a href="https://medium.com/media/2577867dd74a81c3c6d3ed97c73e7edf/href">https://medium.com/media/2577867dd74a81c3c6d3ed97c73e7edf/href</a></iframe><p>Thanks for your time. Please <strong>clap</strong> to get this article seen by more people. Please click <strong>Follow </strong>to get latest blogs from me<strong>. </strong>As<strong> </strong><em>a passionate iOS developer, blogger and open source contributor, I’m also active on </em><a href="https://twitter.com/NilStack">Twitter</a> and <a href="https://github.com/NilStack">GitHub</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8570838637f4" width="1" height="1" alt=""><hr><p><a href="https://medium.com/swiftworldweekly/swift-world-this-week-07-30-08-05-8570838637f4">Swift World This Week(07.30–08.05)</a> was originally published in <a href="https://medium.com/swiftworldweekly">SwiftWorldWeekly</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Swift World This Week(06.18–06.24)]]></title>
            <link>https://medium.com/swiftworldweekly/swift-world-this-week-06-18-06-24-57533716de24?source=rss-5f8e077857f4------2</link>
            <guid isPermaLink="false">https://medium.com/p/57533716de24</guid>
            <category><![CDATA[ios]]></category>
            <category><![CDATA[augmented-reality]]></category>
            <category><![CDATA[app-development]]></category>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[react]]></category>
            <dc:creator><![CDATA[Peng]]></dc:creator>
            <pubDate>Tue, 26 Jun 2018 02:55:33 GMT</pubDate>
            <atom:updated>2018-06-26T05:41:48.674Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*A56NAoNfqy5px2v3" /><figcaption>“A pair of sunglasses left on a concrete ledge over clear water” by <a href="https://unsplash.com/@_thedl?utm_source=medium&amp;utm_medium=referral">David Lezcano</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h3>Machine Learning</h3><ul><li><a href="https://github.com/kingreza/quantization">kingreza/quantization</a></li><li><a href="https://blog.sketchapp.com/not-a-hotdog-how-to-build-an-ai-powered-plugin-for-sketch-463ea43c9464">Not a hotdog - how to build an AI powered plugin for Sketch 🌭</a></li></ul><h3>AR</h3><ul><li><a href="https://medium.com/merged-reality/15-best-augmented-reality-ar-apps-92fa631917f3">Best Augmented Reality (AR) Apps!</a></li><li><a href="https://github.com/mmoaay/Findme">mmoaay/Findme</a></li></ul><h3>Code</h3><ul><li><a href="https://github.com/inket/MBPopup">inket/MBPopup</a></li><li><a href="https://github.com/steve228uk/MessengerKit">steve228uk/MessengerKit</a></li><li><a href="https://github.com/noppefoxwolf/Kitsunebi">noppefoxwolf/Kitsunebi</a></li></ul><h3>Sponsored Link</h3><p>Woodpecker provides some handy and productive tools which Xcode doesn’t. <br>it can helps you view, modify sandbox files, monitor network, view UserDefaults items, view controller hierarchy, and more.</p><p><a href="http://www.woodpeck.cn">http://www.woodpeck.cn</a></p><h3>RN vs Native</h3><ul><li><a href="https://medium.com/airbnb-engineering/react-native-at-airbnb-f95aa460be1c">React Native at Airbnb</a></li><li><a href="https://medium.com/airbnb-engineering/react-native-at-airbnb-the-technology-dafd0b43838">React Native at Airbnb: The Technology</a></li><li><a href="https://medium.com/airbnb-engineering/building-a-cross-platform-mobile-team-3e1837b40a88">Building a Cross-Platform Mobile Team</a></li><li><a href="https://medium.com/airbnb-engineering/whats-next-for-mobile-at-airbnb-5e71618576ab">What’s Next for Mobile at Airbnb</a></li><li><a href="https://medium.com/airbnb-engineering/sunsetting-react-native-1868ba28e30a">Sunsetting React Native</a></li></ul><h3>Design</h3><p><a href="https://medium.muz.li/designing-search-for-mobile-apps-ab2593e9e413">Where should you put the Search?</a></p><h3>Marketing</h3><p><a href="https://uxdesign.cc/boosting-app-visibility-in-the-app-store-a9c8a7404987">Boosting app visibility in the app store</a></p><h3>Random</h3><p><a href="https://medium.com/@Michael_Spencer/why-microsoft-is-acquiring-github-1fc859cb29a">Why Microsoft is Acquiring GitHub</a></p><h3>Learn Design Patterns in Swift</h3><p><a href="https://github.com/NilStack/learn-design-patterns-in-swift">NilStack/learn-design-patterns-in-swift</a></p><h3>Subscribe</h3><p>Get Swift World This Weekly in another way.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fupscri.be%2F10bc6c%3Fas_embed%3Dtrue&amp;dntp=1&amp;url=https%3A%2F%2Fupscri.be%2F10bc6c&amp;image=https%3A%2F%2Fe.enpose.co%2F%3Fkey%3DdRXnS9Gplk%26w%3D700%26h%3D425%26url%3Dhttps%253A%252F%252Fupscri.be%252F10bc6c%252F%253Fenpose&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=upscri" width="800" height="400" frameborder="0" scrolling="no"><a href="https://medium.com/media/2577867dd74a81c3c6d3ed97c73e7edf/href">https://medium.com/media/2577867dd74a81c3c6d3ed97c73e7edf/href</a></iframe><p>Thanks for your time. Please <strong>clap</strong> to get this article seen by more people. Please click <strong>Follow </strong>to get latest blogs from me<strong>. </strong>As<strong> </strong><em>a passionate iOS developer, blogger and open source contributor, I’m also active on </em><a href="https://twitter.com/NilStack">Twitter</a> and <a href="https://github.com/NilStack">GitHub</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=57533716de24" width="1" height="1" alt=""><hr><p><a href="https://medium.com/swiftworldweekly/swift-world-this-week-06-18-06-24-57533716de24">Swift World This Week(06.18–06.24)</a> was originally published in <a href="https://medium.com/swiftworldweekly">SwiftWorldWeekly</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>