The Official Raspberry Filling : Call for Contributions

Drop in for a chat and a cup of tea

62 posts   Page 2 of 3   1, 2, 3
by CommanderCoder » Fri Apr 27, 2012 12:21 pm
alecthegeek said:


Raspberry Filling said:



I've had a few request to know more about the manual's structure so I'll make a posting on our Facebook page.


Not all of us facebook....


If you don't facebook (you can still see the page without an account), then you can contribute to the wiki page; or just email me.
Posts: 20
Joined: Tue Aug 30, 2011 7:17 am
by antiloquax » Fri Apr 27, 2012 6:47 pm
Been installing some stuff that you mentioned in my qemu RPi (using Arch image). I have Python 3 and Pygame, Open JDK, Greenfoot and Geogebra. Having a bit of struggle with Scratch, but I should be able to sort it.

mark.
Posts: 406
Joined: Sun Nov 20, 2011 11:37 am
by kernelcode » Sat Apr 28, 2012 2:25 am
daviewales said:


Mjiig said:


I've actually been thinking about creating a programming "quest" that gives you one very simple programming problem to start with after a basic introduction (modify this program so that it prints out the product not the sum), and the output of that program allows you to unlock later problems. This goes on, creating a chain learning effect. Once you get to a certain level the problem could be to write an implementation of a simple decryption program that's needed to unlock later problems.


I've had similar random thoughts, but I doubt my programming skills would be up to the task. I can see something like this being really really cool. (Imagine a game, where the puzzle to pass to the next level involves writing a program to calculate something... You'd want to make sure that there was a decent amount of gameplay as well, so that it wasn't just code, achievement, code, achievement...) The early problems could probably be solved mentally, so kids understand how their code relates to "the real world"... Then you could progress to problems that would be fairly difficult to calculate by hand. You could have quests, where you explore a world looking for clues. (it doesn't have to be 3D — 2D would suffice) Imagine a 2D dungeon game, where the books/scrolls/scrawled notes you pick up don't magically let you through doors, they just give you instructions that can be put together to make a program that will calculate the answer to a puzzle. (You could have a library, where you could access all the instructions that you'd collected. You'd probably want them to automatically sort themselves into a cohesive collection of topics as you found them.) Using Skyrim style games as a metaphor, the books and notes you find are usable code instructions, and the crafting or enchanting tables are code interpreters or text editors that let you create code to put through interpreters.

Let me know how you go/if you need help with anything. (I only know basic Python, so don't expect me to help you with complicated coding problems... =P)


This sounds like a good idea - and the type of thing that could be very easily collaborated on. Define an interface for a 'quest' - I guess all you really need is a hash of the correct answer to compare against a given answer - as well as perhaps a model solution. The quests can be self contained, and simply added to the game as they become available. Download them like apps, rate them by difficulty and specify prerequisites.... I'm thinking like the game Uplink, but not (cr/h)acking
My exams are in 4 weeks, but after that I might just set up a github for it... if someone else hasn't already
Posts: 9
Joined: Tue Nov 22, 2011 3:47 pm
by kernelcode » Sat Apr 28, 2012 2:25 am
Double post, sorry.
Posts: 9
Joined: Tue Nov 22, 2011 3:47 pm
by alecthegeek » Sat Apr 28, 2012 10:01 am
I"ve seen a suggestion elsewhere, based on Eben's video, that the proposed "demo default" editor is Joe?

Any thoughts?
Posts: 37
Joined: Mon Aug 08, 2011 3:11 am
Location: Melbourne, Australia
by alecthegeek » Sat Apr 28, 2012 10:06 am
My tutorial on Version Control is starting to take shape at http://elinux.org/Version_Control

I need some feedback please:

1) Is this a useful topic for RasPi students? Will teachers use this material?

2) Is the basic structure and topic list heading the right way?

3) Is the more detailed content so far OK? (pitched at the correct level, use of language etc)

