The future is upon us. I have always run my blog off of a git repository. But I have never, before today, edited that git repository from my phone. In fact, I am dictating this git commit th
]]>

The future is upon us. I have always run my blog off of a git repository. But I have never, before today, edited that git repository from my phone. In fact, I am dictating this git commit this blog post using Siri!

How might one pull that off in the coolest, most flexible way possible? Well, one way is to fly your own plane around everywhere.

For specificity, let's say you love boating around Nantucket on the weekends, but you got into the top English program at Yale. You want to have your cake and eat it too. The not-so-obvious solution is to buy a small airship and fly it to and from school as needed. How do you become a pilot and what are the costs?

You can obtain a Private Pilot license with 40 hours of instruction for $5,000 - $12,000. A flight instructor might cost $50-80 per hour to teach you, and each hour on a plane costs $100 (give or take) for small, old planes. There are other costs (like textbooks and logbooks that are minimal compared to these other costs). Therefore, if you are a sharp, hardworking student, you might get a license for just around $5,000. If it takes you longer, it may take over a year and cost more like $12,000.

You can do the training in under 2 months if you try hard. Try to log at least two hours of flight time each week because otherwise you forget your training each week and it will take you longer and cost you more. Because you can only begin training in clear, bright conditions, it can be much easier to learn to fly in places like Florida or California.

Alternatively, think about first obtaining just your Sport Pilot license which requires only 20 hours of flight time. This can halve your costs and training time. With your Sport license, the FAA lets you fly during clear, bright days with up to 1 other passenger at altitudes of up to 10,000 feet (basically the max altitudes of small planes). A Sport License has no requirements except that you must have a driver's license (and thus passed a rudimentary eye exam). You can always log the next 20 hours of training to obtain the Private Piot license so that you can fly at night with more people in more airspace later. The Private Pilot license has the extra requirements of accurate color vision and a full medical exam.

Then you can buy or rent a plane to fly between Nantucket and New Haven. Small planes cost about the same as expensive cars. You can buy a small, old cheap Cessna 150 for a round $20,000. They no longer produce these models, but they are reliable and common. The Cessna 172s are still in production and can be $40,000 used. These planes can achieve max speeds of ~150 miles per hour with ranges of over 800 miles. Other small ones that carry 1-4 passengers might go up to $80,000. Bigger or luxury planes can cost millions.

You can rent a plane cost effectively. Planes rent by the number of hours that you actually use them in flight. So, if you fly to Nantucket in the morning in 2 hours, go fishing all day, and then fly back at night then you only pay for 4 hours of flight time usage. The cheapest planes might cost only $80 per hour "wet" (with fuel included in the hours rate). More pricey small planes might be only $100-150 per hour wet. Even much larger planes that seat 10 or dozens might cost only $2000-$5000 per hour which is comparable to driving on a per person-mile basis. Note that you can rent a plane for multiple days, but most charge a minimum number of flight hours per day (like 4/day).

The advantages of your own plane include the flexibility of choosing your own schedule and the fact that you can fly into any airport you want. For small or secluded areas with infrequent travelers (like Nantucket and New Haven) this can save you a lot of time and car traffic congestion. Cities run small municipal airports for free just as they do roads for free.

Flying your own plane is a fun and safe (but expensive) way to travel or commute like a badass James Franco. It's not any more dangerous (it's safer with the right care, since a drunk driver won't hit you in the sky) than driving the same distance on a road trip.

I found it surprising how easy and attainable in price (though not cheap, unfortunately) it is to become a licensed pilot. It doesn't take millions to reach the heavens and fly like a bird, just a little saving up and a few weeks of training.

Maybe I don't write because I'm afraid to challenge the validity of my beliefs. Often, in writing, I find flaws in my reasoning.

So I avoid it entirely. I hide my irrationality
]]>

Maybe I don't write because I'm afraid to challenge the validity of my beliefs. Often, in writing, I find flaws in my reasoning.

So I avoid it entirely. I hide my irrationality from myself. Maybe that is why others don't write. They find their scripts not only aesthetically distasteful (ungrammatical and drole) but also illogical. They wake up the next day and ask, "who wrote this nonsensical drivel?"

The most interesting and successful of my blog posts are ones I wrote for myself. I wrote them because they clarified thoughts that I had or judgments that I had reserved but never finely e
]]>

The most interesting and successful of my blog posts are ones I wrote for myself. I wrote them because they clarified thoughts that I had or judgments that I had reserved but never finely expressed. Not every one of the essays of such kind has been fantastically successful, but many have.

I wrote about Facebook in a passion one hour and posted it to let off some steam. It became fantastically viral. Why? Does it matter why? Why do I try to replicate that?

