News for hackers. Stuff that matters.

wakatime

Re:The architecture behind a one-person tech startup on Thursday April 08, 2021 @01:19PM (#26741385)
He's using Django, so most likely Django Migrations which is built into that framework. If you're using Flask, you're probably using Alembic with SQLAlchemy. Those are the two main ways to handle schema migrations in Python.
Re:The architecture behind a one-person tech startup on Thursday April 08, 2021 @12:48PM (#26740997)
I really enjoyed your post too! I would be interested in more details around the "100s of hours". I want to try a k8s setup like yours, but after investing those 100s of hours into my Flask setup it's hard to justify spending that time again for something else when this already works.

Also interested in the costs for your setup. My costs are in my other comment [1].

[1] https://news.ycombinator.com/item?id=26740911

Re:The architecture behind a one-person tech startup on Thursday April 08, 2021 @12:41PM (#26740911)
My one-person SaaS architecture with over 250k users:

* Flask + Flask-Login + Flask-SQLAlchemy [1]

* uWSGI app servers [2]

* Nginx web servers [3]

* Dramatiq/Celery with RabbitMQ for background tasks

* Combination of Postgres, S3, and DigitalOcean Spaces for storing customer data [4]

* SSDB (disk-based Redis) for caching, global locks, rate limiting, queues and counters used in application logic, etc [5]

I like how OP shows the service providers he uses, and why he decides not to self-host those parts of his infra. Also, there's a large up front cost involved for any stack (Rails, Django, k8s). I'd be interested in a more detailed writeup with configs, to try out OP's auto-scaling setup. My configs are linked in the gist below [2] for my non-auto-scaling Flask setup.

I spend about $4,000/mo on infra costs. S3 is $400/mo, Mailgun $600/mo, and DigitalOcean is $3,000/mo. Our scale/server load might be different, but I'm still interested in what the costs would be with your setup.

[1] https://wakatime.com/blog/33-flask-part-2-building-a-restful...

[2] https://gist.github.com/alanhamlett/ac34e683efec731990a75ab6...

[3] https://wakatime.com/blog/23-how-to-scale-ssl-with-haproxy-a...

[4] https://wakatime.com/blog/46-latency-of-digitalocean-spaces-...

[5] https://wakatime.com/blog/45-using-a-diskbased-redis-clone-t...

HN is part of the reason I moved to SF back in the day and started my company. My company is the reason I met my wife, because she saw me wearing a t-shirt I made to promote it while walking down the street in SF. You could say HN is the reason I met my wife ;)
A related database using ideas from Clickhouse:

https://github.com/VictoriaMetrics/VictoriaMetrics

Re:30k Hours (2019) on Thursday February 25, 2021 @11:15PM (#26271305)
> Time in IDE/Editor is easy to quantify, time thinking about solving the problem is not.

That's the key. To find the time thinking just fill in the gaps between the time spent coding. For ex, the GIF in this post https://wakatime.com/blog/27-fill-the-gaps-in-your-coding-ac...

Re:30k Hours (2019) on Thursday February 25, 2021 @09:45PM (#26270911)
These estimates are time spent *thinking* about programming. The average dev doesn't get to code a full 8 hours per day. On average from WakaTime data, devs spend only 1-2 hours per day actually typing code. With 261 working days per year, that would take 26 years to reach 10,000 hours.

For example, the total combined hours spent programming the wakatime.com website over the last 7 years was 4,035 hours.

10,000 hours assumes an 8 hour workday. For coding time like WakaTime measures (actual hands on keyboard time), the goal should be 2,000 hours.

Re:DigitalOcean S-1 on Thursday February 25, 2021 @01:12PM (#26266040)
Yep, same experience with Spaces here. That's why we use Spaces for backups only, since it's very affordable and backups don't need millisecond latency.

https://wakatime.com/blog/46-latency-of-digitalocean-spaces-...

Re:DigitalOcean S-1 on Thursday February 25, 2021 @01:09PM (#26265998)
Maybe they have support tiers? Every time I created a support ticket I got a response within an hour from a technical person. Their support responds much faster than AWS in my experiences.
Re:DigitalOcean S-1 on Thursday February 25, 2021 @01:04PM (#26265921)
Nothing is perfect. We use DigitalOcean Droplets because they're more bang-for-buck than AWS EC2 instances, especially if you're doing a lot of disk IO. However, even though it's more expensive we use AWS S3 instead of DigitalOcean Spaces because it's faster, more reliable, and replicated automatically. I wrote about these decisions recently here:

https://wakatime.com/blog/46-latency-of-digitalocean-spaces-...

Re:Show HN: Ad Network for Sideprojects on Sunday February 21, 2021 @08:06PM (#26219323)
It's the same JavaScript running, just hosted on your domain instead of externally. The JS shouldn't support eval, which is unfortunately a common way to display ads in networks with embedded external scripts. Version updates can go through your review too.
Re:Show HN: Ad Network for Sideprojects on Sunday February 21, 2021 @06:09PM (#26218300)
You can render client side too, the key is no external JavaScript is being trusted to run on the page.

That ofc means the common practice of advertisers pasting a JavaScript snippet, the network doing a review process, then rendering that snippet as an advertisement on some property would not be allowed on this Ad Network.

Re:Show HN: Ad Network for Sideprojects on Sunday February 21, 2021 @06:01PM (#26218237)
I'm very selective with the external scripts allowed on my websites. Ad networks are notorious for running malicious JavaScript on popular sites like NYTimes[1] and Yahoo[2] home pages. Any plans for an API so sites can receive ad content as JSON and display it without ever executing your external JavaScript? I might consider it for future side projects if I could npm install your client library instead of including an external script tag.

[1] https://www.nytimes.com/2009/09/13/business/media/13note.htm...

[2] https://www.washingtonpost.com/news/the-switch/wp/2014/01/04...

Re:Show HN: Time tracking with plain text files on Monday February 01, 2021 @08:32PM (#25996521)
I used a txt file and org-mode, then I built https://wakatime.com to automate my time tracking.
Re:Ask HN: How do you log time? on Monday January 18, 2021 @12:15AM (#25818420)
I use https://wakatime.com to automatically track the project and task I'm working on. It's a plugin in your IDE, so it can detect your project.
Re:TimeTagger: Open-Source Time Tracker on Wednesday January 13, 2021 @10:22AM (#25763054)
What I really care about is the time it takes to input tasks. The demo app link has a record button with a difficult to use form. Is there a faster way to start/stop the timer?
Re:Ask HN: How do you handle suspicious logins? on Tuesday December 29, 2020 @09:50AM (#25570199)
That's why we integrated with 4 payment providers. We use a common Quote object that knows how to "apply" itself to subscriptions on all 3 (GitHub is inverse) providers.

1. Stripe

2. Braintree

3. Coinbase Commerce

4. GitHub Marketplace

https://news.ycombinator.com/item?id=22177088

So cool! Using this for https://status.wakatime.com now and it's working great!
Pretty cool! https://WakaTime.com also tracks build times, but as an Xcode plugin instead of desktop app.
Also check out automated reporting tools like https://wakatime.com
There exists the perfect tool for this:

https://wakatime.com

Re:6 months in and $1k MRR: my biggest mistakes so far on Friday March 06, 2020 @09:14PM (#22509263)
Businesses already do bookkeeping as required for taxes, so categorizing is a must. We use bench.co for bookkeeping.
Re:Improving my productivity as a working programmer (2017) on Thursday February 06, 2020 @11:59AM (#22257758)
While building this developer dashboard[0], improving productivity has been one of the main goals. However at the individual level, it still comes down to eliminating distractions, prioritization, and other things outside the scope of a dashboard. This article gets individual productivity right, which is high-touch and specific to each person.

[0] https://wakatime.com/

Re:Ask HN: How do you process payments? on Wednesday January 29, 2020 @01:31PM (#22184126)
Not sure, but I know other companies use multiple payment providers too usually for redundancy. We would use Stripe for everything, except Stripe doesn't have the ability to accept BTC or PayPal.

For the same reasons as rwieruch's comment above, some international customers prefer PayPal: https://news.ycombinator.com/item?id=22178646

Re:Ask HN: How do you process payments? on Tuesday January 28, 2020 @10:36PM (#22177088)
We[1] use Stripe[2], Braintree[3], Coinbase Commerce[4], and GitHub Marketplace[5].

We built our own quote logic including prorating, etc. then apply that as recurring subscription using Braintree if customer wants to pay with PayPal, or Stripe if customer wants to pay with credit/debit card.

Breakdown by processor:

73% Stripe

26% Braintree/PayPal

0.7% GitHub Marketplace

0.3% Coinbase Commerce

[1]: https://wakatime.com/

[2]: https://stripe.com/

[3]: https://www.braintreepayments.com/

[4]: https://commerce.coinbase.com/

[5]: https://github.com/marketplace

You should blog about your learnings, would love to read more about "PG performance configs you should look into". We're probably leaving too many configs at default values just because we didn't know they were worth tweaking.
> We don't believe much in such static tuning recommendations. Our experience tells us that they can do as much good as bad.

PGTune just automates the RAM + Connections math you would normally do manually. PGTune is a good starting point, but you still need to know what each config does and configure beyond PGTune. Nobody is saying PGTune does your configs for you, it's just automating what we always did manually before.

Older »