One of the most frustrating things with Antrhopic models is that one day it will give you PTSD on how good the output is, and the next you will struggle to squeeze anything out of it and iterate into oblivion until you get anything tangible π.
Funny how biggest Python agentic coding optimization is adding pyright strict mode and let the context contain already existing codebase exhaustive pattern matching. samples. Sit down and see the struggle of few iterations to pass the type checker and solution is mostly correct. Types usually guide it home π
Thats because OOP by default teaches to "code to the interface", so that your code becomes testable. Then we have interfaces for implementations that are rich in business logic, which you cannot ever swap implementation for. Isolating interfaces for potentially non deterministic ivocation behaviors just do the trick. Modeling data via interfaces was also tought as best practice, and that yields even worse results π
Having an open source alternative to Stripe Billing Platform is great. The ecosystem for Billing solutions is mostly closed and hidden behind Sales teams, which will try to convince you, that their platform can cover everything you need. Unfortunately you can figure out if its true or not only very late in the integration process, where edge cases will keep popping up. Stripe as PSP is still superb, but if they can be swapped at some point to a different provider, its a win for Polar.
Is there a write up somewhere about changes between Polar's billing model vs what Stripe is currently serving? Like perhaps missing Period abstractions, ability to give free time, version of Stripe's hidden prebilling functionality etc? Really interested to see if Polar's new model can make up for some Stripe's shortcomings.
@polar_sh Is the revenue recovery anywhere in the roadmap? Stripe's billing recovery is not insignificant for larger volumes and better than some competitors from what i've seen so far.
@roderik@RayFernando1337 But you can only migrate if you are lucky and all features you have been using in preview are supported in new version π Acacia -> Basil flips things quite a bit.
@johnyeo_ Have a creative marketing department, use JS Stripe Element, throw in some private preview Stripe functionalities on top of that and multiply this by another 100 π
@jakub_zalas Thing to consider: you compose a new type from a set of types called TErr. When calling a function that may yield TErr, is there any way you can recover from those errors in meaningful way? If not (for example you just show the error information), perhaps supertype will suffice.
@jakub_zalas You can also compose them in not too ergonomic way like Either<Either<MyErrorType, MyOtherErrotType>>, Something>, but that is really painful. There are not too many choices beside remapping types, unless you use like Scala3 where it can infer different types into common union.