12/31/2006

12-31-06 - 1

God I hate New Year's Eve. Fucking expectations.

I got the new Firefox (2.something) and WTF it still blows chunks. Pages take much longer to load & format than in IE and they pop all over during formating in evil ways. I had to get "SetBrowser" and "FireTune" to even get it working right. I wish I could fucking use it because I want the better security and ad blocking and such, but I'm not sure I can handle the craptacularity. Also, you can't drag & drop url's between IE and Firefox which makes it impossible to use a hybrid browsing approach. Blah blah I know about initialpaint delay.

12/30/2006

12-30-06 - 2

The "Sunken City" in San Pedro seems pretty cool, I'd like to go. Nice blog here on the Ruins of So Cal

12-30-06 - 1

WTF, there's a "Google Music" search now !? Since when? Unfortunately it doesn't actually seem to be useful at all, since I can't tell it to only find full-length free mp3's.

12/29/2006

12-29-06 - 1

The color R=60 G=60 B=40 is perceived as "olive green". Apparently I have trouble with that color, I often see it as "brown". Of course it's really a desaturated dark orange, which is what brown is, but any brown that's even close to being even on green is perceived as very green. Perhaps this is related to the whole "we see green better than any other color" thing, but maybe not.

12/25/2006

12-25-06 - 1

Merry Christmas! I'm bored.

I'm not around any really little kids this year, which sucks.

12/22/2006

12-22-06 - 3

We have set up Iraq to be a defacto Shi'ite country with strong ties to Iran. It's headed down that path and we don't have the will or the competence to stop it. As in all places, the "terrorists" are those who can't pretend to be part of the government. In Iraq, the Shi'ites are committing horrible acts of terror through execution and kidnapping squads which either dress up as police or are police; this government-sponsored terror is being more and more tolerated by the US because it provides "stability"; just in the days of Kissinger's realpolitik (and later when we supported Saddam), we will back the evil government if they can control the opposition and provide profit opportunities for America's businesses. On the other hand, the Sunnis are becoming disenfranchised and can see that as a minority they will be cast out of power, dislocated, and stripped of rights. Just like the Shi'ites they engage in reprisal killings and attacks against those who they see as threats, but since they don't have the cloak of government authority, they are the "terrorists".

12-22-06 - 2

The public transportation in SF is really good, it's super nice if you live in the city, you really don't need a car. Bart and Muni are great, but the buses sort of suck. There's no reason for them to suck and I propose two very easy fixes which would make them awesome. 1) Don't stop so often. Most of the bus lines through the city stop on every block. This makes the ride much slower and means they come to each stop much less often. This is not a small factor, it's like a 2X ride time factor, or maybe more. They could stop every 3 blocks. Presumably all this stopping is motivated by the disabled or elderly, but they had to walk to get to the stop anyway and a few blocks is not a significant increase. 2) Get rid of tickets/fares. A huge amount of the time is spent loading/unloading, and the majority of that is caused by tickets/fares. One problem is people have to get on the front instead of both doors because of fare checking. The other problem is just the clog at the entrance with people trying to run bills or show tickets. The amount of money taken in fares can't really be that significant. In my opinion the best solution would be to subsidise it completely from tax funds. This would be a big boon to the poor since the rich basically never ride the bus, which would be a massive aid to economic development. It lets people get to school or jobs more easily, and bus rides will not be abused since it's so unpleasant. Conservatives hate these grants for economic development, though they think massive tax cuts or business subsidies are justified to "stimulate the economy" (even though they don't).

12-22-06 - 1

Deborah Solomon is a fucking condescending ignorant bitch as usual. She contends that numerical ratings for books are foolish, that you need the personalization of criticism. This is an egotistical fallacy. One of the things which is proved by Netflix is that people are really not very unique at all. A simple global predictor like (0.6 * movie_average + 0.4 * customer_average) gets around 0.99 RMSE on the movie data. The standard personalized predictors in the literature (which find most similar other users and take their ratings) get around 0.98; the very best in the literature get around 0.95. The most sophisticated predictors get around 0.90 RMSE now. That's a microscopic improvement over the simple average-based predictor, which indicates that people are far more the same than they want to admit. The reason people do not believe this is that they like to pretend they are so unique, so interesting, that their taste is better than the average shmuck.

Meh, most of my logic is flawed here. I'm a condescending ignorant ass.

12/21/2006

12-21-06 - 3

There's a hacky way of solving coupled non-linear systems which I've never really seen documented. The numerical people will puke, but it works incredibly well in almost all cases and is very simple to implement. I dunno, maybe this is well known but I've never seen it really described.

