I’ve been working on Hamwerk off and on for more than a year now, and I’m finally ready to announce it to a wider audience.
Hamwerk is a web-based system to keep track of homework assignments. It’s essentially a hyper-specialized to-do list that isn’t optimized for anything besides homework.
It has several features I’m proud of, including:
- Every assignment is tied to a class
- See assignments per class or all at once
- Specify due dates in a natural way
- Offline caching
- Moderately useful onboarding that shows off all the features
- Color-coded classes to easily see which assignments are for which classes (especially useful if your schedule is already color-coded)
- Responsive interface that provides all features on mobile devices
- Class abbreviations to show the full name of a class while allowing users to type something much shorter to specify the class
- Class schedules for guessing due dates and sorting class list
Every good project begins by scratching a developer’s personal itch.
- Eric Raymond
I began working on Hamwerk because I hadn’t found a good to-do list for my homework assignments: everything I saw either suffered from feature creep or wasn’t free, and as an unemployed high school student I needed something free. I had recently encountered the Meteor framework, and I was also looking for a good way to learn how to use it. So I began work on Hamwerk in the summer of 2013.
I took Meteor’s official Todos example and began tweaking it until it suited my tastes. I tweaked the interface, I strengthened the security, and I enhanced the code to sort and do all the other things I wanted it to do. Then the school year started, and so I had higher priorities than developing Hamwerk. I did revisit Hamwerk briefly near the beginning of the school year to add offline caching to compensate for the glitchy Wi-Fi at my school.
I had set up Intercom to get some data on my users, but I was the only person that used it, so that was a bit of a moot point.
Near the beginning of the summer, one of my friends remembered that I had shown him Hamwerk last year, so he asked me what was going on with it more recently. As he was playing around with it, I noticed a lot of problems that I hadn’t experienced when I was using it. I realized that I needed to go in and fix all those problems to make sure that it would work for me once I needed it again.
I went in and fixed a whole bunch of problems with it. (The full list is accessible here if you’re curious.) As I was fixing those issues, I realized that Hamwerk was moving towards a place where it would be useful to other people too.
So here we are. On August 21st, 2014, I published this blog post. I have no idea as I write this how well it’ll be received or how many people will use it. But I didn’t make it for other people to use; I made it so that I could use it. And use it I will. I’ll suffer minor interface annoyances along with the rest of the userbase, and I’ll rejoice when new features are added alongside everyone else.
Unfortunately, this is all I have time to write now; I have to go do homework.