There is obviously a lot more to do, but I want to make sure I am not wasting my time before I spend too long :-)
Posts: 37
Joined: Mon Aug 08, 2011 3:11 am
Location: Melbourne, Australia
by antiloquax » Sat Apr 28, 2012 1:16 pm
In the first Debian image, Joe was the default editor. The more recent release has geany (and I think leafpad).

Personally I prefer VIM :)
Posts: 406
Joined: Sun Nov 20, 2011 11:37 am
by daviewales » Sat Apr 28, 2012 1:35 pm
kernelcode said:


daviewales said:


Mjiig said:


I've actually been thinking about creating a programming "quest" that gives you one very simple programming problem to start with after a basic introduction (modify this program so that it prints out the product not the sum), and the output of that program allows you to unlock later problems. This goes on, creating a chain learning effect. Once you get to a certain level the problem could be to write an implementation of a simple decryption program that's needed to unlock later problems.


I've had similar random thoughts, but I doubt my programming skills would be up to the task. I can see something like this being really really cool. (Imagine a game, where the puzzle to pass to the next level involves writing a program to calculate something... You'd want to make sure that there was a decent amount of gameplay as well, so that it wasn't just code, achievement, code, achievement...) The early problems could probably be solved mentally, so kids understand how their code relates to "the real world"... Then you could progress to problems that would be fairly difficult to calculate by hand. You could have quests, where you explore a world looking for clues. (it doesn't have to be 3D — 2D would suffice) Imagine a 2D dungeon game, where the books/scrolls/scrawled notes you pick up don't magically let you through doors, they just give you instructions that can be put together to make a program that will calculate the answer to a puzzle. (You could have a library, where you could access all the instructions that you'd collected. You'd probably want them to automatically sort themselves into a cohesive collection of topics as you found them.) Using Skyrim style games as a metaphor, the books and notes you find are usable code instructions, and the crafting or enchanting tables are code interpreters or text editors that let you create code to put through interpreters.

