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:…
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

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:…

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.

At the “Folder on ‘…’ 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 at

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: “”
Inbox path: “”

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}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 = {|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…
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
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


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 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.

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.…
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…
“Your server is configured so that CGI scripts placed in /Library/WebServer/CGI-Executables/ map to
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.…
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.

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 =
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”


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…
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…
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.

Ruby and web applications: surfing the nerd’s waves


My life is stop and go. My latest: reading all about household employee’s tax. Took me two days, but I think I got it. The forms to send, the amount owed… First there is social security and medicare, kicks in at 1400$/year, then federal and state tax, kicks in at 1000$ per quarter, then there is worker’s comp, kicks in at 16 hours/week. As I am getting more help for my mother, there is more and more to do… beyond paying the person.

I got the agile rails book, so I finaly had a chance to look at it. Luckily, I had tried to install a wiki before, so I had php and mysql installed. All I had to do was reinstall mysql because I could not find the passwords. Then I found a Rails installation incantation which worked for my computer, and I was able to follow the examples — more or less. This is when I found out that unlike Ruby which folks who know a computer language can understand immediately, Rails is for web based computer experts only. Like RubyCocoa it is a giant pre-written code which is way beyond my means to fathom.

OK, so I can’t run a big powerboat, but I found Ruby, and it can still lead somewhere. After all the reason I got started with Ruby was Rails, and the reason I wanted Rails was because I wanted to know how to run our experiments off the web, without learning Java, Perl, pithon… Ruby it turns out is enough to write web applications with something called cgi.
There is even a book written on how to write experiments with cgi, “How to Conduct Behavioral Research over the Internet: A Beginner’s Guide to HTML and CGI/Perl”.

Of course learning ruby cgi may not be easy: “A lot of the focus on Ruby Web development these days is on the Rails platform, so it can be hard to find much for plain old CGI. There’s a very simple article…), the Ruby/Web chapter from “Programming Ruby 1st Edition”…). I had trouble finding anything else when I dug around on Google.”

And then, there is the matter of the web server. Apparently, Tiger runs on Apache. But that is not the only choices: “lightTPD is the BEST webserver out there, much faster than apache and much much much more flexible/configurable/secure than tux, and its fcgi php support is simply unbeatable”. Well, but remember I am surfing the waves of the pros, and Apache is installed on my tiger, while lighttpd isn’t. But already it is suggesting that while apache ruby cgi is probably the way to go, I may get better result with lighttpd, ruby and fcgi… another install delight at the horizon.

And then there are other webservers, mongrel, webrick, which is compared to cherrypy for python and Lua!!! and also apache and lighttpd. again, I am getting too far into the wave “Zed and I worked over the weekend on smoothing out the divide between Camping (the 4k web framework) and Mongrel (the slim new Ruby web server mentioned last week.) In just a few days, Mongrel has caught the scent and is totally Campnivorous. Development gems await you.” This web server was written this week-end! On the internet, you can get lost because you are off the beaten path and there is not enough information to get going, or because you are too close to the beta crest and even the installation instructions are greek.

How strange to immerse myself in this noisy world of nerds. There is a physical web, with emails going from computer to computer in search of their destination. And there is the verbal web, with advice and information thrown into the air and connections established between folks who understand each other, while the rest falls back into nothingness. Folks like me get sucked in by mirages that shimmer out of reach, but our personal disappointments and setbacks are but a day on the beach surfing the waves, while the water carves out our future landscape!?

Log in