Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Show HN: CodeHalf – Write Code Everyday, new design and new features (codehalf.com)
87 points by efexen on Dec 28, 2015 | hide | past | favorite | 52 comments


(Not commenting on the site/feature directly just the idea.)

As a person who wrote code for a year every day working on a game in my free time, you'd be surprised how much progress you make even if only putting in a bit of time every day. Or maybe you wouldn't be surprised. After all, 365 days * 0.5 hours / (40 hour/week work week) = 4.5 work weeks. So about a month of "full time work" that you would never have if you didn't invest in that half hour daily. Pretty neat. Good way to master a skill in your free time even if you're one of those people that says "I don't have time."

After completing the 365 day streak I even did a little informal "AMA" on reddit where me and some other people suggested their tips on staying productive when coding every day: (https://www.reddit.com/r/gamedev/comments/37i77h/ive_been_wr...)


Due to context switching costs, I'd think the progress made working 30 minutes a day would be nowhere close to what you would achieve if you did it all at once. For me, I think my output would be closer to 2 weeks worth of work than 4.5...


OTOH full work days involve fatigue, which you won't run into only working for 30 minutes. And there's a good amount of context switching that goes on at the workplace as well.


I think this is where planning and leaving notes for yourself comes into play. If you can spend one hour long span planning out what you're going to work on for the next 6 days of 30 minute sprints, it should lessen the time loss due to context switching. That's what I found worked best during my year of writing code every day. I would sit down on a weekend day and plan out a bunch of bite sized tasks. That way I could look at the list, pick something that could be done in 30 minutes without much thinking and get right to the task of writing code.

(That being said, I didn't restrict myself to 30 minute sprints during that year and there were certainly things I did that either could not be done in 30 minute sprints or would require quite a bit of extra planning to be able to be broken up into subtasks and done in 30 minute sprints.)


If you don't do it in-between your other work you can avoid the cost of context switching. And consider that you spend a lot more time refining your ideas (whether consciously or not), so I bet you'll be a lot more focussed during those 30 minute sprints than on average during your work days.


Precisely! ;) Thanks for the link I'll read through it, might have features hiding in the comments :)


Nice work! It would be cool if you pulled my commits for the day and showed them in the log. I experimented with a similar idea (https://github.com/samertm/githubstreaks), and it's a lot of fun to see a detailed breakdown of your commits and the commits your friends make.


Thanks for the comment! I've got a plan of integrating with Github, just trying to decide how it should work as I wouldn't want my commits from work showing up which are on the same github account.

Do you think it'd work well if I implemented something to allow picking a commit for a daily entry or would you prefer more automatic tracking?


When I looked into this, I used the GitHub Events API to get all of the events the user took[0], and then filtered by Push Events. Push Events consist of commits to a repo, and I used the GetCommit Repository API [1] to get more metadata for the commit.

If you save the ETag from the Events API and pass it back in your next request, you'll get a 304 response if the data hasn't changed and it won't hit your request limit.

You'll want to poll the user's events periodically, and store that data in a database. It's too slow to ping GitHub's API every time, because there isn't a single API that provides exactly what you need.

Check out FetchRecentCommits[2] for how I hit the GitHub API, and UpdateUserCommits[3] and CreateCommit[4] for how I extract the data from the commit and store it in the database.

Good luck! Keep me updated, my username is in my profile :)

[0] https://developer.github.com/v3/activity/events/#list-public...

[1] https://developer.github.com/v3/repos/commits/#get-a-single-...

[2] https://github.com/samertm/githubstreaks/blob/master/model.g...

[3] https://github.com/samertm/githubstreaks/blob/master/model.g...

[4] https://github.com/samertm/githubstreaks/blob/master/model.g...


I think automatic tracking of public repositories for now would do ok ( if you can check on that). I wouldn't do "picking commits", because people mostly won't do that.

Nice project!


Thanks for the feedback, glad you said tracking public repositories as that's something I thought might work well as mostly peoples work is in private repos


If you would go for private repos, i think it would be harder.

Public git repositories on github are an alternative for your resume ( that's good for your project). But private repositories could also mean gitlab integration and etc.. :)


I honestly don't know what work is involved, but if you integrate with Github, please do the same for BitBucket. BB gets less visibility because most people use it to keep their repositories private, but it's used by a huge amount of people for real work and personal projects.


I was just collating some of the feedback from this and right next to Github integration I wrote BB integration :) I use BB a lot as well personally to keep repos private. Thanks for the feedback


Maybe come up with a git hook that posts an update to your API on every commit/push?

This way it would be independent from GitHub (we're not using GH at work for example).


Perhaps automatic tracking could have the option to exclude certain repos?


Sounds like a good idea, need to figure out how the management of that would work though without being a PITA ;) Thanks for the idea, much appreciated!


Or how about the user explicitly adds the repositories they want to have shown, or provides a pattern they want tracked?

For example: "Track all my GitHub repositories matching /^codehalf-*/


Or organisations.


Awesome work. But I would prefer log-in/registration with own email/password combo. I hate 3rd party logins.

One alternative would be, and what worked for me, is a simple old school pomodoro tracker:

1: get pomodoro app/timer like http://tomato-timer.com/ 2: aim for 3 or so pomodoro sessions/day for your project or new thing you want to do or to learn 3: profit

Nice thing about pomodoro technique is that the distraction is already included. You focus 25 minutes and then have 5 minutes distraction time. It adds up for motivation if you know that you can have a break after a short perdiod of time.


Hey, thanks for the feedback it's much appreciated!

Already planning to add the email/password login option as it's been requested quite a few times.

I've thought about app/widget/thing for doing time tracking and pomodoro style but decided against it right at the beginning, I'll keep thinking about it and see what feedback I get from others regarding it.


Also consider using passwordless authentication instead, see http://passwordless.org/


Just wanted to update you quickly to let you know I've now added registering & logging in with email/password combo :)


"Everyday" is an adjective meaning "commonplace, ordinary, common", etc. I think you mean "Write Code Every Day".


Oh my I think you're right, silly me, I'll put this on top of my todo list! Thanks!!


There isn't too many features/bug fixes that I can do in less than one hour (even w/out distractions), so in my case it should be a 60 to 90 minutes session. Also, what I do to get me 'in the zone' is a ritual: close email/social apps. Silence phones. Close my eyes for a few seconds planning what I have to do. Start coding. Maybe you should find a way to implement guided rituals before the session starts? Just a thought.


Hey thanks for your feedback, you can of course do longer than half an hour, just I think half an hour is a short enough time to squeeze in and it keeps up a good habit :)