Let me know how you go/if you need help with anything. (I only know basic Python, so don't expect me to help you with complicated coding problems... =P)


This sounds like a good idea - and the type of thing that could be very easily collaborated on. Define an interface for a 'quest' - I guess all you really need is a hash of the correct answer to compare against a given answer - as well as perhaps a model solution. The quests can be self contained, and simply added to the game as they become available. Download them like apps, rate them by difficulty and specify prerequisites.... I'm thinking like the game Uplink, but not (cr/h)acking
My exams are in 4 weeks, but after that I might just set up a github for it... if someone else hasn't already



I haven't done any graphics programming, but I could probably contribute a couple of text based python puzzles.
Posts: 19
Joined: Wed Apr 25, 2012 12:22 am
by daviewales » Sat Apr 28, 2012 3:29 pm
Hi Alec,

In response to your request for feedback, here are my opinions:

1. Yes, I think this is a useful topic, if only because I've wondered about version control, but never really learnt how to do it myself... Keep up the hard work (if only for me... =P)

2. I don't know enough to answer this, but it seemed ok to my limited knowledge...

3. I'm think you're doing fine in the detail area. I think it will be a great resource once the remaining sections are filled out.

(I've done a few minor edits fixing spelling and rearranging sentences to make more sense. =D)
Posts: 19
Joined: Wed Apr 25, 2012 12:22 am
by alecthegeek » Sat Apr 28, 2012 11:05 pm
daviewales said:


In response to your request for feedback, here are my opinions:

....

(I've done a few minor edits fixing spelling and rearranging sentences to make more sense. =D)


Thanks -- much appreciated.
Posts: 37
Joined: Mon Aug 08, 2011 3:11 am
Location: Melbourne, Australia
by Jim Manley » Sun May 06, 2012 2:34 am
daviewales said:


Mjiig said:


I've actually been thinking about creating a programming "quest" that gives you one very simple programming problem to start with after a basic introduction (modify this program so that it prints out the product not the sum), and the output of that program allows you to unlock later problems. This goes on, creating a chain learning effect. Once you get to a certain level the problem could be to write an implementation of a simple decryption program that's needed to unlock later problems.


I've had similar random thoughts ... Imagine a game, where the puzzle to pass to the next level involves writing a program to calculate something.  The early problems could probably be solved mentally, so kids understand how their code relates to "the real world"... Then you could progress to problems that would be fairly difficult to calculate by hand. You could have quests, where you explore a world looking for clues. (it doesn't have to be 3D — 2D would suffice) Imagine a 2D dungeon game, where the books/scrolls/scrawled notes you pick up don't magically let you through doors, they just give you instructions that can be put together to make a program that will calculate the answer to a puzzle.  Using Skyrim style games as a metaphor, the books and notes you find are usable code instructions, and the crafting or enchanting tables are code interpreters or text editors that let you create code to put through interpreters.


It sounds like you haven't seen my posts in the General Discussion and Projects Forums about the Pi-finity! 3-D educational game a number of software developers and I have been working on since February to help teach science, math, software development, and other technologies.  The goals are very similar to what you're describing here, but, it will all be withing 3-D worlds to use the Pi system's very capable Graphics Processing Unit (GPU) and 1080p HDTV output via the Pi HDMI port.

Pi-finity! will actually be a system of games, with each world (represented as a real planet, both within our solar system, as well as elsewhere in the Milky Way galaxy) hosting one, or more, games, able to be populated by players with space/air/ground/water craft, space/land/water facilities, equipment, etc.  Where the physical characteristics of a planet are known, they will dictate the behaviors of activities in the vicinity of the associated world.  Where they aren't known, players will be able to create models with characteristics of their own design, using tools we will provide.  Teaching software principles will be performed in conjunction with solving scientific, mathematical, and engineering problems, with a broad range of simplicity to difficulty in both the problems and the software needed to solve them (e.g., a few lines of source code, to entire applications).

None of us developers has a Pi board yet, but, I am accessing one in the UK remotely from California to start trying out ideas.  Once we all have boards, it will be a few months before we have even an alpha version of the first few game tools working, and some example games built with them.  So, it will probably be the Fall before people outside the development team will be able to start trying Pi-finity! out in a beta test.  Just do a search on Pi-finity! here in the forums to see our discussions about what we're working on as we make progress.
The best things in life aren't things ... but, a Pi comes pretty darned close! :D
"Education is not the filling of a pail, but the lighting of a fire." -- W.B. Yeats
In theory, theory & practice are the same - in practice, they aren't!!!
User avatar
Posts: 1357
Joined: Thu Feb 23, 2012 8:41 pm
Location: SillyCon Valley, California, USA
by daviewales » Sun May 06, 2012 2:46 am
Cool! I'll check it out. (It sounds a lot more ambitious than what I was originally thinking. =D)
Posts: 19
Joined: Wed Apr 25, 2012 12:22 am
by alecthegeek » Sat May 12, 2012 6:53 am
alecthegeek said:


I've started writing course notes on Version Control at http://elinux.org/Version_Control

Please pitch in


This work has now moved to https://github.com/alecthegeek/version-control-basics to make collaboration easier.

Still looking for more people to contribute. Please wander over
Posts: 37
Joined: Mon Aug 08, 2011 3:11 am
Location: Melbourne, Australia
by hooperw » Mon May 14, 2012 9:05 pm
I have a set of ARM machine language tutorials (about eight exercises in all) that I use in a Computer Organization class. I use gcc/g++/make/gdb as the development environment, so I think the material will port to the Raspberry Pi with few changes. I'm eager to extend it with exercises using the floating-point unit built into the Raspberry Pi (and which is lacking in my current platform).

Would the foundation be interested in adding ARM assembly to the language mix?
Posts: 1
Joined: Mon May 14, 2012 8:42 pm
by CommanderCoder » Thu May 17, 2012 5:33 pm
The manual is an educational resource for those new to computer science. Delving into assembler isn't exactly in the remit although I hope to see it exposed more in online resources. I'd suggest you get your guides onto the wiki and we can certainly point to them.

That goes for anyone else that has contributions that might not make it into the manual; or might be a little more involved than an early introduction to computer science.
Posts: 20
Joined: Tue Aug 30, 2011 7:17 am
by Joefish » Fri May 18, 2012 3:48 pm
Please please please do not suggest that any of this is 'open source'. 'Creative Commons' is fine for educational material, but programming examples have to be completely license-free.

The last thing the educational side of this project needs is someone demonstrating how to add two numbers together, then claiming that their example is 'open-source' and every program anyone ever writes that adds two numbers together must also be open source.

There's been a great rush of that all over the internet - thankfully beginning to die down now - where previously altruistic contributors claimed 'open source' licenses for the most trivial examples of coding, making learning new career skills a minefield of pointless conditions.

I would very much like to be posting examples of code here. But then I would also very much like to have a Pi... :(
Posts: 95
Joined: Wed Jan 25, 2012 10:31 am
by h4ppycl0wn » Mon May 21, 2012 8:45 am
I see a lot of discussion about programming here but what about networking and explaining some internet fundamentals? Most future applications are going to have to interact with networks on some level.

E.g. Using a group of Pi's connected to a hub, one as a server the others as clients to explain:
- MAC addresses, IP addressing, DHCP and how devices get allocated IP addresses.
- DNS / BIND and how we relate IP addresses to names for convenience.
- Set up a simple web server and get the clients browsing pages on the server

I'm a telecoms geek by trade and familiar with installing all the above services on Debian. I've also already installed the above on a Pi to serve my home network (and it works :D ). I'm happy to generate some content if this post gets a positive response. Just let me know.

Cheers,
Phil.

Additional thoughts:
If you give the server real internet connectivity you can even push things further with installing a proxy e.g. squid. OK, the Pi's resources aren't really up to it... but replicating, caching and serving content in a proxy fashion is so fundamental to what google/youtube/CDNs do that if we can get kids heads around it, we'll go a long way to explaining how the internet serves content.
Posts: 17
Joined: Thu May 10, 2012 12:12 pm
by morphy_richards » Mon May 21, 2012 10:24 am
h4ppycl0wn wrote:I see a lot of discussion about programming here but what about networking and explaining some internet fundamentals? Most future applications are going to have to interact with networks on some level.
If you give the server real internet connectivity you can even push things further with installing a proxy e.g. squid. OK, the Pi's resources aren't really up to it... .


How hard would it be to make tutorials to make your very own absurdly simplified server systems?

A really simplified web / file / proxy server. So that instead of kids knowing "I need to use something called a proxy server (but I don't really know how it works - just that I need it)" to having a more joined up understanding?
User avatar
Posts: 865
Joined: Mon Mar 05, 2012 3:26 pm
Location: London
by Joefish » Mon May 21, 2012 10:32 am
It'd be useful, but it's quite advanced. It's also at least three distinct subjects:

1) Socket communication
2) Server programming
3) Software-as-service architecture

