<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Andrew Miracle</title>
    <description>The latest articles on DEV Community by Andrew Miracle (@koolamusic).</description>
    <link>https://dev.to/koolamusic</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F39290%2Fb30c85c8-139a-42f1-9655-3d6a8a537329.png</url>
      <title>DEV Community: Andrew Miracle</title>
      <link>https://dev.to/koolamusic</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/koolamusic"/>
    <language>en</language>
    <item>
      <title>leadmark.email: Turn Your Inbox into a Sales Automation Engine via Postmark</title>
      <dc:creator>Andrew Miracle</dc:creator>
      <pubDate>Mon, 09 Jun 2025 05:31:39 +0000</pubDate>
      <link>https://dev.to/koolamusic/leadmarkemail-turn-your-inbox-into-a-sales-automation-engine-via-postmark-455a</link>
      <guid>https://dev.to/koolamusic/leadmarkemail-turn-your-inbox-into-a-sales-automation-engine-via-postmark-455a</guid>
      <description>&lt;p&gt;This is a submission for the &lt;a href="https://dev.to/challenges/postmark"&gt;Postmark Challenge: Inbox Innovators&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Leadmark – AI-Powered Inbox Automation&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Hackathon Submission for Postmark’s Dev Inbox Challenge&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔗 Live demo:&lt;/strong&gt; &lt;a href="https://www.leadmark.email" rel="noopener noreferrer"&gt;https://www.leadmark.email&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;📂 Source code:&lt;/strong&gt; &lt;a href="https://github.com/tecmie/leadmark" rel="noopener noreferrer"&gt;https://github.com/tecmie/leadmark&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  🛠️ The Problem
&lt;/h3&gt;

&lt;p&gt;Medium to Large scale Sales teams across several industries from enterprise to real-estate receive an average &lt;strong&gt;300–1,000 new leads per day&lt;/strong&gt;, yet spend &lt;strong&gt;1–4 hours per rep&lt;/strong&gt; just qualifying them. At $20–30 USD hour × 20 reps, that’s roughly &lt;strong&gt;40 hours—or $1,000 USD—burned daily&lt;/strong&gt; on unqualified prospects.&lt;/p&gt;


&lt;h3&gt;
  
  
  💡 The Solution
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;leadmark.email&lt;/strong&gt; transforms every inbound email lead into an intelligent, AI-driven workflow—powered by Postmark’s Inbound Email Parsing. The core innovation? Treating each unique email address as an API endpoint that triggers business automation in real time.&lt;/p&gt;
&lt;h3&gt;
  
  
  Setting up your mailbox and Assistant
&lt;/h3&gt;

&lt;p&gt;In this quick walkthrough, I show you exactly how to configure Leadmark's  AI “assistant objective”—so you can start automatically qualifying and responding to leads in seconds.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/SguMII_r_Jo"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Automating Qualification and Mail + Scheduling and Contacts
&lt;/h3&gt;

