AB Snapchat hakkında soruşturma başlattı

Avrupa Birliği Komisyonu, Snapchat’in çocukların çevrim içi güvenliği ve gizliliği ile ilgili kurallara uyup uymadığını araştırmak için resmi bir soruşturma başlattı. Platformun zararlı içeriklere maruz bırakma ihtimali nedeniyle çeşitli sebeplerle inceleme yapılacak.

Stop Paying for Cloud: Deploy a Highly Available Cluster on Your Own Hardware in Minutes

A 4-node highly available cluster with distributed storage, software-defined networking, and automatic failover. About 30 minutes to deploy. No Terraform. No Ansible playbooks. No 47-page architecture doc.

That’s Canonical’s MicroCloud: lightweight, repeatable cluster deployments built for edge computing and distributed workloads. Here’s the full walkthrough.

TL;DR: Install 4 snaps, run microcloud init on one node, microcloud join on the others, answer the storage/networking wizard, and you have a production-ready HA cluster. Full walkthrough below.

1. What Hardware Do You Actually Need?

Before touching the command line, you need the right hardware for your target environment. MicroCloud is flexible enough to support both lightweight test setups and production clusters.

Test/Development Environments

MicroCloud is lightweight enough that a test setup can start with a single-member deployment. You need as little as 8 GB of RAM per machine, and local storage is often sufficient.

Highly Available Production Environments

For production, redundancy is key. A highly available setup requires at least four physical nodes. Each machine should ideally feature 32 GB of RAM and 10 GB network cards to handle throughput.

Storage Allocation

Within each production node, you should allocate three separate NVMe disks: one for the operating system, one for local storage, and one for distributed storage (via Ceph).

Why four nodes? Separating disk types and maintaining a four-node count provides critical redundancy. If one node goes offline, the extra member ensures the cluster maintains a quorum, preventing a “split-brain” scenario where remaining nodes lose synchronization. Your applications stay reachable and highly available.

2. Install Everything in One Command

The foundation of your MicroCloud cluster is a clean, standardized operating system. Every server you intend to use must be provisioned with an Ubuntu Long-Term Support (LTS) release.

Once your servers are online, install the core services across every node. Canonical packages these components as containerized “snaps”:

sudo snap install microcloud lxd microceph microovn

Installing these services as snaps keeps your host operating system clean. All dependencies are bundled directly within the snap container, so you completely avoid package version conflicts.

3. The Cluster Handshake (Zero Manual SSL)

With the software installed, it’s time to establish the cluster using an automated handshake process.

Step 1: Initialize the Primary Node

Choose one machine to act as your initiator. SSH into this node and run:

sudo microcloud init

When the wizard asks if you want to set up more than one cluster member, select “yes”.

Step 2: Select Internal IPs

A table of available network interfaces will appear. Choose the specific IP address you want to use for MicroCloud’s internal cluster communication.

Step 3: Generate the Passphrase

The initiator terminal will generate a secure passphrase and enter a waiting state. Leave this session running.

Step 4: Join the Secondary Nodes

Open new SSH sessions into your remaining nodes and run:

sudo microcloud join

Select the corresponding internal IP address on each node, enter the passphrase generated by the primary node, and verify that the unique fingerprint matches.

This automates trust distribution between your nodes. No manual SSL certificate management. No private key distribution. Return to your initiator terminal, select all the secondary systems that reached out, and accept them into the cluster.

4. Storage: Local Speed + Distributed Safety

MicroCloud lets you pair the high-speed performance of local hardware with the resilience of a distributed cluster. The setup wizard guides you through configuring both.

Local Storage

When prompted to set up local storage pools, select exactly one designated disk from each machine.

Warning: Any disk you select for storage pools must be completely unpartitioned and free of any existing file systems. If you select a pre-formatted disk, the initialization will fail, and you’ll need to manually wipe the drives and restart the process.

Distributed Storage

Next, the wizard moves to distributed storage, handled by MicroCeph. You must select at least three unpartitioned disks across the cluster, as Ceph requires a minimum of three to properly replicate data for high availability. You will also be given options to wipe existing data, set up a CephFS distributed file system, or enable disk-level encryption.