There are more basic things to teach first, though simple peer-to-peer communication could be a good one to introduce fairly early. You could let kids develop their own solutions as to how to manage networks of multiple communications (e.g. client/server, managed peer-to-peer) if they need to, rather than dictate one straight away.

Picking a standard port number for inter-Pi communication may be a good idea to try to keep things under control...
Posts: 95
Joined: Wed Jan 25, 2012 10:31 am
by h4ppycl0wn » Mon May 21, 2012 10:41 am
My intention would be to write some tutorials aimed at 12 -> 16 age, with no pre-existing knowledge of computer networking.. and provide with each topic a simple practical example that can be carried out via the RPi. The overall subject would be to learn the networking services it takes to get an enteprise (company) network up and running.

However, I'm an engineer used to writing documentation for other professionals so there's a danger I'll pitch it at the wrong level and assume too much.

Probably the best thing I can do is generate the high level contents and provide a URL on this thread for anyone to take a look and comment if its headed in the right direction. Give me a few days to put something out. This is a topic that is bread-and-butter for me so no problem to write but I have a day-job to work around :-)
Posts: 17
Joined: Thu May 10, 2012 12:12 pm
by h4ppycl0wn » Mon May 21, 2012 10:46 am
Joefish wrote:It'd be useful, but it's quite advanced. It's also at least three distinct subjects:

