Wednesday, January 27, 2010

On the State of Modern Art

To Free Verse Poets

We've all got emotions, yours aren't so very unique,
though I'll give you credit for exposing them to critique.
If you've got something to say, why not do it in prose?
Without meter or rhyme, is it poetry? Who knows!

I'm happy to listen to your unique perspective on life,
with sympathy I'll hear your witness of pain, suffering, and strife.
Gladly I'll pay attention as you eulogize lost heroes,
just please, choose a conducive medium for your throes.

Penta, tetra, hexa, use whatever meter fits best!
Try a rhyme, try an iamb, put your skills to the test!
I'm not asking you to compose sonnets, odes, or dirges,
merely suggesting you give some form to your expressive urges.

I don't mean to be hurtful, I'm not denigrating your art,
but what exactly is it, of which you'd like to be a part?
Are you writing for posterity? Are you furthering some cause?
Or merely aggrandizing your ego, by breaking established laws?

Verbal art is wonderful, its potential's rich and deep.
Why object so shrilly to any standards we should keep?
You'll say: "To break free from limiting and repressive rules!"
But constraints, you see, with creativity can be good tools.

Related: this post. I'm glad I went though an art-scene phase so that I could confidently not want to be a part of it (at least, in its current state and as I've experienced it). Eventually I'll lend some helpful advice to painters, musicians, and sculptors as well; though you can probably extrapolate what it might sound like.

Also: I realize there are metrical and rhyming flaws in my little polemic. Just consider it more meta-humor.

Tuesday, January 26, 2010


Tellin' it like it is:

Speakin' truth to mediocrity

Monday, January 25, 2010

Getting hard to keep track

I've been paying moderately close attention to the politico-economic debacle during the last year, particularly with regards to the housing and GSE situation. But I'm loosing track of how much money has been thrown at the problems. Does the $1.25 Trillion cited below include TARP money, or is that the amount strictly used for buying CDO's? (That's "Troubled Asset Relief Program" and "Collateralized Debt Obligation" for the un-hip (or more likely, for the hip)). That's on top of the Trillion dollar stimulus (combining Bush and Obama's); does it also include the money that is allocated to support the GSE's (formerly limited to $500 billion, now unlimited)?

in reference to:

"The Fed has already kept interest rates at near zero for more than a year, and it is buying $1.25 trillion in mortgage-backed securities to refloat the housing bubble, among other interventions into fiscal policy and credit allocation."
- The Bernanke Nomination - (view on Google Sidewiki)

Saturday, January 23, 2010

Money and Virtue

When money is sound, it is a measure of virtue.

What does this mean? Money is sound when it can only be obtained by creating value. Its sole purpose is a medium of exchanging positive values with other people who create value, and storing value for use in the future.

Under these conditions, contempt for money is contempt for virtue.

What is virtue? Simply: is the creation of value.

What, then, is value? At the most basic level, it is simply those things that keep the valuers alive and make their lives more worth living from the standpoint of their personal judgment. This latter clause can lead to inconsistent valuation of given thing between individuals. Rather than posing a problem for the theory of value, this diversity of values allows valuers to more fully explore the space of possible values and keep from getting stuck in local maximums.

Its important to emphasize that there is no single standard of value for all valuers. Each valuer has a potentially unique standard. How then can individuals communicate? How can they exchange values when they have no common language of value between them? This is the function of currency: to communicate personal standards of value between individuals with differing standards.

So: can it be said in our current politco-economic environment that money is sound? Hell no! There are myriad and sundry ways it can be obtained without creating value; just as many (if not greatly more) of them are legally sanctioned than otherwise. Should this trigger contempt for money? No; money is just the medium. Should this trigger contempt for the wealthy? No, but it precludes automatic reverence of the wealthy. Most wealthy people are so because they have indeed contributed positively to the well-being of their fellow, but the presence of dishonestly obtained wealth among them confuses the issue.

What we should be working towards is a world where wealth is always an indication of virtue; where people are justly rewarded for making the world a better place to live in.

Cash for clunkers, a lol in review

Over the summer I was frothing at the mouth over the "let us destroy your car so you can buy a new one for a ten-to-twenty percent discount" program. The article referenced below has some nice reflections on the effectiveness of the endeavor.