Say you have some function F(A,B) where A and B are vectors. You wish to solve F(A,B) = 0 , (or perhaps minimize an error E(A,B), so take the derivative to get F's). Do some algebra and substitutions until you have two seperate functions that depend only on the other variable :

A = G(B)
B = H(A)

Where G and H may be arbitrary nonlinear functions so you can't just plug them together and solve it. If B was the right answer for B then A =G(B) would give you the exact solution for A and vice-versa.

The hacky solution is basically just to set A from G, then B from H, and repeat. There are some simple hacks to make it better.

First imagine the solutions converging as a time series, so we have A_t and B_t. First of all it's important to have a pretty good initial guess for A_0 and B_0 (actually just for one or the other) because this method doesn't work if you're very far from the right answer.

The next hacky trick is to take less than the full step for the first few steps. A full step would be :

A_t_1 = G(B_t)
B_t_1 = H(A_t)
( A_t_1 should be read as A_(t+1) , it's A at the next time step)

Instead take a fractional step of size f (f in 0 - 1) :

A_t_1 = (1-f) * A_t + f * G(B_t)
B_t_1 = (1-f) * B_t + f * H(A_t)

This avoid oscillations and helps you settle in. You can start with f = 0.5 and quickly step it up 0.6,0.7. For some problems you might want to have "f" max out at 0.99 or something rather than 1.0

The next hack which helps a lot is to use A_t_1 instead of A_t when solving for B_t_1 :

A_t_1 = G(B_t)
B_t_1 = H(A_t_1)

This sort of lets you take a more exact step. If you want you can swap the order of A & B on every other step, or do some sort of fancier thing like :

A_int = 0.5 * A_t + 0.5 * G(B_t)
B_t_1 = H(A_int)
A_t_1 = G(B_t_1)

which is sort of like a centered-time integrator or something though I have no idea if that's actually better. Actually this whole thing sort of reminds me of implicit integrators.

Anyway, in practice this type of iteration converges incredibly fast. In problems where I've used Newton's method or Conjugate Gradient or something and it's taken like 500 iterations to converge, this iteration took 20 steps. Obviously it only works on certain types of problems and they have to have well behaved local minima, but when it works it works great.

To be a bit more concrete I'll give you a specific example. I've been examining the "weighted SVD", and one step of that is the approximation of a matrix with a rank-1 tensor (that's just an outer product of two vectors). The problem is :

Given matrix A_ij
and weights w_ij
Find vectors U_i and V_j such that the error
E = Sum_ij { w_ij * (A_ij - U_i*V_j) }
is minimized

If you take derivatives of E with respect to U and V you can solve for two equations :

U_i = Sum_j { A_ij * w_ij * V_j } / Sum_j { w_ij * (V_j^2) } = H(V)
V_j = Sum_i { A_ij * w_ij * U_i } / Sum_i { w_ij * (U_i^2) } = G(U)

Directly solving these is impossible (I think), but they're exactly in the form I need for my hacky iteration, and in fact it works super well.

I guess the reason no one likes this approach is that on general problems it can very badly fail to converge.

Addendum : this approach is also great for equations in one variable by substitution. For example say you have some evil equation to solve like :

3 + 7*x + sin(x) + sin(x)^2 = 0

Just set y = sin(x) and pretend you have equations in two variables. Now :

x = (- 3 - y - y*y)/7
y = sin(x)

Are the two equations and you just use the alternate stepping approach. The half-step iteration I described here converges to within FLT_EPSILON in 5 steps !!

12-21-06 - 2

I hate Christmas shopping so much. First off I think of how it's all a manufactured shit-storm for retailers to make money; then when I go into a nice shop I feel so uncomfortable with the people that are hovering, can I help yous and such, sometimes I feel like I have to buy something if I give them a lot of trouble, then I think fuck them I'll show by not buying anything; then I get into this thing where I've passed up a few decent gifts, so then I can't settle for anything worse than what I passed up, I have keep looking for something better as it becomes more and more obvious that's not going to happen; then I start doubting if the person would even want this crap I'm buying, what a waste of money they probably won't like it they'll just get it and think how thoughtless I am and throw it in the back of their closet, or maybe they'll keep it but every time they wear it / use it they'll think "what a piece of crap" and think of me; most things that people would actually want they've either gotten for themselves or know how to get better anyway since they actually like them and like to shop for them and know the good stores; you can never buy anyone clothing because clothing is all about the fit and 99% of christmas gift clothing goes straight to the thrift store.

12-21-06 - 1

WTF, why do reporters and newspapers even bother asking this administration questions anymore? You know they're just going to completely ignore what you're getting at and spout one of their stock phrases. In my newspaper the entire content of all the administration statements would be "The White House released more PR babble today." and then we'd move on to information about reality.

I hear a lot of women say that they admire or respect Condy Rice for her acheivements and for the fact that she's a woman with a top role in the government. That sentiment disgusts me. I find her of the same cloth as Colin Powell, who is also despicable. Someone who is clearly intelligent and rational is even more accountable for their actions, and by making themselves totally subservient to a madman they have given up all their integrity to further their careers. They know that they're lying, they know they're trying to cover up gross misdeeds and incompetence, they know their actions are leading to the death of innocents; sometimes you can even see it on their faces in an interview where they take a tough question and they almost wince before they shake it off and spout the awkward lies again. Someone like Rumsfeld I almost can excuse because he's clearly just loony tunes or drunk on his own kool-aid.

12/19/2006

12-19-06 - 1

You have two terms A and B and wish to combine them. They might be errors, predictions, whatever. There are several interesting possibilities.

First of all, generally the output should be "linear" in A's and B's. That is, sqrt(A*B) is good but A*B is not, because it gives you 2 powers of A or B. We think like physics and assume these things have units, the output should have the same units.

Secondly, we must be aware of scales. If A & B are scaled in exactly the same way so their numeric values have the same significance, then (A+B) is a good combiner. If they are not scaled the same, then any forms which add A & B are not okay. In that case you only really have one option :

sqrt(A*B) * G(A/B)

Often A & B have the same significance which means the output should be symmetric in swap A <-> B. In that case the G function has limitted forms. I haven't thought about exactly what they can be, but it has to be things like (A/B) + (B/A). In fact if A & B aren't on a similar scale even that form is not okay.

If we assume A & B are on the same scale, then additive forms are okay and it opens up some other options. (A+B)/2 is obviously your first guess.

2AB / (A+B) is an interesting combiner. If an A&B are in [0,1] then this takes (0,x)->0 , (.5,.5) -> .5 and (1,1) -> 1, and sort of penalizes when they're not equal. It takes (x,x) -> x which is a nice property of any combiner when you're trying to make a combiner that can stand in for (A+B)/2.

sqrt(A^2 + B^2) is another, and then you can take simple multiples of these, which gives you forms like (A^2 + B^2)/(2AB).

Anyway the point is that there really aren't very many forms to choose from which satisfy the basic properties and you can easily try them all.

12/16/2006

12-16-06 - 3

How to combine two (continuous) expert predictions :

Say you have two experts. They make predictions which have a Guassian error. The expert provides both the prediction (the center of the Gaussian) and his best estimate of the accuracy of the prediction (the sdev of the Gaussian, which is the sqrt of the variance), call this P & S, so you have {P1,S1} and {P2,S2}.

We're going to make a combine prediction by guessing a weight for each expert (here W1 and W2). The combined prediction is then :

Pred = (W1 * P1 + W2 * P2) / (W1 + W2)

(or) Pred = P1 + (W2 / (W1+W2) ) * (P2 - P1)
Pred = P1 + F * (P2 - P1)
F = 1 / (1 + W1/W2)

This latter form is more useful in practice because it allows you to apply arbitrary scaling to each term so you can run them through an lsqr or nnet or whatever. (assuming W1 and W2 never go to zero; if they do then just choose the other pred)

The ideal combination of experts in general is a context-dependent problem, but a general good way to weight them is via the entropy of the prediction. If you knew the instantaneous entropy of each prediction, H, the ideal weight would be :

W = e^( - Beta * H )

for some Beta which in general depends on the problem. In practice, Beta = 2 is usually very good.

The entropy of a Gaussian can be analytically integrated. The answer is :

H(Gauss) = (1/2) * ln(2pi) + ln(S)

Where S = the sdev (sigma), recall. Since we assumed our predictors were Gaussian we can use this. But we can simplify :

W = e^( - Beta * H ) = C * e^( - Beta * ln(S) ) = C * ( S^-Beta )

Where we put a bunch of constants in C, and they don't matter because it's an overall scaling of W which divides out.

F = 1 / (1 + W1/W2)
F = 1 / (1 + S1^-Beta/S2^-Beta
F = 1 / ( 1 + (S2/S1)^Beta )

If we use V = S^2 (V is the "variance" of the Gaussian, or the MSE), and choose the common case of Beta=2, then we have a very simple expression :

F = 1 / ( 1 + V2/V1 )

or F = V1 / (V1 + V2)

and this is the same as W1 = V2 and W2 = V1

Which is in fact a very good way to combine Gaussian predictions.

12-16-06 - 2

Volf's switching work is very hard to find on the web because he took his page down, and it hasn't been much publicized. The best links are at the bottom of Willems' CTW page , which in itself is a very nice page and gathers all the CTW papers which is great stuff (and also generally applicable to expert weighting).

12-16-06 - 1

Sean's released his game Beat It! from IGJ4; the concept is you play an arcade game and by doing so you make music, and hopefully as you play you just sort of get into a groove where you're making music and that's also beating the aliens. I don't think it completely works, but you definitely feel it once in a while and can tell the concept would work.

12/15/2006

12-15-06 - 2

In the continuing needle in a haystack which is the mess of undocumented amazing things that Google offers, I just discovered code.google ; they have some super awesome things there, including SDK's to programatically interface with most of their stuff, as well as just useful code libraries such as perf tools which contains a very good malloc (supposedly). They also have their own "hash_map" which I imagine is pretty strong.

Related to my perpetual improved ranting method search, the new Google Blogger (now in beta) will have an SDK for code access, so I imagine it will be easy to write an app to throw raw text at it via Blogger GData

12-15-06 - 1

The next big step in the internet is the unification of the web, blogs, communities, forums, and recommender systems. Recommenders like Netflix do a good job of correlating me to people of similar taste; that should lead me to their blogs (on topics I want); similarly if I subscribe to someone's blog on a topic, that should add metadata which improves recommendations for me. All the communities and forums are cool but they're totally isolated in these little pockets; it should be one internet-wide community where you can see your "friends" and such across web sites, eg. if I browse CNet looking at product reviews I can see my friends' comments and add forum posts right there, etc.

12/13/2006

12-13-06 - 1

Some random updates from the ML field :

1. The FANN Neural Net library is actually pretty decent. It's missing a lot of functions you would want, but it's reasonable easy to write them yourself.

2. SVDLIBC is a nice little implementation of the old "Lanczos" SVD algorithm which is fast and good. It comes from the old FORTRAN math goodness. One amazing little routine I found in there is "Machar" which will deduce the properties of your FPU by doing a few simple math operations!

3. If you search google for things like "SVD learning unknown missing" you will find about 100 papers; this is a major field of research, a lot of it driven by computer vision.

4. Simon's spilled the beans on his Netflix approach. His description of the "GHA" (Generalized Hebbian Algorithm) is way way clearer than the paper. The Hebbian is actually a type of Neural Network, and I find this approach much easier to understand if you just think of it in terms of doing a gradient descent to optimize the SVD vectors. I also found that Gorrell has released source code for her own GHA Lab

12/12/2006

12-12-06 - 1

Tutorial on SVD and LSI for use in search; which is roughly the same way it's used for recommender systems.

12/10/2006

12-10-06 - 1

Don Mitchell has some really nice papers on computer graphics, mainly on sampling and aliasing (or the lack thereof). It's a pleasure to read well written scientific papers, they're very clear and elegant. I highly recommend reading a few even if you aren't directly working on those subjects, they will make all your work better.

12/09/2006

12-09-06 - 1

I've been playing with Google Adwords to try to improve the results for my sister's Pilates Studio . Wow, Adwords is a real piece of garbage and it's the thing that makes Google worth $100 gajillion dollars or whatever? It's like totally impossible to work with and get good results. I want to do completely obvious things, like for example I'd like the site to be prominent if someone searches "Pilates" and they live in NY, or if someone searches for "Pilates NY" and they live anywhere, but if they search "Pilates" and live anywhere, then I don't want to pay a lot for an add there. I have zero ability to do that in Adwords, you can either completely location-lock your listing or not. There's no way to tweak your settings and test results, they sort of have a search test thing but it doesn't seem at all useful; I want to try tweaking my cost per click and such to see what kind of different placing it gets me and the response is not real time so you can't see how things change. The whole keyword system seems rather messed up too. You'd think Google has a smart search engine, your add should just be placed on searches where your site would have ranked anyway, just maybe not on the first page, eg. you should get synonyms and context and all that. Instead you have to manually enter keywords and you have to manually specify synonyms etc. Lastly it's charging her a lot of money that's not coming from search clicks; the other charges are from adds in the "content network" and other places, and I can't find out anything about where those ads actually are to tell if they're useful or not. All in all, I'm extremely un-impressed.

12/06/2006

12-06-06 - 1

The original developer has redone the classic game "Another World" for Windows XP in high res. You can get the demo here . It's one of my favorite games of all time; I have no idea if it still holds up at all. The gameplay even at the time was pretty annoying puzzle stuff, with that digital movement ala Prince of Persia or the old Oddworld stuff.

12/03/2006

12-03-06 - 1

Evaluating the "Need A Win" hypothesis.

A lot of people in Sports Betting use the motivation of the two teams as a basis for choosing the side to bet. The theory is that the team that needs a win is more likely to play to full effort and beat the spread. I've always been skeptical of these theories and thought I'd try to statistically examine how important this theory actually is.

I examined all the NFL games from 1999 to 2006. For each game I made a rough evaluation of which of the teams "needed a win". Only games in weeks 8-14 were examined, which is the heart of the playoff run. Teams that "need a win" were any teams with a record >= 50% wins and with a record worse than 8-2. Generally these are the teams on the bubble for their division or a wild-card spot. Note that this isn't a totally precise measure of "need a win" but it should be good enough to see some statistical correlation if any exists.

Here are the results. There are four categories :

cat 0 = both teams don't need a win
cat 1 = road team needs a win
cat 2 = home team needs a win
cat 3 = both teams need a win

The results are (home wins)-(home losses)-(pushes)
ATS = Against The Spread

32 teams, 1992 games

cat 0 WLP : 827-578-0
cat 0 ATS : 678-683-44
cat 1 WLP : 84-125-0
cat 1 ATS : 103-100-6
cat 2 WLP : 138-65-0
cat 2 ATS : 94-102-7
cat 3 WLP : 105-69-1
cat 3 ATS : 91-76-8

In particular look at categories 1 and 2. The team that needs a win is 263-149 vs. teams that don't need a win. However, they are only 194-205 ATS !!

Now, is that W-L record even significant? The fact is most of the time you have a "need a win" vs. "dont need a win" matchup it's a pretty good team vs. a very bad team, so it's no surprise that they win a lot more.

For comparison I did the same study, but just grouped based on teams with a record >= 50% against teams with a record < 50% , eg. winning teams vs. losing teams.

32 teams, 1992 games
cat 0 WLP : 219-136-0
cat 0 ATS : 177-169-9
cat 1 WLP : 186-268-0
cat 1 ATS : 224-213-17
cat 2 WLP : 328-111-0
cat 2 ATS : 216-211-12
cat 3 WLP : 421-322-1
cat 3 ATS : 349-368-27

Winnings teams are 596-297 against losing teams, which is actually a better ratio than the "need a win" vs "dont need a win".

It's possible that a better measure of "need a win" would reveal a slight statistical significance, but the absense of any here indicates it is not strong at all.

12/02/2006

12-02-06 - 1

So, this whole show is on Youtube if you click around the Related links; it's amazing, they did a ton of songs : RadioHead at Le Reservoir

Also Radiohead Giglink Dump is full of great live shows. Check out Thom Yorke's solo at the Bridge School.

12/01/2006

12-01-06 - 2

I found these really nice J2K slides if you want to learn about JPEG2000.

I couldn't find this info easily anywhere on the web, so here you go. Lossless color transforms :


Color transform notes :

JPEG-LS (LOCO-I) uses :

{RGB} -> { (R-G), G, (B-G) }

	and the inverse is obvious
	BTW this is very nice in that you can go 8bit -> 8bit using modulo arithmetic,
	many of the others require 9 bit YUV coefficients.

J2K (aka RCT aka CREW) uses :

{RGB} ->
	Y = (R + 2G + B)/4
	U = R-G
	V = B-G
	
	G = Y - (U+V)/4;
	R = U + G
	B = V + G

	(the divides are floored)

YCoCg is :
(similar to "RCT" but decorrelates better)

lossy :

	Y = (R + 2G + B)/4
	Co= (R-B)/2
	Cg= (2G - R - B)/4

	G = Y + Cg
	R = Y - Cg + Co
	B = Y - Cg - Co

lossless :
	(Co and Cg are effectively scaled up by 2)

	Co = R-B
	t = B + (Co/2)
	Cg = G-t
	Y = t + (Cg/2)

	s = Y - (Cg/2)
	G = Cg + s
	B = s - (Co/2)
	R = B + Co

In general with the lossless YUV type transforms, the chromatic coefficients are roughly 2X bigger than they should be in a perceptual space in order to have the bits to get back to RGB exactly.

Note that YUV was created for perceptual uniformity, NOT for decorrelation, so it's no surprise that you can beat it for decorrelation. In fact, doing the 3x3 KLT and sending the coefficients is totally worth it if you're doing compression. (actually YUV was created for some weird use in televisions)

12-01-06 - 1

Something else I've never really seen written up clearly. We do ubyte to float color conversions all the time and don't really think much about it. There are two obvious ways to do it, and there are trade offs with each. You can either map the full range or preserve the end points, not both.


NOTE ON COLOR CONVERSIONS :

int colors are in [0,255]

Int pel "x" is considered to represent the span {x-0.5,x+0.5}/255

float colors are in [0,1]

int 0 -> float 0
int 255 -> float 1

Note that this way is nice in that it keeps the maximums the same,
 but it's bad in that it wastes color space.  That is, there's only 1/255
 precision instead of 1/256 which is totally possible.

Another way of seeing it is that the int range [0,255] is actually being
mapped to the float range { -0.5/255 , 255.5/255 } , that is, {0,1} is not
the full range.

One nice thing about this though is that it gives you some slop in your float->int.
As long as the float is in { -0.5/255 , 255.5/255 } you don't need to clamp.


/*
// more pure quantizer way :
// int value [i] represents the bucket (i,i+1)/256

inline int		ColorFTOI(float f)
{
	return ftoi(f * 256.f);
}

inline float	ColorITOF(int i)
{
	return (i + 0.5f) * (1.f/256.f);
}
*/

// way that maps 0<->0 and 255<->1.0

inline int		ColorFTOI(float f)
{
	return ftoi(f * 255.f + 0.5f);
}

inline float	ColorITOF(int i)
{
	return i * (1.f/255.f);
}

11/30/2006

11-30-06 - 2

Computer NFL picks this weekend :

New Orleans San Francisco 7 ; bet NO

Washington Atlanta 1.5 ; bet WA

Cleveland Kansas City -5.5 ; bet CL

Denver Seattle 3 ; bet Den

Philadelphia Carolina -3 ; bet Phi

The last two games are messed up by weird injuries/substitutions so I'm laying off them.

11-30-06 - 1

The problem with poker as a profitable gamble is that you can't just up your bet when you find an edge. You find a good table or you're beating a certain limit - you can't just throw your bankroll at it, because to gamble bigger in poker you have to move up in levels, which is a harder game. Roughly the difficulty is proportional to the level you play, which makes it hard to roll big.

In sports betting, you can generally go big when you find an edge. (that's not completely true because books will identify you as a sharp and start giving you bad lines or setting limits, but I'll ignore that for now). The problem with sports is that you get very few gambling events and they're very high variance. If you're a good capper you win 55% or so of your bets. That's good EV, but in the NFL you only get maybe 30 bets a year. The variance on that is huge. In contrast, in poker you will often be getting 55% shots, if you play a lot you might get 10,000 a year, which means your profit is much more regular. Even if you go to something like the NBA where you can get your money on more games, it's still only a few 55%'s a day, whereas in poker you'll get maybe 100 a day.

The third option are the financial markets. There's tons and tons of opportunities to trade so you can smooth out your variance. The return generally doesn't decrease with investment (for my money scales, it does if you're getting into huge monies). So, that's the best of both worlds. The only problem with finance is A) high transaction costs, and B) the markets are much more efficient so the edges are smaller.

11/28/2006

11-28-06 - 2

The computer picked GB to beat the spread on MNF and we just barely made it. I should've trusted my own analysis of Chi-NE and layed off the computer bet. It seems like the computer is solid, but it misses the intangibles of matchups, so it's worth using my own judgement to lay off sometimes. I'm not using my old system of really researching and looking for good matchups which I used back in 2000 or whatever, I don't want to put in all that time right now, so I'm seeing if a computer-aided picker can do well.

I'm going to write myself my guidelines. My computer system guesses the spread that it thinks is the "true spread". I want to decide to bet based on the position of the TS and the VL (Vegas Line).

1. If the TS and VL are on opposite sides of the zero, I like betting the Vegas dog to win. I especially like it if it can mean betting an underdog on the moneyline where I get +150 or some nice odds like that.

2. If the TS is close to zero and the VL is big, eg. if the TS is like 1 and VL is like 4, I again might bet the dog to win if my judgement of the intangibles is that they have a good shot. If not I drop down to the next rule :

3. If the TS/VL are on opposite sides of the 3 or 7 with at least 2 points of difference, bet the spread. eg. if the VL is a 9 and the TS is a 6, bet the spread. Teams will often win by exactly 3 or 7, so when you can bet across the 3 or 7 you're getting good value from the spread. On the other hand if the VL is a 6.5 and the TS is a 4, probably don't bet unless the intangibles really like the bet because you're not crossing a 3 or 7.

4. To make the intangibles a bit more concrete : A) Prefer betting home dogs. B) Prefer betting teams that "need a win" vs. teams that are either coasting to the playoffs are completely out of it. C) Beware of teams whose past performance is not a good indicator of their true quality, eg. if you judge they've gotten lucky in a lot of games. D) The computer isn't aware of news or injuries so mainly just avoid games where those are big factors.

