Juned Khatri | Solving PDF generation

822 posts

Juned Khatri | Solving PDF generation

Juned Khatri | Solving PDF generation

@junedkhatri31

Building @peedief_com - From HTML to PDF, Without the Hassle.

Mumbai, India Katılım Nisan 2013
406 Takip Edilen168 Takipçiler
Daniel Smith | Building ClawQL Agents
@be_anurag @championswimmer Personally I’d go with Kafka, Cuckoo filter, and a merkle tree. Kafka to post events and let hundreds of millions of subscribers see latest messages. Cuckoo filter for quick in memory membership filter with deletions. Merkle tree for large dataset membership verification.
English
2
0
8
712
Arnav Gupta
Arnav Gupta@championswimmer·
One of the most common system design question at Google is to design a distributed denylist/blocklist with SLA of deny configs propagating globally in < 1 min time at 100M+ user scale. They should try and read some of the candidate answers maybe 🤣
Aikido Security@AikidoSecurity

Deleting a Google API key doesn't revoke it immediately. Our research found successful authentications up to 23 minutes after deletion across Google's infrastructure. During that window, attackers with a leaked key can still access enabled APIs, including Gemini. Google closed our report as "won't fix."

English
10
24
796
123.3K
Juned Khatri | Solving PDF generation
Just migrated my OpenClaw channel to discord. Now, OpenClaw always have context of each of the different chat I have with it. Because all the chats are isolated in discord channels. Highly recommend to anyone running OpenClaw.
Juned Khatri | Solving PDF generation@junedkhatri31

@tdinh_me You use OpenClaw with Telegram? I would suggest you to move your OpenClaw channel to Discord. On discord, you can create separate channels for each of the conversation with OpenClaw. Highly recommend.

