I dont care about Broadcom's politics. I cant change them and the Pi has been incredibly useful to me in learning and teaching electronics. I would love for the whole thing to be open, but its just not happening, so we must accept that the net gain from the PI is still a benefit to humanity, no matter how slightly 'impure' the ideology. Most of the device is 'open'.
Yes, but for some reason I find hard to fathom it attracts attention away from other products that would be just as good at fulfilling the same goals and *are* completely open. I have no doubt that if, say, Olimex's OLinuxIno sold in similar quantities to the RPi it would be available at about the same price, rather than a slightly higher for a much better board, as it is currently.
Would you mind tell me who are the competitors? I am pretty interested in alternative products if any at a competitive price.
I'm personally a fan of Olimex's boards. They're open hardware, and tend to have superior boards to the RPi at only slightly higher prices. E.g. their entry level board (details here) is £28 versus about £20 for a RPi model A. It has a much faster processor (1GHz superscalar Cortex A8 vs 700MHz previous-generation single-dispatch ARM11, so probably about twice as fast), more GPIOs (74 pins vs RPi's 26), USB-OTG, audio-in, RTC, plus uses a processor that does not rely on an undocumented proprietary DSP to boot. And did I mention it's open hardware, so you could build your own if wanted to?
But currently renting a movie on Vu is $6.00. Would $6.00 be very reasonable for owning unless I'm miss understanding the DRM Free concept.
$6 is very high for renting a movie. I can rent a physical copy locally for $3-$5, depending on how new the title is, or I could get a netflix subscription for less than $10 per month (as I watch about 5-10 movies per month, this works out at $1-$2 each).
Nonsense. It might do so rarely, but there are many documented cases in military history of men being sentenced to 1,000 lashes or more and surviving. Permanent disablement was an expected outcome of such a sentence, but not usually death. In a recent case of a teenage girl sentenced to 100 lashes in the Maldives, Amnesty International described the likely outcome as "long-term psychological as well as physical scars". I would imagine they had an expert on the subject make this assessment.
You question the conscientiousness of the programmers in the first paragraph and assume it in the second.
Yes. Most developers I've worked with pay an awful lot more attention to the code than to the documentation. It may not be desirable, but it's what happens in almost all cases. I know I'm guilty of it at times, even though I try not to be. If I see a problem with the code, I'll refactor it. Problems with documentation, (1) I'm less likely to notice them and (2) I'm less likely to actually fix them if I do notice them.
I'm sure there are shady hosts out there but is it really so widespread?
Who said anything is widespread? The disclosure being requested here affects less than 1% of the airbnb service providers in NY. If only 1% of them are "shady" you'd be highly unlikely to have seen them unless you used the service a lot.
As i look around *my* room, i see embedded linux devices that are running mostly binaries primarily written in C, many smaller electronics with simple micro controllers, even a windows CE embedded device running software written in.NET and one java based device my phone..
If i think about whats in my car, its a windows CE embedded device running native applications.
java does a lot of enterprise, android and a decent % of webapps. other than android apps rarely do i see something that is java that behaves as well as the non java equivalents
Do you have a BluRay player? A DVB-based set-top box or a TV with integrated DVB decoder? Either of these would typically include a JVM.
Then you get to enjoy the unbearably slow performance, and HP-UX style UI from 1992.
Ahh good ol' CDE i never drew the comparison but that's bang on lol, i wonder if java's ui elements were modeled after CDE
When running on X11, Java's default UI is based on the motif toolkit, which is the same toolkit that CDE was based on, so the answer to your question is "indirectly".
I can pass the latest whizz-bang object that just happens to have the right attributes in to the old library code and get it back out the other side without having it cast to a crippled shadow of its former self.
You can also pass any object that happens to have attributes that have been coincidentally named the same but don't necessarily have the same semantics, and wait for the entire system to blow up (which it may or may not do in simple test cases, depending on how closely the semantics happen to match).
In reality, I don't find that unrelated classes tend to have methods or properties that share both a name and exactly the same semantic definition except where that similarity is intentional. When it is intentional, then usually the two classes will share an explicitly defined interface. On rare occasions they do not, it is trivial to write a wrapper for the objects, and the necessity of doing so is a good prompt to think about whether the definitions are in fact exactly the same.
Unless calling functions when you don't know what they are has become common practice these days, why do you need the IDE to tell you what the docstring says.
Because it is well known that on any large project staffed by any but the most conscientious of developers, documentation has a tendency to become outdated. The type specified in statically-typed code, however, *cannot* be wrong.
If you program with the assumption that whatever the IDE doesn't reject is permitted, bad things will happen.
You don't program with that assumption: you program explicitly towards that goal. This is the Liskov Substitutability Principle, one of the most basic tenets of object-oriented programming: if an object of a given type is allowed in some operation, any object of any sub-type of that type should also be allowed. Code that violates this principle should be actively removed from your project whenever it is found.
Of course, it's not clear that there is any sensible numeric rating scale for programmers, and it would be interesting to argue about what the modal average would be
Or even, indeed, that there exists a total ordering, the lack of which would make the notion of a median meaningless, too.
If you're done everything on Sun Java 1.5, and suddenly Oracle changes it to "Oracle Java" 1.6, you're SOL.
??? I've been writing Java applications since 1.1 was the current version, and I've never had one stop working with a version update.
The only experience I've had with such failures are 3rd party applications where the developer has used the deprecated com.sun.* APIs. The guidelines on using these have been quite clear from the very beginning, though: don't, unless you want to create compatibility problems for your users.
Bullshit. Android's implementation may not be completely up-to-date, but it is absolutely a version of Java. Only trademark and licensing issues prevent Google from claiming that it is.
OSX comes (used to come?) with outdated versions where a lot of Java programs don't run properly
Who cares what version is installed by default? OSX can be upgraded to the latest version, and any application that needs it ought to provide an installation package that does precisely that, or at least clear instructions to the user on how to do it.
Linux comes with OpenJDK which doesn't run quite a lot of Java programs either
As of version 8, OpenJDK is the reference implementation. Any Java program that doesn't run on OpenJDK is not a conforming pure Java application. Besides, it is perfectly possible to install Oracle Java on a Linux system if you prefer it. Depending on your distribution, it may be as simple as a single command, or you may need to add an update source first (which turns it into 3 commands on Ubuntu, for instance).
It's "cross platform" only if your definition is "it's a huge pain and doesn't work properly on any platform without extensive workarounds"
I'd hardly call any of these "extensive workarounds". Yes, you may have to refrain from using the latest APIs if you want to target certain platforms. Or you may have to have the end user install an upgrade to their preinstalled Java system. Neither of these is actually that hard.
The typical Java project is a big steaming mess of factory classes, wired beans, annotations, aspects, xml, and all the other workarounds that are needed to give the same functionality that's built into dynamically typed languages.
OK, I'll bite. What built-in feature of... let's say python... allows you to replace the functionality of a factory class without needing to implement something that either is a factory class or is very similar to one?
He also brings up some timing advice: since businesses are allowed to deduct the costs of doing business, you don't want kickstarter to cut your check on December 31st.
Here in the UK we're allowed to claim expenses in a tax year if they relate to business conducted in that year even if the expense is paid for in a later period (see http://www.hmrc.gov.uk/manuals...). Is this not the case in the US?
Plus it's also irrelevant when kickstarter pay you: you pay the tax on the money you receive in the tax bill for the period in which you earn it, which for preorders (which is what kickstarter finance effectively is in most cases) is the period in which the product is dispatched, not the period you receive the money.
He also brings up some timing advice: since businesses are allowed to deduct the costs of doing business, you don't want kickstarter to cut your check on December 31st.
Here in the UK we're allowed to claim expenses in a tax year if they relate to business conducted in that year even if the expense is paid for in a later period (see http://www.hmrc.gov.uk/manuals...). Is this not the case in the US?
Indeed. Their entire product seems to be "we've got this wonderful solution to problems caused by databases that aren't in 3NF: you put your database in 3NF and then calculate the dependent value on the fly" which is of course exactly the same thing we've been doing since 1971 when Codd first described 3NF, but hey, they've got a funky new buzzword for it so it's obviously cool again.
- Is SQL really that right language for encoding business logic?
- Triggers are kind of an anti-pattern.
- What about atomicity? What if I need the whole reaction chain to work or none of it.
I'm afraid there more questions than answers with this proposed pattern.
Yep. It's worth noting that in both of the articles linked the only reason the logic is complex is because their databases aren't correctly normalized. To be specific, their tables are not in 3NF.
On other platforms, this is solved by nspluginwrapper, which runs the plugin as a separate process and just sends events and screen contents between them. Given that most web browsers now do something similar for security and stability (so a plugin can't crash the browser and a security problem in the plugin is isolated), it's not likely to be a significant issue.
Unfortunately, Windows' security model is somewhat different to X's, and under Windows you can't just have two processes rendering into the same window without them being written quite carefully to cooperate with each other. Chrome is able to do this, but AIUI the method they use to make it work is (1) so complicated nobody else has even tried to make it work and (2) relies on a hack that fails if they try to have one of the processes as 64-bit and the other as 32-bit. AFAIK, Chrome is the only browser that runs NPAPI in a separate process under Windows.
I don't know how many pins a current Cortex A-9 has but I'd bet it's over 300...
Varies depending on the precise implementation. The smallest I'm aware of is the Allwinner A13, which has a 176-pin package. It's possible that some application-specific chips have fewer: the A13 is designed to run with external RAM and NAND flash, high colour LCD display and multiple additional external peripherals, which explains the pin count -- but if you designed a chip with onboard RAM and storage for an application where monochrome display was standard and you only wanted to talk to a handful of peripherals, I'm sure you could get the pin count down to something a lot more manageable.
No. Firefox is 32-bit because it has to support NPAPI plugins, which are mostly (if not all) 32-bit DLLs, and Windows can't load a 32-bit DLL into a 64-bit process.
gameboy tetris is too easy. if you want to make sure people are paying attention, you want a version where pressing the 'drop' button at the wrong time is instant death. The gameboy version just accelerates the block, IIRC.
I dont care about Broadcom's politics. I cant change them and the Pi has been incredibly useful to me in learning and teaching electronics. I would love for the whole thing to be open, but its just not happening, so we must accept that the net gain from the PI is still a benefit to humanity, no matter how slightly 'impure' the ideology. Most of the device is 'open'.
Yes, but for some reason I find hard to fathom it attracts attention away from other products that would be just as good at fulfilling the same goals and *are* completely open. I have no doubt that if, say, Olimex's OLinuxIno sold in similar quantities to the RPi it would be available at about the same price, rather than a slightly higher for a much better board, as it is currently.
Would you mind tell me who are the competitors? I am pretty interested in alternative products if any at a competitive price.
I'm personally a fan of Olimex's boards. They're open hardware, and tend to have superior boards to the RPi at only slightly higher prices. E.g. their entry level board (details here) is £28 versus about £20 for a RPi model A. It has a much faster processor (1GHz superscalar Cortex A8 vs 700MHz previous-generation single-dispatch ARM11, so probably about twice as fast), more GPIOs (74 pins vs RPi's 26), USB-OTG, audio-in, RTC, plus uses a processor that does not rely on an undocumented proprietary DSP to boot. And did I mention it's open hardware, so you could build your own if wanted to?
But currently renting a movie on Vu is $6.00. Would $6.00 be very reasonable for owning unless I'm miss understanding the DRM Free concept.
$6 is very high for renting a movie. I can rent a physical copy locally for $3-$5, depending on how new the title is, or I could get a netflix subscription for less than $10 per month (as I watch about 5-10 movies per month, this works out at $1-$2 each).
100 lashes would kill a man.
Nonsense. It might do so rarely, but there are many documented cases in military history of men being sentenced to 1,000 lashes or more and surviving. Permanent disablement was an expected outcome of such a sentence, but not usually death. In a recent case of a teenage girl sentenced to 100 lashes in the Maldives, Amnesty International described the likely outcome as "long-term psychological as well as physical scars". I would imagine they had an expert on the subject make this assessment.
I find your humorous post quite disarming.
On a side note, does anyone know if this prosthesis uses an ARM processor?
I find my lack of mod points disturbing.
You question the conscientiousness of the programmers in the first paragraph and assume it in the second.
Yes. Most developers I've worked with pay an awful lot more attention to the code than to the documentation. It may not be desirable, but it's what happens in almost all cases. I know I'm guilty of it at times, even though I try not to be. If I see a problem with the code, I'll refactor it. Problems with documentation, (1) I'm less likely to notice them and (2) I'm less likely to actually fix them if I do notice them.
I'm sure there are shady hosts out there but is it really so widespread?
Who said anything is widespread? The disclosure being requested here affects less than 1% of the airbnb service providers in NY. If only 1% of them are "shady" you'd be highly unlikely to have seen them unless you used the service a lot.
As i look around *my* room, i see embedded linux devices that are running mostly binaries primarily written in C, many smaller electronics with simple micro controllers, even a windows CE embedded device running software written in .NET and one java based device my phone..
If i think about whats in my car, its a windows CE embedded device running native applications.
java does a lot of enterprise, android and a decent % of webapps. other than android apps rarely do i see something that is java that behaves as well as the non java equivalents
Do you have a BluRay player? A DVB-based set-top box or a TV with integrated DVB decoder? Either of these would typically include a JVM.
Then you get to enjoy the unbearably slow performance, and HP-UX style UI from 1992.
Ahh good ol' CDE i never drew the comparison but that's bang on lol, i wonder if java's ui elements were modeled after CDE
When running on X11, Java's default UI is based on the motif toolkit, which is the same toolkit that CDE was based on, so the answer to your question is "indirectly".
I can pass the latest whizz-bang object that just happens to have the right attributes in to the old library code and get it back out the other side without having it cast to a crippled shadow of its former self.
You can also pass any object that happens to have attributes that have been coincidentally named the same but don't necessarily have the same semantics, and wait for the entire system to blow up (which it may or may not do in simple test cases, depending on how closely the semantics happen to match).
In reality, I don't find that unrelated classes tend to have methods or properties that share both a name and exactly the same semantic definition except where that similarity is intentional. When it is intentional, then usually the two classes will share an explicitly defined interface. On rare occasions they do not, it is trivial to write a wrapper for the objects, and the necessity of doing so is a good prompt to think about whether the definitions are in fact exactly the same.
Unless calling functions when you don't know what they are has become common practice these days, why do you need the IDE to tell you what the docstring says.
Because it is well known that on any large project staffed by any but the most conscientious of developers, documentation has a tendency to become outdated. The type specified in statically-typed code, however, *cannot* be wrong.
If you program with the assumption that whatever the IDE doesn't reject is permitted, bad things will happen.
You don't program with that assumption: you program explicitly towards that goal. This is the Liskov Substitutability Principle, one of the most basic tenets of object-oriented programming: if an object of a given type is allowed in some operation, any object of any sub-type of that type should also be allowed. Code that violates this principle should be actively removed from your project whenever it is found.
Of course, it's not clear that there is any sensible numeric rating scale for programmers, and it would be interesting to argue about what the modal average would be
Or even, indeed, that there exists a total ordering, the lack of which would make the notion of a median meaningless, too.
If you're done everything on Sun Java 1.5, and suddenly Oracle changes it to "Oracle Java" 1.6, you're SOL.
??? I've been writing Java applications since 1.1 was the current version, and I've never had one stop working with a version update.
The only experience I've had with such failures are 3rd party applications where the developer has used the deprecated com.sun.* APIs. The guidelines on using these have been quite clear from the very beginning, though: don't, unless you want to create compatibility problems for your users.
Java isn't available on iOS
Yes, it is.
it isn't really available on Android
Bullshit. Android's implementation may not be completely up-to-date, but it is absolutely a version of Java. Only trademark and licensing issues prevent Google from claiming that it is.
OSX comes (used to come?) with outdated versions where a lot of Java programs don't run properly
Who cares what version is installed by default? OSX can be upgraded to the latest version, and any application that needs it ought to provide an installation package that does precisely that, or at least clear instructions to the user on how to do it.
Linux comes with OpenJDK which doesn't run quite a lot of Java programs either
As of version 8, OpenJDK is the reference implementation. Any Java program that doesn't run on OpenJDK is not a conforming pure Java application. Besides, it is perfectly possible to install Oracle Java on a Linux system if you prefer it. Depending on your distribution, it may be as simple as a single command, or you may need to add an update source first (which turns it into 3 commands on Ubuntu, for instance).
It's "cross platform" only if your definition is "it's a huge pain and doesn't work properly on any platform without extensive workarounds"
I'd hardly call any of these "extensive workarounds". Yes, you may have to refrain from using the latest APIs if you want to target certain platforms. Or you may have to have the end user install an upgrade to their preinstalled Java system. Neither of these is actually that hard.
The typical Java project is a big steaming mess of factory classes, wired beans, annotations, aspects, xml, and all the other workarounds that are needed to give the same functionality that's built into dynamically typed languages.
OK, I'll bite. What built-in feature of ... let's say python ... allows you to replace the functionality of a factory class without needing to implement something that either is a factory class or is very similar to one?
He also brings up some timing advice: since businesses are allowed to deduct the costs of doing business, you don't want kickstarter to cut your check on December 31st.
Here in the UK we're allowed to claim expenses in a tax year if they relate to business conducted in that year even if the expense is paid for in a later period (see http://www.hmrc.gov.uk/manuals...). Is this not the case in the US?
Plus it's also irrelevant when kickstarter pay you: you pay the tax on the money you receive in the tax bill for the period in which you earn it, which for preorders (which is what kickstarter finance effectively is in most cases) is the period in which the product is dispatched, not the period you receive the money.
He also brings up some timing advice: since businesses are allowed to deduct the costs of doing business, you don't want kickstarter to cut your check on December 31st.
Here in the UK we're allowed to claim expenses in a tax year if they relate to business conducted in that year even if the expense is paid for in a later period (see http://www.hmrc.gov.uk/manuals...). Is this not the case in the US?
finally proven wrong?
I think headlines to which the answer is "of course, duh" are a known class of exceptions.
Val, you've been doing SQL for 20 years! woot. So that means you started back 'round '94.
And it also means that the correct solution to this problem, third normal form, has been around for over twice as long as he has.
Indeed. Their entire product seems to be "we've got this wonderful solution to problems caused by databases that aren't in 3NF: you put your database in 3NF and then calculate the dependent value on the fly" which is of course exactly the same thing we've been doing since 1971 when Codd first described 3NF, but hey, they've got a funky new buzzword for it so it's obviously cool again.
A few problems:
- What about circular reactions?
- Is SQL really that right language for encoding business logic?
- Triggers are kind of an anti-pattern.
- What about atomicity? What if I need the whole reaction chain to work or none of it.
I'm afraid there more questions than answers with this proposed pattern.
Yep. It's worth noting that in both of the articles linked the only reason the logic is complex is because their databases aren't correctly normalized. To be specific, their tables are not in 3NF.
On other platforms, this is solved by nspluginwrapper, which runs the plugin as a separate process and just sends events and screen contents between them. Given that most web browsers now do something similar for security and stability (so a plugin can't crash the browser and a security problem in the plugin is isolated), it's not likely to be a significant issue.
Unfortunately, Windows' security model is somewhat different to X's, and under Windows you can't just have two processes rendering into the same window without them being written quite carefully to cooperate with each other. Chrome is able to do this, but AIUI the method they use to make it work is (1) so complicated nobody else has even tried to make it work and (2) relies on a hack that fails if they try to have one of the processes as 64-bit and the other as 32-bit. AFAIK, Chrome is the only browser that runs NPAPI in a separate process under Windows.
I don't know how many pins a current Cortex A-9 has but I'd bet it's over 300...
Varies depending on the precise implementation. The smallest I'm aware of is the Allwinner A13, which has a 176-pin package. It's possible that some application-specific chips have fewer: the A13 is designed to run with external RAM and NAND flash, high colour LCD display and multiple additional external peripherals, which explains the pin count -- but if you designed a chip with onboard RAM and storage for an application where monochrome display was standard and you only wanted to talk to a handful of peripherals, I'm sure you could get the pin count down to something a lot more manageable.
No. Firefox is 32-bit because it has to support NPAPI plugins, which are mostly (if not all) 32-bit DLLs, and Windows can't load a 32-bit DLL into a 64-bit process.
gameboy tetris is too easy. if you want to make sure people are paying attention, you want a version where pressing the 'drop' button at the wrong time is instant death. The gameboy version just accelerates the block, IIRC.