[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f1zih37v55nl3y":3,"$fanuq43nlrv5g":58},{"slug":4,"title":5,"body":6,"summary":7,"tags":8,"author":14,"cover_url":15,"published_at":16,"seo_title":17,"seo_description":18,"reading_minutes":19,"related":20},"protected-quick-tunnels-vs-tailscale-funnel","Share localhost with three named people: Cloudflare's Protected Quick Tunnels vs Tailscale Funnel","\u003Cp>You have a dev server on \u003Ccode>localhost:8080\u003C\u002Fcode> and three people who need to click around it: a client, a designer, a colleague on another network. For years the quickest answer has been \u003Ccode>cloudflared tunnel --url\u003C\u002Fcode>, which hands you a random \u003Ccode>trycloudflare.com\u003C\u002Fcode> URL. It works, and it also puts an unauthenticated app on the public internet for anyone who gets hold of the link.\u003C\u002Fp>\n\u003Cfigure data-post-media=\"6ac2d51d2cb6b40613ac1a77\">\u003Cvideo src=\"https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6ac2d51f2cb6b40613ac1a7d-0-5238d150.mp4\" autoplay muted loop playsinline preload=\"metadata\">\u003C\u002Fvideo>\u003C\u002Ffigure>\n\u003Cfigure data-post-media=\"6ac218dafd770659725abe40\">\u003Cimg src=\"https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6ac218dafd770659725abe45-0-0a9233b3.png\" alt=\"Adding a layer of protection to a local development server.\" loading=\"lazy\">\u003Cfigcaption>Adding a layer of protection to a local development server.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\n\n\u003Cp>On 2 October Cloudflare added a fix for that: \u003Cstrong>Protected Quick Tunnels\u003C\u002Fstrong>. From \u003Ccode>cloudflared\u003C\u002Fcode> 2026.9.3, one extra flag puts the tunnel behind an email one-time PIN, and only addresses on your list get through. No Cloudflare account on either side, no dashboard, still free. This guide takes about ten minutes.\u003C\u002Fp>\n\n\u003Ch2>1. Update cloudflared\u003C\u002Fh2>\n\n\u003Cp>You need 2026.9.3 or later. Check what you have:\u003C\u002Fp>\n\n\u003Cpre class=\"code-block\" data-lang=\"bash\">\u003Ccode class=\"hljs language-bash\">cloudflared --version\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Cp>If it is older, update it with whatever installed it:\u003C\u002Fp>\n\n\u003Cpre class=\"code-block\" data-lang=\"bash\">\u003Ccode class=\"hljs language-bash\">\u003Cspan class=\"hljs-comment\"># macOS (Homebrew)\u003C\u002Fspan>\nbrew upgrade cloudflared\n\n\u003Cspan class=\"hljs-comment\"># Debian\u002FUbuntu installed from Cloudflare&#x27;s apt repo\u003C\u002Fspan>\n\u003Cspan class=\"hljs-built_in\">sudo\u003C\u002Fspan> apt-get update &amp;&amp; \u003Cspan class=\"hljs-built_in\">sudo\u003C\u002Fspan> apt-get install --only-upgrade cloudflared\n\n\u003Cspan class=\"hljs-comment\"># installed as a plain binary\u003C\u002Fspan>\ncloudflared update\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Ch2>2. Start something to share\u003C\u002Fh2>\n\n\u003Cp>Any local HTTP server will do. If you just want to try the flow:\u003C\u002Fp>\n\n\u003Cpre class=\"code-block\" data-lang=\"bash\">\u003Ccode class=\"hljs language-bash\">\u003Cspan class=\"hljs-built_in\">mkdir\u003C\u002Fspan> -p \u002Ftmp\u002Fdemo &amp;&amp; \u003Cspan class=\"hljs-built_in\">cd\u003C\u002Fspan> \u002Ftmp\u002Fdemo\n\u003Cspan class=\"hljs-built_in\">echo\u003C\u002Fspan> \u003Cspan class=\"hljs-string\">&#x27;&lt;h1&gt;hello from my laptop&lt;\u002Fh1&gt;&#x27;\u003C\u002Fspan> &gt; index.html\npython3 -m http.server 8080\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Ch2>3. Open a protected tunnel\u003C\u002Fh2>\n\n\u003Cp>In a second terminal, start the tunnel with one \u003Ccode>--allowed-mail\u003C\u002Fcode> per person:\u003C\u002Fp>\n\n\u003Cpre class=\"code-block\" data-lang=\"bash\">\u003Ccode class=\"hljs language-bash\">cloudflared tunnel --url http:\u002F\u002Flocalhost:8080 \\\n  --allowed-mail alice@example.com \\\n  --allowed-mail bob@example.com \\\n  --allowed-mail carol@example.org\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Cp>A wildcard works for a whole domain, for example a client's company. Quote it so your shell does not expand the \u003Ccode>*\u003C\u002Fcode>:\u003C\u002Fp>\n\n\u003Cpre class=\"code-block\" data-lang=\"bash\">\u003Ccode class=\"hljs language-bash\">cloudflared tunnel --url http:\u002F\u002Flocalhost:8080 --allowed-mail \u003Cspan class=\"hljs-string\">&#x27;*@client.example&#x27;\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Cp>\u003Ccode>cloudflared\u003C\u002Fcode> prints the \u003Ccode>trycloudflare.com\u003C\u002Fcode> URL as before. Send it to your three people.\u003C\u002Fp>\n\n\u003Ch2>4. What your visitor sees\u003C\u002Fh2>\n\n\u003Cp>Instead of your app, the visitor gets a sign-in page asking for an email address. Cloudflare Access sends a one-time PIN to that mailbox; entering it proves they own the address. Then the decision happens on \u003Cem>your\u003C\u002Fem> machine: \u003Ccode>cloudflared\u003C\u002Fcode> compares the verified address with the list you passed on the command line and lets the request through or not. Cloudflare's post puts it plainly: your guest list never leaves your machine.\u003C\u002Fp>\n\u003Cfigure data-post-media=\"6ac218dafd770659725abe4a\">\u003Cimg src=\"https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6ac218dafd770659725abe4f-0-241da351.png\" alt=\"The email one-time PIN acts as a gatekeeper for the tunnel.\" loading=\"lazy\">\u003Cfigcaption>The email one-time PIN acts as a gatekeeper for the tunnel.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\n\n\u003Ch2>What it protects, and what it does not\u003C\u002Fh2>\n\n\u003Cp>From the announcement and the Quick Tunnels docs, the important details are:\u003C\u002Fp>\n\n\u003Cul>\n\u003Cli>\u003Cstrong>Sessions last up to four hours\u003C\u002Fstrong>, less if the visitor's Access sign-in expires sooner, and end the moment you stop \u003Ccode>cloudflared\u003C\u002Fcode>. Stopping the process is your kill switch.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>The allow-list lives in memory on your machine.\u003C\u002Fstrong> Change it by restarting the tunnel with different flags. That also means a new random URL.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Access credentials are stripped\u003C\u002Fstrong> before the request is forwarded to your app, so your app is not handed the visitor's sign-in token.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>It proves an email address, nothing more.\u003C\u002Fstrong> If Bob forwards the PIN email or signs in on a shared machine, the tunnel cannot tell. Your app's own login, if it has one, still matters.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Quick Tunnel limits still apply\u003C\u002Fstrong>: up to 200 in-flight requests per tunnel (more get a \u003Ccode>429\u003C\u002Fcode>), no Server-Sent Events, and no uptime guarantee. If your app streams with SSE, for example a chat UI or live logs, it will not work through a quick tunnel, protected or not.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>For a demo, a review or a quick look at a webhook payload page, that is a big improvement over a public, unauthenticated URL, at the cost of one flag.\u003C\u002Fp>\n\n\u003Ch2>When Tailscale is the better fit\u003C\u002Fh2>\n\n\u003Cp>Tailscale has two related commands, and they answer different questions.\u003C\u002Fp>\n\n\u003Ch3>Tailscale Serve: share inside your tailnet\u003C\u002Fh3>\n\n\u003Cpre class=\"code-block\" data-lang=\"bash\">\u003Ccode class=\"hljs language-bash\">tailscale serve 8080\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Cp>This publishes the local port over HTTPS to devices \u003Cem>in your tailnet\u003C\u002Fem> only. If the people you are sharing with are already on your tailnet, such as teammates or your own phone, this is the better option: no PINs, no four-hour limit, and the app is never on the public internet. People outside your tailnet need to join it or have the device shared with them, which means a Tailscale account and client on their side.\u003C\u002Fp>\n\n\u003Ch3>Tailscale Funnel: public, without the allow-list\u003C\u002Fh3>\n\n\u003Cpre class=\"code-block\" data-lang=\"bash\">\u003Ccode class=\"hljs language-bash\">tailscale funnel 8080\u003C\u002Fcode>\u003C\u002Fpre>\n\n\u003Cp>Funnel routes traffic from the public internet to your local service, and visitors do not need Tailscale accounts. That makes it the closest match to a quick tunnel, but Funnel itself adds no sign-in step: anyone with the URL gets in, and your app has to do its own authentication. Funnel also has setup requirements: MagicDNS and HTTPS certificates enabled for the tailnet, a \u003Ccode>funnel\u003C\u002Fcode> node attribute in your tailnet policy file, and only ports 443, 8443 and 10000 can be exposed. In exchange you get a stable \u003Ccode>ts.net\u003C\u002Fcode> hostname instead of a new random URL every time.\u003C\u002Fp>\n\n\u003Ch2>Which one to use\u003C\u002Fh2>\n\n\u003Cul>\n\u003Cli>\u003Cstrong>A few named outsiders, for an afternoon:\u003C\u002Fstrong> Protected Quick Tunnel. One command, no accounts, email-gated, gone when you hit Ctrl-C.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Teammates who already run Tailscale:\u003C\u002Fstrong> \u003Ccode>tailscale serve\u003C\u002Fcode>. Private by default, no time limit.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>A public endpoint with a stable URL\u003C\u002Fstrong>, for example a webhook receiver that a third-party service must reach: Tailscale Funnel, or a named Cloudflare Tunnel with an Access policy. Both need an account. Neither a protected quick tunnel nor an email PIN works for a machine caller anyway.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Anything that streams with SSE or needs to stay up:\u003C\u002Fstrong> not a quick tunnel.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>The habit worth changing today is small: if you already type \u003Ccode>cloudflared tunnel --url\u003C\u002Fcode>, add \u003Ccode>--allowed-mail\u003C\u002Fcode> every time. A dev server reachable only by the three people you meant to share it with is a much easier thing to defend.\u003C\u002Fp>\n\u003Cfigure data-post-media=\"6ac218dafd770659725abe54\">\u003Cimg src=\"https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6ac218dafd770659725abe59-0-81913989.png\" alt=\"Choosing between private network sharing and public internet access.\" loading=\"lazy\">\u003Cfigcaption>Choosing between private network sharing and public internet access.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\n\n\u003Ch2>Sources\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fblog.cloudflare.com\u002Fprotected-quick-tunnels\u002F\">Cloudflare blog: Protected Quick Tunnels (2 October 2026)\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fnetworks\u002Fconnectors\u002Fcloudflare-tunnel\u002Fdo-more-with-tunnels\u002Ftrycloudflare\u002F\">Cloudflare docs: Quick Tunnels (limits, --allowed-mail)\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Ftailscale.com\u002Fkb\u002F1223\u002Ffunnel\">Tailscale docs: Funnel\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Ftailscale.com\u002Fkb\u002F1312\u002Fserve\">Tailscale docs: Serve\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>","cloudflared 2026.9.3 adds --allowed-mail: your quick tunnel now sits behind an email one-time PIN, checked against an allow-list on your own machine, free and without a Cloudflare account. The commands, what it protects, and when Tailscale Serve or Funnel is the better fit.",[9,10,11,12,13],"cloudflare","tailscale","tunnels","security","ai-assisted","if.codes","https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6ac218d8fd770659725abe3a-0-40f8cb2e.png","2026-10-04T23:19:14.764Z","Protected Quick Tunnels vs Tailscale Funnel: share localhost safely","cloudflared 2026.9.3 puts quick tunnels behind an email PIN with a local allow-list. Exact commands, limits, and when Tailscale Serve or Funnel fits.",4,[21,32,45],{"slug":22,"title":23,"type":24,"summary":25,"tags":26,"author":14,"cover_url":30,"published_at":31,"updated_at":31},"copyescape-cve-2026-17106-patch-docker-cp","CopyEscape (CVE-2026-17106): patch docker cp, and stop copying out of running containers","blog","A race in docker cp lets a malicious container write files anywhere the copying process can write on the host. That matters for CI runners and AI-agent sandboxes that copy results out. Check your versions, patch, and change copy-out jobs to stop the container first.",[27,12,28,29,13],"docker","cve","ci","https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6ac218ebfd770659725abe68-0-eee7c8f7.png","2026-10-04T23:51:14.689Z",{"slug":33,"title":34,"type":24,"summary":35,"tags":36,"author":14,"cover_url":42,"published_at":43,"updated_at":44},"si-domains-super-intelligence-data",".si after 'Super Intelligence': did one UN speech move a ccTLD?","Trump renamed AI 'super intelligence' at the UN on 22 September 2026 and Slovenia's .si went from about 190,000 names to almost 276,000 in a month. Registry numbers, prices, and 87 WHOIS checks: the obvious AI names were gone years ago; the compounds went in days.",[37,38,39,40,41,13],"domains","si","tld","data","ai","https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6abaaee53e21d5cbd14d442d-0-d6243bc5.png","2026-10-04T22:36:14.598Z","2026-10-04T22:36:14.599Z",{"slug":46,"title":47,"type":24,"summary":48,"tags":49,"author":14,"cover_url":55,"published_at":56,"updated_at":57},"palantir-agent-stack-python","Steal Palantir's agent stack: typed tools, one LLM gateway, swappable models","An X thread boils Palantir's AIP docs down to four agent patterns. We check each one against the docs, then build them in one stdlib-only Python file: typed business-object tools, a gateway that masks PII, caches and retries, a model set in config, and schedule\u002Fevent\u002FAPI triggers.",[50,51,52,53,54,13],"ai-agents","llm","python","architecture","palantir","https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6abd88f9c951ea7137fa3872-0-48eb7eee.png","2026-10-01T23:05:10.531Z","2026-10-01T23:05:10.532Z",[59,62,65,68,71,83,95,106,117,126,138,149,158,169,179,188,198],{"slug":22,"title":23,"type":24,"summary":25,"tags":60,"author":14,"cover_url":30,"published_at":31,"updated_at":31,"reading_minutes":61},[27,12,28,29,13],5,{"slug":4,"title":5,"type":24,"summary":7,"tags":63,"author":14,"cover_url":15,"published_at":16,"updated_at":64,"reading_minutes":19},[9,10,11,12,13],"2026-10-04T23:19:14.765Z",{"slug":33,"title":34,"type":24,"summary":35,"tags":66,"author":14,"cover_url":42,"published_at":43,"updated_at":44,"reading_minutes":67},[37,38,39,40,41,13],6,{"slug":46,"title":47,"type":24,"summary":48,"tags":69,"author":14,"cover_url":55,"published_at":56,"updated_at":57,"reading_minutes":70},[50,51,52,53,54,13],10,{"slug":72,"title":73,"type":24,"summary":74,"tags":75,"author":14,"cover_url":79,"published_at":80,"updated_at":81,"reading_minutes":82},"claude-code-effort-levels","Effort levels in Claude Code: when max effort pays off and when it just burns tokens","Anthropic's effort deep dive (Terminal-Bench 3.0 plus three builds) shows higher effort mostly buys verification and edge-case testing, not smarter code. A rule of thumb per task type, the commands to set effort, and a script to measure cost vs pass rate on your own repo.",[76,77,51,78,13],"claude-code","ai-coding","developer-tools","https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6abd88edc951ea7137fa3804-0-2716005a.png","2026-10-01T22:32:14.139Z","2026-10-02T04:44:58.001Z",9,{"slug":84,"title":85,"type":24,"summary":86,"tags":87,"author":14,"cover_url":91,"published_at":92,"updated_at":93,"reading_minutes":94},"agentic-inbox-cloudflare-setup","Self-host an AI email agent on Cloudflare Workers: agentic-inbox set up and costed","Cloudflare's open-source agentic-inbox runs a full email client on Workers, with one SQLite Durable Object per mailbox and a Kimi K2.5 agent that drafts replies. Covers the post-deploy steps people miss (Access, sending, routing, mailbox first) and the cost.",[9,88,50,89,90,13],"workers","email","self-hosting","https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6abd88dac951ea7137fa378b-0-5b0ec96d.png","2026-10-01T08:17:18.646Z","2026-10-01T08:44:42.528Z",8,{"slug":96,"title":97,"type":24,"summary":98,"tags":99,"author":14,"cover_url":103,"published_at":104,"updated_at":105,"reading_minutes":94},"audit-ai-agent-public-traces","Nearly a million leaked links: auditing what your AI agents leave on the public web","OpenAI's agent swarm left almost a million public shortener URLs holding credentials. Here's a tested shell + gitleaks audit to find the shortlinks, pastes and webhooks your own agents created, scan them for secrets and close the channels.",[12,100,101,102,51,13],"agents","secrets","gitleaks","https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6abaad873e21d5cbd14d4397-0-0f4f51f7.png","2026-10-01T07:43:19.642Z","2026-10-01T08:44:43.041Z",{"slug":107,"title":108,"type":24,"summary":109,"tags":110,"author":14,"cover_url":114,"published_at":115,"updated_at":116,"reading_minutes":94},"mikrotrick-check-patch-mikrotik","MikroTrick: check and patch your MikroTik in 15 minutes","Two chained RouterOS bugs give anyone who can reach SSH full admin, no password needed, and attacks started before the patch. Find exposed SSH, check the version, grep for the published IoCs, patch and move management behind WireGuard.",[12,111,112,113,90,13],"mikrotik","routeros","ssh","https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6abcd9c0838b650cb96b3d10-0-6cd107e0.png","2026-10-01T07:02:15.03Z","2026-10-01T08:44:41.391Z",{"slug":118,"title":119,"type":24,"summary":120,"tags":121,"author":14,"cover_url":123,"published_at":124,"updated_at":125,"reading_minutes":94},"agent-sandbox-dns-egress-lockdown","Your agent sandbox leaks through DNS: lock down egress in 15 minutes","An OpenAI model escaped its sandbox by tunnelling questions through DNS. Here is a tested Docker Compose setup for coding agents: a DNS allowlist, a logging egress proxy and a kill switch that actually fires.",[12,27,100,122,90,13],"dns","https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6abaaca13e21d5cbd14d4306-0-cb93fe1b.png","2026-10-01T03:00:15.943Z","2026-10-01T08:44:43.165Z",{"slug":127,"title":128,"type":24,"summary":129,"tags":130,"author":14,"cover_url":134,"published_at":135,"updated_at":136,"reading_minutes":137},"who-blocks-ai-crawlers-robots-txt","Who blocks AI crawlers? robots.txt vs the network edge, with numbers","I scanned robots.txt on the top 300 sites: 33 of 138 block GPTBot, 14 block training but allow AI search. What each AI bot directive controls, why robots.txt is only a request, and a copy-paste policy plus nginx rule for small SaaS sites.",[41,131,132,9,133,13],"robots-txt","seo","saas","https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6abcd9c1838b650cb96b3d1b-0-11f94198.png","2026-09-30T21:00:20.673Z","2026-10-01T20:47:34.092Z",7,{"slug":139,"title":140,"type":24,"summary":141,"tags":142,"author":14,"cover_url":146,"published_at":147,"updated_at":148,"reading_minutes":19},"bullet-time-with-first-last-frame-video","Bullet time with first\u002Flast-frame video: orbiting a frozen moment from three stills","A freeze-frame camera orbit built from generated stills: one action shot, two camera-move angles, two first\u002Flast-frame clips between them, stitched and ping-ponged. The pipeline, the seams, and where the model re-imagines the water.",[41,143,144,145],"comfyui","video-generation","flowdsl","https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6abae46c45201648bfd477a7-0-6f4d036e.png","2026-09-28T22:42:41Z","2026-09-28T22:42:41.6Z",{"slug":150,"title":151,"type":24,"summary":152,"tags":153,"author":14,"cover_url":155,"published_at":156,"updated_at":157,"reading_minutes":137},"an-ai-media-pipeline-that-shows-its-work","An AI media pipeline that shows its work: ComfyUI presets, FlowDSL routing and the misses","How the images on my sites are generated: four ComfyUI presets behind one Go module, job rows as state, FlowDSL flows for routing, per-post media in the admin — and the bugs and model misses I hit shipping it. This post's own images were made the same way.",[41,145,143,154],"image-generation","https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6aba8ba317ceba3543925be4-0-2f6b8a5c.png","2026-09-28T15:57:50Z","2026-10-01T20:47:34.327Z",{"slug":159,"title":160,"type":24,"summary":161,"tags":162,"author":14,"cover_url":165,"published_at":166,"updated_at":167,"reading_minutes":168},"openai-embeddings-python-mongodb","Transforming Text into Vectors: OpenAI Embeddings in Python","Learn how to generate text embeddings with the OpenAI API in Python to power semantic search, recommendations, and more. Includes practical examples with MongoDB integration and cost analysis.",[163,41,52,164],"openai","mongodb","https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6abad0fa45201648bfd46c2d-0-2e60b732.png","2024-11-23T00:00:00Z","2026-09-28T22:31:01.385Z",3,{"slug":170,"title":171,"type":24,"summary":172,"tags":173,"author":14,"cover_url":175,"published_at":176,"updated_at":177,"reading_minutes":178},"check-pricing-availability-ing-domains","Last Chance to Grab Short .ING Domains: The Extended List Part II","Welcome back to the second part of our exciting exploration into the .ING domain zone! This time, I've expanded our horizons to bring you an even larger selection of .ING domain names. List of over 24,000 domain names inside.",[37,174],"business","https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6abad0fa45201648bfd46c38-0-c55f4c8d.png","2023-12-14T00:00:00Z","2026-09-28T22:31:01.453Z",1,{"slug":180,"title":181,"type":24,"summary":182,"tags":183,"author":14,"cover_url":184,"published_at":185,"updated_at":186,"reading_minutes":187},"impressive-ing-domains","Unveiling the Impressive .ING Domains","Discover the vast potential of the new .ING domain zone in my latest blog post! I've used AI and a Python script to unearth a treasure trove of available domain names. From budget-friendly picks to exclusive premium domains, there's something for every ambition. Plus, a special list of unique, lesser-known domains awaits.",[37,174],"https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6abad0fa45201648bfd46c43-0-03be24b7.png","2023-12-11T00:00:00Z","2026-09-28T22:31:01.527Z",2,{"slug":189,"title":190,"type":24,"summary":191,"tags":192,"author":14,"cover_url":195,"published_at":196,"updated_at":197,"reading_minutes":168},"secured-web-server-in-5-minutes","Fortify Web Server Security in 5 Minutes with Tailscale","Tailscale revolutionizes secure networking with its user-friendly approach, effortlessly connecting devices across diverse networks.",[193,10,194],"firewall","webserver","https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6abad0fa45201648bfd46c4e-0-eae6f62d.png","2023-11-03T00:00:00Z","2026-09-28T22:31:01.597Z",{"slug":199,"title":200,"type":24,"summary":201,"tags":202,"author":14,"cover_url":205,"published_at":206,"updated_at":207,"reading_minutes":67},"lets-encrypt-free-ssl","How to Secure Your Website with Free SSL Certificates for a Lifetime","Let’s Encrypt certificates have revolutionized internet security by providing free, automated, and widely trusted SSL\u002FTLS certificates. The non-profit Certificate Authority (CA) has significantly contributed to a more secure web environment by simplifying the process of securing websites with HTTPS.",[203,204,194],"ssl","https","https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6abad0fa45201648bfd46c59-0-bf2a9a0a.png","2023-11-01T00:00:00Z","2026-09-28T22:39:13.555Z"]