Note the predominance of foreign manufacturer names on the "newly purchased" stats, and the exclusively domestic nature of the "traded in" stats. Ironically, the cars on the first list are just as likely to have been built in the US as those on the second. That's an overall positive statement for the US economy, but cause for further amusement at the government's misguided attempt to help GM and Chrysler.

in reference to:

"Top Vehicle Purchased: Toyota Corolla
Top Trade-In Vehicle: Ford Explorer"
- Quick Stats: Who Benefitted From Cash for Clunkers? (view on Google Sidewiki)

Friday, January 22, 2010

"Best Fit" funtion in [R]?

Is there a function in R that will find the best distribution among all the different possible ones? The fitdist() function is quite capable of testing the fit of a specific distribution and finding the optimal parameters, but it requires the user to specify which distribution to test. Given that there are very, very many possibilities, the naive approach to specifying the distribution is just trial and error and comparison of the fit statistics. Of course, a knowledgeable analyst could look at the plot of the raw data and make an educated guess as to which distribution generated it, but there are certainly cases where this is not practical; ie: when there are a very large number vectors that may all have come from unique distributions.

Having a function that tested a handful of the most likely distributions and found the best fit seems like a useful (and fairly obvious) tool. I know that such packages exist outside of R (for example, in the Arena data analyzer and BestFit from Palisades), but as yet I haven't been able to find a previously written R function that does it. The Google results may be confounded by the fact that R^2 is a fit statistic returned by all such fitting functions, as opposed to being a function for [R], the language. Forevermore I shall type it in brackets to avoid the misinterpretation.

One approach I was thinking of taking (aside from the brute-force approach, which obviously is problematic with large data sets) is fitting a normal Q-Q plot, fitting a polynomial to the residuals, and using the information about concavity and inflection points to heuristically guide the selection of the distribution to fit. For example: residuals with a 2nd degree polynomial fit that is concave up are likely to come from a distribution that is skewed right (at least according to my old SAS book). Such an observation could point us to Gamma functions right away, and we wouldn't need to test the rest.

Anyway, I'll search a bit more, and if none exist, I'll write it. I must admit, I'm excited by the prospect of contributing to the [R] community. I've been very impressed with how effective and cohesive this far-flung group of obscure programmers in an obscure language seems to be, and I'd like to be a part of that.

Likewise, I'm well on my way to becoming part of the LaTeX community. I've transcribed two-and-a-half (of twelve) volumes of Professor Levy's handwritten notes. I'm getting much faster, but also running into new challenges. I will be an expert 'ere long.

Wednesday, January 20, 2010

The Juggernaught Staggers!

Against overwhelming odds, the inevitability of the healthcare disaster has been abated!

Friday, January 15, 2010

Tank Ambigram

Behold: the Neverdie ambigram adapted to fit into a circle so that I can put it on my gas tank.

Poor resolution, I know, but its the best I can do with my phone. I made the E-R's in the center asymmetrical in a very specific way: instead of a standard dreadnought accoustic body, they now resemble a Washburn 640-DL (my current guitar, and my first nice one). I put a lowercase alpha above the guitar neck to symbolize my first motorcycle project.

I've asked an artist-friend of mine (Lindsay Nehls) if she'd be willing to do it on a commission; she has access to a hand-plasma cutter at DAAP.

Wednesday, January 13, 2010

A pithy quote; music

A Galtesque quote, sent to me by my Dad:

"You cannot legislate the poor into prosperity by legislating the wealthy out of prosperity. What one person receives without working for, another person must work for without receiving. The government cannot give to anybody anything that the government does not first take from somebody else. When half of the people get the idea that they do not have to work because the other half is going to take care of them, and when the other half gets the idea that it does no good to work because somebody else is going to get what they work for, that my dear friend, is the beginning of the end of any nation. You cannot multiply wealth by dividing it."

- by Adrian Rogers in 1931

Also: Vampire Weekend's new CD makes me smile. Its a lot more electronic than the first one, and maybe lost some of that clean (dirty) unproduced sound. Nonetheless, its really good. There's some tracks that will make great dance music, some that are real laid-back and mellow. I'm reminded of Paul Simon. They deliver an interesting vibe; they seem to come from upclass New England stock, comfortable in high society. And yet at the same time, they have a grungy, free-spirited feel.

