Going to do my best to share helpful updates about how to get the most from the Claude Platform: APIs, SDKs, the ant CLI and more.
If you have any feedback about existing API features you’d love to see, I’m all ears!
Pumped to be back in a position where there’s so much I’m excited to use and hype.
😍 If a request to the Stripe API fails, you'll now get a new property on the response called `request_log_url` which opens your request logs for the failed request.
I'm sad that @mint is gone so going to speed run for a few hours and try to build a web-based replacement for the features that I actually used frequently:
* Net worth tracking
* Searching transaction history
I'm working on a course to teach Ruby on @Rails basics. I'm considering recording the whole thing using a cloud IDE like @Replit so that students can start without needing to set up an env.
Good idea? bad idea?
In 2019, I really wanted to push myself to start creating screencasts. Watching videos is how I learn best, and I wanted to give back. One of my 2019 goals was to create 6 screencasts.
Since then, I've created/livestreamed/guested on/edited and/or produced 432 videos. 😱
I've been working hard to officially move into the developer advocate role @Stripe. It's official! 🎉🍾
I'm very thankful for the incredible support from @anelder, @jaakkosf, and @chris_trag!
💎Rails tip💎
Did you know Rails 7 added support for PostgreSQL generated columns? These columns will be calculated by the database only once on INSERT and UPDATE.
#ruby#rails#rubyonrails
ALT # db/migrate/20220226153929_create_orders.rb
class CreateOrders < ActiveRecord::Migration[7.0]
def change
create_table :orders do |t|
t.integer :subtotal_cents
t.integer :tax_cents
t.virtual :total_cents, type: :integer, as: "subtotal_cents + tax_cents", stored: true
t.timestamps
end
end
end
# console
Order.create(subtotal_cents: 1000, tax_cents: 200)
Order.last.total_ce...
Something I've wanted for YEARS at Stripe... a public, incremental changelog with all the additions (not just breaking changes).
Our dreams have come true!!
stripe.com/docs/changelog
Moving across the country today. NV 👉 NH. Excited for the adventure!
I pride myself on traveling light and embarrassed by how massive our checked bags are 🤪.
Today I launched the first episode of a new series where we'll build a platform for creators to sell their digital goods. The series is called (creatively!) CreatorPlatform, and I'm excited to share it!
As new episodes become live over the next few weeks, I'll add links below.
This Procfile.dev foreman tool that now comes in Rails 7 is sweet!
I've started dropping my Stripe CLI webhook listen command so that starts up by default with bin/dev
ALT web: bin/rails server -p 3000
js: yarn build --watch
stripewebhooks: stripe listen --forward-to localhost:3000/webhooks
Took a proper vacation and deleted Slack and Gmail from my phone. It's going to take a while to catch up, but I'm glad I was able to fully unplug and clear my head. 😇
Over the past 9 months I've spent a lot of time building with and learning @StripeDev Connect (API for routing payments to multiple parties - think Lyft, Shopify). I wrote down some recommendations about onboarding connected accounts with Ruby on @Rails: dev.to/stripe/stripe-connect…
Stripe runs beta programs to test new products and features all the time. I'm often asked to intro developers to product teams.
If you're open to previewing developer features and giving feedback, let's chat!
A few projects are happening now that we'd love your thoughts on.
I published a series on @ThePracticalDev w/ best practices for collecting recurring payments as a SaaS business.
The examples are written with @rails devs in mind, but the principles hold in other stacks.
The videos covering SaaS fundamentals are starting to drip out, too!
✋ I'd like to see first class support for authentication built into @rails.
@djangoproject, @laravelphp, @dotnet, even the very young @remix_run (via stacks at least), all have user authentication as one of the "batteries included."
I really haven't spent enough time explaining Stripe Connect. It's such a game changer and I'm excited to share some intro content over the next couple weeks about account types, charge types, and best practices for building a platform or marketplace.
#12daysofbooks is something my wife started a few years ago. For the twelve days leading up to Christmas, the kids each get one new (used) book. They come home from school, tear them open and read cover to cover.
We use the Jumpstart pro template which comes with an api_client generator. I had fun hacking on a couple ideas and recorded that here: piped.video/watch?v=8Rnf_-vD…
When collecting addresses for customers through @Stripe Checkout, the addy will now autocomplete!
Incredible to see the leverage you get when using Checkout. New features are available automatically without a single keystroke from your engineering team. 💪
Recording an episode about using the brand new self-serve portal today. A @stripe hosted surface that allows your customers to manage their Subs and Billing settings.
When I first saw the specs for this, I was excited. After building a demo I'm floored. Cant wait to share!
.@auth0 has really stepped up DX.
As soon as you create a new app, they ask what stack you’re using -- @rails obv. They redirect to the dashboard and have an embedded the quick start guide, links to download or view a sample on github, estimates for how long it’ll take, etc. 😍
This is huge. One of the main reasons integrations supported legacy Charges was ACH. As of today, you can rip all that old legacy code out and use ACH with PaymentIntents.
Great chance to upgrade to PaymentElement too :)
US businesses can now use ACH to debit customer bank accounts. (And it works with Stripe Checkout, Payment Links, and Invoicing!)
Bank accounts can be connected and verified instantly so your customers can pay without any wait. 🇺🇸🏦 stripe.com/payments/ach-dire…
Chris has done SO much for the community over the past many years. Between GoRails, JumpStart, RemoteRuby, his courses and support for bootcamps etc.
We really appreciate all your hard work, @excid3!
📈 Your first million is the hardest.
8 years ago, if you told me this was my @stripe dashboard I wouldn’t believe you.
Massive thank you to everyone who has supported @gorails over the years. We will continue to reinvest in the community. 🙏💖
They boys are rocking the hot cocoa stand again this weekend in Sparks, NV.
Surprisingly warm and not many customers, yet.
The 7 year old created a Stripe Payment Link and I helped him make a QR code 😂
Working on a sweet demo of building out a creator platform with embedded finance. Has support for storing and sending money and issuing virtual credit cards so creators can spend what they make through the platform.
Obv, recording videos as I go. 😅
Stripe Apps are a game changer. When @auchenberg started talking about the vision for apps many months ago, I was skeptical of what devs would build. After getting my hands dirty with a few demo integrations, I feel like I can see the future. hint: #NoCode 😇.
One optimization I reach for is collecting ActiveRecord models into a hash of some_id => #<Model instance>.
TIL: index_by
Instead of:
User
.all
.map
.with_object({}) do |user, acc|
acc[user.deputy_id] = user
end
Do this:
User.all.index_by(&:deputy_id)
This is quite possibly a turning point for SaaS. Made a little video showing how to integrate the new embeddable pricing table with @rails!
piped.video/tY8fVEoPHIc
🆕 Build your pricing page with Stripe.
Create and customize a pricing table with no code. Embed the UI in your site to instantly start selling flat-rate and per-seat subscriptions, along with trial plans.
No additional payments integration needed!
stripe.com/docs/payments/che…
Working on a series of articles and videos walking through the process of integrating recurring payments. This is the first of several articles in the series: dev.to/stripe/a-primer-for-c….
I'm really enjoying the simplicity and clean DX of @remix_run.
Here's an example showing how to setup an Action to handle @StripeDev webhooks with signature verification: gist.github.com/cjavilla-str…
Notice `await request.text()` since we need the raw body of the request for verif
Heads up for our Customer portal friends, especially those with customers in Brazil 🇧🇷.
You can now accept Boleto payments with the Stripe Customer portal. 🎫
Woohoo! Questions I hear all the time:
"Are Stripe's docs open source?"
"How are Stripe docs built?"
The tool we use to build the Stripe documentation is called Markdoc and it's now OSS!! 🎉
Today we’re open-sourcing Markdoc, the content-authoring system that powers the Stripe docs.
You can now freely build documentation, static pages, or tooling with the same tools we use: markdoc.io. ✍️
When we launched Payment Links, the #1 question I heard was "will there be an API?" and we're excited to answer today: YES!
Also, super excited to support multiple payment methods and products! 🎉
@mattling_dev made a tight video walkthrough: piped.video/N_2Il3Uq-3o.
We’ve shipped three new Payment Links features to help you sell more, faster:
🛍 Sell multiple products with a single link
💳 Support for 20+ payment methods
💻 Create payment links via the API
More about these improvements at: stripe.com/blog/payment-link…
Simple, but useful sometimes!
How to save an active record model without hitting the validations.
Keep in mind that any database constraints will still be hit so it's probably a bad idea most of the time. :D
Had a good chat last week with @excid3 about the pay-rails gem.
There are some interesting bits about building for the @rails ecosystem.
ICYMI you can watch the session here: piped.video/watch?v=aVJq2G19…
A pair of great Stripe products are coming to public beta, today. (also a powerful no-code *private* beta that I'm bursting at the seams about, but will have to wait to share)
Any guesses about whats coming?
Made this in ~1 hour with ChatGPT.
- It taught me how to generate animations with matplotlib for a given code block
- @OpenAI API (text-davinci-003) to describe the code
- lovo.ai to convert the description into an audio file
- used @descript to merge
🤯
You can now build a marketplace with no-code on Stripe using Connect and Payment Links.
Here I'll setup an Express account with no-code, then create a new product for that account (component library), and a Payment Link to sell that product and take a 10% cut as the platform.💸
You can now create prices with multiple currency + unit amounts so that customers can pay with the currency they are most likely to prefer given their location.
stripe.com/docs/payments/che…
Stripe Checkout now lets your customers adjust item quantities right on the checkout page. 📦↕️ stripe.com/docs/payments/che…
(We’re working on adding adjustable quantities to subscriptions with Checkout soon!)
I love how much work I get to skip over when using @jumpstartrails. All the benefits of rails productivity with a bunch more batteries included.
Just upgraded from a single-site license to multi-site so that I can build a bunch of these experiments this year.
Thanks @excid3 and team for your hard work on this!
Hey friends! I just moved to New Hampshire (near Manchester) and I'm excited to meet some other local developers. Definitely looking forward to running down to Boston for meetups, and curious if my network knows folks I could connect with!
I'm heartbroken to share this news about our dear friend and colleague, @ChrisGSeaton.
ALT Screenshot of a message from Shopify's Ruby and Rails Infrastructure team that includes:
Our dear friend and colleague Chris Seaton passed away last Saturday, December 3rd. Chris was an important part of our team at Shopify, and a notable figure in the Ruby community, and we are deeply saddened by our collective loss.
Chris accomplished much in his life. He completed a Ph.D., rose to be Squadron Leader in the British Army Reserve, and started a young family. Chris began the TruffleRuby project in 2013 as an intern at Oracle Labs and stewarded it into a full-fledged Ruby implementation. Chris advanced the state of the art in dynamic language optimization, co-authoring 16 publications, contributing to countless others, and establishing both the Ruby Bibliography archive of Ruby research publications and the Ruby Compiler Survey. For his efforts, he was a Ruby Prize finalist in 2016.
Chris’s papers, essays, and code contributions are currently archived at chrisseaton.com.
Love using Jupyter with Rails to experiment with AI stuff. Great for more complicated exploration that might be tough in Rails console.
Made a video a while back: Jupyter with Ruby and Rails (plus OpenAI function calling)
piped.video/WTmcdixuqcY
Ruby friends! We're working on a series of @StripeDev videos so you can learn features of the stripe-ruby client library to get started quickly. ⚡️
Today, several topics are live and more are in the pipeline: webhooks, metadata, idempotency, ++.
piped.video/playlist?list=PL….
If you want full control over the page where collecting payment details, use Stripe Elements.
If you want to let Stripe do the heavy lifting and add support for new features like payment methods and localization in more languages, use Stripe Checkout.
Headed to see my team in SF this week and we’re going to do some team recording. Traveling with all this video gear added 1 full suitcase. Camera, lenses, lights, teleprompter, etc. Hoping nothing breaks in transit! 🤞
I'm using subdomain routing for a little project and recorded this video showing how to set up subdomain routing constraints with @rails.
piped.video/T1pSiWOf0O4
We shipped new majors for the server-side @StripeDev SDKs for the new 2022-08-01 API version across all 7 programming languages that we support. We used this opportunity to improve the SDKs and pay down technical debt. 🧹
The changelogs are on github github.com/stripe/stripe-rub…
I went to a pirate 🏴☠️ wedding this weekend. It was epic.
There was a fun "1.2.3. -> ARR" call and response thing going on all weekend.
Thinking about it now, I think that's the same call and response for SaaS founders. 📈
Incentivizing my kids to play @duolingo. Told them I’ll pay $0.02 per 1 XP.
Now I want to play with the API to see if I can automate something 😅
Maybe a fun use-case for usage based Stripe Billing 🤔
Wow the DX for @remix_run Stacks is 🔥🔥🔥.
- Customized readme
- Opinions about the DB (issue for me with server side JS stacks)
- Built-in: ci and deployment, auth, API mocking, docker
- Staging + prod recommendations
Reminds me of the OG rails demo: piped.video/watch?v=1uebyGwA…
We're excited to announce the release of Remix Stacks!
remix.run/blog/remix-stacks 🥞
We've made you productive building web apps.
Now we're making you productive at starting web apps as well! ⚡
~8 months ago I tried to implement semantic search w/ Pinecone but didn't understand some pieces.
I got semantic search working in Rails with @OpenAI, @rushing_andrei's langchain.rb, @andrewkane's neighbor gem that works with pg_vector.
cjav.dev/videos/semantic-sea…
You can now configure which payment methods to offer customers directly from the dashboard -- no need to deploy new code to enable or disable payment method types. 🎉
Many customers prefer to pay with non-card methods like bank transfers, wallets, and buy now pay later.
Hoping to bring back some of that energy and excitement to the Rails community. It's still my favorite framework and the tool I'm most productive with!
Had a blast with #AdventOfCode last year. Going to solve this year's puzzles with Ruby again and will share my thought process with some videos!
I try to play with ruby methods or features I don't usually get to use, but some solutions just use tried and trusty basics.