@Hatim

227 posts

@Hatim

@Hatim

@ItsDonHatim

Online Katılım Mart 2020
103 Takip Edilen35 Takipçiler
wannercashcow
wannercashcow@wannercashcow·
I just put 1,000 profitable YouTube niches in a free dashboard You can filter and sort through all of them to find your next $10K+/month channel Follow + comment "1000" and I'll send you the dashboard
English
408
30
401
30.3K
@Hatim
@Hatim@ItsDonHatim·
@KhalidWarsa Yes shotter only do screenshots, I use @cap for screen recording.
English
0
0
1
42
Khalid Warsame
Khalid Warsame@KhalidWarsa·
@ItsDonHatim Claude recommended this too but said it has no screen recording. Will check it out. Thanks.
English
1
0
0
155
Khalid Warsame
Khalid Warsame@KhalidWarsa·
Too many words to say annual subscription.
Khalid Warsame tweet media
English
20
0
105
17.1K
@Hatim
@Hatim@ItsDonHatim·
@fcoury finally , i was struggling with table rendering
English
0
0
1
63
Felipe Coury 🦀
Felipe Coury 🦀@fcoury·
In case you missed, it's also markdown table on the terminal day! ✨
English
6
3
70
6.2K
@Hatim
@Hatim@ItsDonHatim·
@thomaspaulmann @raycast @thomaspaulmann Huge improvement, especially with how snappy everything feels (I use clipboard and snippets a lot, and the difference from v1 is night and day). Is this because of Rust? In v1, it drove me crazy when I typed in the clipboard search! now it's instant. well done!
English
0
0
2
67
Thomas Paul Mann
Thomas Paul Mann@thomaspaulmann·
Been using Dictation in the new @raycast a lot lately... 🗣️ Speech to text anywhere on your Mac 🎙️ System microphone or a manual priority list 📚 Vocabulary and styles to make it sound like you Free during beta 👉 raycast.com/new
Thomas Paul Mann tweet media
English
30
9
172
42.9K
sacredstuff
sacredstuff@sacredstuffYT·
Thank you so much for taking another look! For context though: my first appeal was auto-denied without anyone watching my appeal video. The second review is now on day 12 after being told it would take a few days, which is why I felt the need to flag this. I’ve seen other affected creators resolved much faster, so I know expedited review is possible. Especially since my appeal video walks through my entire process side-by-side with the official policy VERY clearly. Please stress to the team to actually watch it. It will help them resolve this smoothly and quickly 😃
English
2
0
4
822
@Hatim
@Hatim@ItsDonHatim·
@Dimillian @steipete yes they really mailed it. i kept spamming them to change only the tui though once inside /goal then show a different ui, to keep track of the progress, what’s done, the gotchas along the way, that will help me steer the agent if he went off. beside that, goal is 🔮.
English
0
0
0
70
Thomas Ricouard
Thomas Ricouard@Dimillian·
I've used Codex /goal all weekend on side projects/games and I can definitely feel that this is something that will be part of our toolbelt from now on and will change how we work with agent quite a bit 🧵
English
36
35
1.1K
101.8K
@Hatim
@Hatim@ItsDonHatim·
@marclou Your body adapted to the eight sleep, and now it can’t even regulate itself again. At some point, lifestyle optimization starts working against you.
English
1
0
5
727
Marc Lou
Marc Lou@marclou·
My Resting Heart Rate is up 10% since I left my Eight Sleep mattress. AC is blasting at 18° in the hotel room, but I still feel too hot. It's very hard to maintain a healthy routine while traveling.
Marc Lou tweet media
English
69
4
304
63.2K
@Hatim
@Hatim@ItsDonHatim·
@thsottiaux it needs a diffirent tui layout though. once inside /goal it should change
English
0
0
0
173
Tibo
Tibo@thsottiaux·
/goal might be the most consequential thing we have shipped in codex The value of good instructions has never been higher.
English
360
185
4.9K
378.7K
@Hatim
@Hatim@ItsDonHatim·
@fcoury Suggestion: Could /goal open a a different-style UI, showing orchestrator, reviewer sub-agents, tasks in progress? Goals without visibility feel blind, the blog below will explain it better. Hope this can be added into codex. factory.ai/news/missions-…
English
0
0
0
244
Felipe Coury 🦀
Felipe Coury 🦀@fcoury·
/goal also lands in Codex CLI 0.128.0. Our take on the Ralph loop: keep a goal alive across turns. Don't stop until it's achieved. Built by my co-worker and OpenAI mentor Eric Traut, aka the Pyright guy. One of the GOATs I get to work with daily.
English
174
245
3.6K
883.9K
@Hatim
@Hatim@ItsDonHatim·
@Tenderbase_kw @nicopreme @mattpocockuk Yeah, if you just use the skill by itself, it dumps all the questions into the terminal, so you end up scrolling up and down to answer each one. Tried it not ideal, especially if the session about a big feature.
English
0
0
1
122
Matt Pocock
Matt Pocock@mattpocockuk·
The top trending repo in the world is mine Madness
Matt Pocock tweet media
English
163
95
3.7K
165.5K
@Hatim
@Hatim@ItsDonHatim·
@Tenderbase_kw @nicopreme @mattpocockuk No, it’s a web UI. Runs via Pi Coding Agent, you can bring your Codex sub and use it there. Tell the agent to use grill-me skill + pi-interview, he generates questions → outputs JSON → spins up a web page. I redesigned it to show only one question at a time.
English
1
0
3
357
@Hatim
@Hatim@ItsDonHatim·
@jackfriks Take the pain and rewrite your logic to work with PlanetScale instead, but they don't do auth or things like that, they're pure database. If you want something close to Supabase, go with Convex.
English
0
0
1
337
Youssef
Youssef@MlyYousef·
سأفعلها عشرون مرة لو اقتضى الحال لستم جاهزون
العربية
17
3
194
7.7K
@Hatim
@Hatim@ItsDonHatim·
@levelsio 440 disputes! That's a lot. Maybe you need to add a "this isn't for you" section. Analyze all the disputes generation and extract what use case they signed up for. (give ai photos generated by these users) I know this is under 1% for you, but still, I would try to minimize it.
English
1
0
2
6.7K
@levelsio
@levelsio@levelsio·
✅ Done 💳 Made an auto-dispute response system for Interior AI to see how easy it'd be It syncs old disputes but also catches new disputes via Stripe webhook and then auto submits evidence to try win them, it even includes the interior designs they generated in the evidence PDF to prove they used it! Here's the prompt/skill I made: ---- Build an auto-dispute-response system for Stripe that: 1. Shared evidence collection (app/dispute_evidence.php) Create a shared file with functions used by both the webhook and sync worker. This avoids duplicating evidence logic. Key functions: - getDisputeUserPlan($user, $stripe) — pulls the user's subscription plan from Stripe API (source of truth, since local DB plan field gets cleared on cancellation). Falls back to local DB fields if Stripe call fails. Maps product IDs to plan names and includes price/interval and canceled status. - collectDisputeEvidence($stripe, $user, $email, $charge, $photosDb) — collects all text and file evidence, returns an array ready to submit to Stripe. - generateServiceDocPdf($stripe, $user, $email, $photos_done, $recent_photos, $total_amount_paid) — generates a PDF with customer info, usage summary, recent activity table, and up to 6 actual product images (resized to JPEG at 500px wide / quality 75 to stay under Stripe's 5MB file upload limit). Returns both the Stripe file ID and raw PDF data. Important: pull total_amount_paid from Stripe charges API (sum of succeeded, non-refunded charges) instead of trusting the local DB which can be null/stale. 2. Webhook handler (in stripe_webhook.php) Catch `charge.dispute.created` events. When a dispute comes in: - Get the dispute, charge, and customer objects from Stripe - Look up the user in the local database by stripe_customer_id - Save the dispute to a `disputes` SQLite database (fields: dispute_id, charge_id, payment_intent_id, stripe_customer_id, user_id, email, amount, currency, reason, status, epoch_created, epoch_evidence_submitted, evidence_json, stripe_response, epoch_resolved, outcome) - Call collectDisputeEvidence() to collect all evidence (text + file uploads) - Submit evidence to Stripe via $stripe->disputes->update($dispute_id, ['evidence' => $evidence]) - Send a Telegram notification that a new dispute came in and evidence was auto-submitted Also catch `charge.dispute.updated` and `charge.dispute.closed` events to track dispute outcomes (won/lost) in the database and send Telegram notifications with the result (with emoji: checkmark for won, x for lost, warning for other). 3. Evidence fields submitted to Stripe TEXT fields (write strings directly): - product_description — describe what the product/service is - customer_name — from Stripe customer object - customer_email_address — from Stripe customer object - access_activity_log — detailed usage log: signup date, number of items/actions done, last active date, subscription plan (from Stripe), platform, total amount paid (from Stripe), recent activity with timestamps - uncategorized_text — the "why we should win" argument: customer signed up on X, actively used the service doing Y things, total amount paid, service was delivered digitally/instantly, customer never contacted us for a refund before disputing - refund_policy_disclosure — when the refund policy was presented (during checkout, always accessible at /legal) - cancellation_policy_disclosure — when cancellation policy was shown (during checkout, accessible at /legal, can cancel anytime from dashboard) - refund_refusal_explanation — customer didn't contact us for a refund before filing the dispute - cancellation_rebuttal — proof customer actively used the service and never requested cancellation - service_date — date of the charge (Y-m-d format) FILE UPLOAD fields (upload file to Stripe first via $stripe->files->create(['purpose'=>'dispute_evidence', 'file'=>fopen($path,'r')]), then pass the returned file_xxxxx ID): - receipt — pull the invoice PDF directly from Stripe ($stripe->invoices->retrieve($charge->invoice)->invoice_pdf gives a ready-made PDF URL, just download it and upload as dispute evidence) - service_documentation — generate a PDF containing: customer info section, service usage summary, recent activity table, and up to 6 actual product images/screenshots the customer received. Resize images before embedding (500px wide, JPEG quality 75) to stay under Stripe's 5MB file upload limit. Also save both PDFs to your file storage (e.g. Cloudflare R2, S3) with hashed filenames so they're not guessable but viewable from the admin dashboard. Store the storage URLs in the evidence_json as _receipt_r2_url and _service_doc_r2_url (underscore prefix so they're easy to identify as internal fields). DO NOT use these fields for text — they expect file upload IDs only: service_documentation, cancellation_policy, refund_policy, customer_communication, customer_signature, receipt, shipping_documentation, duplicate_charge_documentation, uncategorized_file 4. CLI sync worker (workers/syncDisputes.php) A script that pulls ALL existing disputes from Stripe's API (paginated with $stripe->disputes->all(['limit' => 100]) and starting_after for pagination), saves them to the local disputes database, and for any that still have needs_response or warning_needs_response status and haven't had evidence submitted yet — auto-submits evidence using the shared collectDisputeEvidence() function. This is needed because the webhook only catches future disputes, not existing ones. Too heavy to run on frontend — run via CLI only (php workers/syncDisputes.php). Saves a JSON cache file with sync results so the dashboard can show last sync time. 5. Mini dashboard (disputes.php with ?key= auth) A simple HTML page protected by ?key= query parameter that shows: - Stats boxes: total disputes, pending, won, lost, disputed last 30 days (amount + count), disputed last 12 months (amount + count), total $ disputed - A note showing the CLI sync command and last sync time from cache - A test form where you enter a stripe_customer_id to preview what evidence would be submitted (without actually submitting) — useful for debugging - A table of all disputes: date, email, amount, reason, status (color-coded badges), evidence submission status, links to both detail view and Stripe dashboard Detail view (action=view&id=dispute_id): - Shows all dispute info, link to Stripe, and a "Regenerate Evidence" button - Shows PDF file links (receipt + service documentation) if available - Shows Stripe file upload IDs - Shows all text evidence fields Regenerate Evidence (action=regen&id=dispute_id): - Regenerates the receipt and service documentation PDFs and uploads to file storage - Updates the evidence_json in the database with new PDF URLs - IMPORTANT: Use fastcgi_finish_request() to send the HTTP response immediately (redirect back to detail page with "regenerating in background" notice), then continue generating PDFs in the background. This prevents frontend timeouts since downloading images and generating PDFs can take 30+ seconds. Add an nginx rewrite for the page (e.g. rewrite ^/disputes/?$ /disputes.php). Make sure it's in the correct nginx config file (check which one the symlink in sites-enabled actually points to). 6. Telegram notifications - New dispute: "{site name} - New dispute from {email} for ${amount} ({reason}). Evidence auto-submitted to Stripe. {stripe_dashboard_link}" - Evidence failed: "{site name} - New dispute from {email} for ${amount} ({reason}). Evidence submission FAILED: {error}" - Dispute won: "{site name} - Dispute WON (checkmark) for {email} - ${amount} ({reason}) {stripe_dashboard_link}" - Dispute lost: "{site name} - Dispute LOST (x) for {email} - ${amount} ({reason}) {stripe_dashboard_link}" - DB permission error: "{site name} - DISPUTE DB ERROR: {error} - check permissions on data/disputes.db" 7. Make sure these Stripe webhook events are enabled in the Stripe dashboard: - charge.dispute.created - charge.dispute.updated - charge.dispute.closed 8. Database permissions The disputes.db file must be writable by the web server user (e.g. www-data). If you create it from CLI as root, fix ownership to match your other DB files. PHP-FPM runs as a different user than root. 9. Dependencies - FPDF (setasign/fpdf) for PDF generation — install via composer require setasign/fpdf - GD extension for image resizing (usually already installed) - Stripe PHP SDK (already installed if you have Stripe webhooks) - AWS S3 SDK for R2/S3 uploads (already installed if using Cloudflare R2)
@levelsio tweet media@levelsio tweet media@levelsio tweet media
@levelsio@levelsio

