Problems with Money (may not be well thought out)

August 16th, 2009

So, as most of you have noticed, money is broken. Various people have different theories on how it’s broken, why it’s broken, or what we should do to fix it, but only a few billionares actually think what we’ve got works well.

From time to time, I post posts about particularly broken things (like margin accounts). Today, I’m going to point out a set of ratios – the money : human time available, money : physical resources available, money : information available, and money : energy available ratios.

The one I’m going to focus on first is the money : information available ratio, because it is the one that is the most demonstratably broken. When people create new intellectial property, they are presumably creating value for humanity. When a artist records a new album or a programmer writes a new application, they get paid for it. What’s interesting about this is that it seems like a lot of our prized monetary systems – like inflation – are based on the idea that there should really be a fixed amount of money in the world, and it should be tied to physical resources. i.e. your $1 buys you 0.0001 ounces of gold. The problem with this is that when people create things that are all, or even mostly, ideas, it *breaks*. They’ve just created a new resource. It’s like they synthesized that 0.0001 ounce of gold out of nothing! In order for it to work out okay, you really need to inject more money into the system, *without* inflation, to line up with the more stuff (information, movies, albums, whatever) that now exists.

Next, the money : energy available ratio. This one goes several ways. We’re spending money to buy stored energy (i.e. gasoline, NG, etc) and to buy energy converted from the sun, wind, falling water, etc. But whenever someone insists on generating energy via some direct-from-the-sun conversion method, they again mess with the whole system.  Again, it’s like they’re synthesizing more gold. We’re supposed to have a certain amount of energy for sale, all stored as oil here and there, and there they go demonstrating the ability to produce unlimited amounts of energy with just a little bit of technology.

Next, the money : human time available ratio. This is where things get *really* broken. The assumption in america seems to be that every one who wants to be able to buy things and eat and live indoors and the like should either A: work, B: have rich parents, or C: be disabled. In general, it seems like people think there’s something immoral about not wanting to work. This would make sense if we didn’t have a *shortage* of real jobs. But the reality is, a lot of our jobs are makework – shuffling papers around, system overhead caused by the monetary system itself – or work that a really simple robot could do, and probably will do soon. Part of what we need is to embrace that in a world with 6 billion people, *not everyone needs to work*. Many hands make light work, say the Chinese, and by all indications they’re right. Especially when those many hands are connected to many minds that can program computers to do the work for them. 😉 However, the current system makes it very difficult for those who don’t work to continue, for example, living indoors. This is, in fact, dumb.

Next, the money : physical resources available. You can make a good case that right now, there is a finite amount of stuff – raw resources, metals, oil for plastics, whatever – in the world. Also a finite amount of land. However, space exploration and nanotechnology could both change that, if we wanted them to. If we put the kind of energy into discovering new ways of generating wealth that we put into blowing each other up over the existing wealth, we could all be wealthy beyond our wildest dreams. What we’ve got now is a system for resource allocation that has the government paying farmers to not grow food while people dig through trash cans in order to feed themselves. It’s broken, and it really needs stripped out and replaced.

Java Tip: setting a header on a http request

August 5th, 2009

This didn’t actually take me that long to figure out, but I can easily see how it could take someone a while, so I thought I’d include a code snippet for the benefit of our Googling friends:

URL url = new URL(“http://whatever”);
URLConnection urc = url.openConnection();

urc.setRequestProperty(“header”,”header-value”);
urc.connect();

InputStream in = urc.getInputStream();

New (old) Sheer Track

July 18th, 2009

Here’s another Sheer Jam track – Kayti was feeling sad and asked me to play her some love music, and so I did – I recorded it in case she wanted to have it to listen to later, and she’s graciously allowed me to share it with my 2.5 fans out there. 😉

http://www.sheer.us/stuff/kayti/KaytiLoveSongs.mp3.

[Actually, by my download numbers, I apparently have more than 2.5 fans. Some of my tracks get hundreds of downloads a month – but they’re mostly in China. I don’t really understand this]

This is also one of the few tracks I have up recorded with Ivory, which I’m very fond of. I’m looking forward to sometime soon (maybe as soon as the 30th.. *bounce*) having enough spare change to buy a friend’s x86 mac, and finally having enough CPU to run Ivory for 64/128 note polyphony. For my friends who are musicians, if you haven’t played with Ivory, it is the holy grail of software pianos. It is kind of big, though.. it wants 2G of RAM minimum, and it comes on 9 DVDs.

New Sheer Track

July 16th, 2009

http://www.sheer.us/stuff/esen/EsenMovieJam-071609R.mp3.

What is it? Well, my friend Esen is working on a movie for her parents – a bunch of photos – and wanted one of my jam sessions to go with it. So this is raw, uncensored, one pass to tape, no rehersal, improv. Hence, there are a few minor trainwrecks, especially in transpositions which I haven’t totally mastered, but this is 100% sheer jam, mostly piano with a tiny bit of panflute and pad thrown in for good measure. Please let me know if you enjoy it.

I want one..

July 11th, 2009

http://www.geeks.com/pix/2009/900M.html.

Granted, I already have one tiny laptop I don’t use very often (it’s a P-II).. and I’m trying to not make too many frivilous purchases.. so I probably won’t be getting one, at least not in the next few months. But, I drool..

Link

July 9th, 2009

A unusually well written overview of query optimization and indexing in mysql – http://www.informit.com/articles/article.aspx?p=377652.

Has anyone seen a much more hairy, technical article on the subject of indexes in mysql?

Religious fun

June 23rd, 2009

FSM
Fail
Fun

Random thoughts from scripting (perl)

June 23rd, 2009

Here’s a couple of nifty tricks from today’s scripting adventures:

1) This one is sort of obvious in retrospect – but, if you’re processing a long list of items and want to show a status indicator, this works rather well:


