Learning to Write/Build/Program

Almost three weeks ago I posted on Facebook — I know, I know, I constantly swear off “the facebook” but a rich blog infrastructure has not arisen among my friends and colleagues — the following observation:

> Yesterday I found myself in a metal shop, cutting and piecing together aluminum for a project underway. The work was satisfying, a sign of my having been considered competent enough to perform a certain level of work. While not asked to weld, my task did require a certain amount of precision, since my cuts would determine the quality of the overall assembly.
> As I stood there measuring and cutting, I wondered about my own qualified competence in the world of the metal shop and how it compared to what some of my students feel in the world of the university classroom. What do builders feel like among words?
> There’s obviously a lot more that can be said here, but where I found my focus was on the question of how best to reach those builders, to make it possible for them to work with words with as much competence as they bend and weld metal into machines, piece together lumber into houses, or connect electrical lines into a lighting system. After all, a sentence is one word added to another added to another added to another. String sentences together to make paragraph. Stack paragraphs to make a story or an essay.

While my initial concluding question was “Is this possibly the beginning of a textbook?” — because everything in the academy is measured by publication — I think I’d like to take the aspirations for this down a notch and think about this in terms of a class. (More on this in a moment.) At my university, we offer a course in technical writing, but so far as I know, much of it is dedicated to teaching business and engineering majors a set number of writing genres, e.g. the business letter or the process document.

What if we could demonstrate for engineers that writing could be another form of thinking for them, a place where they could think outside the realm of the materials before them in order to get a fresh perspective on the work itself? I discussed this possibility over a number of years with architecture faculty, after having sat on a number of theses and finding myself regularly distracted by the quality of writing in the documents attached to a project. The faculty have always been very welcoming and appreciative of my efforts and interests: they understand that writing can not only make for better communications with clients but also for different kinds of thinking.

Today I discovered that someone else is thinking about this [from the other, or another, direction](http://worrydream.com/LearnableProgramming/).

Raspbery Pi Supercomputer

[A professor worked with his son to build a supercomputer out of a collection of Raspberry Pi boards and Legos](http://arstechnica.com/information-technology/2012/09/university-builds-cheap-supercomputer-with-raspberry-pi-and-legos/). The kid is six years olds and already programming in [Scratch](). It’s time for me to start with my daughter.


[Why does one language succeed and another one fail?][1] To answer questions like this, Leo Meyerovich and Ari Rabkin are examining sociological aspects of programming language theory: what they call *socio-PLT*.

[1]: http://www.eecs.berkeley.edu/~lmeyerov/projects/socioplt/viz/index.html

I have done a lot of quick design projects in applications like PowerPoint, OmniGraffle, and lately Keynote. (I have Illustrator, but it can be tedious to use for small projects.) Apparently others do, too, and there are some great resources for prototyping with Keynote:

* [KeynoteKungFu](Keynote KungFu)
* [Keynotopia](http://keynotopia.com/)

And for that iPhone application I am thinking about: [Glyphish](http://glyphish.com/).

Introduction to Python (one of many)

Because I am keeping to my resolution to learn how to program in 2012…

Here is one interesting moment: while pulling out my copy of O’Reilly’s [Learning Python][lp], I found my copy of Pragmatic Programmer’s [Learn to Program][l2p] on the same shelf. The PragProg book uses Ruby, where a number of introductions to programming use Python. I was trying out my first bit of code this morning: taking someone’s age in years and calculating their age in seconds. I found it much easier to write the Ruby script than the Python, which I am still trying to get to work.

I’d go with Ruby, but apparently when it comes to cool language stuff, like natural language processing, Python is way ahead of the game. Ruby mainly gets access to NLP through its Java bridge. *Oh. No.*

[lp]: http://shop.oreilly.com/product/9780596158071.do
[l2p]: http://pragprog.com/book/ltp2/learn-to-program