In fact, whenever I try to copy elements of that explicitly I fail. Rather, there is something about the emotion I had in that topic that was conveyed in the essay. Emotions can be hard to fake.

But I get praise for some of my posts, the impassioned ones I write for myself. The praise externalizes a reward for writing. I seek out more external rewards like a rat in a cage. But it never genuinely comes. I demotivate, stop writing for months.

Spontaneously, I graze the lever of internal gratification with a piece for me, with an audience of one. I feel complete. But the emotion impacts others, and praise rolls out.

It's as if I finally figure out how to run the hampster wheel out of the pure joy of running, but every time I do a treat rolls down the chute. Perhaps this is the nature of success. The treats must be resisted, but this is very difficult when you are hungry. I always fail. Success always leads me to fail.

Robinson sets up a landscape narrative with a few possible interpretations of the scene. His use of lighting and the structure of the scene reinforce these interpretations. The nature of the photograph forces a broadness in viewpoints. This one scene forms the intersection from several narratives which portray themselves in this one snapshot.

We focus on three women. Who gossips? The two women together by the river may be gossiping. A first interpretation implies that they gossip about the stroller, the third.

The photographer designs a tension in this photo by posing the figures in such a way as to reveal a story in a single frame. The path on which the woman walks meanders all of the way back, and yet the two seated women look at the stroller only when she is close enough to be in earshot. They stop talking, watching until she leaves.

The photographer tells a story with each element of the piece. The textured trees and ground provide a backdrop to focus the eyes on the figures. In a sea of repetition, each detail of individual variation of a leaf deindividualizes and is lost, pointing the viewer to look away at the mass as a whole or moreso to the subjects. The two women and the stroller stare at each other. The viewer finds himself following the gaze of both parties, searching for meaning in their glances.

The grass and trees are also blurred at portions. Presumably the wind moved the trees and grass slightly, creating a blur on the negative. The blur indicates the passage of time as they stare at each other. This does not distract.

The path is worn, so it is a well-known path that the gossiping figures knew she could walk down at any time. They aren't scheming, which would cause an out-of-the-way encounter, but merely idle gossip over lunch. The picnic basket indicates a small meal eaten there.

The setting displays a prominent vanishing point in the upper left of the painting just below the corner. This balances the image since the two figures on the right are the most white. Two faces emphasize the right half of the print. Emphasizing the third figure on the left, the vanishing point draws the eyes along the lines of the river and the path to the left to balance the image.

The figure on the left is standing on a walking stick, probably to hold the pose for a long time. The other two also have their hands supporting themselves for a long pose. These poses are taken carefully to attempt to produce a natural image meant to capture a single moment. Careful study, however, reveals the true nature of the poses, and yet these poses still convey an effect of a normal extended conversation.

The seated women are not particularly dressed up for a special event, but rather they seem more natural. It is posed but the are using quotidian pastoral attire. Their clothes give away the time of the photograph, as well as the setting in a rural area. The viewer can feel the quaint aspirations of this rural township, whose most interesting days soak in gossip.

The flat contrast in the background de-emphasizes the outline of the trees and grass. It focuses the energy of the viewer on the tension in the figures, on the actual drama and story rather than the setting. The top of the sky is a beige, so it is easy to ignore it over the also flat contrast trees. The whitest parts of the image are the white aprons in the center on the figures on the right, with the left figure's apron a little darker given the position of the sun. The lighting is behind this woman. The final white is the white of the path on which the woman walks, suggesting a purity in her intentions. The path symbolizes her more innocent actions in contrast to the gossipers who perform darker acts of gossip.

The photographer uses lighting to emphasize their deceptiveness. The gossipers look at the figure on the left, but they hide their eyes in the shade of their bonnet. Hiding eyes classically inspires feelings of deceit. They lack smiles due to the unwelcome friend. Of course, it may just be that holding a smile for a while in a portrait is hard; it is generally unusual in portraiture, and someone cannot be staring at the sun waiting for exposure so shaded eyes are required. Nevertheless, the photographer uses these necessities to enhance the image's narrative.

The setting is open and rational and not quite but mostly static. Certainly, nobody is bustling in the background. The wind however has blurred some leaves. We are in a secluded rural area. The women here found a private place to talk amongst themselves away from eavesdroppers, by the wayside, which surprises them when the figure on the left appears. It halts their conversation.

The other interpretation creates a gossiper of the woman on the left. Perhaps the woman is merely participating in gossip as she meets new people on her walk. They can all be genially discussing the matters of the day, the tidbits of the week. They could be great friends, or strangers becoming new friends. They gossip about local news and people they both know in common. It is odd that she doesn't approach closer and keeps her distance. No mouths are open on either side, implying they are merely staring each other down. Moreover, they are all staring. Normally, one of the ones not speaking of the two on the right would be looking around at random other objects.

