Kamil is the creator of TickCounter, a simple online time counter. It allows you to create countdown and countup timers as well as measure time with stopwatches and egg timers.
TickCounter is hosted by PythonAnywhere, a Python-focused PaaS and browser-based programming environment.
TickCounter stats | |
---|---|
Pageviews | 4.5MM / month |
Sessions | 2.9MM / month |
Unique visitors | 1.3MM / month |
Here’s our exclusive interview with Kamil:
What’s your background? How long have you been programming?¶
I have a Bachelor’s degree in Computer Science and I am currently pursuing my Master’s. I’ve always been interested in computers, but I started coding for real when I was in high school. For the last two years I’ve been mostly using Python.
The current version of TickCounter is one of the first projects I’ve built with Django. I’ve learned a lot since then, so obviously now I can see a huge room for improvement and I plan to rewrite it in the near future.
Ah, and the most important thing. During this summer I am a happy intern at PythonAnywhere :)
What first gave you the idea to build a site like this?¶
I wanted to make some money from a website… Due to my laziness, I wanted to build something that is fully automated and can work entirely on its own. Of course, as I later found out, there is no such thing – there is always some bug to fix or a new feature to implement. However, at this time I decided that a web-based timer was what I was looking for. The user picks a date, the application does the rest. And I can just sit back and watch.
Why did you choose Django and PythonAnywhere? What do you like about them? What do you hate about them?¶
Django
Shortly after I started reading the Django tutorial, I was entirely sure that’s the way to go. Automation, simplicity, batteries included. And remarkable documentation. Everything I could ever want from a framework and more. Before Python and Django, I was using PHP and CodeIgniter. I’ve never looked back.
One warning though. It’s tempting and easy to outsource many things to external packages. However, a lot of these awesome Django reusable apps are often being abandoned after a short period of time, leaving you with a problem when you want to move on. Be careful!
PythonAnywhere
Before PythonAnywhere I was using a VPS, but I found it really time-consuming. I had to learn how to manage it, how to make it secure and efficient, I had to monitor its performance, update packages, configurations and so on. Don’t get me wrong, it’s really fun stuff, but I wanted to focus mostly on creating Django apps instead of writing Ansible playbooks.
After some research, in which I compared all major Python hosting providers, I decided that PythonAnywhere offers the best compromise between price, resources and my peace of mind. And after a year of using it I still think so :)
When did you first realise the site was getting a serious amount of hits? Where do you think they came from?¶
For a long time TickCounter wasn’t popular at all – a small user base and slow, steady growth. However, after I made timers embeddable on other websites as widgets, everything changed. Only a week after implementing this feature, the traffic charts went crazy. As it turned out, two really big websites decided to use TickCounter widgets to show their users how much time was left before some event.
From there, it went really quick. More and more people were embedding TickCounter’s widgets on their blogs, bringing new users and making them do the same. Nowadays, there are thousands of these and at least once a month there is some kind of “Slashdot effect”.
TickCounter often reaches Google Analytics’ limit of 5MM impressions per month. Currently, the most popular sources of traffic are Google and widgets. A lot of people also come from Facebook and Reddit.
What kind of traffic are you seeing now?¶
Numbers for the last 30 days:
- 4.5MM pageviews
- 2.9MM sessions
- 1.3MM unique visitors
Note that most of this traffic is widget impressions!
What did you learn from having to scale the site so quickly?¶
Well, since TickCounter is a really simple app, I don’t think it was a huge challenge. What’s more, I was naively counting on a huge success from the very beginning, so I wrote TickCounter to be as lightweight as it could be. The major optimization I did was getting rid of most database queries. Now, the vast majority of hits don’t even touch the database. Thanks to this, I’m able to handle this traffic with a $12/month PythonAnywhere account :)
Do your boss / college tutor / parents / children / significant other know about the site?¶
My parents and a few of my friends know. So does my boss - that’s probably one of the reasons why I got this internship :)
Do you have any advice for other aspiring web developers?¶
Hm, I consider myself to be the one who still needs to learn a lot and get some advice. But I can think of two things. First, if possible, consider creating a widget of your product. For TickCounter it was a milestone. Maybe it can bring you some users too?
Another thing. If you are working on the project on your own, you don’t have to do everything from scratch. Try to outsource some work to external services. That’s exactly what I did when I switched from a VPS to PythonAnywhere. I could focus on developing my project, instead of configuring the server.
Do you have any ideas for what to do next with the site? What about other projects?¶
Sure, I have a really long list of new features and improvements for TickCounter and I am going to create a brand new version of it soon.
Other projects, hm. Sure! Just need to find some free time..