I like leopard links for that. cmd+t type "go/" and I get all of the shortcuts I've configured.
HN user
stephen123
stephenn.com
Its google cloud sql.
What do you do to then query the data? I usually need indexes so queries are not slow. Perhaps I could insert into a staging table then bulk copy the data over to an indexed table, but that seems silly.
How were they doing millions of events per minute with postgres.
I'm struggling with pg write performance ATM and want some tips.
I think its because of btrees. Btrees and the pages work better if only the last page is getting lots of writes. Iuids cause lots of un ordered writes leading to page bloat.
That was fun. I like birds but I'm no twitcher, spent a good 10min going through getting better at recognising the sounds.
It would be fun if you could pick a country the birds are from. Australian birds sound silly.
Looks great.
What are people using to store and send retries?
Good luck, the product looks slick.
I see you have traffic coming from indiepa.ge, so I wonder which indie hacker are you and are you on twitter. I always wont to know who's behind something, particularly if im going to install their tracking tool. ;)
Yea, I find go's concurrency very error prone compared to something with futures.
I've even got a library for using futures in Go. https://stephenn.com/2022/05/simplifying-go-concurrency-with...
"completely static" has a gotcha though. I was getting segfaults yesterday because libc was removed from my docker image.
I had to add `CGO_ENABLED=0`
It seems like a waste of time to me. Wrapping errors adds context. But you can usually get enough context from stack traces.
Nice, thank you. It was only the other day I was copy and pasting from the old site. Looking forward to installing the lib and deleting some code.
Hi, Stephen from Upollo here.
When I was running a small SaaS, I had lots of users repeating my free trial so they wouldnt have to pay. There was no easy way to stop it. So I joined Upollo to build it :)
We've just added no-code integrations with Segment and Google Tag Manager, so you can find out how much account sharing or repeated trials you have in minutes.
I would love to hear what you think
Project Description: We help subscription businesses earn more by detecting and upgrading users that repeat trials or share accounts. Eg, when signing up with your work email to get another free week, or giving your password to your friend/co-worker..
What to test: Connect your app/website and see how many users are repeating trials or sharing accounts.
How to test: Sign up, follow the wizard, install our js, ios or android API in just a few lines of code.
Contact: Intercom
Love this thread btw. Thanks everyone
Is having that much L3 cache useful for anything other than gaming?
I like manually reviewing users onboarding and reaching out to them. It doesnt scale, but its a great way to actually talk to and hear from users. Once a dialog with a is open, its amazing what issues can be uncovered and solved.
How else are people winning back users who are abandoning trials.
The main difference is that reading from channels will block if its empty where Futures, return the same value.
Written more concisely.
f := New(func() Type{return t}) v := g.Get() w := g.Get()
Great project. It seems like channels are just the wrong tool for a lot of concurrency problems. More powerful than needed and easy to get wrong. Lots of nice ways to make go concurrency safer.
The problem that bothers me (and isnt in Conc), is how hard it is to run different things in the background and gather the results in different ways. Particularly when you start doing those things conditionally and reusing results.
Something like go-future helps. https://github.com/stephennancekivell/go-future
Works for me :)
I've seen lots of startup founders struggle with free tier vs free trial. We break it down to make sure your getting the most out of it.
Is it a common startup idea to open source a successful product and change the payment to be donation based?
Great post. I always feel smart when I find these kind of optimisations. Then I wonder why the compiler isnt smarter, I dont have to be.
You might enjoy an online community like https://wannabe-entrepreneur.com
Hi, At [Upollo](1) we do a lot for detecting dodgy signups and helping users to convert. IP lists are a part of what we use and we are planning on making our IP API's public in the near future.
We find IP lists alone dont really cut it though. Its easy for someone to just tether to their phone to signup.
If your interested we would love to chat :)
Hi, yea thats exactly what we do. We find people who habitually repeat trials love the product and are just doing it because it's easy.
Give people a discount to get them onboard, once they are paying they are happy to continue.
Funny, there's two threads for this story.
I've been thinking about concurrency in go code and how we can make it easier now that generics have landed.
What do you think, are you ready for safer tools?
Nice.
We are using (https://github.com/whisklabs/grpc-ts)[whisklabs/grpc-ts]. We saved %80 of our bundle size by changing from grpc-web. Those generated proto-js files were big!
I see a lot of haters here, but I tip my hat to Netflix.
Imagine if you were building a service and had trouble getting customers to pay their fair share. Netflix are making it easy for people to use it the right way. Its a gentle nudge in the right direction. They arent just blocking or banning the users. Its not everyone who has to pay more, just people who are already in the wrong. And for a discount of $3, thats less than a cup of coffee!
Is it that people are worried that they will unfairly be charged more or something?
Anyway, I think this is an interesting space. I wonder how many users are account sharing this way and how many are account sharing on other services.
What process do you have to stop this spammer sighing up again. It sounds like you already have some automation, but in this case it got flagged for manual review.