Nov 26, 2010

Christmas shopping.

There's almost too much that could be written about this. I have a feeling that each person's individual personality is reflected in how they go about finding presents for the friends and relatives.  Some people approach the task with glee and others with dread. Some people demand lists from people of acceptable items, and others give them random garbage they probably already have.

To some degree every person ends up giving a gift that somehow reflects what they think of the receiver. My family doesn't seem keen on giving me books and always tries to find an alternative present. I can't really blame them. Looking at my more recent purchases,  I can't seem to give someone a Christmas present that I wouldn't want myself. It's a terrible curse. Sometimes I often think I would enjoy the gift far more than they will. A bit of greed seeps into my thoughts. The possessive part of me thinks I should buy all the gifts I give in double and keep half for myself. Why don't I have these things for myself? I could never really justify their purchase for my own sake, so I hope others will for me.

Last year there was a special on NPR about how the holiday gift giving frenzy is bad for the economy. The idea seemed reasonable. Focusing so much consumer spending in a short time can't be stable. It makes me sad to see my friends suffer working on Black Friday and even worse, when they have to work on Thanksgiving. Additionally, I'm sure its a huge pain to stock the stores like they must for the shopping season. Please just spread your holiday shopping evenly throughout the year, at least for logistic's sake.

Oh I shouldn't forget:

Oct 16, 2010

Good-bye, Mandelbrot.

As a Mathematician, if you wish to remembered by the general public, make sure your area of study involves lots of pretty pictures.

Oct 3, 2010

Wandering around campus at night, I think I could easily be the ghost of former self haunting my old college haunts.

Sep 19, 2010

transitions

What it the latin etymology for the word? well its completely the opposite of what i want. trans means across. the rest is from the verb ir "to go". its wrong to say im in a transition. I want to use a word that expresses the change which has come has come by my own decisions to remain static.

unavoidable.

Jul 27, 2010

Death in the Modern World

Death is something much different for me than it was for my parents at my age. It's because the internet makes us manage our friendships differently now.  Its easier to keep in contact with more people, and easier to hear about everything thats happening in their lives. I've heard stories where, in the past, people would learn that their old friends had died - often in things like highschool reunions and chitchat when they ran into people they remembered. I can't even imagine this happening today. These days it seems like with anyone you've known, you learn about their death about as soon as their close loved ones do.

To my parents, it seems as if bad things are always happening to my friends. They're always astounded how many have caught some terrible disease, are in trouble, or have recently died. While they probably attribute it to bad luck, I know it's more the fact my network extends farther than they can imagine. They've never been aware of the social web.

I don't know what this means for death and mourning. Does more exposure to it mean that it will feel like less of a big deal?  Am I less likely to go far out of my way to mourn someone who wasn't a close friend or relative? Or maybe the enormity of it will that much more evident.

Jul 1, 2010

Algorithm

I was thinking about an old job interview question the other day:

You have a list of numbers. Each number has a duplicate on the list except for one number. How do you find this number?

This is clearly linear time. A little less obvious is that it can be done in constant space. As far as I know, I was the only one to actually come up with a solution to this one. It's not easy, at least in my appraisal. My solution, however, wasn't exactly the one they were looking for. I'll cover my line of thought, and then cover "the" answer and explain my feelings on them.

The constant space part led me to try adding all the numbers together. Fortunately, the sum of the numbers has an important relation to the exceptional number in the list: if it is even or odd, so is the exceptional number. This is due to the fortunate fact that the sum of two even numbers and two odd numbers is even. I immediately told this to my interviewer and convinced him it was true. He didn't seem to be impressed, so I abstracted my result using group theory and showed that the same process could be essentially used to derive the value of the number bit by bit. (The full thing is a fun bit of math. I'll leave it to the reader until I get around to writing it up.) 

My interviewer wasn't impressed. Here's the official answer:

Bit-wise xor all the numbers together.

It's immediately clear why this works and I might have thought of it had I been more into low level programming. This solution seems so simple compared to the one I promised. So why is it so unappealing to me? It is the illusion of simplicity, nothing more.

