YouTube - Heel & Toe - best video I've seen of heel & toe technique. For racing, through a corner you want to go from braking hard directly into gassing hard with no coast time in between. It's actually much more important to do this in a turbo car or any car with a high narrow power band - in that case you need to actually shift *as* you go into the corner so that you keep the car in the power band, you can't wait and shift right before you power out at the apex because the RPM will have dipped too low.
YouTube - minutegongcoughs's Channel - good old music
Wheel Alignment A Short Course
Caster, Camber, Toe
The new 911 has some weird shit going on with the alignment to keep the tail from sliding out. I had no idea what camber or toe were or how they affected vehicle dynamics;
crazy interesting stuff. Some people who race 911's make the alignment more neutral so that they oversteer more.
John Sizemore - Weird_Weird_Science on Dailymotion - awesome awesome videos of extreme zooms on materials all the way down to the atomic scale. How do they do this?.
Alan Turing - Wikipedia, the free encyclopedia
Turing biography
Of course we all know Turing from the Turing Machine and the Turing Test and his thoughts on AI and Computability, but he also did work on chemical pattern formation,
abstract mathematics, and code breaking. I had no idea about his personal life story, though, which is quite shocking.
NOVA Sputnik Declassified A Tainted Legacy PBS - speaking of scientist biographies
Popular Science - Google Books Old Popular Science magazine is fucking awesome. Just the other day I was oiling up my bicycle and was wondering why we don't oil up cars the same way (oiling all the hinges and gears and such) - well of course in the past they did!
Pelican Technical Bulletin All About Motor Oil
A little bit archaic but pretty interesting.
Brian Beckman's Physics of Racing Series - really this is "Physics of Driving" ; it's mainly a review of the basic forces involved in cars. Pretty good stuff. I guess BB is at MS Research and may have contributed to "Forza 2" , though if it's anything like the typical MS Research video game "contribution" it means he sent them a link to his articles and they ignored it. (BTW just found this nice series of videos on basic car physics made by a dry narrator in a Seven).
Aircrew Survival Equipmentman 2 - Aviation theories and other practices - what to do when your plane goes down. Includes how to maintain or fabricate your parachute.
The car company engineers do a really amazing job of making modern cars high performance and also low pollution. Modern catalytic converters and variable valve timing and computer controlled feedback loops with air sensors are real technological marvels. And yet some redneck with a blow torch thinks he can improve it by cutting some holes or putting on fatter pipes.
First of all, "freer flowing" or "reduced backpressure" is rarely a good thing to do to your car. Putting on fatter pipes rarely helps performance much, and if it does help it probably helps only at high RPM at the cost of performance at low RPM. The reasons are rather complicated, but basically the combustion chamber is designed to have just the right amount of exhaust exit flow. What that should be exactly depends on the car and the RPM, but typically you want the flow of exhaust to create a vacuum to help evict the cylinder after combustion; some engines also want the exhaust to stop moving and create a sort of wall as the exhaust valve closes and new air and fuel comes in. Changing the diameter of pipes can screw up these pressures, and the result is often torque loss at low RPM. At high RPM it's a simpler situation because the cylinder is exploding so many times and making so much gas you just want to get it out as quickly as possible.
The latest trend in car mods is to do a full or partial bypass, just cutting a hole before the cats that dumps exhaust straight out the back of the car, sometimes on a switch, sometimes not. Even if it did help, it would still be dickish to ignore your fucking up the air quality just because you need 5 more horse power. Some of the modders are just confused because cats actually did used to hurt performance back in 1950 or whenever they first came out, but modern engines and cats work marvelously (very large high reving engines like race cars can still see a small benefit from not using them).
But worst of all its just super douchey to make your car louder. I personally love to hear my engine, and actually I wouldn't mind it being a bit louder, but I want it loud just for me in the cabin, not for the whole rest of the world (and I'd like it on a switch too, so I can have quiet mode and loud mode). People who amp their exhaust are obviously doing it intentionally to be obnoxious. Hey pedestrians walking on the road, listen to this! Yeah fuck you for trying to have a conversation, look over here at my great fucking car! My penis might be tiny but my exhaust is huge, oh yeah!
In other douchey car news, my car has xenon head lights and I hate it. I'm kind of tempted to "smoke" the headlights just to reduce their brightness a bit. I can see people in front of me get annoyed when I pull up behind them. Of course I'm quite low so my sin is only one tenth the sin of a high-carriage car with xenons, but I still hate to be that guy. (In other "that guy" news, I used the carpool lane through Bellevue for the first time. I have no regrets).
I'm going to ignore the more "macroscopic" issues of which frame is more important than another frame, or even which object within a frame is more important - those are very important issues I'm sure, but they can be added on later, and are beyond the scope of current research anyway. I want to talk about the microscopic local distortion rating D. The key thing is that the numerical value of D assigns a way to "score" one distortion against another. This not only lets you choose the way your error looks on a given block (choosing the one with lowest score obviously), it also determines how your bits are allocated around the frame in an R/D framework (bits will go to places that D says are more important).
It should be intuitively obvious that just using D = SSD or SAD is very crude and badly broken. One pixel step of numerical error clearly has very different importance depending on where it is. How might we do better ?
1. Value Error. Obviously the plain old metric of "output value - input value" is useful even just as a sanity check and regularizer ; it's the background distortion metric that you will then add your other biasing factors to. All other things being equal you do want output pixels to exactly match input pixels. But even here there's a funny issue of what measure you use. Probably something in the L-N norms, (L1 = SAD, L2 = SSD). The standard old world metric is L2, because if you optimize for D = L2, then you will minimize your MSE and maximize your PSNR, which is the goal of old literature.
The L-N norms behave differently in the way they rate one error vs another. The higher N is, the more importance it puts on the largest error. eg. L-infinity only cares about the largest error. L-2 cares more about big errors than small ones. That is, L2 makes it better to change 100->99 than 1->0. Obviously you could also do hybrid things like use L1 and then add a penalty term for the largest error if you think minimizing the maximum error is important. I believe that *where* the error occurs is more important than what its value is, as we will discuss later.
2. DC Preservation. Changes in DC are very noticeable. Particularly in video, the eye is usually tracking mainly one or two foreground objects; what the means is that most of the frame we are only seeing with our secondary vision (I don't know a good term for this, it's not exactly peripheral vision since it's right in front of you, but it's not what your brain is focused on, so you see it at way lower detail). All this stuff that we see with secondary vision we are only seeing the gross properties of it, and one of those is the DC. Another issue is that if a bunch of blocks in the source have the same DC, and you change one of them in the output, that is sorely noticeable.
I'm not sure if it's most important to preserve the median or the mean or what exactly. Usually people preserve the mean, but there are certainly cases where that can screw you up. eg. if you have a big field of {80} with a single pixel spike on it, you want to preserve that background {80} everywhere no matter what the spike does in the output. eg. {80,80,255,80,80} -> {80,80,240,80,80} is better than making it go -> {83,83,240,83,83} even though the latter has better mean preservation.
3. Edge Preservation. Hard edges, especially long straight lines or smooth curves, are very visible to humans and any artifact in them stands out. The importance of edges varies though; it has something to do with the length of the edge (longer edges are more major visual features) and with the contrast range of the region around the edge : eg. an edge that separates two very smooth sections is super visible, but an edge that's one of many in a bunch of detail is less important (preserving the detail there is important, but the exact shape of the edge is not). eg. a patch of grass or leaves might have tons of edges, but their exact shape is not crucial. An image of hardwood floor has tons of long straight parallel edges and preserving those exactly is very important. The border between objects is typically very important.
Obviously there's the issue of keeping the edges that were in the original and also the issue of not making new edges that weren't in the original. eg. introducing edges at block boundaries or from ringing artifacts or whatever. As with edge preservation, the badness of these introduces edges depends on the neighborhood - it's much worse to make them in a smooth patch than once that's already noisy. (in fact in a noisy patch, ringing artifacts are sort of what you want, which is why JPEG can look better than naive wavelet coders on noisy data).
4. Smooth -> Smooth (and Flat -> Flat). Changing smooth input to not smooth is very bad. Old coders failed hard on this by making block boundaries. Most new coders now handle this easily inherently either because they are wavelet or use unblocking or something. There are still some tricky cases though, such as if you have a smooth ramp with a bit of gaussian noise speckle added to it. Visually the eye still sees this as "smooth ramp" (in fact if you squint your eyes the noise speckly goes away completely). It's very important for the output to preserve this underlying smooth ramp; many good modern coders see the noise speckle as "detail" that should be preserved and wind up screwing up the smooth ramp.
5. Detail/Energy Preservation. The eye is very sensitive to whether a region is "noisy" or "detailed", much more so than exactly what that detail is. Some of the JPEG style "threshold of visibility" stuff is misleading because it makes you think the eye is not sensitive to high frequency shapes - true, but you do see that there's "something" there. The usual solution to this is to try to preserve the amount of high frequency energy in a block.
There are various sub-cases of this. There's true noise (or real life video that's very similar to true noise) in which case the exact pixel values don't matter much at all as long as the frequency spectrum and distribution of the noise is reproduced. There's detail that is pretty close to noise, like tree leaves, grass, water, where again the exact pixels are not very important as long as the character of the source is preserved. Then there's "false noise" ; things like human hair or burlap or bricks can look a lot like noise to naive analysis metrics, but are in fact patterned texture in which case messing up the pattern is very visible.
There are two issues here - obviously there's trying to match the source, but there's also the issue of matching your neighbors. If you have a bunch of neighboring source blocks with a certain amount of energy, you want to reproduce that same patch in the output - you don't want to have single blocks with very different energy, because they will stand out. Block energy is almost like DC level in this way.
6. Dynamic range / sdev Preservation. Of course related to previous metrics, but you can definitely see when the dynamic range of a region changes. On an edge it's very easy to see if a high contrast edge becomes lower contrast. Also in noise/detail areas the main things you notice are the DC, the amount of noise, and the range of the noise. One reason its so visible is because of optical fusion and affects on DC brightness. That is, if you remove the bright specks from a background it makes the whole region look darker. Because of gamma correction, {80,120} is not the same brightness as {100,100}. Now theoretically you could do gamma-corrected DC preservation checks, but there are difficulties in trying to be gamma correct in your error metrics since the gamma remapping sort of does what you want in terms of making changes of dark values relatively more important; maybe you could do gamma-correct DC preservation and then scale it back using gamma to correct for that.
It's unclear to me whether the important thing is the absolute [low,high] range, or the statistical width [mean-sdev,mean+sdev]. Another option would be to sort the values from lowest to highest and look at the distribution; the middle is the median, then you have the low and high tails on each side; you sort of want to preserve the shape of that distribution. For example the input might have the high values in a kind of gaussian falloff tail with most values near median and fewer as it gets higher; then the output should have a similar distribution, but exactly matching the high value is not important. The same block might have all of its low values at exactly 0 ; in that case the output should also have those values at exactly 0.
Whatever all the final factors are, you are left with how to scale them and combine them. There are two issues on scaling : power and coefficient. Basically you're going to combine the sub-distortions something like this :
D = Sum_n { Cn * Dn^Pn }
Dn = distortion sub type n
Cn = coefficient n
Pn = power n
The power Pn lets you change the units that Dn are measured in; it lets you change how large values of Dn contribute vs. how small values
contribute. The cofficient Cn obviously just overall scales the importance of each Dn vs. the other D's.
It's actually not that hard to come up with a good set of candidate distortion terms like I did above, the problem is once you have them (the various Dn) - what are the Cn and Pn to combine them?
What can rate allocation do ?
1. Move bits to the source of predictions. That is, code some frame (or part of a frame) better than normal because it will be used as a mocomp source in the future. This is actually a purely mathematical win and would apply without any psychovisual consideration. A lot of people do this in semi-heuristic ways, but of course those can make lots of mistakes (for example there may be cases where increasing the bit assignment to a block might actually make it a worse source for the future, eg. the future might be a better match to the block with more distortion; also starving the future might cause it to no longer choose that block as a source, etc). Some people move bits around while holding all the block mode decisions and movecs constant, which at least lets you converge, but of course you should consider all possible bit moves and all possible mode changes.
2. Move bits from frame to frame to make some frames look better and some look worse. Move bits around the frame to make parts look better and parts look worse. In general choosing where to put your error.
There's also a related issue which is not exactly rate allocation but is very similar. In lossy coders like video coders you often you have a choice of what your error looks like. That is, for the same distortion (in a numerical sense) you could make different shapes of error, through choosing different block modes, choosing different movecs, or more globally choosing quantizers or quantization matrices. This often ties into rate allocation because it involves how you make your free choices in the encoder :
3. What the distortion looks like. In particular, if you make some amount of error (in an SSD or SAD sense (aka L2 or L1 norm)) what does that error look like? what is the shape of it?
Now, in a lagrangian framework the main thing driving all these decisions is just the D metric in J = R + lambda D. If you change D, it changes where bits get put. D determines how important you think one type of error is vs. another type of error.
Just as an example, say you ran face detection on your video, then you could assign face regions to all your frames, and any error in the face region could be counted as extra important - if you put this into your "D" metric, then the lagrangian coder automatically gives those areas more bits. But that kind of example is rather banal. There are obviously tons of human error-importance issues that you could try to account for, having to do with what objects are most important in the frame, where the motion is, what kind of errors are particularly appalling, etc etc.
Purely numerical error distribution can be important : say you have an error of 3 somewhere and an error of 20 somewhere else. You have bits to change each by 1. Should you change the 3 to 2 or the 20 to 19 ? Well, it depends on their neighborhoods, but I think more often than not you should do the 3->2. That will be more visually noticeable. Using L1 or L2 (or L-N for whatever other N's) causes you to make different decisions in these cases. Most simplistically you can see it as a continuum between minimizing the total abs error (L1) vs minimizing the maximum error (L-infinity). That is, the issue of whether you have clumpy error or spread out error is a pretty big one.
The thing holding back development is a lack of a procedure for measuring real "quality". The problem is changing distortion to change your bit allocation for psychovisual purposes will by definition hurt your abstract measures. (hacky changes to D might hurt RMSE but help SSIM, but in that case I would say some of the change was not "psychovisual" - the part of the change which helps SSIM is in fact an analytical change to improve a certain metric). At some point you have to be able to make a decision that you will allocate bits in such a way that your video will look worse to computers, but will look better to humans. (with our current shitty computer analysis models).
x264 and others have a bit of a solution for this - they use a kind of "crowd sourcing" (bleck web 2.0 buzz word, I feel like I just vomitted in my own mouth a little). They can put beta features in their code and they have mobs of fan-boys who will download betas and try them on lots of videos and then post results on the forums. This gives you lots of real human eyes saying "this looks better" or not for attempts at psychovisual. But I don't think you can really make big developments using that technique - you can only make small heuristic stabs in the dark and then find out if they were okay, because the turnaround time for results from the crowd is too long, and if you release too many dead ends for them to test they will stop doing it, so you have to be reasonably sure it is a good change before publishing it to the crowd, etc. It's not the kind of thing a researcher needs, which is a black box where I can throw videos and say "which looks better to a human".
The result is that we are mostly stabbing in the dark and occasionally getting lucky.
Riding a bike in the city you run into this kind of thing constantly. Every pedestrian and driver thinks they are an expert about bicycle traffic laws and they are eager to inform you with their incorrect and dickish "knowledge". It's a very Seattle/Scandinavian way of being an ignorant dick - to cloak your sour misanthropy in condescension and enforcement of rules. (I'd much rather be yelled at by a New York stereotype who says "hey! wassa matta you, I'm walkin' here!" or whatever)
About a week ago we were riding along. We stopped at a stop sign and waited for the cars to pass. On the other side of the road I noticed a woman standing at the corner talking on her cell phone, just sort of ambling, certainly not making a move to cross. So we take off and ride through the intersection. As we're passing, the woman says "you know pedestrians still have the right of way".
Eh... as usual it took me a minute to register; I thought she was just talking on her cell phone call, but about half way down the block I realized it was directed at us. It's such badly placed hate; if you want to yell out hate at cyclists you should at least pick a time when the cyclists are doing something remotely wrong, there are plenty of dick cyclists out there, I'm sure you won't have to wait long to take out your sour vile rotten soul on them. And, you know, learn to fucking be a pedestrian, and get off your damn cell phone too.
There are frequent difficulties riding down the road. Many cars seem to think that cyclists are legally obligated to make way, or to ride as far to the right as possible. This is not correct. Cyclists are legally required to ride as far to the right as is *safe* for them to do so, except when turning. Generally to be safe, you should ride about three feet to the left of a parked car. People in parked cars do not watch out as they should, and as a cyclist you need to pre-reserve your swerve space, since you can not know when you will need it.
A large amount of the problem with this is that drivers are just so fucking stupid about what rules are important to follow exactly and which are okay to be flexible on. Often I will be riding along and some car will come up behind me and just stay behind me - even though the other side of the road is completely empty and all he has to do is pull out a little bit and go around. People in most of the world have no problem with this and do it constantly, but here in the US there is this bizarre unwillingness to cross the yellow line; oh god forbid I pull out across the yellow line a little bit, it is holy and inviolable. Hell, a lot of the times it's actually a road with two or more lanes going the same direction, and the driver won't even change into the left lane. Nah, I want to be in the right lane, fuck this fucking cyclist cock blocking me, I couldn't possibly be bothered to just move to the left lane. Often roads have a wide turn lane down the middle that noone is using ; hello, the fucking turn lane is an ideal way to pass safely around cyclists, you only need to go about halfway out into it, people going the other direction can also come out halfway into it, everyone is happy, fucking don't be a retard.
The other day N and I were riding along on a narrow busy multi-lane street which is nevertheless a "bike corridor" here in hated bad-street Seattle. This street has parked cars, narrow lanes, and basically no space for bikes, so the only safe way to ride is to take a lane, which is not a big deal for sane people because cars have another lane going the same direction to just go around you. So since we're taking the lane we ride side by side, which makes it clearer that we are just taking the lane. (one of the most important aspects of riding safely as a cyclist is to make it very clear to cars what you are doing - you should not make timid or sudden moves, when you are taking a lane or turning left, it's good to clearly telegraph your intentions, then take the whole lane, or pull out all the way to the left; if someone is opening their door and you have to swerve around, swerve way around so you're more visible, etc.). Anyway, some self-righteous ignorant cock of a driver chose this moment to pull over and roll down his window and yell at us about how it was illegal to ride two abreast. Umm, first of all, no it's not, it's illegal to ride *more* than two abreast. Second of all, your situational awareness and ideas about what rules are important and when is completely fucked; even *if* that was the law, it would be a retarded time to yell at us, since we couldn't really get out of the way anyway even if we rode single file (and if you tried to get in a tight lane with us riding single file you would be a dangerous cock).
Anyway this all happened a while ago and I wasn't going to even write about it because it just makes me sad how fucking stupid and mean people are. It's not just that they're stupid, it's that they are almost intentionally stupid in a self-righteous selfish way; like they choose willfully to not actually know the law, or to not think about the other person's risks and rewards in a certain situation, they only want to follow some dumb rule without thinking situationally, and they want to be fucking right and lord their rightness over others. But I was researching again (in vain) to find a lawyer that can handle Oregon speeding tickets, and I stumbled across so many of this type of comment in web forums and blogs :
"You will lose your license for a while. Hopefully" "You could lose your license for that and I hope you do." "HOw do you figure going 102-106 mph isn’t reckless? Are you trying to kill somebody or are you just too immature to deserve a license?"etc. you see this kind of thing posted all over the internet - people being holier than thou rule-touting fuckers. Do you all have no concept of what is actually dangerous? Going 100 on a freeway is really not dangerous at all (assuming low traffic, and assuming your car is in good kip - you check your tires often, have good brakes, and you have a car that is stable and maneuverable at speed). I dunno what freeways these people are driving on, but the freeways I drive on don't have any pedestrians, or hard turns, or oncoming traffic or parked cars. Going just the speed limit is way more dangerous if you are talking on your cell phone and drinking your big gulp. Going at the speed limit in a busy cyclist/pedestrian area is way more dangerous.
In related news, the Washington State House failed to pass a proper tough cell phone law. Talking on a cell phone is currently a secondary offense which basically means there is no law at all. Earlier the Senate passed a better version that at least makes it a primary offense, but IMO is actually still not tough enough as it allows hands-free talking and it still allows dialing by hand. (for those that don't know, driving while talking on a hands-free is roughly equivalent to driving while exhausted or driving drunk in terms of the affect on reaction time, braking and obstacle avoidance).
While I'm on the subject of car safety, I'll repeat my call for all interactive car computers to be banned, as well as Xenon headlights (damn blinding shit), also window tint (dumb fuckers can't see at night). It should also be illegal for children to bother their mother while she's driving; people need to pay damn attention to the road. I also had an idea on cell phones the other day after yet another incident where some dumb cell-phone talking pedestrian tried to walk in front my car : cell phones are just dangerous in any kind of use with movement, not just driving. Maybe they should just put speed sensors inside all cell-phones and put them on a hard switch to turn off when they are in motion, so you have to stop and stand still (or pull over your car) to talk. Oh, and headlights and bumpers should be mandated to all be at the same height. Like fine if you want to drive a retarded SUV, go for it, but your headlights and bumpers are still going to be one foot above the pavement, not aimed directly at my brain.
I also randomly stumbled across this Bizarre WA Supreme Court Moving Violation Ruling in which they seem to basically rule that because the trooper did not see the defendant commit the crime, he couldn't issue a moving violation. What !? So if someone runs their car into a lamp post and tests positive for alcohol, you can't give them a DUI because you didn't actually see them driving? This seems to set a completely retarded precedent. Says the Supreme Court :
"Negligent driving in the second degree is a moving violation. For the infraction to be valid, the movement must have been made in the officer's presence."more story here or WA supreme court blog
I think 99% of people are horrible at taking vacations if their goal is happiness. They stress themselves out way too much and also fail to push themselves personally. eg. running around to see a bunch of tourist attractions is both stressful and not rewarding in any way. Also, sitting on a beach somewhere nice might feel relaxing at the time, but provides no long term happiness at all (though that's one case where the anticipation of it might really be the happiness - eg. people who live in the cold and take an annual winter beach holiday, the actual vacation does nothing for you really, but all those months in the cold you can look forward to it).
Anyway, if you just want a good normal vacation, you should both stress less and do more. If you're not retarded, that's quite easy, you just don't worry too much about planning, give yourself plenty of time so you're not in a rush, but when you get there actually do the interesting activities, don't just sit around and be lazy or be a pussy and be too afraid to try anything risky.
The longest term reward you can get from vacation is to push yourself personally in some way, eg. to learn something, or do something that's outside of your normal character, have experiences that change you significantly in a way that will stick with you for a long time. eg. take a vacation boating some islands and live aboard a ship with a teacher and learn to sail, or stay on a commune and farm and force yourself to be non-judgemental of the dirty hippies, or take a vacation where you are an S&M "gimp" in Berlin to expand your kink horizons, etc.
Anyhoo, I think the next trend in boutique vacations is "identity vacations" where you pay some package to travel somewhere and be some new character. They give you the right clothes, the right place to stay, and some accessories and a guide to integrate you into that lifestyle. So you might take a "I'm gay in San Francisco" vacation or "I sell jerk chicken and make dancehall music in Jamaica" or "I run a bar on the beach in Mexico" or "I'm a fixster in Brooklyn" or whatever.
The win conditions seem out of kilter. There are two win conditions - connect all the major cities AND have 250 million in cash. The weird thing is these seem to be way way different in difficulty. Connecting the cities is pretty easy, in fact perhaps too easy, the game can be pretty short if you get lucky cards early, but getting 250 million in cash takes a long time and becomes a boring grind. It seems like a better win condition would be something like connecting a major city is worth 40 million in victory points, cash on hand is worth victory points, try to reach 300 million victory points.
Perhaps most broken is that there's just almost no interaction between the players. It seems to be one of a classic type of bad board game which you basically play in solitaire, and it's just a race to see which solitaire player wins first. That is a horrible horrible type of board game. I also don't see any real deep strategy, yes there is planning, but I can't imagine ever playing against someone and being amused by the clever trick they use against me. (basically the only interaction with other players I see is running track to block them ; yes there are optional rule additions that add a bit more interaction, such as open contracts and leaving dropped cargo in towns, but even that is pretty minimal).
I've had a hankering to play good board games recently and have been pretty disappointed. Carcassone is decent and actually has some interesting play (almost all the interaction and complex strategy is about farms), but it's just too simple; I think it's a great kids game. Settlers is a really mediocre game; almost all the real thinking is just in the placement phase, and then the actual play is pretty rote and becomes just tedious after you play a lot. I supposed Settlers is more interesting if you really play the metagame of influencing people to make them trade with you advantageously (just like Monopoly is only an interesting game if you play the metagame), but I'm not a big fan of political metagame as a form of strategy.
So many of the "sophisticated" board games that you see are just a bunch of over-complicated rules that surround a play dynamic that's not very deep. You spend hours reading the manual and figuring out how to play, and then when you actually "get it", you discover the game is trivial (by "trivial" I mean a very smart person will know the correct move in each situation).
I know I should just play Chess or Poker or Go or something real, but it seems like there should be a better middle ground of games that are "fun" and not so serious as those, but also have something actually interesting and challenging to think about during play.
Anyway - while that sort of consumer happiness is empty and unfulfilling and short term and unproductive (much like the happiness of booze or sweets) - there is a type of consumer happiness that I believe is more profound : lusting for the unattainable super-desirable product.
In this form of happiness there is some wonderful product that you can't afford; you read about it, you put posters of it on your wall, you hang out on web forums and talk about it, you follow all the new version releases. You save and save and work hard and some day you buy one. That is happy times. Not because getting the product is so great, but the anticipation, and the hard work to get it. Having some goal, some desire, and working hard to get it, and finally acheiving it - that is one of the greatest true pleasures in life. I think people foolishly think that to be happy their goal needs to be something actually important, curing cancer or whatever, in fact that's not true at all - all that matters is you really want the goal and it takes hard work and a lot of time to get it.
I used to have this kind of happiness with computer parts when I was a kid, I lusted after a video toaster or that 24-bit card for my Amiga, I read about all kinds of products, I saved and eventually I got a DCTV and I was pretty delighted, but when you actually get your goal, the real fun is over and you have to find a new thing.
It's hard to have this kind of happiness anymore, because when you get old and mature you realize that all products are actually pretty fucking irrelevant to your quality of life (like, yeah, a proper HDTV would be nice and all, but I can watch TV on my old thing just fine) - so it's impossible to really get too excited about lusting after some product, and if I had to really work hard and save up to buy something, mmm meh I just wouldn't buy it.
There's a weird drawback to becoming enlightened about happiness. I now know that happiness comes only from inside myself, external circumstances are really irrelevant. You might think that's liberating, but it's actually very difficult to deal with, because you no longer incorrectly believe that external activities will somehow magically make you happy, it's hard to get excited about doing them, and yet you need to do them and you need to be excited about it, because happiness comes from your own excitement.
Nova has gotten mostly unwatchable. Maybe this is part of the generally destruction of PBS by the Republican Machine, which includes the enforcement of "balanced" opinion, and the broadcast of corporate shill self-help bullshit like Suze Orman In my youth I vaguely remember watching Nova and seeing real interesting science. Now it seems like every Nova is some fucking archaeologist recontructing something from history, like building some fucking boat or a catapult or whatever. While that is vaguely amusing, it's completely non-scientific, it doesn't prove anything (archaeologists seem to be almost all quacks), and it belongs on Mythbusters not Nova. (there is a good Nova once in a while still, I recall liking the Quest for Absolute Zero okay).
ScienceNow with Neil "look at me I'm a black scientist" DeGrass Tyson is equally unwatchable. It was vaguely watchable when it had Alan Alda, mainly because he didn't pretend to know anything about science, and they seemed to cover more technology developments which they're better at.
We tried to watch "Parallel Lives, Parallel Worlds" , which is vague about Hugh Everett and the Many Worlds interpretation, but mostly about some whiney emo singing douchebag who can't do math. I turned this off in disgust after about 20 minutes because even in the rare moments when they actually talked about real quantum mechanics, they were not only overly simplistic, but very often just wrong. This is a really interesting topic, and you could do a really good show about the outsider quacks who challenged the foundations of quantum mechanics, you could talk about EPR, Everett, and David Deutsch is a great character too.
A common flaw in almost every science program is to over-dramatize developments and conflicts in science. The shows like to present new findings as "shaking the foundations of everything that came before" and such nonsense, which almost never actually the case.
The most recent offender in that regard is BBC's Secret Life of Chaos. It basically consists of showing some pretty pictures and then the bald buffoon comes on and says outrageous nonsense things like "and this tore down the fabric of Newtonian physics". Umm, no, not really, no it didn't. (A decent story of reaction-diffusion and morphogenesis is here or here )
In other pseudo-science news : we've been watching BBC's nature series "Life" , "Wild China" , and now "Yellowstone" ; all amazing, but they're fucking FAKE ! They stage shots, they use studio footage and split it into location shots, they feed predators to get kill shots, it's just all fake. You can't trust a single shot they show. It's just a bunch of pretty pictures. ( They also use filters and other adjustments; for example in the Yellowstone video they show you the classic beauty shot of Grand Prismatic Spring which has obviously been saturation-pumped ; in real life it looks like : this . )
First a correction : what I said about downsampling there is mostly wrong. I made the classic amateur's blunder of testing on too small a data set and drawing conclusions from it. I'm a little embarassed to make that mistake, but hey this is a blog not a research journal. Any expectations of rigor are unfounded. For example this is one of the test images I ran on that convinced me that downsample was bad :
aikmi -i7 qtable ; CoCg optimized joint for min SCIELAB downsample : 262,144 -> 32,823 = 1.001 bpb = 7.986 to 1 (per pixel) Q : 11.0000 Co scale = Cg Scale = 1.525 bits DC : 19636|5151|3832 , bits AC : 175319|38483|19879 bits DC = 10.9% bits AC = 89.1% bits Y = 74.3% bits CoCg = 25.7% rmse : 7.3420 , psnr : 30.8485 ssim : 0.9134 , perc : 73.3109% scielab rmse : 2.200 no downsample : 262,144 -> 32,679 = 0.997 bpb = 8.021 to 1 (per pixel) Q : 12.0000 Co scale = Cg Scale = 0.625 bits DC : 19185|13535|9817 , bits AC : 160116|39407|19091 bits DC = 16.3% bits AC = 83.7% bits Y = 68.7% bits CoCg = 31.3% rmse : 6.9877 , psnr : 31.2781 ssim : 0.9111 , perc : 72.9532% scielab rmse : 1.980you can see that downsample is just much worse in every way, including severely worse in SCIELAB which doesn't care about chroma differences as much as luma. In this particular image, there's a lot of high detail color bits, and the downsampled version looks significantly worse, it's easy to pick out visually.
However, in general this is not true, and in fact downsample is often a small win.
Without further ado I present lots of stats :
| i0 Cg=1 Co=1 | i0 Cg = 0.6 Co = 0.575 | i7 Cg = 0.6 Co = 0.575 | i4/i7 opt per image | i7 CoCg optimized independently per image | i7 CoCg optimized jointly per image downsampled | ||||||||||||||||
| file | rmse | scielab | rmse | scielab | rmse | scielab | rmse | scielab | Co | Cg | rmse | scielab | Co / Cg | rmse | scielab | ||||||
| kodim01 | 12.6809 | 4.8898 | 12.5848 | 4.8413 | 12.6567 | 4.3415 | 12.7018 | 4.238 | 0.455 | 0.455 | 12.623 | 4.3153 | 1.225 | 12.486 | 4.2525 | ||||||
| kodim02 | 6.235 | 2.1961 | 6.1733 | 2.1793 | 6.2836 | 2.0519 | 6.2544 | 1.9542 | 0.58 | 0.58 | 6.2285 | 1.978 | 1.3375 | 6.4866 | 1.9841 | ||||||
| kodim03 | 4.0098 | 1.7135 | 3.974 | 1.7173 | 4.0621 | 1.5587 | 3.9778 | 1.5883 | 0.705 | 0.83 | 4.0853 | 1.5359 | 1.6 | 4.1235 | 1.6102 | ||||||
| kodim04 | 6.3981 | 2.4661 | 6.3658 | 2.4929 | 6.4083 | 2.2579 | 6.4083 | 2.2579 | 0.705 | 0.705 | 6.4092 | 2.248 | 1.5625 | 6.3698 | 2.1977 | ||||||
| kodim05 | 14.2903 | 7.2293 | 14.0531 | 7.1756 | 14.1613 | 6.5253 | 14.2296 | 6.452 | 0.58 | 0.58 | 14.167 | 6.5291 | 1.5625 | 13.9658 | 6.4326 | ||||||
| kodim06 | 8.9416 | 3.6338 | 8.836 | 3.5923 | 8.9622 | 3.2131 | 9.0316 | 3.1608 | 0.455 | 0.58 | 8.9664 | 3.2184 | 1.3 | 8.8455 | 3.1733 | ||||||
| kodim07 | 5.147 | 2.316 | 5.1145 | 2.1919 | 5.2338 | 2.0167 | 5.2388 | 1.9815 | 0.58 | 0.58 | 5.202 | 2.0047 | 1.225 | 5.1601 | 1.9462 | ||||||
| kodim08 | 14.6964 | 7.5082 | 14.5479 | 7.5237 | 14.5675 | 6.8769 | 14.6411 | 6.7521 | 0.58 | 0.83 | 14.5726 | 6.8285 | 1.4875 | 14.3053 | 6.692 | ||||||
| kodim09 | 4.4789 | 1.8149 | 4.439 | 1.8574 | 4.5303 | 1.675 | 4.5303 | 1.675 | 0.705 | 0.955 | 4.5467 | 1.6359 | 1.4125 | 4.5389 | 1.6906 | ||||||
| kodim10 | 4.9926 | 2.0932 | 4.9477 | 2.1196 | 5.0678 | 1.9887 | 5.0398 | 1.9514 | 0.58 | 0.955 | 5.0585 | 1.9109 | 1.6 | 5.0449 | 1.9556 | ||||||
| kodim11 | 7.9484 | 3.2677 | 7.9006 | 3.2315 | 8.0441 | 2.9234 | 8.0441 | 2.9234 | 0.58 | 0.58 | 8.0478 | 2.9276 | 1.375 | 7.939 | 2.858 | ||||||
| kodim12 | 4.6495 | 1.8486 | 4.6326 | 1.8529 | 4.7335 | 1.6862 | 4.7259 | 1.6663 | 0.58 | 0.705 | 4.7041 | 1.6776 | 1.2625 | 4.7001 | 1.6457 | ||||||
| kodim13 | 18.5372 | 8.3568 | 18.3502 | 8.2634 | 18.5334 | 7.2841 | 18.6579 | 7.1262 | 0.455 | 0.58 | 18.5013 | 7.2697 | 1.1125 | 18.381 | 7.2327 | ||||||
| kodim14 | 11.076 | 4.8628 | 10.972 | 4.7473 | 11.0146 | 4.3268 | 11.064 | 4.2636 | 0.58 | 0.58 | 11.0151 | 4.3308 | 1.3 | 10.9818 | 4.3614 | ||||||
| kodim15 | 5.8269 | 2.4099 | 5.8082 | 2.4665 | 5.9134 | 2.2246 | 5.8383 | 2.2457 | 0.705 | 0.705 | 5.9158 | 2.2098 | 1.525 | 5.8699 | 2.1497 | ||||||
| kodim16 | 5.689 | 2.3266 | 5.6289 | 2.3199 | 5.7372 | 2.0534 | 5.7372 | 2.0534 | 0.58 | 0.58 | 5.7373 | 2.055 | 1.375 | 5.6667 | 2.0276 | ||||||
| kodim17 | 5.5166 | 2.3244 | 5.47 | 2.2994 | 5.6716 | 2.0774 | 5.5853 | 2.0874 | 0.455 | 0.705 | 5.6523 | 2.0574 | 1.4125 | 5.6014 | 2.037 | ||||||
| kodim18 | 10.8501 | 4.8609 | 10.7131 | 4.7903 | 10.9517 | 4.3169 | 10.9639 | 4.2627 | 0.58 | 0.705 | 10.9266 | 4.3006 | 1.3375 | 10.8048 | 4.2189 | ||||||
| kodim19 | 7.1545 | 2.8338 | 7.0872 | 2.8518 | 7.2311 | 2.4977 | 7.2637 | 2.4362 | 0.58 | 0.705 | 7.2158 | 2.4758 | 1.5625 | 7.1314 | 2.4396 | ||||||
| kodim20 | 4.7872 | 1.8258 | 4.7183 | 1.8042 | 4.9208 | 1.6441 | 4.863 | 1.6524 | 0.455 | 0.83 | 4.9265 | 1.6306 | 1.1875 | 4.9427 | 1.656 | ||||||
| kodim21 | 7.7757 | 3.3671 | 7.6338 | 3.3427 | 7.9293 | 3.0078 | 7.8541 | 3.0018 | 0.705 | 0.705 | 7.9204 | 2.95 | 1.3 | 7.7688 | 2.9302 | ||||||
| kodim22 | 8.279 | 3.2205 | 8.1788 | 3.1253 | 8.3292 | 2.8656 | 8.3542 | 2.8114 | 0.455 | 0.58 | 8.3026 | 2.8379 | 1.45 | 8.267 | 2.8436 | ||||||
| kodim23 | 3.917 | 1.5567 | 3.8968 | 1.5138 | 3.953 | 1.4315 | 3.961 | 1.4157 | 0.58 | 0.58 | 3.9481 | 1.4146 | 1.6 | 4.3382 | 1.573 | ||||||
| kodim24 | 10.9877 | 5.2479 | 10.8105 | 5.0477 | 11.0256 | 4.6141 | 11.0435 | 4.5882 | 0.455 | 0.455 | 11.0413 | 4.6005 | 1.3375 | 10.9372 | 4.503 | ||||||
| 194.86 | 84.17 | 192.84 | 83.35 | 195.92 | 75.46 | 196.01 | 74.54 | 195.71 | 74.94 | 194.65 | 74.41 | ||||||||||
explanation : output bit rate 1 bpb in all cases parameters are optimized to minimize E = ( 2 * SCIELAB + 1 * RMSE ) RMSE is on RGB SCIELAB is perceptual color difference metric i0 = flat quantization matrix i7 = tweaked perceptual quantization matrix to minimize E i4/i7 = optimized blend of flat to perceptual matrices The table reads roughly left to right in terms of decreasing perceptual error. "i0 Cg=1 Co=1" : flat q-matrix, standard lossless YCoCg transform without extra scaling "i0 Cg=0.6 Co=0.575" ; optimize CoCg scale for E ; interestingly this also helps RMSE "i7 Cg=0.6 Co=0.575" ; non-flat constant Q-matrix ; hurts RMSE a bit, helps SCIELAB a lot "i4/i7 opt per image" ; per-image non-flat Q-matrix ; not a big difference "i7 CoCg optimized independently per image" : independently optimize Co and Cg for each image "i7 CoCg optimized jointly per image downsampled" : downsample test, CoCg optimized with Co=Cg
On the full kodak set, downsampling is a slight net win. There are a few cases (kodim03,kodim23) where it hurts a lot like I saw before, but in most cases it is a slight win or close to neutral. The conclusion is that given the speed benefit, you should downsample. However there are occasional cases where it will hurt a lot.
I think most of the results are pretty intuitive and not extremely dramatic.
It's a little non-inuitive what exactly is going on with the per-image customized chroma scales. Your first thought might be "well those images have different colors in them, so the color space scale is adapting to the color content in the image". That's not so. For one thing, more or less content of a certain color doesn't mean you need a different color space - it just means that that band of the color space will get more energy, and thus more bits. e.g. an image that has lots of "Co" component colors will simply have more energy in the Co plane - that doesn't mean scaling Co either up or down will help it.
If you think about the scaling another way it's more obvious what's going on. Scaling the color planes is equivalent to using different quantizers per plane. Optimizing the scalings is equivalent to doing an R/D optimization of the quantizer of each plane. Thus we see what the scaling is doing : it's taking bits away from hard to code planes and moving them to easier to code planes (in an R/D slope sense).
In particular, when I visually inspected some of the more extreme cases (cases where the per-image optimized scales were a big win vs. a constant overall scale, such as kodik10) what I found was that the optimized scalings were taking bits *away* from the dominant colors. One very obvious case was on photos of the ocean. The ocean is mostly one color and is very hard to code (expensive in an R/D sense) because it's all choppy and random. The optimized scaling took bits away from the ocean and moved them to other colors that had more R/D payoff.
(BTW rambling a bit : I've noticed that x264 Psy VAQ tends to do the same kind of thing - it takes bits away from areas that are really noisy mess, such as water, and moves them to areas that have smooth pattern and edges. Intuitively you can guess if an area is a mess and just really hard to code then you should just say "fuck it" and starve it for bits even if MSE R/D tells you it wants bits. I think also that improving an area from an RMSE of 4 to 2 is better than improving from 10 to 7, even though it's less of a distortion win. Visually there's a bit difference that occurs when an area goes from "looks good" to "looks noisy" , but not much of a difference when an area goes from "looks bad" to "looks really bad").
So this is in fact not really a surprising result. We know already that heavy R/D bit allocation can do wonders for lossy compressors. That are lots more areas to explore - optimization of every coefficient in the quantization matrix, optimization of the color transform, optimization of the transform basis functions, etc. etc. - and in each case you need to be clever about the way you encode the extra rate control side information.
ADDENDUM : I thought I should write up what I think are the useful takeaway conclusions :
1. It is crucial to do the right kind of scaling to Co/Cg (or chroma more generally) depending on whether you downsample or not. In particular the way most people just turn downsample on or off and don't compensate by scaling chroma is a mistake, eg. not a fair comparison, because their scaling will be tuned for one or the other.
2. Downsample vs. no-downsample is pretty close to neutral. If you downsample for speed, that's probably fine. There are rare cases where it does hurt a whole lot though.
3. Using a non-flat Q matrix does in fact help perceptual quality significantly. And it doesn't hurt RGB RMSE nearly as much as it helps SCIELAB (helps SCIELAB by 10.35 % , hurts RMSE by 1.58 % ).
4. It does appear acceptable to use global tweaked values all the time rather than custom tweaking to each image. Custom tweaks do give you another bit of benefit, but it's not huge, thus not worth the very slow optimization step. (see DCTune eg)
The thing that's bugging me today is the way exe's are locked while they are running. WTF that's retarded, the whole thing is copied into RAM, there's no reason it needs to be kept on disk any more.
Of course it's standard practice when you're developing something to use something like run_prog.bat :
copy prog.exe prog_current.exe prog_current %*so that you can then still write prog.exe , but come on, this is fucking stupid.
In other similar stupidity : WTF I can't delete a directory just because I have an open CMD in that dir ? Just invalidate that path and let CMD handle it.
If you only do that, though, you are being immature and kind of a dick. I used to think "if someone is bothered by this and there's no good reason to be bothered, fuck them" , but that's selfish and small minded and just douchey. If you know people will be bothered - and it's somewhat reasonable for them to be bothered - even if they aren't significantly hurt by it, then you should adjust your actions. For example, talking loudly in a museum doesn't really hurt anyone, it's not like we're fucking art scholars concentrating so hard on the paintings that we need absolute silence, but it's still douchey. On the other hand, talking loudly at a restaurant is perfectly fine, and if stuffy fuddy duddy mc-fuck-pants gives you a dirty look from the next table over, fuck him, he's applying an overly restrictive behavior code that you can reject.
Anyway - where does the car pool lane cheat fall in this spectrum ? I believe that it basically doesn't hurt anyone. Silly people might argue "if everyone cheated in the carpool lane it would ruin the whole purpose of the carpool lane". That's wrong on two points - 1. the carpool lane basically has no purpose to begin with; there is no strong data showing that they actually help traffic or reduce car use significantly, and 2. it's not a problem that's in danger of becoming endemic, since ticket enforcement makes it too expensive for most. Assuming you get a random occasional ticket, it's basically a toll lane to let the rich go faster, which is a perfectly reasonable thing. (Some are opposed to this kind of thing due to some misplaced egalitarian principle, the belief that rich should not have better access to services than ther poor; that is naive and just retarded. The rich will always have been services than the poor, what you should instead fight for is fairness on two fronts : 1. make sure the rich actually pay a fair price for their improved services (currently they often do not), and 2. make sure the poor have the opportunities to become rich (currently they certainly do not)).
Logically all arguments tell me I should be cheating in the car pool lane, but when the moment comes to do it, I just can't make myself. It's partly the thought of all the other cars looking over at me thinking "that fucking douche" ; I wish I could ignore that, but it does bother me. It's also the memory of all the many times I myself have looked over at carpool cheaters and thought "that fucking douche" , and I want to be in that morally superior condescending group - but of course that's just retarded self-defeating martyrdom.
ADDENDUM : Okay, I got some more info ; contrary to what certain people believe, an HOV Lane violation *is* a moving violation in WA (and in most states actually). Some insurance companies apparently do not count it against you, but some do. Apparently it's pretty easy for a lawyer to get it changed to a non-moving violation like "careless driving" (it boggles my mind that "careless driving" would not be a moving violation and not affect your insurance, but there you go). So that is a bit of a real reason to not cheat. Some states have a strict "point system" for licenses, in which case an HOV violation would either be a point or not, but WA does not have legally detailed points, rather they just report all moving violations to the insurers and let them decide how your rate should be set. Because of that it's rather hard to get solid information about what affect exactly an HOV violation or a bicycling violation or whatever would do to your rates.
The most pleasing products in my life are simple, solid, well made analog old-fashioned tools. It's amazing the pleasure in doing something with a good tool; maybe the pleasure is just because I spent so much time with shitty products that when you use a good one it's like sweet relief.
Probably the happiest purchase I ever made in my life was a Japanese Chef's Knife . It just makes me smile every time I chop with it.
Recent good ones :
The Moroso Tire Pressure Gauge is a delightful bit of kit. Just rubber tubing and an analog dial, but it's such a massive improvement over those shitty stick-style gauges. Also, it's not just a gauge, it has a very fine air release valve, so you can get your tire pressures just right by slightly over-inflating them then using the Moroso to slowly release air until it hits the target number dead on. So satisfying.
( BTW while I'm sort of on the topic - I think I've said this many times before, but tires are by far the biggest bang for the buck in car performance ; it's just insane to care about your car's performance and not put very good tires on it. Furthermore, if you're going to do one fiddly thing for your car, that one thing should be adjusting tire pressures for load, temperature, usage ).
One of the insane classic examples is a good stapler . Fucking hell, a proper wonderful solid metal stapler that will last your whole lifetime costs $10-$20. And yet people scrimp in the stupidest fucking way and buy a $5 plastic shitty stapler that's a pain in the ass every time you use it, jamming and failing to puncture thick stacks of paper. This is a mistake I made plenty of times in my youth because I thought I was being thrifty, but it's just retarded, it's not thrifty, it winds up costing you more money in the long run (though only retards use that as an argument since money has different values at different time) and it costs you time and annoyance due to its shittiness. If you're buying basic things like a hammer or a wrench you should buy a really good basic one that will please you and last.
Roughly one year ago I looked at laptops before and concluded that they weren't enough of an upgrade over my belove AOpen 1557G from 2004 which has a lovely matte screen, the perfect laptop resolution at 15" of 1400 x 1050 , a good keyboard layout, and a Radeon 9600.
Now my laptop's VGA out is flaking out. It keeps dropping signal and I have to fiddle with the connector a bit. I think the problem is the solder points holding the VGA out to the board are loose. I could crack it open and try to fix them, but I feel like I have a 50% chance of completely breaking it if I do that (at the moment it still works perfectly if I use its screen as the display, but I almost never actually use the laptop as a laptop since laptops = body death. I use it as a portable desktop that I plug into one of my various workstations, and as an occasional emergency use on actual lap).
I'm terrified of going to a new machine. I have so many settings tweaked out on this thing that I could never hope to transfer. (god damn you Registry, god damn you).
I'm getting old, and computer revs are slowly killing me. Each time I move to a new OS or hardware platform, I spend less time getting to know it. I become more of a casual user. I can't be bothered to dig too much under the hood. Some aspect bugs me and I decide to just live with it rather than fix it. New CPUs come out and I don't learn all the nitty gritty details of how the pipeline works and how to write the fastest code for them. My expertise peaked about 5 years ago and is steadily going down hill, and I don't really see an end to it because honestly I just can't be bothered.
As an aside, I also used to be really hopeful and utopian about computers. I thought yeah the world out there is shit, but on computers it's a meritocracy and an amazing democracy, and researchers share information with hobbyists, and the internet is free for all, and it's only getting better and better. I think that trend peaked long ago and is now headed downhill fast. Yes, there is still a great community of people who are fighting hard to carve a utopian niche out of the electronic landscape, but they are more and more the minority, and things like Apple's draconian control of their platform, or the DMCA and HDMI content lock-downs, or putting advertising on your web site, or software you can't own but have to subscribe to - these are all things that would have gotten computer users outraged in 1995 and are just part of normal life now.
So far as I know there is no good system to do this. (someone correct me if this is wrong). There are lots of service web sites that will do this for you, but they are slow and full of annoying adds and shit like that. The ideal thing would be a Firefox addon that just has a "save audio on this page as mp3".
(ADDENDUM : I guess there is one called "DownloadHelper", but they want money for the MP3 conversion feature. DownloadHelper does seem to be a little better than Unplug in that it has special code for Youtube that identifies the various format streams available so you can download the best one. Amusingly DownloadHelper seems to be very mainly targetted at porn site scraping; it has features like automatically finding new videos from certain sites and putting them in your queue for download. I guess it's the new era version of the automatic NNTP downloader I wrote in my youth. It looks like the FLV's generally have worse audio than the MP4's, so you should prefer them when possible perhaps.).
What I'm doing :
I use "Unplug" to download the .FLV video from Youtube. (* use DownloadHelper to download .MP4 video instead).
I use "MPlayer" to get the WAV audio out of the FLV. The way you do that is :
mplayer.exe -ni -vo null -vc dummy -ao pcm video.flvThen I use the LAME command line build to encode the WAV to mp3. BTW there's a ton of bad old advice out there about LAME command line settings; I use this :
lame -h -V1 audiodump.wav r:\audiodump.mp3but sometimes I wonder if I should use this :
lame -h -V1 --preset extreme audiodump.wav r:\audiodump.mp3which actually makes smaller files usually because it enables some funny filters or something. Dunno.
Anyway, as a compression worker it bother me morally that I am decoding compressed audio from the FLV and recompressing it - I'd really like to just rip the audio stream directly from the FLV and be able to play that, but the fact is that my iPod and my car want MP3's, not AAC or whatever the fuck is in FLV, so it's pretty hopeless.
It's also annoying that I have to then enter the IDV tags by hand. I wish I could scrape the info right off Youtube. In theory you could use a CDDB auto-tagger on the MP3 to do it, but here are two problems with that : 1. I can't find a command line CDDB auto-tagger out there, there are several of them but they are all GUIs, and 2. even if you fire up the GUIs, CDDB seems to just spew fail all over itself.
ADDENDUM : if you don't need MP3's it is actually very easy to get the audio track directly to an M4A which can be played by iPods & most media players these days. Use mp4box ; I suspect there's a more direct command line that will work but this is the way that I've succeeded :
mp4box -new out.m4a -add gremlins.mp4#audio -ipod
We were in the national news for this before, back when Yakima banned thongs and see-through dresses for women ; it was a draconian across the board anti-thong law brought on by espresso stands. Several other area cities have passed laws limiting exposure and individual girls have been charged before for wearing only a thong and X-shaped pasties for example.
Apparently sexy espresso stands are a booming business and lord knows it isn't for the espresso ; Seattle is known for its coffee quality, but the swill that 99% of Seattleites drink is roughly on par with a Denny's coffee. Yes your downtown urban hipster foodie metrosexual will only buy beans that were grown in the shade under Juan Valdez' mustache, but the fat pasty turds in the suburbs just want some caffeine and sugar.
Of course the coffee girls are becoming minor internet celebrities and we can predict a coffee girls pay nudie site to pop up any day now. I'm sure all the news attention is only helping business; newspapers love these stories because it gives them an excuse to post girlie pictures.
I for one am totally in favor of the lascivious espresso stand. I have yet to actually see one myself; I guess they're all out in the far suburbs. Lord knows living in Puyallup or Everett is an excruciating punishment to all the sad sappy fucks who slog through life in the rainy styx - let them have a little T&A with their caffeine to brighten their day. It's a little odd that you're allowed to get high on chemical stimulants to your heart's content, but god forbid you look at a little flesh.
This is the fall of the roman empire! Live it up! I find it sad that for all our excess and indulgence and commercialism and connoisseurism , the pleasures that we are allowed to explore are so tightly bound and formulaic. Americans are absurdly rich, so much so that we basically make up trends in order to find ways to waste money, because we just can't come up with enough ways to waste money in the world. So we have created the whole "foodie" movement so that there is now plenty of $50 olive oil for you to waste money on, and we created the wine movement so you can waste money on $100 bottles - these are our pleasures, we summon the finest goods from all over the world back to Rome to satisfy us. But it's almost entirely limited to tastebuds. What about the sense of touch? What about sex, nudity? Our society is so puritanical and boring.
Furthermore, with the decline of the American education system and the laziness of wealth, what else are these girls supposed to do? They have no skills, there are no manual labor jobs for them to work in. The average American is destined for a life in a service industry, providing some sort of pleasure to the rich overlords. Let the young girls make money from their bodies before they get droopy and are forced into a life of foot massage or real estate sale makeovers.
Police laser is infrared and is a pretty wide beam. At 1000-2000 feet (typical shooting distance) the beam will be a few feet wide. Unlike radar guns, they have to be stationary to use and can't shoot through glass, so the cop actually has to get out of the car and stand there and aim at you specifically. The laser has to bounce off something on your car and get back to the gun to be picked up.
Modern detectors like the V1 can detect laser, though on its own this is basically useless because when it alerts you have already been shot. Unlike radar, there is no detectable scatter. The V1 also false-alarms from sudden changes in illumination such as a reflection of the sun shining on it.
Cops are taught to aim at the license plate, but it's a myth that the plate is the only thing that can be picked up, it's just a good reflector and also a good center target (sort of like aiming your gun at the chest). Most cops and old guns only shoot cars from the front, but new guns and new technique will shoot the rears of cars. Many semi-intelligent people think that laser guns require a straight facing surface to get a reflection back, so they use tricks like angling their plate downward toward the ground. This does not work, because many surfaces on cars are retro-reflective ; that is, they have a BRDF with a large lobe directly backward towards the direction of incident light. License plates typically have retroreflective paint on them, and car headlights and tail lights are parabaloid mirrors which makes them great retroreflectors.
What can you do to avoid laser tickets?
1. Speed in the rain. Since cops actually have to get out and stand and shoot you, they don't do it in the rain. They would rather sit in the car and use the radar gun.
2. Stealth your car. This is theoretically possible to do, but very hard, and most of the commercial countermeasures are snake oil (things like the "Veil" diffusing paint coating or "Laser Shield" prizmatic license plate cover (Veil is basically sticky plastic goo that gives surfaces micro dimples so they scatter light randomly, Laser Shield is ridged plastic plate cover so it reflects light out to the sides)). To really successfully stealth your car you would have to do something like this :
Buy a car that's as small and curvy as possible (eg. an SUV is hopeless), you want lots of angled surfaces like a stealth fighter. Paint your car matte black (no gloss clear coat that will retroreflect). Replace your headlights with bright LEDs or something that doesn't use mirror reflectors. Replace all the glass with very flow reflectance or diffusing plexiglass. Remove your license plate, photo copy it and print it out on hard plastic or something so you eliminate the retroreflective paint.
While this is possible, it's pretty ridiculous and the halfway measures do almost nothing. Also some of those steps are of course illegal, but the thinking in the laser avoidance community is that it's better to get a non-moving-violation ticket for an illegal license plate or lights instead of a moving violation for speeding.
3. Install jammers. These do seem to be real. Radar jammers are illegal everywhere in the US, but laser jammers are legal in most states. Basically they work by having an IR emitter in the same band installed all over the car which makes the gun show an error code. The recommended technique is to use them with an on/off switch and a detector like the V1, so when you get a laser detection, you slow down then turn off your jammer so that the cop can then read you at legal speed.
Laser jammers do not work if they are mounted concealed, they must be mounted with the heads prominent, preferrably 4-6 heads at key points on the front and rear. The best jammer appears to be "Laser Interceptor" , and that runs about $2000 installed.
Cost/benefit says the jammer is not worth it unless you already have several tickets and are at risk of going into the hazardous driver insurance pool or losing your license. (or live in a state like Oregon where it's hard to use a lawyer to get out of tickets).
BTW as an aside it annoys me that worrying about cops and fiddling with my radar actually makes me a much more dangerous driver than I need to be. I try very hard to eliminate all distractions and just focus on the road and the other cars and the driving, but such a huge amount of my attention has to be spent keeping my eye out for cops or responding to radar blips. It's also a myth that tickets make people safer ; boy racers don't slow down until they have enough tickets to lose their license. I never slowed down when I was young and paying $6000/year in insurance. The penalty is just not high enough, and not predictable enough.
I'm a much safer driver now, but the reason is crashing a number of times. None of the crashes was due to me speeding, they were largely due to things out of my control, such as bad road condition problems or old ladies running red lights. The thing that really did it though was my cycling crash, which made me realize how absolutely fucking shitty it is to get injured and have to live the rest of your life with a damaged body.
There are these standard weapons available to us : 1. Colorspace transform (lossy or lossless) , 2. Relative scaling of color channels, 3. Downsampling , 4. Non-flat quantization matrices.
Many image compressors use some combination of these. For example, JPEG uses YCbCr colorspace, which has a built-in down scaling of the chroma channels, also optionally downsamples chroma, and also usually uses a very high-frequency-killing quantization matrix. The result is that chroma is attacked in many ways - the DC accuracy is destroyed by the scaling in the color conversion as well as the [0] entry of the quantization matrix, and high frequency info is killed both by downsampling and the high entries in the quantization matrix.
But is this good? Obviously it's all bad in terms of RMSE (* not completely true, but close enough), so we need something that approximates the human eye's less sensitie chroma receptors.
For a long time I put off this question because it seemed the only way to attack it was by showing a ton of images to test subjects and asking "is this better?". (Furthermore, there's the ugly problem that any perceptual metric is heavy tied to viewing conditions, and without knowing the viewing conditions you may be optimizing for the wrong thing). But maybe I found a solution.
Let me be clear briefly that I am here only trying to address the issue of how the human eye sees chroma vs luma. This is not a full "psychovisual perceptual metric" which would have to account for the brain identifying areas of noise vs. areas of smoothness, repeated patterns, linear ramps, etc. Basically the only thing I'm trying to capture here is the importance of luma bits vs. chroma bits.
Well, it turns out there's this thing from color research called SCIELAB . You may be familiar with "CIE LAB" aka the "Lab color space" which is considered to be pretty close to "perceptually uniform" , that is 1 unit of distance between two Lab colors has the same perceptual error importance no matter what the two colors are. Well SCIELAB is the extension of CIELAB to images (not just single colors). You can read the paper at that link (or see links below), but the basic thing it does is very simple :
SCIELAB takes the image and transforms it to "opponent color" (luma, red-green, and blue-yellow) , which is roughly the color space that eyes use to see light (rods see luma, cones see chroma) (note that here we are transforming "pixel values" into real light values, so we have to make an assumption about the brightness and color calibration of the viewing device). In opponent color space, each channel is filtered. The filter used for each channel represents the angular resolution that a rod or cone has. Basically this is a gaussian whose sdev is proportional to the angular resolution in that channel. This depends on the DPI of the viewing device and the viewing distance (eg. how many pixels fit into one degree at the eye). The gaussian is narrow for luma, indicating good precision, and wider for chroma. The filter also has a wide negative lobe around the center peak, which captures the fact that we see values as relative to their neighborhood - eg. 100 on a background of 10 looks brighter than 100 on a background of 50.
The gaussian filters represent the probability of a photon from a given pixel hitting and activating a rod or cone. The wider filters for chroma indicate that a half-toned image in red-green or blue-yellow will be indistiguishable from the original at a much shorter distance than a half-toned luma image.
One you do this filtering, you transform back to CIELAB and then you can just do a normal MSE to create a "delta E". (CIE also defines a more elaborate more uniform "delta E" metric for LAB , but for our purposes the plain L2 distance is very close and much simpler). The result is a "SCIELAB delta E" metric that is analytic and can be used in place of MSE for comparing images. Having this SCIELAB metric now lets us try various things and it tells us whether they are perceptually better or not (in terms of optical perception of color, anyway).
So far as I know this has never been used in the mainstream image compression literature ; the only place I found it was this Stanford school project tech report : Direction-Adaptive Partitioned Block Transform for Color Image Coding . This paper is pretty interesting; they aren't actually doing anything with the DA-PBT , they're just evaluating color spaces and how to do color coding starting with a grayscale image compressor.
Let's go through the EE398 paper in detail.
First they use YCbCr because they claim it produces better scielab results than RGB. True enough, but there were a lot of other color spaces to try. Furthermore, they don't mention this, but they are using the JPEG style YCbCr, which has a built in 0.5 scaling of the chroma channels (chroma should have a range of [-256,256] but JPEG offsets and scales to put it back into [0,256]) - they have effectively killed the chroma precision by using YCBCr.
They then look at whether sub-sampling helps or not. They find it to be roughly neutral - but when you try subsampling or not subsampling you should also try optimizing all other free options (scaling of the chroma channels, quantization matrix).
The most interesting part to me is "Rate Allocation". They try giving different fractions of the bit budget to Y or CbCr. They find that optimal delta E almost always occurs somewhere around Y bits = 66% of the total , that is the bit ratios are like [4:1:1]. In order to acheive this ratio they had to use small quantization step sizes for CbCr than Y, but that is an anomaly because of the fact that the YCbCr they use has killed the chroma - if you use a non-scaling YCbCr you would find that the chroma quantization values should be *larger* than luma to acheive the 66% bit allocation. (note that using different quantization values on each channel is equivalent to scaling the channels relative to each other).
They also found that using non-uniform quantization matrices (ala JPEG) hurt. I believe this was just an anomaly of their flawed testing methodology.
This paper was the most serious study of color in image compression that I've ever seen, but is still flawed in some simple ways that we can fix. The big problem is that they make the classic blunder of many people working in compression of optimizing parameters one by one. That is, say you have a compressor with options {A,B,C}. The blunderer finds the optimal value for option A and holds that fixed, then the optimal for B, then the optimal for C. They then try out some experimental new mode for step A, and their tests show it doesn't help - but they failed to retry every option for B and C in the new mode for A. eg. for example something like downsampling might hurt if you're using YCbCr, but say you use some other color space, or scale your colors in some way, or whatever, then downsampling might help and the result of doing all those steps together may be the best configuration.
Let's go back through it carefully :
First of all, the color conversion. Let me note that we use the color conversion in image compression for really two separate purposes which are mixed up. One use is for decorrelation (or energy compaction if you prefer) - this helps compression even for lossless mode. The second is for perceptual separation of chroma from luma so that we can smack the chroma around. Obviously here we need a color transform which gives us {luma/chroma} separation - that is, we cannot use something like the KLT which doesn't necessarilly have a perceptual "luma" axis.
From my earlier color studies, I found that YCoCg produces good results, usually within 1% of the best color transform on each image, so we'll just use that. But we will be careful and use a float <-> float YCoCg which doesn't scale any of the channels.
We will then scale Y relative to CoCg. This scaling is equivalent to variable quantizers and is (one of the ways) how we will control the bit allocation to Y vs. Chroma. This scaling gives you a difference in "value resolution" , it doesn't kill high frequencies.
You can then optionally downsample chroma. Note that in naive tests I have found in the past that downsampling chroma sometimes helps visual quality; and in fact in some cases it even helps MSE measured on the RGB data. I now know that that was just an anomaly due to the fact that I wasn't considering chroma scaling. That is, downsampling was just a crude way of allocating fewer bits to chroma, which does in fact sometimes help, but if you also have the ability to change the chroma bit allocation by relative scaling of the channels, the advantage of downsampling vanishes.
I optimized the scaling of CoCg relative to Y on lots of images. Obviously the true optimum value is highly image dependent (you could compute this per image and store it with the image of course), but in most cases a scale near 0.7 is optimal if you are not downsampling, and a scale near 1.1 is close to optimal when downsampling ( 1.0 is not bad when downsampling ). When not downsampling, the optimal bit allocation is usually in the area of Y ~= 66% of the bits, as seen in the EE398 paper. When downsampling, the optimal bit allocation tends to be closer to Y = 80% of the bits. Downsampling generally hurts RGB MSE and SCIELAB delta E, but I find it sometimes helps RGB SSIM.
Obviously downsampling is resulting in more bits being used on luma, which means you'll have sharper edges and better preservation of texture and a visual appearance of more "detail", at the cost of the color values being far off. By my own examination, I often will find that if I just stare at the image made from downsampled chroma it looks "better" - eg. I see more edge detail, and it has less of that obvious appearance of being compressed, eg. less ringing artifacts, halos, stair-steps, etc. However, when I switch back and forth between the original and the compressed, the version made from downsampled chroma shows obvious color errors. The version made from non-downsampled chroma obviously has much better color preservation, but appears generally blurrier, has more block artifacts, etc. The non-downsampled version wins according to "delta E" , but by my eyes I can't really clearly say one is better than the other, they're just different errors.
The last tool we have is a non-uniform quantization matrix. NUQM lets us give more bits to the low frequencies vs. the high frequencies. Generally NUQM hurts MSE, but it might help "delta E" , because SCIELAB accounts for the "fuzziness" of human visual (insensitivity to high frequency pattern). To test this, what we need to try is various different NUQM's for both luma and chroma, as well as optimizing the relative scaling value in each case. I haven't completed this yet, but early results show that NUQM's do in fact help delta E. Note that I'm not talking about doing a per-image optimal NUQM like "dctopt" does or something, just finding something like the JPEG style skewed matrix to use globally.
Some numbers for example :
On a 512x512 color image of a face , at 1.0 bits per pixel ,
optimizing quality at constant bit rate
baseline : delta E = 2.2933
not downsampled , optimal CoCg scale = 0.625 : delta E = 2.155 (bits Y = 72%)
downsampled , optimal CoCg scale = 1.188 : delta E = 2.381 (bits Y = 80%)
best NUQM and scaling (no downsampling) : delta E = 1.899 (bits Y = 61%)
( JPEG delta E = 2.7339 )
One thing I notice that NUQM does obviously is give a lot more bits to the DC's. In this case :
not downsampled, same cases as previous UQM = uniform quantization matrix UQM , bits DC = 15.4% , Q = 14.0 , delta E = 2.155 , bits Y = 72% NUQM , bits DC = 19.4% , Q = 7.25 , delta E = 1.899 , bits Y = 61%
Here Q is the quantizer of the DC component of Y - in the UQM case all Q's are the same (though the Q for chroma is effectively scaled). In the NUQM case the higher frequency AC components get much higher Q's. We can see from the above that because of NUQM, the quantizer for the DC can be much lower at the same bit rate.
Personal visual inspection indicates that the NUQM images just have much more "JPEG-like" artifacts. That is, they generally look more speckly. They obviously preserve flat areas and simple ramps somewhat better. The tradeoff is much worse ringing artifacts and destruction of high frequency detail like fine edges. (in my case the lower Q from NUQM also means a much weaker deblocking filter is used which may be part of the reason for more speckly appearance).
In any case, NUQM clearly helps delta E due to the ability to take bits away from the high frequency chroma data - much better than just scaling and downsampling can.
This is all very interesting and promising, but we have to ask ourselves at some point - how much do we trust this "scielab delta E" ? eg. by optimizing for this metric are we actually making better results? More and more I am convinced that the biggest thing missing from data compression is a better image quality metric (and then once you have that, you need to go back to basics and re-test all your assumptions against it in the correct way).
Color links :
Working Space Comparison sRGB vs. Adobe RGB 1998
Welcome to IEEE Xplore 2.0 Using SCIELAB for image and video quality evaluation
Video compression's quantum leap - 12112003 - EDN
Useful Color Equations
Useful Color Data
Standard illuminant - Wikipedia, the free encyclopedia
SpringerLink - Book Chapter
S-CIELAB Matlab implementation
References related to S-CIELAB
Lab color space - Wikipedia, the free encyclopedia
IEEE Xplore - Login
help - sRGB versus Adobe RGB (1998)
efg's Chromaticity Diagrams Lab Report
CIECAM02 - Wikipedia, the free encyclopedia
Chromatic Adaptation
Brian A. Wandell -- Reference Page
Ask a Color Scientist!
A top down description of S-CIELAB and CIEDE2000. Garrett M. Johnson. 2003; Color Research & Application - Wiley InterScienc
A proposal for the modification of s-CIELAB
MLK in south Seattle was recently all torn up and rebuilt; it has fresh smooth pavement, and the light rail line running down the middle of it. Late at night (which in Seattle means after 9 PM), it's almost completely empty of traffic, but the light rail is still running. When the light rail runs, it triggers all the lights ahead of it all down the street so that it doesn't have to stop. The light rail trigger puts up a flashing light and a bell and all kinds of stuff.
What you do is hang out on MLK until a train comes by, then you pull out and just surf the wave of greens all the way down the road. It's almost like a runway - long smooth empty expanse with all the cross roads blocked off.
For one thing, it's absolutely dangerous. There are tons of buttons, and pretty much all the car computers use some kind of selection wheel and context-sensitive buttons. That means you have to look at the screen to know what mode it's in to know where you should scroll and what the button will do. Nothing in a car should ever require you to take your eyes off the road. I know you get to memorize the menus a bit over time, but every car I saw the menus are very deep and complex, and people are inevitable seduced to go fiddle into their car status and check their average speed and tire pressures or go edit their address book during traffic, and that means unsafe driving. I think most people now finally would admit that talking on a cell phone in a car (even hands free) is very dangerous (though it doesn't seem to stop anyone from doing it) - the car computer is really no better.
It's a terrible trend that so many cars now have the radio and air conditioning and such settings buried in these computers, which means just for normal adjustments that you want to make while driving you have to look away from the road and fiddle around.
But say you just don't give a fuck about hurting other people or crashing yourself. I still think car computers are retarded. One problem is just that they are generally rubbish. Okay, let's pretend that's not a problem and your car actually has a really good one. You're still faced with what I believe is the most fundamental problem :
Car time scales are not the same as electronics time scales.
That is, in 5 years your car might still be very usable and great, but in 5 years your computer will be shit. Computers should not be tied to the car. In 5 years your nav system will be laughably poor compared to cutting edge, the display will suck, etc. etc. Even if you like car computers, they should be a separate pluggable component, not built in. Furthermore, car development times are generally long, so by the time the car comes out, the computers in it are generally already out of date.
Hell cars can be kept 10-20 years, and in those cases the computer becomes a really annoying anachronism.
We flew down to Arizona to get it and drove it back to WA. Spent the first night in Vegas, then drove back the 93 to the 84. The 93 is perhaps the most desolate major highway in the US; it's all high desert, big flat valleys and stark snow capped mountains. There were a handful of fun twisty mountain passes, and some big straights where I got the car up to 130 or so. It was an excellent way to get acquainted with her. You can see an annotated slideshow at flickr .
(while I was at it, I also finally put up some Thailand pictures ; these are pretty much all N's nice photographs).
Of course I went through most of the US without much trouble from the fuzz, and immediately got a ticket in Oregon for going 85 in a 65. Fucking Oregon. I now have also found that Oregon is one of the worst places in the US to get a ticket, because they don't have a system where you can use lawyers to get off; apparently they have laws or precedents or whatever which means you can't do the normal thing that lawyers do of challenging the radar gun calibration. (of course, hypocrites that humans are, it's not like Oregon is just generally a more law-abiding place or a place where you can't get out of charges; try searching for "Oregon Lawyer" and you will find that the state is absolutely chock-a-block with drunk drivers who get out of their convictions, there are no speeding ticket lawyers, but masses of DUI Diversion lawyers). (see more at end)
How's the car? (you ask) , eh it's fucking great. Is it worth it financially? Surely not, you could be almost as happy in a 370Z or an Rx8 ; really the modern Japanese sports cars are such amazing value that buying anything else is pretty retarded. But I've never felt anything like it. The controls just feel so good, the cluth is so heavy and solid, the steering feedback is sublime, the gas pedal is responsive. The suspension is too stiff for the terrible Seattle road conditions, and it's not an ideal commuter car, but when a gap in traffic opens up and I slam the trottle, or when I go ripping around a corner, it makes me smile and everything is right with the world.
I've been joy riding around Seattle a bit, looking for fun roads. We went and cruised out Redmond - Snoqualmie Valley - High Bridge Road - Snohomish this weekend, which is one of the classic motorcycle rides in the area; not a bad run. On the way home for AZ, we took the 14 through the Columbia Gorge a bit, which was pretty sweet. There are some really classic roads in that area that I'll go back to some day ( Rowena Loops on Hwy 30 in Oregon, Maryhill Loop Road off the 14, and then you've got Wind River Road and lots of good stuff in the Gifford Pinchot, but that has to wait for summer). When you're looking for good driving roads, the best way is to look at motorcycle web sites, since those guys actually pay attention to scenery and pavement quality and twisties and all that good stuff.
More ticket related ranting : when I got the ticket in Oregon, I was of course travelling along with a few other cars at exactly the same speed. The cop singled me out and popped me with laser and came over and picked me out of the group. That's a fucking awful disadvantage of this car. There's a story going around the net that Geico gives millions of dollars worth of laser & radar guns to police departments. Dunno how true that is, but it is pretty sick the way the police are basically giving money to insurance companies. I actually don't have a big gripe with police using traffic stops to raise money for their cities. It's not their fault, it's the fault of all of you - the fucking retarded voters who vote against taxes and yet want services and give them no other ways to raise money. The sick thing is that even on a $300 ticket, after the cost of the police time and the court and everything, they probably only get $20-$50 for the city. On that same ticket the insurance company gets $2000 or so over the next five years.
Oh, also while I'm ranting, the fact that tickets are based on amount over the limit is fucking retarded. It should be more like *percent* over the limit. 85 in a 65 on a fucking wide open freeway is a big difference from 45 in a 25 , but both are tickets for twenty over.
Maybe I'll write up a full review of the car for the internet's benefit some day.
The Curry House - Glossary of Indian Restaurant Curries
pretty good page though probably the UK versions of names
Seattle Traffic stop Map
nice map, surprisingly gathered by the Post Intelligencer. You can clearly see the speed trap at 85th on the 405 right where our work is. It seems
there are basically no cops on the bridges, so I can go ahead and speed there more.
Quick question for a Harrier driver, or JF [Archive] - PPRuNe Forums
Holy Shit - I love it when I find these little web forums that are tiny enclaves where the actual fucking people who do these things chat with each other.
In this case, the thread is about the hover capabilities and limitations of the Harrier, but you can browse around the forum and be endlessly entertained.
Photo Shoots 2009
Nevada Northern winter freight weekend 1 photos
Nevada Northern 2007 Winter Freight
- another similar thing - there's this whole community of people who restore old trains, and then pose them and take photo shoots of them; it's a lot
like pornography, the trains are just preened and posed to capture the "money shot". Very interesting.
Manheim Consulting Used Vehicle Historical Index
Unforunately they charge for their best data.
Kevin Beason - gobal illumination
Lots of papers here.
HEAVY LITTLE OBJECTS
is a blog where a dude takes specimen-style photos of random objects around the world. The newer stuff is kind of bollocks, but if you browse into the past a bit
there's some gold.
and finally, I heard Bruce Dixon on the radio and it made me think "amen brotha, testify!" ; he's the only speaker I've heard in a long time that really got me fired up
and ready to take to the streets. One of the main things he's saying these days
is basically that Obama is a huge disappointment to liberals and blacks in particular, and we need to hold him accountable. The Obama administration and policies are a
direct continuation of GW Bush (same people running the Fed, same people running Defense) , and in some ways things are actually worse (civil liberties, transparency,
executive immunity, illegal war methods). He doesn't just call out Obama though, his greatest ire is at the weak liberal voices that refuse to critize Obama, that are
beholden to corporate interests, that fail to do independent journalism or speak the truth to power. Sample some Bruce Dixon here :
Black Agenda Report the journal of African American political thought and action
Black Agenda Report Obama's SOTU, more than a penny short evildoer's Blog
Anyway, it got me to thinking - who really was this Seattle character that we're named after?
Seattle is much liked by hippies because of his famous speech which is full of wisdom and environmentalism and shit like "the land does not belong to us, we belong to the land". Apparently this speech are similar quotes are entirely apocryphal.
If you read between the lines of the official history a little bit, I think we can see who Seattle really was : an Uncle Tom, a conciliator, and a traitor. He was chief of the Duwamish, which was one of the weaker tribes in the area (weaker than the Snohomish or Nisqually). The various tribes often fought, and Seattle was wise enough to see that the way to strengthen his tribe was to do a deal with the devil and make friends with the white settlers who were moving in to the area in increasing numbers. So Seattle befriended Maynard and they used each other as allies to increase their personal powers. In the brief "Battle of Seattle", Chief Seattle held out his tribes and the other natives were easily defeated.
A better hero is Leschi , chief of the Nisqually, who was initially accomodating to settlers, but when it became clear that his tribe would be forced onto unlivable land, he tried to foment a rebellion from all the tribes. He was captured and killed by the whites of course.
Of course the whites wrote the history, and with very little first hand information or accounts from natives, Seattle was made the hero and the prominent native leader. So the next time you see a statue of Chief Seattle (or Sealth or Si'ahl or Seaillhth) , spit on it.
1.A. One way is just with coding order. In something like a DCT with zig-zag scan, we are assuming there will be more zeros in the high frequency. Then when you use something like an RLE coder or End of Block codes, or even just a context coder that will correlate zeros to zeros, the result is that you will want to crush values in the high frequencies when you do RDO or TQ (rate distortion optimization and trellis quantization). This is sort of subtle and important; RDO and TQ will pretty much always kill high frequency detail, not because you told it anything about the HVS or any weighting, but just because that is where it can get the most rate back for a given distortion gain - and this is just because of the way the code structure is organized (in concert with the statistics of the data). The same thing happens with wavelet coders and something like a zerotree - the coding structure is not only capturing correlation, it's also implying that we think high frequencies are less important and thus where you should crush things. These are perceptual coders.
1.B. Any coder that makes decisions using a distortion metric (such as any lagrange RD based coder) is making perceptual decisions according to that distortion metric. Even if the sub-modes are not overtly "perceptual" if the decision is based on some distortion other than MSE you can have a very perceptual coder.
2. Chroma. It's widely just assumed that "chroma is less important" and that "subsampling is a good way to capture this". I think that those contentions are a bit off. What is true, is that subsampling chroma is *okay* on *most* images, and it gives you a nice speedup and sometimes a memory use reduction (half as many samples to code). But if you don't care about speed or memory use, it's not at all clear that you should be subsampling chroma for human visual perceptual gain.
It is true that we see high frequencies of chroma worse than we see high frequencies of luma. But we are still pretty good at locating a hard edge, for example. What is true is that a half-tone printed image in red or blue will appear similar to the original at a closer distance than one in green.
One funny thing with JPEG for example is that the quantization matrices are already smacking the fuck out of the high frequencies, and then they do it even harder for chroma. It's also worth noting that there are two major ways you can address the importance of chroma : one is by killing high frequencies in some way (quantization matrices or subsampling) - the other is how fine the DC value of the chroma should be; eg. how should the chroma planes be scaled vs. the luma plane (this is equivalent to asking - should the quantizers be the same?).
The biggest win of the early shift is that traffic is so *reliably* non-existant. People often suggest shifting late as if that's equivalent to shifting early. It's not even close. The thing is, traffic problems are not of instantaneous duration. An accident during rush hour (or a bridge opening or whatever) will cause lingering traffic for *hours* afterward. That means when you shift late, you either have to shift *really* late, or you have to have a pretty high probability of at least moderate traffic.
The traffic density ramps up very fast in the morning, reaches peak in 7-8 and then bleeds off very slowly. (The best data I've found is UW HOV study ; click the green boxes to download PDF's or go straight to Congestion Frequency ). Congestion before 7 AM is reliably near zero. Then it trails off gradually.
To shift late to really avoid traffic you have to shift to 11:00 - 7:00 , and even then you're going to be hitting way way more traffic than you would at 7:00 - 3:00 ; something like an accident on the 520 can easily make traffic bleed way past 7:00.
So, shifting early is awesome. No, not really. It means you have to go to sleep by 10 or so, eat dinner at 6-7, so you never get to see friends at night. If you do stay up late one time, it completely fucks you up.
The worst thing is that my body clock just doesn't want to adjust even with about 2 weeks of pretty steady early schedule. I wake up and I'm just exhausted, I'm yawning all day. I don't feel hungry at the early-shifted meal times, but if I don't eat I get woozy. So I'm just a bit miserable all the time.
I don't know how to live!!
What a load of poppycock.
The reality is that pursuing what you love is of marginal value at best, and is harmful at worst. Many people like myself find that going to work in something you love (video games) strips all the joy out of that thing and in fact removes something positive from your life. Usually doing "what you love" means going into a crowded field where lots of other people also want to work, which means you will have trouble getting a decent job and decent pay.
What actually matters to happiness in the workplace ?
1. Choose a job you can be very good at. There's just massive benefit to being one of the best in the world at something, or having a talent that's desirable or unusual. You don't want to be an easily replacable worker, because then you can be treated like this. This does not mean you have to be some superman, however. You could specialize in something that most other people don't want to do. Or you can get some licensing that makes you rare (like a crane operator or underwater welder).
2. Choose a job that doesn't tie you to a specific company or geographical location. Avoid jobs where there's basically just one employer in that field, or where all the companies are in the same city. Your power in controlling your life comes from the ability to move where you want to live, or change jobs if your employer treats you badly. You never know when something will go sour with a certain employer or you may have to or want to move for some reason.
3. Choose a job where the working conditions are pleasant. This means the physical environment of the office, the hours you have to keep, who your coworkers are. All of this is way more important than what you actually do for the work. A huge factor in this is the aforementioned freedom to choose from multiple employers - you don't want to be stuck having to accept the one job you can get, freedom to choose lets you pick an enjoyable place to be.
4. Choose a job with flexibility. This may vary for others, but for me the flexibility to work what hours I want, take vacation when I want, etc. is massive. Generally this means picking a job where you are judged by delivering some work product, not just putting in hours each day. Then you can choose your own path to make that work product. Obviously this could be software, but the same goes for custom bicycle frame builders, web site designers, etc. anyone who's running their own business or an independent contractor or just in a good employer situation where they give you product deadlines instead of work hours.
5. Choose a job with a pathway for advancement or a way to stand out.
6. etc... you get the idea
The important thing is freedom and power, not doing something you're passionate about. Passion is for love making and cattle. This is work.
He said Seattle is in a huge budget crisis. Obviously we have to find new revenue sources and also cut services. He generally didn't try to dodge or candy-coat the issue or make any stupid pledges to not cut this or not cut that the way most politicians do. One thing he said that was particularly good was that we need to find a long term sustainable budget balance where intake equals expenditure, as opposed to continuing the one-off tricks to make the budget work this year without thinking about the future (our previous government has done things like freeze hiring and freeze purchases of new buses - these things only push maintenance cost into the future).
He talked a bit about the whole viaduct broohaha. I actually didn't know that a big part of the problems it that the Seattle seawall has been deemed unsafe; engineers say it has a 10% chance of failure in the next 10 years, and in a big storm we could have a huge disaster like situation in the waterfront low areas. McGinn says the top priority is the replacement of the seawall whether we do a tunnel or not, so I think that's cool. He also said his vision for a non-tunnel alaskan way is a lot like what SF did with the embarcadero - just turn it into a regular street, and use the savings for public transit and improving I-5 as well.
They talked about the 520 bridge project a bit also. McGinn wants to have no HOV lanes on the new bridge and instead have light rail. Whether you agree with that or not (I do), his reasoning is just very mature and very sensible. 1. The reality is that HOV is not used as much as it needs to be to make sense as a dedicated lane, and buses can share the light rail lane. 2. we need to provide a means of transit for the poor in our increasingly 3rd-world country, and 3. this bridge will have to last 75 years, so let's think about the city we are building for the long term future.
However, before we get too excited, let us remember that McGinn has very very little power, the Seattle mayor is a weak executive; all the decisions will be made by the city council, and most of them have to be ratified by the state legislature and possibly the king county council as well. It's a huge beaurocratic mess of cross-organizational committees.
In these situations I wish we could just vote McGinn to be temporary dictator and let him fix our fucking mess without all the retarded interference from petty lawmakers protecting their pet interests.
ADDENDUM : I forgot the main reason I wanted to write about this, was that it was somewhat discouraging to hear the reasonable intelligent voice of McGinn contrasted with the self-serving retarded petty emotional callers. The typical caller had questions (all call-in questions are actually comments, of course) like "I live in Federal Way, why should I be paying for the viaduct?". Well, first of all Mr. Federal Way Retard, most people who drive on the viaduct either live or work outside of Seattle proper. It's not for people who live in the city to get around the city, it's a connector that goes right through and largely benefits the surrounding communities. In fact, all surrounding communities generally steal value from the big cities; the city centers are what provide jobs and population magnets, but they get less revenue per capita as the rich people move to the outlying suburbs, so if we were being fair the outlying suburbs should really be paying a lot more towards inner city projects. Second of all, even if it weren't a fair distribution of charges, can't you see the bigger picture? These are long term projects for the whole metro puget sound area; these are about constructing a city for all of our future. We shouldn't bogged down in these petty squables about how it will affect one particular house that's near the 520, we should be thinking about the greater good for the whole area 50 years down the road.
Some just intentionally lie to me to discourage me from being interested in cars. Like when I was looking at Caymans I was like "what about the 911?" and the guy was like "well that will run you $70k or more used, I think that's out of your range". WTF. I know it's more like $50k.
Some are just bizarrely unhelpful. Like when I drove the Mazdaspeed 3 and I was like "hmm I really like it but these seats are pretty awful, do you think I could swap them?" and the guy was just like "I don't think so, and it would be really expensive anyway". WTF.
Some are just super sleazy and weird. They love to ask you about what other cars you're considering and then tell you just absurd retarded negative things about them. Does that actually work on people? It just makes me want to get the fuck away from you.
In general they are just shockingly lazy and actually not pushy. I gave the Porsche dealer here a spec and told him if he could get a car like that in I'd probably pay their premium just to not have to deal with it. He can source cars from any other dealer around the country. Of course he makes no effort to actually do it, and I can see on the web searches that various matching cars exist.
Now the assholes I'm dealing with are just incredibly inflexible and dickish. They make me fight tooth and nail for every tiny concession. Jesus I'm trying my hardest to hand you a bunch of fucking money, do you want to sell or not? WTF. I'm so fucking tempted to walk away from the deal, but then I have to start all over again with someone else. URG.
Like for example, the inspector I sent found out the battery was dead, so I call and I'm like "yeah it looks okay but the battery is dead so you have to replace that" and they respond "I dunno if we can do any repairs at that price" ; WTF you're just being a dick for the sake of being a dick, we both know perfectly well that you will not sell me a car with a dead battery in it, and if I just complain a while you'll cave in, but you just want to add some extra unpleasantness like a shit cherry on this shit sundae.
I swear right now I'll never buy from a dealer again. If I want to buy used, I'll buy from an individual (and only the 1st owner). If I want to buy new I'll use one of those online car direct sites. It should be a nice experience buying an expensive car; it should be like flying first class. They should give you hot towels and champagne and call you "sir". Instead they stuff their shit-covered gangrenous cock in your face and yell "suck it" in your ear, and if you refuse then they don't let you buy a car.
The Singer 911 - okay I don't actually think the 911 is a great example of this, but I stumbled on this and it reminded me that if I had arbitrary money and multiple cars, what I really want is an old car that's hollowed out and filled with modern bits. Old cars just look *SO* much cooler than new cars, I love old-style paint jobs, and they have better functional designs too, they're smaller and lighter. I *LOVE* the minimal functional interiors with just simple switches and no computer bits. And with a modern engine and the light old car, this thing does 0-60 in 3.9 sec. Fuck yeah. (instead of the 911 I'd rather see an old Ferrari, like a 1970 246 or Ferrari 250 GT SWB , or an old Jag like an XKE or XKSS, or a BMW 507, or there's plenty of gorgeous old cars to choose from )
The Empire That Was Russia The Prokudin-Gorskii Photographic Record Recreated (A Library of Congress Exhibition) - some cool photos or the diversity that was Russia before communism
Southwest Image Gallery - more cool photos; holy shit Southern Utah has an embarassment of riches, and despite my constant road trips around that area I have never been through the good stuff at all because it's always too far out of my way as I'm trying to do the CA-TX route. I would love to cruise all through there some day and do Bryce / Canyonlands / etc
Security Driver Article Info Center - holy shit holy shit. This page is written for like Blackwater driver type people. Some creepy shit in here, and also some really good articles on just how to drive well.
Pashnit California Motorcycle Roads - really nice motorcycle touring page. Has tons of photos and route slips. Useful for cars looking for nice country roads, and even for bicyclists. Mostly California. I miss CA.
English Cut - Dave sent me this blog; pretty amusing
DIE ANTWOORD - Afrikaans Anti-Heroes - awesome videos rave/rap semi-ironic trash - wow !
All the Strange Hours · Making and Thinking About Visual Art - I think his work is shite, but he writes some pretty interesting technical stuff about how artists look at color and the process of painting. I found him because I've been working on chroma and found these : flesh tones , chroma vs saturation , chroma
Munsell Color Science Lab FAQ is full of amusing stuff; it's not super technical, it's for lay people; interesting stuff on the eye and perception of color; this is also pretty amusing : Color Research Demonstration Images
I'm not convinced that they should necessarily be illegal to own (or controlled, like owning a tiger is). But certainly the owners should be prosecuted for assault with a deadly weapon or negligent homicide or some shit like that.
The arguments that are made by the pro-pitbull lobby are so absurd. Like "they're really sweet dogs if you raise them right", "my dog is my companion how dare you outlaw it", blah blah - you know what? a Schnauzer is also a really sweet dog if you raise it right, and it could be your companion, and it won't bite off your baby's face. There's just absolutely no justification for why you would have that dog instead of a safer one.
This is also another one of those cases where I wish social scorn would step up. We shouldn't really need the government to intervene here. When someone says "hey wanna meet my pit bull?" you should respond with "keep that dangerous thing away from me, you deranged psychopath".
One funny thing is that *year* affects price a lot more than mileage. That is, a 2002 with 10,000 miles will generally be a lot cheaper than a 2004 with 30,000 miles. Now in some cases that makes sense because the older car has less features and is thus less desirable. But in many cases that makes no sense at all. The actual "age" of a car in terms of lifetime is its mileage. And car models tend to change discretely, not continuously from year to year. That is, there will be a major revision some year, and then it basically stays the same for many years. The reality of pricing is that people basically price by year and then just make a small adjustment for mileage; that's a big mistake which means you can exploit it by buying an early year car from a certain revision (though you usually don't want the first year of a revision).
For example with 911's there were major revisions in 1999, 2002, 2005, and 2009. Another thing I've noticed is that some year models are specifically known to be bad, but that is not particularly well reflected in the price, so you just have to avoid those years. So for example 2005 is known to be a lemon year. So you get maximum value by buying a low mileage 2002 or 2006. You get the worst value by buying a high mileage 2008 or 2004-05.
Another funny thing I've seen is if you search around a bit, you can often find the same car listed in multiple places with different prices. For example I saw a used car on a dealer's web site listed for $59k, then listed again on autotrader for $56k , then on ebay for $54k. You could probably get it for $52k if you fought hard; if you just saw the $59k on the dealer's site you might think you're getting a deal at $56k but in fact that's just their asking price on autotrader. In another case I saw a car on the Porsche.com dealer-swap network listed for $56k , on the dealer's own web site for $54k, and on autotrader for $52k.
Another useful thing I've found from searching is that you can use the google cache to see how long certain pages have been up, so you can tell how long a car has been advertised on the net. Obviously if it's been sitting for sale for many months you're gonna have a lot more opportunity to bargain.
I looked at one car at one of these luxury car consignment shops; the dealer guy there admitted to me that they don't really care that much about selling consigment cars, and he would try to get the owner to eat a low price to get it sold. Obviously the dealer is still trying to fuck you, but if he's also trying to fuck the owner then at least the fuckage is shared.
One cool thing about buying used cars in the modern age is they all have computer chips that record faults, so if you have them inspected by an independent mechanic who can pull the computer codes. The manufacturer uses these codes to see if you have done anything that would void warranty, so they're pretty good. It will tell you things like over-rev red line events, overheating events, low oil events, etc. Obviously the computer can be tampered with, but if it's been cleared you can see that too.
Something else I looked into a bit are the CPO (Certified Pre-owned) programs. They give you an extended warranty (usually 2-3 years) and perhaps more importantly they mean the car passes some checklist of basic problems, has decent tires & brake pads, etc. If you're buying a local car or a cheap car, this doesn't make any sense, but if you're buying a car that's far away, there's a pretty big bonus value to knowing it at least passes the CPO check before you fly out to see it yourself. Obviously extended warranties are always a bit of a ripoff, but say the CPO adds $3000 to the car price, the actual expected value of the warranty that you get back is maybe $2000, but the value of the inspection is $500 or so when you live far away, and the time savings is worth $500, so you wind out okay on the deal.
Oh, another thing that's useful to know is geographic variation is really severe. Long ago I wrote about the weird fact that used Subarus sell for so much money up here in WA that you can almost buy them in CA and drive them up here and make a career out of it. The same is roughly true of the 4WD Porsche 911 - it's around $10k cheaper in CA or AZ. Even aside from the 4WD / rain car variation, used cars are just way cheaper in the west/south, particularly in LA, Phoenix and Houston. They have way more selection down there, much bigger market, more competition.
prosac forman oper labsand what you will get is searches that have results for :
prozac foreman opera labsnote that I'm not talking about the "did you mean" - I mean it silently decides to give you results for a different word. Awful.
Fortunately there is a trick to get around this. Just put your search word in quotes. Apparently you could also use a +, though that also makes the word mandatory.
See for example : here
It seems to me at least part of the problem is that the stemming is not aware of changing word meaning. eg. obviously if I search "widget" then results that contain "widgets" are probably good, but changing "prosac" to "prozac" is giving me completely unrelated results. You should only automatically broaden the search to word variants that are actually related.
Obviously you have to be flexible and not push things; say they get really offended anytime you say "banana" ; you might think "that's fucking stupid and illogical" but still you should refrain from saying banana, you can't try to reason with them about the unreasonableness of their offense. You have to just respect it and let it go. Say you really like musical theatre, they don't, so don't try to force them to go to musical theatre. And they also have to be flexible and understanding enough to let you go to musical theatre on your own in that scenario.
A crucial aspect is being sympathetic. You have to care about their feelings and sympathize even if you think they are being illogical or unfair or whatever. I find that whole "I hear that you are saying you feel insecure because of the way I looked at that other girl" kind of repeat-back mantra to be really repulsive since it's just a surface act, maybe it helps, I dunno, but the real thing you have to do is much deeper. You have to actually care that you hurt them and not care why, even if you think they are being totally unreasonable, you have to try to see the way they are experiencing the situation and how you can make it better for them.
One of the hardest moments is when you do something that hurts your lover and they lash back at you. In this moment they can say things that are really hurtful, because they know all the things you are most sensitive about, and also because coming from their mouth it stings doubly. The ideal response is to ignore their words (since they didn't really mean them) and hear what they are really trying to say which is something like "you hurt me", and try to stop yourself from responding with anger and instead look at what you did that made them act that way. This can be very hard to do in practice, it requires great levels of self control and confidence and awareness.
Something I always struggle with is the idea of "fairness" (like wah wah it isn't fair). You feel like you are putting in all this work and the other person isn't matching, or you feel like you're compromising more than them, or you're doing so much and they don't appreciate it or whatever. You feel like they're mad at you and they don't have a good reason to be; "wah wah it's not fair, I've been so good". You feel like they should suffer as much as you. Or you know that you could smooth over a fight by compromising but you don't think they've earned the happiness that you can give them. It's important to get past all of these ideas. For one thing, you may well be wrong - it's easy to see the work you are doing, it's not always easy to appreciate how much the other person is doing for you, so your idea that you have been compromising more might just be total hogwash. For another thing, even if you have been doing the lion's share of the work, so what - if you can make the situation better, you should do it, because you should be working with your partner for improved joint happiness. There's no contract that you both have to put in the same amount of work; it's really hard not to hold a grudge about this; in the extreme case maybe your partner puts in hardly any work at all and you do all the comforting and compromising, outside observers might call you a "sucker" but if it is a pathway that leads to your joint happiness, then it's the right one.
That said, you don't want to just eat abuse. Sometimes your partner just serves you a shit sandwich and you don't want to eat that over and over. I'm still really not sure how to handle this situation. Sometimes there's an excessive tendency of the mature sensitive male to always find blame in himself. That is, once you reach the awareness that you are working towards joint happiness and that your actions are always part of the puzzle, you start thinking, oh this situation went really bad, what could *I* do better next time, or what did I do that caused this? Certainly that's a good line of thought, and you should pursue it a bit, but you can go too far and just degenerate into martyrdom.
Last time I lamented how the beautiful ATTS technology in the Prelude seemed to have died out. Not so! In fact it appears to be almost identical to the Quaife Differential which is in the Ford Focus RS, which is responsible for it being such a fantastic handling FWD car (except that it seems they goofed a bit and didn't get it quite as right, or the Focus's much higher torque is just harder to control). (all that mechanical technicalia about struts and diffs is fascinating but gibberish to me).
Sadly we don't get the Ford Focus RS here. Or the Scirocco GTI. Or the VW Golf R. Or the Civic Type R. Basically car companies see America and think "there's a load of fat gits who only buy rubbish cars, no need to sell any good ones there".
One of the annoying things about buying something like Porsche is that they are severely price-inflated and quality-deflated by the devoted van boys who grew up dreaming of having one and will pay outrageous sums for a shitty product just because of the brand and the image. I on the other hand, just want a car that feels good and actually would really rather not have the brand, but I have to pay for it anyway.
It sucks when you are trying to pick something based on merit and find that the best thing is this brand which causes you to overpay. It happens all the time in clothes; I just want the jeans that look good and fit well, I would hapily buy Sears brand jeans if they were good, but I wind up buying Diesel or Seven for All Mankind or whatever the fucking thing is now just because it's the only one that's actually a decent quality product - but then I'm paying a 50% markup for the damn brand which I don't care about at all. (and in fact I try to hide the label as much as possible because it's embarassing)
I think the new hatchbacks are fucking fabulous. Unless you are buying a super high end sports car, there is absolutely no reason to buy anything but a hatchback. They are way more practical, and you sacrifice very little in weight or handling. The only possible reason to buy a sedan over a hatch these days is for vanity. And it's stupid vanity, it's trying to look boring and fit in to some old fashioned idea of what looks good which makes you totally uncool. I don't love the long hatches like the BMW 1 hatch or the Mini, a key part of the advantage is having a tiny wheel base, which makes them so nifty and fun to drive and easily parkable.
I was thinking how much I hate all the new turbo engines for their lags, and it occured to me that of course the obvious thing to do would be to have some kind of supercharger that took care of your boost before the exhaust pressure was sufficient, and then you switch to turbos after that. Of course this has been done, see for example the VW Twincharger ; the newer solution is Variable Vane Turbos ; BTW these come from the stonkeringly good Autozine Technical School ; my god that web site is good.
Today I was parallel parking my shitty rental car and of course bumping it against the cars on each side and thinking to myself how not fun that would be in a fancy car. I would much rather park a tiny thing like a Golf GTI and hell, I'd like a rubber ring all around the car like a bumper car. So anyway, for random amusement, I present some parking-related youtubes : how to repo parallel parked cars , french car bumping , FWD torque steer parallel parking
Some of the things I consider in decisions are of course trade-offs and real long terms pros & cons of various options. You have to weight by how often you use things and how much of a delta there is from the other choices per use. Then you consider opportunity cost - the value of other things you could do if you make alternative decisions. You have to also consider your various life plans for your future and how your decision is rated in those different scenarios, and then weight them by their probability. You have to consider the transaction cost and how hard is to get out of if you are wrong.
Then you also have to be aware of your own emotions and prejudices; you are after all human, you can't remove irrational thoughts, but you can try to identify them and compensate for them; but be careful not to over-compensate (eg. don't exclude Bill Hayden from your search for the mole just because he's sleeping with your wife).
Obviously you aren't just rating the cold numerical factors; some things may be bad bargains but give you a good feeling; that should be assigned some value. You have to consider the probability of problems (such as ebay scams or car mechanical troubles) and give them a cost rating and weight by their probability (and obviously the cost should involving a valuation for your frustration factor and mental anguish and time cost).
Most of all, you also need to evaluate the time cost of the decision making process itself; for example people who value-hunt for cans of greenbeans are retarded, just buy the one in front of you, but with larger things it's more graded and complex.
Finally and perhaps most complex at all, you must also apply these decision processes to the meta-decision of deciding what goes in your decision criteria. You have to consider each of the decision factors and decide if the time spent considering it is worth the benefit to the quality of your decision, and then either exclude or include or approximate it.
Speaking of Jimmy Carter and George Bush - it's sort of funny to me how much people admire quick decision makers like The Decider. We don't really care that much if people around us make good decisions, we just want them to fucking pick and hurry up. This goes from the most trivial situation to the most important.
For example, if you're going out to lunch with coworkers and you say "where should we go?" and they're all like "ehh, I dunno, maybe that indian place? or thai, I'm not sure", you think "urg, you're annoying, I won't ask you again".
One thing I've learned about dating is that almost all girls want you to make all the decisions, even the independent strong liberated ones. Of course they want to have veto power and boss you around at will, but when it comes to the mundane daily decisions - where do we go to eat, what should we do tonight, etc. - you better have a decision and you better make it quick, or you are a wishy-washy loser in her eyes. A guy who can take the lead and command a situation is very attractive. Hell, I know it's wonderful to just be able to relax and have someone else lead you around and make all the decisions unless you choose to step in. It doesn't actually matter if the decisions are great, just make them without a bunch of wishy-washing or caveats (though there may be short term complaining about your bad decisions, that should be ignored).
(We also really admire people who are foolishly impulsive & do really stupid harmful things for fun whims or romance. And we love people who are "passionate" aka violent or have big tempers and scream and all that. But those are other rants.)
Sometimes you have to make the meta-decision to simply not even consider a whole class of choices. For example when I was young I used to consider the cost/benefit of food when ordering at restaurants. Most people who even consider price do it all wrong, they just see "that's too expensive" ; instead you should be looking for value, something expensive is worth it if it's special, if it leads to having a nice date, if it teaches you something about food. Anyway, doing that consideration all the time is just exhausting and not worth it once you have any money, so I decided not to make that decision any more.
Another case is when you know that you have irrational biases that are too strong and you simply cannot trust yourself to make a good decision. In that case you have to simply make rules for yourself to eliminate the decision point. Alcoholics of course know this, rather than being reasonable and letting themselves have a little drink once in a while and decide when to stop, they know they can't make that decision and just make the draconian rule to never touch the stuff. But there are lots of cases of this.
For example I know that when my future is uncertain, I am almost always too cautious; that is, I fail to commit to things when I think it's likely they may not last. e.g. I've never bought a house because I feel like I might move at any time. And I tend to never decorate or buy furniture or curtains or whatever because I feel like I might move out of the current rental at any moment, so why invest in making it nice? What I know now is that it's almost always better to just pretend that you are in fact staying in your current place forever and make the investment to make it nice and get all settled in. Worst case you have to move and then you do it all over again. That's not really that bad, the alternative of constantly living like you're about to move out is much worse.
1. To get a FWD car up a steep slippery hill - go in reverse. This is like "duh" once you hear it.
2. If you see you're about to run into a deep pot hole - slam on the brakes and then slam on the gas before you hit it. The main thing is to not be in a big braking-induced forward-lurch when you hit it.
But I also encourage you to read around the site for a while. The humor doesn't really come through until you get into it a bit.
The handling and steering feel of the 3 is very good, better than either the GTI or the WRX. It's a little stiffer than either, close to the GTI, but more raw, less damped. In terms of comfort and noise it's between the two - not as muffled as the GTI but not as rattly as the WRX.
It is a turbo, but again it's sort of between the two - you don't really feel a big kick the way you do in the WRX, but it's definitely a big delta, it sort of whooshes in. I really don't like that nonlinear power, I had another near-incident as I pulled out of a parking lot and gassed it hard, it's pulling out slowly then suddenly the turbo kicks and I start flying and have to compensate steer. Bleck. But generally the power is great, it feels fast, and once the turbo is engaged the throttle response is good. The clutch and brakes are a little vague, but not horrible. The engine feels a lot better than the WRX even though it's a bit slower because the power is much more predictable and immediate.
Cargo space in the hatch back is very good; the rear seats are too small, near useless, but they fold down completely flat which is good. It's about the same size as the WRX overall, though the WRX has better rear seats.
However there is a big problem - it's got bucket seeds with big side bolsters. If you happen to be a wide person like me, this is fucking excruciatingly uncomfortable, as the bolsters don't fit around you, but rather dig directly into your ribs and kidneys. I fucking despise this trend to put race seats in cars that don't really need them. The standard seats in all cars should be flat, eg. not race seats, and not even buckets at all. Then if you actually want race seats you can get them aftermarket, because you need to buy ones that fit you perfectly; they need to fit you like clothing, there's no one size fits all. It's fucking retarded and it kind of blows my mind. Why don't I get a choice of seats in cars? Especially in luxury cars, there should be a variety of sizes & shapes of seats.
The cabin controls in the 3 are some of the best I've seen in any car yet. They're just plain old buttons that work fine, they are intuitive and well positioned, no computer mumbo jumo or screeny shit or weird non-standard ways of doing things. (on the other hand, they have a fucking awful locking key ignition thing which is pointless and annoying).
Aside from the seats, the 3 is my favorite of these small practical cars. It's also got great reliability marks, near Honda levels (the Subaru is also pretty good and the GTI is mediocre).
BTW it's kind of stonkering how fast these cheap cars are. The 3 has supposedly done a 0-60 in 5.3 sec , the new WRX can do it in 4.8 sec ; those numbers are like super sports cars from 10 years ago.
Head to head comparison of the "hot hatches" (not really the proper hot hatches, sadly) :
Engine : Mazdaspeed 3 , no contest. The WRX is faster, but the power is so nonlinear. The 3 does have a bit of annoying turbo wimpyness in the low revs, but kicks in quick and then is nice and linear in the high revs and has plenty of punch. The GTI is a bit slow, but that's not really the problem, it's the low-passed laggy throttle that sinks it.
Cargo room : The 3 and WRX tie , both very good. The GTI is not bad for how small the car is.
Apparent build quality : GTI wins for nice feel, the 3 is a close second, WRX is cheap and plasticky, though much improved.
Actual build quality : Mazda wins, then Subaru, then GTI last; the GTI has a reputation for being very bad, but early reports claim they've finally sorted that - we'll see.
Seats : GTI by a big margin, nice design, comfortable, adjustable lumbar support. The WRX seats are okay, the 3 seats are absurdly stupid if you're not just the perfect size body for them.
Brakes : I think I give the GTI the nod on this for nice solid feel, the WRX comes in second and the 3 last with it's vague unreassuring pedal.
Quick cornering : the WRX has to win this as it's the only one you can actually toss around a corner without the wheels skittering or veering out into understeer.
Steering feel : really all 3 are quite good here, the 3 is maybe the most sensitive and connected to the road, the GTI feels very solid and nifty but a bit too damped.
Ride comfort : GTI by a mile, amazingly quiet and comfortable for a small car. Both the WRX and 3 are very noisey and bumpy by comparison.
Transmission : the GTI wins, the shifter is really nice, short throws; I find the clutch to be a bit too long and soft, but it's better than the 3 and way better than the WRX whose shifter is way too long and vibratey.
There's nothing seriously wrong with any of these cars, they are all excellent values and very practical and good to drive. I recommend one of them over any Audi or Infiniti or Nissan or Toyota or etc.
The GTI : right away the fit & finish is very impressive. The interior feels a lot like a BMW, everything clicks and fits perfectly, it feels solid; the steering wheel is just like a modern BMW wheel (thick and mushy) which IMO is not a great thing but people seem to love that. Headroom is plenty for a 6'2" man, the seats fit pretty well, and has a nice lumbar adjustment even in the manual seat. I like the feel of the cloth seats and the option of cloth is a big plus. The rear cargo room is not awesome, but you could fit a bike with front wheel off. One annoyance in the GTI interior is the fucking touch screen radio which is not optional; god damn computers in cars are such rubbish, give me regular buttons you morons.
Driving the GTI : whoah holy laggy throttle response batman. Again this is just like modern BMW's, but in a bad way. It's literally disconcerting if you glue your eyes to the RPM meter and pulse the gas pedal, it just lags by a solid second. It's like they're running a low-pass delay filter on your gas pedal inputs. I guess this is partly due to the small turbo (again similar to modern BMW's). You don't really ever feel a big turbo kick, what you feel is just a slight mushy lag in the power. Once it does come in, there's plenty of power, it feels pretty light and fast (even though it's not actually light at all), just because it's nice and small. It feels nifty; visibility is very good, steering feel is good, not great (though my standards are a bit distorted since I've been driving Porsches). Handling is generally nice though it has somewhat disturbing understeer when you corner fast. There's torque all over the rev range, which really is just a bit annoying to me because it means I don't have to downshift to punch it which removes some of the fun feel of a manual. The clutch is super easy to use, but that makes it numb and soft, it's got tons of travel and it's not clear where the engagement is exactly; again it feels like a lowpass has been run over it; it's sort of like you're just stomping your foot in pudding and after your food it out of the pudding you've shifted. The ride is amazingly smooth for how tight the body is, they've really sorted that well; it doesn't roll much at all through turns, but it also smooths out road bumps better than mushy cars like the Versa for example - again this is very similar to modern BMW's.
Conclusion on the GTI : very polished small semi-fast car, I like it a lot. As a city car with a bit of cargo room and enough power and handling to be fun, it's excellent. In tight traffic and city conditions I think this is the best of any car I've driven the whole time. If I had to just drive around downtown Seattle, I would want this car. For a real sporty car, it's a bit lacking; the understeer is a sad inevitability of FWD, the steering is not quite as raw as I'd like, and worst of all the throttle lag is very disconcerting, overall it just feels a tiny bit too softened, I'd like everything tighter by one notch.
(BTW on FWD and understeer : the Honda Prelude ATTS system had this completely sorted back in '98 ; they spin the front wheels independently, so in a turn the outside wheel spins faster, and you can actually accelerate through turns to turn *harder*, unlike normal FWD ; you can always apply the right amount of torque to get perfectly neutral steering if you can find the right amount of gas for the curve. It was fantastic, and yet nobody else has adopted it, I would love to see it in every FWD car. Whoah check out this awesome ATTS Manual ; see page 18-19 ).
The WRX hatchback is actually much bigger than the GTI when you see them both in person. I hated the WRX hatchback when it first came out (like everyone), but you know, now I actually like it better than the old WRX sedan; the shape is actually sportier looking, and the retarded hood scoop is much smaller, almost tolerable now. It's also quite practical, the rear cargo space is much bigger than the GTI, in fact it's almost as big as the old WRX station wagons. The fit & finish is much worse than the GTI; it's a lot louder and rattly on the road. It feels mushier in corners, with more body roll, but you can gas through corners more aggressively, and actually gas your way out of understeer a bit.
The turbo on the WRX is a totally different beast from the GTI's ; it's much bigger, takes longer to spin up, and then when it does it has way more punch; the WRX still has that old fashioned turbo car feel, at low RPM when you start it up you're like "omg get going, where is the power?" and then it kicks in and you go "oh, there it is!" ; when it does kick, it really does kick (apparently it now has 265 hp and does 0-60 in around 5 sec which is pretty amazing for a car this cheap - hmm they must get that number with a really hot launch). It kicks sooner than in the older WRX, but it's just nothing like the turbos the Germans are making now. That number is faster than a Cayman, but the cayman feels faster to me because it's lower and stiffer; still there's no doubt that when the turbo kicks in the WRX it feels like you just activated the afterburners in your jet and you can't help smiling or perhaps giggling. One nice thing about the WRX turbo is does reward the driver for shifting correctly to keep it in the power band (though that required you to interact with the annoyingly clutch).
The WRX actually feels less "sporty" even though it's a lot faster; it feels heavier even though GTI and WRX are almost the same weight despite the WRX being much bigger (I guess all that extra weight in the GTI is in shocks and sound dampening, and metal interior bits instead of plastic ones). In theory the GTI gets good gas mileage while the WRX does not, but I'm sure both would get terrible mileage in my hands.
The clutch and shifter are just awful; the clutch travels way too far and it's impossible to find where the gear engagement is; the shifter is way too long and rattles all over and vibrates in your hand uncomfortably. It's just rubbish. On a test drive of course I couldn't really push the WRX, but I could feel it had loads of capability, it would be fun to get to know it and try to toss it around. The WRX seats are not ideal (no lumbar and a bit of a weird bucket curve for the spine) but they're definitely tolerable.
Obviously the WRX is AWD ; it's unclear how useful that actually is vs FWD. Also for those familiar with the WRX redesign, apparently the 2008 one was rubish, but now it's good again. I dunno, I didn't drive the 2008 but this one is good, in fact there's no reason to get an STI anymore because the WRX spec is so close to it now and it's way cheaper.
2. "Your friends will ask why you didn't get a 911." Fuck your friends, they're retarded. Ask them why they got whatever horrible car they got.
3. "The engine is too quiet". WTF, you're a moron, if anything it's too loud. And if you really want that it's pretty trivial to put an exhaust kit on. And Porsche engine do not sound good, I'm not sure why you want to hear more rattle and clatter.
4. "It's too easy to drive, it's not quirky enough, it's too perfect". I guarantee that the people saying this are not hitting apexes and powering out of corners correctly. You do not have the driving skill to claim that a Cayman is "too easy" , and of course real drivers like Tiff would never say nonsense like this.
5. "It was designed without soul to fit a niche below the 911". Mmm I don't think so. There is one little niggle which was not offering an LSD, but other than that I think it's actually the purest driving machine that was designed for joy in the twisties without compromise.
6. "It could've beat the 911 in the Nurburging time with a few mods ; the 0-60 is too slow ; etc. " ; who fucking cares, you're not an elite racer; does it feel good? does it feel fast? who fucking cares if the time around some track is 1:34 or 1:36 ; only juveniles care if their car can beat a Mustang in a drag race or some ranking or whatever nonsense it is juveniles and fat bankers care about.
Valid Cayman complaints :
1. You're awfully low and visibility is only mediocre, making it a pretty bad car for traffic. It's a bit like a shark - since you only see well out the front, you need to be moving forward all the time.
2. Seats don't lean back and cabin is very small, making it a bit claustrophobic for longer trips. Even for just a nice sunday drive, you have nowhere to put your map books and snacks.
3. Engine noise and stiff ride can get annoying. Basically it's a joy when you're throttling it and not when you're just sitting in it for a long time.
If I was going to modify the Cayman, it wouldn't be more power or an LSD. I would move the engine back a tiny bit to make the cabin bigger; I would lift the roof an inch or so, shrink the rear pillars and put more glass all around. Hmmm... I think I know a car like that....
Here are some nice side-by-sides of the Cayman and 911 ; some really good pictures in these : Motivemag , evo , autoblog
It's annoying that people buy cars for all the wrong reasons. So many Porsche buyers are doing it for looks or status. The worst are people who buy fast cars because they're the "top of the line" ; these people buy fucking 911 GT3's even though they don't track. It's because of these people that the Cayman didn't get an LSD - because if it was faster than the 911 on some tracks people would complain or buy it instead. In reality the reason to buy the 911 instead of the Cayman is not speed, but because you want a bigger more comfortable car, which is what most of the fat old bankers want.
Another example is the 911 Targa. Personally I can't buy it because it's more expensive and lower performance, and I actually like to drive fast. But for a fat banker - it's fucking fantastic. The glass roof is sublime, it means you're sitting in a big glass bubble which is my dream for all cars! Hell, the Honda Civic and every little commuter car should have a glass roof like the new Targas. I think it would make everyone better drivers because it gives you so much more spatial awareness, and also makes you feel more vulnerable.
Anyway, my practical side is having second thoughts about the whole Porsche venture. If I could find a car with the right spec locally I still might go buy it right now, but I'm losing steam with this fucking annoying search, and I really don't want to buy something on the other side of the country. And I started thinking about practical issues :
1. It is a lot of money. How much exactly? 5 year cost to own of a cheap $20k car is around $40k. 5 year cost of a Cayman is around $80k. That's $8k/year for the cheap car, $16k/year for the Cayman. Assuming about 200 driving days a year, that's $80 a day instead of $40 a day. Is the Cayman really $40 a day more fun than something like a GTI or Mazdaspeed 3 ? I dunno. I could either drive the Cayman home, or I could drive the GTI and then buy a Rainier Knizia board game. Or I could drive the GTI and buy cocktails and viagra. Or I could drive the GTI and then pay a hobo to piss on a Mercedes. Or drive the GTI and give $40 to charity. Naah. It's hard to compare the fun factor of the various choices.
(aside : it's one of the classic false economies to buy a shitty old car, or even to keep yours limping along; the actual cost per year of some shitty old car is often greater than buying and running a new cheap fuel efficient car, even though the shitty old car costs $0 and the new one might be $20k)
2. It would feel pretty ridiculous taking the 911 to Trader Joe's, or parallel parking it in the city. And I would have a heart attack every time it got dinged. I kind of like having shitty cars I don't care about too much, it removes a lot of stress. I'd like to be able to hop in and pop out to a bad neighborhood and park it anywhere and not feel scared for the car.
3. It would be nice to have something I can toss my bike in, or something I can drive to go hiking and not care about the fact that I'm getting it all dirty and banging it around in a bit of gravel, or take camping. I guess this is really the same issue as #2 which is in fact just my own self-consciousness of having a fancy car, and not an actual disadvantage.
4. The 911 actually feels pretty shitty at low speed; it feels heavy and cumbersome; it doesn't open up until 30 mph or so. In traffic gridlock maneuvers (swooping in and out of lanes) I think it would not feel good. In those situations you really want a go-cart like a Lotus, or a little hot hatch kind of thing. I dunno, maybe I would get used to it, but if you're going too slow to get the back unstuck a bit, the steering feels very sluggish.
5. Seattle is a pretty shitty place to go cruising. In California I used to go out driving all the time on the wonderful country roads, just looking for new places to see. There's really not much of that at all around here. People often think of Seattle as having lots of "nature" or "wilderness" around, but it's actually one of the most confining non-wild places I've ever lived. If you look at maps it's pretty obvious what the problem is - we're stuck on a really small patch of land here between the Sound and the mountains. Almost the entire area is now suburbanized. You go from Seattle through suburbs, and then you hit the mountains. The problem is once you hit the mountains - there are no roads. You only have the 90 and the 2, which are not terribly fun. And there's really not much wilderness either unless you get on the dirt logging roads and get back into the mountains a bit. One of my favorite things in the world is crusing around on country roads, it's the whole reason I'm thinking about getting a nice car, because I just love that feeling of swooping around a curve with scenery all around, but fuck me if there is anywhere to go around here, it fucking sucks.
6. The vast majority of my driving is just shitty commuting, not nice cruising. Mmm I dunno if this is actually an argument against. There's a huge difference between a plodding neutered commute in a boring car which makes you feel like masticated oatmeal, and a ripping commute where you slash and swerve and shit all over the plebians with your chariot of gold and feel like the master of your domain.
Periodically I'll get a crash from svchost, or suddenly my disk starts churning, or svchost is suddenly taking 90% of CPU. If it happens repeatedly I can usually figure out the culprit, but there's no reason it should happen at all through this mystery fucking obfuscation/anonymization host.
I'm mainly talking about little things; like say you're going out biking with your friend and you pump your tires and grease your chain before; you offer the pump and grease to him but he says "nah I'm fine". You take off riding, and lo 10 minutes later he's having problems with his chain and tire. The immature lesson-teacher would use this as a chance to say "I tried to tell you to prepare before the ride, see what happened!". Even if you don't do that, the immature grudge-holder would be all pissy and unhelpful about taking care of his bike. The mature response is just to forget it and be nice and say "hey I know a bike shop right over here, let's stop and get you sorted". The immature person would be all tight-faced and impatient during the stop.
Maturity comes in realizing that even though this person has fucked up and inconvenienced you, now their problem is also your problem, and you're going to still be with them for a while, so you should just get the problem taken care of and be nice so you can get on with your lives happily.
The immature side of me wants to see people pay for their mistakes. I tend to put in a lot of effort considering future risks and taking the proper protections against them. I see other people just rush into things without the proper consideration, and then they get fucked. I could them help them out, but then they are getting the advantage of not having to do the consideration work and they still get bailed out, it's not fair. It's sort of like paying for someone else's insurance. But maturity is knowing that when you do the best for yourself, you might help others much more.
A crucial factor is freeing yourself from seeing life as a competition, and not needing to prove to the world that your way is the best way. You aren't in a contest with the other person about whether taking the time to prepare was a good choice or not. He will likely make comments like "god you always take so long to get ready, greasing your chain and checking your cables, let's fucking go already". You have to just ignore that and be confident in your choice of how to live your own life.
This kind of issue obviously comes up a lot in the workplace. Maybe someone is writing some threading code, and you encourage them to clearly define the channels of communication and how they are synchronized. They're like "meh, I just write code and it seems to work, so I'm not gonna bother with that". Later they have some random hard to repro timing bug. If you're an immature cock you would remind them of their bad decision, or not be very helpful to them fixing their bug. If you're mature you just smile and help them debug their mess.
It's much easier to deal with in a strict boss-subordinate relationship (I'm the boss in this fiction obviously) where you can just tell people "do this" or "you fucked up". But even as the dictator it's wise to just relax and be positive and let people do things their own way sometimes. (and of course not everything that you think is a mistake is actually a mistake). A collegial or peer level relationship at work is much much harder to deal with. When you see a peer making what you think will be a big mistake down the road, you're in a bad spot.
One funny situation where I see this happening is in parent-child relationships. I see so many parents be total cocks to their children, using their children's mistakes as "teachable moments" (every time someone says that I vomit a little and want to punch them in the cock). They're fucking children, they don't need to be worried about preparing for future risks, that's your job, just worry for them and take care of them and don't rub it in their face or groan when they're wrong.
Today I was reading this blog on software development organizations and my hackles immediately went up when I read :
"The real cost of complexity increases exponentially."
I started to write a snarky post about how he almost certainly meant "geometrically". But then I started thinking about it a bit more.
Maybe software development time actually is exponential in number of features?
If you're trying to write N features and they are all completely independent, then time is O(N), eg. linear.
If each feature can be used with only one other feature, and that interaction is completely custom but independent, then time is O(N^2), eg. geometric.
Already I think there's a bit of a myth we can tackle. A lot of optimistic software devs think that they can get under even this O(N^2) complexity by making the features interact through some generic well defined pathways. eg. rather than specificially code how feature (A) and feature (B) and feature (A+B) work, they try to just write (A) and (B) but make them both aware of their circumstances and handle various cases so that (A+B) works right. The problem is - you didn't really avoid the O(N^2). At the very least, you still had to test (A+B) to make sure it worked, which meant trying all N^2 ways, so your time is still O(N^2). The code might look like it's O(N) because there's only a function for each feature, but within each function is implicit O(N^2) logic !!
What I mean by implicit logic is the blank lines which testing reveals you don't have to write! eg. :
void Feature_A( )
{
DoStuff()
if ( SelectionMode() )
{
// ... custom stuff here to make (A+C) and (A+D) work
}
// !!! blank lines here !
// this is implicit knowledge that (A+B) and (A+E) don't need custom code
}
You might argue that this is slightly less than quadratic complexity for the developer, and tester time is cheaper so we don't care if that's quadratic. But in any case it's geometric and above linear.
But is it actually exponential? What if all the features could be enabled or disabled, so the state of your code is a binary string indicating what features are on or off; eg. 1100 = A on, B on, C off, D off. Then there are in fact 2^N feature states, which is in fact exponential.
Another possibility is if the features can only be enabled one by one, but they have lingering effects. You have some shared state, like a data file you're processing, and you can do A then C then B then E on it. In that case the number of sequences is something like N! which is exponential for large N (actually super-exponential)
Let's concretely consider a real video game coding scenario.
You're trying to write N features. You are "sophisticated" so rather than writing N^2 hard-coded interactions, you make each feature interact with a shared world state via C "channels". (in the old Looking Glass speak, these C channels might be a set of standard "properites" on objects and ways to interact with those channels; in the old Oddworld Munch codebase there were C "component" types that could be on objects such as "SoundTrigger "Pressable" etc.). So your initial code writing time something like O(N*C).
But for the N features to really be meaningful, the C is ~= N (roughly proportional). (or at least C ~= log(N) , but certainly C is not constant as N increases - as you add features you always find you need more channels for them to communicate with each other). So just code writing time is something between O(NlogN) and O(N^2).
But your features also affect shared state - e.g. the "world" that the game takes place in, be that physical state, or state variables that can be flipped on other objects. If you have N objects each with K internal states, this creates K^N world states that have to be tested. Even with very small world state, if the features are order dependent, you're back to N! test cases.
If the bug rate was a constant percentage of test cases (eg. 0.1% of test cases produce a bug), then you are back to exponential number of bugs = exponential coder time. But I'm not sure that model of bugs is correct. If the bug rate was a constant percentage of lines of code, then bug rate would only be geometric.
The other day I drove a 911. Yeah, I think that's the car. I won't do a full review, but basically it has the wonderful feel of like a 370 or Cayman without all the drawbacks - it's got great visibility, tons of glass all around, the cabin feels spacious and comfortable. At low speed it feels sort of bulky and much more clumsy than the Cayman (even though the weight difference is only 300 pounds or so), but at high speed it seems to shed weight and become nimble and agile. I think I want like an '06 4S or so. And there just aren't any.
So I started looking at shit like ebay motors. That's a terrifying scam risk. I found a car that looks great, good price. I call the guy up and ask if I can have it inspected. He says no, I have to agree to the bid on ebay and put down a $1000 non-refundable deposit before I have it inspected. WTFBBQ no way jose. Just for kicks I say okay, let's ignore that problem - assuming we work that out, I would want to pay through escrow.com ; he says no they don't take escrow. Okay then.
He says I should trust him because he has "positive ebay feedback". That's a huge LOL. For one thing he has inflated his rating by obviously buying lots of shit on ebay just to get more ratings; he has like 10 seller ratings and 100 buyer ratings. Yelp and eBay ratings are also now ruined by sellers & shops who police their feedback. If you ever write anything negative, they'll try to give you some freebee to get you to change it. If that fails they go to arbitration on the site and complain and get your account banned.
I don't understand; if I was buying a $100k house, I would have agents, inspections, escrow, blah blah blah, actually way too much dilligence. On the other hand buying a $50k car I'm supposed to just wire the cash sight unseen. I'm also at the point where I would just pay a car buyer agent to take care of this shit for me, and they don't seem to exist at all. I mean there's those useless services that will give you prices for new cars from dealers for you, but not someone who will hunt for the spec you want and go inspect it and all that, eg. like a realtor but for cars.
I mentioned before that I think the best way to get accurate credit ratings for financial instruments would be to make the rating agencies offer insurance on their products - then you can look at the price they set for the insurance and know what they really think the risk is. Similarly, dealers could give you accurate condition reports by pricing insurance ("warranties").
Anyway, it's really fucking frustrating. I'm tempted to buy something completely different that I don't really want just because it's available and I can get this fucking phase of my life over with. Or buy the fucking ebay car from the shady seller and just take the risk. I'm spending my time alternating between talking to car dealers (ugh) and scanning the car listing web sites which are all so god damn broken and painful to use. (I've ranted before about the big problems with these listing sites : the biggest single thing they need is "never show me this again", but it would also be useful to have inline notes, persistent item links, and proper option filtering).
Vice Do's and Don'ts stands out for being actually smart and having a sense of humor.
Dave Moulton has a good post on how Eugene routes traffic well for both cars and bikes. San Francisco does a decent job of setting up parallel streets where one is very car friendly and one is more bike friendly, but they don't do enough to discourage the cars from going through on the bike-priority street. It's a real fucking douchey move to drive on the bike priority street, but the converse is also true. It annoys the hell out of me when bikes use Lake Washington Blvd through the Arboretum here in Seattle. It's a narrow street that's an artery for cars and has no bike lane, and there's a very good bike-priority route that runs parallel to it right over at 26th. Get off the fucking car-priority artery you damn bikes! If you're a driver on a car-priority street, do not go slow and hover behind a biker - pass him, close if need be. And fucking hell go ahead and pull out into oncoming traffic a little bit when you pass, the lane divider line is not some inviolable barrier; learn from the asians!
it wants $79 to update iMovie. Uhhh. In order to get the basic driver support for the camera I bought, I have to pay you for new software. Way to go Mac. You win.
If you're thinking about getting a 370Z or a Cayman - get a 370Z. It costs less than *half* as much ($30k vs. 60-70k) , has more power, has a limitted slip differential in the very cheap sport package with manual transmission and rev match (LSD in the Cayman is new and only available with automatic). You could get two for the same price. It's frustrating cuz the 370 is so obviously a much better deal, but they just fuck up a few tiny things. For one thing, you have to be six feet tall or less, and for another, they don't want you to actually see out of it. This is most clear when you see : Photo of 370Z and Cayman lined up so you can compare. The Cayman's visibility is just barely okay, and you can see the Z's door is higher, the hood is higher, the whole side window is smaller, the roof cuts into the view more steeply, etc.
It's like many modern designers are enamored with the 1930's Ford Coupe . Yeah, that's an interesting looking car, and maybe if you're designing cars for a movie like the Fifth Element you might copy that style. But not for the real world. We think of gangsters like Al Capone having 30's Fords (though they didn't actually) ; it's cool to be impractical; if you do stupid shit like grow your hair long so it blocks your eyes, or wear your pants so low you can barely walk, that makes you "cool". It's sort of like the animals that grow huge unweildly mating displays (peacock feathers) to demonstrate their value to females - if you can drive around without seeing you must be fucking great.
Sadly this style is becoming near ubiquitous. Cadillac CTS coupe design ; another example is the modern redesigns of classic muscle cars which lets you compare and contrast : Dodge Challenger old and new (it's not so obvious there how big the difference is because the old car rides higher, but the old car is almost 1:1 door to window, and the new one is closer to 2:1).
The other bad trend is the upsweep curve ; Mercedes moron designers give us the F700 concept to really illustrate the ugly and retarded upsweep; but real Mercedes have the same problem
Linkage :
YouTube - MonkeyLectric Video Pro bike wheel light display - when I
see shit like this I can't help thinking "that would be rad at burning man", which makes me want to
punch myself ; they want $2000 for it which seems pretty absurd, computer controlled
LED strips can't be that expensive; skip to the last 5 seconds to see how it works; if they did something cool like self-power by the motion of
the wheel rather than just use batteries I would be more excited
This guy Nazgee made his own and posted PCB specs ; I guess if you
browse around youtube a bit there are shit-tons of these things. Ok, it's not cool anymore.
YouTube - Binary Star - Reality Check
TheBox Browse - BBC torrent site
The Fifth Column - if you need more vitriolic ranting
Salumi backroom lunch - meh looks like shit actually but interesting to see
FFTW Home Page - good FFT sources
Fastening Things to Drywall - best page on this topic
Dark Roasted Blend - old but I forget how good it is
cap to the hill - local lesbian blog, amusing to see another person's experience of the same places
Bra Size Calculator - best one of these
Increase in suicide rate of vets - suicide kills more soldiers than combat does
Reverse Dotty ; I'm not sure how I feel
about the music (I guess it was inevitable that the retro movement would move on from synth pop to the art-punk of early
Sonic Youth and such) , but anyway ghost riding the ambulance is fucking genius.
I rather like their song
OMD .
It appears that "knob" is generally considered more correct now, though in old english "nob" was more common. There are many meanings, I'll show with the spelling I prefer :
knob : dial/wheel control knob : bump or protuberance knob : small amount, usually of butter knob : head of the penis nob : head of a man (archaic) nob : wealthy or upper class person (archaic)
Some people seem to think that either "nob" or "knob" are exclusively correct for the slang meaning of penis (they also disagree on whether it refers to the whole penis or just the head). It's unclear to me where the origin of this slang came from, since "nob" can either mean a person's head (archaic), which would suggest the slang came to refer to head of the penis, or "knob" can mean any protuberance.
Wiktionary seems to think "knob" is a common way to refer to a hill; perhaps this is British, I've never heard it in America.
Some weird uses :
"Nob Hill" - my guess is this common name refers to a hill where the wealthy people lived, not the fact that the hill was a knob, but I could be totally wrong about that. Some people seem to point Nob Hill at nabob but since nabob basically means the same thing as nob I don't see why you would point "Nob" at "nabob" when you could just point it at "nob".
"Hob Nob" - apparently this is completely unrelated if you believe this etymology it came from habbe nabbe
"For his nobs" in Cribbage is a funny one ; it appears to also be completely unrelated, coming from the game noddy which means simpleton, and since the knave of the same suit was important to the game it was referred to as the "knave noddy" or just "noddy" which must have become nob. (unrelated but the story of John Suckling, purported inventor of modern Cribbage, seems pretty fascinating; he was apparently a master gambler and cheater at cards who used his skill to get money beyond his station; he was involved in a plot to spring a prisoner from the tower of london, and received at least one beating at the handle of a nobleman tradgames ; ezinearticles ; wikipedia )
There are some funny uses : Nob Hill Knob Set and Nifty Nob Inc. maker of fine Knobs good job on the consistency, guys.
One thing I saw from my accidental tail slide was that Porsche really treats the driver like a human being, with respect. The electronic traction control (PSM) was on (in sport mode), but it didn't kick in, because it has very high tolerances before it starts interfering. This is in stark contrast to BMW and most cars these days where if your wheels start to spin at all, they kick in the electronic nanny. Just all around, the whole control set is very simple, very direct - they respect you as a driver and let you have feel and feedback and stiff linear levers.
The brakes and steering and feel for the road are all the tightest, stiffest, most linear, best feeling of any car I've driven (the only one that's really close is the 370Z). It really feels like an extension of you, without any weird laggy responses or numbness to frustrate. There's zero unnecessary electronics or beeps or screens or any of that awful shit, it just drives.
It's much smaller in real life than I thought from seeing them from afar. When you get right up to it or in it, you realize it's very low. You sit low, so your head is around the level of a bumper of a high truck. That's a bit of a disadvantage, especially annoying in traffic when you can't see around people. Also the cargo space is pretty ridiculously small, maybe even less than the 370. Like you would even have trouble fitting a large grocery shopping load, and certainly my old days of doing ridiculous things like going camping in the Prelude would never work in a Cayman. It's also really low and stiff, so the river-fording and dirt-road driving and such that I did in the Prelude would be an even worse idea in a Cayman.
Visibility is actually better than I expected. Side and front visibility are way better than the 370Z or M Roadster. Rear visibility out the back window is pretty terrible, but is okay with the side mirrors. Basically visibility while driving is perfectly fine; backing into parking spots would be the main time it would suck I think.
The engine is *right* behind your head, like 6 inches behind your head. I'm not a big fan of the sound; I think the best car sounds are old american muscle cars with that deep gurgly slow rumble that makes your bowels loose. It's got more of a Formula-1 style high banshee scream which is more annoying than sexy. It's fine when you're thrashing it for fun, but would definitely get old on a long trip.
The seating position is not exactly super comfortable, you're pretty tucked into a specific posture with not a lot of squirming options, but there is more head room for tall people than in the 370Z or Infiniti or M Roadster.
As for power - there's plenty; it's easy to think that 300 HP is not enough in the modern insane horse power wars, but it is significatly lighter than most of the competition (3000 lbs vs. 3200-3500 for the others). The Cayman easily goes faster than I could ever safely go on public roads. The gear ratios on the first few gears are very close, so to get max acceleration you need to shift quickly and smoothly.
I like it a lot, its design philosophy is exactly what I want : small, light, nimble, quick, simple, manual, elegant. A few things niggle for me :
1. After slipping the tail in a very light rain, it occurred to me that any rear wheel drive sports car is a pretty silly proposition in Seattle. There's not really much point to trying to enjoy your drive here. Or to biking here. Or to ever waking up in the morning, or being alive at all. But seriously, this is just a really foolish impractical quest that I'm on.
2. The seats are too small for me, the side bolsters stab me right in the shoulder blades. I guess there are "Adaptive Sport Seats" with adjustable bolster positions, but that makes finding a used car to correct spec much harder. It's pretty stupid that so many cars still make these tight bucket seats with fixed geometry that don't fit larger people, eg. Americans.
3. I would feel like a douchebag pulling up to thrift stores and trader joe's in it. I would feel like a loser every time I failed to parallel park it. People would look at me and wonder if I had a small penis and laugh at me if I stalled it. Cops would pull me over for going 1 mph over the limit.
BTW my god the automotive press are such fucking morons : "The second complaint is the car’s lack of soul. The Cayman is a thoroughly German sports car. In other words, it’s all about the driving, not the car" ; "For me this epitomizes what I both loved and hated the car. Compared to my MGB it lacked soul and quirkiness." ; what !?
I and people like me often think of the work we put in on a relationship as accumulating, building up a bank of good will that we can then draw from when we make mistakes. We imagine :
State += (deeds).
In reality, it's more like
State = (deeds)
or
State -= time decay
State :-> (deeds)
Where I just made up the :-> which means "drive to" in the sense of my cubic controller ; a variable is "driven" towards a target, via lerp or PD controller or cubic or whatever.
That is, doing good deeds (buying flowers, giving massages, being patient, going to the ballet) doesn't build anything. It just sets the current level, and you have to keep doing it all the time.
When I'm a fucker, I often think "I've done all these good deeds, I've proved that I love you and will stay with you, you should cut me some slack" ; I imagine that the bad deed is just like "State --" , it just takes off some of the credit that I've accumulated. In reality that's not true, again it's just more like an assignment
State = (fucker)
or really
State :-> (fucker)
In a game theory sense, we can think about how to use this. If you only have limitted budget of good deeds, when should you do them? The most important time to do them is right after you're a fucker. You certainly shouldn't do a bunch of them all at once, because they don't add up credits that you get to keep. If you've done really good, you should just coast on that for a while as the state bleeds down before you do something to replenish it. (actually it's even more extreme than that, because of relativism and baseline recalibration, doing lots of good deeds in a row can doom you, because anything you do after that will seem worse than "the good time").
One thing I struggle with is the sort of Buddhist idea of detachment. The Buddhist idea is that you shouldn't be affected by your environment; that is, your happiness should be inside your own head; you should observe and be involved in your environment, but it shouldn't pierce your inner bubble of self. This has always not made sense to me. If I'm supposed to be unaffected by the negative things people say to me or what I see, then I should also be unaffected by the positive things, right? So I should take no happiness when someone says they love me or when Richard Feynman tells me I'm the best physicist he ever met? That doesn't make any sense to me, what happiness am I supposed to take? And if I take happiness from those things, then logically I must also take sadness from the opposite.
Anyway, you do need this detachment to some extent in relationships. Your lover will inevitably have moments of bad mood or anger at you or insecurity or whatever, and they will act like a real motherfucker to you and say horrible things. You can't be too affected by it when they do that, you have to know they don't really mean it. The problem is when they do that, you don't yet know it's just a mood. The way you find out they're in a state is because they said X to you, so at the time when you first hear X, you don't yet know they're in a state. That means you need to be able to hear them say X and not react too much. You need a detachment that lets you sort of ignore them when they say something bad or weird.
This is a weird thing I haven't quite figured out, but I think I'm getting better.
Andaman Sea : don't bother with Phi Phi. Pretty much all the islands look similar, so pick them based on nice places to be, not the sights/scenery. Having your own yacht here would fucking rule Jesus though; you could go to all the little spots that the ferries don't go. There are so many islands with not much distance between them that hopping around by you own boat would be a delight. I'm told that the scuba out at the Surins and Similans is still good, dunno if that's true. Personally if I was to go again I'm interested in the Ko Phayan / Ko Chang area just as a nice place to hang out; generally I like the feel better on the islands that have a real working native population like Ko Yao, Ko Jum, Ko Sukorn, so they aren't just all tourism. I think maybe the Mergui archipelago in Myanmar is the real good place to go now. It's easy to feel like it's too crowded on the resort islands, but really it's in its infancy still; most islands only have a few little bungalow operations; it's not like Mexico or the Carribean or something where there are just hundreds of mega-resorts with all-inclusive packages and huge buildings and all that.
Street food : there are some things I didn't learn about eating street food until the end that would have been useful. A big one is just that usually the easiest way to order is just to sit down at a table. The street food people will have their cart, and some Thais will stand at the cart and order food to go; but they will have tables set up too, and you can just wave at some and say hi and sit at a table and they will come over and take your order. Ordering at the cart can be hard if there's a crowd. There are two major types of carts : noodle carts and stir fry carts. Stir fry carts are hard to order from because they make a bunch of different dishes, basically real Thai people will walk up and just name different ingredients and the wok lady will cook them all. Noodle carts are very easy to order from; usually they have a few types of noodles, and a few types of meats, all of which will be hanging in the cart for you to see, so you can just point to them (or you could learn a few words so that you can say "pork" and "egg noodle"). There are also pad thai carts that generally only make that one dish so are the easiest of all, and reliably good. The best street food areas have a bunch of tables which are shared with a few carts; in this case you can just sit at a table and order from a few different carts and get a variety meal. A lot of the times the meats are very strange bits of anus and gristle; the best way to get edible meat is from a street barbecue guy. The street barbecue guy rarely takes your order directly, and he's often 50 feet away from the seating area, so you have to point at him from your table.
We get our 12 hour day on Mar 17, which is also a perfectly aligned 7:18 AM sunrise 7:18 PM sunset. Time to hibernate.
Rapha is a ridiculous haute hipster bicycle clothing company. All their stuff is about 2X-3X the price it should be. It's sort of a weird market they're aiming at - their aesthetic is pure hipster, but they feature real road bikes and spandex and actual functional stuff; I guess they're aimed squarely at people like me - aging hipster wannabes with money to burn and a love of function as well as form. I'm ashamed of myself. Anyway - ignore the clothes and look at the photologs in their rides section. They're beautiful, inspiring photos; they make me want to get out in the US and ride. I mean, yeah they are ridiculous hipster photos, with that 70's-style photo effect applied to every fucking shot (or I guess it's the cameras+film they use), but it's nice.
I watched "Funny People" on the plane ; I dunno if it was just because of it being the plane, but I actually thought it was pretty good. Like, not amazing, but also not fucking cutesy and insulting like 40 Year Old Virgin or Little Miss Sunshine or Knocked Up or Juno, all of which are so fucking shmaltsy and predictable and tedious. (for reference, I think the best comedy of recent years was Superbad). I also saw about 5 minutes of "Paper Heart" on the plane ; jebus that was bad. I quite like Adam Sandler when he's in more serious roles (IMO his best was probably Punch Drunk Love) and not doing the shooba-scaba-doo hamming it up routine that made him famous.
I'm enjoying White Hinterland : Icarus quite a bit.
I guess this is obvious, but you do get a pretty nice win from using the true floating point Dct results rather than the quantized Dct results when you do TQ.
I believe the standard practice (what I was doing before anyway) is to do your normal fast Dct + quantization, which takes your integer pixels and makes quantized integer post-Dct output. You then apply TQ on that quantized-and-transformed output, which means instead of sending the true output { 4,3,0,0 } you also consider {4,2,0,0 } and {4,0,0,0 } and so on, measure J(R,D) of each and pick the best.
Okay, but the distortion of changing "1" to 0 is not the same as the distortion of another 1 to 0 , if those were not really the same 1 before quantization.
For example, say you're quantizing with a quantizer = 1.0 for simplicity, and no deadzone, even bucket sizes, so you have quantization buckets :
[ -0.5, 0.5 ] -> 0 [ 0.5 , 1.5 ] -> 1 etc.In that case, when TQ decides to take a quantized "1" and send instead a 0, if the true value was 0.51 , that's not so bad. If the true original value was 1.49 , that's a lot worse.
However, interestingly, if the true original value was 1.49 , then we could send it as a "2". If the value is near a quantization boundary, then the distortion doesn't care whether you kick the value up or down, but the rate might be significantly different, in which case you should make a choice based on J and get a win.
So my Dct now also does the true float -> float transform just for use in the distortion measurement for TQ. It's also useful in this application to make sure your Dct doesn't do any scaling, so that the transform is Unitary, that is, L2 norm is preserved. That was the distortion measure in post-Dct space is the same as the distortion measure in pre-Dct space which means you can use the same lambda for lagrange J decisions.
Dave Moulton writes with a bit of mustard about fixie fuckers . It's a bit disturbing the way the retard fixie crowd creates so much antipathy towards cyclists. The question is - is the hipster bicycle craze as a whole good or bad for cycling? The interesting thing is that there actually two completely independent cycle booms going on right now. There's the "Green cycle commuter" boom. These guys tend to be middle aged, upper-middle-class liberals, they buy practical bikes and kit them with paniers and lights from REI and ride responsibly and put soy milk in their water bottles. This movement is pretty small, but they are politically strong because they are older and organized, they tend to be the people who join Bicycle Coalitions and raise support for better bike lanes in cities and things like that. As much as we might hate them for their oft "holier than thou" attitude, these people are clearly a force for good and give cyclists a very good name (mostly - the exception is the militant anti-car faction of this movement who are mildly damaging). OTOH the hipster/fixie movement is very large, and has gotten lots of kids into cycling. The good thing is that many of them discover they love it and become serious responsible cyclists over time. It's also just a massive benefit to have so many more people riding.
Current/recent TV watching list :
James May's * (Toy Stories, Big Ideas, Moon, etc.) "Life" (BBC nature show) Wild China (BBC nature show) Tinker Tailor Soldier Spy (Alec Guiness in lots of makeup) Full Tilt Million Dollar Cash Game Season 4 (Andrew Feldman is a huge donk) The Thick of It Season 3 Wallander Season 2 Peep Show Season 6 (I forgot I was waiting for this) The League : mmm not bad, in an age bereft of comedy options this is one of the least bad Modern Family : yuck no, couldn't stand it Top Gear Season 14 : the food's terrible and the portions are too small
Current/recent reading list :
New Ideas from Dead Economists : terrible so far, will slog through a bit more Vanity Fair : great mag, good fun, some depth The Economist : meh, the lack of depth and superior tone makes it frustrating and worthless The Atlantic : liberal intelligentsia pornography The Intrepter of Maladies : utter rubbish, terrible writing, Pulitzer my ass The Spanish Tomb : boring boring dry dry dry 2666 : so pretentious and boring and pointless, read book 1 and couldn't continue
Bankers are *supposed* to make profit. You see all these retarded reporters and politicians who complain "the bankers saw an imbalance in the market and exploited it for their own profit". No shit! That's what they do! Or "the bankers sold products that were obtuse, complicated, and over-valued". Hey, if you can sell junk paper and find some moron that will buy it for millions, then of course you should do that. (one of the examples that people are citing now is the appearance that Goldman created some bogus securitiesb that they knew were very questionable and risky, sold them, and then got insurance from AIG against their failure; people imply that this was "irresponsible" or "immoral" or some shit; of course not, it's fucking brilliant; Goldman saw that AIG was being a fucking moron and took advantage of it, good play my son! The thing that was irresponsible and immoral was bailing out AIG and making the taxpayer buy those bogus securities at full value).
Now, certainly we can complain that the mortgage market was not properly regulated. Brokers like Countrywide should not have been allowed to issue bad mortgages and package them and resell them without keeping any of the debt on their books. The Maes should not have been using government-backed money to subsidize questionable mortgages. Complicated mortgages and ARMs and such never should have been allowed at all. There should have been more of a safety net to warn lenders about taking risky mortgages. The ratings agencies should have been more responsible for the ridiculously incorrect ratings they were giving to packages of mortgages. etc. etc. Nowhere in here did a banker do wrong. Instead this is pretty much 100% the fault of recent laws that liberalized the rules of the mortgage market.
Investment banks and hedge funds should not have been allowed to take so much leverage or get so big that they were a structural risk to the system. Derivatives and other securities should not be traded on markets without transparency and regulation. But this is not a fault of the bankers, it's a fault of Congress the Fed and the SEC for failing to regulate the system, for hiring regulators straight from Goldman, for taking masses of finance industry lobby money, for jumping straight from Treasury jobs to wall street & vice versa. Bankers of course should try to maximize their profit within the system they are given, the job of government is to structure the system such that they can't do so much harm in their quest for profit. It's just absurd to think that they should be altruistic and think about how their actions affect the median; that would be un-American.
The other thing that shocks me is the lack of vigilance of share holders of finance firms. If Goldman wants to take huge risks that might make it go bankrupt, or pay out huge bonuses from its profits - that's really none of our business (ignoring the issue that companies are allowed to become so big that they are a structural risk if they fail). But it *is* the business of shareholders. If I'm a shareholder, I fucking *own* that company, WTF are they doing? When they do well, they take bonuses and I don't get dividends. When they do badly, my stock value falls. WTF !? I should be demanding that those bonuses are paid out as dividends! And I should be demanding that they not take such great risks with my investment. It's another way that they have of taking big risks, profiting when the risk does well, and passing the loss to someone else when it does badly. WTF happened to active share holders !?
Largely investment bankers should be allowed to fuck around all they want, that's what they're good at. We aready mentioned the problem that they were allowed to get too big. The other problem was that ordinary FDIC insured banks were allowed to get into risky investments. Another was that public funds and pensions got into these risky investments, which meant the public was exposed to these risks. That never should have happened. What went wrong with pension investing? Basically, massive corruption. There are already a few suits underway about this, but they will surely never get accountability. The thing that happened is huge public pensions like the California state employee's pension fund had all this money they needed to invest. They didn't want to do it themselves so they'd hire someone like Merrill to do it for them. They're a financial advisor and fund manager, they're supposed to have expertise and help you invest your fund responsibly. Well, surprise surprise, Merrill would tell them that the best place to put the money was in this package of securities that Merrill had created, or in a special investment vehicle that another department of Merrill was running. Merrill takes a fee as the fund manager, they take a fee on the investment vehicle, and they get capital for their investment wing. And lo, those investments turn out to be far more risky than advertised. Pensions and public funds all over the world were suckered into paying excessive fees and investing in places they never should have invested through these mechanisms. (in reality, public pensions need to be in very safe vehicles that just track GDP with a minimum of fees, things like total stock market index funds).
"Hey, I'm loading stuff in my game and only getting like 20 MB/sec , what gives?"
So we started trying to dig into what he was doing exactly - are you opening/reading the files with all the right flags, are you on 4k alignment, are you on a thread so you aren't just stalling out for the seeks, etc. ? In the end I think we figured out that his problem was he was reading too many small files, to which he replied :
"Oh yeah, duh, I've always packed files into bundles and loaded big chunks in previous games, but I just hadn't gotten around to it yet in this and it was bugging me that my level loads were taking so long."
! Ah ha ! To me this is where Oodle comes in as a product. It's not super hard stuff, but it's something that people always put off until the very end, which is kind of a shame because it means their level loads take forever during dev. So for three years while you're making your game you suffer through annoying slow level loads. Instead you buy Oodle on day 1 and your level loads are automagically fast.
I believe in this as a product, in the sense that I think we can make it, and it would be extremely valuable, but I'm not convinced that the game industry is mature enough to buy it. The game industry has always suffered from the mistaken thinking of "I could write that myself, so I won't pay for it". That's retarded. What you should look at is what's the full cost of writing it yourself, including debugging, and perhaps most importantly including the opportunity cost of spending that time on this instead of something else, or the opportunity cost of not having feature X until you've gotten around to writing it.
For example, say you're on a one man dev team and you lay out your coding tasks for your project in order {A,B,C,D,E} . All during dev you are suffering a penalty from not having feature E done. If it would make dev a lot easier to have feature E done up front, you should pay a *lot* of money to get it immediately. Some of the classic mistakes in this vein are things like profile HUDs which people put off until the end, but would provide huge benefit if you had from the beginning; another one people aren't aware of is level save/load and memory card support - you think of that as a minor detail to do at the end, but as soon as you do it level designers are walking around with scenarios saved on memory cards to show to each other and they get a huge productivity boost, so it would have been a nice win to do early (though then you have maintenance pain).
To me the big win of Oodle is :
Client just writes code to load files one by one with plain old fopen/fread/whatever.
Behind the scenes Oodle magically robustly incrementally syncs PC files to consoles, packages files into bundles, makes prefetch lists and prefetches bundles, compresses & decompresses bundles on threads. You have ship quality fast loading from the beginning.
That's a small, simple, great product I think. The problem is to make it something compelling enough to sell we start to add lots of features : high performance paging in/out for seamless worlds, hot reloading of changed content, smooth IO integration with streaming data files like audio/video, DVD layout optimization, texture compressors, etc. which really just wind up clouding the tiny little valuable product at the core.
My body clock is all fucked up from Thailand; I was waking up at like 4 or 5 AM, so I figured I'd just go with it and try the "early schedule" hypothesis of work days. I'm working 7-3 or so, which lets me just avoid traffic both from and to, and is actually a full length day. Those are the plusses. The minus is that it's really fucking hard to wake up and get moving in the pitch black before sunrise. Also it feels really weird to eat lunch at 10 and dinner at 5. I feel mildly tired and unhappy all the time. In theory, sleeping from 10 to 6 is the same as sleeping from 12 to 8, but it doesn't feel the same to me yet.
RANSAC is useful.
You can make your own creme fraiche apparently !? I'm a little disturbed by leaving dairy at room temperature for 4 days.
Evolution of alphabets animated gif ; awesome.
Bike Snob NYC is funny and informative. Okay, maybe not informative.
Home made Almond Milk is fucking delicious. Who knew !? I'm so turned off by retarded vegans and raw-food morons that I sometimes miss good things just because they love them. Of course almond milk is actually an ancient treat in many cultures which has only been recently sullied by foolish propaganda. It's nice Indian style with a little cinammon/nutmeg/cardamom and perhaps some cashews. The shit in a box is disgusting though.
Dj100proof best of 2009 list is cbloom approved.
The shitty A-Data SDHC card I got claims to be "Class 6" which is supposed to be a minimum speed, but the Lumix DMC-ZS3 shits out every so often and says the card wasn't fast enough. Well, it turns out those classes don't really hold a lot of water because nobody is enforcing it, so shitty fuckers like A-Data just put the label on their card even though their card isn't fast enough (the "150X" or whatever they use in marketting is pure bullshit, a lot like the "X" numbers for CD drives; the "Class" is supposed to be a reliable minimum speed). For real speeds, see : Tom's Hardware test or Rob Galbraith in-camera testing . The main thing to look at is the Tom's Write Speed test at the bottom, and look at the dark gray minimum speed bars. The Silicon Power card tests well but is not widely available. The Lexar Professional (not Platinum II) and ATP Pro cards are ridiculously expensive and small so we ignore those. The legit cards are the San Disk Extreme III (not Ultra II) and the Transcend cards. The Transcend cards are about half the price of SanDisk Extreme III cards, so that's my recommendation at the moment : Transcend 16 GB Class 6 for $42 . I also like the fact that all Transcend cards seem to perform well, unlike other brands where you have to be very careful about what exact variant you buy. Yeah I guess I did a stupid thing just buying something and trusting that it did what it claimed, but my god it's so fucking annoying how much you have to research every time you buy anything. The actual dollar cost of these purchases is dwarfed by the time cost of research and/or returns.
One idea is to train up a statistical fit to make good guesses. For any given video (or other data to compress), you can create a relationship between lambda and R that's a pretty simple functional fit. There are a few ways to do this. One way would be to just go ahead and compress the video 16 times with different lambda values, observe R each time, that gives you a bunch of data points, now use those to fit a function to lambda(R) , now you can dial a lambda for any rate. If you're going to be working on the same video a lot, this might not be so bad; in particular in the games or DVD publishing business this might be tolerable.
A slight tweak on that idea is instead of just making a fit per video, instead fit to some characteristics of that video. Sample some kind of moments from the video, like do one pass with simple mocomp and measure the L2 norm of the movec and the L2 norm of the residuals. Those are just two moments. Use those to build up a fit lambda(R,m1,m2). To make this fit, we could run on a variety of sample videos to build a database of some good seeds. Furthermore, whenever a user does a run, it would add a seed to their local database. That way if they run on the same video multiple times, those moments would be matched exactly and the fit would get better. If we don't find a close enough sample point in the database to make a good fit, then we just force a test compression of the video at a given lambda and measure the R. So the end result is that rather than doing a bunch of test compressions to build a model, we just do a quick scan to sample some moments, then take the R parameter and look up the fit and get a guess for lambda. Note that rather than doing this fit per video, you could do it *per frame* which would give you a lot more dense sample data very quickly.
Another way to get a decent guess for lambda is with interpolation search. The procedure would be something like this :
pick good brackets for lambda
high and low lambdas that you're pretty sure the desired lambda is between, but are as close together as possible
(requires some kind of moment sampling or heuristic training)
evalue R(lambda) at the two end points and half way between them
that's 3 compression runs
from 3 points, fit a quadratic R(lambda)
use quadratic to choose 4th point lambda
(bias it so its not too close to the 3 we already did)
run compression at 4th point
if that R(lambda) is close enough to target -> done
make line between 4th point and neighbor that straddles target R
use lerp to choose 5th lambda
4 or 5 evaluations of R(lambda)
In many cases with 4 runs your R may be close enough to desired rate and you are just done. The quality of interpolation search depends on
how simple/smooth the R(lambda) function is. In general it is a good fit to simple curves, but you can get unlucky in your sample point choices.
Finally, if you want to hit a rate more exactly, you can do so more efficiently by relaxing the global uniform lambda requirement. Say you have some lambda which is pretty close to giving you the right rate and you want to encode to hit that rate more exactly. You let lambda drift a little bit as you code to try to adjust towards hitting the exact bit rate.
I'm not sure exactly what the ideal algorithm is for this, so if you have better ideas let me know. It's a little bit of a nasty black box feedback problem, because I'm trying to hit R by dialing L, and I have this unknown function R(L). One assumption that we will use, which most video coders use in one way or another, is that the video is locally self similar, that is, frame N is usually similar to frame N+1 , so if I observe something about the function R(L) on frame N, it is a good guess that it behaves the same way on frame N+1 ; obviously this is grossly untrue for major cuts, but those are "rare" and we just accept the innaccuracy there (you could also have a panic mode when you see you got it really wrong).
So the idea is that rather than search L around on a given frame, we use previous frames to just make a guess for L and only encode the frame once. If we get it wrong by a little bit, no big deal, we'll make up for it on the next frame. This only works when we are only trying to make small corrections.
Specifically : you did a previous pass at lambda L1 and that gave you total size R1. It also gave you a size for each frame : F1(i). You now want to hit size R2 (which is very close to R1).
At frame i you have already written W2 bits, so you have (R2 - W2) remaining. In pass one you had (R1 - W1) remaining at the same spot. Compute the desired size for the current frame as :
F2 = F1 * (R2 - W2) / (R1 - W1)
To hit frame size F2 , you know if F2 is close to F1 then you should use L = L1. If F2 is a little bigger or smaller either way you should adjust L slightly. To do that, we track a running estimate of dL/dF , call it M for the slope. So we use :
L = L1 + (F2 - F1) * M
We then compress with this L which gives us a frame size F(L). We then compute the actual observed slope :
S = (L - L1) / ( F(L) - F1 )
and then update M using S via IIR or FIR.
There are a lot of kludgy things you'd need to do here, like seed M with a decent guess, don't blend in S updates if you get a weird result ( like F(L) = F1 ), forbid L from making big steps away from L1 even if the estimate really wants to, etc.
Also I'm not sure if dF/dL is really the right variable to estimate ; maybe it would be better to do d(F/F1)/ d(L/L1) , or something. That is, for frames of different characters, what is the most consistent response of frame size to L variation?
What does lagrange rate control mean for video? It means you pick a single global lambda for the whole video. This lambda tells you how much a bit of rate should be worth in terms of distortion gain. Any bit which doesn't give you at least lambda worth of distortion gain will not be coded. (we assume bits are of monotonically decreasing value - the first bit is the most important, the more bits you send the less value they have). On each frame of video you want to code the frame to maximize J. The biggest single control parameter to do this is the quantizer. The quantizer will largely control the size of the frame. So you dial Q to maximize J on that frame, this sets a frame size. (maximizing J will also affect movec choices, macroblock mode choices, etc).
Frames of different content will wind up getting different Q's and very different sizes. So this is very far from constant bit rate or constant quantizer. What it is is "constant bit value". That is, all frames are of the size where adding one more bit does not help by lambda or more. Harder to code (noisy, fast motion) frames will thus be coded with more error, because it takes more bits to get the same amount of gain in that type of frame. Easy to code (smooth, flat) frames will be coded with much less error. Whether or not this is good perceptually is unclear, but it's how you get optimal D or a given R assuming our D choice is what we want.
Ideally you want to use a single global lambda for your whole video. In practice that might not be possible. Usually the user wants to specificy a certain bit rate, either because they actually need to meet a bit rate maximum (eg. for DVD streaming) , or because they want to specify a maximum total size (eg. for fitting on your game's ship DVD), or simply because that's an intuitive way of specifying "quality" that people are familiar with from MP3 audio and such. So your goal is to hit a rate. To do that with a single global lambda, you would have to try various lambdas, search them up and down, re-encode the whole video each time. You could use binary search (or maybe interpolation search), but this is still a lot of re-encodings of the whole video to try to hit rate. (* more on this later)
Aside : specifying lambda is really how people should encode videos for distribution as downloads via torrents or whatever. When I'm storing a bunch of videos on my hard disk, the limitting factor is my total disk size and the total download time - I don't need to limit how big each individual movie is. What I want is for the bits to go where they help me most. That's exactly what lambda does for you. It makes no sense that I have some 700 MB half hour show that would look just fine in 400 MB , while I have some other 700 MB show that looks like shit and could really use some more bits. Lambda is the right way to allocate hard drive bytes for maximum total viewing quality.
Okay. The funny thing is that I can't find anyone else on the web or in papers talking about lagrange video rate control. It's such an obvious thing that I expected it to be the standard way, but it's not.
What do other people do? The de-facto standard seems to be what x264 and FFMPEG do, which I'll try to roughly outline (though I can't say I get all the details since the only documentation is the very messy source code). Their good mode is two pass, so I'll only talk about that.
The primary thing they do is pick a size for each frame somehow, and then try to hit that size. To hit that frame size, they search QP ( the quantization parameter) a bit. The specifically only search QP in the local neighborhood of the previous QP because they want to limit QP variation between frames (the range of search is a command line parameter - in fact almost everything in this is a command line parameter so I'll stop saying that). When they choose a QP, there's a heuristic formula for H264 which specifies a lambda for lagrange decisions that corresponds to that QP. Note that this lambda is only used for inside-the-frame coding decisions, not for choosing QP or global rate allocation. Also note that the lambda-QP relationship is not necessarily optimal; it's a formula (there are a bunch of H264 papers about making good lambda-QP functional fits and searches). They also do additional funny things like run a blurring pass on QP to smooth out variation; presumably this is a heuristic for perceptual purposes.
So the main issue is how do they pick this frame size to target? So far as I can tell it's a mess of heuristics. For each frame they have a "complexity" measure C. On the first pass C is computed from entropy of the delta or some such thing, raised to the 0.8 power (purely heuristic I believe). The C's are then munged by some fudge factors (that can be set on the command line) - I frame sizes are multiplied by a factor > 1 that makes them bigger, B frame sizes are multipled by a factor < 1 that makes them smaller. Once all the "complexities" are chosen, they are all scaled by (target total size) / (total complexity) to make them add up to the total target size. This sets the desired size for each frame.
Note that this heuristic method has many of the same qualitative properties as full lagrangian allocation - that is, more complex frames will get more bytes than simpler frames, but not *enough* more bytes to give them the same error, so more complex frames will have larger errors than simpler frames. However, quantitatively there's no gaurantee that it's doing the same thing.
So far as I can tell the lagrange method is just better (I'm a little concerned about this because it just seems to vastly obviously better that it disturbs me that not everyone is doing it). Ignoring real world issues we've glossed over, the next big problem is the fact that we have to do this search for lambda, so we'll talk about that next time.
ADDENDUM : x264/ffmpeg rate control references :
ratecontrol.txt - Loren is the main dev but this is very cursory
FFmpeg RateControlContext Struct Reference
FFmpeg libavcodecratecontrol.c Source File
[Ffmpeg-user] changing bitrate on the fly - detailed rate control
document, but not written by one of the main devs so beware
x264 Macroblock Tree Ratecontrol testing (committed) - Doom9's Forum - this is
about the dependency issue that we haven't discussed
First of all it's useful to consider what you would do if you had infinite CPU time. The answer is you should try all coded bit streams. That is, to make the optimal N byte stream, you should make 256 ^ N streams, run each through the decoder, measure the error somehow, and choose the best. That sounds ridiculous, but it is our goal; everything else we talk about will be approximations that are trying to get as close as possible to that.
Let's try to get into the realm of reality. You have some encoder that you think produces good code streams for your given decoder. In various places in your encoder you have decision points - what quantizer to use, what macroblock mode to use, whether to send this value as its true self or as any other value, etc. If you had lots of CPU power you should do a brute force search on all decisions - try every decision all possible ways; if there are M decisions and each has K choices this is K^M. Reject code streams produced that are bigger than N. Measure the error of the results and choose the best.
Okay, that's still ridiculously impractical. But let's consider a simpler case. Say you only have two coding decisions, and most importantly - they are independent, that is one decision does not affect the other. For example say you are coding two separate images, and you are only allowed to choose the quantizer on each image, and your goal is to minimize the total error. If there are K quantizer choices, a full search would mean trying K^2 ways. But in that's not necessary because of independence. All you have to do code the first image K ways & remember the rate (R) and distortion (D) of each way, then the second image K ways and remember R/D, so you have 2K codings. Now to find the optimal combination you could do K^2 table lookups, but even here you can usually do much less, because the R/D tables are monotonic (or very nearly monotonic) which means rather than doing K^2 you only need to pick an entry on each side and then slide each one up and down to search for improved D given the R constraint, which is O(K). This obviously extends to N independent coding choices ; rather than K^N we can do K*N codings.
The simplest way to do this in practice is with a lagrange multiplier framework. Rather than look for optimal D given R, we look for an optimal lagrange cost : J = D + lambda * R.
If J is maximized by our coding choices, it means dJ/dCode = 0. That means 0 = dD/dC + lambda * dR/dC , or dD/dR = - lambda
That is, lambda has selected a slope of the D(R) curve. If D(R) and dD/dR are both monotonic, then this has uniquely selected a rate & encoding. We shall henceforth assume that this monotonicity requirement is true. In practice it is not quite true but it is "mostly" true which we can deal with in hacky ways (* perhaps more on this niggle some day). With this assumption, if your goal is to hit a certain rate, you can monotonically search lambda to find an encoding that maximizes J at that rate.
Now the key point is that maximizing J for a given rate gives you the optimal encoding for independent coding choices. Consider our example of the two images above. Instead I make a quantizer choice from the K choices on each image independently. On each one I measure J and choose the one that maximizes J. (note that since R and D are monotonic I can actually just do a binary search here that's O( log(K) ) not O(K) ). Because they are independent, I have found the maximum J for the full stream. This is the optimal encoding. Why? Because it has made the slope dD/dR equal at each of the coding choices. That is, I can't move bits from one image to the other and get a better distortion at the same rate. If the slopes were not equal, then I would get a win from moving the bits away from where they affect D less to where they affect D more.
This is the same as before, but the win in terms of code flow and structure should be obvious. Before I had to do a bunch of encodings and then go back and consider different bit allocations to find the best. Now I can do one linear pass through my codings and make the optimal J decision at each step, and then after a decision is made I can forget about it and move on to the next and never revisit it. The disadvantage is now that my encoding is parameterized by the unintuitive lambda parameter rather than just R, the rate; if I want to hit a specific rate I have to search lambda in an outer loop (* perhaps more on this later).
Now we're going to make a big leap of faith and see what happens if we try to use this sort of one-pass lagrange optimization on more complicated real world scenarios. What goes wrong? Two big issues. One is that D might not be independent, the other is that coding is not independent.
To be clear, our proposal is to do one-pass lagrange coding decision making. Encode the data in streaming one pass scan. At each decision point, you try all possible ways for the current subset of the data only. You measure J on the current subset and take the decision that maximizes J on that subset. You then do the encoding using that decision and output the encoded bits, and move on to the next subset. R (the rate) can of course be measured on each subset independently (if arithmetic coding, you can count the fractional bits left in the state as well). D (the distortion) must be some measure that can be done locally.
What about D (the distortion measure) ? Well, if D is SSD (sum of square differences) (aka L2 error or MSE), then it is in fact independent from pixel to pixel or block to block, which means it is fully correct to measure D only locally on each decision. But you might object that this is not a good way to measure distortion. I'm going to ignore this for now and just posit that we choose D to be SSD and we're going to optimize for that. (* more on this later).
The big issue is that in the real world our coding decisions are not independent. A huge affect with video coding is of course motion compensation - blocks can be used as reference for later blocks. That means a coding decision now can have affects far in the future. Even if we ignore that and just talk about image coding, blocks affect the coding of other blocks through statistical coding - be it huffman, arithmetic, or context coding. Typically this has an affect of the form : if I chose mode A for the current block, that has the side effect of making mode A cheaper for future blocks, and all other modes slightly more expensive. I contend that the statistical affects on the future are not a huge issue. (you may recall when we talked about LZ77 optimal parsing, I made the same hand-wavey argument to dismiss this issue). There is one big issue about the statistical effects - early on in coding when statistics are sparse, decision 1 can have a huge affect on the statistics which heavily biases decision 2 and leads you far away from the true optimal choice. To stop this, the statistics for decision making purposes should be preconditioned with some "normal" data to reduce the affect of strange early decisions. Note that the statistics used for actual coding need not be the same as the statistics for decision making.
Sometimes a purely greedy coding decision can be very bad, though. Consider the case of something like trellis quantization of DCT coefficients. The true output of the DCT is X,Y,Z. But you need not transmit those values, you can transmit anything and it will just have some rate and distortion. For example, say the output is 0,2,3,0,X,0,0,0,0 . How should you transmit X ? If you're using something like run-length coding or end-of-block signalling, there is a big advantage to sending X as 0. You can't know that unless you could see the future after X. If you only saw 0,2,3,0,X, and didn't know what followed you wouldn't see that. This is a well known issue with quantization of trailing DCT coefficients, but it's also an issue with things like macroblock mode decisions in video coding. The reason is that mode equal to previous mode is coded so much smaller than any other mode, when you make a decision you very strongly affect not only your current rate, but also the following block. One remedy to this is "semi-non-greedy lookahead" type coding as is well known from LZ77 coders; that is, instead of just doing one coding decision, you try all ways for the next 2 or 3 or 4, choose the one that optimizes all of them together, and then discard all but the current one and step ahead one step. Okay I'm going to sort of ignore this issue for now, but we should keep it in the back of our mind that purely greedy forward-scan decision making can be pretty far from optimal.
The other big issue for video is motion compensation. Yeah, that's a big issue, but it's not specific to this type of code stream optimization, so I'm not going to discuss it now. It's an issue that you must address in any video coder that makes decisions. The way to address it in this framework is to choose some scaling factor for "D" on each block. You compute J = c * D + lambda * R , where normally c would be 1, instead you bias it up or down depending on whether you decide the current block is more or less important than average. (blocks which will be sources for future motion compensation should be considered more important in the forward greedy pass decision making). (* perhaps more on this later).
To be continued ...
Anyway I would want to use a "load balancing" router like : this from hotbrick or this doulink ; I wonder if I'm in for a world of hurt ? Has anyone done this ?
It might also be nice to have the "QoS" feature and see if I can get it to actually let normal POP/SMTP/HTTP packets through preferentially to torrent/video/streaming packets. In theory you should always be able to have snappy text web response no matter how much data streaming you're doing.
I. 1080p (I would consider 720p TV's , but they all seem to be non-native res ; real 720p is 1280x720 ; the LCDs that claim to be "720p" all seem to be 1366x768, which means they do some awful scaling; OTOH the 1080p TV's seem to actually be true 1920x1080 , and 720p scales into that pretty neatly (it's exactly 1.5X)
II. 120hz (I can't see any point to 240hz , 120 can show 24 fps without pulldown/judder).
III. No fucking "touch of color" ; WTF are you thinking Samsung. Also I'd really like the bezel to be thin and matte black like a monitor, not fucking glossy (this seems impossible to find. fuckers).
IV. LED backlight ; I'm not sure about this one, but LED backlighting on laptops is the Mother Fucking Win, so I assume it would also be awesome on TV's.
V. 32 or 37 inches. I'm tempted to get a 32 since I feel like the Dell 30 inch monitors are fucking huge and I can't imagine wanting anything bigger, but 37's are the same price and I wonder if I would regret getting the 32 somewhere down the road.
There appear to be only two TV's that fit this spec : Sharp AQUOS LC32LE700UN (gets some bad reviews for image quality)
Samsung UN32B6000 (has touch of color so I guess that's out)
If I relax the LED requirement I get a lot more, such as : Sony Bravia XBR9
LG LH40 (bad black level?)
TV's seem to be in an arms race towards fucking suckitude. They're adding shit like "virtual surround sound" and RSS feed streaming and built in Netflix playing and garbage like that. I'm tempted to just get a monitor to avoid all that shit, but so far as I know there's no monitor that does 1920 x 1080 x 120hz native. (1080 -> 1200 scaling is balls). I'd like no fucking speakers at all, no network pork, no USB, no fucking automatic media readers, just show damn pictures well.
Many of the manufacturers are now not providing their top of the line models in small formats; that's annoying. The last time I looked at LCD monitors in detail they were pretty much all the same panels anyway (LG or Samsung) so it didn't much matter what brand you bought; not sure if this is still true.
BTW : Against Big TV's :
I hate big TV's, always have, always will. Sure, if you have a real theater room, go for a giant TV or a projector, but in a living room I hate them. Why?
A. The TV should be off 80% of the time. That means its behavior when its off is just as important as its behavior when it's on. A huge TV is a crass eye sore when it's off. Unless you have a brown plaid couch and wood panelling on your walls, then by all means, accessorize with a giant TV.
B. Huge TV's might look great with very good input signals, but so often we still drive them with shitty signals (eg. DVD's) , and then they look really awful. Even from good HDTV or Blu-ray sources you still get tons of compression artifacts, and blowing those up big is painful. I'd rather have a smaller image that looks really good than a huge one where I can see all the flaws.
C. They're too powerful. It lords over you. It demands that you watch it. It eats up your whole brain. It's so big you can't see anything else. I like to watch TV while I'm on the computer or reading a magazine or stretching or something; I don't want the TV to dominate my eye-scape. I want it to sit in the corner and let me look at it if I choose to. A huge TV is sort of like having a stereo that can only play at jet engine volume levels - it's always dominating, it can never be subtle and inobtrusive, it can never just be background.
The auto mode is very impressive in terms of taking any situation and shooting a decent snap. It handles low light, high motion, shaky hands, etc. all very well. The images that come out of it seem to be generally quite grainy compared to the S90, but I think the difference is just that the main difference is that the Panasonic is not doing so much noise reduction in the firmware (obviously the sensor is smaller too). If you do some software noise reduction the images step up nicely.
One thing I didn't anticipate is how awesome the long optical zoom is. It does 12X optical zoom which is pretty amazing for an ultracompact. With the good auto-stabilization, it means you can just crank up far zooms and snap shots and get closeups I've never been able to shoot before. Very cool.
But the biggest win by far is the amazing HD video capability. It records 720p AVCHD in real time (AVCHD is just a limited profile of H264 in a different package; the MTS or M2TS files can be played directly by MPC or VLC). When I first saw that it had a dedicated button for start/stop video I thought "that's dumb, that should just be a scene mode" , but oh how wrong I was. Video is fucking *awesome* and it's sweet to just have it on a button so you can record video at any moment without mucking about with scene modes. We shot a few videos and they're just so much more fun and interesting than stills. In fact I can hardly bear to look at still any more, it's like a paradigm shift, I want video of everything now.
One annoyance is that neither MPC nor VLC have an option to play back video rotated 90. I don't want to decode and re-encode just to rotate 90, I want my damn player to do it after the fact. The result is that the videos we made with the camera held sideways are fucked.
In the US we're completely defined by car culture. As much as people love to talk about walkability and urban reclamation and so on, our cities are built around cars, our lifestyles are designed around cars; if you can manage to function without a car in the US, you're still living in car culture. What that means is everything is very spread apart, the streets are wide for our huge cars, there aren't lots of little markets and shops everywhere that provide for your basic needs near your home - you might have to commute miles to get to a big box to just buy something like a broom. Any place where lots of people come together has to have tons of parking, which takes up lots of space and creates separation.
Thailand is very much in "scooter culture". That means the roads can be narrow and windy, scooters integrate better with bikes and pedestrians, and perhaps most importantly - you don't need a ton of parking. This struck me powerfully when we in Trang with this crazy hotel room that was all glass and stuck out right over the night market : here were hundreds of people shopping in a super dense market, and there's no parking lot. Just a row of scooters along the street. In the US, the closest equivalent is a shopping mall, which requires a huge parking lot and is thus isolated and separated from the heart of the city.
On a related note, I have a rental car now since my car was totalled and I haven't bought a new one yet. I got a Nissan Versa :
It's pretty fucking great. I've never driven one of these new style hatches before that are like a big bubble construction. It feels like the car is 99% interior empty space with just a tiny shell around it. It's incredibly roomy inside - it has more room inside than a BMW 3 series for example. I also love the feeling that there's basically no hood sticking out and even no door thickness around me, it means I can swerve it around and through tiny holes and have a really good intuition for where the car is (the wheels are way out at the edges of the body and the wheelbase is quite short).
It also feels pretty peppy, presumably because it's nice and light (much better than the Toyota Avalon I had before for example). In fact the only thing that really bugs me about it is the automatic transmission, which seems to always be upshifting right when I want power. (automatic transmissions are just balls; I know the new fancy 7 & 8 speed dual-clutch automatics in german cars are not bad, but even then I can feel them cause weird blips in power response at unexpected moments which I fucking despise; down with all automatic systems!).
The thing that really strikes me about the Versa (and all these similar light bubbles, like the Honda Fit) is just how awesome they could be if our roads weren't full of giant trucks and SUVs and such. If all our cars had top speeds of like 80 mph and all were small light cars like this, they could have a lot less crash protection, be lighter, maybe even be made of carbon fiber. The result would be a very roomy, tiny car that weighed maybe 1500 pounds, had a 1L or smaller engine, and got 50+ mpg and cost under $10k, and yet were roomy and peppy and fun to drive. (I guess in Europe you have things like the Renault Twingo that are pretty close to this).
It raises the question : why would you buy anything else? (other than a little bubble car). So far as I can tell the only reason is vanity (or, you know, if you enjoy cars and it's an indulgence). If you are a straight man in america who drives a little hatch, you will mocked by little girls and laughed at by your momma. Some people are in denial : "There's just something cool about driving a fast hatchback" . No, no, there's nothing cool about a fast hatchback. Unless you're female, gay, asian, or a chav, you can't drive a hatchback without shame.
Say for example you're comparing a Honda Civic vs. a Honda Fit. The Fit has much more interior room, and yet is smaller and lighter. The big draw of the Civic over the Fit is just that your friends won't laugh at you when you pull up in it (yeah and it's a bit more powerful).
This rental car is also only $150/week which is amazingly low. That's only $7800 a year. That seems like a lot for a car for a year, but it includes all registration, maintenance, repairs, and also time cost of having to deal with buying and servicing a car that you own.
There's a weird thing that happens with a car as cheap as the Versa. If you get a Versa for $10k or even $15k , depreciation cost is only about $1-$2k a year. That's way less than the cost to run it (insurance, gas, service, etc.). I love the autos.yahoo "total price" feature; if you look at the Versa total price , depreciation is only about 25% of cost , while for luxury cars like the BMW 5 series it's more like 40%
Anyway, so that sucked so bad we decided immediately to rent a car and get the fuck out of dodge. I've never driven on the left before, and also never driven in a crazy asian swarming traffic scenario before, so I was a little scared but figured WTF, push my boundaries, conquer a challenge, go for it. Driving on the left was no problem; the actual driving on the left is no issue at all, you get the hang of that immediately, I never once steered towards the wrong side of the road. There were a few little funny issues that got me - the hand controls on the wheel are mirror imaged, so I kept putting on the window wipers when I wanted to signal a turn. The bigger one was that when I got to an intersection, I instinctively looked to my left first then my right; in left-hand-drive places you need to do the opposite; I never fully got the hang of that.
As for driving in the swarm of scooters, it's really not that bad ; basically you just go slow and let them go around you. I mean, if you freak out when people swerve around you in the US, then I do not recommend it, but if you are comfortable with swerving around and merging and flowing around obstacles and making your own lanes, then it's not really a big difference. Lane lines are just vague suggestions; a two lane road might be three or four lanes. If you're slow you need to cling to the outside (left) of the lane. The thing that scared me the most was that when you need to pass a slow scooter, you just pull out into the "middle lane" and you rely on oncoming traffic to go wide around you. There's a very high level of trust required. It's really amazing how well the traffic flows in Asia - they merge so much better than US drivers; you'll have ten lanes of traffic of all kinds of different vehicles merging together, and people just keep swerving and flowing and they don't freak out the way we do.
Anyway, we took off to the south to go to Doi Inthanon. It's a wonderful feeling having your own car in a foreign country, you can see whatever you want, stop at roadside markets or food carts. We had some of our best food that day as we just saw people on the side of the road doing rotisserie barbecue over open fires and we'd pull over and point at things (out in the country you will run into people who speak no English at all, and who are the most friendly and polite people we met the whole time). We bought a bunch of good maps which I highly recommend; we had three different maps and they were all very different, I highly recommend not trusting any one map if you are heading out into the country. We randomly decided to turn on some road and wound up basically doing the "Mae Wang Loop" which is somewhat well known ( See : GT rider , ChaingMai1 , Travel and Life ) but not yet very often visited by tourists, presumably due to the rough dirt road.
We rented a Honda City which is a fantastic little car. The 1.5L engine is a bit too weak, it struggled up the mountain hills, but the small size is very nice in dense asian traffic, the interior is very roomy, and it has that wonderful Honda feel - it doesn't beep at you unnecessarily, everything feels very manual and direct, the switches all click into place, the steering is immediate and provides good feedback. I guess I'm a Honda fanboy, I just love the way they keep things simple and direct and do that well.
Anyway, the Mae Wang Loop scenery is just absurdly gorgeous; it's lush and very dense, with a huge variety of plants; there are tons of tribal villages and rice paddies, terraced fields and flower gardens. This time of year is the "spring" there and there are these pink flowering trees in bloom. It's highly recommended.
It's weird that we don't have slang words for "net friend" or "net acquaintance" that we can use in casual conversation. As in "my net acquaitance found an abandoned Nike missile site".
Cliff Mass writes a very interesting Seattle weather blog and also occasional depressing posts about the pathetic state of education in America (WA state in particular).
One thing I realized overseas is that I really don't like the idea of getting on random internet cafe computers and checking my email. Of course I clear histories and all that, but god knows those machines are probably full of every malware and worm in the world. Furthermore, it's annoying not having my own bookmarks and local settings and so on. I should really be able to log into a safe VM and do my browsing from there. The VM could store my passwords and use "hard to log" methods of validating my identity (such as a keypad you have to click to enter a code with buttons in randomized locations). This seems like one of those things that should clearly exist.
One of the annoying things about using net cafes overseas is the computer is in some foreign language, which is a mess to change in Windows, and then even if you change that, the browser knows your location so you get sent to google.co.th instead of google.com , which is fucking annoying. I dunno if there's some way to make all web sites act like you are browsing from the US, but certainly if you were going through a VM you could do it.
At times I would observe it and really admire it; like some delivery guy who was obviously in a big rush would still stop and laugh and chat with someone he greeted on the street. In that situation I would be all stressed out and trying to hurry and not talk to people, but they were still just making time for socializing and very relaxed.
At other times it was frustrating and annoying. Like when you're starving and order some food and watch the waiter wander the opposite direction of the kitchen and just stand there and chat with someone for a while. Or when you're sitting in a long tail or songtheaw waiting for the driver to get going and he's just picking his toes. Or when your laundry is supposed to be done in the evening because you leave that morning, but 20 hours after it was supposed to be done you get it back still wet.
I know when I'm slammed with work it makes me so tense and preoccupied that I just can't be around people any more, I become impossible to talk to and really short with people. Basically the entire 5 years I worked at Oddworld I felt like I couldn't spare a minute to chat with someone; if someone would come to my desk and not get right to the point I'd be like "ok, do you have a question? No? I'm getting back to work". I admire the idea that you could be slammed with work and just not let it bother you and still take time out to do nothing productive, but it's certainly not without consequences.
Sadly Thailand is getting richer quick and lots of tourist destinations are going "upscale". What that means is instead of charming old wood buildings with lots of trees and fresh air around, instead you get depressing concrete cubes with noisey air conditioners, artificial pools and fountains, and a complete detachment from why it's a nice place.
A few days ago after I wrote the last post I suddenly got sick of Thailand. Sick of the smell of open sewers everywhere, sick of guys asking me "tuk tuk?" every twenty feet, sick of being hustled and ripped off, sick of the Thais who hate tourists and give you the stink eye, sick of all the trashy westerners who have no respect for the culture and think vacation is for drinking and prostitutes, sick of the awful beds and mosquitos and bed bugs. Fortunately we decided to rent a car and get the fuck out of god-awful Chiang Mai and then had some marvelous adventures in the country and that travel fatigue passed.
On the way out I bought the upgrade to business class for $750 per person. That's a huge discount off just buying a business class ticket outright (which was around $5000 or more vs. the $1500 I spent on coach ; all-business class airlines were $8000). It's hard for me to judge the cost/benefit of something like to tell if it's a good purchase or not. If you've never flown first/business class - it's fucking great, it's everything you imagine. You get to wait in the private lounge, they hand you champagne when you get on, any amenity you ask for - toothpaste, slippers, etc. they give to you. The seats are wide and lean way back so you can actually sleep comfortably and not have horrible back pain afterward (this was a major motivation for me - $1500 is a lot, but it's much less than I spend on back related therapies). One thing I didn't consider actually turned out to be the most awesome win of all : you can board the plane at any time and jump the line, you have your own overhead bins that you don't have to fight with the coach riffraff for, and then when you leave the plane you have your own exit and get off in a snap. It completely removes the stress of flying, which comes from all the cows in coach who fight to get on first and are just so nasty. Also, it's sad but true that the people who fly business class just tend to be better human beings, they're polite, they don't talk loudly or have crying babies (as often) or fart a whole lot or kick you in the back of the seat.
Another expense issue I've been considering is the way so many westerners come here and turn into ridiculous penny pinchers. It's completely wrong to judge value by the local currency. You should judge cost/benefit value based on the amount of money you have and how easy it is for you to earn it. That is, if $1 is worth X happiness in your home town, it's still worth X happiness in Thailand, but stupid Farang come here and bicker over ten cents, or take ridiculous budget options. People will stay in 300 B hotels that are filthy and noisy instead of a 600 B hotel which is really nice. That's about $8. That's fucking stupid. People just seem to get into the mindset of the local currency level and related to that scale, but you shouldn't, you should stay on your scale. Everything is so cheap here, if it will make you happier, of course you should buy it. Some food item in the night market you're not sure about? Just buy it and try it and if you don't like it throw it out. Stupid.
A similar thing I've concluded is that taking public transit on vacation is fucking retarded. Yeah it's sort of fun once or twice cuz you get to figure out the system and you feel like a real local, but it's a HUGE waste of time. You're on vacation, you should not be standing waiting at a bus stop or a boat stop or whatever. Just hire a cab. In Thailand a lot of places will arrange shared transport for you, where you get on a shared longboat or taxi or minivan or something. You should refuse. Just get a private cab and go direct, don't fuck around picking up and dropping off other people, it wastes hours in total. The shared transport might be 400B , the private transport is 600B. Of course you should spend that.
Another one is that group tours are fucking awful. I've always known that, they're just a punishment, standing around with a mob of people, it ruins it. But in a place as cheap as Thailand of course you should just take a private tour. For example to take a group snorkeling boat might cost 350B per person. You can hire a private boat to take you for 1500B. Of course you should do that, it's a massive improvement to be alone and in control and be able to spend the amount of time that you want at each spot.
What about Thailand? It's pretty much exactly what everyone says, so I don't have a whole lot to add. Peak season sort of sucks at places like Railay and Phi Phi, I would recommend going in March or something if you want to go there. We've never failed to find a decent place to stay, but it has been very close to booked up and we've had to move hotels and things like that. We're winging everything and just moving around and discovering, it feels very free and wild, but also sometimes stressful because I don't know where I'll be tomorrow and I know I have to figure things out again.
Oh, travel agents really are just completely worthless, even in a strange foreign country where you might think they would help. To book flights, just use the internet. To find hotels, just walk around and see what looks good. To get transport just walk to a main road and flag someone down.
01/2009 to 12/2009
10/2008 to 01/2009
08/2008 to 10/2008
03/2008 to 08/2008
11/2007 to 03/2008
07/2006 to 11/2007
12/2005 to 07/2006
06/2005 to 12/2005
01/1999 to 06/2005