Do you have a source for that response? Because if they really said that, they were making it up. The form in question allows you to opt out of royal mail direct door-to-door deliveries, which is a totally different service from normal mail delivery and is not used for bills, tax demands or passports.
Based on what I read last time this was mentioned, Goodmail will only let you sign up if you're a trading company with good reputation, and will cancel your account if they receive too many complaints about messages you're sending with it.
Based on everything I've read, I think they are truly working from the perspective of an anti-spam solution, particularly with emphasis on building a globally-usable whitelist to ensure that messages don't get caught by spam filters. It's an interesting approach: unscalable and ultimately doomed to failure, but then what anti-spam solution isn't?
Where's a copy of that checklist when you need one?
glibc and libstd++ are LGPL, which permits binary only distribution.
Not of statically linked code. See section 6, which requires that enough materials be given (or offered) to the user to make a version of the program that uses a modified copy of the library.
2. Can I statically link the code with Linux libraries? (My own experience shows that dynamic linking is too much to bear.)
Yes, glibc is licensed under the LGPL which is compatible with non-free software.
You cannot freely statically link non-free code to LGPL code. See section 6:
As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. [....] Also, you must do one of these things:
1. Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work [...] and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink [...]
2. Use a suitable shared library mechanism for linking with the Library. [...]
3. Accompany the work with a written offer [to fulfil section 1...]
4. If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place.
5. Verify that the user has already received a copy of these materials or that you have already sent this user a copy. [...]
2. Can I statically link the code with Linux libraries? (My own experience shows that dynamic linking is too much to bear.) Only if it's LGPL
LGPL does not allow you to statically link the code. One of the terms of the LGPL requires that it be possible to make modifications to the LGPL'd code and incorporate these into the distributed program. This cannot be done with a statically linked executable (unless you're also distributing linkable object files).
2. Yes if they are LGPL. Which includes the standard C++ libraries. Some components such as the kernel also have certain binary waivers.
No if they are LGPL. LGPL requires you to be able to update the LGPL'd license, which effectively means it must either be dynamically linked, or you must distribute your.o files and a script to link them. glibc is not LGPL, though -- it is "GPL with the libc exception" which does allow you to link an application statically against it. Check other libraries for their own terms.
4. Could I be forced to publish this code by some 3-d party? Not unless a court says. Obviously if you violate the GPL you are taking a major risk of somebody finding out and forcing your code out into the open.
This isn't an expected outcome. Nobody can force you to release your source, even if you violate the GPL. Of course you can be forced to pay compensation to the GPL developers whose IP rights you have violated, and they may be prepared to negotiate if you choose to release your source.
Interesting. I'd never considered that the use of e-mail addresses as a unique identifier caused information about a person to become publicly available, but it is pretty clear that it does.
I wonder how this sits with EU data protection laws, which make it illegal to reveal personal data about a third party as part of a business without that person's consent.
Second, I believe that there are a number of garbage collectors available as libraries for C++. I've heard boehm's garbage collector mentioned numerous times. My question is, are any of these libraries any good? Are they really practical to use in real world applications? Do you have to modify all of your types to use it, or can primitive and stl types work with it?
I've deployed Boehm GC in real world applications before now, and consider the quality of the collector pretty good. It isn't a real-time collector, but on a reasonably low-end computer (350MHz PII) running applications with average memory requirements (total ~50MB in objects of around 100 bytes - 2K in size) delay times were minimal (around 10ms, which I arranged to occur after event processing when it was found that no new event was waiting, hence was rarely detected by the user). You can use any type you want with it -- there are at least three different approaches:
* Make your classes inherit from a 'gc' base class * Use a placement new operator (e.g. "new (GC) MyObject;" or "new (PointerFreeGC) char[16384];") * Use the provided 'malloc' replacement library to replace all dynamic memory allocations with a GC allocation.
I chose to go the second route, because it gave me the most control. I had to spend a little time debugging problems caused by forgetting to include the (GC), but certainly less than I would have spent debugging undeleted objects had I not used the collector.
Cat-5e, not Cat-5. The difference is 1gbps vs 100mbps.
Even if he installs Cat-5, he still gets 100Mbps full duplex compared to the ~70Mbps half duplex that's the realistic limit on a wireless network (because of the fact that the access point retransmits your packet, you can only ever use half the available capacity).
Just wifi it all up really good (multi-channels) and use that wifi blocking paint on the outside to keep others out.
Having tried this approach, I can say it's a long way from ideal. Bandwidth on my 802.11g network sucks. I rarely get a connection at better than 32Mbps. Actual utilisation only seems to ever get up to about 10% of this figure. I have frequent connection dropouts, resulting in long-running processes having their files closed. Right now, I'm planning to switch back to 100Mbps ethernet (making sure the cables are future-proofed so I can switch to Gb when it becomes cheap enough), and just keep the wireless access point for the laptop.
If he's completely renovated, I expect all that old wiring has been stripped out. Or at the very least he's disconnected it and run new wires alongside it.
Which seems to have been done in my house prior to me buying it. Several times. I took the kitchen ceiling down -- because somebody had pasted polystyrene tiles to it -- and there were like hundreds of wires running everywhere. And I'm not actually exaggerating.
You can go with conduit and pull anything in the future, or probably be safe with a lot of cat5e and coax.
I'd definitely put those conduits in. You never know what future requirements will be (says somebody who put together a house when thin ethernet was popular...).
The 7.1 speakers in your AV room is good, you can get nice in-wall speakers, which makes things look cleaner.
Yes, but you end up with speakers not facing in the ideal direction. Wall-mounting brackets are ideal, IMO.
As long as you're wiring, also remember that you need power for stuff. Don't skimp on electrical outlets.
Absolutely. And don't understimate their value when you come to sell a house, either: a friend of mine is in the property development trade, and reckons he always gets positive opinions about the number he puts in from prospective buyers. Most people think the average house doesn't have enough.
As for other questions from the OP:
Install automated lights and intercom (with support for Apple equipment)? How about appliances, the kitchen, and other spots... what cool tech can I use there?
Automated lights aren't particularly useful, IMO. As for the intercom, they aren't expensive, so maybe it's a good plan. Although with your cable conduits you'll easily be able to put one in later if you choose to. In the kitchen, I'd seriously suggest considering an induction cooker. Yes, you may have to replace your pans, but they are really good. The best thing about them, compared to any other type I've ever used, is if you spill something, you can just pick up your pan and wipe down the surface without having to worry about burning yourself. Plus you get as much control as you do with gas, without the ignition danger that normally goes with it.
Another poster pointed out the relevant EULA clause:...You may not work around technical limitations in the software... This is also in Microsoft's other agreements. I would like to see this particular onerous line challenged in court. It is very vague, and probably impossible to judge or enforce. Lots of things have technical limitations, and people work around them all the time. I don't like EULAs in general, and this is a good place to start challenging them.
And it's probably a good thing that this is being heard in a British court. We have a general rule that an ambiguous term in a contract (and this is well and truly ambiguous) should always be interpreted in the way that is most favourable to whichever party to the contract had the least power to arrange different terms (i.e, in this case, the small developer). Which means that this term is pretty much useless, as the most narrow definition possible of it excludes pretty much anything. It would probably still apply to Windows activation, or any other hack that actively removes a restriction by modifying code. I don't believe that is the case here.
Because they've become a ten tonne lumbering monster. Yes, they could do this. It would probably take them about six months to get it out of the door. The guy with his unit test framework could probably fix it and have it back up working again in a week.
According to the Microsoft legal threat, the relevant portion of the Visual Studio Express EULA is:...you may use the software only as expressly permitted in this agreement. In doing so you must comply with any technical limitations in the software that only allow you to use it in certain ways... You may not work around technical limitations in the software.
The full paragraph in question is:
9. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. For more information, see www.microsoft.com/licensing/userights. You may not
work around any technical limitations in the software;
reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation;
make more copies of the software than specified in this agreement or allowed by applicable law, despite this limitation;
publish the software for others to copy;
rent, lease or lend the software; or
use the software for commercial software hosting services
Note that the author is based in the UK (his company, Mutant Design Limited, is registered to an address in London), so the "applicable law" includes both UK and EU law. MS's complaint seems to mostly be that he reverse engineered the software in order to determine how to make his extension (they also seem to be suggesting he worked around a technical limitation, but that doesn't actually appear to be the case to me -- the software was capable of doing this all along, it just wasn't documented how to make it do it). I'll grant it is almost certainly true: he did reverse engineer VSE in order to determine how to make his extension work with it.
Reverse engineering is allowed under Article 6 [of the European Copyright Directive], but only for the single purpose of producing an interoperable program (rather than a competing program).
If TestDriven.NET isn't an interoperable non-competing program, I don't know what is.
Are you sure it stands for Consumer Electronics Association? I think the opinion of the Council of Economic Advisors would be just as relevant (i.e., not particularly).
My thoughts exactly. Based on looking at the wikipedia disambiguation page, there are at least 15 well-known organisations that use this set of initials. None of them seem like their opinion would be particularly relevant to this case, so perhaps it isn't even one of these. Submitter: WTF are you talking about?
"A Hong Kong CD Reseller has been found to be in breach of contract, by violating an agreement it made with British record companies in 2004. It agreed to certain restraints on its trade practices in exchange for financial consideration but did not abide by the terms of its contract. In football news, the Manchester..."
Doesn't really sell into Your Rights Online, does it?
No, but "A Hong Kong CD Reseller has been found to be in breach of contract, by violating an agreement it made with British record companies in 2004. It agreed to certain restraints on its trade practices in order to avoid being sued for copyright infringement, a case it claimed it could not afford to defend but did not abide by the terms of its contract. In football news, the Manchester..." does. See the link to the 2004 article on the top right of TFA.
Because MSI doesn't support automatic dependency resolution, would be the major reason. A simple wrapper around MSI would be the ideal way of achieving this goal, but MSI alone doesn't provide the kind of feature set we've grown used to in the Linux world.
The second reason is Windows-specific. On UNIX, you can delete a file that applications have open, and it will not actually be removed from the disk until the last application with an open handle for it exits. On Windows, you can't do this.
This isn't true and hasn't been for a while. Windows since XP will allow you to delete, move or rename files that are open, as long as none of the opening applications has requested otherwise. Specifically, in use program and DLL files can be deleted, or (more usefully) renamed.
Almost all graphics algorithms are embarrasingly parallel. That's why you'll find your GPU is essentially a highly parallel processor, with insane numbers of simple cores all operating (largely) independently of each other. For instance, a GeForce 8800 GTX has 128 stream processors and 32 texture processors; each of these is essentially a customised (although not particularly powerful) processor optimised to perform a particular task.
Do you have a source for that response? Because if they really said that, they were making it up. The form in question allows you to opt out of royal mail direct door-to-door deliveries, which is a totally different service from normal mail delivery and is not used for bills, tax demands or passports.
Based on what I read last time this was mentioned, Goodmail will only let you sign up if you're a trading company with good reputation, and will cancel your account if they receive too many complaints about messages you're sending with it.
Based on everything I've read, I think they are truly working from the perspective of an anti-spam solution, particularly with emphasis on building a globally-usable whitelist to ensure that messages don't get caught by spam filters. It's an interesting approach: unscalable and ultimately doomed to failure, but then what anti-spam solution isn't?
Where's a copy of that checklist when you need one?
Sounds interesting. You don't happen to have a link, do you?
I hope he pays in pennies. Dumptrucked to the front steps of the courthouse.
Amusing, but unfortunately the court isn't required to accept them. Legal tender only allows pennies to a value of 25 cents.
glibc and libstd++ are LGPL, which permits binary only distribution.
Not of statically linked code. See section 6, which requires that enough materials be given (or offered) to the user to make a version of the program that uses a modified copy of the library.
Yes, glibc is licensed under the LGPL which is compatible with non-free software.
You cannot freely statically link non-free code to LGPL code. See section 6:
2. Can I statically link the code with Linux libraries? (My own experience shows that dynamic linking is too much to bear.) Only if it's LGPL
LGPL does not allow you to statically link the code. One of the terms of the LGPL requires that it be possible to make modifications to the LGPL'd code and incorporate these into the distributed program. This cannot be done with a statically linked executable (unless you're also distributing linkable object files).
2. Yes if they are LGPL. Which includes the standard C++ libraries. Some components such as the kernel also have certain binary waivers.
.o files and a script to link them. glibc is not LGPL, though -- it is "GPL with the libc exception" which does allow you to link an application statically against it. Check other libraries for their own terms.
No if they are LGPL. LGPL requires you to be able to update the LGPL'd license, which effectively means it must either be dynamically linked, or you must distribute your
4. Could I be forced to publish this code by some 3-d party?
Not unless a court says. Obviously if you violate the GPL you are taking a major risk of somebody finding out and forcing your code out into the open.
This isn't an expected outcome. Nobody can force you to release your source, even if you violate the GPL. Of course you can be forced to pay compensation to the GPL developers whose IP rights you have violated, and they may be prepared to negotiate if you choose to release your source.
Interesting. I'd never considered that the use of e-mail addresses as a unique identifier caused information about a person to become publicly available, but it is pretty clear that it does.
I wonder how this sits with EU data protection laws, which make it illegal to reveal personal data about a third party as part of a business without that person's consent.
Second, I believe that there are a number of garbage collectors available as libraries for C++. I've heard boehm's garbage collector mentioned numerous times. My question is, are any of these libraries any good? Are they really practical to use in real world applications? Do you have to modify all of your types to use it, or can primitive and stl types work with it?
I've deployed Boehm GC in real world applications before now, and consider the quality of the collector pretty good. It isn't a real-time collector, but on a reasonably low-end computer (350MHz PII) running applications with average memory requirements (total ~50MB in objects of around 100 bytes - 2K in size) delay times were minimal (around 10ms, which I arranged to occur after event processing when it was found that no new event was waiting, hence was rarely detected by the user). You can use any type you want with it -- there are at least three different approaches:
* Make your classes inherit from a 'gc' base class
* Use a placement new operator (e.g. "new (GC) MyObject;" or "new (PointerFreeGC) char[16384];")
* Use the provided 'malloc' replacement library to replace all dynamic memory allocations with a GC allocation.
I chose to go the second route, because it gave me the most control. I had to spend a little time debugging problems caused by forgetting to include the (GC), but certainly less than I would have spent debugging undeleted objects had I not used the collector.
Cat-5e, not Cat-5. The difference is 1gbps vs 100mbps.
Even if he installs Cat-5, he still gets 100Mbps full duplex compared to the ~70Mbps half duplex that's the realistic limit on a wireless network (because of the fact that the access point retransmits your packet, you can only ever use half the available capacity).
Just wifi it all up really good (multi-channels) and use that wifi blocking paint on the outside to keep others out.
Having tried this approach, I can say it's a long way from ideal. Bandwidth on my 802.11g network sucks. I rarely get a connection at better than 32Mbps. Actual utilisation only seems to ever get up to about 10% of this figure. I have frequent connection dropouts, resulting in long-running processes having their files closed. Right now, I'm planning to switch back to 100Mbps ethernet (making sure the cables are future-proofed so I can switch to Gb when it becomes cheap enough), and just keep the wireless access point for the laptop.
If he's completely renovated, I expect all that old wiring has been stripped out. Or at the very least he's disconnected it and run new wires alongside it.
Which seems to have been done in my house prior to me buying it. Several times. I took the kitchen ceiling down -- because somebody had pasted polystyrene tiles to it -- and there were like hundreds of wires running everywhere. And I'm not actually exaggerating.
Since the house has been gutted, you can install an entire system of pneumatic tubes, one to each room.
You can tell people it's like the Internet.
You can go with conduit and pull anything in the future, or probably be safe with a lot of cat5e and coax.
I'd definitely put those conduits in. You never know what future requirements will be (says somebody who put together a house when thin ethernet was popular...).
The 7.1 speakers in your AV room is good, you can get nice in-wall speakers, which makes things look cleaner.
Yes, but you end up with speakers not facing in the ideal direction. Wall-mounting brackets are ideal, IMO.
As long as you're wiring, also remember that you need power for stuff. Don't skimp on electrical outlets.
Absolutely. And don't understimate their value when you come to sell a house, either: a friend of mine is in the property development trade, and reckons he always gets positive opinions about the number he puts in from prospective buyers. Most people think the average house doesn't have enough.
As for other questions from the OP:
Install automated lights and intercom (with support for Apple equipment)? How about appliances, the kitchen, and other spots... what cool tech can I use there?
Automated lights aren't particularly useful, IMO. As for the intercom, they aren't expensive, so maybe it's a good plan. Although with your cable conduits you'll easily be able to put one in later if you choose to. In the kitchen, I'd seriously suggest considering an induction cooker. Yes, you may have to replace your pans, but they are really good. The best thing about them, compared to any other type I've ever used, is if you spill something, you can just pick up your pan and wipe down the surface without having to worry about burning yourself. Plus you get as much control as you do with gas, without the ignition danger that normally goes with it.
Wow. I'm impressed. Somebody actually _read_ the article.
Another poster pointed out the relevant EULA clause: ...You may not work around technical limitations in the software...
This is also in Microsoft's other agreements. I would like to see this particular onerous line challenged in court. It is very vague, and probably impossible to judge or enforce. Lots of things have technical limitations, and people work around them all the time. I don't like EULAs in general, and this is a good place to start challenging them.
And it's probably a good thing that this is being heard in a British court. We have a general rule that an ambiguous term in a contract (and this is well and truly ambiguous) should always be interpreted in the way that is most favourable to whichever party to the contract had the least power to arrange different terms (i.e, in this case, the small developer). Which means that this term is pretty much useless, as the most narrow definition possible of it excludes pretty much anything. It would probably still apply to Windows activation, or any other hack that actively removes a restriction by modifying code. I don't believe that is the case here.
Because they've become a ten tonne lumbering monster. Yes, they could do this. It would probably take them about six months to get it out of the door. The guy with his unit test framework could probably fix it and have it back up working again in a week.
The full paragraph in question is:
Note that the author is based in the UK (his company, Mutant Design Limited, is registered to an address in London), so the "applicable law" includes both UK and EU law. MS's complaint seems to mostly be that he reverse engineered the software in order to determine how to make his extension (they also seem to be suggesting he worked around a technical limitation, but that doesn't actually appear to be the case to me -- the software was capable of doing this all along, it just wasn't documented how to make it do it). I'll grant it is almost certainly true: he did reverse engineer VSE in order to determine how to make his extension work with it.
However, he is almost certainly allowed by EU law to perform reverse engineering. See this summary of the legal status of reverse engineering in various disciplines, specifically:
If TestDriven.NET isn't an interoperable non-competing program, I don't know what is.
Are you sure it stands for Consumer Electronics Association? I think the opinion of the Council of Economic Advisors would be just as relevant (i.e., not particularly).
My thoughts exactly. Based on looking at the wikipedia disambiguation page, there are at least 15 well-known organisations that use this set of initials. None of them seem like their opinion would be particularly relevant to this case, so perhaps it isn't even one of these. Submitter: WTF are you talking about?
"A Hong Kong CD Reseller has been found to be in breach of contract, by violating an agreement it made with British record companies in 2004. It agreed to certain restraints on its trade practices in exchange for financial consideration but did not abide by the terms of its contract. In football news, the Manchester..."
Doesn't really sell into Your Rights Online, does it?
No, but "A Hong Kong CD Reseller has been found to be in breach of contract, by violating an agreement it made with British record companies in 2004. It agreed to certain restraints on its trade practices in order to avoid being sued for copyright infringement, a case it claimed it could not afford to defend but did not abide by the terms of its contract. In football news, the Manchester..." does. See the link to the 2004 article on the top right of TFA.
Because MSI doesn't support automatic dependency resolution, would be the major reason. A simple wrapper around MSI would be the ideal way of achieving this goal, but MSI alone doesn't provide the kind of feature set we've grown used to in the Linux world.
The second reason is Windows-specific. On UNIX, you can delete a file that applications have open, and it will not actually be removed from the disk until the last application with an open handle for it exits. On Windows, you can't do this.
This isn't true and hasn't been for a while. Windows since XP will allow you to delete, move or rename files that are open, as long as none of the opening applications has requested otherwise. Specifically, in use program and DLL files can be deleted, or (more usefully) renamed.
Almost all graphics algorithms are embarrasingly parallel. That's why you'll find your GPU is essentially a highly parallel processor, with insane numbers of simple cores all operating (largely) independently of each other. For instance, a GeForce 8800 GTX has 128 stream processors and 32 texture processors; each of these is essentially a customised (although not particularly powerful) processor optimised to perform a particular task.