Monday, July 23, 2007

My goal:

1. Identify Principles
2. Act with Intention
3. Act consistently

Notes:
Intention denotes deciding the course of action and why, and being prepared to accept the results aka take responsibility for the action.

Wednesday, June 13, 2007

Some Random Thoughts on States of Mind

State of mind is so important to our lives. It influences how we feel, controls how our thoughts flit from one thing to the next, and lets us communicate with others. On a larger scale it determines our friends and either sparks inspiration when shared with others or blank stares when not shared.

By state of mind I mean the thoughts and ideas that are active in the brain at any given time. It is what comes to mind when someone says "filthy rich". It is the feeling you get when you smell fresh cut grass. It is the thing shared when two people say the same exact thing at the same exact moment, "jinx!".

Thoughts are stored as vast interconnected sets of neurons that represent the state of any number of faculties of the brain. State of mind is the set of active thoughts. Thoughts are made active through sensory input or by the processing of currently active thoughts. When you see an apple or read about a celebrity the low level machinery of the mind awakens the thoughts that were formed when initially exposed to those ideas. When you naturally wonder, "what ever happened to Harrison Ford?", this is accomplished by following connections to other thoughts which in turn are awakened and replace others.

Thus our state of mind is constantly changing, continuously adapting to our environment and to our own previous state of mind.

Many of our abilities rely on "going back" or awakening previous states of mind. For example to imagine what your family looks like you "recall" or make active the set of thoughts that represent. You were able to do this because you read the words "imagine your family" which when processed by your visual and language centers awoke the thoughts that were connected to the final ones that represented this state of mind.

A similar store of thoughts and connections are what allow us to communicate. It lets us empathize with others, feel a sense of unity and purpose, and influences whole societies through notions of guilt, shame, and honor. When we share experiences we share similar sets of thoughts and connections.

Saturday, April 21, 2007

Some Random Thoughts on Efficiency

Efficiency in regards to the work of multiple Persons

key ideas:
1 person is the optimal efficiency given sufficient technology.
you pay for a reduction in time with a loss of efficiency

what is possible is limited by the number and quality of people, resources, and time.

people create technology. it comes from nothing. it seems to violate the equivalence principle.

the end point or maximum of efficiency is to possess infinite technology which allows 1 person to instantly accomplish anything using only thought.

what is possible is limited by our creativity. our ability to think to dream up would could be and how it could be done. the packaging of this to allow others to have this process without themselves understanding it is technology.

the full utilization of imperfect technology can only be obtained by those who understand it due to leaky abstractions. it can only be utilized to the extent that the abstraction holds true, and the implementation details do not leak out to the user.

From Descartes (Discourse on the Method)
Of these one of the very first that occurred to me
was, that there is seldom so much perfection in works composed of many
separate parts, upon which different hands had been employed, as in those
completed by a single master.

Saturday, March 31, 2007



A tribute to the best damn accordion player ever!
Some thoughts:
what is the smallest atomic definitions for an intelligence?
What are the lowest forms or least abstract forms of data?
What are the most specific forms of data?

These all seem like different ways of asking what are the basic rules that could be built upon to create intelligence. The ultimate goal of artificial intelligence is learning. I think this definition works well because as a program can learn beyond the original intent/ability of its author lies the true nature of intelligence.

Something that is intelligently designed works well and can often be used for purposes beyond its initial intent. Maybe this is just lucky.

It seems like the most concrete thing in any computer program is a binary instruction. An opcode. This is the only thing the computer can do without having to translate. Sort of like a neuron firing in a brain. It can do it or not. Binary, like the universe. There are a few different things a program can do, depending on the hardware. But the opcodes seem to be the ultimate atomic unit.

What is the next step up? Really the sky is the limit since any modern cpu is really a touring complete computational machine. So maybe the question as stated is not very useful. How about what would a simple yet powerful next step up be?

Things like math and reading come to mind. But do we as humans break things like math and language down into smaller commands before they get down to the opcodes of reality? Is there a difference between math and language?

What is the most fundamental definition of language? What are the basic operators of language?

Same for math (see philosophy of mathematics and foundation of mathematics).. of these seems like First Order Logic (FOL) and set theory are the most promising although at first glance they seem to suffer from the same problem of any self referencing system.

See: Synopsis: Wittgenstein's Logic of Language [http://www.roangelo.net/logwitt/logwitt1.html]

See: Bound versus Free variables in context of FOL, lambda calculus

Wednesday, January 10, 2007

How do you add value?

Adding value is about giving someone something they do not have and cannot easily acquire without you.

In the economic sense, our society functions due to specialization, technology, and trade [1].

Specialization allows people to spend their time doing what they are best at. Technology allows one to accomplish much more than they would normally. It does this by allowing one person to bottle up their knowledge into a package and give that package to another person to enable them to do that which they would have no idea how to do themselves. Trade allows people to get the things they require by doing what they do best. This is greatly facilitated by currencies, so you can specialize in cows and still buy a carrot without having to sell an entire cow.

I think the key is not to just find and solve problems, many people can do this. Its finding and solving a special kind of problem. The kind of problem that many people have, and are willing to pay to fix (or not have).

What kinds of problems are people willing to pay to fix? One is the kind they encounter frequently. The more we run into something the more it annoys us. Sometimes we become so accustomed to common problems we don't even realize they exist anymore. This can be seen in software packages where little quirks become standards and are "just the way it works".