The faces are portrayed in profile or semi-profile view which strongly captures their roundness and detail. It generally is a very painterly landscape and figure photo. The dress details are captured well, and he makes sure to position the figures on the right so that the sunlight captures everything. The sun, by the way, is clearly high in the sky; but not noon, which would be overhead, behind the woman on the left. Not behind the other two, the sun lies somewhere on the left.

The photo is in a landscape orientation with a size of 13 inches by 10 inches. The large size allows a lot of the detail in the texture and the small faces show up, but not so much that they look blown up. In very good condition, the glossy print paper is caused by the albumen print. Without abrasions or damage, the quality of the image is preserved. Despite close inspection, no hand-tinting or painting is apparent.

The whitest part of the image are the white dresses of the women on the right, which if you indicate as purity, then might imply that they are not gossiping but it is the traveler sneaking by on the path who is. She is darker, muddying the purity of the path with her presence, which is entirely in the shadow given the sun behind her. She meets them, slides back onto her walking stick, and begins to chatter about the juicy tellings she overheard. This is the most consistent interpretation of her position and stature.

The picture appears to be taken at a great height above the others. Perhaps the landscape slopes up quickly, or perhaps the photo is taken on a stage. The photo is clearly taken many feet above the others. This high view makes the spectator not feel the part of a participator in the gossip. In fact, the viewer becomes a bit of the subject of the gossip, overseeing that someone is telling stories, but too high up and far away to tell exactly what. Too far away to hear or see anybody's mouth moving at all. It is a view more common in painting rather than photography; people shoot photos at waist or head level due to the physicality of holding the camera.

In conclusion, the photo evokes the sense of a daily story which happens in the rural farmland of the UK every day in these times in the 19th century. Gossip happens matter-of-factly as they go on their normal days. This is not a special event, nor is the moment captured unique to one particular story. It evokes a sense of several stories which may happen many times throughout the week.

]]>http://www.jperla.com/blog/post/the-gossipsLog Reader 3000http://feedproxy.google.com/~r/jp-arts-blog/~3/X3uIlRkZOjU/log-reader-3000
/blog/post/log-reader-3000#commentsFri, 21 Nov 2008 04:33:00 Joseph Perla/blog/post/log-reader-3000I wanted to show off another pytho
]]>I wanted to show off another python script today. I think it’s pretty cool. It’s kind of like a very rudimentary version of something you might see in Iron Man. And, of course, anything in Iron Man is cool.

I dub it Log Reader 3000. It’s purpose? It helps me monitor logs. How? Well, sometimes I need to follow a log in real time as it is written, but I can quickly get bored. The log scrolls by endlessly while, very often, little new information spits itself out. I can quickly lose focus, or at the very least, damage my vision after staring at a screen intently for extended periods.

Ideally, I want the log to simply flow through me, and if my subconscious notices something odd, then I can act on it. If the log is read aloud to me, then I can work on other tasks and let my auditory memory and auditory processing take note of oddities on which I need to act.

So, I made a python script to read the log out to me as it is written. It is my first Python 2.6 script. I take advantage of the new multiprocessing module built into the standard library. I also use the open-source festival text-to-speech tool.

First, install festival. sudo apt-get install festival in Ubuntu. You probably want to set it up to work with ALSA or ESD sound. By default, festival uses /dev/dsp, which means that you can’t use festival and any other program that uses audio (like Skype) at the same time. Fortunately, and as usual, Ubuntu provides detailed, simple instructions to set up festival with ALSA: https://help.ubuntu.com/community/TextToSpeech .

Finally, just find an appropriate use case. Note that most log monitoring applications would not be improved with Log Reader 3000. If you just want to be notified of errors, you should have a program email you when an error appears in a log. If you want to understand the log output of a program that has already run, understand that Log Reader 3000 is meant for live-running programs. Yes, Log Reader 3000 can be modified to read any text file line-by-line. But, you will find that reading ends up being much faster than listening to a slow automated voice, so I recommend that you just try to skim a completed program’s output with VIM.

So then why ever use Log Reader 3000? It is useful for applications which fit all of the following criteria:

you want to monitor a live running program

and the debugging information is nuanced and you need a human to interpret it (i.e. it cannot be filtered programmatically) and/or you want to be able to intervene while the program is running to keep it doing what it ought to be doing in real time.

Applications:

Say that you are spidering the web, and what the spider should and should not be spidering is not yet well-defined, but a human knows, then the Log Reader 3000 can read aloud where the spider is, and the human can correct course as he or she notices the spider going astray.