Update : this week there seems to be a huge edge betting the Ravens to win vs. Cincinatti.

11-28-06 - 1

We did a sort of mini "Indie Game Jam" at Chris's over Thanksgiving. The theme was "Sound" - sound for input, output, gameplay, whatever. The engine was actually a pretty nice sound in/out/mixer and hopefully I'll be using it for some projects in the future; as usual everything will be released open source.

I had a lot of ideas for games, but didn't really like any of them. A few were sort of decent and obvious, like :

1. Make a game where your play creates a song. Basically different user actions or environmental objects create certain sounds or turn on different tracks. By playing the game correctly you make a cool song. The true "synesthesia" moment of brilliance would come if you could play either by just doing the visual gameplay things, OR purely by closing your eyes and trying to create a cool song, and if you create a cool song that also beats the shooter/platformer/whatever.

2. Make a game with sound input where doing the gameplay causes you to make sounds that are cool and/or feel like the play. The way I was thinking was similar to #1, for example you could make a "beat boxing platformer" where different beats make you jump or duck or whatever, then the level sends things at you and you wind up making a sound track by playing. Casey had a really cool idea for a variant on #2 but I won't out it here, hopefully he'll actually finish the game and it will be cool to play.

Anyway, maybe I shoulda done something like those, but they just felt like the same old game. Most video games feel like a series of rote/mindless tasks that are presented to the user in sequence. I'm sick of making those and playing those, and this was really just another of those in different garb.

So, I tried to play with some toys that would feel like different experiences, and mostly failed. On the plus side, now I know my arm is okay to type again, though I was irritating it quite a bit.

11/21/2006

11-21-06 - 1

In the past 10-15 years, the investment philosophy of following the pack and jumping on bubbles has been incredibly profitable, assuming you got out somewhere near the peak. We had the dot com bubble, real estate, oil, gold, etc. People who have profited from these are often people who know nothing of smart investing and are cocky bastards. It's easy to dismiss them and these investments, but maybe there really is a valid strategy here. In this age of get-rich-quick day traders and soccer mom investment clubs, the markets are very swingy and people tend to pile on gaining sectors which pushes them up. Some investments might be very profitable even though you know they are over-valued; as long as enough of the populace is driving them up, you can ride the wave up and sell out.

In this theory, you could even make big money from those stocks that you get in spam emails. Assuming you're one of the first buyers, even if it's a junk stock people will send it up and you can ride the bubble. Certainly you can make money by buying a penny stock and then talking it up all over the internet, which is essentially what major banks have been doing for years.

11/20/2006

11-20-06 - 1

Computer NFL picks :

Chicago +3 against NE
NO +3 against Atlanta

bet both to win at about +150. Personally I hate betting Chicago against NE but this is what the computer likes.

11/19/2006

11-19-06 - 1

I put a post on my wordpress blog for people to comment and hook up about GB : here

11/18/2006

11-18-06 - 5

If you like capitalism and self-interest and such you should love the populist movement in Venezuela. Often populism is cast as "liberal" and socialist, anti-free-market. In fact the opposite is true, populism just means the people are voting in their own best interest, which is what they should do in an Ayn Rand idealogy. For far too long people in American have voted very much against their own best interest, which wickedly distorts the action of the state. One of the candidates in Venezuela is offering direct money back from their oil income; yeah, that's a cheap move and that can revolve into a self-destructive cycle of pandering for votes as well, but at least the politicians are at least trying to win votes by appealing directly to the people, instead of these purely image-based campaigns of lies and no benefits.

11-18-06 - 4