If solving this everyday problem makes one's life more convenient and it is affordable, then many people will pay for this solution. For example, if you find a simple way that allows people to clean their house or prepare their meals in half the time it currently takes, you would likely have a valuable solution [2].

Another type of problem people pay to fix is one that effects a major aspect of their life. It may not be encountered all that often but when it does, it really hurts (or annoys). Insurance is a good example of this kind of problem. Having a heart attack can cost you upwards of $50,000 here in the US. Having health insurance allows you to handle this problem in a reasonable way.

A third type of solution people are willing to pay for is one that enables them to accomplish more with the same or less resources. The automobile is a good example of this. Time to travel was cut dramatically and opened up many opportunities that simply never existed before. Robotic vacuums, motors, and computers are also excellent archetypes. Most solutions of this kind involve technology, but sometimes are just a different way of doing things.

How do you add value? Solve peoples problems, and optionally provide them with the means to replicate it again and again.

[1] See Adam Smith's Wealth of Nations. This is a very long, but good read. It can be read a chapter or two at a time and is very useful in carefully laying out what I believe to be a very accurate picture of how society actually works.

[2] If you have this solution and it is available for around $19.99 / month please let me know so I can sign up.

Monday, January 08, 2007

I cut my finger on a gum wrapper last Friday. You know those new fancy gum packages that are like cold medicine pills. When I pressed my little icy yum flavored crystal out it cut my finger and now it still hurts. Lame.

Sunday, December 17, 2006

Make Things Users Want!

I have been thinking about this for a while now. How do I maximize the value I can provide to this world? By creating things people want! This is obvious, but then it has been my experience that most true things are. What do people want? Well, I have heard rumor of a bumper sticker saying: "death before inconvenience". This seems to ring a bell somewhere.. Why? Because I love convenience. What makes something convenient? Often it involves cutting out the stupid work that doesn't really serve any point. Many times its having some-one or some-thing do what I would normally have to.

Some examples..

Experts: I hire them to do things (like my taxes, or repairing my cars) because it is more convenient than becoming an expert myself.

Automation: Take the repetitive details and make a mechanical or computer device responsible. They get done faster and better, and I don't have to do anything. Now thats convenient!

Philosophy/Religion: Way more convenient to have someone else tell you what to think as long as its agreeable. (or: much easier to read the many great ideas of humanity than come up with them yourself)

I guess in the end, I am a user and I want convenience!

Friday, December 15, 2006

Ok, I have been reading Paul Graham. Man, this guy has some great thoughts laid out in well written essays. Here are a few of my favorite nuggets:
I once claimed that nerds were unpopular in secondary school mainly because they had better things to do than work full-time at being popular.
Man, is that ever a better explanation than nobody likes you! Or how he recommends fighting corruption:
Like all illicit connections, the connection between wealth and power flourishes in secret. Expose all transactions, and you will greatly reduce it. Log everything. That's a strategy that already seems to be working, and it doesn't have the side effect of making your whole country poor.
Its like log4j only for government! Brilliant! Or how about turning the whole immigration issue on its head like this:
American immigration policy keeps out most smart people, and channels the rest into unproductive jobs. It would be easy to do better. Imagine if, instead, you treated immigration like recruiting-- if you made a conscious effort to seek out the smartest people and get them to come to your country.
Recruiting the best and brightest, just like football, only for nerds!

Definitely spend some time reading these essays you will be glad you did!

Tuesday, September 05, 2006

Annoying Windows Behavior

You cannot create an executable in Visual Studio both inherits its parents standard in/out handles so that it can write to the console if run from a console. If you create a console application, it will inherit from its parent, but it will always create a console window even if not run from a command line.

So, say you would like to create a windows GUI application that you want to be able to pass command line parameters to. This works fine, but imagine you would like to print out a usage message to current console window if parameter is set.
Annoying windows behavior:

You cannot create a shortcut with a relative path to its target. This is annoying in the following situation. Say you want to create a shortcut that sets command arguments for an executable. Then say you would like this directory to be copied to another machine (say from a network drive) and have the shortcut reference the executable in the same directory. There is no way to do this with a shortcut.

Tuesday, August 08, 2006

Getting your favorite home brew application to run on the corporate servers can always be a chore. This is especially true when your corporate servers are exclusively Windows/IIS and single sign on is a requirement for all internal applications. Getting you app up and running is made even harder when you went out on a limb and wrote it using ruby on rails.

Now you are in a pickle. You now love ruby and rails, but in order to show off your new application you have to run it on the previously mentioned environment. Following is my solution to this very problem.

First get your hands on a ReverseProxy (I used http://www.saltypickle.com/Home/16). Install your application as a windows service using mongrel (http://mongrel.rubyforge.org/) a very fine and easy http/rails server. Set your IIS virtual directory to use only integrated authentication. Next setup (configure or hack) your ReverseProxy to forward request onto your mongrel service, and to add an http header populated with the authenticated users user name. Finally add a before filter guarding any actions you want to limit access to and match the value past in the http header from the ReverseProxy to grant or deny access. Finally, fix any bugs you may encounter (there were a few to get redirects working), and happy days, you are in business!

Details to come...

Thursday, May 11, 2006

The office is a funny show. Dwight was trying to move his boggle head of himself with his mind. Jim and Pam watched videos of local cover bands. Great times.