for($i=0;$i<10000;$i++) { print "$i\r" if(!($i % 100)); }

I’ve always used the !($i % 100) trick, but never the \r, which returns the carriage to the beginning of the line.

Also fun is:


$|=1;

@spinner = (“|”,”/”,”-“,”\\”);
for($i=0;$i<10000;$i++) { print $spinner[($i % 4)] . "\r"; select(undef,undef,undef,0.1); }

2) moving a byte: handy constants to memorize are 65280, 16711680, and 4278190080, which are the second eight bits, the third eight bits, and the forth eight bits, respectively. You can do ($value & 65280) >> 8, ($value & 16711680) >> 16, and ($value & 4278190080) >> 24, respectively, to get at bytes two, three, and four. The reverse operation is even easier: $b1 + ($b2 << 8) + ($b3 << 16) + ($b4 << 24);

Cisco 501 w/ VPN configuration file

June 20th, 2009

These lines are from a configuration file that will allow the current (4.x) Cisco VPN client to connect to the 501. They took me a couple of hours to derive – hopefully sharing this with other people will help save someone some time.

The problem: You’ve got a cisco 501, and users using the Cisco VPN client. They can’t connect, and you don’t know why. If you turn on ipsec debugging with

# logging on

# debug crypto ipsec

# debug crypto isakmp

You get things like this:

——–