In the long view, one of the really disastrous and disturbing aspects of the Bush presidency has been the systematic destruction of the executive agencies of our government. Almost across the board, leaders were appointed based on political favors and idealogy, people who were incompetent or unqualified, people who didn't work with their department or their beaurocracy, people who caused severe damage to the agencies. The agency leaders are obvious - people like Rumsfeld who is obviously intellegent but harmfully ignored his own people and created nasty infighting over power, obviously at FEMA and Homeland Security, we talked a big game about making the US safe but appointed a bumbling figurehead, at PBS & the EPA Bush appointed people who were intentionally trying to hurt the implementation of the laws that govern those agencies, at the FDA the appointed board acted repeatedly on ideological or industry-favoring grounds against their scientific recommendations, in the few departments that had qualified leaders (State & CIA) they were cut out of the loop because they didn't fall into step.

The fact is, democrat or republican, the people who are elected are generally totally unqualified to run the government. They usually have little experience (especially in this age when any record is a bad record). Even with experience government is a huge complex problem and you need long-term specialists, the beaurocrats who run the agencies and really make government work. Those people have been devalued and cast aside, ignored, and have resigned in droves. This has already been detrimental to the functioning of government, but if it becomes a pattern it could be even worse.

11-18-06 - 3

Computer's NFL picks :

Cleveland +4 vs. Pitt
San Francisco +4 vs. Seattle

This is using a system where I only bet when the computer-predicted spread is across the 7,3, or 0 from the betting line.

11-18-06 - 2

The way everyone talks about stock and pricing past performance is completely wrong. The NYT says housing prices from 1950 to 2000 have gone up 3.5% per year in San Francisco (inflation adjusted). That sounds like you're getting a 50 year average and that should be a pretty stable number. In fact it's not at all. People do the same thing with stocks, they look at the average rate of return over an X year period. The problem with this is that it's incredible sensitive to exactly when you pick your start & ending point, which means you're incorporating a huge random factor.

Imagine your value(time) function was a sine function. The correct average rate of return is 0. However, depending on where you put your start and end, it could be largely positive or negative. In particular, with SF housing, if you looked at 1950 to 1998 you would see maybe a 2% annual gain. If you looked at 1950 to 2005 you would see a 5% annual gain. The problem is that the time span we're looking at is not very large compared to the magnitude of the noise. Take the ending price minus the starting price is super sensitive to the short term noise.

A much better way is to best-fit a line through the prices and take the slope of the line. This is way less sensitive to the edge effects. There are probably even better statistical ways, but it seems nobody does this even though it's totally obvious and everyone should do this.

11-18-06 - 1

I recommend the "Mission Park" Rhone at T.J.'s. Spicy and balanced, light finish, about $5.

Watched "Miller's Crossing" last night. Good but rather pointless. Has that Coen brother unrealistic staged feel; their dialogue is really awful in that everyone is a charicature and noone ever says things like that, but their dialogue is really awesome in that the lines are clever and perfect for their surreal noir world. Anyway, that's not my point. The Gabriel Byrne character made me think about the way smart bad ass guys always are in movies - they think of a plan and then go with it. What they don't do is think of several plans, think of the advantages and disadvantages of each, compare those to inaction, think of how it affects other people, etc. get some advice from others, then make a decision. They just come up with something make a decision and then figure out how to make it work. I know it's movies and it's ridiculous but I think it's a major problem in the way I run my life. The truth is you can make any decent plan work, so just pick one and do it.

11/17/2006

11-17-06 - 1

I just watched a debate on "Newshour" about whether the current housing slump is going to lead to a recession or a similar major problem. The guy on the recession side made lots of valid points and sounded reasonable, the guy on the "it's fine" side sounded like a dot com optimist, full of nonsense and rationalization. That's a very bad sign. I'm now pretty sure the US economy is headed for the shitter (unless we stumble on another piece of big luck similar to the internet boom, like if somehow all Linux software self-destructs and China has to buy into Windows, or maybe some US company invents and patents a teleporter or some other ridiculous market-changing invention).

The housing cheer-leaders say that spending is strong, job creation is strong, the US economy is flexible, and also that this isn't a housing bubble, it's a valid correction based on high demand for limited space. First of all, the valid pricing idea is nonsense. We haven't suddenly run out of land. Housing prices haven't changed significantly in the last 50 years and suddenly there's a huge shortage? Every time in the past that housing has shot up it's crashed back down to almost zero change inflation-adjusted.

The reality is that consumer spending has been powered by housing (the saving rate has been negative indicating people are taking loans against their houses). 33% of job creation since 2001 has been in housing or related fields, and perhaps even more so due to the trickle-out effects. Even despite that real spending power has decreased and we haven't actually cut unemployment. More and more people are not even showing up on the unemployment numbers because they're not seeking employment. Furthermore, our government has been desperately doing everything it can to stimulate the economy - interest rates have been rock bottom low, we severely cut taxes, both of which should have been huge short-term boosts to the economy, and have only just kept us at a sustaining growth rate (our GNP has to grow several % a year just to match population growth). The government's been doing massive debt spending, which again should stimulate short term growth and generally leads to constrictions later on.

We're now in a position where we can't really do too much more for stimulation. If housing does start to lead us to recession, our vault of reserve measures is depleted, we can't keep lowering interest rates, spending on debt, cutting taxes.

Anyway, as I've written before I'm still not sure how to play this. I do have a lot of money overseas already but maybe I should move even more.

11/16/2006

11-16-06 - 2

Dan made Monkfish last night. It really is a lot like lobster. Monkfish is a cartilage fish and only the tail is edible, it looks like some weird evolutionary left-over. You have to be very careful to not overcook it. I recommend a simple preparation treating it a lot like a steak - sear it first, then remove from the pan and saute onions, mushrooms, and fennel in the pan, add a bit of wine and stock, reduce a bit, put the monkfish back and just simmer until done, which is *before* the flake point. It becomes rubbery and non-lobster-like if overcooked at all.

We also got some Muscat grapes at farmer's market. They're quite amazing, very sweet, they taste just like the wine! Everyone was going crazy over all the persimmons, but I just don't understant it, I find them quite awful. I had a persimmon tree all those years at Alrita and didn't even bother to eat them off the tree.

