You don't need a Pi if you're in the west and are going to be just teaching yourself to code.
I mostly agree with you, but I bet there are kids in the West who aren't allowed to screw around with Mum and Dad's PC, and the family can't afford a PC for them to mess around with.
OK, maybe $25 would buy a used Pentium. But I'd rather have a Raspberry Pi just because it's easy to carry around and I can buy storage in supermarkets.
I couldn't come up with a solid definition of "embedded" myself, so I asked Wikipedia, which said:
"An embedded system is a computer system designed for specific control functions within a larger system, often with real-time computing constraints.[1][2] It is embedded as part of a complete device often including hardware and mechanical parts. By contrast, a general-purpose computer, such as a personal computer (PC), is designed to be flexible and to meet a wide range of end-user needs. "
I think the Raspberry Pi is a general-purpose computer. It's running a full Linux distro. If you want to run OpenOffice on it, you can. If you want to run Quake on it, you can. If you want to call it an embedded system, give me a definition of "embedded" that fits.
The Raspberry Pi isn't an Arduino either. It's not "embedded".
The whole point of the Pi is that it's a fully-fledged standalone system (once you add keyboard/monitor/mouse) - but cheap and robust.
The idea is that a schoolkid -- even one from a family that's not wealthy - can have a Raspberry Pi of their own do mess with as they please. Depending on the distro, it boots to a GUI, you can go straight into an IDE, and if you screw anything up it's easy to start again from scratch.
I think we're agreeing with each other. You don't need to "learn Linux" to program on a RPi: that was my point. Boot, GUI, click an icon to get into your training-wheels IDE.
But tcl? EEEEW!
Scratch for 5 year olds. Python or Ruby as a next step.
Linux was a very different beast when Raymond wrote that.
Linux now is no more difficult than Windows. If you know Windows already, of course the differences are problematic. The same thing applies the other way (on Windows I always try a bunch of ERASE, DELETE, DEL commands until eventually hitting the right one).
The *one* thing that has always been tricky with Linux, is repartitioning a Windows machine and setting up dual boot. This is seldom necessary any more. Most Linux boxes don't dual boot. A Raspberry Pi certainly wouldn't. If Windows is your primary OS and you want to use Linux, VirtualBox is a better solution than dual-booting today.
The problem is browsers. Pick a nice language. Python? Ruby? Give it some elegant DOM bindings. Now convince all the browsers to embed it simultaneously, and convince everyone to install those new browsers.
Until that happens, you have to use JS.
One good reason to use JS on the server, is to re-use the same code on both client and server. As a simple example, it's pretty common to do form validation on the client. It's essential to do form validation on the server. Why write the same validation twice, in two different languages?
I don't accept that. The point of the Pi is to replicate the "turn it on and start coding" spirit that us 8 bit kids grew up with.
What a BBC Micro had, that a modern PC doesn't is this: you turned it on, and 3 seconds later there was a BASIC prompt. Page 1 of the "learn to program" book tells you to type:
10 PRINT "Hello World" 20 GOTO 10
If you screw up, you turn it off and on again, no harm done.
20 minutes later, an inquisitive 7 year old will have:
10 PRINT "Hello World" 20 c% = RND(8) 30 COLOUR c% 40 PRINT "Slim is Rad!!!!!!" 50 GOTO 10... and they build up from there until 11 years later they're doing a CS degree.
There's no "oh, the install is too difficult? Oh bad luck 7-year-old, you've not got it in you."
And that's what the Raspberry Pi is intending to replicate.
(But I don't think this browser thing is the way to do it)
This seems like it's based on bad axioms. "a tough learning curve due to the Linux OS"? What OS is easier? Bear in mind that the the Pi distros to be used for education will boot to a GUI.
The focus at the moment seems to be on Scratch - great for kids as young as five.
Well, you'd have a code review with the real coders, clean it up before pulling it into the codebase.
It's some extra load for the experts, but someone's learned something. I can see it working as long as management give everyone the time they need, and the real coders aren't arseholes about it.
There a quite a few people in my organisation that I'd like to just be exposed to a bit of programming, simply so they understand the basic concepts of what they're asking us to do.
It took the world 10 years to work out how to write clean Javascript. But now if you're disciplined, stay away from the nastier parts of the language, use the neat conventions the community has established, and have some discipline, you can write great code in JS.
You can embed V8 in all sorts of things - node.js, silkJS and Chrome are just three examples.
Forget that you're a lone programmer. Set up a proper environment anyway.
This is going to seem like hard work, but once you've done the upfront effort, it will pay dividends.
Do *everything* that you'd do if you were a team. There are plenty of books / web sites on the subject.
Pick a version control system -- since you're starting from scratch, Git or Mercurial. Get your code into it. Pick a continuous build system -- Jenkins is popular and free. Write one unit test, and make Jenkins run it as part of the build process. Decide on some sort of repository for your build artefacts. Establish an integration testing box, and have your CI system deploy to that every build. Ideally use something like Puppet for this, and also use Puppet on your production machines. Write one integration test, and make Jenkins run it after deployment.
You can dedicate a server to all of this, several servers, run it all on your laptop or in VMs; it really doesn't matter. But think ahead so that you can move it to dedicated machines later if you need to.
Lots of work, but now you have a nice, confidence inspiring build / code management system.
Once that's going, you can decide how to fix your lack of tests. One approach is to take a few weeks just writing tests. Another is to write tests as the need arises -- for new code as you write it; to demonstrate bugs before you fix them. Or somewhere in between.
Python isn't my area, but there is probably an ecosystem of pythonesque tools for a lot of this stuff. pyUnit, code coverage tools, etc.
You will have problems unit testing, since you won't have designed the code for testability. The choice is, live with fewer tests than might otherwise be possible, or refactor your design into something more unit testable. (IOC is unit testing's best friend)
or high-pitched noises outside the normal hearing range (which can be a genuine issue for teenagers and for some adults - like me!).
This is significant. Despite fast approaching my 40th year, I can still hear those inhumane "mosquito" devices designed to keep teenagers from loitering.
My dad has a PSU in his study which makes a constant, loud, high pitched tone. It drives me mad. Nobody else in the family can hear it (but then, my dad's high frequency hearing is so wrecked he can't hear hi-hats).
I find it easy to believe that someone superstitious could think that tone was electromagnetism.
Gathering seaweed has been common here since, hell, since...
The news is that someone's successfully farming seaweed inland. The headline is poor.
That said, with the quality of transport today, it seems much saner to just ship sea-grown seaweed from the coast. There's a lot of lobster restaurants in Las Vegas. They don't raise the lobsters in Nevada.
Interesting is the absence of China and Russia, countries not known for having authoritarian copy laws
I don't know what the copyright laws are in China or Russia. But in a hypothetical country where filesharing is legal, there would be no illegal filesharing, by definition.
An English Sharia court can't sentence someone to death, because if the sentence were carried out it would be murder under English law.
An English Sharia court can't sentence someone to imprisonment, because if the sentence were carried out it would be unlawful imprisonment under English law.... and so it goes on. It's restricted to rulings which the opposing parties can voluntarily abide by, within English law.
It really is no different from a separating couple saying to each other "we can't agree how to split the proceeds from selling the house; let's agree to do whatever our mutual friend Dave tells us". (Where Dave is considered an senior upstanding figure)
The difference is, the Bible is a big pile of inconsistent self-contradicting works, it is impossible to follow it without cherry-picking. With Koran, this is not the case: it's the work of a single man, Uthman (ok, text selection, nameless scribes did the actual editing). And it contains very few contradictions, making the message clear
Well, it's not quite as simple as that -- or why would the Sunnis and the Shiites disagree so vehemently? The Koran is open to interpretation, because of course the modern world is not the same as 600CE. Hence we have Muftis who produce fatwaa, in which they document their interpretation of what the Koran has to say about some modern subject. So there's plenty of scope for Muslims to disagree with each other -- they can have almighty scraps about which Muftis are entitled to issue fatwaa and which ones are not.
Every time there's a terrorist attack / etc, groups representing Muslims make public statements opposing them. In Britain it's usually the Muslim Council of Britain. There's some controversy because it's a completely self-appointed organisation, but still they broadly represent ordinary British Muslims.
Where you live, I don't know who it is -- but I'm certain they exist.
Now, how keen is your news channel to broadcast their boring old conciliatory message, I wonder?
You don't need a Pi if you're in the west and are going to be just teaching yourself to code.
I mostly agree with you, but I bet there are kids in the West who aren't allowed to screw around with Mum and Dad's PC, and the family can't afford a PC for them to mess around with.
OK, maybe $25 would buy a used Pentium. But I'd rather have a Raspberry Pi just because it's easy to carry around and I can buy storage in supermarkets.
I couldn't come up with a solid definition of "embedded" myself, so I asked Wikipedia, which said:
"An embedded system is a computer system designed for specific control functions within a larger system, often with real-time computing constraints.[1][2] It is embedded as part of a complete device often including hardware and mechanical parts. By contrast, a general-purpose computer, such as a personal computer (PC), is designed to be flexible and to meet a wide range of end-user needs. "
I think the Raspberry Pi is a general-purpose computer. It's running a full Linux distro. If you want to run OpenOffice on it, you can. If you want to run Quake on it, you can. If you want to call it an embedded system, give me a definition of "embedded" that fits.
The Raspberry Pi isn't an Arduino either. It's not "embedded".
The whole point of the Pi is that it's a fully-fledged standalone system (once you add keyboard/monitor/mouse) - but cheap and robust.
The idea is that a schoolkid -- even one from a family that's not wealthy - can have a Raspberry Pi of their own do mess with as they please. Depending on the distro, it boots to a GUI, you can go straight into an IDE, and if you screw anything up it's easy to start again from scratch.
I think we're agreeing with each other. You don't need to "learn Linux" to program on a RPi: that was my point. Boot, GUI, click an icon to get into your training-wheels IDE.
But tcl? EEEEW!
Scratch for 5 year olds.
Python or Ruby as a next step.
Linux was a very different beast when Raymond wrote that.
Linux now is no more difficult than Windows. If you know Windows already, of course the differences are problematic. The same thing applies the other way (on Windows I always try a bunch of ERASE, DELETE, DEL commands until eventually hitting the right one).
The *one* thing that has always been tricky with Linux, is repartitioning a Windows machine and setting up dual boot. This is seldom necessary any more. Most Linux boxes don't dual boot. A Raspberry Pi certainly wouldn't. If Windows is your primary OS and you want to use Linux, VirtualBox is a better solution than dual-booting today.
I do largely agree with this.
The problem is browsers. Pick a nice language. Python? Ruby? Give it some elegant DOM bindings. Now convince all the browsers to embed it simultaneously, and convince everyone to install those new browsers.
Until that happens, you have to use JS.
One good reason to use JS on the server, is to re-use the same code on both client and server. As a simple example, it's pretty common to do form validation on the client. It's essential to do form validation on the server. Why write the same validation twice, in two different languages?
I don't accept that. The point of the Pi is to replicate the "turn it on and start coding" spirit that us 8 bit kids grew up with.
What a BBC Micro had, that a modern PC doesn't is this: you turned it on, and 3 seconds later there was a BASIC prompt. Page 1 of the "learn to program" book tells you to type:
10 PRINT "Hello World"
20 GOTO 10
If you screw up, you turn it off and on again, no harm done.
20 minutes later, an inquisitive 7 year old will have:
10 PRINT "Hello World" ... and they build up from there until 11 years later they're doing a CS degree.
20 c% = RND(8)
30 COLOUR c%
40 PRINT "Slim is Rad!!!!!!"
50 GOTO 10
There's no "oh, the install is too difficult? Oh bad luck 7-year-old, you've not got it in you."
And that's what the Raspberry Pi is intending to replicate.
(But I don't think this browser thing is the way to do it)
You clearly have a PC with a browser they can use. Why not give them a Python interpreter on there?
If you're worried about them breaking the PC, give them a VM.
And why would a distro with this Web app installed be easier to set up than a distro that boots into a GUI?
And if you have something that can run a browser, why do you want to run your code on a RPi?
It's all really odd.
This seems like it's based on bad axioms. "a tough learning curve due to the Linux OS"? What OS is easier? Bear in mind that the the Pi distros to be used for education will boot to a GUI.
The focus at the moment seems to be on Scratch - great for kids as young as five.
Well, you'd have a code review with the real coders, clean it up before pulling it into the codebase.
It's some extra load for the experts, but someone's learned something. I can see it working as long as management give everyone the time they need, and the real coders aren't arseholes about it.
There a quite a few people in my organisation that I'd like to just be exposed to a bit of programming, simply so they understand the basic concepts of what they're asking us to do.
It took the world 10 years to work out how to write clean Javascript. But now if you're disciplined, stay away from the nastier parts of the language, use the neat conventions the community has established, and have some discipline, you can write great code in JS.
You can embed V8 in all sorts of things - node.js, silkJS and Chrome are just three examples.
Forget that you're a lone programmer. Set up a proper environment anyway.
This is going to seem like hard work, but once you've done the upfront effort, it will pay dividends.
Do *everything* that you'd do if you were a team. There are plenty of books / web sites on the subject.
Pick a version control system -- since you're starting from scratch, Git or Mercurial. Get your code into it.
Pick a continuous build system -- Jenkins is popular and free.
Write one unit test, and make Jenkins run it as part of the build process.
Decide on some sort of repository for your build artefacts.
Establish an integration testing box, and have your CI system deploy to that every build. Ideally use something like Puppet for this, and also use Puppet on your production machines.
Write one integration test, and make Jenkins run it after deployment.
You can dedicate a server to all of this, several servers, run it all on your laptop or in VMs; it really doesn't matter. But think ahead so that you can move it to dedicated machines later if you need to.
Lots of work, but now you have a nice, confidence inspiring build / code management system.
Once that's going, you can decide how to fix your lack of tests. One approach is to take a few weeks just writing tests. Another is to write tests as the need arises -- for new code as you write it; to demonstrate bugs before you fix them. Or somewhere in between.
Python isn't my area, but there is probably an ecosystem of pythonesque tools for a lot of this stuff. pyUnit, code coverage tools, etc.
You will have problems unit testing, since you won't have designed the code for testability. The choice is, live with fewer tests than might otherwise be possible, or refactor your design into something more unit testable. (IOC is unit testing's best friend)
when you do that you run into the problem that 16 bits isn't enough for the quiet passages, so you add heavy compression ("proper mastering").
This is the opposite of "proper mastering".
Unfortunately lots of CDs are mastered with lots of compression because there's a loudness arms race.
or high-pitched noises outside the normal hearing range (which can be a genuine issue for teenagers and for some adults - like me!).
This is significant. Despite fast approaching my 40th year, I can still hear those inhumane "mosquito" devices designed to keep teenagers from loitering.
My dad has a PSU in his study which makes a constant, loud, high pitched tone. It drives me mad. Nobody else in the family can hear it (but then, my dad's high frequency hearing is so wrecked he can't hear hi-hats).
I find it easy to believe that someone superstitious could think that tone was electromagnetism.
If his claim that it was a health hazard was true, then it would be your responsibility not to pollute your neighbour's home with a health hazard.
The issue is that the claim holds no weight.
I will offer my entire life's savings to anyone who can tell, greater than random chance, whether a device is on or off.
Randi's already offered $1M.
But these people are wackos. They don't understand why a 50% detection rate demonstrates nothing.
Apple used to have a contract to build-in Google apps, they don't anymore for whatever reason so they rolled a better solution themselves.
If by "better" you mean "worse"... Here's some screenshots someone did comparing the Apple map with the Google map for his neighbourhood in London.
Gathering seaweed has been common here since, hell, since ...
The news is that someone's successfully farming seaweed inland. The headline is poor.
That said, with the quality of transport today, it seems much saner to just ship sea-grown seaweed from the coast. There's a lot of lobster restaurants in Las Vegas. They don't raise the lobsters in Nevada.
Well, 'meme' was coined in The Selfish Gene, published 1976. I think the 'meme' meme postdates the 'Soviet Russia' meme.
Interesting is the absence of China and Russia, countries not known for having authoritarian copy laws
I don't know what the copyright laws are in China or Russia. But in a hypothetical country where filesharing is legal, there would be no illegal filesharing, by definition.
Here's the important thing.
An English Sharia court can't sentence someone to death, because if the sentence were carried out it would be murder under English law.
An English Sharia court can't sentence someone to imprisonment, because if the sentence were carried out it would be unlawful imprisonment under English law. ... and so it goes on. It's restricted to rulings which the opposing parties can voluntarily abide by, within English law.
It really is no different from a separating couple saying to each other "we can't agree how to split the proceeds from selling the house; let's agree to do whatever our mutual friend Dave tells us". (Where Dave is considered an senior upstanding figure)
The difference is, the Bible is a big pile of inconsistent self-contradicting works, it is impossible to follow it without cherry-picking. With Koran, this is not the case: it's the work of a single man, Uthman (ok, text selection, nameless scribes did the actual editing). And it contains very few contradictions, making the message clear
Well, it's not quite as simple as that -- or why would the Sunnis and the Shiites disagree so vehemently? The Koran is open to interpretation, because of course the modern world is not the same as 600CE. Hence we have Muftis who produce fatwaa, in which they document their interpretation of what the Koran has to say about some modern subject. So there's plenty of scope for Muslims to disagree with each other -- they can have almighty scraps about which Muftis are entitled to issue fatwaa and which ones are not.
Every time there's a terrorist attack / etc, groups representing Muslims make public statements opposing them. In Britain it's usually the Muslim Council of Britain. There's some controversy because it's a completely self-appointed organisation, but still they broadly represent ordinary British Muslims.
Where you live, I don't know who it is -- but I'm certain they exist.
Now, how keen is your news channel to broadcast their boring old conciliatory message, I wonder?
Blasphemy is illegal in some countries. Why? Largely because Islam forbids reinterpretation and that's so much part of the system that it is law.
Blasphemy was illegal in the United Kingdom until 2008. Why? Because the church and the state are linked. Blasphemy is effectively treason.