&lt;p&gt;In this extended demo, we pick up right where the mailbox &amp;amp; AI assistant setup left off—and dive into every corner of the Leadmark app. From your email dashboard and workspace to built-in calendar scheduling and user profile management, see how leadmark.email turns your inbox into a seamless, end-to-end sales automation platform.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/0ImSy5qFD7I"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  How leadmark.email Uses Postmark’s Inbound Email Parsing
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Webhook Processing&lt;/strong&gt;: Real-time parsing via a worker with a webhooks &lt;code&gt;/api/postman&lt;/code&gt; endpoint.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full Message Extraction&lt;/strong&gt;: Captures headers, body content, attachments, and metadata to enable MX routing for multiple custom email inboxes (i.e &lt;a href="mailto:custom@leadmark.email"&gt;custom@leadmark.email&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bidirectional Communication&lt;/strong&gt;: Inbound parsing + outbound response sending through Postmark’s API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Production Architecture&lt;/strong&gt;: Async job processing (BullMQ/Redis), robust error handling, and horizontal scaling.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example of a simple lead-gen form for a Gym Franchise &amp;amp; Real Estate Investment Firm &lt;a href="https://www.leadmark.email/form/candidate-contact-form" rel="noopener noreferrer"&gt;https://www.leadmark.email/form/candidate-contact-form&lt;/a&gt;. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This form is linked to an actual email from a demo real estate agency and filling the form will automate a lead qualification cycle up to the point where a meeting is booked between you and an &lt;strong&gt;Account Manager&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Key Features + Postmark
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Smart Email Replies&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Parse emails via Postmark webhooks&lt;/li&gt;
&lt;li&gt;AI analyzes content for qualification and responds in real-time via Postmark’s outbound API&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Auto Meeting Booking&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Detects scheduling intent&lt;/li&gt;
&lt;li&gt;Checks Google Calendar and books meetings, sending email confirmations&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Lead Scoring Pipeline&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Processes emailed form submissions&lt;/li&gt;
&lt;li&gt;Scores and categorizes leads, triggering follow-ups to managers&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Document-Savvy Chats&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Parses PDF/DOCX attachments&lt;/li&gt;
&lt;li&gt;Extracts data for AI responses, maintaining thread context&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🛠️ Technical Implementation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Postmark Webhook Handler
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// apps/processor/src/api/postman.ts&lt;/span&gt;
&lt;span class="nx"&gt;router&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="p"&gt;{},&lt;/span&gt; &lt;span class="nx"&gt;PostmanResponse&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;input&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;InboundMessageDetails&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="c1"&gt;// Validate mailbox ownership&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;mailboxWithOwner&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;_validateMailbox&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;To&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="c1"&gt;// Async processing&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;postmanEventProducerMQ&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;postman&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Webhook received&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. GPT + Tools + Conversational AI
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Generate AI response&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;aiResponse&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;aiResponseToHtml&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;getAIResponse&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="nx"&gt;thread&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;messageText&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;mailbox&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;contact&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="c1"&gt;// Send via Postmark outbound API&lt;/span&gt;
&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;postmark&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sendEmail&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;From&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;owner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;full_name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; &amp;lt;&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;mailbox&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;unique_address&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;To&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;FromFull&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;Subject&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;replySubject&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;HtmlBody&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;aiResponseToHtml&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;TextBody&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;aiResponse&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Architecture Flow
&lt;/h3&gt;

&lt;p&gt;Email is sent to Postmark Inbound, which parses it into JSON and sends it via webhook to /api/postman. The API enqueues the job in BullMQ/Redis. The job is processed by Parsing &amp;amp; Scoring, which extracts data and sends it to the AI/Rules Engine for lead qualification. The engine returns a decision, stored in Supabase/Postgres. Parsing &amp;amp; Scoring triggers an auto-reply or forward via Postmark Outbound to the recipient. Real-time updates from the database reflect lead status on the Dashboard.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5yrgk20qc99k99amhxl3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5yrgk20qc99k99amhxl3.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  📈 Impact &amp;amp; Metrics
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;About $750 USD per day&lt;/strong&gt; saved for an average 20-rep team&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&amp;lt;30 s&lt;/strong&gt; from email arrival to qualification &amp;amp; routing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;98%+&lt;/strong&gt; parsing accuracy in pilot tests&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;90%+&lt;/strong&gt; rule-based filtering accuracy out of the box&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🔮 What’s Next
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI-Driven Scoring:&lt;/strong&gt; Swap keyword rules for fine-tuned GPT models&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visual Dashboard:&lt;/strong&gt; Live metrics, rule-builder UI, executive insights&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Omni-Channel:&lt;/strong&gt; Integrate WhatsApp look into contacts for 360 engagement&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Team Management:&lt;/strong&gt; Role-based access, multi-domain support&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🙏 Get Started in Minutes
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Clone &amp;amp; install:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   git clone https://github.com/tecmie/leadmark.git
   &lt;span class="nb"&gt;cd &lt;/span&gt;leadmark &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Set environment variables:&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;POSTMARK_API_KEY&lt;/code&gt;, &lt;code&gt;SUPABASE_URL&lt;/code&gt;, &lt;code&gt;SUPABASE_KEY&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GOOGLE_CALENDAR_CREDENTIALS&lt;/code&gt;, &lt;code&gt;OPENAI_API_KEY&lt;/code&gt; (for AI)

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Run:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Configure Postmark:&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Point your inbound webhook to &lt;code&gt;https://&amp;lt;your-domain&amp;gt;/api/postman&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;LeadMark turns every email into a revenue-driving, AI-powered workflow—powered by Postmark’s Dev Inbox!&lt;/p&gt;

&lt;h2&gt;
  
  
  Code Repository
&lt;/h2&gt;

&lt;p&gt;🔗 &lt;a href="https://github.com/tecmie/leadmark" rel="noopener noreferrer"&gt;https://github.com/tecmie/leadmark&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Team Members
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;This submission was built by &lt;a class="mentioned-user" href="https://dev.to/koolamusic"&gt;@koolamusic&lt;/a&gt; and the Tecmie team.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkn52w3vx09lairgcicyy.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkn52w3vx09lairgcicyy.jpeg" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>postmarkchallenge</category>
      <category>webdev</category>
      <category>api</category>
    </item>
    <item>
      <title>Soroban by Example</title>
      <dc:creator>Andrew Miracle</dc:creator>
      <pubDate>Mon, 19 Aug 2024 06:59:56 +0000</pubDate>
      <link>https://dev.to/koolamusic/soroban-by-example-5bg4</link>
      <guid>https://dev.to/koolamusic/soroban-by-example-5bg4</guid>
      <description>&lt;h1&gt;
  
  
  The challenge
&lt;/h1&gt;

&lt;p&gt;When exploring a new smart contract language, after learning the syntax and data types, one of the best ways is through examples, boilerplates and exploring various strategies to implement something that you would have done in a previous language. Within the Web3 space there are a couple strategies that proven effective. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Openzeppelin library format&lt;/li&gt;
&lt;li&gt;The Scaffold ("insert ETH,Stark,Soroban") format&lt;/li&gt;
&lt;li&gt;"Smart contract Language" by example&lt;/li&gt;
&lt;li&gt;Factory contracts + Wizards and Generators&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We can easily group these into "Bootstrappers" - "Boilerplate" - "Libraries" in a Magic Quadrant, these various strategies enable you quickly go from &lt;code&gt;0 - 1&lt;/code&gt; in a new smart contract language.&lt;/p&gt;

&lt;p&gt;It goes without saying, that project based learning is the most effective approach to becoming proficient in Soroban as it is with any other smart contract language or programming language in general. However, the daunting challenge that Soroban presents, especially for developers coming from more widely-used smart contract languages like Solidity, is its intimidating appearance at first glance. For those who are not familiar with Rust, Soroban's syntax and concepts can seem foreign and overwhelming, creating a significant barrier to entry. This unfamiliarity and perceived complexity cause blockchain developers to stick with the languages they are more comfortable with, despite the potential benefits Soroban may offer.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Resolution
&lt;/h1&gt;

&lt;p&gt;We built &lt;a href="https://sorobanexamples.xyz" rel="noopener noreferrer"&gt;Soroban by Example&lt;/a&gt; is a comprehensive resource designed to help developers, especially those transitioning from other smart contract languages like Solidity, to learn and adopt Soroban through a project-based approach.&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://player.vimeo.com/video/1000201613" width="710" height="399"&gt;
&lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  Our key Objectives for Soroban Examples
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Familiarity: Help developers find implementations of well-known concepts from other smart contract languages&lt;/li&gt;
&lt;li&gt;Developer Experience: Provide an interactive and user-friendly documentation explorer for a great DX&lt;/li&gt;
&lt;li&gt;Simplicity: Keep the example snippets clean, simple, and focused on core concepts&lt;/li&gt;
&lt;li&gt;Integrated Playground: Allow developers to explore, modify, and try out the example contracts&lt;/li&gt;
&lt;li&gt;AI-Assisted Variants: Generate customized variants of the example contracts using an AI assistant&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;💡 However while keeping an ambitious goal in view, there were a couple challenges with trying to fit the world into Soroban. Essentially looking at the more popular blockchain ecosystems and their paradigms to fit into how smart contracts on Stellar can be written&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;EVMs have this concept of the &lt;code&gt;ZERO_ADDRESS&lt;/code&gt; for burning tokens and NFTs and performing a lot of modifer functions, however, that is irrelevant to the context of Soroban where &lt;code&gt;ZERO_ADDRESS&lt;/code&gt; is useless and instead of modifiers, modules are preferred&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Solidity, the most popular smart contract language uses inheritance as a form of extensibility, but this does not apply to Soroban, as everything you will need from the host is available by passing &lt;code&gt;&amp;amp;env&lt;/code&gt; into functions to get access to the host environment. This means that in Soroban we favor functional composition over inheritance.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For some of us on the team, this was our first foray into the Soroban ecosystem, even &lt;a href="https://dev.to/koha"&gt;Koha&lt;/a&gt; who has worked in DevRel roles for protocols and teams building within the EVM ecosystem, agrees that Soroban is more exciting 🤣. Having to fit into the standards/systems from more popular smart contract languages is boring.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm7ki4kyjmwzlss7lzmba.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm7ki4kyjmwzlss7lzmba.png" alt="Koha like Soroban" width="800" height="212"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  How we got here (Our Failed Attempts)
&lt;/h2&gt;

&lt;p&gt;Before getting to this point we made several attempts at achieving our objectives. Our first attempt — &lt;strong&gt;AI Code Generator&lt;/strong&gt; was building out a &lt;a href="https://chatgpt.com/g/g-oW0Pjt0tu-soroban-v1" rel="noopener noreferrer"&gt;Custom GPT to learn Soroban&lt;/a&gt; and get example contracts&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://player.vimeo.com/video/1000261124" width="710" height="399"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;💡 In order to achieve this initial milestone, we had to train a custom GPT with documents from the stellar developer docs. To achieve that, we wrote a simple scraper script fetch the developer docs and chunk them into text files, see our &lt;a href="https://github.com/kohasummons/crawler" rel="noopener noreferrer"&gt;github repo&lt;/a&gt; for the scraper implementation. &lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/kohasummons" rel="noopener noreferrer"&gt;
        kohasummons
      &lt;/a&gt; / &lt;a href="https://github.com/kohasummons/crawler" rel="noopener noreferrer"&gt;
        crawler
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A Webscraper and File Splitter
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Crawler&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;A lightweight web crawler that can also split files.&lt;/p&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/kohasummons/crawler" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;However after a couple test runs, we realized that this GPT is not really great at understanding the JTBD (Job to be Done) and still hallucinates in &lt;code&gt;rust&lt;/code&gt; when asked to perform more advanced instructions like generate specific type contracts and tests.&lt;/p&gt;




&lt;h2&gt;
  
  
  Alternative paths
&lt;/h2&gt;

&lt;p&gt;For the AI Code Generator, we found some options like &lt;a href="https://kapa.ai" rel="noopener noreferrer"&gt;kapa.ai&lt;/a&gt; However upon further explorer, we realised that there would be limitations with that implementation as it would only cater to document search and suggestions. &lt;/p&gt;

&lt;p&gt;This also meant we could not avoid manually curating the examples ourselves and reviewing each publication one by one.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Resolution
&lt;/h2&gt;

&lt;p&gt;After so many trials and errors, we decided that the best way to go about this was to manually curate each example contract ourselves and train / finetune an examples generator model called “Soroboy” — Soroboy will be different from a GPT, because this time it will live inside the context of an example smart contract page. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp0f1gmwdvkf9mj776dm4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp0f1gmwdvkf9mj776dm4.png" alt="Soroban by Example Notion Workspace" width="800" height="599"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We first started by curating all contract examples in a &lt;a href="https://daccred.notion.site/d9af5127299c40cdbb62184e56529f9a?v=180ac0a30c7340ff92b3c838fc5876f3" rel="noopener noreferrer"&gt;Notion workspace&lt;/a&gt; and tracking their Okashi playground links as well. This meant starting out with core concepts and generating baseline contracts that are a great starting point.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;When a user visits our example website, they can have a conversation with Soroboy to generate a variant of the contract example on that page.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In the example below, Soroboy is able to generate a variant of an &lt;code&gt;only_owner&lt;/code&gt; contract with multiple owners instead of one owner&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flhcjm0gnxg4zes54ftv2.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flhcjm0gnxg4zes54ftv2.gif" alt="Soroboy generate only owner contract soroban by example" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To achieve this, we have to manually curate soroban contracts ourselves, review them exploration on this front focuses on training an AI model on examples, so that it can leverage that for contextual exploration, our idea around this is something that generates variations of an existing contract. The workflow is something like this. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkoqzry13yvsw5aifmuco.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkoqzry13yvsw5aifmuco.png" alt="AI Generator Workflow" width="800" height="811"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Take an existing Soroban Example&lt;/li&gt;
&lt;li&gt;Input prompt to modify the contract according to a certain use-case&lt;/li&gt;
&lt;li&gt;Generate new example code based on context and new “use-case” instruction&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;💡 To implement this, we used a Vector storage library &lt;a href="https://lancedb.com/" rel="noopener noreferrer"&gt;LanceDB&lt;/a&gt; which is an in-memory DB built with &lt;a href="https://github.com/lancedb/lance" rel="noopener noreferrer"&gt;Rust&lt;/a&gt; and uses the [Apache-Arrow Data Format] for compact storage.&lt;/p&gt;

&lt;p&gt;Lance was perfect for this exploration, because all of your vector embeddings are simply files that can be tracked on github. See our &lt;a href="https://github.com/kohasummons/soroban-by-example/tree/main/public/rag/data" rel="noopener noreferrer"&gt;rag embeddings&lt;/a&gt; to get a sense of what this looks like.&lt;/p&gt;

&lt;p&gt;For Generation capabilitie, API Calls are routed to OpenAI GPT-4o at the moment. To be able to inject the AI module into the documentation page, we have to implement a custom react library and API server to manage the interactions for this.&lt;/p&gt;




&lt;h2&gt;
  
  
  Deviation from original plan
&lt;/h2&gt;

&lt;p&gt;A couple things we finally executed that weren’t part of our original plan was to embed an Okashi playground into docs website. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqjgs4mymw4x6sskawjg7.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqjgs4mymw4x6sskawjg7.jpg" alt="Soroban Example run in Okashi" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fde7s0yduznsuqavuphiv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fde7s0yduznsuqavuphiv.png" alt=" " width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you take a look at our &lt;a href="https://daccred.notion.site/d9af5127299c40cdbb62184e56529f9a?v=180ac0a30c7340ff92b3c838fc5876f3&amp;amp;pvs=74" rel="noopener noreferrer"&gt;Root Notion Database&lt;/a&gt; You will notice that all of our docs page, when being prepared had their own &lt;a href="https://okashi.dev/" rel="noopener noreferrer"&gt;Okashi&lt;/a&gt; playground. We had chosen Okashi because it was dead simple to use, and we didn’t have to maintain a large repo of example contracts with their own &lt;code&gt;Cargo.toml&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This was great for testing and exploration and during the development of this project, Our team wondered what the experience for our users would be like, if they could simply compile and run these contracts in a &lt;code&gt;codesandbox&lt;/code&gt; fashion. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Okashi was the first choice for us, however there are some limitations with Okashi we wish the maintainers would be open to support to greatly improve DX&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Duplication: Can we get the ability to duplicate a contract on Okashi into our own workspace or just anywhere?&lt;/li&gt;
&lt;li&gt;Embeddable Widgets: Can we inject an iframe version of Okashi as a widget on any website.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you take a look at the simple &lt;a href="https://sorobanexamples.xyz/loops" rel="noopener noreferrer"&gt;Soroban Loop Example&lt;/a&gt; on our website. You will notice that there is an Okashi Widget embedded within the page. As a matter of fact all the pages have an Okashi widget inside of them. We were able to do this by writing a &lt;a href="https://github.com/koolamusic/okashi-proxy/" rel="noopener noreferrer"&gt;&lt;code&gt;custom_proxy_server&lt;/code&gt;&lt;/a&gt; that acts as a middleware between our website and Okashi. &lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/daccred" rel="noopener noreferrer"&gt;
        daccred
      &lt;/a&gt; / &lt;a href="https://github.com/daccred/okashi-widget-proxy" rel="noopener noreferrer"&gt;
        okashi-widget-proxy
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A simple proxy that enables us implement widgets in okashi
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;This server simply transpiles an Okashi request so we can get the full DOM object of Okashi and modify the views to suit our Widget capabilities. &lt;/p&gt;

&lt;p&gt;We consider this to be a hack — a rather brute way of achieving our purpose, that enables us provide the intended experience for this project. We’ve already reached out to Morgan and the Okashi team on Discord, hopefully we can get their attention and have this as a feature in Okashi&lt;/p&gt;




&lt;p&gt;In hindsight, I think we under-estimated how much work we would have to do in order to achieve the core objectives of this project, some of the artefacts we produced were&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Stellar website scraper utility - &lt;a href="https://github.com/kohasummons/crawler" rel="noopener noreferrer"&gt;https://github.com/kohasummons/crawler&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Okashi Proxy Server - &lt;a href="https://github.com/koolamusic/okashi-proxy/" rel="noopener noreferrer"&gt;https://github.com/koolamusic/okashi-proxy/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;OpenAI API Server (Not opensource “API keys and envs in repo 😂”&lt;/li&gt;
&lt;li&gt;Soroban by Example Documentation Website - &lt;a href="https://sorobanexamples.xyz" rel="noopener noreferrer"&gt;https://sorobanexamples.xyz&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Soroban Custom GPT on ChatGPT - &lt;a href="https://chatgpt.com/g/g-oW0Pjt0tu-soroban-v1" rel="noopener noreferrer"&gt;https://chatgpt.com/g/g-oW0Pjt0tu-soroban-v1&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Project Repository — See Notion Database&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/kohasummons/soroban-by-example/tree/main/public/rag/data" rel="noopener noreferrer"&gt;Vector Embeddings&lt;/a&gt; of All contract examples&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Beyond the hackathon
&lt;/h2&gt;

&lt;p&gt;Soroban is an amazing smart contract language, and we intend to continue maintaining this project, as well as exploring Soroban and creating new projects with it. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monorepo: Over the coming weeks we will work towards consolidating all code artefacts into one monorepo to improve code organization and contribution to each module that enhances the experience and delivery of Soroban by Example.&lt;/li&gt;
&lt;li&gt;Multilingual Support: Once consolidation is complete, we will work on integrating 3 more languages “spanish, french and mandarin” hopefully with support from the community&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our goal with this project apart from increasing discoverability for the Soroban ecosystem and showing so-many simple use-cases and boilerplates that developers and individuals exploring the Soroban ecosystem can interact with. Will also be to offer&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DevRel consultation services, for building out developer documentation for DevTools within the ecosystem to improve DX for teams building products targeting developers. Members of our team already work in DevRel roles across projects building within the EVM &amp;amp; Move blockchains [Insert Project Names and Protocols]&lt;/li&gt;
&lt;li&gt;Soroban consultation: provide consultation services for organisations and founders who are targeting the stellar ecosystem as a blockchain of choice to build innovative solution within stellar&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Some future updates
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Improve the UX for rendering examples on page, so we can have tabs for playground and static text, so that showing the Playground becomes an Opt-In feature like the AI Assistant&lt;/li&gt;
&lt;li&gt;Memory Module for AI to persist new generated code for learning purposes, finetuning and publishing new example use-cases&lt;/li&gt;
&lt;li&gt;Metered usage of AI generations. for the purposes of sustainability we might limit our AI Generations to 100 per day, essentially target a number that keeps our OpenAI spend down to $5 per day max and reset it every 24 hours.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  The team
&lt;/h2&gt;

&lt;p&gt;This hackathon submission was made by: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Joshua Omobola (&lt;a class="mentioned-user" href="https://dev.to/koha"&gt;@koha&lt;/a&gt;): &lt;a href="https://github.com/kohasummons" rel="noopener noreferrer"&gt;https://github.com/kohasummons&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Mercy Thaddeus (&lt;a class="mentioned-user" href="https://dev.to/mercythaddeus"&gt;@mercythaddeus&lt;/a&gt;): &lt;a href="https://github.com/ThaddeusMercy" rel="noopener noreferrer"&gt;https://github.com/ThaddeusMercy&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Andrew Miracle: &lt;a href="https://github.com/koolamusic" rel="noopener noreferrer"&gt;https://github.com/koolamusic&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;MJ(&lt;a class="mentioned-user" href="https://dev.to/0xilance"&gt;@0xilance&lt;/a&gt;): &lt;a href="https://github.com/0xilance" rel="noopener noreferrer"&gt;https://github.com/0xilance&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Inspirations and Footnote
&lt;/h2&gt;

&lt;p&gt;We took a lot of inspiration from projects within the ecosystem pushing the boundaries of what is possible with Soroban.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Stellar Soroban Examples: &lt;/li&gt;
&lt;li&gt;Coinfabrik Stellar Examples&lt;/li&gt;
&lt;li&gt;Math Soroban&lt;/li&gt;
&lt;li&gt;iMath Soroban&lt;/li&gt;
&lt;li&gt;AMM DEX Soroban&lt;/li&gt;
&lt;li&gt;Solidity by Example&lt;/li&gt;
&lt;li&gt;Cairo by Example&lt;/li&gt;
&lt;li&gt;Stellar Assets Token Playground&lt;/li&gt;
&lt;li&gt;Okashi&lt;/li&gt;
&lt;li&gt;Soroban Rust SDK Documentation &lt;a href="https://docs.rs/soroban-sdk/21.5.0/soroban_sdk/index.html" rel="noopener noreferrer"&gt;https://docs.rs/soroban-sdk/21.5.0/soroban_sdk/index.html&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>stellarchallenge</category>
      <category>soroban</category>
      <category>stellar</category>
      <category>web3</category>
    </item>
    <item>
      <title>Deadline versus Lifeline</title>
      <dc:creator>Andrew Miracle</dc:creator>
      <pubDate>Wed, 23 Jan 2019 23:00:00 +0000</pubDate>
      <link>https://dev.to/koolamusic/deadline-versus-lifeline-54fk</link>
      <guid>https://dev.to/koolamusic/deadline-versus-lifeline-54fk</guid>
      <description>&lt;p&gt;We are stuck goals and milestones in a modern age, where everything is moving fast and millenials are expected to meet very high expectations, this is not our point though&lt;/p&gt;

&lt;p&gt;Have you ever given a developer a job to do for you with an ETA. this applies to most creatives, artist, music producers, carpenters etc.&lt;/p&gt;

&lt;p&gt;Are you a &lt;strong&gt;deadline&lt;/strong&gt; or &lt;strong&gt;lifeline&lt;/strong&gt; person : This comparison will help you find out&lt;/p&gt;

&lt;h3&gt;
  
  
  Deadline
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;sticks to the timeline and delivers before time&lt;/li&gt;
&lt;li&gt;Sticks to a particular process/strategy and gracefully follows it through&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Lifeline
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Good at emergency deliveries, tight delivery expectations&lt;/li&gt;
&lt;li&gt;Hacks processes to produces optimal results, most cases short term.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes me reflect between Mourinho and Pep Guardiola, two wonderful personalites, winners they are, however I would categorize one as a Lifeline person and another one as a deadline person&lt;/p&gt;

&lt;p&gt;In the startup world, you require a mix of both, roll out a feature immediately, so that the VC and users would be happy, experiencing the potential of that feature, then gradually iterating through the process to optimize and fine tune delivery and results.&lt;/p&gt;

&lt;p&gt;Who are you ? Deadline : Lifeline&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What can a course in programming to do you ?</title>
      <dc:creator>Andrew Miracle</dc:creator>
      <pubDate>Tue, 22 Jan 2019 23:00:00 +0000</pubDate>
      <link>https://dev.to/koolamusic/what-can-a-course-in-programming-to-do-you--1dod</link>
      <guid>https://dev.to/koolamusic/what-can-a-course-in-programming-to-do-you--1dod</guid>
      <description>&lt;p&gt;So you may be wondering what benefits you get from learning how to code, apart from the obvious benefits, learning how to code can help you&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Improve your perception and thought process&lt;/li&gt;
&lt;li&gt;Add value to your current role or position&lt;/li&gt;
&lt;li&gt;Teach you discipline as (programming requires discipline)&lt;/li&gt;
&lt;li&gt;Help you get a job (There are a lot of testimonies out there about totally beginners getting a job after completing a coding program)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is very easy to get started with online resources that make it easy and have a very welcoming community where you can learn from&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org/" rel="noopener noreferrer"&gt;FreeCodeCamp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.codecademy.com/" rel="noopener noreferrer"&gt;Codecademy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.udacity.com/" rel="noopener noreferrer"&gt;Udacity&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/" rel="noopener noreferrer"&gt;Cousera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://favcode54.org/" rel="noopener noreferrer"&gt;Favcode54&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.edx.org/" rel="noopener noreferrer"&gt;EDX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.udemy.com/" rel="noopener noreferrer"&gt;Udemy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are not convinced yet, these are life changing testimonies from people who after taking a course in programming improved and transformed their lives.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.glamour.com/story/i-am-a-woman-who-learned-to-code-and-it-changed-my-life" rel="noopener noreferrer"&gt;I’m a Woman Who Learned to Code and, Honestly, It Changed My Life&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.freecodecamp.org/inspirational-success-stories-from-self-taught-web-developers-4f6f375cf17d" rel="noopener noreferrer"&gt;Lessons from 7 self-taught coders who now work full time as software developers&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://favcodereviews.com/" rel="noopener noreferrer"&gt;Student Testimonies from Favcode54&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.codecademy.com/stories" rel="noopener noreferrer"&gt;Student Testimonies from Codecademy&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/@Jasraj/so-i-got-a-front-end-dev-job-after-almost-12-months-on-freecodecamp-9e8b4712e0e4" rel="noopener noreferrer"&gt;I just got a Front End Dev job. And I have freeCodeCamp to thank for it…&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.freecodecamp.org/stories" rel="noopener noreferrer"&gt;FCC Testimonies&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>After Software Development what's next?</title>
      <dc:creator>Andrew Miracle</dc:creator>
      <pubDate>Mon, 21 Jan 2019 23:00:00 +0000</pubDate>
      <link>https://dev.to/koolamusic/after-software-development-what-s-next-6j</link>
      <guid>https://dev.to/koolamusic/after-software-development-what-s-next-6j</guid>
      <description>&lt;p&gt;I recently came across an acquaintaince who had about 20 years of experience in the software development field, and was wondering what next he should do at this point in his career and life, though I didnt have the opportunity to share my answers to him, at the top of my head, these were my thoughts&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Management&lt;/li&gt;
&lt;li&gt;Mentorship&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Management
&lt;/h3&gt;

&lt;p&gt;With over 20 years in your belt, you should have the opportunity to notice how trends have been shaped, improved and change, move to the top of the Product Development Cycle which is either &lt;strong&gt;(idea =&amp;gt; design)&lt;/strong&gt; or &lt;em&gt;(design =&amp;gt; implementation)&lt;/em&gt; or &lt;strong&gt;(design =&amp;gt; user adoption)&lt;/strong&gt; you should be able to match any of these with your personal capacity and strengths.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mentorship
&lt;/h3&gt;

&lt;p&gt;Give back to the community, what is it that you have learnt over this years that you can share with the younger generation of budding software developers and enthusiasts, trust me, its a very lonely journey for those starting and having someone with long term experience to talk to can be de-stressing and comforting, the side benefit is that, it helps you keep up with the latest trends in technology and also keep you abreast with industry trends too.&lt;/p&gt;

&lt;p&gt;However, after spending over 20 years in any field, I tend think that there are a broad spectrum of choices after that long period of time, anyone should have figured their edge and strengths by now to know where they can focus the remaining part of their time and energy on.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Lessons learned from developing for a startup</title>
      <dc:creator>Andrew Miracle</dc:creator>
      <pubDate>Mon, 31 Dec 2018 23:00:00 +0000</pubDate>
      <link>https://dev.to/koolamusic/lessons-learned-from-developing-for-a-startup-4503</link>
      <guid>https://dev.to/koolamusic/lessons-learned-from-developing-for-a-startup-4503</guid>
      <description>&lt;p&gt;Although we’d like to develop products and services iteratively, the truth is organisations think in terms of strict deadlines – and budgets. We product owners need to think about how we manage this.&lt;/p&gt;

&lt;p&gt;Browsers update regularly, making frequent, (mostly) small changes. This causes little disruption for users. It’s rare you’ll download a big update and find everything is completely different. This is is how we’d like to develop software over several years, especially with embedded systems.&lt;/p&gt;

&lt;p&gt;But let’s say you have a finite budget and, consequently, a set-in-stone launch date – like the ship in the above picture. The expectation is that the product will be ready, and won’t sink if it bumps into any icebergs.&lt;/p&gt;

&lt;p&gt;If your best feedback will come from real usage, you might plan a beta phase, as we did when developing library self-service software. This is useful,but there’s a big difference between a controlled roll out to 4 small libraries, and installing kiosks in over 20 libraries within various institutions in a region, where staff are less invested in the new product and require understanding to be able to utilize the benefits of the product.&lt;/p&gt;

&lt;p&gt;We unearthed user problems during the launch I would have liked to have fixed more quickly, but we ran up against the big launch date curse of &lt;em&gt;no more project money&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The lesson learned is therefore quite simple:&lt;/p&gt;

&lt;p&gt;If you have an official launch date, make sure there is some project budget remaining for further changes after this date.&lt;/p&gt;

&lt;p&gt;Note: It’s important this money is kept aside for the project. There’s little value in coming in under budget (besides some temporary good PR that’ll come back to bite you later in your career) if your product isn’t perfect – and it’ll never be perfect.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
