Old Rants 4
The older rants are semi-regularly moved off this page. You can always read the old rants here (or here or here ) if you're a masochist. You can see some of my photos at Flickr .
I have found a way to get videos uploaded though. This seems to be the best process : log in, and go to My Account and click on My Videos. This will trigger a "confirm password" screen. Do that and click the confirmation link in the email. Okay, now do NOT click Upload. Instead click My Account again, click My Videos, and click "Upload a video" from there. You should be able to proceed now.
WTF.
I took this picture at market today :
image
Fuyu persimmons to the lower left, Hachiya
to the upper right
I have leftover Panettone so I'm going to try making a Panettone-Persimmon bread pudding tonight.
That is in fact a noticeable difference and if your diet is *extremely* clean it might be significant to you, but for the average person another 50 Calories of fat is a drop in the bucket. The NYT did a similar comparison but based on 1 oz servings which is totally retarded, it's similar to what "Pam" does in order to claim to be "fat free". The amount of fat is so small it rounds down to nothing.
8 oz Dark meat turkey has 16g of fat. The minimum you should eat per day is around 25g. My goal is to eat 60-80g of fat per day. BTW the proper serving size for someone who's not bulking is 3-4 oz.
Another thing I've learned is that city people have way more sex. I think San Francisco is probably even well above average in the US in this regard, but it's just a sexual playground. People move here and go nuts. Not only is there the anonimity of numbers, there's a straightforwardness about it, people are too busy to mess around with dating, they go straight for the kink. In SF there's the added idea that anything goes, there are tons of membership sex clubs here. So many people move here for an "adventure" and the most adventurous thing they can think of is having a threesome.
Anyway, this reviewer pissed me off :
Ultimately Hitman is about bullets, blood, and bombs. For die-hard fans of the videogame, there is much to relish in terms of cobblestone car chases, punishing fistfights, cool weaponry, impossible physical feats, and ear-popping gun battles that rage through exclusive hotels in exotic locations.
Yeah, we like videogames with lots of action, therefore we will like movies that have nothing but action. Nevermind the fact that you aren't actually doing those things when you watch a movie, which takes away the whole fun and immersion of the violence. Maybe they should make a movie based on Unreal Tournament. All they have to do is put in tons of shooting and respawning and it will be a favorite of video game fans! Or they could make a movie about Chess and just show nothing but pieces moving around the board. I mean, people who play chess just see the pieces moving, who needs stories or characters in the movie!? If you have no clue WTF you are talking about then just shut the fuck up.
To make it worse I didn't sleep at all last night, as has been happening often lately. I went to bed around 12. At 1:30 some people coming home from the bars walked by outside, some guy was on his cell phone. At 2:30 Dan came to bed (she falls asleep on the couch a lot). At 4:00 someone in the building went in and out; I think they were going to catch a plane, I heard roller wheels like luggage. At 5:30 the garbage truck came down the street, which has horrible loud beeping on top of the loud sound of the arm lifting garbage cans. At 8:00 Dan started getting ready to go to work and I realized my chances to get a little sleep were all past.
Plain roast pumpkin is really delicious. Scoop out all the pulp, cut into moons, rub some olive oil on, salt & pepper, and roast in the oven for 30 minutes or so, just like a butternut squash or something. Finish with a pat of butter and maybe a drizzle of honey or a tiny dash of nutmeg. Roast beets and roast brussel sprouts are also easy to do in a similar way and go great with thanksgiving.
Grilled polenta is a really convenient thing because you can make the polenta the day before and just grill it at the last minute. I recommend using a spring-form pan to cool the polenta in, it makes it really easy to pop it out and cut nice perfect wedges to grill. Coat very thinly with OO before grilling. Use a vegetable peeler to cut flakes of parmesan to top each wedge.
Make a cranberry gastrique instead of regular cranberry sauce. Combine 1 cup sugar, 1 cup cranberries, 1 cup red wide vinegar + 1 cup red wine. Boil then reduce to a simmer for 20 minutes. Mash the cranberries. If it's not thickening enough you could add a cornstarch slurry. Of course you can add whatever other flavor elements you want; some standard would be a bit of orange rind or some ginger. If you want it chunky you can serve just like that, or you can blend some of it or all of it. You can also strain through a mesh strainer if you want it really smooth. It should be bubbling and syrupy when you take it off the heat and it will thicken more as it cools. Oh you can also finish with butter if you like.
BTW it's much easier to understand with something like the 80's extreme punk culture, where the elaborate costume is partially a form of protest, but also a way of peacocking to other punks to show your coolness.
I also don't get people who can actually write serious programs in less than a day. I hear people say "I wrote a jpeg library in about a day" or "I wrote this seam carver in about a day". WTF? Really? I can only assume they're either lying or they're super geniuses. Even back in my youth when I was crazy fast it always took me a week or so to write anything serious. Maybe I'd getting working in a day but it would be totally buggy and nonfunctional, then after 3 days I'd realize I did it wrong and start over, and finally rest on the 7th day.
On a semi-related note, we saw "Mirrormask" recently which is the same sort of horrible super-fake-looking CG, but it's way way better. For one thing, the designs are not supposed to be realistic, the characters are in a dream world and the designs are all the wild stylized Dave McKean stuff, which is what makes the movie worth seeing. I found the story and acting to be pretty juvenile, but Dan thought it was an accurate depiction of the struggles of a teenage girl. The backgrounds are totally flat and the characters look like they're standing on a page - you have to sort of pretend that's what's happening, it's almost like they stepped onto a comic book and are standing on the pages. Okay, it's still bad bad bad but it's not as bad as something like "Beowulf".
Zemeckis I guess likes to work with technology; he did Polar Express and Roger Rabbit, but if you look at his oeuvre it's evident that's he the master of semi-pleasing unremarkable pop fluff. Most of his movies are sort of enjoyable, but not at all risky, have no emotional connection other than cheezy sentimentality and don't say anything about anything. I didn't like Forrest Gump at all, so I guess "Back to the Future" is his best movie, which was quite enjoyable, but you could go back in time and prevent it from being made and there would be absolutely no bad consequences.
BTW I noticed the credits for Mirrormask actually credit each of the technical artists specifically and even says what each one did. I don't think I've ever seen that on any other major CG movie, it shows a lot of respect for the artists.
Mafia/Werewolf game that everyone loves right now. The code for this is so trivial, it's almost totally played just over voice comm. But it would be cool to have the xbox faccilitate the rounds and the day/night and randomly assigns everyone's secret identities, does the voting, lets the seer act, lets the werewolves talk at night and just turns their mics on, etc.
Army vs. Terrorists game. Team "shooter" trying to capture the dynamic of Iraq. One side is a squad of like 4-8 guys that's like the US Army - they have totally superior weaponry, night vision, money, whatever they want. The other side are the terrorists and they have a specific mission to accomplish, the Army side doesn't know what the mission is. It's always played on the same decent sized map, but the mission is random, it might be blow up a mosque, or assassinate a diplomat, etc. there are various sites around the map. The terrorists big advantage is they look just like the civilians and there are tons of civilians wandering the map. So the army guys basically have to wander around the map looking for suspicious behavior, maybe they can also leave decoy targets or decoy munitions to try to lure the terrorists; once they actually figure out who the terrorists are or what their target is, it's pretty easy for the army guys to take them out. Somebody must've done this already but I've never really heard of this dynamic existing in game, it seems like most people who do Army vs. Terrorists just make standard shooters with different graphics.
I really liked "Il Posto" too. (not "Il Postino"). It's of a similar style, like an eye on life, but it's contemporary with when it was made which makes it rather more realistic; it's the better movie of the two I suppose, but the depiction of the dehumanization of modern society is a little painfully close to home. It's much more fun to watch peasants in the countryside and pretend it would be a lovely way to live despite the crushing poverty and hard work.
Unfortunately, the dictatorship of Chavez will be held up as an example of failed populism (it's not) which will help the causes of all those in the US who are against real change in the Americas. Just as an example, he's being used as an argument that "nationalizing oil is bad". That's totally retarded, nationalized oil profits make perfect sense, and just about every single country in the world with oil does it (the US is one of the very few exceptions - our government gets relatively $0 from oil under our soil, and in fact the very small amounts that we take from oil companies often go unpaid as found by the GAO). Many companies have nationalized oil companies and run them just fine; others have private oil companies but take some large chunk of their profits which also works fine.
Grafica Obscura old SGI graphics articles by Paul Haeberli ; some really neat fun stuff here.
Paul Phillips Blog is just kind of scary cuz the guy is a bit too much like me. At OW when the poker boom hit we all sort of hated Paul as a TV character cuz he was such a Silicon Valley stereotype; he got lucky and cashed out and became a maverick with colored hair and sort of geeky personality. I'm definitely just jealous.
I found this Ask a Scientist thing. Wow, I was so excited, it looks so promising! Then I read some of the physics ones (which I have some expertise in) and found the answers to be both condescending and uninformed. In fact their big thing about Google on the main page is really hillarious and a good example of all the content.
This page on Tone Mapping is okay and has a decent references section.
Lost in the Static is an interesting experimental game. My eyes can't handle it, but I like the idea.
Also, browsing to a web site and having it play audio is fucking completely unacceptable. To stop it, 1. get flashblock . 2. put this in userContent.css :
/* block embedded sounds */
object[data*=".mid"],embed[src*=".mid"] { display: none !important; }
object[data*=".mp2"],embed[src*=".mp2"] { display: none !important; }
object[data*=".mp3"],embed[src*=".mp3"] { display: none !important; }
object[data*=".mp4"],embed[src*=".mp4"] { display: none !important; }
object[data*=".wav"],embed[src*=".wav"] { display: none !important; }
object[data*=".wma"],embed[src*=".wma"] { display: none !important; }
I guess .ogg should be in there too.
Some of the tasting rooms are legitimately nice, but I prefer the tiny shack on a hill in the middle of a real vineyard over these ridiculous Disneyland like constructions with fake stones and waterfalls and all that nonsense. At Wolff in SLO you could taste outside on the terrace on the hilltop over the vineyards which is pretty ideal. Outside (nature) = good; inside (man made) = crap.
Personally I have much more fun buying a wide selection of $4.99 wines from Trader Joe's and carrying them all out in the woods, drinking them all and jumping in a river.
For comparison, test driving sports cars is really fun, so is going to high end audio shops and listening to their gear; both of those would make excellent weekend activities except for the fact that you have these horrible salespeople with you the whole time who are totally condescending and pushy.
x * ( a + b * x ) / ( 1 + c * x + d * x * x )
As x -> 0 , this is (a * x) ,
As x -> inf , this is b/d , then you have some other parameters to play with shape.
(a) of something like 6 to 16 makes sense. The slope of sqrt or other gamma functions goes to inf at x = 0, but if you look at the actual slope of a discrete 1/255 step it's just very steep.
(b/d) of 1.0 to 1.5 is best. At 1.0 you never get white until infinite intensity which is not ideal (you can see that in the basic rational exposure modes of floatdd). Something above 1.0 means you hit white somewhere sooner (you can work out for what x exactly you hit white and formulate it that way if you want). Hitting white somewhere around x = 3 or 4 feels good to me.
Here's some funny stuff about Kernel page zeroing and COW that sort of does something like this, but is not ideal.
Many of the deductions are designed to motivate certain good behaviors, but I believe that doesn't really work. Rather they just motivate people to find ways to save on their taxes and don't actually lead to good behavior. This is because they're too specific which leads to "I can do this to save on taxes" rather than "I need to behave differently to save on taxes".
A classic example of this is the hybrid car deductions (or solar panel deductions, or energy efficient appliance deductions, etc.).
The problem with these deductions is they are sort of one time things that allow rich people who can afford them to do something and get some bonus money. While it does have a certain small positive effect, it's not nearly the effect you could get through actually motivating people to do the right thing.
So people with hybrids get deductions, but people who carpool get nothing. Same with people who just don't buy a car and use public transit or bicycle. People who choose to live closer to work get nothing. And people who own 3 SUV's and also a hybrid get the deduction. Clearly the money is not reflective of benefits to emissions at all, and conceptually knowing that the hybrid deduction is out there is not a thought in people's heads which affects their day to day behavior. (it may affect their car buying choice, which is the small positive effect, but it doesn't encourage them to not buy a car at all, and it has this bizarre nonlinearity)
The best way to do that is through the capitalist system, where people can look at prices and make decisions. The problem is that prices do not reflect the true cost of things, and the government should logically step in to remedy that.
In the case of emissions, you have the ideal method - gas tax. Not only is this the ideal motivator, it's only a fair reflection. Gas taxes should pay for all the highways, bridges, vehicle testing, oil pipelines, foreign expenditures for oil, as well as the estimated long term future cost of cleanup due to emissions and other waste. This lets people see the true price and make a logical decision. The republicans weill say "but the taxes!" , well of course you can lower the income tax by the same amount that you take in, so there's no total change. The question of how much total tax you should take in is separate from the question of from where you get it. Anyway, regardless of the fairness of the charge on the gas tax, it's the best way to motivate conservation.
It's hard to think of any deductions in the tax system which are actually beneficial to the country and wouldn't be better served as fair usage taxes in a more capitalist pricing model.
You get the same thing on bigger scales with corporate tax breaks. Rather than motivate good behavior, they generally just provide loopholes and pork (free money) for specific companies that figure out how to capitalize on them. You would get much better results from using a market-based charge system. The goal should be to motivate companies to do the right thing on their own, economic benefit should correspond with national benefit. If for some reason they can't, they should be able to choose not to and just pay the price if that makes more sense. That price should be set high enough that the populace is willing to accept that payment in exchange for their bad behavior. If you think about that way, that price should be very high. How much money should a company pay to cut down a forest or blow up a mountain, or destroy habit? Every company that uses electricity is playing a small part of that.
Other obvious cases I've mentioned before are the fees charged to mining and drilling and logging companies which are not close to covering their actions & not close to motivating conservation. Another obvious one is the cost of water. Not only is water ridiculously subsidized across most of the US such that the cost of water doesn't pay for the infrastructure that delivers it - it should not only cover that but also be expensive enough to balance the environmental damage due to using that water and motivate conservation.
I don't mean to use Europe as an example of a place that gets it right because they certainly screw plenty of things up, but you can see the difference in behavior of everyone when prices are motivating. In many countries in Europe not only is gas very expensive, but so is power and water, and everyone just gets in the habit of conserving - people turn off lights when they leave a room, they wash dishes with the minimum of water, they reduce driving as much as possible - it just becomes part of your daily living, which the US system of tax breaks doesn't accomplish.
Of course this is likely to never change in the US because "tax break" sounds good while "gas tax" sounds bad, even if you adjust the overall rates so that the total tax taken is reduced, you'll get destroyed on the soundbite news programs.
The flash ("SSD") hard drives coming out now are very exciting; they seem a tiny bit too early to jump on just yet, but in a year or so they should be big and fast (64 mb is common now and bigger is available but the prices are still insane). Better read speed is sort of meh, but the super fast seeks are awesome (of course using all this hard drive terminology is kind of silly, there isn't really a seek). Best of all is the silence. Ah the sweet silence, and lack of spin-up and spin-down sounds and delays. Also the reliability is pretty appealing to me. Dealing with hard drive crashes is not fun. Oh yeah and they're very small and low power so they are awesome for notebooks.
On that note Intel's 45 nm (and smaller) cores are also killer for notebooks; we're going to have some super sweet notebooks in 2008. I don't know what's up with GPUs but it looks like powerful GPUs might be the biggest energy draw and heat generator in 2008.
On the flip side the "Hyperdrive" RAM hard drive thing is totally retarded. Taking a bunch of RAM and segregating it off and calling it a "disk" is just a freaking ram disk that you can do in software, or not do! There should just be more RAM slots on the main board and a battery backup so it's persistent.
Anyhoo, the only thing it really does do is let you use a different strong password everywhere you go. That makes you secure from leaky sites spoiling your entire security. So one of the sites you go to is corrupt or just incompetent, they can't get to all your other sites. What with having money on poker sites of dubious integrity, that's a pretty useful protection.
Unfortunately that still doesn't protect you from the retarded fucking banks which seem to just lose hundreds of thousands of records on people all the time. It's so retarded that you can't change your social security number. You should be able to get a new one once a year. The government would keep a record of who corresponds to what numbers, but would only provide those records to law enforcement. Similarly with drivers licenses and credit card numbers. And anyway WTF why do I need all those different numbers, just one number is plenty. Being able to change it once a year severely reduces the risk of identity theft, and also makes it easy to catch them when they try to use someone's old data.
I've looked a little at the ASM output form the VC intrinsics and it looks pretty good; the compiler will do reordering and all that good stuff for you, so dumb assembly like this should pretty much be written with the intrinsics and let the compiler do the little stuff.
We want a function like 255*(1 - exp( - C * x )). For x = 0 we output zero, and we get 255 as x -> inf.
We can make this match the gamma curve for low x. Again just assume gamma = 2 and match against sqrt. When you do the integral to optimize C, you get an error function which you can't solve analytically so you have to do it numerically. I just ran rough numbers and got C = 2.69 which is awfully close to "e" (2.718) so I wonder if I did it more precisely if I would actually get "e".
Anyway that's not what we really want, cuz the exposure for large values is very different. We really only want to force them to match for the small values of x. If you optimize for the low value of x you get C = 3.0 almost exactly. (again we're integrating in steps of sqrt(x) not in steps of x).
So our combined gamma + exposure function is :
255*(1 - exp( - 3 * x ))
I have no idea if this is actually cool, I haven't tried it yet or anything.
Won says a more common tone mapping form is x/(x+C). The optimal C for matching sqrt in the low range is around C = 0.25 This form is actually a better match for sqrt in that range, but has the disadvantage of being pretty far off 1.0 when x is 1.0 (it's only 0.8, unlike the exp form which is 0.95).
Both of these forms are actually pretty shitty for very low x which is pretty bad. They do a bit better if you use e^(-4*x) or x/(x+0.2)
BTW the "Reflection" method I'm talking about is an "imperative templated visitor" system. It's probably easiest to look at the code in cblib to tell what's really going on. Note that there's absolutly zero code to implement the "Reflection system". It's simply a policy for client classes that want to be reflected and for the functors that want to visit them.
First of all, if your metadata system is designed well it's about the same amount of work for the client in either case. In an autogen system you have to comment the members with whether they get metadata or not. At the end of the Oddworld system we had nice macros to just list all the members and it would create the right metadata through template type detection. The reflection system is about the same, you just call reflect on all the members the template finds the type.
Basically the reflection system will have client code that looks like this :
templatevoid MyClass::Reflection(T & functor) { REFLECT(showControl); REFLECT(controlgraphic_x); REFLECT(controlgraphic_y); REFLECT(showMucks); }
While the Metadata system will have client code that looks like this :
START_METADATA(MyClass) METADATA(showControl) METADATA(controlgraphic_x) METADATA(controlgraphic_y) METADATA(showMucks) END_METADATA()
In either case you could also add info about valid ranges and descriptions and whatever else extra markup junk you want to add.
So, what's the difference? There are two issues. One is how do you add a new type to the system, and the other is how do you handle weirdo nonstandard junk in your marked up classes.
Adding a new type in the description-based system required me to make a new metadata type for that class, or to somehow tell the system that it's the same as some previous type so you can use that description. Using templates here is an advantage already because it will autoconvert for identical types, as opposed to like a parser-based system that will struggle, but data-based or reflection-based can both use templates. Also in either case if your system is good, you should generate a reasonable compile error when you try to metadata or reflect a type that isn't supported. Actually that seems to be pretty much identical.
The big difference comes from nonstandard iterations. The "standard" case is that your class is just a bag of other types, and you iterate over each of those members and call the functor on those members. Of course reflection and metadata are identical for the standard case. The nonstandard case happens when you have some nonstandard junk.
The cool thing about the reflection system in this case is that it's "imperative" ; in Casey World we would say that the reflection way is "immediate mode" and the metadat way is "retained mode". Basically this is cool because it lets us interject code right into the member iteration.
For example you can do conditionals, like :
templatevoid MyClass::Reflection(T & functor) { REFLECT(isAngular); if ( isAngular ) { REFLECT(angle); REFLECT(radius); length = width = height = radius; } else { REFLECT(length); REFLECT(width); REFLECT(height); radius = (length+width+height)/3.0; angle = 2*pi; } }
Of course you can do stuff like this in the metadata method too but it's messy. Also, the derived-data type of fixups are normally done in a metadata system with "Finalize" type of call. The problem with that is that it's done after the metadata iteration is all done, which means that you are temporarily in a state where it's not fixed up. With the imperative method, you can fix derived data and then immediately be using it for the rest of the iteration.
For example, say you own some little other class that you don't want to bother to mark up, you can just reflect its members :
templatevoid MyClass::Reflection(T & functor) { REFLECT(m_ptrData->x); REFLECT(m_ptrData->y); }
Basically you can do whatever you want because it's just code. More than anything, that freedom just feel liberating. You're no longer locked into a system where you "must do it like this" for it to work.
Oh yeah, the big disadvantage of the Reflection way is that it has to be in the header. IMHO that's not so horrible. It's no worse than having the members in the header. If you want to hide the members you have a pImpl thing already, or a derived class, or whatever. So you have the members and the Reflection there with the pImpl. Now, you can't get through to it with arbitrary template functors, but you can still get there with specific calls passed through a concrete class dispatcher. Anyway, an advantage of the metadata method is you can iterate around in peoples' data without even seeing their header, in fact it provides a whole alternative way to do linkage, such as named variable access if you want to go down that route (I don't approve of that).
In fact you need that dispatcher anyway so that when you call Reflection on a parent class it will get passed down to the derived class. This doesn't work automatically in C++ because you can't do virtual template functions (yuck). So you have to have a virtual that will get you down to the most-derived type. You can see such a thing in "Prefs.h" in cblib. (there are different ways to do this too if you want to do more of an RTTI type of thing with a description of the classes).
The basic approach of the trained image doubler works like this :
The goal is take an image I and pretend it was created by downsampling it from an image of 2X the res, we'll call it 2I.
Of course there are many images 2I that when downsampled would produce I. Of those many possible 2I images we want to choose the most likely. To define "most likely" we assume that all images are generated by a statistical source.
So, how do we model this statistical source? We simply gather a big library of images {L} and say they are likely to come from the universal image source (UIS). For each of these images we have an example "doubling", we say that the downsampled image (L/2) when doubled should be L.
So we have this huge space of training samples, { L/2 -> L }, and we basically want to find our image I in that space and interpolate. That space is way too big and too sparse for this to ever work, so we make the assumption that the UIS is *local* and also *unoriented* and also *relative*.
Local means that a pixel's probability is only affected by it's neighbors. In practice we'll use the 2-ring (the immediate neighbors and their neighbors).
Unoriented means that if you take a neighborhood and flip it in X or Y or rotate it 90 degrees, the probabilities are the same.
Relative means that if you add or subtract a constant value to the whole neighborhood it doesn't affect the probabilities.
Now, all 3 of these assumptions are in fact obviously wrong. Locality is obviously wrong because images may have repeated features, like a wallpaper pattern, and obviously having the same pattern in another part of the image far away affects the probabilities in the repeated area. Unoriented is obviously wrong if you just consider images of text that obviously treat X and Y differently, and even in photos they are much more likely to have the horizon line horizontal. Relative is also obviously wrong when you get near the neighborhood of 0 and 255 where you have clamping; perhaps logarithmic-scale infinite range images would be close to being "relative" but real images obviously are not.
Regardless, we're going to use these 3 assumptions (as do almost all image transform algorithms). Furthermore note that we are NOT assumping *scale* independence, either in spatial scale or value scale. That is, we are not assume that you can multiply a neighborhood by a constant and get the same result, nor are we assuming that if you zoom out and take a wider set of neighbors you will get the same result.
Anyway, using these symmetries we can now create a much denser training set. Instead of using a whole image from the library {L} we take a local neighborhood of pixels N (the 2-ring) around each sample in L/2. We put the neighborhood into canonical form. First subtract off the average of the neighborhood, this removes the constant offset. Then flip in X and Y until the values are growing in the +X direct and in the +Y direction. This orients all neighborhoods in the same way.
This canonical form of the neighborhood now predicts a certain doubled pixel, this makes up the training set {N -> L}. Again the procedure is simply take the image you want to double {I}, form the neighborhoods in canonical form, look them up in the training set {N} and interpolate between the closest ones you find. Once you find the prediction, you take it back out of canonical form, putting the right local offset back in to create an output pixel.
In practice how do you do this interpolation? Neural Nets would work fine. So does a pure dense sample search like k-Means where you have a distance metric to find samples. Perhaps the best way is a Support Vector Machine (SVM) which is precisely designed to be ideal for this type of work; all of the neighborhood samples {N} are the support vectors and you can optimize for a desired machine size (which is equivalent to the sensitive to noise in the training samples).
How does this ideal doubler work differently than any fancy filtering algorithm? First a little review. Normal image filters work by creating a linear combination of the local neighborhood. Any rotationally-symmetric filter can be decomposed into the product of two 1d filters, which is what everyone does (* actually that might not be true, needs investigation), so you can work first on the rows then on the columns. It's an inherent problem of sampling that you cannot create a filter which is ideal in terms of "ringing" and "blur" - you either have to tolerate one or the other. I'm not really going to get into this right now but it's an interesting topic with lots of papers on it.
So the first thing that the trained doubler can do is make a per-pixel decision about what filter to use - a more blurry filter or a more ringy filter. (of course it isn't explicitly making this decision, it's just finding neighborhoods where the training set L/2 -> L either looks like a blurry upsample or a ringy upsample).
But the trained doubler can do more than that. It can see patterns in the downsampled image which typically come from hard curves of various types in the higher res image, such as hard diagonal stair-steps, or even rasterized circular curves.
BTW the old-fashioned style image doublers work by explicitly looking for these types of patterns. They basically work by assuming that all neighborhoods of an image are either smooth (locally polynomial) or a hard edge of various types (horizontal, vertical, diagonal 45, diagonal 135). They best-fit the neighborhood to one of those groups and then use a different anisotropic linear filter for each case. This is how the old DPCM / CALIC image compressors work and how Wm Withers' "Augural Image Zooming" worked. These semi-heuristic approaches actually work very well.
Another way to think about it is this : for any image that we are given I , imagine we downsample it to I/2 with a filter , and then we double it through the trained doubler J = 2*(I/2). The result J should be as close to the original I as possible. This is how we can formulate the problem as a standard machine learning optimization.
Addendum : Well, back when I worked on this I did a literature search and didn't find much; Won has pointed me at a paper by William Freeman , "Example-based super-resolution" which is almost exactly this approach.
I put my new "cblib" in the Misc section. So far as I know the old "crblib" (which was ugly as hell) and the newer "Galaxy3" never really caught on with anyone (for actual use as a library), but since I have an audience of zero I'm devoted to updating them with another library that noone will use. Anyway the point of cblib isn't that anyone use it as is, but rather people can look at the code and steal some snippets they like. It's got a bunch of the old stuff cleaned up and unified as well as some hot new stuff.
Some bits you might be interested in :
There's lots of good 3d maths stuff, but it's the same stuff that's in Galaxy3 for the most part. There's really nothing new in terms of 3d stuff, but there are a few little cleanups and fixes compared to the Galaxy3 versions.
Lots of funny STL and C++ ism stuff. If you think this stuff is retarded you can have a good laugh looking at the weird stuff I do. Probably the funniest of these are the next two :
Reflection & Prefs mechanism. The code for this looks rather complex, but it comes out very very simple to use in the client and I'm very happy with how it works. My big poker app uses this system and it roxors the hizzouse. The prefs are very easy to mark up in code, human editable, and the whole system is "Immediate Mode" to use Casey's lingo which means you can do version-conversions right in the reader and nice stuff like that very elegantly. The system is so simple to the client that you can use it without understanding it; if you want to decode some template functor insanity you can try to follow the execution flow.
safeprintf - looks just like printf to the client but validates args (at runtime). I'm mostly happy with this. It has helped me find a lot of bugs already and it does create a pretty nice human readable error that tells you exactly what the error is, like "printf expected %s but got data of type (int)". You could easily use the exact same mechanism to make a printf that does conversions, eg. so you can just pass in your own String and print it with a %s, but I haven't actually done that because I'm not sure if it's a good idea. For one thing that makes it no longer directly interchangeable with printf and that could lead to disasters when you search-replace to change your printf to a fprintf or something that's not patched.
Some useful Win32 junk, like a little DirChangeWatcher file that compactly exposes the ReadDirectoryChangesW that every does; the "Metered Section" code that I mentioned here previously, and some goodies in Win32Util like how to make an app that can be either console-attached or make its own console, how to really mess with other apps, stuff like that.
BTW while I'm on the topic, the damn HWND system in Win32 is so fucking hosed. The handles are not unique (they get reused), they can go become invalid at any time, and it's not a valid safe weakpointer system so if you are holding HWND's to other apps they can suddenly and with no notification to you either change identity or become garbage pointers. Now of course you should never store an HWND to another app's window in your state, but even if you're just holding one in a local while you do some work on it, a thread switch can destroy you. Stupid OS should've had a proper Smart/Weak pointer system so that my HWND reference a unique weak reference.
There's a half decent BmpImage class finally; I'm still not delighted with it; how is it that I've worked on images for all this time and never really written a decent image class?
BTW the inverse is x = 1 - sqrt(1-y)
This morning I'm back to cynical. I was thinking it would be fun to just work on an all 2d game with like floating buffers and proper gamma and everything and do some fun image self-feedback like an analog synth, and make the image the actual gameplay, but then thinking a little more about what it would take to make an actual game, it's just glue glue glue and I know I would get bored after a few days. For a game like Casey's it seems like a big waste to do anything at all novel or risky with technology; sure it's fun and maybe it keeps you motivated to stay focused on your game, but really you just need to be getting it done and working on all the PopCap-like retardedness that people seem to love so much. Hell, even with AAA games it's pretty much a bad idea to do much that's novel or risky with technology; the limiting factor for the game being good is almost always content and dev tools and all that kind of stuff. In reality the code bases are a disaster and you have to work with these teams and meetings and the fun high tech code is like the 5% and the vast majority of your time is in the glue, the tools, all that junk. Casey is a unique individual who seems to be making it work, but for a normal ADD person like me, the technology coding is a way to avoid doing all the dumb glue junk that's so boring and is actually what you need to be doing. Lord knows at every job I ever had I spent way more time than I should have on high tech stuff just to keep myself interested.
On the other hand there's working on technology or engines in isolation. That's equally unsatisfying in a different way, you just feel so disconnected from reality, like you're doing all this clever work and it's totally pointless because nobody really needs it and noone is ever going to see it and it may not even ever make it into a single product. It can be really fun for short bursts of time when you're working on something cutting edge and making discoveries and breaking ground, but then the pointlessness of it all sets in again.
There's a pure joy in like - hey I figured out how to do Perlin noise or draw Bezier curves and look I made a little app and it runs fast and it looks really pretty too and hey I can make Bezier end points fly around the screen and put a spring between them and look how fun it is. I absolutely love that work and it's what got me into games. The problem is that real game work is not like that, and I don't know how to make a career out of that kind of stuff. Part of the problem is that you can't because that stuff is easy and anyone could do it and not useful.
I guess I had the exact same problem with physics. I mean I absolutely loved learning about particle physics, and making all these realizations, and figuring out my own ways to derive things, and coming up with clever formulations and connections between things like spin and symmetry groups and all that stuff. But that's not what doing physics is like. Anybody can learn that stuff, and you can't make a career out of learning stuff that other people have figured out. Doing actual cutting edge research particle physics today is not very similar at all to that excitement of learning it, it's very similar to making games, you have the exact same kind of horrible tedious "glue" work (doing tons of hard math, verifying experiment numbers, writing grant proposals, etc. etc.) and then once in a while you get those good bits again.
So far this is my working method for peanuts : dissolve 1 tablespoon of kosher salt in 1/2 cup of water, bring to a boil, stir to make sure salt is fully dissolved. Add 2 cups of raw peanuts (in shell) and stir while boiling until all the water is gone (just a few minutes). Pour peanuts out onto a sheet pan, then put in a 350 degree oven for 30 minutes or until roasted to desired color (shells should be just starting to darken). If you can smell them in the oven they're probably done. Allow to cool - they harden as they cool, so you can eat them sooner if you like them warm and somewhat soft.
Revision : I think it's better to use just the minimum amount of water possible to dissolve the 1 tbsp of salt. That seems to be slightly more than 1/4 cup of water. It won't dissolve until the water is nearly boiling.
Peanuts can be roasted to various amounts of doneness, and it's pretty much exactly analogous to a coffee roast. Lightly roasted peanuts still taste somewhat grassy, more like a boiled peanut. Medium roast is what you normally get and think of as peanut flavor. Dark roast brings more of the oil to the surface and has a stronger sort of charred flavor, just like a french roast coffee. I enjoy all the different flavors of a peanut, but my default is somewhere in the medium-dark range. One of the real joys of roasting yourself is getting to eat them while they're still warm. They're SOOO much better than roasted chestnuts which I still don't understand.
.
.
.
Ok, so you see it's a little moral game with a message that you discover for yourself. It's pretty obvious what it's going to be right from the beginning. I don't really think that this game "works" in the sense that it doesn't actually teach anyone anything, and it will never convince anyone to change their mind on the topic. That is, people come into the game having a preset idea on the topic, and the game just reinforces that. People sympathetic to the message will go "oh yeah" while people who don't agree will think "this is stupid, it's not like this". Of course the movies of Micheal Moore et.al. are pretty much in the same boat or even worse.
I was thinking about what it would take to make a game that could actually change someone's mind. It's something I've always wanted to do and something I often think of. People are so pig headed, they have some retarded idea, and they can manage to see every bit of news in a way that just supports their preconception, and all the news that doesn't reinforce their preconception they either just ignore or claim is lies. With games, in theory you can put them in the actual position of the thing they misunderstand, and make them actually make a decision, and perhaps they will see the logic of the decision that they disagree with.
One of the key factors to successfully teaching someone in this way is that you have to let them discover the connection to the real world issue themselves. If you show that this is a game about terrorism, or a game about global warming, or whatever - you've already lost. As soon as they see that issue, their head fills with their preconceived ideas, they presume that your game has some certain message, and they're not going to convinced by anything they see. They begin judging the game based on how it fits their preconceptions - either they approve or they think you're full of it - they no longer judge the scenario on its merits.
Instead, you have to present them with a purely logical or immersive situation in which they are making a decision based on either rational thought / logic (eg. if I do move X I get more reward than move Y) or their immersed emotions (eg. I need to save my character's family). That is, they're judging it as a fresh situation seperate from their memories and their political identity.
Once you achieve that, hopefully they can make the connection back to the real world issue. This is a tricky part, because if you're too obvious about it, then they will see the hand in the machine and know they've been set up and reject the lesson, but if you're too subtle they won't see it.
Of course, getting to children is much easier.
I also like to do the little skip-step that they do at the end of Buckaroo Banzai when they're walking around in that big concrete flood basin or whatever that is.
For music, my big problem is that I really like to download and listen to something before I buy. Subscription services would be great, the problem is the record labels don't want to make their catalogs available. One thing I'd be happy with is a listen-limited free download. So you can download any music for free, something like 2 listens per song is free, and then after that it locks up unless you pay for it. I know you can preview songs at Amazon and iTunes and such, but I can't really getting a feeling for whether I like something when I do that preview.
Hmmm.. I wonder to what extent the current over-leveraged operation of the US economy is due to "Rich Dad, Poor Dad" ?
padded knee pajamas : when sleeping on your side, you ideally would have a pillow between your legs to raise your upper leg so your hips are more neutral. But that never works, you toss and turn too much and the pillow gets all messed up and just becomes annoying. So, we've created Padded Knee Pajamas. These pajama pants have a ring of cushioning all around the knees about 1 inch thick, so that when you lie on your side your knees are seperated just like having a pillow between them.
warm human size body pillow : didn't I post this before? I can't find it. Anyway, this is the ideal sleep solution for single people in cold weather. It's a standard large "body" pillow that you sleep with, it just has some heating elements in it so you can warm it up. The heating elements are just standard electric blanket coils with a thermostat so you can set it close to body temperature of a normal human. The core is a latex gel like the fake flesh of sex toys which spreads the heat so there are no hot spots and gives it a pleasant fleshy squishy firmness.
Back when I used to work on 3d stuff and I would crash my machine every 30 minutes, I though the idea of playing music on my computer was totally retarded. The #1 most important time for me to have music is when the machine is rebooting, as the music soothes the savage beast and keeps me from totally losing it after the fucking driver and 3d crashed me once again. Now that I rarely crash I still think it's moderately retarded.
When I got the amp back I went fishing for some tracks that really sound beautiful on the old stereo.
Radiohead - on OK Computer - tracks 2 and 3 - but just the instrumental intros, those sound great on any system but on a clear analog system with separation they're just delicious.
U2 - a lot of stuff on Joshua Tree sound great.
Timbuk 3 - Big Shot in the Dark - especially track 1, but the whole album has a really great sound, lots of space, but also really wet.
Bjork - on Homogenic - especially Bachelorette but also Hunter. I bet these sound amazing on anything.
Sufjan Stevens - not really something that sounds "amazing" cuz his music isn't really beautiful to begin with, but sounds incredibly different and much better. The layer really come apart and surround you. Actually this is one album that would be really awesome to have in 5.1 surround, or to listen to at Audium or something. I'd love to see like Beirut and Sufjan do pieces for Audium.
The standard thing that stereo stores use to show off an analog stereo kit is acoustic classic rock, especially live recordings. Yeah, it works. The Eagles and Buffalo Springfield actually sound good and you can forget how overplayed the songs are. Supposedly part of the reason these sound so good is they were mastering for vinyl back then, and doing some things differently, I dunno what exactly. I hear that today they actually master with headphones/digital use in mind which means a lot of albums have "crosstalk" intentionally built in which is super lame.
BTW that reminds me, headphones should be cross-mixing the left and right channels somewhat, the extreme seperation you get is totally wrong and evil. I guess there are some iPod mods that do this and call it "Crossfeed", or there's the BitHead AirHead which is a bizarro hardware device to do the same thing. Apparently most headphones have quite a large amount of undesired "Crosstalk" which bleeds the channels, but that's not really desirable because it's not got the right offset/phase, and since it's inductive I assume it's also low-passed. I guess more generally rather than just mixing L & R you should do some of that 3D HRTF stuff to simulate the sound is affected by your head. eg. what you actually play in your ears (via the headphones) should not be the same L & R that you play at speakers, they should be convolved by the operation of the sound travelling from theoretical ideal speakers at ideal locations through the air and to your ear holes. So far as I know, none of the standard audio apps actually do this even though headphone listening has become extremely common. I guess part of the problem now is that people are mixing for headphones, so if you apply the convolution it's like you're doing it twice. Mixing should've been standardized to an ideal speaker listening environment, and then any modification of that should've been done at playback time, where the player can know the geometry of their actual setup. Obviously people have had these ideas before. I just randomly found this cool and bizarre thing - the Smyth Virtual Surround Technology that converts surround sound to head phones and does all the HRTF measurement junk. Anyway, this is getting overcomplicated; just doing a simple LR mix is super easy and it's just retarded that the iPod doesn't do it by default; songs like Bjork's Hunter that does extreme LR stuff sound really great on a proper stereo but just sound like awful garbage on unmixed headphones.
Oh, of course if you want to go even more nuts, ideally every instrument would be recorded with positioning info, and then on playback you could choose where your listener is. That way you could put the music "on a stage" (which is what a standard stereo does), or you can put yourself right in the middle of the stage, which is sort of like what plain headphone playback does, or you could pick anywhere in between, or even something different like putting yourself 5 feet above the band or whatever you want.
Okay now I'm really stalling trying to avoid doing some work.
First of all, the lineup :
Doyle Brunson - big poppa, his game is still well respected though he does now get bored & tired and can play badly at those times. Barry Greenstein - pretty well respected online, but certainly not at the top of the modern game. One of the best of the old live players. Antonio Esfandiari - Antonio used to be a cash game pro in LA but doesn't play much any more. His game is solid. Of note is that he does not have the bankroll to play this game, he must be playing staked. In fact even guys like Barry & Doyle who can afford it have probably traded pieces of each other to reduce variance. Normally Antonio would be playing too scared at this level but if he's fully backed he should play well. Jamie Gold - medium stakes cash game player from LA, won the 2006 WSOP Main Event, wants to prove he didn't just get lucky. Huge fish. Tells you his hand and then bluffs predictably and doesn't value bet in the same spots. Sammy Farha - Sammy is a wealthy businessman who is absolutely awful at poker. The other pros go along with the myth that he's good at Omaha because they want him in the game. Guy LaLiberte - one of the founders of Cirque de Soleil, plays a LOT of poker, and generally loses. Plays online under the name "noataima" and has lost around $20 million online. Also plays the "Big Game" in Vegas and is said to have lost a lot of money there. Single handedly supports many top pros. Patrik Antonius - one of the absolute top players in the world, both live and online. Now plays all the games. One of the biggest online winners ever in both Hold'em and Omaha. Was previously a semipro tennis player, and is currently the object of crushes from girls and boys alike. David Benyamine - degenerate mediocre player; ran up about $20m in profit playing in the highest stakes games, but has now lost it all and is broke and often playing staked; probably playing staked here. He can play very well, but often plays 40 hour+ sessions where he starts playing awful, and he's also an action junky who chases his losses.
Phil Galfond who is Jman/OMGClayAiken online was also supposed to play in this game, but the producers decided he was bad for TV and didn't let him play; he's a 2+2'er. Several other 2+2ers such as sbrugby (Brian Townsend) (as well as durrr, krantz, etc) would've loved to get in this game but weren't invited.
Each player bought in for $500k and they're playing 300/600/1200 (the blinds are nominally 300/600 but with a forced straddle all day). Even with the straddle that means they're 416 straddles deep which is really really deep stacked poker. It's a very interesting and difficult type of poker which is rarely played, partly because the better player has a huge edge. It makes it very hard to get "all in" which exposes you to danger. You see, getting all in is a form of protection where you know you don't have to make any more decisions. Say for example you bet the flop and someone raises pretty big - with 100BB poker you can just shove and you don't have to worry about being out of position for the rest of the hand and what might come on next cards, etc, but 400BB deep you can't shove. If you 3-bet you still have a lot behind and you're OOP if he calls. If you just call again you can face big bets on the turn and the river. Your opponent is always able to put you to a big bet.
BTW it's definitely not the biggest cash game in history. If you count limit poker, the $100k/$200k limit hold'em game against Andy Beal was the biggest in history. In no limit, just this year there was a huge game at the Bellagio during the WSOP with Brian Townsend, Sammy Farha, and Bobby Baldwin that was a $1000/$2000 no limit holdem/omaha mixed dame where the guys were sitting with several million each. If you adjust for inflation there may have been bigger games in the old days when the mob was working with Doyle and others, but nobody's telling.
The only person at the table I would be really really scared to play would be Antonius, because he has both the well-balanced frequencies, and the guts/insanity/aggression to put you to a huge test in any pot that you show weakness. Against PA you have to either keep showing strength or be ready to call a big bluff at any time.
I'm gonna put the hands in white so there's no spoilers - (BTW "Guy" = Guy LaLiberte , not just some guy)
Hand 1. Guy has AJo ... and Jamie makes a retarded bluff with 84s. This bluff is retarded because the board is drawy and Guy will call with a draw, and also Jamie could well have a draw so Guy will call with a top pair. Flop raise bluffs are much better on dry boards. Also it's 4 handed which makes it way more likely that Guy has a real hand. On the other hand, Guy 3 betting is kind of retarded as well. He lets Jamie rebluff him if he wants, and it's not a big enough raise to get him off a draw. If Jamie had a good combo draw he could even shove! Furthermore if Jamie wants to retardedly bluff it's better to just check-call and let him bluff.
Hand 2. Guy has JJ and flops a set ... Sammy's overbet on the turn is interesting. That's a move you rarely see online but it is more common live. I think Guy plays it pretty well, though he should perhaps go ahead and shove the river since the only thing that calls a raise is TT for the 2nd house and I don't think Sammy can fold that even to a shove. Raising the turn would be really bad. Calling is okay since Sammy might have a lower set.
Hand 3. Doyle has T8s and Jamie has 97s, they both limp preflop ...
.. and they both turn a flush. Tough spot for Doyle. He correctly reads that Jamie most likely called the flop with a flush draw and just
hit it. The Jamie does one of his retarded speeches that he thinks is so clever but actually totally gives away his hand. He goes on and
on about how he came to bluff, and then he makes a big raise. That's what Jamie does when he has a hand and is trying to get paid off.
The problem is Jamie doesn't really have a hand and he doesn't even realize it. This is one of those spots where in a 100 BB game I'm sure
Doyle would call and get all in for $120k, the problem here is even if he calls on the turn they have almost $400k behind on the river and
there will be another big bet. In reality, Doyle could call because Jamie is actually a wuss and would give up on the river without the nuts.
Gabe's commentary about new school vs. old school isn't really right. Gabe doesn't really know much about poker and certainly not about the
new school. Doyle's range to overbet the turn there is pretty narrow, when Jamie raises like that he can only ever bet called by a flush, so if he's
sensible he can't be doing it for value with a low flush. Ten-high flush is pretty good though. Note that the online guys who play heads up is a
whole different game - this is a full ring game.
Hand 4. One hand where Guy has ATo, another with A7o and another with T8o ... Two little random hands; we've now seen that Guy just can't fold the flop even with total garbage, and he's also not semibluffing at all when he has very good equity. Seems to play like a classic fish - chasing too much, and then only betting with the nuts or "bluffs".
Hand 5. Antonio limps with AA ... meh, he's not doing this because he's scared, he's doing it because he's played so tight so far in the session that he knows if he shows strength people are just folding, so he's trying to get someone else to raise. This is Antonio's normal game, he plays really tight, but then he also makes big moves on pots using his tight image. Barry plays roughly the same style. Not sure if I like Barry's big bet on the river, if he wants some lone junky pair to call he should maybe just bet $10k.
Hand .
Which reminds me, I think I've written this here before, but the fucking scam of online music pricing makes me ill. They cut EVERY SINGLE FUCKING COST. No salespeople. No retail shop. No rent. No liner notes, no manufacturing, no shipping, no warehouse, NOTHING. And then they still charge roughly the same price as the old regular stores for the digital download, and people go along with it because they have no choice because it's monopoly and there's no competition.
Anyway, I was going to review "Stranger than Fiction". Why is my success rate at finding decent movies so bad? I know there aren't many great movies out there, but it seems like with all the information available I should be able to get at least a 25% chance of picking one I'll like, and it's way way below that.
Today I'm making Savory Pumpkin and Oxtail Cous Cous from Emeril of all people. Now, I hate Emeril's show, he just comes across as a loud retard, and he often doesn't give me the impression of even knowing what he's doing on his show, like obviously his back kitchen staff prepared the recipe and did the various steps for him and he almost seems like a Today Show host in their cooking segments. But, ignoring all that, "his" recipes on the Food Network seem to be generally very good ("his" = who knows who actually writes them). I'm modifying it some, I'm going to make it a bit more Spanish in flavor. The experiment for me is that I've never cooked with fresh pumpkin in anything but desserts.
Result : meh, I don't really like fresh pumpkin, it's kind of stringy like spaghetti squash which I don't enjoy. I'd rather use sweet potatos or turnips in its place. Otherwise very tasty. Also, I didn't know this but the couscous you buy everywhere in the US is actually pre-cooked instant couscous. If you're using the instant couscous stuff, there's no need to cook it at all. Just put some in the bottom of each person's bowl, serve the stew with plenty of broth, and it will cook right on their plate.
Some easy algebra and series gives you the answer : P = Y * ( 1 - 1/(1+X%)^N ) / (X%)
First of all, the whole thing is proportional to Y, your yearly burn, so let's ignore that part and just concentrate on the scale factor, P/Y
Let's look at X = 5 which is perhaps somewhere reasonable. For N-> infinity , you get P/Y = 20. That's the most you ever need. A few values :
inf: 20 30 : 15.37 20 : 12.46 10 : 7.72 5 : 4.33 1 : 0.95The first few years of retirement almost cost you 1 unit, but each year you add is much cheaper than the last, so that going above 30 years is very cheap indeed. Unfortunately this isn't of much use unless you are a royal family thinking of how your fortune will easily ensure a legacy for many generations.
In some cases it's surprisingly low. If you own your house and live frugally you could easily survive on 30k a year, which means you can retire on just 600k principle; that also has a safety pad because near the end you can sell your house or get a reverse mortgage or whatever to cover any exceptional costs.
One thing I don't see discussed very much is that volatility is really bad for investments. Say you have two investments with the same average return. The more constant one will give you a much better net. This is because the way to maximimize the area of a fixed-perimeter rectangle is with a square. Say both funds average 5% over two years , one is (1.05)*(1.05) = 1.1025 , the other is (1.0)*(1.10) = 1.10 , and in fact it's even worse if they occasionally take losses, like (0.90)*(1.20) = 1.08
Fear of crime is a legitimate motivating factor for the rich to not treat the poor too badly. It has been so throughout history. A good feudal lord would know that he needs to treat his serfs with a certain degree of kindness and generosity or they will rise up against him. A social structure only exists through the will of the people, and crime is the enforcing factor. At some point the poor become so desperate and hopeless that getting caught or punished doesn't seem that bad, while stealing from the rich could feed their family. The rich can protect themselves with armed guards and gates (as they do in many parts of the world today), but that has a high social and economic cost of its own, which should motivate them to try to help the poor which will reduce crime.
An unfortunate problem is that criminals are not very well aimed. The natural crime balancing system only requires a few criminal acts, and they only need to be committed by the poor against the rich. Typically there is a massive buildup of petty crime, which doesn't really serve any social balancing purpose that I can think of, before it reaches the point of a real anti-society uprising.
In our system, lawsuits are basically the only checks on many types of illegal behavior or predatory practices. For example, companies are not required to prove their products are safe (except for very narrowly defined pharmaceuticals). If a company sells a dangerous product, the government doesn't pursue it, it's up to lawsuits to punish them.
In order for this check to be effective, it has to be damaging enough that the company is motivated to not release the dangerous product (or to pollute, or manipulate markets, or whatevber). Let us first banish the thought that the company will voluntarily do the right thing - first of all if you're a capitalist free-marketeer you must assume the company acts in the interest of maximal profit and with no other motivations, and second of all history certainly seems to show that almost no company ever gives up a profit opportunity because it is harmful to the populace or the planet. If they do choose to give up a profit opportunity it's because the risk and potential damage from getting caught is too great.
Finally we must face the reality that for most of these crimes the probability of getting punished is very very small. If we consider some of the most common crimes that companies commit - creation of illegal shells to manipulate profit reports, tax evasion or use of illegal tax shelters, pollution, illegal use of part time employees to deny benefits, selling of products that are known or suspected health risks (often through simply choosing not to test or ignoring tests or advice to test), advising bad financial decisions in order to increase commisions, etc. etc. - all of these have very very low chances of getting caught, perhaps 1%. For one thing the particular incident has to manifest itself in such a bad way that it causes demonstrable harm to an individual. Often that is hard to do. Consider the case of meat packers who are unsanitary. They have to not only pack some bad hamburger, it then has to be undercooked, the person has to actually contract E.Coli, and then probably has to die in order to generate a significant suit, each of those has a very low chance of actually happening.
So, in order to be correctly financially motivating, the punitive damages have to be large enough to beat the very low chance of the suit succeeding. A company cheating on its taxes might see it can save $10M with a certain tax shelter. The chance of actually getting busted is maybe 1%. That means the damages should be 100X , or $1B. This seems ridiculously excessive, but that is the MINIMUM damages to just make cheating a break even proposition, at that level they aren't even actually losing anything by cheating. In order for them to really be disuaded, damages should even be higher.
This is probably even more obvious with small claims against big corporations. Say your cell carrier does something rotten in your contract and overcharges you $100. That is 100% free money for them. Even if you take them to court and win, you will only be rewarded the $100. So they have some chance of just getting to keep it, worst case they lose the money that was yours anyway. In order for them to be motivated not to do it, the punitive damages should be 100X - 1000X the actual damages.
With something like environmental disasters (see the recent BP refinery disaster for example) the companies usually have to pay something close to the cost of cleanup. For one thing this doesn't come close to estimating the real cost, which should include the cost of losing the use of that land for years and the very long term and unknowable effects on the ecosystem. But even if you did include all those costs it wouldn't be nearly a large enough penalty. The penalty should be multiplied by the chance of the accident happening and them getting punished.
For similar reasons, doctor's malpractice insurance should be illegal. It completely removes the motivation for them to be careful, and they definitely need more motivation as evidenced by the high rate of surgical instruments left inside people, lack of hand washing, wrong-side surgeries, etc. etc. tons of mistakes that are just sloppiness.
For example this page at VA Peanuts uses the word "shelled" to mean "shell-removed" but if you click on the link for the in-shell peanuts, their text here uses "shelled" to mean "with shell".
Today I found the Douglass Playground. I was just looking for a little grass to run on (which I still haven't found), but instead found this deserted neighborhood park with dense trees and a really cool sketchy trail that goes up the steep hill to some amazing view spots.
A few days ago it was Cayuga Park. It's a little park down on Alemany in the southern mission, and it's full of these bizarre sculptures and tree-house like things all made of wood and left out to age.
The average amount of change you get from a transaction is 2 pennies, 0.4 nickels, 0.8 dimes, and 1.5 quarters. The average value of change from a transaction is 49.5 cents, the average number of coins is 4.7 The ratios are 42.55% pennies, 8.5% nickels, 17% dimes, and 31.9% quarters.
The weights of the coins in order are 2.500 g , 5.000 g , 2.268 g , 5.670 g . The weight of an average coin transaction is 17.3144 g. 1 lb is 453.6 grams.
The value of 1 lb of random change is $12.97 ; if like me you generally remove your quarters from the random change, the value of 1 lb of random change without quarters is $6.17 ; in practice it's even slightly lower because so often you're paying a $.99 or $.95 price which gives you the worst coins by weight, the nickel and the penny.
This struck me as a nice example of how our legal system treats white collar criminals. If they'd found a few ounces of drugs he'd be in jail. Instead he loses maybe 10% of his profit; I suppose he'll have to stop bookmaking, though he could probably start right back up in a year or two if he buys a few restaurants for laundry.
Deconstructing. There's a reason why all these classic dishes are "constructed". When you put various ingredients together you create a composed bite which is balanced, the flavors meld, that's what cooking is all about. The real truth is that "deconstructing" is easier for the "fancy" restaurant line-cooking style where they can pre-do a bunch of work and then toss things together on a plate at the end. Deconstructed food is sort of like a minimalist modern art painting - it's a brain-stimulating thing to see once in your life, to make you think about the form, but you ONLY NEED TO SEE IT ONCE.
"Surprising" accent flavors. Chili in chocolate. Lavender in oatmeal. Ginger in hamburger. Yes, yes, it's very surprising and amusing that these strange accents taste okay in places we might not expect. OKAY NOW STOP IT. When I get chocolate, I want a rich deep chocolate taste. If you can do something clever with your cooking to enhance the chocolate experience, that's great, but that takes skill and lots of practice and most people don't do it. Just randomly tossing in green tea or hibiscus or whatever flavor of the month is not well crafted food. Maybe back in like 1970 somebody made a trio of creme brulee's each with a surprising accent flavor and that was cool, but IT'S OVER. Too often this is just a way of taking a poor dish and punching it up, used by chefs who want to make something "gourmet" but are unable to improve the basic quality and taste of the dish.
Other retarded food trends are the super high vertical stack (hello, it looks silly and it just falls apart when I try to eat), the sauce paintings on the plate (meh, this isn't bad, but it's just not hip), foam, the seared scallop (the trend that will not die), and the deluxe versions of ordinary foods like burgers and grilled cheese.
I'm in the middle of this giant endeavor to rip all my CDs and then get rid of them. I've done a few hundred and I'm up to "C" and I'm starting to think "WTF am I doing this for". It would be nice to just not have all these fucking things to lug around, but then I have to get some kind of iPod adapter thing for my car and spend a lot of time loading songs on my iPod and all that garbage waste of time. It's just busy work.
I still want to write a nice auto-DJ app. It would scan through your whole music library and analyze all your songs (which would take several days). Analysis would detect the beats and also the "energy level" and "style" of the songs (there are various papers on making estimates of these things with subband spectrum analysis and "timbre" study and so on). Then the user could pick a song to get it started. When that song ended, the autoDJ would randomly pick another song which was close to the original in all 3 attributes, and perhaps beat match and cross fade if the beat structure is clean enough (a lot of rock songs do annoying intros or fade outs that don't match the primary beat, so you wouldn't want to crossfade them). So the autoDJ takes a random walk through your music collection in a way that provides pleasing transitions that stay in the sort of general musical area of the seed song. Anyway, this is like a few weeks work, but WTF is the point?
Addendum : I've found two existing things that are similar to the auto-DJ I described. One is Pandora which appears to be based on a database that's manually marked up by human listeners. The other is MusicIP which has a free Mixer app you can download. They seem to actually do an automatic content-based identification of song "mood". It appears to me that they don't actually run it on your client, but rather identify your songs and look it up in their online database. In my experience there are a lot of problems with MusicIP. It's just not nearly good enough to actually let it just play. It is, however, kind of a fun tool to browse your music collection if it's way too big and you haven't even listened to half of what you have.
In her honor I'll post a few photos of when my baby was happy, roaming the curvy back roads : Nacimiento-Fergusson or Figueroa Mountain
Oh, and the stupid digital video in "Inland Empire" is really gross awful. It's got tons of that nasty banding that happens when you shoot DV in low light. I don't know if that's just because of the crappy CCD response, or if it's actually the 8 bits of intensity revealing themselves. 8 bits really sucks, especially when you take dark stuff and blow up the contrast and the brightness. Human intensity perception is relative, so the difference between 0, 1, and 2 on an 8-bit image is immense. Now of course film also sucks bad in low light, but it is better, and even when the film shows its limitations, it does it in a pleasing organic semi-random way, rather than the chunky blocky banding that you get from DV. You can just compare the low light scenes of real film in "Days of Heaven" to the modern DV low light stuff to see what we're losing. It's also possible that they fucked it up in processing. I was semi-shocked to find that the classic Avid systems work in 8 bit, and they save intermediate processing to disk in that format, so if you do something like run through a bunch of frames and play with contrast, then run back through and undo it, you can totally destroy your image quality. I believe the newer high end Avids are now 16-bit which sort of makes this okay, but in general in the little exposure I've had to film I've seen a lack of understanding of digital image quality and how to process frames; there's sort of a culture of "if I do this step and it looks good on the monitor it must be right" without thinking about what's happening to the digital value registers and the information you might be losing permanently. Fortunately I believe the scientists have finally gotten the upper hand and we will eventually have full HDR video and editting pathways standard.
Checkers drinking game. Lay out a checker board, but the pieces are shot glasses. One side full of whiskey, the other side vodka (or any two alcohols of different color so you can tell the pieces as usual). Play checkers, and when you jump a piece, you take the opponent's shot. This game is so much better than your normal drinking games in that you drink regularly, it's actually a fun game, and the person who's winning has to drink more which evens out the game.
Indian burrito. Why doesn't this exist? Just take a nice curry, combine with basmati rice and wrap it up in naan bread like a burrito. So delicious and great to-go food. Much much better than the actual Indian to-go foods like samosas which are foul pastey starchy fried heaviness. BTW there a few to-go "hand pie" places in San Francisco which revises the old English tradition of the "pasty" (pronounced pahsty); unfortunatley all the current ones are just not very good so that delicious portable food is not really making a strong comeback yet. (update : I've now learned that Indian Pizza is made at a few places around SF, will have to try that, but isn't Indian food like always pizza? I mean you scoop up some meat and sauce on a piece of bread, that's pizza. Of course that's how the real Burrito was invented as well...)
We saw this strange mass of ladybugs. They were all piled on top of each other; it reminded me of the monarch butterflies at Pismo that land on each other in the eucalyptus. I put a photo on my Flickr . I read up a bit on Ladybugs; apparently they do some weird things and I'm not quite sure what they were doing there. They do migrate seasonally chasing an ideal temperature range. The masses of ladybugs in the central valley will migrate up into the high Sierra Nevada, and then come back again. They also fly in this really weird way where they constantly are climbing while flying under power, and then they get too high and go into a coma and free fall until they get back down to a lower altitude where they wake up and repeat the oscillation. Very strange.
I found this thing a while ago about the Alex Singer bike shop. Those old bikes have so many gorgeous little hand-worked touches.
I'm depressed today, maybe partly because I'm in horrible physical pain. Life is a fucking dreary effort, some days are so hard to get through. It really doesn't matter what I do with myself long term, I'm just a miserable fuck of a human being, I'm going to be unhappy and bring unhappiness with me wherever I go.
The NFL has gotten itself in a sucky state. Pretty much no game matters until the AFC Championship game when the Colts and Pats meet, and then the Superbowl won't matter either (not that it has for years).
I see my boys Gabriel & Dresden are doing a Halloween show. Ooooo. Being a DJ would be pretty fun, you get to travel the world just going to different party spots, you get paid to do very little and be out at the club, and you're a semi-celebrity in the club scene which has its advantages.
On the other hand "Flight of the Conchords" is brilliant. I don't even like the songs all that much (I'm not a fan of humor in musical form), but the two guys are hillarious, even just standing casting sideways eyes at each other going, "mmm, mhmm, yeh, yesss".
Saw this "chef" on PBS today absolutely ruining the most beautiful rib eye I've ever seen; it was from Lobel's in New York which has this unreal dark old dry aged beef. Looks like the going price for good beef now is around $40/pound or more. LOL ? It's certainly true that people are better off than ever they were in the past, but at the same time there are these very simple good things, like clothing that's tailored and hand-made specifically for you, or grass fed organic meat, or real fresh eggs - things like that which everybody had in the past when they were cripplingly poor are now so expensive that many people in industrialized societies have them not ONCE in their lives.
Anyway, this new movie "The Seeker" seems to have completely removed everything that was charming about the books. It's been moved to the present in America, which totally ruins the charming Britishisms as well as the whole connection to the past and the Arthurian tale. Oh well, even if it was rendered perfectly it wouldn't have been popular and wouldn't be watchable by me anyway, it's one of those things you have to see as a kid, and kids like that are no more.