Sunday, January 10, 2010

segfault, a pox on both your houses!

I spend the bulk of the productive part of my day wrestling with this segfault in my R program.
*** caught segfault *** address 0x0, cause 'memory not mapped' Traceback: 1: .C("Cbcp", PACKAGE = "bcp", data = as.double(x), mcmcreturn = as.integer(mcmcreturn), n = as.integer(n), burnin = as.integer(burnin), mcmc = as.integer(mcmc), rho = as.integer(rho), rhos = as.integer(rhos), blocks = as.integer(blocks), results = as.double(results), a = as.double(p0), c = as.double(w0), pmean = as.double(pmean), pvar = as.double(pvar), pchange = as.double(pchange)) 2: bcp(validData[validData$validGvkeys == k, "validIndicators"])

Oh! What wailing and gnashing of teeth! Turns out it was caused by too few data points. You'd think that'd be something the authors of the function would anticipate and error-trap. I'm tempted to contact them about it, but I suspect they would just laugh at me for attempting to do breakpoint analysis on three datapoints. The point is: I was running it in a loop over many different firms without awareness of how many points each firm has. Still my fault? Dammit, the function should return an error, not segfault.

Anyway, its working, and its an awesome package (bcp). I've got this awesome method under control less than a week after it was suggested to me. I feel capable. I suppose that balances out with having excitedly sending my adviser a graph that I totally misinterpreted under the obvious influence of confirmation bias; ignoring the generally accepted fact that probabilities cannot be negative.

Edit: a better title for this post would be "Pox, A segfault on both your houses!"

Capitan Forever

I succumbed to the quest for the perfect ship again. The goal was to build the smallest ship possible with instant-recharging shields, and I have three amusingly excessive ships to show you. Pardon me while I exhibit excessive geekyness.

The first one has translocators on the front. These also are accelerated by the chrono modules, so the ship effectively warps across the screen. The game AI can't maneuver the ship without running in to its own torpedoes, so the Kilo-copy ships can't attack at all. None of the other ships in the game have enough firepower to get through the shields. So this is effectively a game-ending ship; you could leave it running indefinately and nothing would destroy it.
I got bored of the kilo ships destroying themselves through poor navigation skills, so I took off the torpedo launchers. I wanted to see if any amount of fire power could bring down the shields, so I loaded up one side of the ship with prismatic lasers. These fire three beams of the same intensity as the normal ones. Thus, the energy delivered is tripled if you can get close enough to have all three beams hit the target. It does indeed work, but its impossible to keep from completely destroying the target once a shield goes down. I discovered in the process that lasers bounced off blurst shields go back through your own bubble shields. And thus, we have the ultimate peace ship:
Three of them in this picture, in fact. Both the other ships completely knocked out their own offensive capacity by bouncing their lasers of the t-shaped blurst shield arrangement on the front of my ship. I didn't even have to fire. At last, Captain Forever can relax: he's safe.

I'm pretty sure that doubling the bubble shields would also make the ship effectively invincible; there'd be no way to get enough firepower concentrated on it. Well, maybe accelerated torpedoes; but the AI can't use them effectively.

Edit: Ok one more. I had to make it more symmetrical (taking the game AI's persistent advice). You'll notice that just about every available space on the ship is filled, exept for along the right side (I later filled that up). This screenshot captures the demise of a kilo-copy ship; I had to maneuver the other copies to also fire on it to get enough energy concentrated in its shields.
I'm done now, really.

Thursday, January 7, 2010


To celebrate the news of the previous post, I rewarded myself by buying a tank and some mufflers for my bike. The original black bomber tank. IE, this tank:
Its in pretty rough condition and missing the emblems, but I'm all into restoration mode and I was excited to find one at all. I was also able to find one of the badges for sale, and I've got a bid in on it. For the other side, instead of buying one I'm gonna have my neverdie ambigram laser cut into a circle of metal, make a mold of the other emblem, then pour laquer into the mold and put the ambigram on the backside. Thus: my own custom, awesome emblem that fits perfectly into the spot on the tank. And an interesting asymmetry; especially comic because the ambigram is a left-right symmetrical one. I was thinking of refinishing the black part of the tank and leaving the chrome all pitted, then using tape to make an elongated diamond pattern in black paint over the chrome. It might look cool, and if not I'll just refinish the chrome too.

I also ordered some mufflers; some real short 15" slash-cut straight pipes with the insides painted red. Superduper awesome. I'm gonna keep the rusted headers and wrap them in heat-tape, so they'll be black.

For the seat, I'm gonna take off the quilted leather cover I have (which isn't really in sync with the cafe style) and make one out of canvass. The seat part will be white, the rest of it black. That'll give it the speed-back look the cafe-racers go for with the fiberglass seats, but a passenger will still be able to sit on it. I'll do baseball-stitching in white down the middle of the black part.