ISAKMP (0): Checking ISAKMP transform 1 against priority 1 policy
ISAKMP:      encryption AES-CBC
ISAKMP:      hash SHA
ISAKMP:      default group 2
ISAKMP:      extended auth pre-share (init)
ISAKMP:      life type in seconds
ISAKMP:      life duration (VPI) of  0x0 0x20 0xc4 0x9b
ISAKMP:      keylength of 256
ISAKMP (0): atts are not acceptable. Next payload is 3
ISAKMP (0): Checking ISAKMP transform 2 against priority 1 policy
ISAKMP:      encryption AES-CBC
ISAKMP:      hash MD5
ISAKMP:      default group 2
ISAKMP:      extended auth pre-share (init)
ISAKMP:      life type in seconds
ISAKMP:      life duration (VPI) of  0x0 0x20 0xc4 0x9b
ISAKMP:      keylength of 256
ISAKMP (0): atts are not acceptable. Next payload is 3
ISAKMP (0): Checking ISAKMP transform 3 against priority 1 policy
ISAKMP:      encryption AES-CBC
ISAKMP:      hash SHA
ISAKMP:      default group 2
ISAKMP:      auth pre-share
ISAKMP:      life type in seconds
ISAKMP:      life duration (VPI) of  0x0 0x20 0xc4 0x9b
ISAKMP:      keylength of 256
ISAKMP (0): atts are not acceptable. Next payload is 3
ISAKMP (0): Checking ISAKMP transform 4 against priority 1 policy
ISAKMP:      encryption AES-CBC
ISAKMP:      hash MD5
ISAKMP:      default group 2
ISAKMP:      auth pre-share
ISAKMP:      life type in seconds
ISAKMP:      life duration (VPI) of  0x0 0x20 0xc4 0x9b
ISAKMP:      keylength of 256
ISAKMP (0): Proposed key length does not match policy
ISAKMP (0): atts are not acceptable. Next payload is 3
ISAKMP (0): Checking ISAKMP transform 5 against priority 1 policy
ISAKMP:      encryption AES-CBC
ISAKMP:      hash SHA
ISAKMP:      default group 2
ISAKMP:      extended auth pre-share (init)
ISAKMP:      life type in seconds
ISAKMP:      life duration (VPI) of  0x0 0x20 0xc4 0x9b
ISAKMP:      keylength of 128
ISAKMP (0): atts are not acceptable. Next payload is 3
ISAKMP (0): Checking ISAKMP transform 6 against priority 1 policy
ISAKMP:      encryption AES-CBC
ISAKMP:      hash MD5
ISAKMP:      default group 2
ISAKMP:      extended auth pre-share (init)
ISAKMP:      life type in seconds
ISAKMP:      life duration (VPI) of  0x0 0x20 0xc4 0x9b
ISAKMP:      keylength of 128
ISAKMP (0): atts are not acceptable. Next payload is 3
ISAKMP (0): Checking ISAKMP transform 7 against priority 1 policy
ISAKMP:      encryption AES-CBC
ISAKMP:      hash SHA
ISAKMP:      default group 2
ISAKMP:      auth pre-share
ISAKMP:      life type in seconds
ISAKMP:      life duration (VPI) of  0x0 0x20 0xc4 0x9b
ISAKMP:      keylength of 128
ISAKMP (0): atts are not acceptable. Next payload is 3
ISAKMP (0): Checking ISAKMP transform 8 against priority 1 policy
ISAKMP:      encryption AES-CBC
ISAKMP:      hash MD5
ISAKMP:      default group 2
ISAKMP:      auth pre-share
ISAKMP:      life type in seconds
ISAKMP:      life duration (VPI) of  0x0 0x20 0xc4 0x9b
ISAKMP:      keylength of 128
ISAKMP (0): atts are not acceptable. Next payload is 3
ISAKMP (0): Checking ISAKMP transform 9 against priority 1 policy
ISAKMP:      encryption 3DES-CBC
ISAKMP:      hash SHA
ISAKMP:      default group 2
ISAKMP:      extended auth pre-share (init)
ISAKMP:      life type in seconds
ISAKMP:      life duration (VPI) of  0x0 0x20 0xc4 0x9b
crypto_isakmp_process_block:src:10.101.1.61, dest:10.101.2.4 spt:500 dpt:500
VPN Peer:ISAKMP: Peer Info for 10.101.1.61/500 not found – peers:0

————

The solution: Try this


sysopt connection permit-ipsec
crypto ipsec transform-set default esp-3des esp-md5-hmac
crypto dynamic-map dynmap 50 set transform-set default
crypto map mymap 10 ipsec-isakmp dynamic dynmap
crypto map mymap client configuration address initiate
crypto map mymap interface outside
isakmp enable outside
isakmp identity address
isakmp policy 1 authentication pre-share
isakmp policy 1 encryption 3des
isakmp policy 1 hash md5
isakmp policy 1 group 1
isakmp policy 1 lifetime 86400
isakmp policy 2 authentication pre-share
isakmp policy 2 encryption 3des
isakmp policy 2 hash md5
isakmp policy 2 group 2
isakmp policy 3 authentication pre-share
isakmp policy 3 encryption 3des
isakmp policy 3 hash md5
isakmp policy 3 group 5
isakmp policy 3 lifetime 86400

Funding for candidates dependant on their campaign promises

June 17th, 2009

So, I had a idea that might be a little hard to implement, but would bring some honesty back to the democratic process.

I think individual donors should be allowed to specify which campaign promise led to their donations for a candidate. Then, if the candidate failed (by a impartial observer) to at least attempt to live up to the promise, they’d have to refund the donations. This might literally mean they couldn’t run the next election cycle, because they would be too far in the hole to their donors.. but it would be a way of making sure that politicians “stayed bought”.

The problem with the current situation is that a politician can promise anything they like – and them completely forget every any promises they want after they get to office. If they upset the majority this way, they might not get reelected – but if they just upset a minority – making promises to that minority to get them extremely motivated in getting the pol elected, and then ignoring the promises after their election – nothing bad will happen to the pol, even though they’ve behaved dishonorably.

(This is partially in response to this article  – I’m disappointed, but not particularly surprised. Supporting rights for LGBTs is just not a centerist thing to do, and Obama is playing to the center, probably in the hopes of getting reelected. (says the Sheer, who is clearly not a expert at politics)

Personally, I’d rather he didn’t care about the next term – that would show that he was a truly honorable politician, willing to do the right thing on every issue even though it cost him 4 years in office*. But that’s also too much to ask for, as well I know. I guess I can always hope that after he no longer has to worry about reelection – assuming he gets reelected in 2012, and the world doesn’t end – he’ll deliver on his earlier campaign promises

* = of course, then I’d also want him to be honorable enough to bow out in favor of a Dem candidate who could win