My arm is getting much better, but I seem to have caught another cold !?!? WTF. Dan seems to get them at work and bring them home :( So I'm in awful shape again. Sigh.

In other news, I got a wicked Trojan by clicking around porn sites. WTF. It makes me angry how unbelievably broken IE and Windows is. It shouldn't be so easy to run malicious apps. Anyway, System Restore seems to have gotten rid of it pretty easily. All of my many Anti-Virus apps didnt detect it. It was a DLL in windows\system that inserted itself in winlogon. If you edited the registry to take it out of winlogon it would put itself back in.

I put some money on some football games partly out of boredom. I couldn't resist betting the Colts at -1 even though that's the "public" (sucker) bet and all the sharps are on the Cowboys. I believe Romo is probably over-rated because we just haven't seen him tested yet and everyone thinks he's amazing, and Parcells has really made awful decisions of late. If the Cowboys just run the ball and keep it low scoring, they will win. If it's a shoot-out, the Colts win.

11-16-06 - 1

All this mobilizing, canvasing, marching, all this shit is the wrong way to advance a cause. It can create some short term response but doesn't create long term powerful change. All major political shifts happen in response to massive world events - economic depressions, military coups, wars, etc. - this has created the big socialist movements. What created the Republican shift of 1980-2000 ? Partly it goes back to LBJ and Vietnam, the cold war of course, the oil embargo, and some arrogance of the coastal liberals, the job loss and fall of the middle of the country. How then do you create real change? You create the events that cause people to really react. Just scandals and horrible dishonest crooked behavior don't do it any more. Of course people will just swing over to the other party. To get any improvement, something else is needed. They need to see that the system is totally corrupt and needs to be changed.

"Crooklyn" is a god awful movie. If you just keep playing clips of songs from the 70's will it make it fun to watch? Yeah, it sort of does, but the complete lack of non-superficial story and characters is too bad for all the cool style and "authenticity" (what?) to cover. Anyway, the first 2 custom made "Crooklyn" hip hop tracks are hot yo . Somebody find me the mp3's.

11/13/2006

11-13-06 - 2

I've been really disappointed by the movies I've rented recently. Damn Netflix won't give me my history but some have been Ararat, Spanking the Monkey, Dressed to Kill, Old Boy, Ocean's 11, Happenstance, ... all have been really boring and pointless, the only highlights being a few erections. Even the brutal violence and shocks of Old Boy just felt gratuitous and inhuman. I've been trying to think of the movies that I actually really like so that I can rent ones that I actually want.

11-13-06 - 1

The stupid American government system has this property that if you can ever get 51% of the vote, you can do incredibly extreme thing that piss off the other 49%. You can also very easily stay in power by drawing district lines, giving favors/contracts to big donors, using your office for PR, etc. In a reasonable system you would have representation proportional to the backing of the people, instead we have a very fucked up threshold system where 51%->100%. In the US system, things seem to work better if power is split by the two parties, eg. one holds the presidency and the other holds congress, but that fact is simply an indication that the system is badly broken and too boolean.

11/12/2006

11-12-06 - 1

The killing and beating of nonviolent protestors in Oaxaca has gone almost completely unreported in mainstream US press. Partly because of the smoke screen of elections but also because the powers in the US dont like to report on the corruption and violation of civil rights by the government of Mexico.

Similarly the Beit Hanun/Hanoon Accident/Massacre is a huge big deal in Israel and the Arab world but has hardly received any attention here.

11/10/2006

11-10-06 - 1

Daniel Negreanu uses the "astrologer's fallacy". He calls out people's hands semi-randomly based on good guesses just like anyone would. Each time has maybe a 1/4 or 1/10 chance of being correct. When he's wrong you just forget it, but when he's right it's very memorable and seems amazing. You wind up remembering that he seems to name people's hands very often. Of course TV helps him because they show hands where he gets it right.

11/09/2006

11-09-06 - 4

It's sort of odd that there's still no really good image compressors. I mean "good" like PAQ or RK are good on text/exe data - really fucking good. In comparison the image compressors are super primitive. I guess the big problem is that for an image format to be useful at all it has to be supported in IE, Photoshop, etc etc. and since Windoze is such a broken piece of garbage there's no modular data abstraction layer, every app implements its own set of codecs. In a proper OS apps would just open an image and a codec library would handle it.

For lossy coding, the literature is quite strong and J2K would be fine, but I guess it has patent problems cuz the design committee was full of cock-munchers where each company forced in bits that they had patented. For lossless image coding there really isn't even super strong literature. The "MRP" method seems okay, but it's incredibly obvious how to make a big gain in practice : use Volf switching or something like that to blend in a dictionary/text coder which will work well on binary/artificial images.

11-09-06 - 3

I'm gettin sick of comedies that are just about how miserable and awful human beings are. Unfortunately the best comedies of this era are in that category. Some key examples are The Office and I'm Alan Partridge, two of the best comedies in the decade. To some extent Curb is in this group, though it's a bit more situational/whimsical. Contrast to previous eras, like Monty Python which started a wave of pure Absurdism carried on now by Family Guy, or of course eras when things like puns, double entendres and clever turns of phrase ruled. This modern "humanity is rotten" comedy is sort of taking the idea at laughing at our own faults to an extreme that's quite unpleasant.

11-09-06 - 2

Half the reviewers on Yelp need to get punched in the face. In fact in general we'd be much better off if computers and phones and cars could taser the user. Look, if you're a vegetarian and you went to a place called "Joe's House of Meat and all we got is fucking Meat" it's your own damn fault, and don't fucking give them a low rating. Also if you went to a restaurant drunk and thought the greasy food hit the spot, you probably shouldn't write a review. Finally if you go to a tacqueria and order a Carne Asada taco and complain that all you got was some dry beef in a tortilla, that's what you fucking ordered you stupid gringo!! You have all had your internet priviledges suspended. You will now wander aimlessly without the web to guide you and accidentally wind up in a real dive bar, not an ironic one, and get your head bashed in by real blue collar guys who don't find mocking GWBush at all funny.

11-09-06 - 1

Part of the problem of course with pointless/counterproductive wars like Iraq is that it makes it impossible to exercise intervention when its necessary, as it might be in Iran, or NK. It is impossible, not just logistically, but politically, which will last 10-20 years. Not that I think intervention is a good idea, but having the option & credible threat is valuable. And intervention might have been necessary in a situation like Lebanon.

On a related note, I'm sickened by the stupid fucking American electorate. They vote D because the war is going badly. WTF you morans. If the war happened to go well and the economy happened to swing up they would've voted R. You go all in with 23o preflop and happen to win against AA, most americans look at that result and decide you made a good play and get to wager their money.

11/08/2006

11-08-06 - 3

TiVo dropped a software update on me which has done some awful thing where it now collapses episodes of the same show in a folder. This is yet another instance of their software sins. First of all, the modern phenomenon of self-updating software is god awful and I wish it would end, though I know it won't. Software doesn't get old or wear out, there is no particular advantage to getting newer versions, it should be up to the user. Second, they have broken one of my basic design rules : don't change something in your UI unless there is a significant benefit. Users get familiar with the UI. This familiarity has a huge amount of value. In order for a change to be good it must have greater value than the familiarity. Making small or neutral changes is extremely foolish, and yet major software packages do it all the time. Photoshop seems to completely reorganize its menus with each version and even renames common operations. Visual Studio does that and also changes te default keyboard shortcuts!? wtf. I feel tempted to write a manual on software design, but plenty exist already and the fact is that people making these design errors wouldn't read it anyway.

11-08-06 - 2

How to do image enlargement with wavelets :

Do a float wavelet transform with the lowest-entropy wavelet (D97,CDF22,Haar,whatever). The imagine is now an LL and a series of bands, HL1,HL2,...HH1,...

Fit the linear relationship of bands : HLn ~= C * HLn-1. Fit the best C for all n. Seperate constant for HH and LH.

Use this linear relationship to add new LH,HL,HH bands with the scaled data. Perhaps also apply an additional user-specified scale. Do the inverse transform. The resulting image is 2X bigger in each dimension.

This will do things like zoom hard diagonal lines perfectly due to the wavelet zoom scale invariance property.

ps. this doesn't actually work because Band (n) to (n-1) correlation is very strong for coefficient magnitude, but not for signs, which are hard to predict.

11-08-06 - 1

OMG I'm starting to get really depressed. I can't fucking do anything, partly because I got the flu on top of the shoulder. Even computer use is so frustrating. I'm so fucking bored and sick of TV. Fortunately it shouldn't be too much longer. It seems like in a week or so I'll at least be typing and walking around again. Making it all worse the flu makes alcohol unpleasant so I can't just drink my days away, all the TV gives me a headache, and Dan is getting annoyed with me. I think if I ever had a severe injury where I was immobilized I would try to kill myself. Of course the worst thing would be something like "The Sea Inside" where you cant even kill yourself anymore.

11/07/2006

11-07-06 - 1

One interesting thing to me about the 2+2 poker community is seeing what they do outside of poker. A lot of the people are involved in money making schemes. Lately of course this is often real estate, but the small time operators do a lot of funny things. They scalp tickets to big concerts, they do things like buy up PS3 pre-orders and resell them on ebay, they go to salvage + police auctions to buy things and resell them, some of the guys own & stock soda machines or ATMs. Some of them make quite a lot of money doing those things.

11/04/2006

11-05-06 - 1

I'm gonna try to write a cripple's summary of ML. In all cases I care about supervised learning. That is, given a big sample of parameters x and ouputs y you have the training set {y_i,X_i} where X is a vector. The goal is to find the function f() which minimizes the error |y_i - f(x_i)| over all samples. This is a regression problem but you can easily convert it into a "classification" problem or use a different error metric or whatever.

Searching for arbitrary f() is NP hard. In fact, you can see that finding an optimal f() is equivalent to the Kolmogorov compressor. If we use an "MDL" error we think of f() as a coder; to reproduce the output y_i we have to transmit the specification of f() and also the residuals (y_i - f(x_i)).

For all the approaches we will be approximating f() as a combination of simple functions. You can of course get arbitrarily close to any f() by using a linear sum of enough functions. One thing I've come to realize is that all the ML techniques are very very similar. Almost all of them have a form like this :

f(X) = Sum[j to M] w_j * h( A_j * (X - L_j) )

Where h() is some function, "w" are weights, "A" are parameters, and "L" is a location in the same space as X. There are M terms. Possibly there are other transforms or linear combos or whatever, those issues are sort of minor (but messy).

Anyway, all the schemes come down to how you pick these terms and optimize them. Almost always you pick your basis functions h() in advance. This could be your Kernel, your fit function, whatever. Common choices are the sigmoid or radial gaussian. Obviously you could just put a delta function at each sample, but that would give you a large model that would not generalize well. So you sort of want that smallest/smoothest model that fits the training set. This is a very hacky problem with ML and you really just have to tweak and test by cross-training.

Neural Nets are a silly way of talking about basic linear algebra. You choose M and h() in advance and then optimize the parameters by greedy gradient descent. Obviously you try to choose the smallest M possible to get a decent fit on the data, but you can only do this by trial & error with cross-training. Also the gradient descent can get stuck in local minima and you get no gaurantee of maximum margin or other ideas that the model will generalize well. The nice thing about neural nets is they're pretty simple and straightforward. Unfortunately NN's have been conflated with all this brain modeling and circuit diagram nonsense which makes it much harder to just see the linear algebra.

SVM's are actually extremely similar, but instead of greedy optimization, they set up a nice constrained optimmization which solves for maximum margin. The L's are not free parameters but are instead points chosen from the training set (called the support vectors). Instead of controlling M directly, you set a parameter which controls the model size vs. closeness of fit tradeoff, and the SVM solves for the best M. The h() can only be functions that work as "kernels" but that's not too bad, it's a large set.

There are some nasty problems with SVM's. The parameter that controls model size has to be tweaked by cross-training which is hacky and time consuming. For clean seperable data svms do an awesome job of picking a minimal model (eg. for linearly seperable data with a plain dot kernel they pick a single perfect plane), however for noisy or ill fit data, M can get arbitrary large (up to N the training set site), and the time to train and test scale like M*N which is very bad if M ~ N. Finally h() must be chosen in advance and many factors you might want to tweak are actually implicity hidden inside the choice of h() such as the relative scaling of parameters. Most simple Neural Nets are equivalent to SVM's, and the SVM will find better solutions if you can make it behave the way you want.

Another method is local regression. Here the L are chosen to be some regions, and then some sort of standard regression is done on that region, such as linear regression, or splines, or whatever. The regression is easy so the whole problem is the choice of regions. The standard ways are K-nearest-neighbors, K-means, and Decision Trees. These are all pretty solid yet all very hacky in their own way. The big problem is that just like kernels they implicitly rely on a distance measure between points. It's crucial for the similarity of samples to be proportional to distance. With lots of different complicated parameters this is ill defined; you can do thing like SVD or PCA on the paramets and then take distances in that space, but that actually may or may not be good depending on the data. In fact if you knew the ideal distance metric you would have the solution to the whole problem. DT's cut up space to define the regions. With Decision Trees most people just build axis-aligned trees and try all possible splits. This is slow and also ignores the fact that you could get much better splits by trying all possible off-axis splits. Ideally you would use an SVM to pick the optimal split at each level.

K nearest neighbors is pretty simple and solid, of all the methods it seems the least "tweaky" and requires the least a priori knowledge of the data, but in practice it is very sensitive to choice of K, choice of how you define "nearest", and you should probably use a distance-weighting and it will be sensitive to that. As usual these things can only be tested brute force by trial on cross-training.

The choice of distance metric or pre-transformation of the parameters is important, as is possible elimination of useless parameters (usually after SVD). Unfortunately this is basically a hacky trial & error thing and can have huge affects on the model's performance. Also with Neural Nets the exact pre-ops and post-ops you perform can make the problem either much easier or much harder to model which strongly affects performance. Basically if you know a lot about your data (like it basically responds linearly to parameters, or it's generated by independent sources on the parameters, etc.) you can fit it well, but if you don't you will do badly and there aren't good ways to "learn to learn".

Fully Bayesian approaches are much more sound, but are computationally infeasible for anything but trivial models because they basically sum over all possible models & parameters weighted by the likelihood. Basically rather than guessing the params or optimizing them, you give them probabilities and sum on all possibilities. Check out the NIPS tutorial here Basically you correctly consider the model+parameters to be unknown and use the probability that they are the true model.

