In the northern suburbs of Chicago, we often hear helicopters circling. A gardener was taken on my block. The home owner told the masked agent he didn't have permission to be on his property, and the agent pointed a gun at him.
If you suspect anything is exaggerated, you can look to dozens of videos posted online of how these people act and speak. They roll in caravans of unmarked SUVs. Last week they rolled up to an elementary school (https://www.reddit.com/user/rubinass3/comments/1ol319f/ice_d...).
Things feel bad to me in a way (I suppose I'm fortunate to be able to say) they haven't until now. I normally can see the "other side" of issues but I can't fathom how this is what anybody wants. I'm angry and I'm sad.
Because homeless people wearing their company’s merch, in your minds, would further degrade the company’s image? Or something else? I’m an anonymous internet stranger, but I invite you to think about what you’re actually saying, and whether it reflects true views you wish to hold.
Similar issue with that Abercrombie & Fitch CEO who only wanted "cool kids" to be seen in his clothes, so someone made sure to give donated A&F clothes to the homeless:
Do you believe that homeless people do not face negative stereotypes and discrimination and suffer from poor image in society? Perhaps take some time out to reflect on that mindset some day.
You are missing GP's specific grievance and how it relates to his revenge. You are welcome to find schadenfreude distasteful, I wouldn't even disagree, I'm not even sure GP would disagree, but I'd ask that you join me in an empathy exercise first so that you can at least understand what you are wagging a finger at.
Let's walk through a fictional scenario. Imagine that you are on a team that is overloaded and behind schedule -- not because you suck, but because management is a bit green and has let their expectations run considerably ahead of reality. In a misguided attempt to help, management goes out and buys some highly paid consultants without vetting them (management is a bit green, remember?). The consultants frame you as incompetent and themselves as saviors, but in actual fact they consume time and money and contribute nothing of value. They turn out to be a liability, not an asset. Management doesn't understand this and doesn't want to understand it so the consultants stay hired. Those consultants earn more than you, are worse than useless, and yet still have the gall to go behind your back and talk shit about you. Assholes!
This is the headspace in which seeing the consultants lose their job feels like long overdue cosmic justice. They didn't just pass you on the racetrack of capitalism, they sliced your tires as they went by -- but now they are spinning out. Is it so very wrong to enjoy the sight? Suddenly, an evil idea tugs at the back of your mind: you have some of their merch. You could commemorate the occasion. So far, they have been the bad guy... but now it's your turn.
----------
I tend to agree with you and find the revenge part distasteful, but only due to the collateral damage. I'm sure there were people working for Highly Paid Consultant Company who didn't deserve to lose their job, walk out, and see a living extrapolation of themselves into homelessness and failure, and the homeless don't deserve to be used as props representing failure. However, the asshole consultants this was targeted at? I tend to suspect that if I were to learn all the details I'd agree with GP that they earned this one.
As you might have guessed, I've experienced something akin to this story myself, except that the asshole consultants in my story got away scott-free. In both cases they got to keep their ill-gotten gains. It's not like the money was clawed back, so the scales still tip in their direction. If it's wrong to occasionally indulge in fantasies of karmic justice... then today, I'm in the wrong. Thanks for sharing, GP.
We search for universal, objective, pithy summaries of messy, complicated situations. Both of the following seem to be true:
1. It would be effectively impossible for someone from a disadvantaged background to start Amazon, Microsoft, or Facebook.
2. Bezos, Gates, Zuck are extraordinary business people who achieved what 99.9% of their peers would be unable to achieve from the same starting point.
I'm not sure why we keep debating whether these guys are good or bad, impressive or not, as some sort of universal truth.
Sorry I couldn't figure this out from the docs, but Stripe data is queried "live" from Stripe, right? The abstraction is great, but won't this lead to unexpected N API calls when joining across my domain + Stripe?
> unexpected N API calls when joining across my domain
I'm not sure why they would be unexpected (because it should displace some other API calls). I'll hazard a guess that you're worried about fetching the same data multiple times? If that's the case, then yes, you should materialize the data into your database.
The Wrapper itself handles pagination, but you'd also want to make sure you're using filters & limits in your SQL statements.
Thanks for the reply. I'll flesh out my thought process in case it's helpful. My immediate reaction was excitement about the abstraction. An example use case is joining my users to their corresponding Stripe Customers in SQL. The kinds of queries I can reasonably write depend on implementation details of the connector. For example, if Stripe has a bulk customer lookup (list of customer IDs -> Customers), and the connector uses it, I can estimate I'd be able to query on the order of 500 Users at a time in a performant way. But if the API only supports looking up one customer at a time, that 500 User query kicks off 500 API requests, which isn't going to work.
You're right -- it's not unexpected -- maybe more like a leaky abstraction.
I understand now, and this is a similar problem to how some GraphQL engines work
I imagine you want to do something like:
select
*
from
public.users join stripe.customers
on
public.users.stripe_id = stripe.customers.id
limit 100;
Then yes, it might make 100 consecutive calls to your stripe account. There are 3 options here:
1. Materialize your customers into your database (like I mention in the previous comment)
2. We build a "smart" FDW, so that it parses your query and fetches the Stripe data first, then performs the join.
3. Use a CTE:
with
customers as (
select * from stripe.customers
),
users as (
select * from public.users
)
select
*
from
users join customers
on
users.stripe_id = customers.id
The only option that Postgres's materialized views give you is to "refresh" the view, meaning: re-run the query used to define the view, fetching an entirely new dataset, and use that to replace all the existing data in the view.
There's no facility for deltas, or any other way of propagating changes.
Edit: And to answer your original question, yes you can absolutely base the materialized view on data obtained from a foreign table.
Yeah, this was the approach I was imagining before someone mentioned Materialized View (proper).
Once I heard those words mentioned, I began to imagine what sort of interaction with a foreign data source's operations log FDW might have.
Of course, and depending on the foreign data source, you could probably even expose an operations log to Postgres via a FDW by defining it as a foreign table... Effectively opening up the possibility of eventually consistent replication. Lots of data stores' operations logs are accessible data collections/tables anyways.
It's funny to observe the tide shift against Stripe on HN in recent years. I think they are a phenomenal, once in a generation company. Their APIs are beautiful (still, even though fewer people agree these days) and the use cases that can be built upon those APIs are endless and amazing. I always felt the pricing was a steal for what the product delivered.
Their support, on the other hand :(. ! Maybe it will get better with advances in LLMs, because I'd be shocked if I was ever talking to a human.
This looks cool. Congrats on the launch and progress so far!
As one piece of feedback, the docs could be better. For example, at https://docs.tryvital.io/api-reference/data/workouts/#stream, I see "Get Daily Activity for user_id", but the endpoint seems to actually return time series data for a single workout. I see a bunch of oversights of this flavor.
Similarly, I'm not sure how pagination works or should work. In one list query, I see a result set of size 100. I'm not sure whether this is because only 100 items were pulled from the provider, or whether I can see more using pagination. Maybe this is in the docs, but I haven't seen it.
It would be good to have some provider-specific documentation to answer questions are set expectations around things like 1) how much historical data is available 2) details about the integration and its stability. For example, I assume with Peloton you are logging in with my credentials and using their internal API. Is this against their terms of service? Is there a risk of this breaking if they change their internal API, which obviously doesn't have the same governance considerations a public API would?
Thanks for trying out the API. You're right our docs need some improvement here, we write these from the backend and generate them using our own custom swagger parser. We'll fix these asap! We've started adding provider specific docs like this here, https://docs.tryvital.io/wearables/providers/Guides/Freestyl... we'll be adding the rest as soon as possible.
This is why aggregating and standardising the data is hard, some API's are not public and in some cases we use credentials to generate access tokens which we then use to query the API, since we are aiding people in accessing their own data, we take a stance that people have a right to their own health data.
If the internal API does change there is some risk of breakage, we have built a tonne of monitoring around this to ensure that we stay up to date with this and react accordingly.
I find it hard to evaluate "no code" as a monolith. In some cases, if you can't think like a programmer, the fact that your "code" doesn't look like "code" isn't going to help you. However, (having clicked through to your twitter), I am familiar with Courier, and agree it is brilliant[1][2].
[1] No affiliation
[2] I've built complex notifications systems myself and think Courier is a beautiful solution for coders and non coders alike.
Yes, if you are using Kable for authentication, this is a larger problem but there are some fallbacks in place as well.
Our libraries cache the valid (and invalid) keys we process. So if Kable goes down, users with steady traffic (whose keys remain cached) will remain unaffected. Users who have not yet had a key validated by Kable, though, will experience problems while Kable restarts.
We have redundancies in place to ensure that Kable downtime is minimized. Obviously no system is perfect, and outages can't be avoided 100%. But we employ all best practices around redundancies, rolling deployments, and rapid response to minimize the impacts of downtime
If you suspect anything is exaggerated, you can look to dozens of videos posted online of how these people act and speak. They roll in caravans of unmarked SUVs. Last week they rolled up to an elementary school (https://www.reddit.com/user/rubinass3/comments/1ol319f/ice_d...).
[Here](https://x.com/LongTimeHistory/status/1986936912134000877) is a particularly hard to watch video of ICE tackling a nonverbal man.
Things feel bad to me in a way (I suppose I'm fortunate to be able to say) they haven't until now. I normally can see the "other side" of issues but I can't fathom how this is what anybody wants. I'm angry and I'm sad.
If there's a silver lining, the community is fired up. The mayor of Evanston talked with an awesome woman who was detained while peacefully protesting (https://danielbiss.substack.com/p/daniel-biss-talks-with-det...). It's a weird and sad time.