You are viewing a read-only archive of the Blogs.Harvard network. Learn more.

A jewel of an online summer camp, movie making in Minecraft

ø

I was looking for an online summer camp for my ten year old nephew to learn to make movies in Minecraft.

Luckily I found “Playful Digital learning” in Arizona.

And camp was a blasting success. Sign me up again, my nephew said, this is the best camp I have been to by far. Best of all he claimed, was the kids celebrating their movie with ten minutes of free play at the end of camp. He loved building the movie set together and the making of the movie.

The facilitator was amazing, kids made suggestions, agreed or disagreed, argued, wrote lines, changed them, made about faces, and after all that, with some magic from the facilitator, they had a fairly simple script moving the story along. the facilitator also used magic to marshal flying ninja’s into finding her on the set, and walking or turning to the camera and saying their lines. Quite a feat. And of course there is the post production work to turn the many cuts into a movie. Hurray for the facilitator.

Technically, this camp used zoom, sharing the screen, and a drawing boards to discuss the elements to be built. Also google docs to write down ideas and script. Plus minecraft Java edition 1.5.1, a server, and OBS project to film the action.

It took a very unique kid/script writing/tech/Minecraft savvy team indeed, to pull off this creating a movie from the ground up in just five days. It was such a delightful experience to see the ideas for the movie shape up and for the kids to actually act out the play in Minecraft in a universe that the kids had just created themselves.

Minecraft movie making: Egypt

WHY are there not virtual summer camps everywhere teaching kids how to make movies in Minecraft?

And HOW do we follow up with the high energy/interest generated by this experience to make our own movie?

I would be interested to hear from other parents who are making movies with their kids in Minecraft.

My thinking on how to make a movie with one computer only:

1. Create a minecraft world

2. Start with a beginning of a story, maybe 3-4 scenes that get you into an interesting spot

3. Use a camera recording mod and set up the camera for each scene

4. Build details and record the movie as the story unfolds

5. Use a computer/robot  (with a TV screen as needed) to interact with the hero.

or

record scenes between two characters by changing skins and showing one character at a time

6. Include battles showing only one character at a time: Hero runs towards enemy / cut / the enemy is on the ground.

7. Build to a Climax?

How to install Alpine on mac OS 10.9 in 2015?

ø

It can be done, my mac has OSX 10.9.5 and it has xcode installed and I use iterm.
This is what I remember of the process, hopefully this information is mostly accurate.

I went to the Alpine website: http://www.washington.edu/alpine/acquire/
and got alpine/alpine.tar.Z
Alpine 2.00

In that folder under doc, under tech-notes, I found a file installation memo.
in terminal at the command line, I moved to the folder directory and I typed
./configure and then make. And I got a fatal error

I found an email on the “alpine-info” iist with my error
fatal error: ‘pam/pam_appl.h’ file not found
and a suggestion
Edit the file imap/Makefile and look for the line the starts with oxp:
delete the part that says -DMAC_OSX_KLUDGE=1, so leave the line as
EXTRACFLAGS=”$(EXTRACFLAGS)” \

Thad fixed my problem. I ran make and it gave a lot of warnings but no fatal error.

I found a note that instead of copying the binaries manually, you may use
make install
to install them. that worked. Awesome.

then I followed this thread:

In the end, alpine was just easier

Start Alpine, and go to the configurations page with M-S-C. Page down until you see “Enable Incoming Folders Collection.” Press return to select it, then E to exit and Q to quit. Restart alpine.

Press L for the folder list. Highlight “Incoming-Folders” and press return. Press A for a new folder.

When asked for the name of the server to contain the added folder, enter this for a GMail account.
imap.gmail.com/ssl/user=ACCOUNT_NAME@gmail.com

At the “Folder on ‘imap.gmail.com/ssl/use…’ to add:” prompt, enter “Inbox”.

For the “Nickname for folder ‘Inbox’:”, enter whatever you want to call the folder locally. I called mine ACCOUNT_NAME@gmail.com

When you press return you’ll be prompted for your password, or given an warning screen about certificates and asked for permission to continue. Enter yes, or your password or both, as needed.

But then following other recommendations, I edited my alpine config as follow
user domain:
smtp server: “smtp.gmail.com/user=username@gmail.com/ssl/novalidate-cert”
Inbox path: “pop.gmail.com/POP3/SSL/novalidate-cert/user=username@gmail.com”

I modified read message folder so Alpine would save the emails when I had read them – otherwise they disappeared from my Alpine inbox.

enable incoming folders collection is set
I changed customized header
and I selected don’t rename don’t delete so Alpine would not ask me to move my messages to a folder every month.