Thanks for the details about getting in the zone, might well include some tips on the site later to help people get in the zone quickly to get the most out of their session


It would be cool if there was a complementary app that goes like this:

It teaches you using a hands-on approach about coding/algorithms/sys admin from beginner to expert level. Then it offers you a bunch of roadmaps on what exercise you should do next to build on the current skills you have.

Even more it would be cool that it would find the weak spots on your current skills and allow you to go back to previous exercises to improve that skill.

Wouldn't that be helpful?


Hey, that's a cool idea but probably a little ambitious one for now.

I've got a plan of adding themes as a more social element where bunch of users can sign up to a themed week during which they would all work on improving a particular skill whilst sharing helpful resources and being able to help/ask questions from each other.

Do you think you'd find that helpful?


That sounds interesting. You might want to consider increasing the time frame to a month to 3 months. IMHO,a week is too short to go deep into any topic.


Thanks that's a good point, might add different lengths so for themes that are more of an overview of a topic or a shallow topic it could be a week or two and for more in-depth topics several months


Signed up because the idea is interesting but the UI was really confusing.

I would spend a bit more time polishing how you direct users through the flow.

Ask yourself: "What are people going to be doing with this web application daily?" and focus efforts on making that as simple as possible.


Hey thanks for the feedback! I was wondering actually whether it was intuitive or not, I guess not then ;) Would you have any recommendations on how to make it easier to use?


Unfortunately no, I still don't know what the app even does. Time to polish the UX! :)


Easy to understand UI, imho. It'd be nice to be able to add notes for days in the past, in case you forgot to fill in one day. Also, is it possible to edit a topic once it's created?


Hey, You'll be able to add notes for previous days but not for days prior to when you signed up, sorry I don't think this is particularly clear at the moment and maybe I should remove this restriction from the UI.

Currently it's not possible to edit topics, high up on the todo list though! :D Thanks for your feedback, muchly appreciated!


On an iPad 2 (iOS 7), the sign up button seems to be missing - I can't find it anywhere on the page.

Also, it would be helpful to have some screenshots or a video demonstrating the product on the homepage.


Hey thanks for the feedback, there's quite a bit left to do for mobile and tablet layouts, will make sure to address this.

I've thought about adding screenshots or a short video on the homepage some time, good to hear you agree, might have to bump it up on my todo list ;)


Hm, no email/password login? Is there any technical reason behind that? I might be an oldschooler, but I find websites, that require 3rd party credentials off-putting.


Sorry no technical reason just haven't got around to it yet, didn't know what the general preference was now, will add it shortly. Thanks for the feedback


Just to give an alternative point of view - I prefer third-party login whenever it's available, so the current flow works for me. I'm not saying you shouldn't add first-party login, just don't get rid of third-party login in the process.


I don't say that 3rd party logins are bad and should be removed, I just hate when website assumes that "everyone has Facebook, Google, GitHub, <insert some other trendy site here> etc." We fought long and hard to get rid of vendor locks as much as possible, why go back to these dark times?


My problem is that I can easily create account and store it in my Keepass, however when there are only 3rd party logins I have no idea which third party login I chose to use for a specific site. This sometimes means trying to authenticate with multiple third party vendors and sometimes accidentally creating a new account as I logged in with a wrong one.


Good points there and having done that myself as well I can definitely sympathise with you. Working on the email/password auth as we speak ;)


Hey just wanted to quickly update you and let you know that I've now added ability to login with email/password :)


Couldn't find many features to try out.

If I need to see how much I have coded in a day/week/month, I use Wakatime. It silently keeps track of all the programming I do.


The idea is good but the UI is kinda confusing. Adding a tutorial page to guide new users through this will be helpful.


Thanks I'll see what I can do, maybe one of those overlays on first visit?


Reminds me of https://wakatime.com/


That's cool. Will you send out nagging emails/messages if I miss out one day?


No I won't, will be adding opt in reminders later. Thanks for the feedback


Oh, I didn't mean that in a negative way. In this case nagging emails would be a feature :)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: