Outside of marketing, you would learn that the model is a generalization of a common pattern, which usually allows for and ignores some cases as unfit.
Re:Google - what a great company
on
Google Code Jam 2004
·
· Score: 2, Interesting
I do hope CodeJam problems are different from typical TopCoder ones. I know couple of guys who used to hang out on TopCoder. From their comments I gathered that being a timed competition its winners are not CompSci geeks or language gurus or design gods. No. Winners merely are the people who over time managed to accumulate a library of frequently used code snippets. Solving the problem is then a matter of simply putting these snippets together.
If this is in fact true, I don't see any reason why I should give any 'peer recognition' to these winners.
In a race to see who can create an accurate solution in the shortest amount of time, competitors try to out-think and out-code their opponents.
with a simple time constraint, CodeJam would attract other developers, who usually put some effort into a good design and thus prefer to think first and then code.
They also tend to 'pollute' the code obscuring actual logic and making it hard to follow.
No, they don't. Are you under the impression that unit tests have something to do with conditional debug statements? They have NOTHING to do with each other.
I'm perfectly aware of that, but I was replying in the context of the grandparent post, which implied exactly the opposite.
Nothing compares to a code review done by a super-anal type who nitpicks over everything.
Amen to that. Things like race conditions, improper locking sequencing, reference leaks and other hard-to-trace run-time bugs normally cannot be catched by asserts() or unit tests.
Also needless to say that unit tests become exponentially useless when the complexity of the code doubles. They also tend to 'pollute' the code obscuring actual logic and making it hard to follow.
PS. Having too many asserts in the code means only one thing - too many untrivial invariants, which in turn is usually a clear indication of a sloppy design.
Wait till you start your new and shiny ecommerce company, get the website up, customers coming and money flowing. Then watch it got struck down because some competitor spammed on your behalf.
And then come back and we'll talk about Collaterial Damage.
Thanks for an advice, but 8910i is no good, it's European dualband. I spent whole day yesterday researching and I think 8890 is a way to go. It's 2 year old model, but it is still an impressive piece of technology - very light and with way above average reception and call quality. It's used to be available in Canada for 850cad, and now you can pick it up on eBay for ~300. "We have a winner":)
.. that can make phone calls and NOT take pictures (Ah!), NOT allow changing a faceplate in under 5 seconds (Oh!) and NOT do something else as usefull as baking a cake or running an embedded Java (why not Perl, BTW ?;)).
Seriously, I've been looking for a new phone with no extra features - just wanted GSM phone, which is light and small to carry in a pocket. It also must look good, but that's subjective. Something like this (Nokia 8910), but triband or at least Canada-compatible.
.. the masses of young inexperienced programmers can't find any entry level jobs
Being responsible for hiring people, I can assure you that no reasonable employer expects an experience from a junior candidate. The education and an ability to think is what being looked for. Third quality is an attitude.
All you as a junior have to do is (a) study hard (b) have a geniune interest in CS (c) realize that you know nothing yet:)
Here's some numbers for Vancouver (subjective of course, but still representitive) -
1200-1700 cad/mnth rents you a two-bedroom apartment in downtown with a sunset/water view. 600 will get you one-bedroom in 'uptown', which nevertheless is mere 30 min drive from downtown.
1000 cad/mnth should be more than enough to feed two people on a rich restaurant diet. Technically 500 will feed two people with home cooking.
200 cad/mnth gets you Hundai, 700 - Audi. Insurance is in 1200-2500 range per year.
In other words, 3000 cad per month gives two people very decent live with some spending money. That's about 70K per year before taxes, which is a high-intermediate pay for a fulltime developer. Senior fulltime pay goes up to 120K (but rarely above it). Contracting gives you twice as much or more.
I was not tracking recent haxor lingo developments, but doesn't "Optimized for Broadband" mean "Now With Even More Bloat" ? Am I supposed to be excited by it ?
Closer to the end of the movie, when that baked thing walks to the castle, patrons of one of the shops escape in horror across the street.. to another Farbucks. Kinda takes a couple of seconds to realize that and it makes it twice as funny:)
There is difference between code portablity and its ability to actually run on multiple platforms.
Writing portable code means not using platform-specifics when you don't have to.
Clearly this is not always possible, but data containers, networking libraries, high-level memory managers and data mangling in general usually have no business being dependent on the platform. Even software-based crypto, which is typically hand-optimized for the platform, can be written portable with a very little performance hit.
UI is obviously tough to write this way due to the size of the API it depends upon. But at least it can be kept separate from the datamodel and core engine code, making them portable.
I also noticed that mere considering of portability seems to improve the code quality. It forces the developer to spend a bit more time thinking about the problem and producing better abstractions. And the latter is what makes the code 'cleaner' and the design - 'elegant'.
Outside of marketing, you would learn that the model is a generalization of a common pattern, which usually allows for and ignores some cases as unfit.
Search Engine market is exactly a case like this.
Really, what prevents Google from making cosmetic changes to Firefox/Mozilla.
Nothing really (rather lousy translation, but it gives an idea).
Anyone's got a torrent link ? ;-)
More info is here
The site looks like either a joke or a scam to me.
Sure, if your stack is big enough.
Agreed, but I believe the name is Stallman, not Erdos :-)
.. lzip is a must to have.
I do hope CodeJam problems are different from typical TopCoder ones. I know couple of guys who used to hang out on TopCoder. From their comments I gathered that being a timed competition its winners are not CompSci geeks or language gurus or design gods. No. Winners merely are the people who over time managed to accumulate a library of frequently used code snippets. Solving the problem is then a matter of simply putting these snippets together.
If this is in fact true, I don't see any reason why I should give any 'peer recognition' to these winners.
I think if Google would replace this clause
with a simple time constraint, CodeJam would attract other developers, who usually put some effort into a good design and thus prefer to think first and then code.
01010010000110100100111010101010010110010101101010 1001001110100100001010101...
.. or E .. or both :)
Where's the structure in that, huh?
I bet it's a part of Pi
They also tend to 'pollute' the code obscuring actual logic and making it hard to follow.
No, they don't. Are you under the impression that unit tests have something to do with conditional debug statements? They have NOTHING to do with each other.
I'm perfectly aware of that, but I was replying in the context of the grandparent post, which implied exactly the opposite.
Nothing compares to a code review done by a super-anal type who nitpicks over everything.
Amen to that. Things like race conditions, improper locking sequencing, reference leaks and other hard-to-trace run-time bugs normally cannot be catched by asserts() or unit tests.
Also needless to say that unit tests become exponentially useless when the complexity of the code doubles. They also tend to 'pollute' the code obscuring actual logic and making it hard to follow.
PS. Having too many asserts in the code means only one thing - too many untrivial invariants , which in turn is usually a clear indication of a sloppy design.
Wait till you start your new and shiny ecommerce company, get the website up, customers coming and money flowing. Then watch it got struck down because some competitor spammed on your behalf.
And then come back and we'll talk about Collaterial Damage.
I'm so excited and I'm just can't hide it; .. holy crap, 266 MB ?!!
I'm about to lose control and I think
Please join me for a minute of silence in a memory of our dialup friends.
This is not anywhere close to Funny.
Know where to stop, buddy.
You probably meant Heisenbug , but I like the way you think ;-)
fourty two
Thanks for an advice, but 8910i is no good, it's European dualband. I spent whole day yesterday researching and I think 8890 is a way to go. It's 2 year old model, but it is still an impressive piece of technology - very light and with way above average reception and call quality. It's used to be available in Canada for 850cad, and now you can pick it up on eBay for ~300. "We have a winner" :)
Timeless "Why make a small phone, when you can make a big pocket ?" doesn't work well for me either :)
.. that can make phone calls and NOT take pictures (Ah!), NOT allow changing a faceplate in under 5 seconds (Oh!) and NOT do something else as usefull as baking a cake or running an embedded Java (why not Perl, BTW ? ;)).
:-/
Seriously, I've been looking for a new phone with no extra features - just wanted GSM phone, which is light and small to carry in a pocket. It also must look good, but that's subjective. Something like this (Nokia 8910), but triband or at least Canada-compatible.
And guess what - I'm still looking
.. the masses of young inexperienced programmers can't find any entry level jobs
:)
Being responsible for hiring people, I can assure you that no reasonable employer expects an experience from a junior candidate. The education and an ability to think is what being looked for. Third quality is an attitude.
All you as a junior have to do is
(a) study hard
(b) have a geniune interest in CS
(c) realize that you know nothing yet
And you'll be just fine.
We are the 3rd best city in a world to live in according to this
and
only 89th most expensive one according to this
Here's some numbers for Vancouver (subjective of course, but still representitive) -
;-)
1200-1700 cad/mnth rents you a two-bedroom apartment in downtown with a sunset/water view. 600 will get you one-bedroom in 'uptown', which nevertheless is mere 30 min drive from downtown.
1000 cad/mnth should be more than enough to feed two people on a rich restaurant diet. Technically 500 will feed two people with home cooking.
200 cad/mnth gets you Hundai, 700 - Audi. Insurance is in 1200-2500 range per year.
In other words, 3000 cad per month gives two people very decent live with some spending money. That's about 70K per year before taxes, which is a high-intermediate pay for a fulltime developer. Senior fulltime pay goes up to 120K (but rarely above it). Contracting gives you twice as much or more.
Still not willing to move ?
Optimized for IE & Broadband Users
I was not tracking recent haxor lingo developments, but doesn't
"Optimized for Broadband" mean "Now With Even More Bloat" ?
Am I supposed to be excited by it ?
FarFarAway in Shrek-2 has twin Farbucks :)
.. to :)
Closer to the end of the movie, when that baked
thing walks to the castle, patrons of one of the
shops escape in horror across the street
another Farbucks. Kinda takes a couple of seconds
to realize that and it makes it twice as funny
There is difference between code portablity and its ability to actually run on multiple platforms.
Writing portable code means not using platform-specifics when you don't have to.
Clearly this is not always possible, but data containers, networking libraries, high-level memory managers and data mangling in general usually have no business being dependent on the platform. Even software-based crypto, which is typically hand-optimized for the platform, can be written portable with a very little performance hit.
UI is obviously tough to write this way due to the size of the API it depends upon. But at least it can be kept separate from the datamodel and core engine code, making them portable.
I also noticed that mere considering of portability seems to improve the code quality. It forces the developer to spend a bit more time thinking about the problem and producing better abstractions. And the latter is what makes the code 'cleaner' and the design - 'elegant'.