This dual-storage strategy lets you run intensive edge workloads on fast local caching while ensuring your primary databases remain safely replicated across the distributed cluster.

5. Networking Without the Networking Pain

With compute and storage locked in, the wizard moves to network configuration, handled by MicroOVN. This software-defined network allows your virtual machines to communicate across the cluster.

External Uplink

The menu will display your physical network interfaces. Select one interface per machine to act as the external uplink. This uplink network must support both broadcast and multicast traffic for distributed networking to function correctly.

Gateways and IP Ranges

You will need to provide the IPv4 (and optionally IPv6) gateway for the uplink network using CIDR notation (e.g., 192.0.2.1/24). Then define a specific block of IPv4 addresses on your network reserved exclusively for your LXD instances.

Tip: MicroCloud uses mDNS (multicast DNS) to automatically discover the initiator node during setup. Some restrictive cloud environments block this traffic. If your secondary nodes can’t find the initiator, manually input the initiator’s static IP address to bypass the discovery phase and force the handshake.

6. Hit Enter, Get a Cloud

Once you answer the final prompts, MicroCloud takes over. It begins the automated bootstrap process, configuring and launching all requested services across every member of the cluster.

This turns what used to be a complex infrastructure deployment into a simple, repeatable process. Monitor the terminal output; when you see the final message stating “MicroCloud is ready,” your multi-node cluster is live, synchronized, and operational.

You can manage everything via the command line, or enable the Canonical LXD graphical user interface for centralized visual control over your instances, networks, and storage pools.

Your cluster is live. From here you can launch containers, spin up VMs, or start deploying workloads to the edge. All on your own hardware, under your own control, at a fraction of what you’d pay a cloud provider.

Anyone running MicroCloud in production? What’s your node count and what are you running on it?

I Got Tired of Cold Outreach. So I Made Claude Do It.

I Built an MCP That Turns Claude Into a Cold Outreach Machine — and It Actually Works

Submitted for the Notion MCP Challenge 2026

Let me be honest with you.

Cold outreach is broken.

Not because the idea is bad — cold emails work. People get hired, land clients, and build relationships through cold outreach every single day. It’s broken because of how long it actually takes to do it right.

Think about it. To send one good cold email, you have to:

  1. Find a company that’s actually a fit for your skills
  2. Go to their website and actually read it
  3. Figure out what they’re working on, what problems they might have
  4. Find a contact email somewhere on the site
  5. Write something that doesn’t sound like everyone else’s template
  6. Send it
  7. Log it somewhere so you don’t forget who you’ve reached out to

That’s 20–40 minutes. Per company.

If you do 10 companies — which is barely enough to move the needle — you’ve just burned a full workday on outreach alone.

So most people don’t do it. Or they send lazy, generic emails that get deleted in two seconds. Both outcomes are bad.

I got tired of it. So I built something.

Demo

What I Built: Cold Outreach MCP

Cold Outreach MCP is a custom MCP server that turns Claude into a fully automated cold email agent. You paste your CV once. Claude does everything else.

Here’s the exact flow:

You: "Here is my CV. Find 10 companies that match my background,
      research each one, and show me your recommendations."

Claude: [researches 10 companies]

      1. stripe.com → opportunity_pitch
         "Their checkout onboarding has friction — matches your UX background"

      2. linear.app → role_inquiry
         "Fast-growing team, strong eng culture, no obvious gap spotted"

      ... 8 more

You: "Looks good. Send as recommended."

Claude: [generates 10 tailored emails, sends them, logs everything to Notion]

That’s it. What used to take a full day now takes 3 minutes.

The Part That Actually Makes It Different

Most “automation” tools skip the part that matters most — the email itself.

They send templated garbage like:

“Hi [First Name], I came across [Company] and I was really impressed by your work in [Industry]. I think my background in [Skill] could add value to your team…”

Nobody replies to that. Everybody knows it’s a template. It goes straight to the bin.

Cold Outreach MCP does something different. Before generating the email, Claude actually reads the company’s website, identifies specific things about their product or team, and writes something that references what it found:

“Saw you’re building a design system at scale — I’ve done exactly this at [Company] and ran into the same versioning problems you’re probably hitting. Worth a quick chat?”