In general the more modern techniques like SVM don't perform significantly better on complex data than just something like a good local regression. I should add that the truly modern techniques seem to be blend models which are provably good as the number of blends gets large, things like AdaBoost with ensembles of decision trees, etc. It appears to me that these are computationally infeasable except on trivial problems.

Way too much of the literature compares their method to some garbage old method, like plain old k-NN with no distance weighting or outlier discarding or local distance metric. The other big sin is to do comparisons in some really complex domain like image matching where a huge amount of performance comes from how you preprocess the data and take advantage of the specific nature of the problem.

11/03/2006

11-04-06 - 1

So I've read like four books and a hundred papers and now have a strong grasp of collaborative filtering and machine learning. Basically CF is garbage that was made by bad engineers who didn't understand ML. All the true strong modern approaches are more theoretically-sound ML approaches. I should add many people in CF know this and have been advocating standard ML techniques for a while. For example Pazzani has some good papers and one suggests using an SVD->ANN. I don't like the details of his approach, but thebasic idea of SVD->ANN is solid, and just one example of "data reducer"->ML.

Unfortunately even robust ML approaches like SVM are full of unsolved and unsolveable problems which you have to address through "tricks" and guesses and brute force optimization.

Anyway I've decided on my overall approach and believe I'm on the right track. Now I just need my arm to heal so I can type agian. I'm not even trying to code lefty, it's too frustrating and requires too much chording.

One nice online resource is http://www.learning-with-kernels.org/ ; it's a really good book and they put the best chapters online. Chris Burges and Radford Neal also have great tutorials online. I have yet to find really good Neural Net material, there's a ton of garbage on Nets and it's hard to sift through. The Wikipedia pages on all this stuff are good jumping off points, they have good intros then links out to more info.

11/02/2006

11-03-06 - 3

So, I'm getting pretty good at typing lefty. I'm still totally out of commision and going mad from boredom.

11-03-06 - 2

I looked for a secure text editor so I could easily keep my personal/password/financial files encrypted. There are a lot of them, but they all appear to have been written by morons - the keep the file encrypted on disk but the editor uses standard windows edit controls which are trivial to scrape. Even if they called DrawString that would be very easy to scrape. The only way for them to be hard to scrape is if they do their own text drawing, which of course would be easy enough. I bet all those password manager things use edit controls too.

11-03-06 - 1

I'm having a lot of fun learning about "machine learning" for Netflix. I'm working hard at it, and Dan asked a sage question : couldn't you get paid to do work like this? In my experience, no, you can't. You could maybe find a technical engineer job where you do this kind of learning for a few weeks, but then you have to implement it and deal with real world crap issues for the next year. Or you could be a professor where you do this kind of learning, but then you have to specialize and get into some arcane pointless detail; that wouldn't be so bad if you didnt have to spend half your time writing grant proposals or whatever. In theory there should be cool jobs at a place like MS Research, but I've heard tales that the reality of working there really sucks.

10/28/2006

10-28-06 - 1

I urge you all to boycott the ieee and acm. research papers online should be free.

10/25/2006

10-25-06 - 1

I'm seeking reading material since I can't type. Help on :

"supervised learning" , via nnets or whatever, perhaps CART decision trees. find f() to minimize |y - f(X)|.

categorizing/clustering. related to DT problem. how to find planes or rules to split a huge set of N-d points into related groups that minimize some overall cost function.

svm

10/24/2006

10-24-06 - 1

I crashed my bike and have a separated right shoulder. I'm typing lefty so will probably not reply to your email.

10/20/2006

10-20-06 - 2