1) Socket communication
2) Server programming
3) Software-as-service architecture

There are more basic things to teach first, though simple peer-to-peer communication could be a good one to introduce fairly early. You could let kids develop their own solutions as to how to manage networks of multiple communications (e.g. client/server, managed peer-to-peer) if they need to, rather than dictate one straight away.

Picking a standard port number for inter-Pi communication may be a good idea to try to keep things under control...


I think you're imagining I'm talking about application development when really I'm talking more fundamental networking theory than that as a background to good development. Stuff up to layer 3 / 4.

I take your point that dictating an application to use for communication (e.g. http) would be a step too far. However, I don't think its wrong to assume that the majority of communication being used today is IP based (then again, I'm a telecoms geek so maybe I have a skewed view of the world ;-) . So, a set of tutorials explaining what happens to get a device talking IP to IP on a network and across the internet would be useful.. then we let the kids run wild defining applications that can talk IP.

I also don't think its wrong to assume there are certain applications that almost all enterprises run like DHCP, DNS, Intranets, Wikis, file-shares, proxies, firewalls, etc... I don't think its wrong to provide a high level familiarity with those applications. These are the environments our future coding experts are going to have to work within.
Posts: 17
Joined: Thu May 10, 2012 12:12 pm
by markb » Mon May 21, 2012 10:51 am
If you are going to be teaching kids networking, shouldn't we use IP v 6 as that's what they will be dealing with in the near future
User avatar
Posts: 124
Joined: Thu Nov 17, 2011 8:09 am
by morphy_richards » Mon May 21, 2012 12:00 pm
markb wrote:If you are going to be teaching kids networking, shouldn't we use IP v 6 as that's what they will be dealing with in the near future

In my mind it would be much simpler than that.

Which Computer is this Raspberry Pi?
How can I identify this Pi?
Which computer is that Raspberry Pi?
Where is it? How can I identify it?
How can I get a file off that Raspberry Pi and onto this Raspberry Pi?

That kind of thing ...

Perhaps you could even ignore the built in network port and go for a much more grass roots approach to begin with - perhaps by streaming bits in and out through a pin on the GPIO or by using a serial connection. They could come up with their own equivalent of a network / IP address ... It might work well as a group project for kids working in teams.

If you think about how networking developed over the decades - it might not be a bad idea to go back in time 30+ years as a means of introducing the fundamentals of how this stuff works (..?)
User avatar
Posts: 865
Joined: Mon Mar 05, 2012 3:26 pm
Location: London
by h4ppycl0wn » Mon May 21, 2012 12:19 pm
Aren't we talking about 2 distinct, different topics here:
1) How does networking look today? If you're writing an application what environment is it going to function in (the internet, IPv6, etc.)
2) If you want two computers to talk, from fundamentals what does the code need to look like for this to happen and how would you develop your own environment?

I think both topics are admirable and are applicable to the real world. I feel confident to write about (1) but not about (2).
Posts: 17
Joined: Thu May 10, 2012 12:12 pm
by nr » Mon May 21, 2012 12:37 pm
I'm happy to help out here too, for broadly similar reasons. My thinking is that there are a lot of children out there (my own included) who just equate 'the internet' with firing up a copy of Firefox. Using the Pi as an educational tool to show how things hang together, and setting up basic DNS, DHCP etc. can only be a good thing, surely? I know there are a million books out there telling me how to do it, but as with coding, actually getting in there and building stuff is a much better way of learning.

And it's more fun. Mostly. I can think of a few networks that I fervently wish I'd never seen.

PS. Hello Phil :)
Posts: 11
Joined: Wed Jan 11, 2012 10:04 am