Yes. Technology has moved on. Sitting in front of the TV with a bare board and a mess of wires isn't very appealing, compared to sitting with a laptop at a desk, running a fast and modern OS and applications.
If you add up all the costs for the Pi, the price difference isn't all that interesting either. The laptop will cost a bit more, but you'll get more memory, a real hard drive, and it will run (Open)Office, so you can write your school reports with it, as well as all kinds of IM software teenagers want to use.
For any kind of hardware tinkering, the Pi is very closed, and doesn't offer much interesting I/O. Also, if you make something useful, you can't make your own hardware based on it. With the Arduino, you can buy the same CPU as a single part, and make your own design. The SoC that the Pi uses isn't for sale in single quantities, and it's fine pitch BGA, so you wouldn't be able to use it anyway.
I have no doubt you can make something work on the hardware, but I don't think you're going to end up with something that's very attractive to a modern teenager who wants to do the same things their friend is doing who can afford a proper laptop running Win7.
And for the more adventurous hacker kids who enjoy taking things apart, a computer that basically consists of a single SoC without documentation isn't very attractive either.
I tried it with my own kids. I showed them my FPGA replica of my first 8-bit computer, and it took about 2 yawns and 1 minute before they went off to do something else.
They played with Scratch for a while, and now they're busy with Minecraft.
There are so many interactive Flash games on-line, even fairly good educational ones, like Scratch, that a red triangle isn't going to fascinate them anymore.
Since the point of this whole design is to learn kids about programming, wouldn't it be much better to actually pick an open CPU ?
Sure, this device lets you play a h.264 stream, 1080p, on your TV. Whoop-di-doo.. but there's nothing you can hack or investigate to understand how it works. Video data disappears into an undocumented black box, and a TV signal comes out the other end.
If you want kids to learn how to program, give them an ARM7 with a TFT panel, where they can call putpixel(x,y,col). Not nearly as fast and capable, but you can see how it works, and tinker with it. Or give them a laptop, and send them here: http://scratch.mit.edu/
XP is pretty light weight, which is reasonable for an OS that's a decade old. Of course, the Pi doesn't support Windows, so try installing a reasonably modern Linux distribution in 256MB (including video RAM), with Firefox + Flash, and some other applications, and using a USB thumb drive for root/swap.
My firefox is now running at 512MB, plus another 200MB for the flash player pluging, and this device only has 128MB (256MB for the $35 version). You may be able to run a web browser, but you won't be enjoying life very much.
Somehow you are terrified of a real operating system + real peripherals with all the benefits they bring.
Not terrified. Just pointing out that's it a lot more work to make simple peripherals work on a powerful SoC like this one. I've written simple Linux drivers for the OMAP, and finding out that the SoC datasheet is 3500 pages can be a bit daunting (and the OMAP actually has a free datasheet, unlike this Broadcom chip). Even though the driver only needs 1 line to do the actual work, it takes another 50 lines to properly hook it into the kernel.
I've also made simple drivers on various microcontrollers, and it's a lot easier, and a lot more fun.
Now, if you're happy using the binary blob GPU driver to play movies from a USB drive, I'm sure this device will be great, but then you could also buy a cheap media player for about the same price.
Agreed. If you need HDMI output, Ethernet, USB, and not much else, get a Raspberry Pi. It's definitely a cool board to work as a thin media server that you can tuck behind your TV, if you don't mind the raw electronics look and a bit of hacking.
For tinkering with hardware devices where you don't need HDMI, get an Arduino board, or a cheap ARM Cortex eval board with plenty of I/O, open documentation and free tools.
For learning to use a computer, or to do any other kind of serious work or play, get a laptop, smart phone, or a normal PC.
Except that teens/preteens want to use the computer to chat with their friends, update their facebook status, and play games, and they don't want to do that on the living room floor in front of the big screen TV, where there little brother can see what they're typing. And this thing is not going to be powerful enough to run a normal web browser.
In real life, Dad is just going to say: "I'm going to buy a new laptop for myself, you can have my old one".
And how much work is it to port that LCD linux driver to the Raspi ? You'll need to muck with the driver to get the GPIOs connected properly, so all of a sudden you're building kernel modules with all the complications this brings.
On the Arduino, you just call Lcd.Write( "hello world" ), and use a standard LCD shield. You don't even have to worry about wiring your own connector.
its called hardware timers, confirmed by the devs as present on Rasp PI.
Yeah. Too bad there's no datasheet of this chip. And besides, you're programming on top of Linux, so you're going to have to figure out how to get accurate timing in a user application through the standard means, not by directly setting up a timer interrupt (which is only a few lines of code on the Arduino).
The same applies to students. Do you know students that have an HDMI TV, a keyboard and mouse, and internet access, but who don't already own a PC, laptop, or smartphone ?
The fact that few students are interested in programming is not because of a lack of hardware. It's because they just don't care. When the BBC Micro came out, it was pure magic to be able to type something, and have a red triangle show up on your TV.
Nowadays, kids grow up playing Angry Birds, and a red triangle is not going to impress them anymore. That time is gone.
You're going to need a program anyway to do something useful. If you want to use this for home automation, flipping a light switch manually sure beats typing echo -ne "\x01" >/dev/gpio/something
And as soon as you start programming something more complex, it's a lot easier on the Arduino.
What if you want to hook up a HD44780 compatible LCD screen to 14 GPIO pins. Are you going to write the entire LCD driver in shell script.
Or maybe the GPIO is connected to a speaker, and you'd like to get exactly 440 Hertz out of it.
So is Arduino. Dont forget it will be on same price level as cheapest Arduino while providing tons more functionality.
Not really. The Arduino doesn't offer a HDMI video output, but does everything else much better. Turning on a single I/O output on the Arduino is a single, straightforward, line of code, which doesn't require writing a Linux device driver. The Arduino also has ready made shields for everything you could need, and tons of example projects and documentation.
For home automation, and other hobby projects, the Arduino is much better suited.
And what is a modern farmer going to do with a field of wheat, but no fuel for his combine, no water pressure on his irrigation pipes, no fertilizer, pesticides, or seeds, and nobody he can trust.
In the mean time, the climate change will turn the south of the US into another dust bowl. Happy farming...
but with programs that are written to be formally verified, you can.
Sure, but is that subset interesting and powerful enough to solve our problems ? Can we even define a meaningful subset, so that an engineer can follow some rules, and end up with a formally verifiable program ?
That promise is still worth $1000. For me, there's no difference between $1000 in cash in my hand, and $1000 in my checking account in the bank.
I could write ten checks for $100, and give them to people. They would treat those $100 checks as cash, and they'd be covered by my account balance. At the same time, the person with the $1000 could write ten checks for $100, and be covered by the loan. Now there are twenty $100 checks in circulation, all covered by the same original $1000 deposit.
Good code has correctness proofs, even if they're informal and only in the author's head.
But that's still a completely different situation than a structural engineer designing a bridge, and testing its strength by a number of fairly well defined methods and adherence to building codes. An informal proof, existing only in the author's head, is poorly defined, and can easily be wrong.
And, of course, in many cases the specification isn't clear. How would you formally verify a climate model, for instance ?
Is formal verification really that expensive, or are does it just seem expensive because we habitually ignore the costs of skipping it?
I think it's really expensive, but in either case, it's not fair to blame the software engineer for the mess.
It's true that formal verification can't prove the program "does what I want" if you screw up specifying what you want
Which is exactly my point. For any sufficiently interesting problem, specifying what you want in a 100% perfect way is impossible.
In addition, there's no formal way to prove that two programs produce the same output (that would be equivalent to solving the Halting Problem), and as a consequence there's no general way to prove that a program is equivalent to the specification.
Of course, like you said, parts of the program can be simple enough to prove in a formal sense, but that doesn't nearly cover all the interesting cases. There's still plenty left over.
And, like I said in my first post, even formally verifying the parts where it is possible would lead to unacceptable budget and deadline overruns, so it's rarely done.
They'll just stack them 16 layers thick.
How much do the Flash/Java plugins use ?
An entry level Win7 laptop will run Windows, for starters. Plus it will run a lot faster. And of course, teenagers want to play games, too.
Really? I tried the Broadcom site, and I couldn't find anything. Do you have a link ?
Yes. Technology has moved on. Sitting in front of the TV with a bare board and a mess of wires isn't very appealing, compared to sitting with a laptop at a desk, running a fast and modern OS and applications.
If you add up all the costs for the Pi, the price difference isn't all that interesting either. The laptop will cost a bit more, but you'll get more memory, a real hard drive, and it will run (Open)Office, so you can write your school reports with it, as well as all kinds of IM software teenagers want to use.
For any kind of hardware tinkering, the Pi is very closed, and doesn't offer much interesting I/O. Also, if you make something useful, you can't make your own hardware based on it. With the Arduino, you can buy the same CPU as a single part, and make your own design. The SoC that the Pi uses isn't for sale in single quantities, and it's fine pitch BGA, so you wouldn't be able to use it anyway.
I have no doubt you can make something work on the hardware, but I don't think you're going to end up with something that's very attractive to a modern teenager who wants to do the same things their friend is doing who can afford a proper laptop running Win7.
And for the more adventurous hacker kids who enjoy taking things apart, a computer that basically consists of a single SoC without documentation isn't very attractive either.
I tried it with my own kids. I showed them my FPGA replica of my first 8-bit computer, and it took about 2 yawns and 1 minute before they went off to do something else.
They played with Scratch for a while, and now they're busy with Minecraft.
There are so many interactive Flash games on-line, even fairly good educational ones, like Scratch, that a red triangle isn't going to fascinate them anymore.
Since the point of this whole design is to learn kids about programming, wouldn't it be much better to actually pick an open CPU ?
Sure, this device lets you play a h.264 stream, 1080p, on your TV. Whoop-di-doo.. but there's nothing you can hack or investigate to understand how it works. Video data disappears into an undocumented black box, and a TV signal comes out the other end.
If you want kids to learn how to program, give them an ARM7 with a TFT panel, where they can call putpixel(x,y,col). Not nearly as fast and capable, but you can see how it works, and tinker with it. Or give them a laptop, and send them here: http://scratch.mit.edu/
Here's an example of a web server that let's you see the voltage on the analog input pins:
http://arduino.cc/en/Tutorial/WebServer
and 41W if you include the monitor.
XP is pretty light weight, which is reasonable for an OS that's a decade old. Of course, the Pi doesn't support Windows, so try installing a reasonably modern Linux distribution in 256MB (including video RAM), with Firefox + Flash, and some other applications, and using a USB thumb drive for root/swap.
My firefox is now running at 512MB, plus another 200MB for the flash player pluging, and this device only has 128MB (256MB for the $35 version). You may be able to run a web browser, but you won't be enjoying life very much.
Except it doesn't use the same I/O connections.
Not terrified. Just pointing out that's it a lot more work to make simple peripherals work on a powerful SoC like this one. I've written simple Linux drivers for the OMAP, and finding out that the SoC datasheet is 3500 pages can be a bit daunting (and the OMAP actually has a free datasheet, unlike this Broadcom chip). Even though the driver only needs 1 line to do the actual work, it takes another 50 lines to properly hook it into the kernel.
I've also made simple drivers on various microcontrollers, and it's a lot easier, and a lot more fun.
Now, if you're happy using the binary blob GPU driver to play movies from a USB drive, I'm sure this device will be great, but then you could also buy a cheap media player for about the same price.
Agreed. If you need HDMI output, Ethernet, USB, and not much else, get a Raspberry Pi. It's definitely a cool board to work as a thin media server that you can tuck behind your TV, if you don't mind the raw electronics look and a bit of hacking.
For tinkering with hardware devices where you don't need HDMI, get an Arduino board, or a cheap ARM Cortex eval board with plenty of I/O, open documentation and free tools.
For learning to use a computer, or to do any other kind of serious work or play, get a laptop, smart phone, or a normal PC.
Except that teens/preteens want to use the computer to chat with their friends, update their facebook status, and play games, and they don't want to do that on the living room floor in front of the big screen TV, where there little brother can see what they're typing. And this thing is not going to be powerful enough to run a normal web browser.
In real life, Dad is just going to say: "I'm going to buy a new laptop for myself, you can have my old one".
And how much work is it to port that LCD linux driver to the Raspi ? You'll need to muck with the driver to get the GPIOs connected properly, so all of a sudden you're building kernel modules with all the complications this brings.
On the Arduino, you just call Lcd.Write( "hello world" ), and use a standard LCD shield. You don't even have to worry about wiring your own connector.
Yeah. Too bad there's no datasheet of this chip. And besides, you're programming on top of Linux, so you're going to have to figure out how to get accurate timing in a user application through the standard means, not by directly setting up a timer interrupt (which is only a few lines of code on the Arduino).
The same applies to students. Do you know students that have an HDMI TV, a keyboard and mouse, and internet access, but who don't already own a PC, laptop, or smartphone ?
The fact that few students are interested in programming is not because of a lack of hardware. It's because they just don't care. When the BBC Micro came out, it was pure magic to be able to type something, and have a red triangle show up on your TV.
Nowadays, kids grow up playing Angry Birds, and a red triangle is not going to impress them anymore. That time is gone.
You're going to need a program anyway to do something useful. If you want to use this for home automation, flipping a light switch manually sure beats typing echo -ne "\x01" > /dev/gpio/something
And as soon as you start programming something more complex, it's a lot easier on the Arduino.
What if you want to hook up a HD44780 compatible LCD screen to 14 GPIO pins. Are you going to write the entire LCD driver in shell script.
Or maybe the GPIO is connected to a speaker, and you'd like to get exactly 440 Hertz out of it.
Not really. The Arduino doesn't offer a HDMI video output, but does everything else much better. Turning on a single I/O output on the Arduino is a single, straightforward, line of code, which doesn't require writing a Linux device driver. The Arduino also has ready made shields for everything you could need, and tons of example projects and documentation.
For home automation, and other hobby projects, the Arduino is much better suited.
Only if the already have an HDMI monitor plus cable, keyboard, mouse, and a power supply. It probably also needs a case for durability.
It's probably easier and cheaper to get a netbook for $200, or a used PC.
And what is a modern farmer going to do with a field of wheat, but no fuel for his combine, no water pressure on his irrigation pipes, no fertilizer, pesticides, or seeds, and nobody he can trust.
In the mean time, the climate change will turn the south of the US into another dust bowl. Happy farming...
Sure, but is that subset interesting and powerful enough to solve our problems ? Can we even define a meaningful subset, so that an engineer can follow some rules, and end up with a formally verifiable program ?
That promise is still worth $1000. For me, there's no difference between $1000 in cash in my hand, and $1000 in my checking account in the bank.
I could write ten checks for $100, and give them to people. They would treat those $100 checks as cash, and they'd be covered by my account balance. At the same time, the person with the $1000 could write ten checks for $100, and be covered by the loan. Now there are twenty $100 checks in circulation, all covered by the same original $1000 deposit.
But that's still a completely different situation than a structural engineer designing a bridge, and testing its strength by a number of fairly well defined methods and adherence to building codes. An informal proof, existing only in the author's head, is poorly defined, and can easily be wrong.
And, of course, in many cases the specification isn't clear. How would you formally verify a climate model, for instance ?
I think it's really expensive, but in either case, it's not fair to blame the software engineer for the mess.
Your last example isn't even correct. For 'n' large enough, the factorial function will overflow the number representation, or run out of memory.
It's also necessary to formally prove the compiler and libraries.
Which is exactly my point. For any sufficiently interesting problem, specifying what you want in a 100% perfect way is impossible.
In addition, there's no formal way to prove that two programs produce the same output (that would be equivalent to solving the Halting Problem), and as a consequence there's no general way to prove that a program is equivalent to the specification.
Of course, like you said, parts of the program can be simple enough to prove in a formal sense, but that doesn't nearly cover all the interesting cases. There's still plenty left over.
And, like I said in my first post, even formally verifying the parts where it is possible would lead to unacceptable budget and deadline overruns, so it's rarely done.