Dead Air
Sorry about the dead air…I’m completely obsessed with quantitative analysis of the securities markets right now. New material is in the works. Promise.
Another Neo-Enlightenment Libertarian Libertine Hacker Blog
{ Category Archives }
Sorry about the dead air…I’m completely obsessed with quantitative analysis of the securities markets right now. New material is in the works. Promise.
Sacha Chua posted a nice list of resources for learning the Japanese language on her blog (I’ve been reading her blog for a while and didn’t even know she studied Japanese), which reminded me that I’ve been meaning to post about a new Japanese (and other foreign language learning) site that I’m completely hooked on:
Lang-8 is a language exchange social networking site. This means that all of the members of the site are working toward the common goal of learning a foreign language. At the core of the site is the ability to maintain a blog in the language you are learning. Your blog is then checked for correctness by other users of the site, generally who speak your target language natively. The correctors can highlight your mistakes, insert or change words, and leave comments.
The beauty of the approach is that you tend to get paired up with people who natively speak the language you are attempting to learn, and who are learning your native language; this means that the relationships are mutually beneficial. This mechanism works astoundingly well. I find that posts tend to get corrected in less than ten minutes after they are posted, and just by correcting other people’s posts you can enlist a team of friends to correct your posts in a few minutes’ work.
Technologically speaking the site is a bit immature (though not quite down to the Myspace level), but the developers are directly at hand within the Lang-8 community and seem quite interested in improving the quality of the site. As an example of the closeness between the community and the developers, you’ll see the developers make posts in a standard Lang-8 diary and other users will translate these posts into other languages so that more community members can understand their content. I cannot recommend Lang-8 enough.
Beyond that, my favorite internet resources for learning Japanese—some of which Sacha already covered—are:
Out of pure coincidence today I happened upon a blog directly related to my previous post. Check out Literally, A Web Log, “an English language grammar blog tracking the abuse of the word ‘literally’.”
I have an on-going love affair with the English language. I have a vast appreciation for the many ways in which the language is spoken and written. I have great respect for those who devise clever word usages and linguistic manipulations. But in modern language there’s a particular failed attempt at such effect which is truly irritating…
The ability to use words figuratively is a powerful tool. It allows us to express complex thoughts in terms of things easier to understand (e.g. "The General embraced the idea of a cease-fire"). At times it simply makes for a great literary device (e.g. "Those boxes were so heavy that my arms are going to fall off!").
But if any statement can be meant figuratively, how can we ensure that a reader will realize a given statement is not figurative when there might be doubt? Lucky us, We have a special word just for this purpose: "literally". It is the single magic word which dispels all doubt.
Except now people are using the word "literally" figuratively! That doesn’t work. You can’t do it. "Literally" is the only word in the entire English language that you can’t take figuratively. Choose a different victim. "Literally" is an English axiom. I commonly hear statements like "he literally went ape shit" (he became gorilla feces??) and "at that point she literally just lost her head" (sounds inconvenient). These people are attempting to inject grandeur into their speech and they end up sounding like chumps.
Our words are rapidly losing meaning because of the way we abuse them. I can’t help but be reminded of 1984’s Newspeak, a language so watered down that one cannot express a logical thought.
I am getting really tired of every community-based website creator feeling the need to reimplement basic functions of the web. Why does every site have to have a ‘Message This User’ action? Has everyone forgotten about email? The problem of sending a body of text to another individual on the web was tackled long ago! Let it be!
Under the ‘I’m going to reimplement a perfectly good system’-system I now have to check yet another message box. Oh goodie, in addition to the six mailboxes I already check, I get to check another. And this one I can’t access though the mail client I use to access many of my others. No, I have to log onto some stupid website with a stupid unique interface. And how many sites with this "feature" do I have accounts on? Far too many. Every one a different website, every one a different interface. I’m not going to remember to check them all regularly, and even when I do, I wont remember how they all work. That’s bad for everyone (including your precious community).
So some genius gets an idea: "I’ll email the users when they get a message!" This is even more foolish! Now I get an email telling me that I got an "email" somewhere else. How bloody convenient!
I guarantee you that no matter how snazzy your messaging interface is, it’s not as effective as how I manage my email. My email is set up in a way that is useful to me. Me, the user. I chose the email program I wanted, I chose the spam filtering solution I wanted, I configured procmail(1) to drop emails into appropriate mailboxes in just the way I like. Email is a stable system that puts the control in the hands of the users. People like email.
To trendy-community-site-creators: the world does not revolve around your website. You do not have to provide every service a person could ever want from the internet. We all visit multiple sites (not just yours). Every site does not need to include a profile, a blog, a messaging system, a set of communities, a news system, a photo gallery and a search engine. Do something new. Do it well. And don’t force your inferior replacements of existing web services upon us. We don’t want them.
I’m in a phase where everything I do must have a reason.
That may sound obvious—of course everything should have a reason, right? But there are many little questions in life where we generally feel that the exact solution chosen doesn’t make enough difference to even consider choosing one approach over any of the others. In many cases this may be the proper approach, but in other cases the minor activity is performed thousands of times in a lifespan, and the small losses incurred by a poor approach eventually add up to something meaningful. In any case, realistic gains are not my focus of this writing.
Since we tackle little problems using an ad hoc approach, our solution may differ from day to day, despite the fact that one particular solution may actually be slightly better than any other. I’m slowly eliminating these "nondeterministic" (in the sense that the approach is chosen seemingly randomly), actions from my life.
The problems I am discussing are minuscule: in what order should I perform washing operations in the shower? How should I indent my source code? In what order should I perform the operations involved in making a sandwich? These are things that don’t matter to most people, yet I’ve have had a rigid sandwich-making algorithm since high school.
I don’t spend a lot of time addressing these problems. My justifications don’t have to be perfect—they serve the role of hypothesis more than theory. Once I have a reason (perfect or not) I apply it consistently. Since my approach and reasoning are explicitly defined, if I devise a new (possibly superior) hypothesis, it is (usually) trivial to compare the merits of the alternatives and to choose the better solution.
How should a reason be chosen? Any reason will do. It’s like a rapid-prototyping software development model. Get something workable together as soon as possible, then work up. Furthermore, reasons don’t need to be objective. "Because it makes me happy" is a perfectly sound justification (though not a very well-specified one) if you are justifying a personal action with no external responsibilities.
To apply the principle back on itself: what is the reason for requiring reasons? For me it is a part of my personal aesthetic. I imagine it is rather unlikely that a person could make him or herself care about this issue—it’s either built into you or not. If this isn’t something that strikes your fancy, feel free to instantly disregard it (it probably wont grow on you). Alternately, if you find yourself obsessing about why you do things, give it a shot.
When I helped my mother clean up the kitchen as a kid, she’d tell me where to put dishes in the dishwasher. If I asked why item X went in location Y, she’d tell me, "that’s just how we do it," or, "that’s how I learned to do it." These answers always irritated me. If we don’t know why we are doing something, how do we know that we are doing it right? Or, more precisely put, if we don’t know why we are doing something, how will we know if we can do it better? Some people may not care, but I want to know that I am getting closer to the right solution.
I propose that we enter a new term into our vocabularies: "the personal aesthetic."
Observations on human behavior have lead me to the conclusion that every human being has a built-in aesthetic evaluation system. This system is applied to nearly everything in life, creating non-random personal preferences from this seemingly random base. The components of the personal aesthetic are neither directly under the individual’s control, not completely out of their control, but somewhere in between. I postulate that one can change one’s personal aesthetic with a great personal effort, but that is the only (conscious) means by which it can be affected.
The source of the personal aesthetic is difficult (likely impossible) to pinpoint. Like most human attributes, the source is probably part nature and part nurture. I speculate that our aesthetic preferences are mostly environmental, though they likely contain some innate, genetic preference.
Our personal aesthetics affect our lives in profoundly important ways. They influence how we believe we must act in the world, which things bring us pleasure, how we define justice and how we should treat others, the importance of the quest for knowledge in our lives, etc. The personal aesthetic imparts an irrational element into our minds because we hold deep-rooted tendencies towards arbitrary behaviors.
The personal aesthetic probably affects us more that we would consciously choose (were we given a choice), but perhaps we would be hasty in such a dismissal.
Indeed, it is often the personal aesthetic which gives our lives meaning. These core attributes give us something we innately "know" we should work towards. They are the axioms of life. The feelings for which we need no stimulus.
Albert Einstein spent most of his life searching for a Theory of Everything; a single formula less than an inch in length which could describe all physical phenomena. Why? Because his personal aesthetic drove him towards it. It drove him to search for it. We don’t even know if such a thing exists, but many of us can identify with his obsession.
How is the personal aesthetic different from simply saying that people have preferences? Well, the personal aesthetic can be thought of as the root level of preferences. Preference at the highest level, or alternately as a kind of meta-preference. That is to say that preferences spawn from personal aesthetics. Which definition you use is largely a matter of semantics, separate from the key idea I am presenting.
Should the personal aesthetic be taken seriously? My answer is certainly "yes," yours may differ. I find that embracing the personal aesthetic is a bit like eating the food you like: you can’t change the taste of brussel sprouts simply by telling yourself that have decided you like the item. Seek to identify the commonalities in things you appreciate. Isolate the root causes to know your own personal aesthetics. Some are obvious—others are not.
In short, I am proposing not simply a new term, but also a philosophy of life. I am suggesting that we possess innate, largely immutable dispositions. These dispositions compose, either partially or completely, the set of things which bring fulfillment to our lives. We will seek them, either consciously or unconsciously, and the former approach will likely be more effective. We should characterize and embrace our personal aesthetics.
I can’t stand people who can’t accept the realities of what they eat. If you can’t eat a dead cow and admit to yourself that it is cow flesh, then you probably shouldn’t be eating it.
When I ate beef, I had no problem with the truth about what it was I ate. I’m sure, however, that every one of us knows one of those people who tries to shush anyone who mentions the piece of meat having once been an animal.
I’m not asserting that every time we eat we have to consider every disgusting reality of how the food was prepared, transported, or created, but I think you need to at least have come to grips with the general idea that your food was an animal if you are going to eat it. There’s obviously an ethical question there: whether or not it is morally right to support the killing of animals for consumption. And while I’m not going to try and tell anyone what the right answer is, it’s not acceptable to simply avoid asking.
If you happen to come across the following error while using dpkg (or apt-get):
dpkg: ../../src/packages.c:191: process_queue: Assertion `dependtry <= 4' failed . E: Sub-process /usr/bin/dpkg exited unexpectedly
The solution is as simple as:
# dpkg --configure -a --force-depends
According to Antti-Juhani Kaijanaho:
There are two known triggers for that bug:
* A package depends on itself. (This is a bug in the package.)
* There is a dependency loop which involves a virtual package.
(This would be valid use of the dependency fields, if this bug did
not exist.)
In PyBlosxom, blog entries are stored in regular files rather than in a database. This means that I can write my entries in emacs (hurrah). PyBlosxom can handle posts in any format it has a parser for.
The simplest parser removes the metadata from the beginning of the file and passes the remainder of the file directly to the output webpage. Ergo, in the most simple format, the entries should be written in html (with a basic text header). More complicated parsers could be used for formats like xml or wiki markup. PyBlosxom uses a file’s file extension to determine what format the entry file is in.
For some unusual reason PyBlosxom associates the simple pass-through parser with .txt files (wouldn’t it make more sense to use .html?). In any case, I decided that I wanted to add my own file extension, .blog, so that I could easily distinguish my blog posts from other text files and html files on my system and so that my editor could treat the files specially.
The first step was to make PyBlosxom recognize the files as entries which it knows how to parse (anything PyBlosxom doesn’t have a parser for will simply be ignored).
On line 79 in pyblosxom.py, is a block of code which I modified as follows:
# entryparser callback is run here first to allow other plugins
# register what file extensions can be used
data['extensions'] = tools.run_callback(”entryparser”,
{’txt’: blosxom_entry_parser, ‘blog’: blosxom_entry_parser},
mappingfunc=lambda x,y:y,
defaultfunc=lambda x:x)
This is sufficient to make PyBlosxom treat .blog files just like .txt files.
The next step was to make the files easier for me to write. First off, emacs should open the files in html-mode. Adding the following bit of code to my .emacs file accomplishes this task:
(add-to-list 'auto-mode-alist '("\\.blog\\'" . html-mode))
The next step requires a tiny bit of background information on the format of PyBlosxom entries. The basic format of a PyBlosxom entry looks like this:
Title Of Entry #metadata-1 value-1 #metadata-2 value-2 (...) #metadata-N value-N Post line 1. Post line 2. (...) Post line N.
Note: the blank line is not required, but it makes the file more (human-) readable.
I always use the same two metadata lines: #postdate (from my metadate.py), and tags (from Joe Topjian’s tags.py). Because of this there are a few lines which are similar across all of my blog posts. Why not have my editor enter these automagically, including entering the current #postdate (in the format YYYY-MM-DD HH:MM)? How convenient that emacs provides a mechanism just for this purpose: skeletons.
I wrote the following code and added it to my .emacs file:
(define-skeleton blog-entry-skeleton
"Inserts a PyBlosxom-style blog entry skeleton into the current buffer.
This only makes sense for empty buffers."
"Title: "
str | "Untitled Entry" \n
"#postdate " (insert-date-and-time) \n
"#tags " ("Enter a tag: " str ",") '(delete-backward-char 1) \n \n
"<p>" _ "</p>")
When executed, this skeleton prompts the user for a title (if the user simply presses RET it defaults to Untitled Entry), repeatedly prompts the user for tags (keywords) (until the user simply presses RET), enters the current #postdate automatically, and the leaves the cursor inside a new <p>.
The final touch is to make the skeleton automatically execute when a new .blog file is created:
(eval-after-load "autoinsert"
'(add-to-list 'auto-insert-alist '("\\.blog\\'" . blog-entry-skeleton)))
It’s like magic!