# Subscribe to AIXplore <div class="subscribe-container"> ## Never Miss an Article Get a daily digest of new articles delivered to your inbox at 9 AM ET. No spam, unsubscribe anytime. <form id="subscribe-form"> <input type="email" id="email" name="email" placeholder="[email protected]" required aria-label="Email address" /> <input type="text" id="name" name="name" placeholder="Name (optional)" aria-label="Your name" /> <button type="submit" id="submit-btn"> <span class="btn-text">Subscribe</span> <span class="btn-loading" style="display:none;">Subscribing...</span> </button> </form> <div id="message" class="message"></div> <p class="privacy-note"> By subscribing, you agree to receive email updates about new articles. We respect your privacy and you can unsubscribe at any time. </p> </div> --- ## What You'll Get - **Daily Digest**: One email per day (max) with all new articles - **Quality Content**: In-depth tutorials, technical analysis, and practical guides - **No Spam**: Only sent when there's new content to share - **Easy Unsubscribe**: One click to stop emails anytime ## Topics Covered - AI agent development and orchestration - LLM application architecture - Production AI systems - Latest model releases and research - Real-world case studies and lessons learned ## RSS Feed Prefer RSS? Subscribe with your favorite reader: **Feed URL**: `https://ai.rundatarun.io/rss.xml` Popular readers: [Feedly](https://feedly.com/), [Inoreader](https://www.inoreader.com/), [NetNewsWire](https://netnewswire.com/) --- ## Recent Articles - [[building-effective-ai-agents-openai-guide|Building Effective AI Agents: OpenAI's Practical Guide]] - [[model-context-protocol-implementation|Model Context Protocol Implementation]] - [[Knowledge/Blog-Obsidian/Practical Applications/claude-skills-vs-mcp-servers|Claude Skills vs MCP Servers]] --- Questions? Reach out on [Twitter/X](https://twitter.com/bioinfo) <style> .subscribe-container { max-width: 500px; margin: 40px auto; padding: 30px; background: var(--background-secondary); border-radius: 8px; border: 2px solid #219EBC; } #subscribe-form { display: flex; flex-direction: column; gap: 12px; margin: 20px 0; } #subscribe-form input { padding: 12px; border: 1px solid var(--background-modifier-border); border-radius: 4px; font-size: 16px; background: var(--background-primary); color: var(--text-normal); } #subscribe-form input:focus { outline: none; border-color: #219EBC; } #subscribe-form button { padding: 12px; background: #219EBC; color: white; border: none; border-radius: 4px; font-size: 16px; font-weight: 600; cursor: pointer; transition: background 0.3s; } #subscribe-form button:hover { background: #1a7a94; } #subscribe-form button:disabled { background: #ccc; cursor: not-allowed; } .message { margin-top: 15px; padding: 12px; border-radius: 4px; display: none; } .message.success { background: #d4edda; color: #155724; border: 1px solid #c3e6cb; display: block; } .message.error { background: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; display: block; } .privacy-note { font-size: 12px; color: var(--text-muted); margin-top: 15px; } @media (max-width: 600px) { .subscribe-container { margin: 20px; padding: 20px; } } </style> <script> document.getElementById('subscribe-form').addEventListener('submit', async (e) => { e.preventDefault(); const btn = document.getElementById('submit-btn'); const message = document.getElementById('message'); const email = document.getElementById('email').value; const name = document.getElementById('name').value; btn.disabled = true; document.querySelector('.btn-text').style.display = 'none'; document.querySelector('.btn-loading').style.display = 'inline'; message.style.display = 'none'; try { const response = await fetch('https://subscribe.rundatarun.io/api/subscribe', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email, name }) }); const data = await response.json(); if (response.ok) { message.className = 'message success'; message.textContent = 'Success! Check your email to confirm your subscription.'; message.style.display = 'block'; document.getElementById('subscribe-form').reset(); } else { throw new Error(data.error || 'Subscription failed'); } } catch (error) { message.className = 'message error'; message.textContent = error.message + '. Please try again.'; message.style.display = 'block'; } finally { btn.disabled = false; document.querySelector('.btn-text').style.display = 'inline'; document.querySelector('.btn-loading').style.display = 'none'; } }); </script>