What you really want is a stable and well-defined protocol and multiple implementations so that you can get some competition. You also want buy-in from groups like the Wikimedia Foundation and archive.org so that they will run some peers. Ideally, you'd run a number of domain-specific search engines over the same protocol so that it would be trivial for you (either manually or in your client automatically) to select the relevant ones for searches of a specific type. I've found that the most useful feature of DuckDuckGo is the zero-click information, which automatically puts the result of the domain-specific search engine it thinks is most relevant at the top of the page (things like code searches or Wolfram Alpha).
It doesn't run much slower than C, generally, and has some benefits such as portability
Take a random Java program. Try running it on NetBSD/MIPS or FreeBSD/Itanium. Take a C program. Try running it on NetBSD/MIPS or FreeBSD/Itanium. Then tell me which benefits from more portability.
Feel free to substitute some other platform, for example iOS, WebOS, OS X/PowerPC. I can't think of a single platform where porting Java apps is easier than porting C ones.
Seriously? The graphics are worse than Quake on a 200MHz Pentium with a 3dfx VooDoo card, but it requires an CPU and GPU an order of magnitude more powerful...
I learned BBC BASIC, and most of what I learned is still relevant to modern languages. It had direct access to memory and more or less the same set of flow control structures as a modern language. It didn't support object orientation (I'd recommend Squeak eToys for teaching that), but that's pretty trivial to learn.
On the flipside, if your game freezes for a few seconds, people will complain that its performance is terrible. If your accountancy program does the same then no one cares - the accountant will just bill the time to the client. Neither set of requirements comes close to something like aerospace systems (realtime responses and verifiable code both required).
Balancing a chequebook (do people still use cheques?) and counting change are both basic arithmetic, which should be taught in school. Changing a tire is something that doesn't really belong in school. Basic knowledge of the law probably does though.
Depends on the implementation, but a lot of expert systems use tri-state logic (true, false, undefined). There are a lot of variations on tri-state logic, and a number of them would be easier to implement on a computer that used trinary internally.
The idea that a byte is 8 bits is actually fairly new. A byte is traditionally the smallest directly-accessible block of memory in which bit order is not exposed to the programmer (you care about the order of bytes in a word, but you can't see the order of bits in a byte). I'm aware of systems with a byte size of 4, 6, 8, 12, and 36 bits. The term 'octet' was used to describe groups of 8 bits in a generic context (and is still used in French and in some more formal contexts where the difference between a byte and an octet is actually important). It's only in the last 30 years or so when octet and byte have been equivalent in modern systems that people have started using the terms interchangeably.
We had lessons when I was 7 using Logo to teach geometry. It involved writing programs to demonstrate various shapes and learning about what happened if you changed the angles. Simply playing with Logo and seeing how to draw various things using just lines and angles is a great introduction to both programming and geometry.
the school didn't have the courses (or the teachers) to push a real syllabus
And that's the real problem. My mother quit teaching because of all of the bullshit bureaucracy getting in the way of actually teaching children. I've done some lecturing, but there's no way I'd want to become a school teacher - the pay sucks in comparison to a programming job, the stress is higher, and the system seems to be taking the only rewarding part of the job away.
I absolutely agree with TFA's premise. Programming is as much of a life skill now as writing was a hundred years ago. The problem is in the execution. Who are they going to get to teach it? Most schools simply don't have anyone with the knowledge and skills required. I seem to recall a paper a few months ago saying that the reason that a lot of girls have an aversion to maths is that their first maths teachers in primary school are female and don't fully understand the subject, so they're frightened of it and the girls pick up on this fear. If we get people who don't really understand a subject to teach it then we're more likely to put people off learning it than anything else.
I sketched out a few designs for a decentralised search engine (but didn't implement them, so kudos to these guys for actually bothering), and one of the ideas I had was to allow nodes to return sponsored links (e.g. Amazon referrals). The client would display these for the top few nodes and track the reputations of individual peers. The more users who liked the search results that you returned, the more of them would see your sponsored links. If you came up with a ranking algorithm that did a better job than existing ones, then you'd get a bigger slice of the advertising space. It's essentially the same business model as Google, just on a smaller scale.
3) What is to stop a malicious node in the network from getting my search history?
All of their claims about privacy seem to be implementation details of their code (which, being open source, is trivial to modify). They don't tell me how they designed the protocol to be avoid someone modifying the code to record searches or even to inject phishing sites into the top lists.
No, it's a simple fact rom the incentives. People add features to free software projects for one of two reasons: either they need the feature, or someone who is paying them needs the feature. In both cases, that feature will be tested by someone actually using it. In contrast, people add features to off-the-shelf proprietary software because they think they will be able to sell them. If features are being added by people who want to use them, then they're going to be tested as soon as they're written, in actual use.
Check your history. The Catholic Church was opposed to anyone other than members of the clergy reading the scriptures. They believed that reading the bible directly would cause people to question the official interpretation and lead to heresy (which it did).
Might be the pay scale, might be the location. Lots of companies confine themselves to people who are living within a few miles of them, which dramatically reduces their potential applicants. Most of the people I work for are more than five time zones away from me. They have a potential pool of qualified people that is far larger than a company that insists on only paying people who live close by.
Depends on the bits of the Bible you read. If you read the Old Testament, God is a vindictive, self-absorbed, insecure little shit. At the start of the New Testament, he got laid and turned into a bit of a hippy.
If I had to go back in time to Nazi Germany, and listen to lectures about the evils of the Jews, I would not have the stomach to sit there and listen to it.
I like to think that I'd pay very close attention and call the speaker out on any and all logical inconsistencies and factual errors that I spotted, rather than just walking away.
prick them do they not bleed
I don't know, but I'm willing to run the experiment...
wrong them do they not revenge?
No, usually they pick someone unrelated to persecute. It's easier.
What you really want is a stable and well-defined protocol and multiple implementations so that you can get some competition. You also want buy-in from groups like the Wikimedia Foundation and archive.org so that they will run some peers. Ideally, you'd run a number of domain-specific search engines over the same protocol so that it would be trivial for you (either manually or in your client automatically) to select the relevant ones for searches of a specific type. I've found that the most useful feature of DuckDuckGo is the zero-click information, which automatically puts the result of the domain-specific search engine it thinks is most relevant at the top of the page (things like code searches or Wolfram Alpha).
It doesn't run much slower than C, generally, and has some benefits such as portability
Take a random Java program. Try running it on NetBSD/MIPS or FreeBSD/Itanium. Take a C program. Try running it on NetBSD/MIPS or FreeBSD/Itanium. Then tell me which benefits from more portability.
Feel free to substitute some other platform, for example iOS, WebOS, OS X/PowerPC. I can't think of a single platform where porting Java apps is easier than porting C ones.
I find that hard to believe, if only because most people uninstalled Java from their desktops / laptops years ago...
Seriously? The graphics are worse than Quake on a 200MHz Pentium with a 3dfx VooDoo card, but it requires an CPU and GPU an order of magnitude more powerful...
Python is a perfect case study in how not to design a language, rivalled only by C++. It therefore makes an excellent teaching language.
I call balderdash on the notion of a shortage of software engineers in the UK
Judging by the number of job offers I'm getting, I have no trouble believing that there's a shortage of competent ones...
I'd say that abstraction is more important than understanding "O-notation",
Would carry more weight if you didn't immediately follow it with:
what's the point of knowing whether it's "O" or "On^2"
And demonstrate that you don't understand the notation...
I learned BBC BASIC, and most of what I learned is still relevant to modern languages. It had direct access to memory and more or less the same set of flow control structures as a modern language. It didn't support object orientation (I'd recommend Squeak eToys for teaching that), but that's pretty trivial to learn.
If you were trained as a programmer and were really good at it, would you want to be a grade school teacher, for salary times 1/2?
Salary doesn't matter too much, but dealing with all of the national curriculum and related administrative BS would put me off.
However, as a freelance programmer, I wouldn't mind spending one afternoon a week going into a local school and teaching programming.
On the flipside, if your game freezes for a few seconds, people will complain that its performance is terrible. If your accountancy program does the same then no one cares - the accountant will just bill the time to the client. Neither set of requirements comes close to something like aerospace systems (realtime responses and verifiable code both required).
Balancing a chequebook (do people still use cheques?) and counting change are both basic arithmetic, which should be taught in school. Changing a tire is something that doesn't really belong in school. Basic knowledge of the law probably does though.
Depends on the implementation, but a lot of expert systems use tri-state logic (true, false, undefined). There are a lot of variations on tri-state logic, and a number of them would be easier to implement on a computer that used trinary internally.
The idea that a byte is 8 bits is actually fairly new. A byte is traditionally the smallest directly-accessible block of memory in which bit order is not exposed to the programmer (you care about the order of bytes in a word, but you can't see the order of bits in a byte). I'm aware of systems with a byte size of 4, 6, 8, 12, and 36 bits. The term 'octet' was used to describe groups of 8 bits in a generic context (and is still used in French and in some more formal contexts where the difference between a byte and an octet is actually important). It's only in the last 30 years or so when octet and byte have been equivalent in modern systems that people have started using the terms interchangeably.
We had lessons when I was 7 using Logo to teach geometry. It involved writing programs to demonstrate various shapes and learning about what happened if you changed the angles. Simply playing with Logo and seeing how to draw various things using just lines and angles is a great introduction to both programming and geometry.
the school didn't have the courses (or the teachers) to push a real syllabus
And that's the real problem. My mother quit teaching because of all of the bullshit bureaucracy getting in the way of actually teaching children. I've done some lecturing, but there's no way I'd want to become a school teacher - the pay sucks in comparison to a programming job, the stress is higher, and the system seems to be taking the only rewarding part of the job away.
I absolutely agree with TFA's premise. Programming is as much of a life skill now as writing was a hundred years ago. The problem is in the execution. Who are they going to get to teach it? Most schools simply don't have anyone with the knowledge and skills required. I seem to recall a paper a few months ago saying that the reason that a lot of girls have an aversion to maths is that their first maths teachers in primary school are female and don't fully understand the subject, so they're frightened of it and the girls pick up on this fear. If we get people who don't really understand a subject to teach it then we're more likely to put people off learning it than anything else.
I sketched out a few designs for a decentralised search engine (but didn't implement them, so kudos to these guys for actually bothering), and one of the ideas I had was to allow nodes to return sponsored links (e.g. Amazon referrals). The client would display these for the top few nodes and track the reputations of individual peers. The more users who liked the search results that you returned, the more of them would see your sponsored links. If you came up with a ranking algorithm that did a better job than existing ones, then you'd get a bigger slice of the advertising space. It's essentially the same business model as Google, just on a smaller scale.
Hmm, I'd have said it with a hard C, and then it sounds a lot like yucky, which isn't a great name.
3) What is to stop a malicious node in the network from getting my search history?
All of their claims about privacy seem to be implementation details of their code (which, being open source, is trivial to modify). They don't tell me how they designed the protocol to be avoid someone modifying the code to record searches or even to inject phishing sites into the top lists.
No, it's a simple fact rom the incentives. People add features to free software projects for one of two reasons: either they need the feature, or someone who is paying them needs the feature. In both cases, that feature will be tested by someone actually using it. In contrast, people add features to off-the-shelf proprietary software because they think they will be able to sell them. If features are being added by people who want to use them, then they're going to be tested as soon as they're written, in actual use.
Check your history. The Catholic Church was opposed to anyone other than members of the clergy reading the scriptures. They believed that reading the bible directly would cause people to question the official interpretation and lead to heresy (which it did).
Might be the pay scale, might be the location. Lots of companies confine themselves to people who are living within a few miles of them, which dramatically reduces their potential applicants. Most of the people I work for are more than five time zones away from me. They have a potential pool of qualified people that is far larger than a company that insists on only paying people who live close by.
A doctor who doesn't accept evolution has no reasons for not overprescribing antibiotics.
Depends on the bits of the Bible you read. If you read the Old Testament, God is a vindictive, self-absorbed, insecure little shit. At the start of the New Testament, he got laid and turned into a bit of a hippy.
If I had to go back in time to Nazi Germany, and listen to lectures about the evils of the Jews, I would not have the stomach to sit there and listen to it.
I like to think that I'd pay very close attention and call the speaker out on any and all logical inconsistencies and factual errors that I spotted, rather than just walking away.