Most version control systems have a function to keep track of who did what. Use it to find the idiot and educate it in the error of its ways. If repeated education fails, terminate the idiot or promote it to a non-coding position, depending on corporate culture.
Within reason of course. It is hard for the code to be much simpler than the problem it solves or the algorithm it implements. Some code will require a bit of study to understand, no matter how cleanly you write it. Sometimes it makes sense to use a less optimal algorithm to simplify the code but sometimes you actually need the performance.
the way gcc compiles the big delegator switch in MRI's core, with a large sparse stack that causes ridiculous memory consumption (and sometimes even leaks).
Couldn't the code be written in a way that gcc can compile efficiently then? Seems like a simpler solution. For a large static switch a perfect hash might be an option.
Oh yes, they have fixed them with new mistakes.
For example: the next version vill use \ as a separator in module names allowing you to write great looking code like:
$foo = new test\foo\bar()
I prefer to code JDBC directly. Then I at least know what it is doing and can track down and resolve bottle-necks. Plus: there's less xml.
For simple, low load applications it's probably ok but even then I find that it is better to get your hands dirty. You're going to need the experience when you tackle a not so simple application.
I dunno, I find it pretty easy to discuss Ruby without Rails. Rails is certainly the framework that made Ruby really visible in the US (though I gather it was fairly popular in Japan even before Rails), but I think that as it is getting exposed, the size of the non-Rails Ruby community compared to the Rails segment is probably growing. Possibly because it's the Rails part of RoR that doesn't scale? Without rails it's a capable scripting language. Not as fast as python or perl perhaps but fast enough for a lot of applications. Rails OTOH, like a lot of web frameworks, falls into the framework trap. It makes simple things (getting some data from a DB) easier and difficult things (scaling) more difficult.
I don't think this fits particularly well into Python's philosophy. {} are largely redundant, and whilst whitespace seems to cause you some issue, I've never had a problem with it. Lamdba's might benefit from this, but any multi-line lambda should be indented anyway, so you might as well use whitespace for that, too.
Well I guess it comes down to what tools you usually use. Some coders that move a block of code will manually adjust it to the correct indentation depth, some coders will use the equivalent of M-x reindent-region. If you're the former you're probably happier with python where you wont have to worry about the {}-delimeters. It's not a big problem.
Thanks for the tip about ternary-statements. The syntax will take some getting used to but it will come in handy sometimes.
I've never understood the "whitespace" thing... don't you guys indent your code anyway?
Yes, I indent my code. Mostly automatically by hitting tab in emacs or doing the equivalent of M-x reindent-region. This does not work in python as there's no explicit end-of-block marker for the editor to use as a cue. Thus, refactoring code is a pain and it's easy to accidentally break code.
Oh, and doing a diff ignoring whitespace-changes is no longer a way to see what's really changed in the code and what's noise left by someone cleaning up the code-style.
I still like and use python but the whitespace thing is no bonus.
Nope... I like python and use it every day. Losing the syntactic whitespace for a more traditional whitespace-neutral {}-block style would to me only feel as an improvement. Syntactic whitespace makes it harder to automatically reindent code, makes it easier to accidentally break the code structure and generally makes refactoring a pain. Furthermore I suspect the syntactic-whitespace to be the reason pythons lambda-statements are severely limited.
If anyone is interested, my top candidates for improvement or python would be: * regular {} blocks instead of semantic whitespace * non-trivial lambda-statements * explicit scoping of variables like with the "var"-keyword in Javascript
Nice to have but not essential would be: * ++ and its friends * ternary statements * switch statements, preferably supporting strings. I know that you can simulate this with a dict and a try-catch but honestly, why keep a feature out of the language for "simplicity" and then encourage people to use horribly unreadable workarounds?
Most cars ARE full of compromises made to increase safety. Strip out seat-belts, indicator lights, air-bags and all structural reinforcements not needed for performance and you'll have a faster car that will kill you if you crash.
IIS6+ deals with HTTP requests at a kernel level. That is core functionality such as responses, caching, etc are all dealt with at ring0. Performance is unbeatable.
Oh and security? IIS6 has never been rooted, ever. Add-ons have been (asp.net for instance), but IIS6 has never been.
Of course, when it is, the attacker will be in ring-0.
In contrast: if my web-server is rooted, the attacker is in a limited SE-linux contexts locked down to only have access appropriate for a web-server. It can't even access remote ports (like smtp, ftp, irc,...).
If you prefer ALGOL to C, then please code in ALGOL. #defining your own syntax absolutely kills readability and makes small stuff like bad indentation and erroneous comments pale in comparison.
After all, you can always just deploy another copy of your app on another box, point it at your database (or database cluster, depending on your needs), and you're good to go.
With a large site your database is probably the limiting factor; adding more frontends doesn't help. Instead you have to care deeply about what kind of SQL-queries are used, how you can optimize the structure of your database, what data you can cache/pre-fetch, etc... at that point you may come to regret that the whole database interface, or even the database structure itself, is automatically generated and difficult to fiddle with.
"As long as your pictures are legal they will be hosted here"
To be perfectly legal you have to have permisson from copyright holders. If you have a quick look around the site it seems improbable that this is the case for most of the pictures.
Most version control systems have a function to keep track of who did what. Use it to find the idiot and educate it in the error of its ways. If repeated education fails, terminate the idiot or promote it to a non-coding position, depending on corporate culture.
What is "initial design documentation"? I have heard of it but have never seen it in the wild.
Within reason of course. It is hard for the code to be much simpler than the problem it solves or the algorithm it implements. Some code will require a bit of study to understand, no matter how cleanly you write it. Sometimes it makes sense to use a less optimal algorithm to simplify the code but sometimes you actually need the performance.
So what you are saying is that IT departments would prefer not to exist?
the way gcc compiles the big delegator switch in MRI's core, with a large sparse stack that causes ridiculous memory consumption (and sometimes even leaks).
Couldn't the code be written in a way that gcc can compile efficiently then? Seems like a simpler solution. For a large static switch a perfect hash might be an option.
Oh yes, they have fixed them with new mistakes. For example: the next version vill use \ as a separator in module names allowing you to write great looking code like: $foo = new test\foo\bar()
I prefer to code JDBC directly. Then I at least know what it is doing and can track down and resolve bottle-necks. Plus: there's less xml. For simple, low load applications it's probably ok but even then I find that it is better to get your hands dirty. You're going to need the experience when you tackle a not so simple application.
Well I guess it comes down to what tools you usually use. Some coders that move a block of code will manually adjust it to the correct indentation depth, some coders will use the equivalent of M-x reindent-region. If you're the former you're probably happier with python where you wont have to worry about the {}-delimeters. It's not a big problem.
Thanks for the tip about ternary-statements. The syntax will take some getting used to but it will come in handy sometimes.
Yes, I indent my code. Mostly automatically by hitting tab in emacs or doing the equivalent of M-x reindent-region. This does not work in python as there's no explicit end-of-block marker for the editor to use as a cue. Thus, refactoring code is a pain and it's easy to accidentally break code.
Oh, and doing a diff ignoring whitespace-changes is no longer a way to see what's really changed in the code and what's noise left by someone cleaning up the code-style.
I still like and use python but the whitespace thing is no bonus.
Nope... I like python and use it every day. Losing the syntactic whitespace for a more traditional whitespace-neutral {}-block style would to me only feel as an improvement. Syntactic whitespace makes it harder to automatically reindent code, makes it easier to accidentally break the code structure and generally makes refactoring a pain. Furthermore I suspect the syntactic-whitespace to be the reason pythons lambda-statements are severely limited.
If anyone is interested, my top candidates for improvement or python would be:
* regular {} blocks instead of semantic whitespace
* non-trivial lambda-statements
* explicit scoping of variables like with the "var"-keyword in Javascript
Nice to have but not essential would be:
* ++ and its friends
* ternary statements
* switch statements, preferably supporting strings. I know that you can simulate this with a dict and a try-catch but honestly, why keep a feature out of the language for "simplicity" and then encourage people to use horribly unreadable workarounds?
Java: More than 1000
In other words, you're looking for great programmers but are only willing to pay for mediocre?
Most cars ARE full of compromises made to increase safety. Strip out seat-belts, indicator lights, air-bags and all structural reinforcements not needed for performance and you'll have a faster car that will kill you if you crash.
Of course, when it is, the attacker will be in ring-0.
In contrast: if my web-server is rooted, the attacker is in a limited SE-linux contexts locked down to only have access appropriate for a web-server. It can't even access remote ports (like smtp, ftp, irc, ...).
Well, most car accidents are caused by driver error but people still want cars that protect them better.
If you prefer ALGOL to C, then please code in ALGOL. #defining your own syntax absolutely kills readability and makes small stuff like bad indentation and erroneous comments pale in comparison.
"As long as your pictures are legal they will be hosted here"
To be perfectly legal you have to have permisson from copyright holders. If you have a quick look around the site it seems improbable that this is the case for most of the pictures.
SGH-X820 Except of course that the "perfect" phone is 10mm thick and the samsung 6.9mm ;)
"Although it may take a bit more ingenuity, many feel that the substantial productivity boost is worth it."
If it takes more ingenuity to get it to work/scale, just how are you getting any substantial productivity boost?
Without any caching the M in LAMP quickly becomes a bottleneck.