at the terminal I ran touch so Alpine would remember Password
Now if you want that your password should be saved on your computer (dont worry its totally safe) , then open the terminal and if you are in your home directory then give the following command

touch .pine-passfile

When I tried to read email from gmail the connection failed. It turns out that gmail default setting would not allow for Alpine to read the email, and there was a message with instructions on how to change this security setting.
After that I was able to read emails from Alpine and save them on my mac.

I think there is a setting that deletes email from gmail as Alpine accesses them. I have not set it to that yet.

That’s about it I think. I hope this may help someone else, or at least give a sense of what is involved.

The one problem is that emails disappeared from the inbox if I did not save them before going to another box, sentbox etc. But since all the emails stayed on the gmail server and could be accessed there, they are not completely lost.

The other option is to use imap

{imap.gmail.com/ssl/novalidate-cert/user=username@gmail.com}Inbox

What happens then is that gmail and the local inbox look exactly the same, same read or unread messages. But when I go to save I get a message has shrunk on every file.

 

Is there a Harvard community?

ø

How can a staff member meet students, staff or faculty at Harvard?

First, go to Wikipedia
Faculty: about 2,400
Staff: 2,497 non-medical, 10,674 medical
Undergraduates: 6,715
Postgraduates: 12,424
So about 35,000 people. quite a few people.

Well, there is the gazette, with its share of public lectures, art
There are email list with its own anouncement of lectures, talks etc.
There are newspapers.
There are courses.

But is there a venue in which one can be an actor in relation to other members of the university? Undergraduates socialize with faculty in the houses for example, is there such a venue for staff to socialize with faculty and students?

This donkey keeps heading for the bushes

ø

This is the third technical course I am taking, and I am starting to notice a pattern.

The instructors teach by defining a project for which they give you all the elements, in lecture, in section etc. They provide support through various mediums so people can put the pieces of each puzzle together. The Computer science courses tend to have requirements that define the requirement the project must meet fairly stricktly, sometimes down to the name and type of the arguments.

What I have noticed, is that before I even get started on the project, I will imagine some way of adding my own spin to the project. On my first ruby project, I developed a browser based GUI so that our hands of poker could display as cards on a screen. On my first php project, I scraped several websites to obtain original data. On a maya project, I decided to create several fish to animate them together. And on our latest javascript project, I decided to integrate some US census data adding several days of work.

On the other hand, when I have much to learn, as was the case with Rails projecs, I still bushwacked through the assignment a bit, adding this or that feature but I stayed much closer to the assignement. And on the maya project, which was a fairly complex rigged animation for me, I found ways to simplify the project so it would be just right.

Why this pattern of learning? It could be that I don’t like following, I love to search, and as soon as you start bushwacking, you need to search. It could be that I believe the way to learn is to explore what others have done on the web, and so I try to find a way to extend the project in a way that forces me to bushwack.

But I am now wondering if the simple answer is that I am unconsciously manipulating the level of stress tension under which I work to keep myself focused and concentrated: When the instructor layed out a fairly structured assignment in Ruby, I immediately tried to escape it through a search for a GUI. The idea of taking methods one at a time and writing code to meet the required functionality sounded like busy work, but did not present any visible challenge. Thus the stress level was low and so was the motivation to get started. When I started on a too ambitious approach to a maya animation, the stress level was too high, and there also I could not get started. But when in a previous maya project I decided to have several dolphins with different patterns, instead of just one, the stress level was just fine for my level of skill. I thought I wanted a creative outlet, but maybe I was just manipulating my perception of stress!

If this is so, there may be other ways I can learn from class projects where all the pieces are given to you, other than heading for the bushes.

Approaching technology with a human touch

ø

I am taking a course on web programming. I am happy to report that I found a learning wizard as a TA in this course as well.
What is the difference between empty and is_null. Let me show you, I will create an empty string and a null string and we will find out together. Hands on. Brilliant. Well, to me it is brilliant. It works and I love that learning style. New year resolution. Make good use of this sandbox approach myself.

What I would like to report on is the difference between automatic machine response to a technical problem, and a vastly different response with a human touch.

The project starts with a menu. We are to type all the menu items, prices etc in a text file. I won’t be caught dead spending that much time with data entry if there is another way. So I find an html version of the menu, and spend much time learning to parse the file and retrieving the information. I acquired some technical skills, and most of the information is in the computer. Great!?