There's nothing particularly natural about bitwise Xor. The solution works, but its not clear how you could get to the solution other than to conveniently know a function which does what Xor does. More importantly, the solution doesn't reveal where the power of the solution comes from. Understanding this solution doesn't help with related problems. When I was asked the problem, I approached it abstractly -- which probably hurt my ability to solve it. Thinking more about programming would have helped, but it wouldn't have led to the deeper solution I found. This is why I am more fond of my own solution, and why I believe in abstract mathematical reasoning. Thinking about computers when trying to solve computers tends to lead to concrete thinking, destroying creative thought. Creative thought is rare.

May 21, 2010

Saul Kripke & Computers.

I think there's a general problem with how Saul Kripke and others like him, treat computation. To him, computers really are second class to human cognition. Take this excerpt from Naming and Necessity:

[Some philosophers] think that if something belongs to the realm of  a priori knowledge, it couldn't possibly be known empirically. This is just a mistake. ... To give a really common example: anyone who has worked with a computing machine knows that the computing machine that the computing machine may give an answer as to whether such and such a number is prime. No one has calculated or proved that the number is prime. We, then, if we believe that the number is prime, believe it on the basis of our knowledge of the laws of physics, the construction of the machine, and so on.

If this already seems completely ridiculous to you, you already have the basic idea of my argument. Computers do not do anything unless they are instructed to by a programmer. Computers are an extension of our own computational power. How do we know the processes on the computer tell us whether a number is prime or not? The knowledge that the algorithm on the computer is correct is a priori. We have merely taken an a priori knowledge and loaded it onto another computational machine than our own brains. It is the same process our brains would use to determine whether a number is prime or not. At the very least, this supposedly simple example is anything but that. 

Why is Kripke so intent on treating the computer differently from our brain? If I taught someone how to do the prime detection algorithm in their head and asked them instead of the computer, would this not be the exact same situation? The human brain is not one piece of computational machinery, but a massively parallel device. The process of outsourcing computation from one part of the brain to another is normal and essential to us. There's no reason why the outsourcing of computation to my laptop should be treated differently. 

This misunderstanding of what computation is deep, and probably the source of my strong and general disagreement with his arguments.

May 20, 2010

Book Reveiw

I don't know why I picked up Inside Cyber Warfare at the library. Maybe because it had an awesome cover. I'm not really interested in the subject area, yet this book was really interesting. The author covers the nature of modern cyber warfare in as non-technical of a manner as possible, instead focusing on the social and political aspects. The book isn't at all a survey text. I actually found myself a bit bored by how it covered, in detail, the international political dialog surrounding the issue, but if you are willing to skip over parts, it's not bad. If I were into security, I'd probably love this.

Mar 17, 2010

A taste of what my papers on physics are like.

Kuhn's simplified model of science overstates the extent of “Normal Science” and is part of an overstated dichotomy. Multiple contradictory models of interpretation often exist side by side, providing a fertile valley in between where normal science, as he defines it, is useless. A scientist cannot just blindly use the contradicting standard models here without careful consideration of their foundations. The rift between Relativity and Quantum Mechanics is such a fertile and dangerous area. Scientists here are not comparable to a janitor mopping up, as Kuhn fondly analogizes, but are instead more like kung-fu masters. According to Bruce Lee, a kung-fu master's style is formless. They can switch schools of thought with such fluidity that their style escapes categorization. So too, these scientists are aware of the paradigms in which they work and must be fluid with their use of both.

Mar 15, 2010

Lambda calculus for Tensor Analysis

I know I cant shut up about it, but I really like lambda calculus. Even better llama calculus, the anything goes fast and loose version I use for everything. In fact, the only place I dont like using lambda calculus for is theoretical computer science. I think it offers an abstraction thats really needed in clean math and this is extremely apparent now that im taking this tensor analysis course. Take for example, pullbacks, where we're essentially dealing with higher order functions. Or the fact that we can make a map from a vector space V to its dual with a bilinear. In math notation, Wikipedia says this is done by the map:

$ v \rightarrow \textless v , o \textgreater$

This just seems ... wrong to me. I prefer because of its possibility to handle more complex ideas:

$ \lambda v. \lambda x. \textless v, x \textgreater $


More commonplace is to see this definition of the tensor product:

