I realize that Ruby is slow and all (we experience it daily), but holy crap people. I also realize that Twitter is a mega scale business, but at what point does this kind of library become a good idea?
Because it is wrong. Time is a difficult problem to solve, it doesn't move at a constant rate, the length of days and years change. You simply cannot set a constant and have it be "correct".
It may be more performant to set time ranges as constants, but you will get in to trouble unless you know exactly what you are doing. The people at Twitter who wrote the code will be aware of the trade-offs they have made, but what happens when Jo Random developer forks it on GitHub without thinking it through because "it's fast and Twitter use it - it must be good!"
For example:
T_1_MONTH = 2592000
Not all months have 30 days.
T_1_SOLAR_YEAR = 31558150
A solar year, is (roughly) 31556925.25218 seconds[1].
Just by the mere fact that these are constants documented to be in seconds, it's clear that they shouldn't be used for sensitive or precise time calculations. If you're at the point where you don't realize this, you probably aren't going to be able to use a full-featured time library correctly, either.
"Difficult for novices to use incorrectly" is a good feature for code to have, but it's not the highest good, and its absence does not mean that the code is bad.
How many time constants could possibly be in their code base? A few dozen?
Instead of writing `foo(3.days)` they are writing `foo(T_3_DAYS)` with this library. Instead, why not just create a constant `BAR_DURATION = 3.days.in_seconds` and then write `foo(BAR_DURATION)`.
You can still assign these values to semantically-named variables where appropriate, with the bonus of not having to monkey-patch ints just to define a few dozen constants.
It's benign, boring utility code, I just don't get what's offensive about it.
I like the design, but what does it offer that Twitter's GitHub page doesn't? It's just an alternative layout with less information and much less functionality.
I agree. Not only is it lacking the last time each individual repo was updated, but it seems to be ordered by how many people are watching it rather than what language it's in or when it was last updated. It looks like the only things it adds are the nice, at-a-glance repo language colors, the three last-updated repositories, and— in the case of bootstrap and hogan.js— links to the project's github site under twitter.github.com rather than its github repo page.
I was confused by what the different colored triangles meant, at first I thought it was perhaps some sort of build status indicator. Adding a key about the different colors might be nice to have.
I'm no design expert, but I find this extremely appealing. I would not mind sitting and browsing through all the different projects (which is hopefully the goal of the design). My emotional reaction to the site is very different than most Github pages, which have a reaction (possibly Pavlovian) that goes "Get back to work!"
It appears that Twitter is the source for all of these projects, which is not the case. About 14 of the projects are forks of other repositories on GitHub. Many of the project descriptions include references to their parent projects but it would be nice to see them show it is a Twitter fork and not the main repo.
Most of the "forks" are forks from Twitter employees' personal repos that were created before things got consolidated under Twitter's account. A few aren't and are called out as such. Which ones are missing proper attribution?
I just looked at the list and thought to myself, "Twitter released Mustache.js? They also released webrat? No.. that does not make much sense." and did not realize until I clicked through to those repos and checked to see if it was a fork.
I'm not suggesting Twitter is doing a Bad Thing(tm). I just think we under-appreciate those that create and release open source software and that any sort of nod of the head is a Good Thing(tm).
https://github.com/twitter/time_constants - Time constants, in seconds, so you don't have to use slow ActiveSupport helpers
Seriously?? Just look at the freaking source code: https://github.com/twitter/time_constants/blob/master/lib/ti... - Luckily, it appears that it is generated.
I realize that Ruby is slow and all (we experience it daily), but holy crap people. I also realize that Twitter is a mega scale business, but at what point does this kind of library become a good idea?