Then I meet the fellow with the human touch. He looks at the menu not as a pattern of words to be entered in a text file, but as a pattern of symbols mediating between a user and a vendor. He actually looks at the page to see what it says — Ok, I can’t eat pizzas, so I was not open to that type of inquiry, eating pizza would make me sick — Pizzas have a number of options. To my data parser, those options are all to be treated the same. But to my fellow humanist, a 2-way and a 3-way combo means something very different. It requires refering to the previous lines to determine what topping could be added. Extra cheese cannot be ordered by itself, it adds itself to another order.

To further his understanding, he goes to the pizzaria, inquires about different orders, checks out how up to date our menus are, meets the owners, orders a sub. Back at home he finds an on line order site for that same pizzaria and further thinks through the complexity of representing foods that can be ordered through this computarized interface.

This encounter blew my mind for two reasons. One it showed me another kind of wizardry involved in learning. And for another it showed me how completly blind to the meaning of what I am working on I can be when I am working with a computer language.

Learning Wizard

ø

I have recently had the occasion of watching a learning wizard. I can’t remember when I had an occasion to watch someone learn. Typically, the courses I have taken have been with people who knew the material they were teaching. And on my first work project, we were finding our mistakes by the smell of burned electronics, seriously clamping down on creative interactive learning.

What struck me with this wizard is his ability to isolate an aspect of a problem, embed it in a simple model, and play with it, just act on the new model in different ways and observe the outcome until he has something approaching what is wanted.

What struck me equally was my resistance to this approach even though I could see it worked brillantly to learn maya 3D. My path to learning is motivation, goal. As I watch a ball swing on the screen, I want the color to change just when the two balls hit each other. I have a hard time separating my wanting the color to change from the circumstance in which the color is to change. To actually achieve my goal, I have to let go of it, and just learn how to change colors, the different ways color can change, link color to time, to a geometry, … and only after some practice of this kind can I go back to the embedded problem.

Where there is resistance, I suppose there is fear. Fear of loosing that motivation, that “I want” which propels me to come back again and again at the difficulty until -finally – it gives way. Fear apparently blocks the curiosity/surprise/exploratory way to knowledge. It craves a road map, a vision, a path on which to focus. When exploration -except in the safe confine of a tutorial – is associated with timelessness, unknown, aimlessness.

Indeed, exploration by itself cannot lead very far. Playing with simple models can only create simple animations. An abstract animation might be created with a sequence of random playful variations. But for some kind of narrative creation to occur, a combination of simple steps must be composed in a meaningful structured way.

The successful learning experience runs back and forth between the idea, the concept, the feel of a particular animation and the accidental findings of playful exploration. The mind must constantly seek and let go, never completely loosing track of the direction it is headed in, and yet constantly discarding ways which seem to dead-end. For Maya is not a logically constructed structure, it has its logic, but what it does and does not do was built in by the interaction of many programmers/users. Unlike mountain paths which must lead from some spot to some other spot, a particular path taken in Maya does not necessarily follow through over the pass to the nirvana thought after. Seeking many ways until one leads you over the pass is the way of learning in Maya, and maybe the way of learning in general.

Small is small despite all we do and say

ø

info = Hash.new {|h, k| h[k] = [] }
Find.find(*paths) { |f| info[File.size(f)] lessthan lessthan f }

What is it I am facing?

Almost a year ago, I was comfronted with a similar situation. Some code I could not understand in Objective C. Only I dropped Objective C, while eventually I get it with Ruby. It helps that Ruby is so easy to run, so easy to print things out to see what is happening, or run irb. And it helps that folks are writing about Ruby:

For the top line, I found
http://www.oreillynet.com/ruby/blog/2006/04/nubygems_hash_initialization_1.html
which explains hash initialization.

for the second line, I realized that lessthan lessthan was a string method, not a hash method. And on an inspiration, I figured out how to use ri:
ri String#length
becomes
ri String#\lessthan\lessthan
I am brilliant.

I don’t think I am facing Ruby. I think I am facing whatever shortcuts folks have been using. And I don’t know those short cuts, and those short cuts are hard to read. There are whole books written on a type of short-cut called regexp. I have used them. They work. You can write very powerful code which looks very snazy, one liners even. But they are difficult to read.

I think these brilliant short cuts probably have a long history. Maybe I am facing Human’s synthetic mind. The mind that invented writing. But I suspect I am also facing men’s minds. The competitive mind. The mind that enjoys looking down on the uninitiated. Whatever it is, I think it is worth my time finding a long-hand way which is easier to understand. It is not enough to get a ruby book. It is not enough to understand the code. At the end of the day, I need to take one more step, the imagine I want others to understand this easily ruby way.

Human distributed intelligence

5

I sat by the river and watched some ducks approach a white cup floating on the river. Quickly they recognized the item as “non food” and continued. There head was raised giving the impression of purpose, of attention, of relaxed readiness for action.