Okay I'll try to vibe code an automatic Stripe dispute responder that: 1) receives disputes via webhook 2) collects evidence of user sign up and activity 3) puts it in a beautiful PDF 4) submits it back to Stripe for the banks to review Once it works I'll ask it to summarize it and share the prompt/skill here Codebase is too unique per project so prompt/skill makes more sense!

English
134
77
1.6K
1M
@Hatim
@Hatim@ItsDonHatim·
@thsottiaux Double the usage limits during off-peak hours. Keep 1x during peak, don't punish people for it, that's what they paid for. We should get something out of waiting until off-peak to work. We need to know peak hours though. This will swing the pendulum!
English
0
0
0
94
Tibo
Tibo@thsottiaux·
With Codex the there is quite the gulf in load between peak and off-peak times, and we would like to achieve more of a smoother traffic pattern as that would be a more optimal use of our compute. We have ideas, but curious what you all think we should do? Would more usage during off-peak and surge multiplier during peak times make sense?
English
792
41
1.7K
224.1K
@Hatim
@Hatim@ItsDonHatim·
@mattpocockuk @AnthropicAI Matt, I think with your style you would like Codex, don’t wait for an inferior product.
English
0
0
0
70
@Hatim
@Hatim@ItsDonHatim·
@pvncher @DroidsFi @RepoPrompt I only use xHigh, I don't do web stuff, so maybe that's why high is the only model that I trust so far, I tested medium and high, both seem like i'm using opus 4.6 x.com/mitchellh/stat…
Mitchell Hashimoto@mitchellh