So in short, my bike will look a lot like the beautiful original in the background, but darker and with chrome accenting instead of dominating. That plus low handlebars and short pipes; it should look pretty rad.

Maybe it'll even run well too.


Well, almost. I met with my program advisor today, and he confirmed that after this quarter I will have satisfied all of my graduation requirements! I hadn't been planning on graduating until the end of summer, so this is quite a pleasant realization. However, there are plenty of classes I still want to take so I will probably just stick with the original plan, even though those extra classes aren't required.

Wednesday, January 6, 2010


We had a party last weekend; it was a great success. A high-point: I laid out a bunch of tea candles in the shapes of various constellations, and told the guests that there was an awesome prize for anyone who could guess the significance of their layouts. A guy (who turns out to be a CMU computer science grad) was like " that Orion?" I was very happy. I gave him a tomato.

There were, of course, more typical party-things that made it a good time. I set up my iphone with itunes's dj feature; that was a big hit. As was the fondue and guacamole, all my art stuff, and the chainmaile bikini's. Someone actually put one on, though over her clothes.

R syntax

Comically, I spent untold hours and a meeting with my adviser trying to figure out what was a very simple syntactical error. I wrote two loops, where the outer loop changed the name of the column index, and the inner loop changed the name of the row index. I was having trouble getting the name of the column passed to the assignment function, and I experimented with at least four different ways of doing it. The matrix that the loops are running on is very large, so the thing took a long time to run. I finally created a toy problem that could run quickly to explore the problem; turns out my first approach was essentially correct, I just used unnecessary quotes. Ha. Now that's experiential learning. I learned a whole bunch of other functions in the process, though they didn't turn out to be useful in this case.

My adviser suggested a new approach based on the results of my work over break: since it appears that the patterns of the indicators are fairly stable for many years before bankruptcy, but then have bizarre behavior, it might be advantages to use a change point detection method rather than trying to use the slopes as a predictor. This would mark any abnormal behavior, and would in itself be a significant find.

Monday, January 4, 2010

School and Movie.

My quarter has begun, and the long period of wandering productivity that was my break has ended. I got a major portion of my thesis work done; the ground is well-laid for the testing that will comprise the result. Six months to go; I think I should be in good shape. This quarter I've got Linear Algebra II, Advanced Technical Calculus (essentially differential equations), Stochastic processes (which uses Matlab; a fact about which I'm excited), and Statistical Inference (which promises to be quite difficult). I will be well-occupied.

I watched THX 1138 last night. I picked it cause the trailer made it look like it would be weird, and weird it was indeed. It was fairly annoying to watch, actually, but I think they were actually trying to make it that way. Lots of awful noises, people talking in incomprehensible code, and things that seemed to have no purpose. I suppose the feeling of confusion and alienation it makes the viewer feel is akin to how the character feels as he comes off his sedatives. I recognize it as a good movie, though not an enjoyable one.

Friday, January 1, 2010

R, Python, and WRDS

I just discovered that python can be run through Wharton's SSH connection! I know that I can run python commands from within R with Rpy, and I can use SSH through R, so can I write a python program in R to query COMPUSTAT? Super cool if so; I'm investigating. Tell me if you know, please.

I'm hoping I can take this approach rather get into the SAS or FORTRAN programs. SAS looks understandable enough, but its just so ugly.

Edit: there's an SQL proc in SAS which lets you use just plane-jane SQL, so I'll probably end up using that. But it would be so much cooler to do it all within R.