That’s an email someone opens. That’s an email someone replies to.

And the tone rules are hard-coded into the prompts:

  • Under 120 words
  • No buzzwords (“synergy”, “leverage”, “circle back” — all banned)
  • Short sentences. Casual but not sloppy.
  • One specific observation from their site
  • One clear ask at the end

It sounds like a person wrote it. Because an extremely good AI was told to write like a person.

Where Notion Fits In

Every outreach — sent, failed, or pending — gets logged to a Notion database automatically.

The schema looks like this:

Company Website Email Type Status Date Sent Notes
Stripe stripe.com [email protected] opportunity_pitch sent 2026-03-26 full email body
Linear linear.app [email protected] role_inquiry sent 2026-03-26 full email body

No manual logging. No “I think I emailed them last week?”. No spreadsheet.

And the Notion integration is set up like a proper database migration — you create an empty database on Notion, paste its ID in your config, run setup_notion_db once, and all the columns are provisioned automatically. It’s exactly how backend migrations work.

The 10 Tools Under the Hood

Tool What it does
setup_notion_db Migrates your Notion database — adds all required columns
parse_profile Extracts structured profile from your CV text
discover_companies Finds real companies that match your skills using Claude
find_company_email Scrapes a company site to find a contact email
research_company Analyzes a company — summary, pain points, recommended email type
generate_email Writes a human-sounding outreach email
send_email Sends via SMTP (Gmail, Outlook, anything)
log_to_notion Logs a record to your Notion tracker
retry_failed Re-attempts any failed sends automatically
bulk_outreach Full pipeline for up to 15 companies at once

It’s Human-in-the-Loop by Design

This is important. The tool doesn’t just fire off emails without asking you.

bulk_outreach runs in two phases:

Phase 1 — Claude researches all companies and returns its recommendations. You see everything before a single email is sent.

Phase 2 — You confirm (or override) each recommendation. Then and only then does Claude generate and send.

You’re always in control. The AI is doing the tedious work, not making the decisions for you.

There’s also a hard limit of 15 companies per run — enough to be productive, not enough to accidentally spam half the internet if something goes wrong.

Tech Stack

  • MCP SDK — @modelcontextprotocol/sdk (official Anthropic SDK)
  • AI — Claude via @anthropic-ai/sdk with adaptive thinking for research and email generation
  • Scraping — axios + cheerio for website analysis and email extraction
  • Email — nodemailer with lazy SMTP validation (server doesn’t crash if SMTP isn’t configured yet)
  • Notion — raw Notion REST API (fetch directly to https://api.notion.com/v1/...) for reliability
  • Language — TypeScript, Node.js 18+, ES modules

What the Setup Looks Like

git clone https://github.com/thecodedaniel/cold-outreach-mcp
cd cold-outreach-mcp
npm install && npm run build

Fill in your .env:

ANTHROPIC_API_KEY=sk-ant-...
NOTION_API_KEY=ntn_...
NOTION_DATABASE_ID=your_database_id
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
[email protected]
SMTP_PASS=your_app_password
[email protected]
SENDER_NAME=Your Name

Add to Claude Desktop config. Restart. Done.

The full setup takes about 10 minutes if you already have the API keys.

The One Thing I’m Most Proud Of

It’s not the scraping. It’s not the Notion integration. It’s not even the email generation.

It’s the fact that you don’t have to know which companies to target.

Every other tool in this space assumes you already know who you want to reach out to. You still have to do the research, compile the list, find the websites.

This one starts from your CV and figures out the rest. You describe what you do. Claude figures out who needs someone like you.

That’s the part that changes things.

What’s Next

  • Web search integration for real-time company discovery (Brave Search API)
  • Follow-up email scheduling (“no response in 7 days → send a nudge”)
  • Notion status tracking — mark a reply directly in Notion, trigger a follow-up draft
  • LinkedIn integration for finding decision-maker contacts

Links

Built for the Notion MCP Challenge 2026 by Daniel Ainoko (THECODEDANIEL)

If you’re a developer actively job hunting or trying to land clients — this is for you. The grind is real. Automate the boring parts.