Or, say that you are working on some kind of artificial intelligence. Perhaps, the AI program can reason aloud and a human can correct or redirect the machine’s reasoning as it goes along. I have no idea how or why an AI would do that.

Maybe you want to protect against bot attacks, but your aggressor is particularly clever and seems to avoid looking like a bot in all of the obvious ways. You can pipe the output of your log into Log Reader 3000 and notice new kinds of suspicious patterns live while reclining in your chair or surfing the web.

You run a securities trading program. You have numerous checks and double-checks to ensure that everything works correctly. Nevertheless, you need to have a human monitoring the system as a whole continuously anyway, so you have Log Reader 3000 read aloud total portfolio value, or live trades, or trading efficiency, or fast-moving securities, or all of the above.

The lobby of your startup has a TV screen with graphs of user growth and interaction on the site. You want to increase the coolness factor by having a computer voice read aloud some of the searches or conversations happening on your site live.

You make a living by selling cool techy art projects which blend absurdity with electronics. You read aloud live google searches, or live wikipedia edits, or inane YouTube comments out of what looks like a spinning vinyl record. Passersby whisper of your genius.

Once you have the application, just tail -f the log, parse out the parts you want the log reader to read (you can use awk for that, for example, or maybe a simple python script), and pipe that into the Log Reader 3000.

tail -f output.log | awk “{ print $1 }” | ./log_reader_3000.py

How does Log Reader 3000 work? The main process reads in one line at a time. As it reads in each line from stdin, it sends it to the processing queue. The child process reads the last item in the queue (it discards the items at the top of the queue because those are old and we need to catch up with the latest output line) and then calls a function to say() the line. The say() function simply uses the subprocess module to call festival in a separate process and then blocks until it is done saying it aloud.

Because having a computer voice read aloud a sentence takes a while, the log probably outputs many more lines than can be read aloud. That is why a multiprocess queue is needed, and that is why Log Reader 3000 only reads out the most recent line which has been output, which is why it is most useful for specific applications.

That’s all you’d tell your 1998 self?!?? I’d tell mine to invest heavily in the DotComs so he’d lose all his money…it’d be hilarious like that time someone told me they were my future self and that I should invest heavily in DotCom start-ups and I lost all my money!

I like these little designs so much. In kindergarten, I never took to drawing and coloring like everyone else. My sketches of people looked like pizzas more than faces. I think I can do a decent job at making a font comic, however. My attempt sits below. It took me half an hour to figure out how to make the black rectangle border. I ended up just making a solid black rectangle with a white rectangle on top. I need to learn Photoshop/The Gimp.

While memorizing the digits of pi using this method, I realized that I was spending most of my time trying to think up words that would translate to the digits. I tried to think of the longest word I could. Sometimes I would screw up and use a word that did not translate to the correct digits. I spent 2/3rds of my time just thinking of good words, images, vivid pictures. It was hard and slow.

So, I decided to make a computer program to find the words and optimize everything for me. I did, and I’m releasing the code under Affero GP. Of course, all the code is PYthon2.5. Please allow me describe it to you. With the words precomputed, I can learn pi as quickly as I can tell a story!

There are a few libraries. They all require NLTK. NLTK is an excellently-designed, well-developed, actively-maintained open-source natural language parsing library. It has many (nearly 1GB of) corpora.

First, generate_nouns.py is a script. We need to automatically generate a good, long list of concrete nouns for you to have strong images and remember the story of pi visually. It uses the CMUDict Pronunciation Corpus which is in nltk.corpus.cmudict. It also uses the wordnet corpus in nltk.wordnet. The script does some intelligent processing to filter out archaic words, curse words, and abstract nouns. Run generate_nouns.py at the command line to create a nouns.csv file, or just download my copy in the repo. 50-75% are very good, concrete, vivid nouns for this purpose. If you can help me get a higher percentage/more good nouns, please tell me.

Second, there is soundmap.py. Soundmap.py is a library (import soundmap) that you can use to convert a word or phrase into the corresponding digits. To be perfectly flexible, it loads a file which describes how to match which sounds to which digits. I provided the sounds.csv file which is the one I use. I haven’t tried to figure out what would be the optimal configuration yet, but maybe you can . This also uses the CMUDict Pronunciation corpus (of course). Call soundmap.convert_to_digits(phrase) to have it return a string of digits.

Finally, there is mapwords.py. Mapwords.py is a library that takes in a string of digits (such as the digits in pi) and uses the nouns.csv list of nouns and soundmap.py to figure out the optimal sequence of words for people to remember that sequence of digits. It also has a couple hundred digits of the famed constant inside the library: mapwords.pi. Simply call mapwords.get_best_mapping(mapwords.pi) for it to return a list of words.