Ahhhh, Codex 5.3 (xhigh) with a vague prompt just solved a bug that I and others have been struggling to fix for over 6 months. Other reasoning levels with Codex failed, Opus 4.6 failed. Cost $4.14 and 45 minutes. Full trace plus includes original issue: ampcode.com/threads/T-019c… I know this prompt is relatively bad. Honestly, our stable release is in a week, and I was throwing some Hail Marys at the frontier models to see if I could get a clean, understandable fix for some of these bugs. By using `gh`, it grabs much better context from the issue, so its not terrible. The best thing that Codex did was eventually start reading GTK4 source code. That's where I ended up (see my GH issue), and I knew the answer was somewhere in there, but I didn't have the time or motivation to do it myself. The other models never went there, and lower reasoning efforts with 5.3 didn't go there either. Only xhigh went there. I think that was a critical difference. The final fix was decent. It was small, all in a single file, and very understandable. It had one bug I identified (you can see in the trace), and then I manually cleaned up some style. But, it did a great job. Definitely an "it's so over" moment. But at the same time, it feels amazing because now our next stable release will have this fix and I was able to spend the time working on other fixes as it went.

English
1
0
0
88
eric provencher
eric provencher@pvncher·
@DroidsFi @RepoPrompt Just use high. You don’t need extra high, as it is often counter productive. I set oracle to high too, and context builder to medium. The driving agent needs to be smart, but smart enough to delegate its planning and review. It builds and checks its work.
English
2
0
1
138