It's not a bug...
...it's a feature!
Seven thousand leap year day babies have revolted against the Toys R Us giraffe, skewering Steve Ballmer along the way. Peeved that Geoffrey the Giraffe never sends birthday cards to kiddies born on February 29, the international Honor Society of Leap Year Day Babies recently unsheathed free software capable of destroying the …
...it's a feature!
"How do you explain to a five-year-old, that they won't receive a birthday card from Geoffrey over at Toys R Us this year, because the Toys R Us computer has no way to recognize their birthday?" asks Society spokeswoman Raenell Dawn.
Well, surely anyone who was born on Feb 29th will not have a birthday until they are four, and then again when they are eight. So why would they expect a card when they are five?
Or alternatively, anyone born on Feb 29th who had had 5 birthdays, would be 20 years old. Now why would a 20 year old expect a card from Geoffrey the giraffe?
If you're born on 29th Feb, does that mean you only age 1 year every 4 years?
What do the do about celebrating their birthday every other 3 years?
I can't believe that these site's can't fix the leap year bugs. I mean I'm really not very good at writing shell scripts on Linux but I still managed to bodge up some code to detect leap years.
Worrying that a leap year 5-year old would want a giraffe from Toy R Us.
"How do you explain to a five-year-old, that they won't receive a birthday card..."
I think it's probably best if this guy doesn't try, I'm not convinced he understands the concepts involved...
'But that bug has been in our software for 20 years, it has to be in the standard.'
explanes a lot about microsoft
I hate to write an "is-it-a-leap-year" routine recently, and after 10 minutes research on the internets, I found I could do it it about a dozen lines of code. It's not trivial, but neither is it atomic physics. There's no excuse.
I'd like to see a transcript from THAT meeting!
I think Ballmer is as mad as everyone else, however, the Lotus bug is pretty well documented and to say "well he says so, so it must be true". Waste of space, the original article was interesting enough, but he's obviously thrown in that MS complaint to get publicity, and you've fallen straight into it.
Today is my mum's 21st birthday. I don't suppose she gets a card from Geoffrey?
..between how many 'years old' you are and how many birthdays you have had.
A person born on Feb 29th may have had five 'genuine' birthdays but as they have been alive for 20 years they are 20 years old, not 5 years old.
And no Bill, it's not a feature or a standard; it's a bug. Bastard.
Sorry but I'm grumpy this morning.
Your mums "21'st" birthday?
Maybe you should be getting the card from Geoffrey :-)
Surely no-one with more than three brain cells actually answers online questions with the truth? More likely they're actually some kind of front organisation devoted to increasing the birthday-lie-space for us all. Brave heroes of the net - I salute you!
Alien because they're out to get us....
' And Microsoft said 'But that bug has been in our software for 20 years, it has to be in the standard.'" '
As this is a leap year related bug, it's only been in there 5 years!
That one there with the pocket protectors and the leather patches on the elbows.
...Geoffrey wont be sending you a birthday card like the other boys"
"But why mummy? Why does Geoffrey hate me?"
Ah, picking on the kids in school who never got a card from Geoffrey, either because their parents didn't sign them up or they were born on 29th Feb., although of course those kids are now murderers.
Funny how childhood trauma does that.
Just put your damn birthday as Feb 28th or March 1st. If you're that stubborn that you absolutely must put the date as Feb 29th, I assume that you refuse all presents, birthday drinks etc. offered in any year that isn't a leap year, because "the 29th February is my birthday and it doesn't happen this year, whhhuhhhh."
I mean, ringing up YouTube to complain you can't put your birthday as February 29th, for god's sake? I might be wary about shifting my birthdate if I was opening a bank account or getting a driver's licence or something else financial/legal, but with YouTube it's just a sodding age check, the month and day fields are totally irrelevant. With those forms I leave the month and day as January 1st anyway because a) privacy and b) four fewer mouse clicks.
I'm sure leap year births get enough tiresome jokes along the lines of "so you're actually only (age / 4), no booze for you then" throughout their lifetime that they really don't need people like this making it easier.
(It may be easy to talk - although if I'd been born a leap year, I would myself have been born on the 29th - but I'm fairly sure that if I had been born on the 29th, I wouldn't join a special society. As there are likely to be *quick fag-packet calculation* over 40,000 people in the UK born on 29th of February this lot can't exactly call themselves representative.)
I missed that this is the *international* society of leap year babies. So my fag-packet calculation should have pointed out that these 7,000 people are actually representing 4,500,000 people.
I've had mine rejected a couple of times, and I was born on 29th Feb, or even in a leap year.
And yes, I did take into account that some countries (all one of it) get the day and month the wrong way around.
I can only assume that the webdesigner for those sites was convinced no-one over forty would want to sign up for the service. Well, in a way (s)he was right.
(as for "actually answers online questions with the truth?" - well it helps when sorting out which services I actually signed up for, and who's been selling my data, despite it being illegal in Europe.)
You're on the Excel development team, presumably... I said it was her 21st birthday, not that she was 21 years old.
> The world's most popular spreadsheet still fails to realize that 1900 is not a leap year. "That bug has been around for 20 years," Brouwer says. "Microsoft has always claimed that it's there to provide backwards compatibility with Lotus 1-2-3. But I've spoken to Mitch Kapor, who built Lotus 1-2-3, and he said 'Oh no, we never had a bug like that.'"
So it's Mitch Kapor word
1. Microsoft (http://support.microsoft.com/kb/214326)
2. A "well documented bug" (Shakje quote)
3. Joel Spolsky (http://www.joelonsoftware.com/items/2006/06/16.html)
My birthday is in sept but I usually lie on those forms anyway. Seriously, what benefit does telling them your actual birthday give to you? Different case when money is involved otherwise it's lies, lies, lies!
Enough already! Stop right there!
Firstly, WTF has this story to do with the mad spastic-dancing foul-mouthed sweat-monster who loves his company? Putting his name in the headline merely draws specious attention to a non-story about whingeing twenty-ninthers, people who really need to get a grip! Who cares about their bloody birthday?
Secondly, like Spleen above I also: "...leave the month and day as January 1st anyway because a) privacy and b) four fewer mouse clicks."
Why would I want YouTube, eBay, Google and every packet-sniffer in between to know my true date of birth (DoB)? Allied with other personally-identifying info, DoB is a useful tool in any scamsters' armoury.
As spleen suggests, just stick another birthdate in.
In the particular case of birthday cards, I don't tend to write "Happy birthday on dd:mm!", just "Happy birthday!". Similarly, I tend to post cards a few days early, relying on the recipient to be smart enough to know when to open it.
If the bulk-mailed birthday cards *do* have a date printed on, maybe people would be better just asking the retailer to not put a date on - that doesn't involve any futile complaining about Microsoft.
In any case, it's worth Feb 29th children learning they're a chronological anomaly, just as it's worth every kid learning at an early age that being in a database doesn't mean a company really knows them or care about them - it's just marketing.
'"We're now into the window," a senior defense official told a news conference minutes after the shuttle landed.
He said it will remain open until Feb. 29 or 30.'
in php it takes into account leap years:
"How do you explain to a five-year-old, that they won't receive a birthday card..."
Someone born on the 29th of february will have his first birthday when he turns 4, not 5.
Normally I rarely side with Pope Gregory, but in terms of date standards I think he pips Microsoft at the post. Papal infallibility might be dubious but it's a better justification for using a particular calendar than Microsoft's incompetence...
// or even
$febDays = ($year\4==0) ? 29 : 28;
It is inexcusable that any developer would not think of this.
i've just signed about 40 of my mates up to the toys r us website for cards in the next week or two.
Yep thats definately it, everbody should start using that code.
of course that's sarcasm. you should reread the article and look for the clues that suggests it might be a bit more difficult than that (clue: 1900)
then perhaps wikipedia?
is it not about the validation of the date? or is it about the fact that calendar goes 28th Feb -> 1st March without processing all the records between those dates? Hence those people who registered their b day on the 29th feb never get their record in a batch job?
I'm confused what you said the problem is. If they can't get on the list then surely they already know they aren't getting a card.
..the story (if such there be) is that MS/Excel doesn't behave properly towards leap years. Ballmer stating that the problem has existed for so long that it's now 'standard' tells you all you need to know about him and his company. I give it ten years...
It's precisely the "surely this is easy" attitude that created the bug in the first place. Leap year is not just based on a 4 year cycle, there are modifiers for 100 and 400 divisors too... RTFM
if(year%4==0 && (year%100!=0 || year%400==0))
...there's no point in putting a fake date.
// Century correction: if year divisible by 100 but not 400 then common year.
// (Needed for calculating age of my great grandmother in days, or for messing about with daily interest rates of hundred-year Government bonds)
// Herschel's correction - if year is divisible by 4000 then common year - not required due to general insertion of leap seconds.
if(remainder($year/4)==0 && ! (remainder (year/100) == 0 && remainder (year/400) != 0 ))
// or even
$febDays = ($year/4==0 ? ($year/100==0 ? (year/400==0 ? 29 : 28) : 29) : 28);
Excel implements the leap-year bug by default but you can switch to the 1904 date system by going to Tools -> Options -> Calculation -> select 1904 Date System.
There's an old joke about this:
How many Microsoft developers does it take to change a light bulb? None. Darkness is the new standard.
<quote>In any case, it's worth Feb 29th children learning they're a chronological anomaly, just as it's worth every kid learning at an early age that being in a database doesn't mean a company really knows them or care about them - it's just marketing.</quote>
I couldn't agree more, it is also a useful "interesting" way to get them into mathematics and/or computer science -- which has to be a good thing.
As a pro codemonkey, this kind of thing makes me totally ashamed of my profession. Any date handling code should include leap years and the 29th of Feb in it's testing. It's the canonical edge case, FFS,
And Andy and JP, it's because of jerkoffs like you that this kind of thing still apparently happens regularly. Andy, because if it takes you a dozen lines of code, you shouldn't be anywhere near a computer programming role, and JP because yes, it is quite simple, and yet you have manifestly failed to grasp the essentials (as the bishop said to the actress) despite the clues w/r/t to 1900 in the article, and then ejaculated a piece of code that exhibits EXACTLY the problem under discussion, all the while staring smugly at your output and thinking "Well, that's another problem sorted, fookin genius me". Fail
I'm sorry, but you are incompetent, and you give the rest of us a bad name. Either quit now, or have the decency to admit that you are neophytes at best and go and learn your trade properly.
Sorry if this sounds a little harsh, but I've spent far to much of my career wiping drool out of people's codebases.
...to Ford for getting it right as my car proudly stated the date as 29/02/2008 this morning :)
you're "or even" code is worse than JP's code - at least thats right a few times
your code will always return 28. even if it would run (missing '$')
average reg reader braincells seems to be on a downer here.
Erm, the 1904 date system only works for dates starting at 1904.
So actually less useful than the flawed 1900 date system, which at least only requires a modifier to the result of an equation
(If you were using the 1904 date system, the above formula would return #VALUE! error.
I think we should just have 365.25 days per year instead. No more leap year bugs, it can't be that hard can it...... OH GOD NO!!!11111one
Although that 0.25 is my kind of working day :o)
...to deploy giant robots that will speed up the earth's orbiting of the sun until it completes its trip in 360 days even. Then all our months will be exactly 30 days, and we will no longer have to suffer this, possibly the oldest of all still-living stupid programming errors (our birthdates and all other historical dates will be reset to the start date of the new calendar, in order to avoid any backward compatibility issues).
Up to thier usual tricks, all the systems have the correct date 29/02/08 however the i2004 sets have a "feature!" where they refuse to see the date so it's currently 1st March
My nortel support says it will "sort itself out" tomorrow.
Meantime everytone thinks im a moron.
coat cos im not paid for today so im off down thepub.
"How do you explain to a five-year-old, that they won't receive a birthday card from Geoffrey over at Toys R Us this year, because the Toys R Us computer has no way to recognize their birthday?" asks Society spokeswoman Raenell Dawn
Picky point!: Any five year old who is having their 5th birthday on 29th Feb 2008 is a liar.
Now as they didn't get a 3rd birthday card then not getting a 4th birthday card is not going to cause too much distress. What you don't know won't hurt you. Does a 3/4 year old really worry about the fact that a stupid cartoon Giraffe is not going to send out a card and it will now ruin his/her birthday - I think not.
This is just a ego trip by the adults to pick on a high profile "Won't someone think of the children" issue for the sympathy vote when they should be campaigning against the ability to apply this to the real world such as putting birth dates into sites that serve a real purpose such as Shopping or Holiday booking.
Sorry but you have lost my sympathy on this one by not getting to the real point of the issue.
Quite simple we just change the seconds unit.
I know a lot of you will want to change to the minute or the hour, but imagine the confusion that will cause!
We are currently 5 hrs, 48 mins, and 46 seconds a drift.
Thats a whopping 20, 926 seconds out.
365 * (24 * 60 * 60) = 31, 536, 000 seconds is what we want as a year.
So, a second is now 1.0006635591070523 of the old seconds or as we now refer to them as, 'dark seconds'.
Now some may be wondering about those born today, well quite simply we all have to recalculate our birthdays, the baseline is the date of the founding of the Old Swiss Confederacy (they make cuckoo clocks so seems apt) 1291, for ease of use we will make it the first moment of that year.
This message bought to you by - Watchmakers of the World - "Watchmakers do it with precision."