Anyone know about "expert advice" (learning), combining predictors, etc. ? I know a bit about this field but it's a huge field and sifting through the literature is proving difficult. In particular it seems most of the problems are posed as incremental "games" where you get a time sequence of data and get to see if you were right or not after each guess. Also I'm trying to find Paul Volf's "Switching" paper from DCC98 , but it seems to be only available for pay in the IEEE library. That's especially annoying cuz I think I own the DCC98 book but I have it in my storage locker :(

10-20-06 - 1

So, for basic Collaborative Filtering, the strongest thing from the literature that I've found is "Slope One" . If you think about it for a few seconds you'll realize various ways to improve their algorithm. In the end the whole collaborative filtering problem comes down to choosing a set of supports which you guess are well correlated to your desired prediction, and then choosing weights for each of the supports. Finally you might apply corrections if you can make estimates of the expected deviation.

I now seem to be getting around 0.920 and there still a million little areas for improvement. Every time I check off one "todo" I add five more as more questions are opened up (the vast majority of which are dead ends but need to be explored).

One thing's been troubling me lately - I've tried various schemes and thrown out the ones that weren't as good. Perhaps that's wrong though? They aren't as good over all the data, but maybe they're better on portions of the data, and if I could choose that portion of the data, they would help overall. This was part of the surprise of Volf's compression work - adding in predictors that are much worse overall can still be a huge win if they are selected on the portions they do well on. With CF it's intuitively obvious that you have these similar-item based predictors and similar-user based predictors. In general similar-item does better. However, on certain queries you might be able to guess that they will be more user-correlated than item-correlated, so you can user your similar-user predictor on that case and win.

10/19/2006

10-19-06 - 4

It's interesting running this Netflix stuff. I've got a 3 GHz P4 desktop and a 1.7 GHz PM laptop, both with 1 GB RAM and fast disks. Some of the operations are slightly faster on the desktop, but others are *much* faster (like 2X) on the laptop. A lot of the ops are very memory bound, running over lists of 50k elements and doing indirection from one big list to another big list.

10-19-06 - 3

I just realized that cosine similarity is very closely related to MSE similarity.

Consider two vectors A and B. The "MSE" of their difference is just |A-B|^2, the "rmse" is |A-B|. You can define a scale-invariant version of MSE as (|A-B|^2)/ab (where a = |A|, b = |B|). I'm not sure this scale invariance is a good thing or not, in practice is does weight things to the weightings, but people seem to like it because it's "elegant". Anyway, the Cosine law tells us that :

Cos(theta) = (a/b + b/a)/2 - (|A-B|^2)/2ab

The second term is familiar, the first term is this weird sort of ratio average. In the special case of unit vectors a = b = 1 this reduces to

Cos(theta) = 1 - (|A-B|^2)/2

So for unit vectors a "cosine" similarity and an MSE similarity will produce identical orderings. For non-unit vectors, we have this ratio term. The ratio term is minimized when a=b, so it gets bigger for length differences. In a sense it cancels out the length difference from |A-B|. Consider two parallel vectors of different length. The MSE metric considers these very different, but cosine says they are the same.

In practice with movie ratings there are some very weird things that happen here. The "A" vector is the vector of user A's ratings over N movies *subtracted by his average rating*. This subtraction is important, but it does a weird thing. It makes the vector of random direction (by definition of average), and generally makes it close to zero. If you look at a subset of movies that he rates close to average, his vector will be very close to zero and very random. The "B" vector is the same thing. If you now consider two vectors that are close to {0}, the MSE error between them is of course tiny, but the cosine between them is completely random. Obviously that's not a very sensible weighting. Similarly, consider the "scale invariant" version of MSE. You're dividing by the vector lengths. What that does in practice is make the error much larger for vectors near zero. (dividing by length does sort of work for Cosine because larger cosine = better, the opposite for mse)

Despite all this the "Pearson" correlation for user-user similarity does in fact seem to perform well.

10-19-06 - 2

So out of curiosity I just tossed together a trial run of my rebuilt Netflixxer and got an 0.925 , so that's encouraging.

I was thinking that to have any chance of winning I need to get some team-mates / helpers & use the power of the internet. I don't want to deal with signing people up & working out contracts where we'd have to negotiate shares & so on. I was thinking I'd do something like just give away my app, but make people agree that they won't do their own submission or something. Then I at least might attract some hobbyists who want to play with the problem and they might find some improvements or try some ideas that are beneficial.

10-19-06 - 1

Old Betty Boop Cartoons are like super cool. They're not funny, but they're surreal, the perspective is warping and things are changing shape all the time, and most of them are like music videos, set to a song with everything in the video sort of pulsing and dancing to the tune. A bunch of them have music & voices by Cab Calloway which is the fucking bees knees.

10/18/2006

10-18-06 - 1

I just randomly stumbled upon Matt Mahoney's PAQ data compressor, which perhaps is the state of the art these days. I would say it follows in the tradition of PPMii-PPMZ/Rkive, though he doesn't really cite those as he apparently started from a neural net background which is weird. He's doing a lot of the things Malcolm Taylor invented in Rkive, such as using funny non-linearly-preceding contexts (eg. not just ABCD, BCD, CD, D, but also "xBxD" and "AxCx" and so on). The PAQ implementations that win challenges seem to be tweaked out to all hell, which is sort of lame, but that's what you have to do to win in practice. There's some very elegant stuff he's done. There's a short paper about it on his page but I can't really find a thorough description anywhere where he talks about different things he tried & why he's doing them like he is. Alas. He's doing bit-by-bit coding instead of byte-by-byte which I always thought was much more elegant (you don't have charactes and escapes, just 0's and 1's) but I always got worse performance with bits rather than bytes; I guess I was leaking some efficiency in each coding op which adds up when you do 8X more coding ops.

10/17/2006

10-17-06 - 6

I've noticed two really odd things in the CF research papers so far.

1. They all use this "cosine" similarity measure. The cosine similarity is basically the dot product of the normalized vectors of ratings. What that means is that two movies with ratings like {2,2,2} and {4,4,4} are considered to be identical by this measure. Now, that's an okay thing assuming you're compensating for movie average, since if you subtract the average off both they are both {0,0,0}. However, the standard way of making an item-based prediction does NOT subtract off the average! It's reported in the literature as

Pred = Sum{other items} Weight(this,other) * Rating(other item) / sum of weights;

If you were to correct for averages it would be :

Pred = Average(this item) + Sum{other items} Weight(this,other) * (Rating(other item) - average(other item) / sum of weights;

But that's not what they report.

2. The exception to this (not correcting for average) is the "Similarity Fusion" paper (sigir06_similarityfuson.pdf) which DOES correct for averages, however, they specifically claim that their method in the case of item-only weights reduces to the standard item-based predictor which it in fact does NOT. It reduces to the 2nd term above which is the average-corrected item based predictor, which is quite different.

It seems to me the cosine weighting is very bad if you don't correct for averages, and yet the standard in the literature is to use the cosine weighting and not correct for averages. WTF. The standard "Item-Based Collaborative Filtering" paper (www10_sarwar.pdf) does try using a linear slope+bias to shift ratings between items, but they find that it hurts performance with lots of neighbors or dense data. Weird.

10-17-06 - 5

I had some garlic that was starting to sprout. You can still use it when the sprouts are small, and actually the sprouts are tender and mild, quite delicious, there's no need to cut them out. Anyway, I had too much garlic so I stuck this head in some soil and it's growing like gang-busters; it's shot up big sprouts in just a few days, it's probably the most fun thing I've ever seen growing, because you can almost see it happening in real time. It's next to my computer and I look back over every few hours and it's grown another centimeter !!

10-17-06 - 4

Okay, is it just me or is the "Similarity Fusion" paper completely BS ? (sigir06_similarityfuson.pdf). They initially claim that they're going to combine the prediction from similar users & similar movies based on their confidence in each (which sounds good & reasonable), but then they introduce hard-coded constants and basically just lerp between the two using these fixed constants.

10-17-06 - 3

I don't get why the poker sites give you these freaking rewards for play that you have to spend in their stupid store. I know it makes it seem like you're getting more value, eg. they can give you something with a "value" of $200 when it only costs them $50 or whatever, but I don't get why they don't just give you the option to get the cash value, or even less. Even freaking Wheel of Fortune in the bad old days had the cash option. You'd get your $5000 to spend on "prizes" and you could get all these garbage over-priced things or you could get a much lower "value" choice in cash. Gimme the cash!

10-17-06 - 2

Okay, so I tore apart my NetFlix app and redid some of the basics with more thorough investigations. I can now definitely confirm that most of what's done in the literature is just really wrong and dumb. It reminds me a lot of the way the Compression field was back in the 80's. Somebody came up with some decent ideas way back when, and everyone just keeps using parts of that algorithm even though it was just a rough/poor initial guess. People keep introducing fancier ideas but they keep the broken base. I don't mean to rag on the researchers and make it sound like I'm better than them. They come up with beautiful algorithms that I never would've come up with. But then they just don't try very hard. Like the classic example with PPM was the escape frequency. They tried 1. They tried 1/2. But what about 0.67 ? What about a number that varies based on the context depth & occupation? anyhoo...

Some of the current leaders have finally spoken up in the Netflix forum. They seem to all be using some sort of standard academic bayesian/neural net learning system. This could be hard to beat if they're good & have powerful server clusters to do the training, which they presumably do at universities.

10-17-06 - 1

I'm fascinated recently by the fantasy of super-hot muslim women who have to wear a full burka so no one ever sees anything except their eyes. I think it's replaced my pregger fetish.

10/16/2006

10-16-06 - 2

I just found this set of Good Collaborative Filtering Papers (haven't read any yet). I'll release my Netflix code at some point if/when I decide I have no hope of winning.

So, I've read through a bunch of the literature. It seems like I independently invented most of the same techniques. Some interesting tidbits : I'm currently using 2 similar movies & 2 similar users, while the accepted good # in the academic community seems to be 30 (!!). (using more doesn't increase my run time at all since I'm looking at all of them anyway to pick the best 2). Also, the way they're comparing vectors is generally a dot product, while I've been using like a Euclidean distance. I'm not sure if that will make much of a difference. They also do fudging on the similarity to penalize small intersections and such; I have similar fudging and I've found that the details of those fudge factors are enormously important in practice. I can't tell in the literature if people have really investigated different similarity functions, or everyone is just using the one that was published first and has become standard.

One cool approach is the "Context-Boosted Collaborative Filtering" paper, though it seems completely unusable on large data sets because the first step is turning the sparse matrix into a full matrix by filling in the gaps with content-based predictions. That is, it would fill in the full 17k x 480k matrix of ratings, which is 8 billion ratings, which aside from taking about 8 GB of storage (not bad), would take around 1,000,000 hours to compute.

10-16-06 - 1

So, fucking FoxIt PDF Reader is a lot faster than Adobe's, but it's FUCKING MODAL when it's drawing the page, you can't scroll & zoom while drawing, which makes Adobe more usable in practice because when it starts drawing some ridiculous diagram of the inside of an engine or something I can page-down to get to a page that doesn't take seven years to show.

10/14/2006

10-14-06 - 1

Parallel parking on a hill is so damn hard with a stick-shift. I did it today and I totally burned up my clutch, trying to inch back and forth on the hill without slamming into the cars around me. I've seen people here who do it like pros in spots that look way too small for them to fit. On that note, fucking people who park in the middle of the curb are asses and morons. Also, if you're parking at the end of the curb, so many fucking retards will come up as close to the next car as possible. Dumb fuck, you're at the end of the curb, you should park as close to the end as you're allowed - you're setting the end justifier, don't waste space at the end and just pack the line tighter. Goofs.

10/13/2006

10-13-06 - 4

The car right next to mine got "booted" this morning and it freaked the hell out of me. It's right in front of my window so I saw them drive up in the DPT van and pull out the boot and walk over towards my car. I was thinking "wtf wtf" my heart was racing, and then I saw some other poor sucker get the boot. Phew. Parking is such a nightmare.

10-13-06 - 3

My Netflix contestant is close to Cinematch now, and my program is still mighty dumb. The predictor is quite sensitive to little things and you do have to be careful not to cheat on the probe data, because the probe queries are already in the conditioning set and they can help you a lot in subtle ways. For example, if you let them be included when computing the average rating on each movie, it actually helps a lot. I was doing that and got 0.91 rmse and thought I was the winner, but knew it was too good to be true.

Having the probe data contained in the training set is actually really annoying, because it means I can't fairly precompute very much based on the training set. For example, if you precompute the "most similar" other movie for each movie, you will be using the probe data as part of that, and that helps a *TON* which totally throws off testing on the probe.

There's one case maybe y'all can give me ideas on. It's surprisingly common to have a movie for which I can't find any good "similar" movies. These "red herring" movies wind up contributing a lot to the RMSE score because they tend to be predicted badly. Right now I'm just using the average rating of them as their prediction, but there must be something better.

10-13-06 - 2

In algorithms like this Netflix dealy, something I found back in the compression days is that there's two steps really to algorithm design - first you create a good general structure based on theory of what you think should happen. Then you find lots of little tweaky cases and start doing lots of heuristic "clever" things, and often those sort of finishing touches wind up being huge improvements. This can perplex the algorithm developer in two ways. First of all, you can sometimes have a pretty poor basic algorithm, but you tweak it and do all sort of cleverness to it, and it actually winds up performing really well. The problem is if you try other algorithms that might be much better, they will appear worse because you haven't put all the time of tweaking into them. You can dig yourself into a local minimum where you have all this fancy heuristic junk which really helps your poor algorithm, but doesn't help the better algorithm. The other funny thing that can happen is that some algorithms that are "better" are really hard to do these clever tweaks with. In data compression you have algorithms like CTW which are really beautiful theoretical structures and certainly base CTW beats base PPM, but PPM is intuitive and easy to play with and you can build all sorts of other ideas into it and you can wind up beating CTW because you can isolate the inefficiencies and attack them with various schemes.

One thing I'm surprised at. 25% of movies fall into a category of "super predictable" cases. In these cases, I gave the same rating to the two most similar movies, and the most similar user gave the same rating to the query movie. The RMSE of these queries is still 0.85 ; I would have thought these cases would be more predictable.

Part of the problem with making a really amazing predictor is that the ratings are so discretized. If somebody felt like a "3.5" about a movie, they will sort of randomly shove it to a "3" or a "4" depending on how they feel, but the difference is a whole 1.0 which is big.

10-13-06 - 1

I've done everything reasonably obvious with a linear predictor. There's a nasty trap in tweak factors, in that you are somewhat hard-coding a best fit to the data into your app with the tweak constants. That's fine as long as the data extrapolates well - eg. the fit on the "probe" is also close to the best fit for the "qualifying", but that will only be true if the data's not really strange and your clusters that you fit for are big enough. Any time you fit tweaks that only apply to a handful of elements you are in serious danger of fitting them to the training set too much and not really fitting the general case.

BTW I find the whole "Prize" aspect sort of annoying because it means no one is talking about their approaches publicly. Of course, even in fields where there is no prize, people are still super-secretive, because they always think they have some brilliant idea which is going to make them famous in the academic world, or get them patents and make them rich, blah blah blah.

Oh, I still could use some volunteers to run the heavy process if you have a fast machines that are idle.

10/12/2006

10-12-06 - 1

I just realize that I say "k" for thousands of dollars, when I guess most people say "g", as in "I made 2k today beeyotches!". Party Poker is cutting off US players tomorrow and it was going nuts today. Wildest day of poker in my life. I got super unlucky for a long while there, and was at -1k for the day at the worst point, then went on a +3k heater.

10/10/2006

10-10-06 - 2

Cracked pepper really is way better than ground pepper on steaks and it's very easy to do.

10-10-06 - 1

Anybody know how to make FireFox not do the thing where it incrementally loads & formats as it goes? I hate the way some web pages open and then reformat over and over as more elements load in. I just want it to wait until the necessary info for formatting is loaded and then be done, which IE mostly gets right.

10/09/2006

10-09-06 - 1

So, I have a Netflix contestant that gets 0.978279 on the probe set. That would be on the leaderboard in like 10th place or so at the moment, but it's behind CineMatch and well behind the leaders who are now beating Cinematch (but still way off the 10% improvement needed to win). I'm guessing that the people who have gotten close to Cinematch know something of the standard algorithms in this field and have implemented one of them. LOL I guess that's a good approach. My app is really slow despite fitting all the data in RAM. I haven't run it on the full qualifier set yet, just the probe which is like 5X smaller, and it takes me a full day to run on the probe.

10/06/2006

10-06-06 - 3

I got my first non-trivial predictor working on the Netflix data. It's a simple single support predictor using the one most similar movie that user has previously rated.

RMSE for guessing each movie gets its average rating : 1.051938
RMSE for Netflix' Cinematch : 0.9474
RMSE for simple one-movie predictor : 1.037155

So, that's not very encouraging. Obviously I knew it wasn't going to be close to Cinematch, but the improvement over just using the average for each movie is microscopic, and cinematch is like light years ahead.

I'm starting to think that beating Cinematch by 10% is all but impossible. It's a lot like data compression where the closer you get to the true entropy the harder it is to make advances. The Netflix Prize FAQ justifies their 10% criterion by saying the difference between the "average" predictor and Cinematch is about 10%, so they want 10% more. That fails to address two major factors : "average" is actually not an awful predictor at all, and the next 10% is way way harder than the first 10%.

10-06-06 - 2

Damn, I just found out about Sufjan Stevens playing in Berkeley. He's a corn-fed god-loving hipster music magician!!! The shows are sold out and people are scalping them for a fortune :(

10-06-06 - 1

I allocate two 300k buffers and Windoze says my app is using 480k of memory !? WTF !? I have plenty of RAM free, is it putting part of my allocations in the page file? When I pull the files in with Memory Mapped Files, I'm not sure what's happening. It all seems to work cool, but I'm very suspicious about what's happening. I wish it would just use up all my damn free memory on the app I'm running !!???!!!!

Anyone know anything about Memory mapping? Is there a reason I should memory map instead of just reading the whole file into big buffers?

Also, does anyone have a powerful machine that I can run a heavy process on for a long time? I estimate it will take about 200 hours of CPU time, 2 Gigs of RAM is necessary.

10/04/2006

10-04-06 - 2

Random job ideas :

Postman. Apparently very hard to get. I like walking around
Parks worker. Similar situation, I like planting plants and such, being outside
Apprentice Carpenter. I've seen some adds for this; I have no skills but would like to learn. I could offer to work the first few weeks with no pay
Bike shop retail or repair. Again my bike repair skills are only passable not expert, but I'd like to learn.
Cook. I'd love to be a chef but that's a long hard road and being an entry-level prep cook or something is pretty brutal
Other ?

10-04-06 - 1

I'm assuming it would be a good thing to load the Netflix Prize data into an SQL DB like Postgre. The thing you want is to cross-index; for each movie you want the list of everyone who's rated it & their ratings; for each user you want all the ratings they've assigned to movies. You could do this easily in C just by having two linked lists on a {user,movie,rating} data item. The only reason for me to not just do it in C is that it's a ton of data and might not fit in memory. Plus I guess learning SQL might be useful some day.

Anybody who knows Windows - what's the best way to hold an 800 MB data structure on a machine with 1 GB of RAM ? I'm assuming if I just hold it in RAM I'm going to page like crazy and get killed, cuz Windoze is Stoopid. I guess I could write my program in basic C and boot to command line Linux or something ridiculous like that but that's not fun.

10/03/2006

10-03-06 - 2

The Netflix Prize is pretty interesting. Basically they're trying to get someone to improve their recommendation algorithm and they pay you if you succeed. It seems they set the payment goal to be inaccessible, and their T&C means even if you don't reach the goal they own your algorithm. Anyway, I'm gonna check out the data set and see if I can do some mining and see what happens.

At the moment the site seems to be a mess. The documentation sucks. The forums are full of people who don't know how to program asking nonsense questions.

10-03-06 - 1

Dick Fucking Cheney is hillarious. They got the timing with the body language really well sync'ed. Also Pacino's Cuban accent is so lolololo.

10/02/2006

10-02-06 - 3

Okay, i'll summarize the online poker legislation and what's going down for anyone who cares.

The new bill was tacked on the "SAFE ports" bill by Bill Frist primarily. It will soon be signed and go into law. Basically what it does is makes it illegal to provide online gambling or transactions to online gambling. It does not make it illegal for an individual/consumer to partake of said online gambling. Offshore sites will continue to operate. It will be illegal for US banks or other funding instruments to provide transactions with them, so the hard part will be getting your money in & out of them, but of course there will be ways. Another problem is that major publicily traded gambling companies will be shutting off their US customers because of this. This is a bit of a funny thing, because they're foreign companies they aren't directly affected by this law, but they have to comply with it if they want their stock traded in US markets, and so on and complicated stuff I don't really understand. Anyway, it seems all the major publicly trading companies will soon be shutting off US customers. That includes PartyPoker/PartyGaming, PokerStars, 888 (BetonSports), etc. There are other major private companies which will continue to allow US customers, the biggest being Full Tilt, Ultimate Bet, etc. While the law will go into affect immediately, the bank transfer prohibition won't go into affect into the bank regulatory body draws up the detailed regulations, which will take a while.

10-02-06 - 2

My sister's NYC pilates (plus) studio is now open; linky . She's been teaching pilates and studying the body/wellness for a long time. NYC is one of those unique ecosystems where you have all these super-rich people and then you have a whole class of semi-rich people that feed off of them by providing them services/treatments. It was a huge investment to get the business all set up, I'm impressed & glad.

10-02-06 - 1

"The City of No Limits" was really good. It almost felt like it could've gone more surreal and turned into a Borges story. There's a wonderful tradition of surreal movies from Spain and Latin America, things like "Sex and Lucia" , "Abre los Ojos", "The Devil's Backbone", etc. - movies where the narrative gets lost, we're not sure if the characters are dreaming, crazy, or if it's really happening and it's the rest of the world that's not seeing it.

10/01/2006

10-01-06 - 2

I just realized my domain should've been "rles.com" Do you see why?

10-01-06 - 1

I'm having a bad downstreak in poker and I'm probably gonna have to sell some stock. In the mean time I've been pondering what it's like to be broke. There are so many brutal expenses that I just sort of roll my eyes at, but if I was truly broke working a minimum wage job they'd be cripling. That extra $500 the hospital charged me even though I have insurance, the $100 in traffic tickets for bullshit non-violations, what do you do if you just don't have that money? I guess you don't pay it, and then it adds up with fees, the creditors come after you, and your life goes to shit.

9/29/2006

09-29-06 - 1

Went to the Bike Film Festival linky . It's pretty awesome; Lo Fi crappy video and audio, but I love the rocking bike films. I might go to another one tomorrow to see some of the other stuff. Bike = Love.

I almost got a ticket today cuz I forgot to move my car for the street sweeping. I saw the little meter maid guys swoop into the street ahead of the sweeper, dropping tickets like bombs. I was playing poker in my pajamas and had just open raised my AK (fuck! AK = monies!), I scrambled to find my keys, then almost ran out without my house key (bad news, doors auto-lock, locked out, no fun), ran out and got to my car just as he was putting a ticket on it. Fortunately the guy was cool and took it off for me. Fucking street parking is a nightmare.

Some new developments mean the online poker ban might pass after all. I guess I'd have to get a job of some kind pretty quick because my finances aren't so hot these days, I need a regular income.

Late news - yep, the online gambling ban passed. It's not actually law yet, but it got tacked on the port security bill which is going to be passed for sure. On the plus side, I didn't actually make my big stock bet against the bill by buying Neteller or something. I'm sure Neteller stock is in a nose-dive now.

9/27/2006

09-27-06 - 1

Crab season in SF starts November 15. Apparently they fish the hell out of them and the stock is depleted by Christmas. After that you still see "fresh crab" sold on the market, but it's not local, or you see "local crab" but that was in deep chill. So, it'll be a month of gorging on all the crab I can get from the great Sun Fat.

9/26/2006

09-26-06 - 2

Not all open-ended straight draws are the same. I've talked about a few cases in the past but there are some really common ones that are very strong differences.

1. When hitting your draw can complete a higher one card straight. For example if you have something like 78 and the board is 9TQ. It looks like you have an open-end straight, but hitting a J is not great because any one-card K is a higher straight. Your draw really sucks in this case.

2. When hitting your draw makes a one card lower straight. For example if you have AT and the board is 9JQ. If you're up against another T and you hit a K, he will also have a straight, but you'll have the nuts and likely get paid off. In this case your draw is better than a normal straight draw because your implied odds are very good.

09-26-06 - 1

Fuck everyone, you're all a bunch of douchebags. ps. Bill Clinton is such a fucking bad ass, if I was a White House intern I woulda sucked his cock.

In related news, for those who don't know, ESPN's coverage of WSOP is a ridiculous distortion of reality. It's just like Fox News or some other agenda-based "news", they're trying to tell some story and they pick and choose bits of the truth and create characters and tell the story they want. Just for example - early on they showed Negreanu playing well. In reality he was playing a wild loose game, his chip stack was going way up and way down all the time; ESPN mainly only showed the hands he won which makes him look great, but he donked it up horribly in tons of pots. The other huge distortions are Jamie Gold related. Jamie was being a major ass and bluffing a LOT at the table and they mainly don't show it; he also didn't give any money to charity.

9/25/2006

09-25-06 - 2

It's really amazing how people can tell they're being looked at. I sit in my window and look out at the street; I'm hidden behind my monitor, the drapes, and a big potted plant, and yet people 100 feet away on the opposite side of the street will almost always look right back when I stare at them.

09-25-06 - 1

The OS should have more user-specified options for apps at the OS level. For example I should be able to prevent apps from stealing focus one by one. You should be able to select an app and pick "OS Options" and you should get "Sound level 0-100%" which modifies the apps sound, Popups on/off which prevents it from popping up windows, steal focus on/off, as well as lots of security-type options like "allowed to write disk", "allowed to send network" etc. WTF this shit is so basic, how can I not have this.

9/24/2006

09-24-06 - 3

Amazing breaking news in David Brooks column from last weeks NYT : human behavior is largely genetic, governed by our evolutionarily adapted behavior patterns and the chemical balance of hormones. Basic urges and behavior tendencies are largely animalistic, and differ between men & women, & races. Holy crap! In related breaking news : most humans are fucking morons who think the most obvious and intuitive things are worth writing books and columns about.

ps. I've noticed a trend recently which I find quite sickening. There are more and more books being written which are basically one-sentence concepts padded out to full book length. Nobody actually reads these books, the whole point is so that the author can go on talk shows or write newspaper articles and be known as the "author of such and such". Somebody might write a book called "How College Killed The Family" about how education reduces marriage rates; one paragraph of information padded with life stories and such garbage, then they do the talk show circuit where they just say their one sentence over and over, and are basically used as a springboard for the host to show their own feelings on the subject. I should write some of these books and just fill them with blank pages, that way I can be an "expert" and spout my nonsense.

old rants