My (potentially flawed) understanding is that Purify was reporting the function calls as "possibly" using a variable that was not initialized.
The relevant point was that the function in question initialized a buffer with random data (e.g. from a random number source) [e.g. _not_ "from uninitialized memory" but "_into_ uninitialized memory"] but the tool could not tell what the function was doing, so it said "look here, possibly uninitialized data".
The programmer, having no clue how to imterpret the (false positive) result simply removed the code.
This is what happens when someone who doesn't know what he is doing takes the advice of a tool that cannot understand the semantic importance of an otherwise opaque action.
If the guy had looked up the function call and seen what it did (instead of just removing it) he would have seen it as a false positive.
Thus Is It Proved: powerful tools are dangerous in the hands of the untrained.
put in rules to control your _outgoing_ packet rate so that you don't drop the all-important TCP ACK packets as they leave your premises...
In particular throttle your outgoing bitrate to be about 98% of your advertised ustream bandwidth. That is, if you have 768kbits advertised, set the throttle to about 760kbits. Then if you know how you want to make sure that "short" TCP packets (less than about 70 bytes) have the highest priority.
This will reduce your network bandwidth _waste_ by up to two orders of magnitude (on a really crappy link, less if your link is okay, your mileage may vary).
By doing this you are helping _both_ yourself and your provider.
I don't think you have any real "right" to keep them from what is, essentially, their own data.
On the other hand, poorly formed reads can kill database performance.
I would suggest that you keep a hot snapshot slash read only hot backup database and give them ad-hoc access to that.
I forget the oracle-isms for it. Do that thing where you forward the journals from the live database to the standby database. Since that database is up, they can use it in read-only mode without you having to worry about table locks (etc) boning your tuning.
If worse comes to waors, you should be able to show them some concrete (if contrived) examples of incomplete transactions costing time and money.
But really, being territorial about the data itself is unbecoming and unprofessional.
That being said, I worked for a company that wanted to keep our customers out of our databses full of their data. The main reason was that our database was _awful_. It was dnormal and could have been used as textbook material for how not to "do a database". Columns named Field7 with the single character minus "-" for null values because the code designer didn't understand what null was or why you would want to "SELECT AVG(duration) WHERE..." wen you could put a read loop in the application.
Seriously...
What are your exact objections to allowing this access? Those objections are your reasons for disallowing the access. If your reasons are good, your argument is good. If not, not...
Well, my BitTorrents of Ubuntu, Slackware and such aren't "stealing" a single thing from a single person by _any_ definition.
The _stupid_ thing about this disruption is that it actually causes the transfers to use _more_ bandwidth.
Consider:
The participant will _still_ download the entire content.
The participant will, for every segment downloaded, now have several false starts and partial segment transfers.
Participants who elect to stop their transfers will most likely go to another means (http etc) of transfer so 100% of the content will be transferred again on top of the partial transfer that was aborted.
A given provider pays cash money only for bandwidth usage that "crosses" the boundary of their service. So every Comcast/Cox customer who would have gotten a percentage of their transfer from a peer on the same service instead gets their transfer from original source, raising Comcast/Cox/etc's upstream service usage.
Now a big company like comcast _may_ be able to soak some of this cost in proxy space so that several transferers are actually not leaving their net, but are instead getting the contents from their proxy. But that would make Comcast/Cox/etc's proxy server the agent of "illegal sharing" in those cases where the content was infringing, so I doubt they are doing that to any useful extent.
As an added bonus, by interrupting the TCP connections, they _do_ prevent the TCP window sizes from scaling up to speed, but they don't prevent the outstanding window-size-worth of packets to be delivered and discarded by the target host. That is, by inserting the reset artificially, _neither_ side had the opportunity to discard their "already queued" packets, so that buffer skid goes all the way across the internet, costing time and money and congestion but now artificially devoid of benefit to anyone.
So by sandbagging their own customers they are actually raising their bandwidth costs and in-network infrastructure usage. And an infinite number of their customers can raise their "simultaneous connections per torrent" for free. I raised my limit to something like 200 in each direction, which restored my throughput and cost Comcast one hell of a pile of churn. [I also use advanced packet shaping where my packets leave my network and hit the wire, ensuring that I never "drop" a connection request locally due to modem buffer sizes etc.]
The technique being used by the provider is a classic foot bullet by every technical measure.
At one company I worked with/for we included the source code (ready to use) with the product, whether you asked for it or not. Loose the disk and you were SOL.
Read the license carefully, or give it to a lawyer to read it for you. There is a very important "or" in that clause.
You are required to make the source available for three years IFF you don't provide it at the time of distribution. It's an _or_ not an _and_.
This also means that if _I_ didn't give a binary to _you_ then I have no duty to provide _you_ with any access to the source. Additionally, if I _already_ gave you the source when I gave you the binary, I am under no further duty to give you the source again.
Similarly, If I give you version 1.01 of the binary _or_ the source, I have no duty to give you source versions other than versions that constitute 1.01.
Furthermore, if I give you version 1.01 and you give version 1.01 on to "that guy", I bear no burden to provide any source to "that guy" as I didn't distribute to him.
My requirements as a distributor go exactly as far as I distribute, and no further.
In this case, however, Skype _did_ give version(s) to many people and _didn't_ give the source at that time, so they have a 3 year burden to provide _every_ _version_ they every provided to each person they provided any particular version to.
Thy are also enjoined from "adding" any additional requirement on those persons that would bar them from handing those versions of source or binary on at whatever price they chose.
So they could make those versions available, but restrict that availability to persons who could prove they got the software directly from skype.
All without the burden to publicly post a single word.
At least that's the way it _could_ have worked.
BUT since they are already in violation, when they lose this case, they may be required to publicly post by the settlement (which is what usually happens).
If they'd been "smart" they could have included the source in the download and had a checkbox for "unpack the source at this time?" and all the people who didn't so check that box, would have lost their opportunity to get the source (if they threw away the archive/installer after install).
Course that wouldn't have protected their "business interests" since their security is largely by obscurity.
The GPL does not "prohibit charging for GPL code".
The GPL requires that the distributor of a binary provide the source with that binary, if the receiver of the binary wants it.
That is if Abe sells (third-party GPLed) programX to Barry, Abe is required to make the source available to Barry as well, for no more than incidental extra cost (media/copying costs).
Note that Abe has no duty to give Craig a copy of the source if he only distributed programX to Barry.
So if Abe charges Barry $300 for programX, then the source cost Barry money. If Craig demands the source from Abe, Abe can charge Craig any amount he wants for that source.
Of course, if Craig goes to Barry and asks for the source, Barry can give it to Craig at whatever price he chooses, including for free.
The only real moderation in this is that Abe cannot "add additional terms" in his deal with Barry that bars Barry from selling on to Craig.
The "free" in the GPL has _nothing_ to do with price. The propagation of the work (programX) creates a "surface" (or network) that could be bound by a potentially very steep real cost. That is, to get from "outside" to "inside" the surface could have a _very_ high cost.
Now Craig could go to whoever Abe got programX from in the first case, but that code would _not_ contain any of Abe's presumed additions.
===
So in this case particularly, Skype has provided the binary at a given price (0$) and in so doing have a burden to give the complete source any of the people who downloaded the program from them "for the cost already paid" "plus, optionally, a reasonable copying fee". Skype doesn't want to comply.
If today, Skype decided to start charging $110 per download of their binary, then a person who had not previously downloaded the current version of sfotware would still be entitled to the source for no additional cost, but a newcommer should expect to pay the $110 for the binary and then be able to get the source for "the price just paid plus a reasonable reproduction fee etc"
====
Skype doesn't want to "give away" "their work" but what _they_ dont understand is that part of the cost _they_ paid to receive the software was "fee" that they are required to pass on their modifications in source that they passed on as binary under this "must be available" "reasonable reproduction fee only" model.
That is, they could have gone to microsoft and paid _cash_ up front and maybe more cash on the back end per unit (at whatever pricing they could manage) for windows (etc), but they chose up front to to "only" "pay" _disclosure_ on the back end "per unit".
Now they want to say that they don't have to pay what they _agreed_ to pay for their back end per unit rights.
It is like someone licencing to pay you $1 per unit moved based on their use of your (patent, software, drill press, company name, whatever). Then that person sells a bunch of units and gives away a whole bunch more, and when they do the math they discover that they owe you 1$ * 1,000,000 units moved and they didn't make a million dollars because they gave away fully 900,000 of the units moved. So they go back and say 1$ per unit wasn't fair.
Nobody forced them to make the deal, they just didn't think ahead or do the math.
But in Skype's case they gave away the 1,000,000 units and charged for the 10,000 full service contracts. Then they realized that the leverage to charge for the 10,000 "full service" contracts is that they "added a secret" to all those giveaways.
Then they realize that the 990,000 "freeloaders" are entitled to "the secret" as are the 10,000 paying customers. Once the secret is out, they cannot expect to charge the paying customers.
They didn't do the math.
If today, they canceled the free downloads and made everybody pay up, all the existing and future people would be entitled to "the secret" because that is the deal they made when they decided to go GPL.
I can neither confirm nor deny that I have sat in a classified lab with info controls that has a non-trivil number of points of access to the unrestricted internet. The labs may or may not have restricted the movement of cell phones, thumb drives, CD ROMS, etc.
When push comes to shove, "the individual persons" are both the weakest and most important of a security plan. Plans based on having "no bad actors" inside the security ring is important and everyday useful.
One of the major reasons to restrict the aforementioned items and movements it to prevent the _accidental_ transmission of data.
You can only inconvenience a bad actor who is deliberately trying to transmit information. That is why they don't let just anybody into classified circumstances and depend on preventing leaks with technology and security measures as a primary approach.
Any document that contains the words "while" or the more technical "meanwhile" should be sufficient prior art.
How about talking to someone on one phone while you are trying to get a fax to them? Remember that conversation when you would be talking someone through putting a roll of thermal paper in a hopper?
Actually, isn't this exactly how FTP works? I have a control channel and one or more data channels that are doing the heavy lifting once a transfer starts.
Then there is ISDN, which _requires_ two or more barer channels and the control channel just to join the party.
Isn't the web browser "maximum connections to one server" all about this as well?
Hell, the entire word "sideband" (outside of radio) has the "meat" of this patent as its definition...
Time for the pitchforks and torches everybody, meet me on the hill outside the castle!
Microsoft cannot tell the difference between Patent Encumbered Proprietary Software, Patent-Free Proprietary Software, "No such thing as software patents" Copyright Protected Software, Open Source Software, and Free Software.
There is an awful lot of Baby left in that Bathwater when you go from "Software Patents Threaten Africa's Software Sector" to "Free software, as the only available alternative to Software Patents, is non-existent charity." Hello, all of the eighties and most of the nineties are on the phone and they want the money they paid for Windows 3.1, Windows 95, and Microsoft Office back. Even you, Microsoft, made _billions_ of dollars (US) selling software that was not patented.
Maybe it isn't FUD, maybe Microsoft people are just stupid.
Turns out, I have actually oiled snakes. And I am not talking plumbing snakes.
I worked at a pet store that did some light animal care, and snakes were some of the animals we treated and kept. The oil was Linatone(tm). It helps snakes shed, and it is lightly anti-biotic and anti-microbial and anti-parasite. (it makes reptiles happy 8-).
It was _not_ honest nor competent to give himself jusrisdiction over someone because he lured them into providing legal council because of his own previous mistake.
Were he honest, he would have voided his injunction and then ruled that he didn't have jurisdiction to hear any of that mess.
Why?
For the same reason that some random Shaia judge in some foreign country isn't allowed to rule on what you say or do.
The web site isn't in this country. The owner of record isn't in this country. The bank inst in this country.
(It's as if I were suing you in Mexico [presuming you are not Mexican, and knowing I am not] because your stationary printing was outsourced to a Mexican company, and some Mexican judge, having sent cops to your house to steal all your papers, ruled that since you sent someone to Mexico to ask for it back, you clearly intend to represent yourself there in his court.)
It's bull. There is no such thing as "entrapment" in civil court, but this is something very like that.
Just to clarify, the "owner" of Wikileaks.org isn't in the USA, let alone California. His registrar is, which is why the bank attacked there with the intent of creating the injunction. The guy is in Australia.
How would you like to find that you registered a domain name, and suddenly you were part of a civil litigation on another continent?
That's why the ruling where the judge granted himself jursidiction after being duped into luring someone into providing a lawyer across an ocean is outrageous.
This is, in some odd way, like some bizzaro-world civil entrapment.
Well, the "trick" still worked. Wikileaks is now "properly before the court since they sent [council]". So now the case is before a judge who had _no_ jurisdiction because the judge wasn't honest enough to say "this shouldn't have come before me, get out".
So now the same easily hoodwinked judge is going to be the one to rule over something that isn't even in this country.
That is _not_ honest, nor is it justice.
The system was gamed. That it may not be an _utter_ disaster in the final ruling doesn't mitigate the fact that it shouldn't be happening at all.
The judge also ruled that Wikileaks is now "properly before him" because they sent a lawyer.
So effectively the bad people managed game Wikileaks into a jurisdiction that has nothing to do with them.
So damage has been done in a real and unjust way as a side effect of the bad ruling.
Just like in sports, it isn't fair for the ref, having screwed up in the first quarter, cannot "make it right" by ruling arbitrarily against the other team in the third quarter.
I am one of these people more or less. My depression makes me angry and apparently I become a raging aggressive ass when I go off my meds. I feel like I ma being completely normal and rational "if a little down" and everybody else has to flee before me in terror.
The fact of the matter is, this "article" sounds like some COS anti-psych bull.
There _are_ plenty of people who _shouldn't_ be on these drugs, but are. These people are playing with fate. If you don't need these drugs you better _hope_ you are one of the people they don't effect.
If you _are_ one of the people who _should_ be on these drugs, there is no "talking yourself out of it". The people who need the drugs only to get well enough for therapy are lucky.
I've been cycling on and off these drugs once every year or two for a good 18 years. Its worst when one simply stops working after a while, but sure enough, sometimes you think you have everything fixed and good, and you feel the "need to check" and _wham_, Godzilla takes Tokyo.
Find a cute icon picture for her login name, one with an animal (like a pony) and then have her give the pony (etc) a "secret name". That name is the password.
Children can remember names, even annoyingly cute manga names.
This makes the password "concrete" for her but as long as she doesn't share the pony's name its secret enough.
When she wants to change her password, you should help her change her icon as well.
This will work within the framework of the system you already have without any odd hacks or add-on software.
For all this crying, I found it very easy to get my full advertised rate from Comcast. I use a Linux box and throttle my upstream flow so as never to lose a TCP ACK in the virtually non-existent transmit buffer in my cable modem. Never lose an ACK means never suffer from TCP throttling.
Since TCP accelerates linearly and falls back exponentially, each fallback is disastrous, and if you fall back once, you are likely to do it several times in a row from the same cause.
So find out what your upstream speed is _supposed_ to be and throttle your output to between 98 and 99 percent of that value and you will get a good 7.8mbps sustained download rates.
Of course the average consumer doesn't know how to do this, but that isn't Comcast's fault. It's just wasted bandwidth.
Dad let me play with something game-like on a IBM 360 terminal.
The first "real computer game" was "Star Trek" on an acoustically coupled printing terminal in seventh grade (circa 1977).
A good friend (John Cox) introduced me to D&D version one (the three white books, plus "chainmail" if you wanted "realistic" horseback combat) in 8th grade.
But if you _must_ take the first blush at complex game theory to make an impact on me...
When I was about five, all the kids in the neighborhood got a bunch of chalk and _covered_ the big round dead-end of my street with rules and routes (like "the game of life" meets "hopscotch" with easily 100 nodes).
This thing was what gaming, and programming, and systems theory would boil down to, mulled over in the minds of 14 multi-cultured middle-schoolers (I was too young to actually be allowed to grow the system, but I did get to play in it).
Well, if you want to get actually literal, you would notice that there are a bunch of identifiers and no actions (no method invocations and no test). In both cases the whole thing is a steaming no-op. 8-)
Clearly, for any form there are exceptions that can fit in the form and break it....
But then again, the idea behind the question, and indeed the idea behind the _entire_ post had nothing much to do with the code segment the three respondents have hopped on.
Which doesn't say much about the ability of the programmers to stay on point or work with others etc...
Er, no. The first half of the code was predicate as "identical". The second half wasn't.
Meanwhile, the "code" isn't even close to rational as, if you want to get super literal, it's just a bunch of identifiers so it would be a big steaming no-op or it would be an endless loop of no-ops.
_Clearly_ a real construct offered as a test would have to be... um... real.
Funny thing is, out of three responses to the post, nobody looked at the content of the post but each of you hopped on this half of a sentence about a while loop.
Not very "big picture" on the part of _any_ of the respondents. 8-)
See the subject line... Yes, it was a tad trollish, but look at all three replies. Three people paralyzed with the need to analyze the obviously invalid code material, correcting it by half measures...
Which is all kinds of what "Bad Programming" is all about.
yes, I know. Part of the point of the question of "how you get". yes, I could have been more pedantic and written "when you can get" but I figured anybody in a position to judge the larger question (how to recognize a good programmer" would be in a position to understand the nature of the query ("how do you get") with out the instructional text as you have provided.
Clever of you to have spotted it.
Unnecessary of you to have posted your cleverness.
So you win one point for ADDRESSING the question.
But you loose one point COMPLETELY BLOWING the correction. With no definitions for A, B, C, D, and F and no invocation semantics on any of the identifiers, both would be ENDLESS LOOP noops _OR_ the former would be an endless loop while the later would be a no-op.
(but presuming A, B, C, D, and F are statements... then...)
Then you lose one point for being unable to recognize the separation of issue between the first half 'If they cannot explain why "while (X) Y;" is identical to the sequence "if (X) Y; while (X) Y;"' and the second half 'they cannot explain how to partially unroll a loop so that you get "A; B; while(F) { C; D; A; B;} C; D;" from "while (F) {A; B; C; D; }"' which is _not_ an assertion of certainty nor identical function, so the prospective. This would make the job of the prospective programmer to define or redefine A, B, C, D, and F so as to maintain the tautoloty _OR_ describe why you couldn't get the former from the latter.
Then you lose another point for "Doesn't think there is _any_ value to social norms." for feeling the need to be seen to "correct someone" for an omission or over-simple example but then only providing a partial answer that remains an incomplete definition of the problem set.
Then you lose _another_ point for "missing the big picture" of the post and only focusing on a detail.
So you are at -3 on the "good programmer scale" as proposed.
But thank you for playing... 8-)
[Wouldn't it have been easier and less humbling to have just read the post for content instead of a chance to get into a dick measuring contest? Before you respond too fast, remember "cannot laugh at themselves" is still up for evaluation... depending on how we hear your tone in the post you may be down by a half a point on that one already for "too eager to laugh at others"... 8-)]
We wont even get into the whole thing about "has no non-computer related stories or experience" even if you do show signs of "too much internet" poisoning.
And yes, I play a total dick on the internet. It's part of being able to laugh at myself as well as others. Many years ago I _was_ you, ready and eager to jump on any chance to show that I knew a particular detail or fact and yet totally unready to communicate effectively for that very eagerness.
One of the affirmative defenses against speeding is that everybody is going the same speed. If everybody goes 70mph in a particular place, then the speed limit there is 70mph.
Now _proving_ that is tricky. "The Government" has a duty to determine what the socially accepted speed is in any given location, and to adjust the speed limits there in accordance with same.
The theory breaks down in that "the government" shows up in the form of "a cop" who most people "slow down for", leaving the honest people as statistical outliers subject to enforcement.
By the actual text of the law, the government would have to constantly monitor every bodies speed everywhere, and float the limit as appropriate. Laws like 15mph in a school zone are particularly tricky in this floating respect, especially since they are backed by one of the root passwords to the US constitution: "toh noes! what about teh childrenz?!" That "wrong law" is then used by some to let the "the government" proceed to impose the "national speed limit" etc.
But if you get a speeding beef, and you get a lawyer, he will instruct you about arguing the speed limit instead of the measured speed. That is things like "since everybody around me was doing 70, and there were no countervailing conditions of weather, traction, visibility, imminent endangerment, or driver ability, my speed of 70 was the safest speed for me to be going in that place and at that time."
Keep in mind, the US federal government had no "power" that let it impose the national speed limit of 55mph. What they had was "federal highway funds" and each state was told, if you want to taste the pork, you have to post the signs...
So what is legal, and what is rational, and what is _right_ are unrelated concepts.
A good programmer is interested in what makes a feature "neat", a great programmer is interested in what makes a "neat" feature inapplicable to a problem.
Once you have determined that the person in question can program at all... (as in having asked him _once_ to code a very simple algo, with none of the stupid "I asked a stupid question to see if he'd catch it and correct me" interpersonal gamesmanship) you need to determine only three facts:
1) is the programmer faster than his own ability to reason? Plenty of "passable" programmers can write far more code than they themselves can comprehend. You DO NOT want the guy who goes into a zen trance and spews code that he cannot explain or defend or debug.
2) is the programmer capable of communicating his ideas effectively in venues other than code. This isn't _just_ the comment thing, but the comment thing is part of this. If you want the programmer to be of any value, and a "great" programmer is measurable solely by his value, then he has to be able to do more than crawl off into a hole and return with code. Programmers who cannot work and play well with others and who cannot colaborate on a project, limit their applicability and value to "functions only within the bounds of what will fit in the front of their attention span at any one moment."
3) how well can the programmer cope with being wrong, in fact or just in inference? We are all wrong and code is always broken somewhere. A programmer who cannot face being told he is wrong, cannot face being _proven_ wrong. A programmer who cannot be wrong with aplomb and without denial or tantrum, is a worthless programmer, and worthless programmers are both "not good" and "not great." In short, code full of ego is code devoid of merit.
There are exceptions to each of those guidelines, but there are no valid exceptions to all of those guidelines at once that are worth considering as worthwhile.
There are secondary warning signs:
-- Cannot work and play well with non-programmers.
-- Doesn't think there is _any_ value to social norms.
-- Always talks about what _they_ invented, never talks about what someone else invented.
-- Thinks everybody else's code is crap (with the caveat that they think none of theirs is crap)
-- Doesn't keep up with ongoing literature or developments in the field.
-- Can tell you how (language X) sucks but cannot tell you who (language X) is perfect for.
-- Says things like "I only program in C++" (or Java, or PERL, or Python). "I predominately program in C++" (etc) is okay, because specialization is often a sign of advanced experience, but beware it can just as easily be a sign of a one trick pony. This is a tough distinction to catch sometimes.
-- Doesn't read/cant tell you the last book he liked or hated/has no non-computer related stories or experience. Computers model real things, be they accouting practices or particle physics. A programmer who only thinks about programming or computer games will quickly be out of his depth when brought to confront a real problem.
-- Cannot laugh at themselves/too eager to laugh at others. A general symptom of someone who will limit every thing they engage in (not just a computer programmer metric, apply that to everyone.)
-- Cannot unroll a loop. If they cannot explain why "while (X) Y;" is identical to the sequence "if (X) Y; while (X) Y;" and then they cannot explain how to partially unroll a loop so that you get "A; B; while(F) { C; D; A; B;} C; D;" from "while (F) {A; B; C; D; }" then they have never learned the mental and computational "origami" necessary to re-envision or re-evaluate the problem presented into a "better" solution.
-- Isn't interested in what "the new guy straight out of school" has to say about what is happening. Thus they will be unable or unwilling to see when the new guy is making a mistake, and they will be unable and unwilling to entertain
My (potentially flawed) understanding is that Purify was reporting the function calls as "possibly" using a variable that was not initialized.
The relevant point was that the function in question initialized a buffer with random data (e.g. from a random number source) [e.g. _not_ "from uninitialized memory" but "_into_ uninitialized memory"] but the tool could not tell what the function was doing, so it said "look here, possibly uninitialized data".
The programmer, having no clue how to imterpret the (false positive) result simply removed the code.
This is what happens when someone who doesn't know what he is doing takes the advice of a tool that cannot understand the semantic importance of an otherwise opaque action.
If the guy had looked up the function call and seen what it did (instead of just removing it) he would have seen it as a false positive.
Thus Is It Proved: powerful tools are dangerous in the hands of the untrained.
How I maintain my performance:
Get a linux box to use as a firewall.
put in rules to control your _outgoing_ packet rate so that you don't drop the all-important TCP ACK packets as they leave your premises...
In particular throttle your outgoing bitrate to be about 98% of your advertised ustream bandwidth. That is, if you have 768kbits advertised, set the throttle to about 760kbits. Then if you know how you want to make sure that "short" TCP packets (less than about 70 bytes) have the highest priority.
This will reduce your network bandwidth _waste_ by up to two orders of magnitude (on a really crappy link, less if your link is okay, your mileage may vary).
By doing this you are helping _both_ yourself and your provider.
I don't think you have any real "right" to keep them from what is, essentially, their own data.
On the other hand, poorly formed reads can kill database performance.
I would suggest that you keep a hot snapshot slash read only hot backup database and give them ad-hoc access to that.
I forget the oracle-isms for it. Do that thing where you forward the journals from the live database to the standby database. Since that database is up, they can use it in read-only mode without you having to worry about table locks (etc) boning your tuning.
If worse comes to waors, you should be able to show them some concrete (if contrived) examples of incomplete transactions costing time and money.
But really, being territorial about the data itself is unbecoming and unprofessional.
That being said, I worked for a company that wanted to keep our customers out of our databses full of their data. The main reason was that our database was _awful_. It was dnormal and could have been used as textbook material for how not to "do a database". Columns named Field7 with the single character minus "-" for null values because the code designer didn't understand what null was or why you would want to "SELECT AVG(duration) WHERE..." wen you could put a read loop in the application.
Seriously...
What are your exact objections to allowing this access? Those objections are your reasons for disallowing the access. If your reasons are good, your argument is good. If not, not...
Well, my BitTorrents of Ubuntu, Slackware and such aren't "stealing" a single thing from a single person by _any_ definition.
The _stupid_ thing about this disruption is that it actually causes the transfers to use _more_ bandwidth.
Consider:
The participant will _still_ download the entire content.
The participant will, for every segment downloaded, now have several false starts and partial segment transfers.
Participants who elect to stop their transfers will most likely go to another means (http etc) of transfer so 100% of the content will be transferred again on top of the partial transfer that was aborted.
A given provider pays cash money only for bandwidth usage that "crosses" the boundary of their service. So every Comcast/Cox customer who would have gotten a percentage of their transfer from a peer on the same service instead gets their transfer from original source, raising Comcast/Cox/etc's upstream service usage.
Now a big company like comcast _may_ be able to soak some of this cost in proxy space so that several transferers are actually not leaving their net, but are instead getting the contents from their proxy. But that would make Comcast/Cox/etc's proxy server the agent of "illegal sharing" in those cases where the content was infringing, so I doubt they are doing that to any useful extent.
As an added bonus, by interrupting the TCP connections, they _do_ prevent the TCP window sizes from scaling up to speed, but they don't prevent the outstanding window-size-worth of packets to be delivered and discarded by the target host. That is, by inserting the reset artificially, _neither_ side had the opportunity to discard their "already queued" packets, so that buffer skid goes all the way across the internet, costing time and money and congestion but now artificially devoid of benefit to anyone.
So by sandbagging their own customers they are actually raising their bandwidth costs and in-network infrastructure usage. And an infinite number of their customers can raise their "simultaneous connections per torrent" for free. I raised my limit to something like 200 in each direction, which restored my throughput and cost Comcast one hell of a pile of churn. [I also use advanced packet shaping where my packets leave my network and hit the wire, ensuring that I never "drop" a connection request locally due to modem buffer sizes etc.]
The technique being used by the provider is a classic foot bullet by every technical measure.
Just a nit to pick...
At one company I worked with/for we included the source code (ready to use) with the product, whether you asked for it or not. Loose the disk and you were SOL.
Read the license carefully, or give it to a lawyer to read it for you. There is a very important "or" in that clause.
You are required to make the source available for three years IFF you don't provide it at the time of distribution. It's an _or_ not an _and_.
This also means that if _I_ didn't give a binary to _you_ then I have no duty to provide _you_ with any access to the source. Additionally, if I _already_ gave you the source when I gave you the binary, I am under no further duty to give you the source again.
Similarly, If I give you version 1.01 of the binary _or_ the source, I have no duty to give you source versions other than versions that constitute 1.01.
Furthermore, if I give you version 1.01 and you give version 1.01 on to "that guy", I bear no burden to provide any source to "that guy" as I didn't distribute to him.
My requirements as a distributor go exactly as far as I distribute, and no further.
In this case, however, Skype _did_ give version(s) to many people and _didn't_ give the source at that time, so they have a 3 year burden to provide _every_ _version_ they every provided to each person they provided any particular version to.
Thy are also enjoined from "adding" any additional requirement on those persons that would bar them from handing those versions of source or binary on at whatever price they chose.
So they could make those versions available, but restrict that availability to persons who could prove they got the software directly from skype.
All without the burden to publicly post a single word.
At least that's the way it _could_ have worked.
BUT since they are already in violation, when they lose this case, they may be required to publicly post by the settlement (which is what usually happens).
If they'd been "smart" they could have included the source in the download and had a checkbox for "unpack the source at this time?" and all the people who didn't so check that box, would have lost their opportunity to get the source (if they threw away the archive/installer after install).
Course that wouldn't have protected their "business interests" since their security is largely by obscurity.
One correction...
The GPL does not "prohibit charging for GPL code".
The GPL requires that the distributor of a binary provide the source with that binary, if the receiver of the binary wants it.
That is if Abe sells (third-party GPLed) programX to Barry, Abe is required to make the source available to Barry as well, for no more than incidental extra cost (media/copying costs).
Note that Abe has no duty to give Craig a copy of the source if he only distributed programX to Barry.
So if Abe charges Barry $300 for programX, then the source cost Barry money. If Craig demands the source from Abe, Abe can charge Craig any amount he wants for that source.
Of course, if Craig goes to Barry and asks for the source, Barry can give it to Craig at whatever price he chooses, including for free.
The only real moderation in this is that Abe cannot "add additional terms" in his deal with Barry that bars Barry from selling on to Craig.
The "free" in the GPL has _nothing_ to do with price. The propagation of the work (programX) creates a "surface" (or network) that could be bound by a potentially very steep real cost. That is, to get from "outside" to "inside" the surface could have a _very_ high cost.
Now Craig could go to whoever Abe got programX from in the first case, but that code would _not_ contain any of Abe's presumed additions.
===
So in this case particularly, Skype has provided the binary at a given price (0$) and in so doing have a burden to give the complete source any of the people who downloaded the program from them "for the cost already paid" "plus, optionally, a reasonable copying fee". Skype doesn't want to comply.
If today, Skype decided to start charging $110 per download of their binary, then a person who had not previously downloaded the current version of sfotware would still be entitled to the source for no additional cost, but a newcommer should expect to pay the $110 for the binary and then be able to get the source for "the price just paid plus a reasonable reproduction fee etc"
====
Skype doesn't want to "give away" "their work" but what _they_ dont understand is that part of the cost _they_ paid to receive the software was "fee" that they are required to pass on their modifications in source that they passed on as binary under this "must be available" "reasonable reproduction fee only" model.
That is, they could have gone to microsoft and paid _cash_ up front and maybe more cash on the back end per unit (at whatever pricing they could manage) for windows (etc), but they chose up front to to "only" "pay" _disclosure_ on the back end "per unit".
Now they want to say that they don't have to pay what they _agreed_ to pay for their back end per unit rights.
It is like someone licencing to pay you $1 per unit moved based on their use of your (patent, software, drill press, company name, whatever). Then that person sells a bunch of units and gives away a whole bunch more, and when they do the math they discover that they owe you 1$ * 1,000,000 units moved and they didn't make a million dollars because they gave away fully 900,000 of the units moved. So they go back and say 1$ per unit wasn't fair.
Nobody forced them to make the deal, they just didn't think ahead or do the math.
But in Skype's case they gave away the 1,000,000 units and charged for the 10,000 full service contracts. Then they realized that the leverage to charge for the 10,000 "full service" contracts is that they "added a secret" to all those giveaways.
Then they realize that the 990,000 "freeloaders" are entitled to "the secret" as are the 10,000 paying customers. Once the secret is out, they cannot expect to charge the paying customers.
They didn't do the math.
If today, they canceled the free downloads and made everybody pay up, all the existing and future people would be entitled to "the secret" because that is the deal they made when they decided to go GPL.
They should have don
I can neither confirm nor deny that I have sat in a classified lab with info controls that has a non-trivil number of points of access to the unrestricted internet. The labs may or may not have restricted the movement of cell phones, thumb drives, CD ROMS, etc.
When push comes to shove, "the individual persons" are both the weakest and most important of a security plan. Plans based on having "no bad actors" inside the security ring is important and everyday useful.
One of the major reasons to restrict the aforementioned items and movements it to prevent the _accidental_ transmission of data.
You can only inconvenience a bad actor who is deliberately trying to transmit information. That is why they don't let just anybody into classified circumstances and depend on preventing leaks with technology and security measures as a primary approach.
Any document that contains the words "while" or the more technical "meanwhile" should be sufficient prior art.
How about talking to someone on one phone while you are trying to get a fax to them? Remember that conversation when you would be talking someone through putting a roll of thermal paper in a hopper?
Actually, isn't this exactly how FTP works? I have a control channel and one or more data channels that are doing the heavy lifting once a transfer starts.
Then there is ISDN, which _requires_ two or more barer channels and the control channel just to join the party.
Isn't the web browser "maximum connections to one server" all about this as well?
Hell, the entire word "sideband" (outside of radio) has the "meat" of this patent as its definition...
Time for the pitchforks and torches everybody, meet me on the hill outside the castle!
Microsoft cannot tell the difference between Patent Encumbered Proprietary Software, Patent-Free Proprietary Software, "No such thing as software patents" Copyright Protected Software, Open Source Software, and Free Software.
There is an awful lot of Baby left in that Bathwater when you go from "Software Patents Threaten Africa's Software Sector" to "Free software, as the only available alternative to Software Patents, is non-existent charity." Hello, all of the eighties and most of the nineties are on the phone and they want the money they paid for Windows 3.1, Windows 95, and Microsoft Office back. Even you, Microsoft, made _billions_ of dollars (US) selling software that was not patented.
Maybe it isn't FUD, maybe Microsoft people are just stupid.
Turns out, I have actually oiled snakes. And I am not talking plumbing snakes.
I worked at a pet store that did some light animal care, and snakes were some of the animals we treated and kept. The oil was Linatone(tm). It helps snakes shed, and it is lightly anti-biotic and anti-microbial and anti-parasite. (it makes reptiles happy 8-).
So yes, snake oil for oiling snakes...
It was _not_ honest nor competent to give himself jusrisdiction over someone because he lured them into providing legal council because of his own previous mistake.
Were he honest, he would have voided his injunction and then ruled that he didn't have jurisdiction to hear any of that mess.
Why?
For the same reason that some random Shaia judge in some foreign country isn't allowed to rule on what you say or do.
The web site isn't in this country. The owner of record isn't in this country. The bank inst in this country.
(It's as if I were suing you in Mexico [presuming you are not Mexican, and knowing I am not] because your stationary printing was outsourced to a Mexican company, and some Mexican judge, having sent cops to your house to steal all your papers, ruled that since you sent someone to Mexico to ask for it back, you clearly intend to represent yourself there in his court.)
It's bull. There is no such thing as "entrapment" in civil court, but this is something very like that.
Just to clarify, the "owner" of Wikileaks.org isn't in the USA, let alone California. His registrar is, which is why the bank attacked there with the intent of creating the injunction. The guy is in Australia.
How would you like to find that you registered a domain name, and suddenly you were part of a civil litigation on another continent?
That's why the ruling where the judge granted himself jursidiction after being duped into luring someone into providing a lawyer across an ocean is outrageous.
This is, in some odd way, like some bizzaro-world civil entrapment.
Well, the "trick" still worked. Wikileaks is now "properly before the court since they sent [council]". So now the case is before a judge who had _no_ jurisdiction because the judge wasn't honest enough to say "this shouldn't have come before me, get out".
So now the same easily hoodwinked judge is going to be the one to rule over something that isn't even in this country.
That is _not_ honest, nor is it justice.
The system was gamed. That it may not be an _utter_ disaster in the final ruling doesn't mitigate the fact that it shouldn't be happening at all.
The judge also ruled that Wikileaks is now "properly before him" because they sent a lawyer.
So effectively the bad people managed game Wikileaks into a jurisdiction that has nothing to do with them.
So damage has been done in a real and unjust way as a side effect of the bad ruling.
Just like in sports, it isn't fair for the ref, having screwed up in the first quarter, cannot "make it right" by ruling arbitrarily against the other team in the third quarter.
I am one of these people more or less. My depression makes me angry and apparently I become a raging aggressive ass when I go off my meds. I feel like I ma being completely normal and rational "if a little down" and everybody else has to flee before me in terror.
The fact of the matter is, this "article" sounds like some COS anti-psych bull.
There _are_ plenty of people who _shouldn't_ be on these drugs, but are. These people are playing with fate. If you don't need these drugs you better _hope_ you are one of the people they don't effect.
If you _are_ one of the people who _should_ be on these drugs, there is no "talking yourself out of it". The people who need the drugs only to get well enough for therapy are lucky.
I've been cycling on and off these drugs once every year or two for a good 18 years. Its worst when one simply stops working after a while, but sure enough, sometimes you think you have everything fixed and good, and you feel the "need to check" and _wham_, Godzilla takes Tokyo.
Find a cute icon picture for her login name, one with an animal (like a pony) and then have her give the pony (etc) a "secret name". That name is the password.
Children can remember names, even annoyingly cute manga names.
This makes the password "concrete" for her but as long as she doesn't share the pony's name its secret enough.
When she wants to change her password, you should help her change her icon as well.
This will work within the framework of the system you already have without any odd hacks or add-on software.
For all this crying, I found it very easy to get my full advertised rate from Comcast. I use a Linux box and throttle my upstream flow so as never to lose a TCP ACK in the virtually non-existent transmit buffer in my cable modem. Never lose an ACK means never suffer from TCP throttling.
Since TCP accelerates linearly and falls back exponentially, each fallback is disastrous, and if you fall back once, you are likely to do it several times in a row from the same cause.
So find out what your upstream speed is _supposed_ to be and throttle your output to between 98 and 99 percent of that value and you will get a good 7.8mbps sustained download rates.
Of course the average consumer doesn't know how to do this, but that isn't Comcast's fault. It's just wasted bandwidth.
If you actually read the revocation, the "term 'fair game'" is not to be used any more. Not a single word about the _policy_, just the wording.
Thise wacos are all about the literal word of wacko-one.
The paper they wave about when the talk about the recention of policy just says STFU when you do this thing.
Really. Read it. Its so obvious and nobody I have ever seen quoted on the subject has gone "hay! that isn't a policy change, its a decree of title."
Its hard to know where to draw the line.
Neighbors got pong.
Dad let me play with something game-like on a IBM 360 terminal.
The first "real computer game" was "Star Trek" on an acoustically coupled printing terminal in seventh grade (circa 1977).
A good friend (John Cox) introduced me to D&D version one (the three white books, plus "chainmail" if you wanted "realistic" horseback combat) in 8th grade.
But if you _must_ take the first blush at complex game theory to make an impact on me...
When I was about five, all the kids in the neighborhood got a bunch of chalk and _covered_ the big round dead-end of my street with rules and routes (like "the game of life" meets "hopscotch" with easily 100 nodes).
This thing was what gaming, and programming, and systems theory would boil down to, mulled over in the minds of 14 multi-cultured middle-schoolers (I was too young to actually be allowed to grow the system, but I did get to play in it).
I still remember it with awe.
Well, if you want to get actually literal, you would notice that there are a bunch of identifiers and no actions (no method invocations and no test). In both cases the whole thing is a steaming no-op. 8-)
Clearly, for any form there are exceptions that can fit in the form and break it....
But then again, the idea behind the question, and indeed the idea behind the _entire_ post had nothing much to do with the code segment the three respondents have hopped on.
Which doesn't say much about the ability of the programmers to stay on point or work with others etc...
Which kind of proves my point... 8-)
Er, no. The first half of the code was predicate as "identical". The second half wasn't.
Meanwhile, the "code" isn't even close to rational as, if you want to get super literal, it's just a bunch of identifiers so it would be a big steaming no-op or it would be an endless loop of no-ops.
_Clearly_ a real construct offered as a test would have to be... um... real.
Funny thing is, out of three responses to the post, nobody looked at the content of the post but each of you hopped on this half of a sentence about a while loop.
Not very "big picture" on the part of _any_ of the respondents. 8-)
See the subject line... Yes, it was a tad trollish, but look at all three replies. Three people paralyzed with the need to analyze the obviously invalid code material, correcting it by half measures...
Which is all kinds of what "Bad Programming" is all about.
yes, I know. Part of the point of the question of "how you get". yes, I could have been more pedantic and written "when you can get" but I figured anybody in a position to judge the larger question (how to recognize a good programmer" would be in a position to understand the nature of the query ("how do you get") with out the instructional text as you have provided.
Clever of you to have spotted it.
Unnecessary of you to have posted your cleverness.
So you win one point for ADDRESSING the question.
But you loose one point COMPLETELY BLOWING the correction. With no definitions for A, B, C, D, and F and no invocation semantics on any of the identifiers, both would be ENDLESS LOOP noops _OR_ the former would be an endless loop while the later would be a no-op.
(but presuming A, B, C, D, and F are statements... then...)
Then you lose one point for being unable to recognize the separation of issue between the first half 'If they cannot explain why "while (X) Y;" is identical to the sequence "if (X) Y; while (X) Y;"' and the second half 'they cannot explain how to partially unroll a loop so that you get "A; B; while(F) { C; D; A; B;} C; D;" from "while (F) {A; B; C; D; }"' which is _not_ an assertion of certainty nor identical function, so the prospective. This would make the job of the prospective programmer to define or redefine A, B, C, D, and F so as to maintain the tautoloty _OR_ describe why you couldn't get the former from the latter.
Then you lose another point for "Doesn't think there is _any_ value to social norms." for feeling the need to be seen to "correct someone" for an omission or over-simple example but then only providing a partial answer that remains an incomplete definition of the problem set.
Then you lose _another_ point for "missing the big picture" of the post and only focusing on a detail.
So you are at -3 on the "good programmer scale" as proposed.
But thank you for playing... 8-)
[Wouldn't it have been easier and less humbling to have just read the post for content instead of a chance to get into a dick measuring contest? Before you respond too fast, remember "cannot laugh at themselves" is still up for evaluation... depending on how we hear your tone in the post you may be down by a half a point on that one already for "too eager to laugh at others"... 8-)]
We wont even get into the whole thing about "has no non-computer related stories or experience" even if you do show signs of "too much internet" poisoning.
And yes, I play a total dick on the internet. It's part of being able to laugh at myself as well as others. Many years ago I _was_ you, ready and eager to jump on any chance to show that I knew a particular detail or fact and yet totally unready to communicate effectively for that very eagerness.
One of the affirmative defenses against speeding is that everybody is going the same speed. If everybody goes 70mph in a particular place, then the speed limit there is 70mph.
Now _proving_ that is tricky. "The Government" has a duty to determine what the socially accepted speed is in any given location, and to adjust the speed limits there in accordance with same.
The theory breaks down in that "the government" shows up in the form of "a cop" who most people "slow down for", leaving the honest people as statistical outliers subject to enforcement.
By the actual text of the law, the government would have to constantly monitor every bodies speed everywhere, and float the limit as appropriate. Laws like 15mph in a school zone are particularly tricky in this floating respect, especially since they are backed by one of the root passwords to the US constitution: "toh noes! what about teh childrenz?!" That "wrong law" is then used by some to let the "the government" proceed to impose the "national speed limit" etc.
But if you get a speeding beef, and you get a lawyer, he will instruct you about arguing the speed limit instead of the measured speed. That is things like "since everybody around me was doing 70, and there were no countervailing conditions of weather, traction, visibility, imminent endangerment, or driver ability, my speed of 70 was the safest speed for me to be going in that place and at that time."
Keep in mind, the US federal government had no "power" that let it impose the national speed limit of 55mph. What they had was "federal highway funds" and each state was told, if you want to taste the pork, you have to post the signs...
So what is legal, and what is rational, and what is _right_ are unrelated concepts.
With green folding applause.
But no, more seriously...
A good programmer is interested in what makes a feature "neat", a great programmer is interested in what makes a "neat" feature inapplicable to a problem.
Once you have determined that the person in question can program at all... (as in having asked him _once_ to code a very simple algo, with none of the stupid "I asked a stupid question to see if he'd catch it and correct me" interpersonal gamesmanship) you need to determine only three facts:
1) is the programmer faster than his own ability to reason? Plenty of "passable" programmers can write far more code than they themselves can comprehend. You DO NOT want the guy who goes into a zen trance and spews code that he cannot explain or defend or debug.
2) is the programmer capable of communicating his ideas effectively in venues other than code. This isn't _just_ the comment thing, but the comment thing is part of this. If you want the programmer to be of any value, and a "great" programmer is measurable solely by his value, then he has to be able to do more than crawl off into a hole and return with code. Programmers who cannot work and play well with others and who cannot colaborate on a project, limit their applicability and value to "functions only within the bounds of what will fit in the front of their attention span at any one moment."
3) how well can the programmer cope with being wrong, in fact or just in inference? We are all wrong and code is always broken somewhere. A programmer who cannot face being told he is wrong, cannot face being _proven_ wrong. A programmer who cannot be wrong with aplomb and without denial or tantrum, is a worthless programmer, and worthless programmers are both "not good" and "not great." In short, code full of ego is code devoid of merit.
There are exceptions to each of those guidelines, but there are no valid exceptions to all of those guidelines at once that are worth considering as worthwhile.
There are secondary warning signs:
-- Cannot work and play well with non-programmers.
-- Doesn't think there is _any_ value to social norms.
-- Always talks about what _they_ invented, never talks about what someone else invented.
-- Thinks everybody else's code is crap (with the caveat that they think none of theirs is crap)
-- Doesn't keep up with ongoing literature or developments in the field.
-- Can tell you how (language X) sucks but cannot tell you who (language X) is perfect for.
-- Says things like "I only program in C++" (or Java, or PERL, or Python). "I predominately program in C++" (etc) is okay, because specialization is often a sign of advanced experience, but beware it can just as easily be a sign of a one trick pony. This is a tough distinction to catch sometimes.
-- Doesn't read/cant tell you the last book he liked or hated/has no non-computer related stories or experience. Computers model real things, be they accouting practices or particle physics. A programmer who only thinks about programming or computer games will quickly be out of his depth when brought to confront a real problem.
-- Cannot laugh at themselves/too eager to laugh at others. A general symptom of someone who will limit every thing they engage in (not just a computer programmer metric, apply that to everyone.)
-- Cannot unroll a loop. If they cannot explain why "while (X) Y;" is identical to the sequence "if (X) Y; while (X) Y;" and then they cannot explain how to partially unroll a loop so that you get "A; B; while(F) { C; D; A; B;} C; D;" from "while (F) {A; B; C; D; }" then they have never learned the mental and computational "origami" necessary to re-envision or re-evaluate the problem presented into a "better" solution.
-- Isn't interested in what "the new guy straight out of school" has to say about what is happening. Thus they will be unable or unwilling to see when the new guy is making a mistake, and they will be unable and unwilling to entertain