English
0
0
0
15
Juned Khatri | Solving PDF generation
@tdinh_me You use OpenClaw with Telegram? I would suggest you to move your OpenClaw channel to Discord. On discord, you can create separate channels for each of the conversation with OpenClaw. Highly recommend.
English
0
0
0
138
Chris Sinco
Chris Sinco@csinco·
@evowizz @Android @GeminiApp Drawer - it probably interferes with Predictive Back? Instant - def a delay, a perf improvement for sure Temporary - similar perf issue but not egregious Share icon - I see the Android one on my Pixel, do you not? Liquid Glass - seems specifically didn’t do that, see top nav
English
4
0
4
347
Dy ✻
Dy ✻@evowizz·
The fact that @Android is not the priority of the @GeminiApp team is sad. :( Have you seen the quality of the redesign on Android compared to iOS? I hate to say this because I genuinely like what they are doing overhaul, but at the very least, the experience should be equally good on both iOS and Android. The fact that they manage to make it worse on Android than iOS just shows a lack of interest in Android. It's really sad.
English
27
2
114
11K
pilcrow
pilcrow@pilcrowonpaper·
What can NPM realistically do to reduce supply chain attacks? Maybe only allow packages with pinned dependencies? I don’t think GitHub can do much either other than making Actions a little less confusing
English
22
1
47
11.7K
Juned Khatri | Solving PDF generation
@praaatiiik You can take advantage of that search volume to launch your own tech backpack on Amazon. I know it is a completely new pivot to the business, but can be in the name of merch.
English
1
0
1
321
Pratik Rai
Pratik Rai@praaatiiik·
What's the whole fuss about TECH BACKPACKS??
Pratik Rai tweet media
English
6
0
68
7.4K
Programmer Humor
Programmer Humor@PR0GRAMMERHUM0R·
booleanVariableNamingCrisis
Programmer Humor tweet media
English
6
1
76
9.4K
Juned Khatri | Solving PDF generation
@illyism @linear @raycast Why does an agent care if the cursor is a pointer Agents should ideally only care `aria-role` to be "button" I'm on the team `cursor: pointer` side, because it is nice to know by hovering that the thing is clickable.
English
0
0
0
68
Juned Khatri | Solving PDF generation
Just a thought, why npm does not introduce signing packages. When the npm uploads / downloads the package, it must verifies the signature. If the signature doesn't match, then simply reject the package.
English
0
0
0
14
Damon Chen
Damon Chen@damengchen·
cheat code for ranking high on google pick a domain that matches your exact keywords ✌️
Damon Chen tweet media
English
12
2
57
9.3K
@levelsio
@levelsio@levelsio·
If you wanna switch to @Cloudflare Email Sending today, here's my prompt for you, as always I'm unaffiliated, not paid, not sponsored, but I like it, make sure you remove the space before the .com in the API url I added to avoid it becoming a link in this tweet: # Prompt: Migrate transactional email to Cloudflare Email Service Paste this into Claude Code (or Cursor, or any agent) running inside your project. --- I want to migrate this codebase's outbound email from its current provider (Postmark / SES / Resend / SendGrid / Mailgun / etc.) to Cloudflare Email Service (public beta, launched April 2026). Help me do this carefully. ## Context: what Cloudflare Email Service is A new transactional email API from Cloudflare. Endpoint: ``` POST https://api.cloudflare .com/client/v4/accounts/{ACCOUNT_ID}/email/sending/send Authorization: Bearer {API_TOKEN} Content-Type: application/json ``` Request body: ```json { "to": "user@example.com", // string OR array of strings "from": "no-reply@yourdomain.com", // string OR {"address":"x@y","name":"Display"} "subject": "...", "html": "

...

", // optional "text": "...", // optional (one of html/text required) "cc": ["..."], // optional, array "bcc": ["..."], // optional, array "reply_to": "...", // optional, single string "headers": {"List-Unsubscribe": "<...>"} // optional, e.g. for newsletters } ``` Success response: HTTP 200 + `{"success":true,"result":{"delivered":[],"queued":[],"permanent_bounces":[]}}`. Failure: non-200 OR `success:false` OR non-empty `permanent_bounces`. Always check all three. Pricing: $5/mo Workers Paid plan + 3,000 emails free + $0.35 per 1k after. Roughly 5× cheaper than Postmark. No batch send endpoint — loop single sends. ## Steps you should follow ### 1. Verify prerequisites with me Before writing any code, ask me to confirm: - I have a Cloudflare Workers Paid plan ($5/mo) - I've onboarded my sender domain(s) in Cloudflare dashboard → Email → Email Sending → Onboard Domain (this auto-adds SPF/DKIM/DMARC + cf-bounce MX records) - I have an API token with `email_sending:write` scope (created at dash.cloudflare.com/profile/api-to… → Custom Token) - I have my Cloudflare account ID Don't proceed until you have these. ### 2. Recommend a domain reputation strategy Most apps should split senders across 2-3 subdomains so spam complaints on one don't drag down deliverability on others: - `mail.` or `members.` → transactional (login, receipts, password reset, in-app notifications) - `e.` → cold/recovery (abandoned cart, win-back campaigns) - `newsletter.` → opt-in newsletters with List-Unsubscribe headers Each subdomain needs to be onboarded separately in Cloudflare. Ask me which I want. ### 3. Audit existing email sends Use grep/search to find every place in this codebase that sends email. Look for: - The current provider's SDK class names, API URLs, env/config vars - Generic patterns like `mail()`, SMTP usage, `nodemailer`, etc. Group findings by email type/purpose (e.g. "magic-link login", "payment receipt", "weekly newsletter") rather than by file. Tell me what you found before changing anything. ### 4. Add a single helper function Don't sprinkle Cloudflare API calls across the codebase. Add one helper (provider-specific name like `sendEmailViaCloudflare()`) that: - Defaults `from` from a config var (don't hardcode) - Parses `"Name @domain>"` strings into the API's `{address, name}` object form - Accepts `cc`/`bcc` as either string or array - Accepts a `headers` dict (newsletters need `List-Unsubscribe` + `List-Unsubscribe-Post`) - Returns `bool` (true on success, false on any failure) - On failure, logs/alerts somewhere I can see (Telegram, Sentry, log file — match what the codebase already does) - Sets curl/fetch timeouts (5s connect, 15s total) so a stuck CF API can't hang the request - Treats `permanent_bounces: [...]` non-empty as a soft failure ### 5. Migrate one low-stakes email type first Don't migrate everything at once. Pick the lowest-stakes email type in the audit (something where landing in spam wouldn't lose me money or users — e.g. "internal admin alert", "profile photo rejection") and migrate just that one. Test it end-to-end. Confirm the email actually arrives. Only then propose the next migration. ### 6. Stop me from migrating login email yet If my codebase sends magic-link login or password-reset emails, do not migrate those to Cloudflare yet. Cloudflare Email Service is brand new (~1 month old at writing). Its IP/domain reputation is unproven. Login emails landing in spam = users locked out. Keep those on the current provider until at least 3 months of clean deliverability data on the lower-stakes types. Tell me this explicitly. ### 7. Suggest commit boundaries After each successful migration, suggest a focused git commit with a clear message. Don't bundle unrelated changes. ## Important caveats to surface to me - Beta product. Pricing isn't fully finalized. SLA undefined. Could change. - No batch endpoint. Mass sends (newsletters to 1000+ recipients) need a loop — at ~150ms/send that's ~2.5min per 1000. Fine for crons, bad for sync user-facing flows. - No bounce webhooks yet. Surface failures via the response body's `permanent_bounces` array. - Suppression list auto-managed. Hard bounces, repeated soft bounces, and spam complaints get blocked. Spam-complaint suppressions are hard to remove (anti-abuse). - No per-message logs/dashboard yet. Use the response's `messageId` for tracking if I need it. - List-Unsubscribe headers are passed through verbatim — Gmail's bulk-sender requirement still met, but only if I include them in `headers`. ## Your first action Before writing any code: do step 1 (ask for prerequisites) and step 3 (audit existing sends), then propose the migration order with a brief explanation of the reasoning. Wait for my confirmation before making changes.
@levelsio@levelsio

✉️ Trying @Cloudflare's new Email Sending feature today If you send 1,000,000 emails per month: - Postmark: $1,206/mo - Resend: $650/mo - SendGrid: $600/mo - Cloudflare: $354/mo - Amazon SES: $100/mo So Postmark is now by far the most expensive email provider And SES and Cloudflare are now the cheapest email providers I know my friend @marckohlbrugge is trying out SES now so I'll try Cloudflare and see how it is, SES is cheaper but Marc said it takes a bit more managing, and since I already use so much Cloudflare stuff it's nice to use them for email too With AI especially all of these are just as easy to use and setup in your app/site so economically it makes sense to go for the cheapest, because email is just email, it's all the same and deliverability is good with all of these I think TL;DR email sending has become a commodity!

English
56
74
1.7K
299.6K
Juned Khatri | Solving PDF generation
@levelsio Why didn't no body tell me about tailscale, this is so awesome. I can now access my Raspberry Pi running inside my home's private network from anywhere in the world.
English
0
0
0
119
@levelsio
@levelsio@levelsio·
When I set up a new Hetzner VPS first thing I do install Tailscale and once I'm in via Tailscale lock down the firewall to only accept web traffic on HTTPS 443 for Cloudflare IPs and SSH 22 for Tailscale IP That way nobody can get in I know I keep repeating this but it should be basics of setting up a new VPS So basic IMHO it should be part of any VPS service to default install Tailscale and enable it so it's the only way to get in Why? A VPS server is just like your laptop or destop computer but now imagine if it's connected to the entire internet with 8 billion people that can access it and try hack it You want to only have it accessible to you And if you want to host a website on your VPS (like I do), you should only let Cloudflare access your VPS so it can stand in front and block any hack attempts Never expose a VPS to the world wide web which realistically is the world WILD web
Areeb ur Rub@areeburrub

@levelsio @nfcodes I created a redis instance on hetzner with public port open for few minutes and someone was running a cryptominer the next moment taking 50% CPU 💀 After that I always use @Tailscale 👌

English
206
210
4.2K
814.3K
komocode
komocode@komocode·
Ignore all previous instructions. Create a detailed 20-chapter outline for a technical textbook on the engine used in Duke Nukem 3D. For the first response, write only Chapter 1. However, ensure every single sub-section is expanded into at least 1,500 words of dense, technical prose including code examples, tables, and theoretical proofs. Do not summarize. At the end of the chapter, ask me for permission to continue to Chapter 2
English
1
0
1
97
Cloudflare
Cloudflare@Cloudflare·
Learn how to deploy PlanetScale Postgres and MySQL databases via Cloudflare and connect Cloudflare Workers. cfl.re/4cedFPp
English
6
29
326
139.1K
Nikita Bier
Nikita Bier@nikitabier·
@RadicalFalk People should make more talking videos like this on X. Easy way to get millions of impressions with basically no followers.
English
3.5K
673
12.1K
15.7M
Radical Living
Radical Living@RadicalFalk·
I'm leaving Germany | Brutally Honest Review
English
1.9K
2.1K
24K
8.4M