$ \tau \oplus \theta(v,w) = (\tau v) (\theta w) $

where i feel more comfortable writing in my notes:

$\oplus = \lambda \tau, \theta. (\lambda v, w. (\tau w) (\theta w)) $

Truth be told, I would write both, but trust the lambda notation more. The ideas are defined much more concretely. For pullbacks:

$ F* = \lambda p. p \circ f $

Then of course we have an easy way to talk about the function that makes a pullback:

$ \lambda f. \lambda p. p \circ f $

Iono, maybe Im crazy for mixing different notation like this, but it makes things clear to me.

This all ties back with earlier content in this blog -- Good notation concerns me alot. The symbols used for math reflect the content of the framework we are working in and can be seen as agents of them. Not only do concretely defined notations that are intuitive make learning and recording content easier, they may as I have argued free us from unintended psycholinguistic effects.

Mar 8, 2010

Soft Science Paranoia

It exists, I swear it does. Mention anything to a person in a soft science that doesn´t explicitly mention the value of their field of study and theres a good chance theyll freak out at you. Even if youre trying to be helpful (hey a computational approach might offer insight into this), be wary of the Liberal Arts student who may feel their domain of control threatened. People who believe in the inferiority of ¨easier majors¨dont even speak their mind to cause a defensive reaction.

Meanwhile, the soft science people prejudge anyone from the more the rigorous fields - God knows Ill get angry people who are upset I think physics is more rigorous than Comparative Literature. Apparently knowing calculus makes me incapable of enjoying poetry, or some stupid crap like that. Theres some sort of strange anti-intellectual thing going on when someone can proudly declare they dont know basic college level math and are proud of it. If I were to say the same about literature Id never hear the end of it.

To the people of Soft Sciences: We have never claimed that your field of study was inferior, so please stop being paranoid and treating us like shit because we are smarter than you.

Feb 23, 2010

Graph theoretic software engineering??

Im updating because I havent in too long. Ive spent the past semester using Dvorak and am now trying to get back into the swing of using Qwerty. I hope it doesnt make writing this too hard.

So I was glancing over the first chapter of Event Based Programming, and I had this weired idea about coupling in software engineering. Coupling roughly means any dependency between parts of code. Strong dependency means that if one portion of the code is changed, the parts dependent on it must also. In this sense, a major goal of good software design would be

I should first say that Im not endorsing the book in any way. As far as Ive read, Its full of pseudo-mathematics and needless over-formalisms. In one part he talks about a couplings creating an algebraic space, and starts to apply a euclidean metric for god knows what reason, other than to make it seem more authoritative. This makes me afraid Im wasting my time, but maybe Im just being a jerk and should give it more of a read. Ive never read about formal treatments of the issue of coupling in software development before this.

The author mentions the existence of information theoretic approaches to the problem. Apparently, coupling is a form of entropy and therefore the information theory applies to the subject. His personal approach, on the other hand, is to classify the kinds of coupling, which isnt really satisfying in abstract. Despite this maybe he providing a common language in which to discuss them intelligently. Categorization is often the first step to understanding, but without a theory behind their organization, its pretty much just useless memorization.

My natural inclination is to describe coupling as a graph. Assume all parts of a program are functions in the sense of functional programming. We can draw a directed lines between all the functions in a program so that a points to b if b depends on a. Without any superstructure applied we will have a giant mess. Naturally there will be regions of close mutual connections, giving us a sense that these portions should be located psychologically close to each other in our minds. These portions are the superstructures of software engineering: classes, libraries, modules etc.

Given that there is no way to really remove interdependencies between functions, how can we arrange them to reduce ¨clutter¨. The question is similar to one were confronted with in this game. A strategy is to put the functions in a group sy some kind. These groups are connected to each other whenever they contain functions in each other that connect. Since these groups are abstractions, and all connections in them are abstracted away, we would like to set them up in a way that minimizes the connections between groups. Meanwhile, having too much complexity in a group is unacceptable. We could allow groups to be made of groups. What grouping reduces the clutter the most? With a simple definition of clutter we could write a program that determined the optimal arrangement.

Jan 6, 2010

Self portrait

Some examples, more to come.