HNHacker News
TopNewBestAskShowJobs

wakatime

152 karma · joined March 6, 2018

Dashboards for developers. Automatic programming metrics from open source IDE plugins.

https://wakatime.com/

https://twitter.com/@WakaTime

https://github.com/wakatime

submissionscomments
wakatime··on The architecture behind a one-person tech startup
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.
wakatime··on The architecture behind a one-person tech startup
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

wakatime··on The architecture behind a one-person tech startup
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...

wakatime··on Ask HN: What tangible benefits did you get from spending time on HN?
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 ;)
wakatime··on ClickHouse as an alternative to Elasticsearch for log storage and analysis
A related database using ideas from Clickhouse:

https://github.com/VictoriaMetrics/VictoriaMetrics

wakatime··on 30k Hours (2019)
> 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...

wakatime··on 30k Hours (2019)
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.

wakatime··on DigitalOcean S-1
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-...

wakatime··on DigitalOcean S-1
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.
wakatime··on DigitalOcean S-1
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-...

wakatime··on Show HN: Ad Network for Sideprojects
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.
wakatime··on Show HN: Ad Network for Sideprojects
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.

wakatime··on Show HN: Ad Network for Sideprojects
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...

wakatime··on Show HN: Time tracking with plain text files
I used a txt file and org-mode, then I built https://wakatime.com to automate my time tracking.
wakatime··on Ask HN: How do you log time?
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.
wakatime··on TimeTagger: Open-Source Time Tracker
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?
wakatime··on Ask HN: How do you handle suspicious logins?
https://wakatime.com/login uses https://developers.google.com/recaptcha/docs/v3 for this and it's worked well so far.
wakatime··on Stripe migrates Stripe Subscriptions users to more expensive Stripe Billing
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

wakatime··on Show HN: Open-source status page/uptime monitor powered by GitHub
So cool! Using this for https://status.wakatime.com now and it's working great!
wakatime··on Show HN: Buildwatch for Xcode, a Mac app to track your compile times
Pretty cool! https://WakaTime.com also tracks build times, but as an Xcode plugin instead of desktop app.
wakatime··on Show HN: Not having a Mac I copied Bother to track my freelance time in Chrome
Also check out automated reporting tools like https://wakatime.com
wakatime··on Ask HN: Any service or app to track activities with friends
There exists the perfect tool for this:

https://wakatime.com

wakatime··on 6 months in and $1k MRR: my biggest mistakes so far
Businesses already do bookkeeping as required for taxes, so categorizing is a must. We use bench.co for bookkeeping.
wakatime··on Improving my productivity as a working programmer (2017)
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/

wakatime··on Ask HN: How do you process payments?
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

wakatime··on Ask HN: How do you process payments?
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

wakatime··on Show HN: Postgresqlco.nf: PostgreSQL Configuration for Humans
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.
wakatime··on Show HN: Postgresqlco.nf: PostgreSQL Configuration for Humans
> 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.

wakatime··on [dead]
Looks similar to:

https://wakatime.com

https://timelyapp.com/

https://timingapp.com/

https://www.screenaware.com/

https://weeklytimelog.com/

https://www.rescuetime.com/

... the list keeps going.

wakatime··on DigitalOcean is laying off staff
WakaTime switched to DigitalOcean and we're loving their performance to cost ratio. Their compute droplet machines are much better than AWS ec2[1], especially if you need low-latency SSD IOPs. The only AWS services we still use are S3 and Route53, because S3's performance is better than Spaces[2]. Really hope this doesn't spell bad weather ahead.

[1] DigitalOcean Droplets > AWS Ec2 (based on our production metrics)

[2] AWS S3 > DigitalOcean Spaces (based on our production metrics)

Page 1 of 2Next →