Go Desperately Needs Nil Safe Types

If you’ve worked with Go before, you’ve probably seen this runtime error. panic: runtime error: invalid memory address or nil pointer dereference The current solution is checking thevar != nil before …

Read more

Maximize your concurrent web server connections

Image Credit: Bill Jelen For production web servers, most people assume scaling means needing faster (and more expensive) hardware. Before spending more money on servers, first make sure your web serv…

Read more

Latency of DigitalOcean Spaces vs AWS S3

WakaTime’s infra is split across DigitalOcean and AWS. We use DigitalOcean Droplets for compute resources, AWS S3 to store code stats, and DigitalOcean Spaces for backups. You can find more info on th…

Read more

Using a disk-based Redis clone to reduce AWS S3 bill

Redis is an in-memory database with very high write and read speed, and a limitation that data sets can’t be larger than available RAM. It’s like memcached but supports data structures instead of just…

Read more

WakaTime 2020 Programming Stats

Happy New Year… 2020 is finally over! In 2020, more than 250k developers spent a combined 36 million hours programming, tracked with WakaTime text editor plugins. The average person spent 51 minutes p…

Read more

WakaTime 2019 Programming Stats

Happy New Year! In 2019, over 200k developers spent a combined 25 million hours programming, tracked with WakaTime text editor plugins! Programming stats for 2019. The top languages were JavaScript (5…

Read more

WakaTime 2018 Programming Stats

Let’s take a look back at 2018 from a WakaTime perspective: First, some WakaTime milestones and then a yearly overview of all WakaTime users’ programming metrics! 🎉 Growth & milestones. In 2018, WakaT…

Read more

How to Automate Responding to GDPR Data Removal Request Emails

Do you receive emails from your website users with the subject “Data Removal Request” that look like this? I hereby withdraw my consent for you to collect, process or store any personal data related t…

Read more

Flask Part 3: API Decorators and Helpers

This is the third of three posts about building a JSON API with Flask. Make sure you start with part 1 and part 2. In the first post, we used a custom base SQLAlchemy class to serialize and deserializ…

Read more

Flask Part 2: Building a RESTful API

This is the second of three posts about building a JSON API with Flask. Part 1 arrived yesterday and part 3 is arriving tomorrow. In the previous post we learned how to serialize SQLAlchemy models to/…

Read more