2,840 karma · joined August 9, 2016
Update: I opened it with Chrome and it works fine. It’s not a “hug of death” as I initially thought.
It’s on Safari (iPhone 12 Pro iOS 14.4) that it’s always leading to the error above. In case it’s helpful for the website owners if they see this.
I started building it for myself at first, scratching my own itch.
I don’t feel the same pressure as I had with my open source projects. I’ve been adding features when I feel the need for my own use (i.e. alerting system), or customers made a good point for why it’d be useful.
Also, I don’t work on stuff that nobody requested yet. For example, you can’t even change your account email yet.
So far it’s been fun working on it, and slowly getting paying customers. But it might take 1-2 years for it to replace my day job income-wise. That’s fine, it’s just about having the right expectations, and keeping up a sustainable pace.
> Apple’s Tim Cook warns of adtech fuelling a “social catastrophe” as he defends app tracker opt-in.
But it was too long for the form on HN. If someone could suggest a better alternative please let me know.
I've built several products over the past decade outside of my day job, including non-software products. Most of them failed financially, but that's the reality of it. For every successful story you hear, there will be 100s of failures you never hear about.
After talking with many founders who "made it", most of the time those successes came after years of struggle, and continuously learning and re-inventing the product. Once the success comes, the media will tell a very glamorous story, inspiring lots of new founders too.
What has worked really well for me: "scratch your own itch". Build something you wish existed, it's much easier to stay motivated and know what to build when you are your own customer.
No list of startup ideas can give you this, be observant and constantly get out of your comfort zone for inspiration. "Comfort" is a bubble which blinds you from the problems that need solving. I mean, it's right there in the word: comfort = problem-less :)
It also makes answering this question easier: "would you pay for the product yourself"? By scratching your own itch, you're also putting yourself in the shoes of your potential customers when it comes to evaluating the value you get from the product.
Also, if you want to escape the 9-5 grind, don't build something just for the money, it won't be fulfilling down the road either. Once it's financially successful, the last thing you want is to dread waking up each day to run your company.
Regarding your point on finding time, I personally work about 2 hours per day on my projects. It's surprising how much you can get done when you are in your best shape (physically and mentally). Look out for quiet spots too, I'm most productive when there's not much else going on, either early in the morning or late at night.
The most important thing: give yourself time to relax after work, last thing you want is to burn out. Enjoy time with your family, and friends (once the COVID situation is better of course). When you’re not working on your project, be present (stop thinking about what you will do next). Really take a break from it. I cannot stress how important this is, and I made this mistake far too many times.
In short: build a sustainable model for yourself that you can stick to for the long-term. If things get complicated, cut scope. If things aren't working out, pivot or move on to another project. Above all, prioritize your wellness and quality time with your loved ones. Time is your currency, you will never get it back.
Yes, I'd like to clarify Timeflake (and many alternatives suggested) is NOT meant to be used for security.
There's an important note on the readme about this:
> Since the timestamp part is predictable, the search space within any given millisecond is 2^80 random numbers, which is meant to avoid collisions, not to secure or hide information. You should not be using timeflakes for password-reset tokens, API keys or for anything which is security sensitive. There are better libraries which are meant for this use case (for example, the standard library's secrets module).
https://www.percona.com/blog/2019/11/22/uuids-are-popular-bu...
It's part of what Timeflake aims to solve, but there's plenty alternatives too depending on your exact requirements.
Having lived in Germany for 7+ years, I noticed there’s a strong sentiment against owing money in general. Odd, considering the crazy high real-state prices these days.
People also seem to save a lot, and consume much less than in other western nations I’ve lived at, or visited.
This may be causing broad economic issues as the money is there, it’s just not moving around as much [1].
Panelbear is privacy-friendly, and has a free plan with 5,000 page views per month. Commercial use is allowed.
Full-disclosure: I’m running this service. Feel free to ask me anything :)
(To clarify, I’m not the one who downvoted your comment above)
https://news.ycombinator.com/newsfaq.html
"If a story has not had significant attention in the last year or so, a small number of reposts is ok. Otherwise we bury reposts as duplicates."
I reposted it several times over the past month. I'm sorry if that was too much, now I know that.I do mention what I’m doing to build a product, if you find it interesting, great. If not, feel free to ignore it.
But that is not at all the point of the article.
> Anyway it seems like you are deep into copying the stuff of others as Panelbear look a lot like a copy of SimpleAnalytics
I was unhappy with existing solutions, so I built my own.
I'm just trying to share the lessons learned while building a product, and if someone finds my product interesting, that's great, if not, fine too.
I don't think any other article talks about Choosing Boring Tech in the context of Kubernetes, and building a one-man SaaS.
Could you please clarify what you found odd? I'm just curious.
My argument for battle-tested tools is, if they are still being used by a significant community even if no longer "trendy", they probably solve a problem well, there's lots of help online, and the ways in which it can fail are well known.
That said, I do try some lesser known tools if they help me ship the product. I just look at them as a risk factor until I understand them better.
It'd argue that there's more documentation available than for any home-grown deployment system.
That's why I consider it battle-tested for my purposes.
Also, the post explains that boring does not necessarily mean "old". It's about using what you know best.
I'm currently still on your free tier, but would be happy to pay when I need to.
Just wanted to say, thank you!
It's not just a theoretical case, I saw this for many customers with Panelbear. Many JS frameworks use the history API in ways you may not be considering.
That's why I would recommend de-duplicating events on the client-side before sending them to your ingestion pipeline.
But that is DDoS matters aside.
I understand you may not want my advice. But anyways, here it goes :)
I have dealt with similar issues too at my full-time job. We ingest data in the billions range too, and our costs are a lot lower than what you describe.
* On the public endpoint, can you move the first point of contact closer to the edge? You want to block requests before they even reach your ingestion pipeline. If not, add a few geographical Load Balancers with the sole job of accepting requests before forwarding them to your Lambda. Divert traffic at the DNS level using a geo routing policy on Route53.
* Are you also hitting DynamoDB for every request as part of your spam system? I found it quite expensive on-demand, unless you provision capacity. We used to pay tens of thousands per month for DynamoDB in the past, when a single Redis instance would have done it. Specially if it's temporary, non-critical data such as spam detection.
* Do you batch the incoming events before triggering SQS?
* How are your networking costs going? They tend to creep up in the AWS bills too.
It just sounds to me you clearly need something in-between the public endpoint and those Lambdas. But maybe I'm missing some info. Otherwise you're going to keep paying for capacity that a "traditional" server could handle, without costing you more for each request.
If you can't fight back, and don't want real requests to be lost, put a server at the battle-front, and buffer all raw HTTP requests into a queue made for this (like Kinesis). You can then process events and recover the data at your own pace. I did this in the past, and could handle 60k+ req/s with 2 instances on AWS. I used a simple Go tool to capture the traffic https://github.com/buger/goreplay
Also, at my full-time job we use Kinesis to buffer all analytics events, it's cheaper than SQS and handles billions of data points per month. This also keeps the ingest rate constant, but you seem to already do that with your workers.
Full disclosure: I'm Anthony from http://panelbear.com/ , and I just want to offer honest help.
In the beginning I was even running everything on a one $10/mo “cluster” (cheapest DO offers). Even Postgres and Redis, all inside the cluster.
As I got more customers, I needed something less risky, so added more nodes, and moved the database out.
But to be honest even the 1 instance $10 cluster was fine.
The docs make it look really complicated, but it comes down to enabling the service on the Terraform config.
Also for app dependencies, I use bots to open PRs on my repo whenever an important security fix is published for one of my dependencies.
So it wouldn't make sense for me to use Heroku (a tool I don't have much experience with), and pay more.
In terms of use of my time, to be honest I currently spend way more time sending emails, updating docs, and on "marketing" than on devops :)
About your questions:
1) Fathom, Simple Analytics, and Plausible are great. They have done an incredible work too. Panelbear has already most (if not all) of the features you might find in their offerings. However, I do intend to dive into more advanced functionality, while keeping it simple to use. I will be talking more about it when I feel confident about what I can deliver.
2) I launched in September, but only with a few posts here and here. It was also a lot more barebones back then. I try to release a new feature each week, and traffic has been slowly ramping up. I guess I just haven't had much time to promote it, but I plan to keep writing blog posts if there's something interesting.
3) I try to limit work on Panelbear to 2 hours per day. If I want to be in this for the long-term, it's gotta be sustainable, and fun. I try to leverage most of the tools I already know, even if unconventional like Kubernetes, to help me focus on shipping rather than learning a new tool.
Glad you like the design :) I took courses in design when I was studying, but I actually struggle a lot with it. It has helped me appreciate just how much work goes into a good design.
Thanks!
We're also hiring :)
You can get really far with the managed services from your cloud provider.
If you're already familiar with Docker containers, just that already gives you plenty of options. I think every platform now provides a way to just run containers behind a load balancer with a few simple steps.
Yes, maybe it's a form of vendor lock-in, but if your worry is acquiring customers, and growing a company, Kubernetes is probably not helping you in this case.