I think of it as Harry Potter Syndrome. I believe sidekick Hermione describes Harry as "the most wonderful wizard ever" or words to that effect. And yet it seemed to me that Harry didn't need to do much to be wonderful - he just was. While Hermione worked hard.
Turned out that Harry inherited his wonderfulness from his parents, like a strip mall. Or mitochlorions. Or a presidency. He didn't need to do anything, just stand there looking bewildered while various honors and successes were heaped upon him.
Then we have the CEO's who leave burned-out husks of companies in their wake. Of course they need astronomical compensation; after all, they're heading multi-billion dollar businesses. They're the most wonderful CEOs who ever lived.
Maybe I am too fanciful in connecting all these dots, but I nominate Boies the Most Wonderful Attorney who Ever Lived, complete with Excellent Mitochlorions.
Whatever your particular ideological stripe, I think it's very important to understand bin Laden...
There's a tension between understanding and demonizing. To win, you must often adopt a false, derogatory image of the enemy. In WWII, the US created a propaganda image of Germans as pompous buffoons. In reality, they were probably the best military on the planet. But we needed to mock them; how else do you get the nerve to face the most efficient killing machine on the planet?
When Bush first called the 9/11 attackers "cowards", I was very displeased by the inaccuracy of the remark. Over the next several years, I gradually realized that it's not his job to provide accurate analysis of those guys; it's his job to fling feces at the other team, attacking their confidence and self-image.
I would like him to go further, and attack the whole idea that shahids (martyrs) will be rewarded in Paradise. Not that I expect prospective martyrs to believe GW Bush, but when party A has a very clear story, and party B has no rebuttal, it's hard to blame people for siding with party A.
He was quite happy to co-operate with the US when it suited him
From what I understand (sorry, I don't have a source) during the jihad against the USSR, Bin Laden never knew the extent of American support. The Pakistani ISI served as a buffer. Of course the US was importing, sheltering and encouraging global jihadists, including the sheik who would later attack the WTC for the first time, but I think the ISI insulated the muj in Afghanistan, giving them weapons and supplies without making them feel like tools of one empire against another.
IIRC, the muj always seemed to drive Japanese mini-pickups, where US client states got Jeeps, etc. (Long before the Humvee).
Thompson is a modern-day Don Quixote, tilting at windmills. I love the fact that this one insane, eccentric individual can be a persistent thorn in the side of the video game industry. He reminds me of Mathias Rust, the guy who landed his plane in Red Square.
But then, I'm also inspired by the fact that super-lawyer David Boies, who represented hanging chadster Al Gore, Enron CFO Fastow, and of course SCO, was defeated in court by a self-represented gardener. After burning through 13,000 billable hours.
Lots of companies have the "bottom 10%" policy. It's pretty much the only way to stop deadwood from building up. Managers hate firing, and have an instinct to keep the useless employee around. This is bad for the company; besides the direct financial loss, the deadwood employee demoralizes others.
Are you saying an employer should keep deadwood around to be your buddies?
They also apparently gave zero thought to existing processes and staff skillsets.
This is standard in Enterprise software. Larry Ellison championed the idea that Enterprise software should be judged by strategic impact, not by how much the data entry people like or dislike it.
As for process, Oracle's attitude is that nonstandard processes are a liability, not an asset. If your processes are incompatible with Oracle, change them.
If the app takes 30 seconds to load, there's something wrong with it. That problem can be solved.
I would rather the rarely used forms look nice and the commonly used ones work efficiently.
Working efficiently is the whole point. For example, say I'm adding userids to be CC'd on a ticket. I know these userids pretty well, but not perfectly; I rapidly type "johnw rmanish wcchung". Turns out "rmanish" should be "manishr".
In Web 1.0, I hit submit, then get back a page with an error message and have to navigate to the right field, research and fix it. In Web 2.0, almost immediately after I type "rmanish" it turns red and a box pops up with similar userids and photos. I recognize manishr's face and click it; the app replaces "rmanish" with "manishr".
...a real vendor will *charge you* for the services; you ask something tricky and they keep ratcheting up the price. Internal IT depts don't have that option...
Selling increased services to meet the client's increased needs is always a challenge, whether you're an outside vendor or an inside department. There are three paths here:
Simply ignore the increased need; wait for a competitor (internal or external) to service it.
Recognize the need and service it for free. This can stretch the vendor too thin.
Sell the needed services to the customer decision-maker. This involves explaining the need and offering a credible proposal to meet it. If you're an internal vendor, your "price" may include hiring an employee or contractor, or simply removing a lowe r priority item.
Good salesmen will do #3 and thrive; poor salesmen will do #1 or #2 and eventually be out of the game. If you see outside vendors succeeding better than inside departments at this game, it's because they generally have better salesmen.
Web 2.0 is an ambiguous term. In this context, I assume it means web apps using javascript to the point where they're unusable without it. To assume further: internal web apps.
While initially reluctant, I have come to embrace this style of app development. Many GUI apps are too rich to be forced into the HTTP static page model. Static pages are fine for rarely used forms like opening a trouble ticket. But if you're expecting employees to spend all day using a certain app, it should incorporate the conveniences of Web 2.0.
Within an enterprise, the number of supported browsers is usually finite. And there seems to be less need for browser-specific hacks than previously.
My recent semi-revelation... But text is, by the way we use it, rather procedural, and while you can do OO in it, that's a new level. But sacrificing the ability to adjust HTML and CSS and Javascript in TEXT on the alter of Objects just seems like too big of a sacrifice to me.
Well said! Same applies to SQL, and the clumsiness of object-relational mapping. SQL selects are awesome - why ruin them? Same with generating a printed document in Postscript vs. using an API; Postscript is text, and is easily manipulated, transformed, concatenated and tested.
It's way more difficult to test. You don't know which of your code will be executing when you receive the response from the database...
In the general case, I agree. I prefer multi-process or select(2) to multi-threaded after watching some debugging nightmares. In this case I believe we can constrain which code is running during the concurrent portion; in fact, without much loss of performance, we can use a "great big lock" within the concurrent region.
From the app programmer's view, the flow would be:
Get HTTP (or other) request
Create concurrent-request object C
Add requests to C, including:
SQL queries
Back-end HTTP requests
dbm queries
C.launch()
C.wait(timeout) - wait until all responses are received, or timeout ms have elapsed
Handle responses
Note that concurrency only exists between launch and wait; therefore it is only an issue for the platform programmer, not the app programmer (who never has to deal with concurrency). Also, it can be solved with a coarse lock, and the only penalty will be a slight slowdown if two back-end processes respond at the same time.
Async calls have zero gain in terms of server throughput (requests/s). It may reduce a single request execution time, but the gain does not compensate the added complexity...
Agreed that it cannot increase throughput; it could substantially reduce latency when two or more independent SQL queries are needed. Or if you need at least one SQL query and another synchronous backend call - say to a proprietary db:
Asynch SQL: select * from user... (takes t1 milliseconds)
Get session from proprietary db (takes t2 milliseconds)
Wait for asynch call to join
In that scenario, total time is max(t1, t2) instead of t1 + t2. Are you sure the added complexity is that bad? Of course it does conflict a bit with object-relational mappers and similar paraphernalia.
I can see two approaches to the problem. Stewardship In this scenario, a sysadmin is like a security guard. How do we measures a guard's productivity?
Square feet of plant patrolled; or
Asset value protected
But what if a theft occurs? Somehow we must lower the productivity number to reflect that. In this scenario, adding a lock to a door does not show up as a positive. The hope is that it will improve numbers over time.
Work Units In this scenario, we measure productivity by tasks completed, perhaps via a ticketing system. Let one Work Unit be a typical small task, like upgrading an app on one server. You can rate each inbound task in Work Units. Installing Oracle from scratch might be 2 or 3.
The problem with this scenario is that it ignores the stewardship aspect of the job. If you don't upgrade, install or fix anything one week, is that a zero productivity week?
And even under good condition and a proper music hall, you are still at the mercy of where you sit relative to the guy mixing the speakers.
I worked in sound for many years. If the rigger/system engineer is good, almost all the seats will get virtually identical sound. At this point, the front of house engineer can mix for what he hears, and the audience will hear the same thing. Unfortunately, the riggger/SE is not always good. I have worked with both kinds.
Yet concert music is certainly among the most enjoyable...
Leaving aside the feeling of community when you're among like-minded fans, here are some key factors:
Clean volume. A good PA will play much louder than home speakers, with less harmonic distortion. Harmonic distortion makes a speaker sound like it's straining. Loud, clean audio does not provoke as much pain and discomfort as distorted audio of the same volume.
Exaggerated bass. Putting a lot of drivers in close proximity (cluster) increases bass bass output, and engineers usually don't fully cut it back out. Everyone loves huge bass when it's clean. Home speakers typically produce very little clean bass.
You can hash integers (or, of course, pointers). Example: you have a "tree" of nodes which may contain cycles. Write a function bool has_cycle(node *root) that determines if the "tree" has at least one cycle. You cannot modify the node structure.
Can your function run in O(n) time, where n is the number of nodes?
Does it really provide a noticeable performance improvement over an out-of-the-box hash table?
I haven't looked at gperf yet, but an out-of-the-box hash table doesn't usually offer persistence. Meaning, the program would have to build the table at startup from a list of entries. If gperf allows the program to start with the hash table ready to use, that could be an improvement.
Its reasonable to request distributions that are heavily based on Linux and GNU to mention GNU in their name.
Not really. GNU is effectively dead, and was never very alive to begin with. Linux killed it. The only reason the GNU moniker is attached to some parts of Linux is historical. If GNU had not been around before Linux, the libc and utils would have been written just for Linux. Do you doubt that there was sufficient talent and energy in the Linux community to do that?
Have you seen Ulrich Drepper's comments on RMS's behavior? Point is, the people actually writing the valuable code did not always think of it as "GNU". They wrote userland code for this awesome OS called Linux, and they accepted the convention of calling it "GNU".
And I'm sure you know that the compiler we call GCC did not originate within GNU. So RMS had historical value as a standard-bearer to rally around in the dark times, but today there is no reason to let him stamp his logo on Linux.
RMS's vision did not succeed. The GNU OS never came to be. He did not have the programming or leadership skills to realize his dream of a free Unix clone.
Linus did, and that's why the OS is named after him.
This is true. But it's quite possible to "live off the land." You can get a healthy meal, for your definition of healthy, from many cafeterias, fast-food joints and restaurants. It may involve some arguing and sometimes you have to escalate to the manager.
At Wendy's, my strategy would be rabbit food minus dressing plus double cheeseburger minus bun (my cholesterol is low).
I'd rather have hot vegetables, but cold are OK.
Above Wendy's, most places can be coerced into serving meat and vegetables, without sugar or starch.
More and more, sugar and starch are looking like the villains. I cut them out with good results. Starch includes rice, pasta, bread, potatoes. Sugar includes fruit and many nutrition bars.
I was raised to think bread and rice were healthy - and they're not, at least for me.
Can you please tell me what these applications are? (Perhaps with appropriate obscurity). Niches like this are fascinating. I wonder if the decision makers are happy with these apps. I would guess that stability and UI are not big factors to them, but do the apps deliver the desired features?
I hope that I am not (cups hand over mouth and sniffs) dog-breathed, but I think I can explain. Big, software-centric companies like Google, Yahoo, Microsoft and IBM can make use of the fresh CS graduate. They have the structure, peer support and slack time needed. Most other employers can't.
New grads usually need a lot of hand-holding. There are amazing exceptions of course, like one guy who did most of the coding and sysadmin work for a small web company while still in school. He hit the ground running.
So I imagine that Grandparent is a typical manager/employer who knows he doesn't have the resources to nurture a new grad.
You probably want to avoid OOP in general when it comes to the actual graphics component of an application, as it adds overhead.
I used to say that, and I'm still wary of OO performance hits.
But suppose you want to draw each object in a list. They are aliens, projectiles, etc., so they get different drawing functions. The obvious choices are:
switch(thing->opcode) {// effectively a linear search
Use a function pointer in the object itself. Problem is, if there are 20 methods, there are 20 pointers in each object.
Use a "class pointer" in the object - pointing to a dispatch table for that class. This is what C++ does if you use its virtual dispatch.
Is #3, with its double-indirection, significantly slower than #2? Probably not. Drawing should comprise many steps. So C++, with its "OO", is merely formalizing a dispatch system that most C programmers would find reasonable.
You are wrong. The Audio Home Recording Act of 1992* allows for analog and digital copying of copyrighted audio works for home use without any copyright protection.
You're right. I overlooked the AHRA. I knew the mp3.com lost the musiclocker case over the mere act of copying CDs they bought - but apparently if they were consumers they would have been safe.
The right to backup and/or change the medium of a copyrighted work is protected under fair use...
I disagree. Fair use generally covers copying a small portion of the work for specific reasons.
Can you link to a credible source that supports your claim?
I think of it as Harry Potter Syndrome. I believe sidekick Hermione describes Harry as "the most wonderful wizard ever" or words to that effect. And yet it seemed to me that Harry didn't need to do much to be wonderful - he just was. While Hermione worked hard.
Turned out that Harry inherited his wonderfulness from his parents, like a strip mall. Or mitochlorions. Or a presidency. He didn't need to do anything, just stand there looking bewildered while various honors and successes were heaped upon him.
Then we have the CEO's who leave burned-out husks of companies in their wake. Of course they need astronomical compensation; after all, they're heading multi-billion dollar businesses. They're the most wonderful CEOs who ever lived.
Maybe I am too fanciful in connecting all these dots, but I nominate Boies the Most Wonderful Attorney who Ever Lived, complete with Excellent Mitochlorions.
There's a tension between understanding and demonizing. To win, you must often adopt a false, derogatory image of the enemy. In WWII, the US created a propaganda image of Germans as pompous buffoons. In reality, they were probably the best military on the planet. But we needed to mock them; how else do you get the nerve to face the most efficient killing machine on the planet?
When Bush first called the 9/11 attackers "cowards", I was very displeased by the inaccuracy of the remark. Over the next several years, I gradually realized that it's not his job to provide accurate analysis of those guys; it's his job to fling feces at the other team, attacking their confidence and self-image.
I would like him to go further, and attack the whole idea that shahids (martyrs) will be rewarded in Paradise. Not that I expect prospective martyrs to believe GW Bush, but when party A has a very clear story, and party B has no rebuttal, it's hard to blame people for siding with party A.
Of course the US was importing, sheltering and encouraging global jihadists, including the sheik who would later attack the WTC for the first time, but I think the ISI insulated the muj in Afghanistan, giving them weapons and supplies without making them feel like tools of one empire against another.
IIRC, the muj always seemed to drive Japanese mini-pickups, where US client states got Jeeps, etc. (Long before the Humvee).
Thompson is a modern-day Don Quixote, tilting at windmills. I love the fact that this one insane, eccentric individual can be a persistent thorn in the side of the video game industry. He reminds me of Mathias Rust, the guy who landed his plane in Red Square.
But then, I'm also inspired by the fact that super-lawyer David Boies, who represented hanging chadster Al Gore, Enron CFO Fastow, and of course SCO, was defeated in court by a self-represented gardener. After burning through 13,000 billable hours.
Ride on, gentle knight!
Lots of companies have the "bottom 10%" policy. It's pretty much the only way to stop deadwood from building up. Managers hate firing, and have an instinct to keep the useless employee around. This is bad for the company; besides the direct financial loss, the deadwood employee demoralizes others.
Are you saying an employer should keep deadwood around to be your buddies?
This is standard in Enterprise software. Larry Ellison championed the idea that Enterprise software should be judged by strategic impact, not by how much the data entry people like or dislike it.
As for process, Oracle's attitude is that nonstandard processes are a liability, not an asset. If your processes are incompatible with Oracle, change them.
And yet I know of a program that converts C into x86 machine language quite reliably. I'd say the differences are more than trivial.
If you can stomach a long, discursive essay, please read Rich Programmer Food.
Working efficiently is the whole point. For example, say I'm adding userids to be CC'd on a ticket. I know these userids pretty well, but not perfectly; I rapidly type "johnw rmanish wcchung". Turns out "rmanish" should be "manishr".
In Web 1.0, I hit submit, then get back a page with an error message and have to navigate to the right field, research and fix it. In Web 2.0, almost immediately after I type "rmanish" it turns red and a box pops up with similar userids and photos. I recognize manishr's face and click it; the app replaces "rmanish" with "manishr".
Selling increased services to meet the client's increased needs is always a challenge, whether you're an outside vendor or an inside department. There are three paths here:
Good salesmen will do #3 and thrive; poor salesmen will do #1 or #2 and eventually be out of the game. If you see outside vendors succeeding better than inside departments at this game, it's because they generally have better salesmen.
Web 2.0 is an ambiguous term. In this context, I assume it means web apps using javascript to the point where they're unusable without it. To assume further: internal web apps.
While initially reluctant, I have come to embrace this style of app development. Many GUI apps are too rich to be forced into the HTTP static page model. Static pages are fine for rarely used forms like opening a trouble ticket. But if you're expecting employees to spend all day using a certain app, it should incorporate the conveniences of Web 2.0.
Within an enterprise, the number of supported browsers is usually finite. And there seems to be less need for browser-specific hacks than previously.
Well said! Same applies to SQL, and the clumsiness of object-relational mapping. SQL selects are awesome - why ruin them? Same with generating a printed document in Postscript vs. using an API; Postscript is text, and is easily manipulated, transformed, concatenated and tested.
In the general case, I agree. I prefer multi-process or select(2) to multi-threaded after watching some debugging nightmares. In this case I believe we can constrain which code is running during the concurrent portion; in fact, without much loss of performance, we can use a "great big lock" within the concurrent region.
From the app programmer's view, the flow would be:
Note that concurrency only exists between launch and wait; therefore it is only an issue for the platform programmer, not the app programmer (who never has to deal with concurrency). Also, it can be solved with a coarse lock, and the only penalty will be a slight slowdown if two back-end processes respond at the same time.
Am I missing something?
Agreed that it cannot increase throughput; it could substantially reduce latency when two or more independent SQL queries are needed. Or if you need at least one SQL query and another synchronous backend call - say to a proprietary db:
In that scenario, total time is max(t1, t2) instead of t1 + t2.
Are you sure the added complexity is that bad? Of course it does conflict a bit with object-relational mappers and similar paraphernalia.
Stewardship
In this scenario, a sysadmin is like a security guard. How do we measures a guard's productivity?
- Square feet of plant patrolled; or
- Asset value protected
But what if a theft occurs? Somehow we must lower the productivity number to reflect that. In this scenario, adding a lock to a door does not show up as a positive. The hope is that it will improve numbers over time.Work Units
In this scenario, we measure productivity by tasks completed, perhaps via a ticketing system. Let one Work Unit be a typical small task, like upgrading an app on one server. You can rate each inbound task in Work Units. Installing Oracle from scratch might be 2 or 3.
The problem with this scenario is that it ignores the stewardship aspect of the job. If you don't upgrade, install or fix anything one week, is that a zero productivity week?
Maybe the two approaches can be blended.
I worked in sound for many years. If the rigger/system engineer is good, almost all the seats will get virtually identical sound. At this point, the front of house engineer can mix for what he hears, and the audience will hear the same thing. Unfortunately, the riggger/SE is not always good. I have worked with both kinds.
Leaving aside the feeling of community when you're among like-minded fans, here are some key factors:
You can hash integers (or, of course, pointers). Example: you have a "tree" of nodes which may contain cycles. Write a function bool has_cycle(node *root) that determines if the "tree" has at least one cycle. You cannot modify the node structure.
Can your function run in O(n) time, where n is the number of nodes?
I haven't looked at gperf yet, but an out-of-the-box hash table doesn't usually offer persistence. Meaning, the program would have to build the table at startup from a list of entries. If gperf allows the program to start with the hash table ready to use, that could be an improvement.
Not really. GNU is effectively dead, and was never very alive to begin with. Linux killed it. The only reason the GNU moniker is attached to some parts of Linux is historical. If GNU had not been around before Linux, the libc and utils would have been written just for Linux. Do you doubt that there was sufficient talent and energy in the Linux community to do that?
Have you seen Ulrich Drepper's comments on RMS's behavior? Point is, the people actually writing the valuable code did not always think of it as "GNU". They wrote userland code for this awesome OS called Linux, and they accepted the convention of calling it "GNU".
And I'm sure you know that the compiler we call GCC did not originate within GNU. So RMS had historical value as a standard-bearer to rally around in the dark times, but today there is no reason to let him stamp his logo on Linux.
RMS's vision did not succeed. The GNU OS never came to be. He did not have the programming or leadership skills to realize his dream of a free Unix clone.
Linus did, and that's why the OS is named after him.
This is true. But it's quite possible to "live off the land." You can get a healthy meal, for your definition of healthy, from many cafeterias, fast-food joints and restaurants. It may involve some arguing and sometimes you have to escalate to the manager.
At Wendy's, my strategy would be rabbit food minus dressing plus double cheeseburger minus bun (my cholesterol is low).
I'd rather have hot vegetables, but cold are OK.
Above Wendy's, most places can be coerced into serving meat and vegetables, without sugar or starch.
More and more, sugar and starch are looking like the villains. I cut them out with good results. Starch includes rice, pasta, bread, potatoes. Sugar includes fruit and many nutrition bars.
I was raised to think bread and rice were healthy - and they're not, at least for me.
So what replaced the sodas and junk food?
Can you please tell me what these applications are? (Perhaps with appropriate obscurity). Niches like this are fascinating. I wonder if the decision makers are happy with these apps. I would guess that stability and UI are not big factors to them, but do the apps deliver the desired features?
I hope that I am not (cups hand over mouth and sniffs) dog-breathed, but I think I can explain. Big, software-centric companies like Google, Yahoo, Microsoft and IBM can make use of the fresh CS graduate. They have the structure, peer support and slack time needed. Most other employers can't.
New grads usually need a lot of hand-holding. There are amazing exceptions of course, like one guy who did most of the coding and sysadmin work for a small web company while still in school. He hit the ground running.
So I imagine that Grandparent is a typical manager/employer who knows he doesn't have the resources to nurture a new grad.
I used to say that, and I'm still wary of OO performance hits.
But suppose you want to draw each object in a list. They are aliens, projectiles, etc., so they get different drawing functions. The obvious choices are:
Is #3, with its double-indirection, significantly slower than #2? Probably not. Drawing should comprise many steps. So C++, with its "OO", is merely formalizing a dispatch system that most C programmers would find reasonable.
You're right. I overlooked the AHRA. I knew the mp3.com lost the musiclocker case over the mere act of copying CDs they bought - but apparently if they were consumers they would have been safe.
I disagree. Fair use generally covers copying a small portion of the work for specific reasons.
Can you link to a credible source that supports your claim?