I wonder if human’s lives are just as driven or pre-programmed as that of animals. People indulde in drives, in food, in sex, in drugs, in power, they indulge in counter-drives, anorexia,…. Civilians get killed, soldiers get maimed, rich people strut their wealth or bullie others, fearful people cower down.

Social organisations work peacefully or not, it depends, on what, who knows. For a while now, people have created beyond their means, chiefs, kings, emperors cohersing people into great buildings, delirious tombs…

And yet beyond this individual madness, beyond this social mallability, a quality has moved forth, survived, recurred, the passing of knowledge. However indiosyncratically this knowledge was acquired, passed on, distributed, there are people out there who know about something, some of that knowledge gets lost, like the knowledge of the medicinal value of plants, or of the plants themselves. Others are aquired in their stead. Take computer technology. Out there there is someone who knows how to use this or that. This knowledge is there because someone somewhere became motivated to learn, humans with their uncomprehensible motivational complexity are acquiring and holding on to bits of information which permeate their world.

I wonder if there is a speed of transmission at which humans will start vibrating in this web of information and become part of an active acting distributed intelligence. Already we have seen the crudest of manifestations, flash visits, terrorist coordination… What if the world of information became so fascinating that people would voluntarily devote themselves to their informational life… millions of people deciding together on this or that action, millions of other collecting information, millions of others processing pain signals.. and together this human distributed intelligence engulfing the lives of humans.

Except it could not reproduce. So how different is that from a rainbow. Perhaps human intelligence is empty. Empty of permanence that is. If that is the case, perhaps it is ok to relax, to look at all I have to learn with a little distance, and to remind myself, it is empty, empty, empty. Lets stop and see what else needs to be done.

How to get url parsing like rails or nitro

ø

I was so pleased that with the transfer to WordPress, everything read much better than on the Manilla server. When I next looked at the blog, the same text was completely compressed without any return line! Go figure! (the wordpress auto paragraph formatting had been disabled, admin put it back for me Ouf!)

Here is today’s question, how do Rails or Nitro process URLs so that a URL request can be processed without an actual file of that name on the server?

Typing a URL on the top of the page initiates a communication with the computer hosting the website: The browser opens a connection with that computer and then issues a GET command to receive a file.

telnet www.apacheweek.com 80
GET / HTTP/1.0

The receiving computer recognises the “GET” command, sends info about itself, figures out what file is wanted (in the case of “/”, it looks for a root index page), and if it finds it, sends it to the requesting computer.

Frameworks like Rails or Nitro intercept requests within a certain directory for pre-processing. The framework code has to be the one responding to the GET command issued over the http connection. How is it done?

Web applications are machine independant, so a framework probably works with the browser rather than at the machine level. How to handle URL’s must be loaded in the browser before any request comes in.

In Apache some AP_GET_ browser_fx is called upon by the browser when it detects the GET command. The browser probably stores the information parsed and initiates a default action unless… there is an alternative default setup, in which case the request information could be passed on in environment variables, or simply as the original URL string request.
http://hoohoo.ncsa.uiuc.edu/cgi/env.html

One avenue of inquiry is to look into Apache’s documentation.
Since Rails works with CGI or fcgi, CGI would be another avenue of inquiry.
I prefer to look at how it is done, and see what I can learn from it.

http://wiki.rubyonrails.com/rails/pages/UnderstandingHowRequestsAreRouted
In rails, when you deploy your application you set up Apache through its httpd.conf file. That’s hard wired and requires restarting Apache. You set up a virtual host (see Rails Agile web book on virtual host, chapt 22, page 455) and you tell it that a file in the directory corresponding to that virtual host will overide all. That file is invisible, it is called .htaccess
Any file which does not exist is redirected by this .htaccess file to dispatch.cgi by the code
RewriteRule ^(.*)$ dispatch.cgi [QSA,L]

This use of .htaccess reminds me of what I did to get erb to work
http://dekstop.de/weblog/2006/01/rhtml_on_osx_with_apache_and_erb/
“Your server is configured so that CGI scripts placed in /Library/WebServer/CGI-Executables/ map to http://127.0.0.1/cgi-bin/ …
Create the following .htaccess file somewhere below your server’s document root at /Library/WebServer/Documents/ to enable the .rhtml handler for a specific directory…”

I also found an interesting website which talks about how search engines deal with dynamic websites.
http://www.hypergurl.com/articles/dynamic.html
It explains how to use mod-rewrite to be more search engine friendly
RewriteRule ^productid([^.]+).*$ yourscript.php?id=$1 [T=application/x-httpd-php]
this code is written in htaccess file.

So over and over I find the same technical solution in apache, a virtual host with a hidden htaccess file. php, Cgi, or a framework come down the line to route the request and create dynamic web links to present.

What about other webservers? What can I learn from them?

I was able to redirect URLs with webrick using catapult. There the code is short and easy to identify.
http://www.jamesbritt.com/code/catapult/

class RequestHandler (less than sign) HTTPServlet::AbstractServlet
def process_request( request, response )
…. request.path_info.split

the request.path_info contains the URL, the process_request method can create an instance of the class requested and run the associated code to create and return a response.body and a response content type.

I was able to redirect URL requests with Nitro very easily. Unlike Rails, I did not have to generate miriads of files and folders. All I had to do was to define my class methods in a file main.rb in a folder called controller.
The server code maps the port to the controller folder.
setting :map, :default => { ‘/’ => Controller }, :doc => ‘The server map’

when you run nitro (server.rb), server/runner.rb determines which webserver to use, in the case of webrick, adapter/webrick

@webrick = WEBrick::HTTPServer.new(webrick_options)
class WebrickAdapter (less than sign) WEBrick::HTTPServlet::AbstractServlet
def handle(req, res)

and in rails there is a webrick server
class DispatchServlet (less than sign) WEBrick::HTTPServlet::AbstractServlet
def service(req, res) #:nodoc:

With webrick, I see basic code for which all default behaviours must be defined, but with the advantage of being able to do a basic redirect very easily, as part of one’s code as shown by the streamlined catapult.

What did I learn?
Learning how to do a redirect is not basic task. At the root of the internet behavior is a set of rules on the kind of data can be placed on the internet. HTTP data, XML data etc On top of that, any numbers of software can be written which access the internet in read or write mode. And on top of that code or frameworks are written to automate specific kinds of processes.

A more complex server requires code in its configuration file, or task specific instruction file, A lighter server like webrick expects code in a specified section of code. Frameworks require a file of the proper name in a specified directory… every where, conventions, conventions, conventions. Somehow, people out there assimilate these conventions, manipulate them, create new behaviors.

What I lalso earned from this process is the importance of finding a small program like catapult which has the desired behavior, but is so small I can see how it is done. For learning at least, small programs are more helpful. Once I know what to look for it is easier to look for similar behavior features in other more complex code.

“The problem is not desire, it is that our desires are too small”

1

A new webserver. I only lost half a blog page because it contained a lessthan sign which apparently tells the blog it is the end of the text! I have no idea how to find help and learn to escape characters, so for now I put text instead of the symbol and I will move on. Formating is better, with lines of code following each other line by line, instead of bunched in an unreadable paragraph.

These last couple weeks, I have made progress with Ruby and the web. It is a sweet feeling to finally get a “hello world” example to work. I spend so much of my time trying to get installs to work, that I wonder if I will move on to actually writing code! Maybe I am getting addicted to this, “install and how do you get to this to work” pattern of tension and delight in the release from tension.

“The buddha evoked the unrest, instability and uncertainty that color our lives …desire is a natural response to the reality of suffering. We feel incomplete and desire completeness; we feel unrest and desire ease; we feel insecurity and desire comfort; we feel alone and desire connection.” Mark Epstein. So I am endlessly flying on the wheel of suffering. But at least in this case, thanks to the generosity of folks on the web, there are short moments of release from suffering.

For now, I am following some of the beginner’s assignments posted by MIT professor philip Greenspun on this older course website
http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-171Fall2003/CourseHome/
Most of the implementation is left for me to discover, but in a sense, that makes it easier to learn: I don’t have to skip over perl or java code to get to the main ideas. And hopefully the text will guide me to some web application mastery. For now, I have written my first CGI code entering data in a form and sending it to a ruby code to process and generate a web page with the answer. Cool!

I have also learned one way of setting up eruby and erb on tiger. First I set up erb with the help from this weblog
http://dekstop.de/weblog/2006/01/rhtml_on_osx_with_apache_and_erb/index.html
and then I did the same with eruby, except I copied eruby to eruby.cgi.

A key part of learning, is finding an object of desire. How many come to the ruby site and say, I have read the book, now what, what problem should I try to solve? And on the other hand, how many come to 3D like I do with an overwhelming desire, I want to represent my cousin’s head, a boy jumping in the air, etc, dreams of perfection so far beyond anything the most skilled person can attain. With such richness of perception from daily life around us, how can we look at a dreary cube with the least bit of lust? I sat under a tree in bloom yesterday. Each branch was heavy with hundreds of tiny perfect white flowers sparkling in the sun by the river.

Log in