cb's rants

The older rants are semi-regularly moved off this page. You can always read the old rants :
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

You can see some of my photos at Flickr .


08-15-08

Is using a public WiFi actually a security risk? I mean I know it's a potential security risk, but is there an appreciable probability of someone snooping your connection?


08-15-08

Seattle still has a real working class ethos. Not that long ago, this was a very blue collar city. Before Microsoft totally transformed the east side, and the realnetworks and starbucks and safeco and all that, even in the 70's, maybe the 80's (?), it was a shipping and logging town. It was a place where people wore flannel and knit caps without irony or affectation. A lot of the architecture still invokes that era; there's a lot of low-slung brick buildings that feel really east-coasty to me. I like all that.

Of course that's going down the tubes just as fast as developers can put up condos.

Often when writing posts like this, I don't realy know WTF I'm talking about, but it's way more interesting if I just fill in all the details with what I think is probably true. My guesses are right like 90% of the time anyway, so whatever.


08-15-08

I really hate phone texting, I'm slow at it, and why the fuck would I text when I have a keyboard !? I should be able to just send texts to people's phones from my computer. They make those soft paper keyboards, you could get one in your shirt like over your belly, upside down, so that it's right side up when you look down at it. So you just look down and stick your belly out (or recline) and you have your hands right on a keyboard and you can type away.


08-15-08

There are a bunch of web sites out there about the amazing power of the true squat. Now, I'm a big fan of the squat, but this and this are going too far IMO.


08-15-08

There sure are a lot of fat ugly people in Seattle; it's almost like the midwest or something. It's worse the farther you get from the hip city center here; I stopped in some podunk towns on the way up here and it was like a land-whale parade. SF city is full of gorgeous young caucasians. I have to be demographically specific like that because it's such a weird mix, the young kids are all wealthy and new arrivals, but they're mixed in with a bunch of old asians and just the older local characters who still wear 49er jackets, and those people are crazy gross.


08-15-08

Household tips from Charlene : turn your pajamas inside out every other night; this keeps your stale body oil off your skin longer. Put your aloe sunburn lotion in the refrigerator; that way it's nice and cooling on your skin when you need it.

Tip from Annoyances on how to turn off the system Beep using the hidden devices list in Device Manager. My laptop does this when I plug the power cord in, it's very annoying. better version of the instructions


08-14-08

I'm amazed by the free goods exchange in San Francisco. A lot of people use the Craigslist Free section, but there's a huge trade of stuff just put out on the street. People put things out, others take them. I think I already told the story of how when we first moved to SF I put out my houseplants on the curb to water them, and went back an hour later to bring them in and they were all gone. Well I learned. It's actually quite beautiful. When you want something, you take it off the street, when you don't want it, you put it out, people help each other.

The thing that makes it amazing is nobody is violating the spirit of the free exchange. If people put out loads of junk it would break down. I mean in most cities if you just set up an area where people could leave things to give away, the fucking redneck scum would show up with pickup trucks and dump their broken washing machine. It would instantly be overwhelmed with garbage and nobody would ever go to take things away, just to dump trash. In SF people don't put out much junk for the most part.

The underclass of "scourers" also helps. The scourers swarm onto the streets when the gentry retreat into their mansions; they collect all the recycling, and they take any left over free items on the curbs and gather them to sell and make some money. The scourers are like a benevolent parasite, like cockroaches that scurry out to pick up the crumbs dropped from the cows fat on the riches of society.


08-14-08

Yeah, okay. I try to be tolerant, but nah. Dogs are evil and should not exist. Last night at the fucking Holiday Inn some old bitch had her dog in the lobby barking away. The halls smelled of dog. The hotel Liss and I stayed at in Oregon smelled of wet dog to high heaven. In San Fran you are constantly dodging dog shit, and in my beloved Dolores you are usually lying in small particles of it, and smelling big pieces of it. Of course you only notice the dog shit when the dogs playing there aren't stomping on your blanket or running past you barking. Tonight I discover there's some barky dog near our new apartment. Fuck you barky dog, you should not exist, and perhaps if I succumb to my evil side you won't much longer. Sure out in the country where dogs are meant to be, go nuts, have dogs all you want, but in the city they are a massive annoyance to everyone else. Getting a dog in the city is just extremely selfish and inconsiderate; it's a violation of the golden rule or the social contract or some such thing. Dogs are like guns - in theory they might be alright if you could gaurantee the owners were 100% perfect people who were safe and considerate and mindful of the obligations of ownership, but you cannot gaurantee that, so they should just be illegal.


08-14-08

It's really weird to me how Seattle pedestrians wait at red lights. I find myself stopping here just because everyone else is, and then I realize WTF not a single car is coming, why am I waiting? Nobody in SF waits at lights. Partly it's because people in SF commute by foot, and waiting at lights greatly lengthens your commute, but it's also kind of a safety thing. Walking in SF I've learned to basically ignore the lights and just watch the cars. A green light does not mean it's safe to go - there are people turning with no signal, people running lights, etc. So you ingore the greens and reds and just watch the cars and go when it's safe.

Biking in SF I learned the trick of watching the people inside the cars. I've long known the trick of watching the car's posture - you can see them accelerate, deccelerate, people edge to one side or the other before turning, you can see which way the wheels are pointing, etc. - but in SF for the first time I really started looking through car windows to see the people inside. You don't trust anything, you don't rely on the lights or your own obeying the law to keep you safe. This often leads you to break the law, because your obeying the law has little to do with your safety.


08-14-08

I got to my new place in Seattle today after much insanity (as always in a move). The I5 in Oregon was closed due to a fire. Apparently a truck carrying a load of hay caught on fire and caused great chaos. It was backed up for at least 8 miles and closed for about 12 hours. For those that don't know, the I5 in central Oregon is just about the *only* way to go north-south. When I got into the back end of the jam and heard about it on traffic radio, I decided to bail out and just get a hotel to wait it out. I took the Prelude across the grass median, and she barely made it.

And the moving truck broke down, and the apartment here was locked when it was supposed to be open, and my landlord is on vacation and it's hard to get a hold of him, blah blah yadda yadda.

Anyway, I'm fucking pissed and depressed. Our apartment here is absolutely filthy. The previous tenants just bailed out and left a ton of their crud behind and didn't clean it at all. It especially pisses me off because Alissa and I did such a damn good job of cleaning the place I just left. It's way cleaner than when I moved in, hell it might be the cleanest apartment I've ever seen; we scrubbed everything, from roof to floor, I rented a steam cleaner and did the carpets, it's immaculate; you could lick any surface in the apartment and be happy about it. And I get here to this filth. The landlord promises to get it cleaned, but it's too fucking late, I'm already here, and the movers come tomorrow, the great chance to really clean it when it's empty has passed. And I've been paying rent since Aug 1 so he had plenty of extra time to take care of it and didn't.

Everyone fucking sucks. If you want anything done you have to do it yourself. Fuck.

If you can't take car of your shit, okay, that's fine, you know I kind of expect you to fuck up and not take care of your shit. But please tell me about it soon enough for me to do it myself. Don't just wait until it's too late and let me discover that you couldn't handle your shit.


08-14-08

If you have some shit to get done Friday, and you find yourself bored with free time on Tuesday, get your shit done right now!! Then you can relax and have just as much free time. You never know what will come up in the next few days and prevent you from getting your shit done easily. People say "oh I'm lazy" , no you're not lazy, you're fucking retarded. It's *less* work to do it early when you can.


08-14-08

The forces that made Europe so interesting and diverse are gone forever. The great variety of food products and specialties and local crafts came largely from isolation, little communities with very little communication with the outside world. People there would hone their skills and pass it down through the generations; even if there were books on the topics, the people in the little towns didn't read them. Occasionally some information would be exchanged through trade.

It occurs to me that this is a lot like the way evolution works on a diverse population. Let's say each little town's cheese-making technique is one genotype. Over time, the cheese makers in that town try things slightly differently - this is the random variation of genome reproduction. Those variations are selected for by the townspeople, the fitter ones succeed and the cheesemakers adopt them and make more of them. Occasionally trade brings two genotypes together and they exchange ideas - this is the "crossing over" and allows for big changes and lucky random variations to get out into the rest of the population.

Contrast to how things work now; we have the huge advantage of rapid communication and recorded knowledge, which means that there's far less variation. You no longer have pockets where people don't have access to the "world's best cheese recipe". If some certain technique is selling the best in towns, everybody adopts that. If you look at American food production, it developed in the age of technology, and you can see the destructive effect of all the producers chasing the most popular product.

Now with the craft movement we have some improvement, but it's still not really a healthy evolution-like system. Crafters tend to be amateurs with money who get into the field; they start by learning from some resource, and then if there is some big improvement in technique, it gets out on the internet and everyone copies it. It's this instant spread of changes which is actually not good for evolutionary development. All the craft agents are not really working independently making their own variations and developing their own favorite method over time.


08-14-08

Our place in Seattle is pretty close to the new Capitol Hill Station ; apparently construction starts in early 2009 but god knows with Sound Transit. We're far enough from it that I don't think we'll get noise or trucks going past, but it will certainly affect our neighborhood. For one thing a whole block of shops is taken out, and that whole area will be undesirable for walking; it will cut a massive hole right out of the middle of our perambulation/procurement zone. Construction will also be right next to the cool park which is sad; already the really cool Vivace coffee location that looked out on the park closed.

I'm particularly scared because I imagine they'll take 500 years to finish the damn thing. Also, after they tear down the street-level buildings and put in the underground terminal the plan is to put in some 5+1 mixed development buildings above it, which I'm sure will house horrible people and horrible shops.


08-14-08

It's sort of a curse for people to have too much success with their natural abilities. They never learn to hustle and make the most of situations. This applies to smart kids in school who figure out that they can skate by with A's and B's without studying at all, and they never really learn how to work hard and study. It applies to people getting jobs, if you fall into pretty good jobs out of school and make decent money you never really learn how to look for job, and how to get a better job, and how to maximize your earn. Of course it also applies to dating - people who are pretty good looking have some early success finding dates and never really learn the skills of how to meet the people they want to meet and hook it up.

All of these can be measured by your "Game". I define Game as your acheived level of success in a given field, divided by the level that you should achieve naturally with your inherent qualities. The total level of success in a given field is zero-sum over the population and each person has a certain natural level they should be operating at. If one person with good game does better, it means others do worse.

For example, your Salary Pulling Game is just your salary divided by what you really should be making for your talent level; good hustlers might have a game factor as high as 2.0 ; people with no game who just rely on their natural abilities and hope they get paid fairly might be running as low as 0.5

Just because you have some success at something doesn't mean you are doing well; the right way to measure success is your game factor, whether or not you are beating expectations.


08-13-08

Platitudinous advice : do something with long term benefit every day. Metaphorically put some of your daily energy into a long term growth fund that will keep paying you back forever. Don't just take care of short term "todo" items, try to do things of lasting value that improve yourself or build towards something in your life. If you just keep taking care of things, you never make any progress; it's like you're bailing out a boat that keeps filling up with water. If you build something, even a tiny bit each day, it keeps adding up and adding up and it leads to real life changes.

This is obvious of course, but make it a philosophy. Apply it to everything. Don't just read something that amusing you, read something that educates you, or pushes your taste limits. Don't go to the same restaurant again - go somewhere new and add to your knowledge and experience. Want to lose weight? don't just diet, add muscle.


08-10-08

I claim you can't tell whether or not I use lighter fluid on my charcoal. I give you a blind taste test. If you just guessed randomly, you would be right 50% of the time, which means a bet at 1:1 is total freeroll for you. Let's say you can actually distinguish them P of the time, and the rest of the time your guess is random. That means you get the right answer F = P + (1-P)*.5 of the time = .5*P + .5 = (P+1)/2 ; the odds we should make depend on what P you claim to have. You should pay out F / (1-F) = (P+1) / (2 - 1 - P) = (P+1)/(1-P) . If you claim to be able to tell 50% of the time, you should pay 3:1 on the bet. If you claim to be able to tell 75% of the time, you should pay 7:1 ; for 90% confidence you should lay 19:1

BTW I agree if you retardedly put on way too much lighter fluid, or if you put it on after the initial lighting, you will in fact taste it. Also if you put the meat on the fire too soon before the coals have grayed and the fluid has burned off, then you might also taste it. But if you actually use it right, then you will not taste it. Especially not on a steak or something, you might taste it on something super bland and absorptive like unflavored barbecued tofu. Anyway, lighter fluid was just intended as an example of how to make odds for casual prop bets like this. Many people naively just make a 1:1 bet which is retarded free money for the guy claiming to tell the difference.


08-10-08

So I finally did the thing to isolate my cubic lerper into one .h and I made a page for it : SmoothDriver page

As a process experiment I consider this a disaster. The code is now in a form that is impossible for me to update. If I make fixes to my libraries they won't get into this code. It contains crippled versions of my library functions which I don't have confidence in because they aren't as heavily tested as the library functions I use all the time. It's a lot harder to read IMO sticking everything in a header and it's not as clear what are little generic helpers vs. what is the actual driver code.


08-09-08

When I move I like to use it as a time of cleansing, throwing off detritus and keep-sakes, things that tie me to a past that I have trouble letting go. When I moved from SLO to SF I finally gave away all my old Amiga stuff that I had been clinging to for many years without ever touching. This time the big cleanse is my past in physics. I have stack upon stack of photocopies of physics papers, and notebook upon notebook of my own writing. I used to print out or photocopy every research paper I read so that I could have it for my files, and write notes on it. I kind of imagined I was building my permanent collection for my office as a professor. Now I look at those papers and I can't even figure out what the *title* means. I was way off in esoterica, I was looking into quantum gravity, spin networks, topological field theories, all the work by Kauffman on discrete physics, stuff by Coleman and Preskill on the quantum mechanics of black holes, and tons of stuff about supersymmetric low-dimensional field theories, shit like that. I haven't looked at any of it in 10+ years now.

I did some really ridiculous stuff to myself back then. When I went to Europe for a few months after college, I took Weinberg's Quantum Theory of Fields. As I rode the rails I would work through it. When I "worked through" text books to teach myself stuff, I would make myself do most of the homework problems to make sure I was really learning it. I would also keep parallel notebooks and write down all my thoughts, basically writing like lecture notes as if I was going to teach the subject. Any time I thought there was a gap in the textbook, I would work it out. Like when he would say "from equation 12.4 we can derive ..." and I would think "WTF how does that follow?" I would force myself to work it out, so I have pages and pages of just doing work to prove things he states in the books. Of course now I wish I was just drinking and chasing girls then.

I was unbelievably pompous. I guess I still am (see, for example, "how to cut a bell pepper"), but at least now I'm aware of it, and it's sort of tongue-in-cheek now. Hell, the paper I wrote on PPM is called "Solving the Problems of Context Modeling", I'm sure the reviewers who read it did some serious eye-rolling. The funniest thing is just the way I would title things. I would write little notes to myself on thoughts, stuff like "Finding Fermi Statistics in Lorentz Group 360 Degree Rotations" , in big letters like that at the top of the page, and then I would always include "by Charles Bloom". As if some day it would be in some library archives somewhere for future students to admire.


08-08-08

Identity theft would be so freaking easy to prevent, but there seems to be no real action on it. I haven't even thought about it much, the solutions are just so obvious it doesn't even seem worth thinking about.

For example, one solution would be to let you change your account numbers whenever you want. This is just a number in a computer database, it's not like it costs them anything to let you have a new number. The old number would still be in your credit report, so it's not like you could hide your financial sins. So like the old numbers stick around but become read-only keys, and only the new number has write access to your finances (eg. getting new credit cards, taking out loans etc. requires the new number). This should really apply to your social security number too.

That reminds me, you should be able to make all your information require approval. For example, credit queries should require your approval. You should get a notice saying so and so wants to see your credit report, do you approve? Y/N. You should be able to do the same for ACH electronic bank transfers, etc.

The other obvious thing you could do is temp proxy numbers. Instead of putting in your real credit card number to buy something on a web site, you generate a temp Id Number from your credit card company which is only authorized for that one transaction. Again this would be super easy and make you super secure.

I'm not even considering methods that require a central safe clearing house for identity verification. If the government actually got involved they could make a safe id number trivially using something like a public/private key system where you only ever give out your public key to others, but I presume that won't happen, so I'm just mentioning things that the private sector (banks, credit card companies, etc.) can do within the current system.

ACH bank transfers are ridiculously insecure at the moment. Basically anybody who's seen one of your checks can instantly pull any amount of money directly out of your bank account, because they've got your account number and bank routing number. The best way to protect yourself at the moment is to have a "private account" and a "sandbox account". You keep most of your money in your private account and you never give out the number from that account to anyone - which means you do not even write checks from it. You keep a little bit of money in your sandbox, that's the account you hook up to ACH's and write checks from. Every so often you transfer from your private to your sandbox as necessary. If you get a leak, worst case you lose what's in the sandbox. You can also be more secure by closing the sandbox periodically and making a new one.


08-08-08

The new "Dry Creek" Cabernet at TJ's is pretty amazing. I know snobs never buy discount cab, but the $9.99 TJ-brand wine would be $40-50 on its own brand at a restaurant, so just pretend you're paying that. It opens with a nice subtle mellow fruit, proceeds into a soft tannin, it's far more balanced and subdued and than you normally get in discount wine.

The book "Once in Europa" was beautiful. It's definitely better than "Pig Earth". The poetry is awful, just skip it, and it sort of loses steam near the end of the main story, but somewhere in the middle the prose takes flight and carries you away.


08-07-08

I really hate nagging and being passive-aggressive and making people feel stupid, and I've been trying for a long time to cut it out or at least reduce it, but the fast is it's one of the few ways to make people actually change. If you just nicely say "hey I don't really like this thing you're doing, can you stop?" they may listen and try to cooperate, but they won't. People's natural tendencies to do something are very strong and they don't change easily. You need a strong force to fight it, and one such strong force is embarrassment. For example, if an employee or student of yours makes a mistake, you can make them feel stupid, like the mistake is so dumb and obvious, they will feel embarassed, and try very hard not to make a similar mistake again. Similarly with nagging. Nagging works just because it's so annoying and unpleasant, that if you constantly nag about some item, people will give in just to make you shut up. If you just ask nicely once, you're ignored. It's not the actual asking them to stop - it's the fear of future nags which makes someone actually behave differently. Both of these work even stronger in a group situation; if a group uses nagging and mockery to create embarassment, it can cause changes in behavior very quickly. I believe this is tapping into some fundamental monkey group behavior genes, where we naturally don't want to stand out and want to be accepted by the group and go with the flow and all that.

Most peer groups of hyper-intelligent guys teach each other this way. 2+2 is very heavy on the mockery, which is very useful on a public web forum because it makes the dumb people shut up so the posts tend to be high quality. Like if you just tell people "please read the FAQ" they don't do it, but if all the smart guys you admire go "wtf are you retarded? that's so basic it's in the fucking faq" then you shape up. Caltech was similar; not that you would be openly mocked, but you just had the feeling everyone was judging you and laughing inside if you asked a stupid question, so you tried to be very careful.

Of course the bigger issue for me is probably not *how* I try to change people but rather simply the fact that I do try to change people.


08-07-08

I think I'm going to post my poker AI program "GoldBullion". I'm a little worried about the consequences, but fuck it. I don't think the poker sites can come after me in court since they're all illegal offshore operations. Plus the code is hard enough to dig into that probably nobody will ever look at it.

I really like a lot of the stuff I did in there. Some is very generic programming stuff :

One trivial thing worked really well - I generated reports in HTML. On each poker spy window you can click a button to see the recent hand history. I write an html file then just pop a browser pointed at it. This is so much nicer than all the custom GUIs people do because a browser actually has nice layout and fonts and all that. Plus, it means the user can just copy-paste out HTML of hands to share with friends or whatever. It's also smart about what it shows. It doesn't dump every single hand, it just dumps the last few hands, and then also the very significant hands in the past. This makes it much easier to scan and find the information you really want.

Another that worked nicely was the way I did my database. The hand history database is kept in two files - one a raw journal of every hand seen in a very complete flexible format; this never goes out of date. The other file is a flat baked memory dump of the cached player stat structures, so it can be loaded very fast. The journal only ever gets appended to, and I also used a special temp append file to make the appending crash-safe so that you never corrupt your journal. Anyway, the part I really liked is that when the cached data structures change or whatever, the program detects it and loads the journal instead automatically and regenerates the fast version. While developing I never have to worry about my fast structure being backwards compatible, and I never have to run a "database fix" program, I just keep running GoldBullion, usually it starts up instantly, and sometimes it detects a bad cache file and takes a while to start up. Very nice IMO.

Some of the debugging stuff was also very cool. Checking on the bots is not trivial because there are so many situations they can be in, and many of them are trivially easy, you can't really just give them a regression test that you can step through and verify they're working - they might look good on 100 hands and then do something weird on the next; it's also really hard to define what right or wrong behavior is. But there are things you can do. For one thing having the old fixed-function TTH bots was a nice baseline. It lets you play your research bot against them and not worry about them being buggy or changing. Just letting the bots sit and play against each other was very good; I would use it in 2 ways - 1. I could log the hands generated and make statistics on the players just like I could on live players, and then you can look at the stats of how your bot is playing over 100,000 hands and see flaws in things like the aggression numbers or the continuation bet %, and 2. I could use the same tools I used on real histories to filter for the very interesting hands and manually examine how the bots played those hands. This leads to the next cool debugging tool - I could make the bots replay any hand history, and have them log a bunch of info about what they're thinking at each step. I could also output the 13x13 bitmap image of the bayesian hand probabilities and see them change over time visually.


08-07-08

I guess I never posted this - the place I'm going to work in Seattle is "RAD". They are rad. I'm gonna work on some new products for game dev that will kick major ass.

It's weird, right now a ton of people that I know are moving to Seattle (or Olympia, WTF boy?). Most of my favorite people in the industry are up there now or will be in the next few months. That's pretty sweet, though it would be better if we were all congregating somewhere with more sun.


08-06-08

Stuff that is over :

Talking on your cell phone in public. This is so 1990's valley girl. It's completely uncouth and shows a complete lack of manners and refinement. It's roughly equivalent to cutting your nails or picking your nose in public. Bluetooth conversations are even worse.

Showing off your hi-tech gadgets. Gadgets are no longer cool. Technology is not amazing. If it's an effective tool for helping you live better, then use it to live better. The gadget is no longer and end in itself, it is a means. Are you going to show off how amazing scissors are next? Get over it.

Talking about Myspace or Facebook or pretty much anything on the internet. ZOMG you do stuff on the interweb? What's that? How fascinating and unique. Oh wait, no it's neither fascinating nor unique. Yes we all have fucking blogs and we read blogs, but we don't talk about it. This is akin to recounting the plot of your favorite TV shows. It's a mindless pleasure that you can indulge at home alone.

Snarky comments making fun of others. Your attempts at humorous condescension just sound like bitterness and pessimism; they aren't as funny as you think, and we've all thought of it before. In the rare case that you actually capture les mots justes to really skewer someone, then go ahead, but you probably didn't. We're all ridiculous, they're just trying to live.

Complaining about Windows or C++ or the US government or how dumb the populace is. Yeah yeah, it sucks, whatever. That's not interesting. If you'd like we can talk about concrete practical ways that we can improve our programming environment despite the suckitude of Windows and C++, or we can talk about how we can improve America despite our broken system.

Making lists of stuff that's over. Also, writing douchey things but then mocking yourself to try to absolve the sin.


08-06-08

Ugh. All I want is to be able to sleep in peace. Is that too much to ask? Fuck this city and this fucking building and my asshole fucking neighbors. I don't want to live in apartments any more. It's not just the waking up tired that's killing me, it's the waking up angry and sad, all my good spirit and optimism crushed out of me before I even get out of bed.

I'm really not looking forward to commuting. Commuting starts my day off all sour and cranky. I really like to put the unpleasantness near the end of the day so I can work out and get drunk and go to sleep and forget about it. The morning should be slow and calm and peaceful, a time for hope, when you still think of the world as good and full of possibilities, you're excited about all the things you can accomplish. I like to nurture that energy and get some good thinking and work done before I get frazzled.


08-04-08

I just saw the ad for "Star Wars : The Clone Wars" ; at first I thought it was an ad for a new video game. I was thinking "hey, the LucasArts guys finally got their shit together and made a decent looking video game", and then I realized it was a movie. It looks really shitty for a movie. And it's sad that video games are not at that level.


08-04-08

Holy crap Ticketmaster is the fucking devil. I mean they always have been, but it seems worse than ever. I just bought 2 tickets, $22 each, total charge : $73. That's almost a 100% service charge. I would love to boycott them, but I have no choice, if I want to see these shows I have to use them. They do the standard fucking devil cock-muncher thing of splitting up the charges into meaningless distinctions too so it doesn't look so bad to morons (phone companies love this one).

ADULT Tickets					US $22.00 x 2
Total Convenience Charge(s) 	US $9.05 x 2
Total Building Facility Charge(s) 	US $2.00 x 2
Order Processing Charge 	US $3.36
TicketFast® 	US $2.63
TOTAL CHARGES 	US $72.09

VISA Total billed :
US $73.01

There have been 16 class action suits against Ticketmaster, but none have produced anything that I can tell. I'm not sure why they aren't subject to antitrust or anticompetetive laws.


08-04-08

During this time of unemployment it's been a whole new world of Chill Charles, but I can already feel the Manic Me creeping back in. Just with the moving shit I need to get together, I start getting crazy. When I have a todo list of shit that needs to get done, I just want to knock it out, and anything that slows me down pisses me off, and I become 100% focused on the tasks, such that I literally don't even hear people that are talking to me. I find myself going "uh huh, yeah" and then fifteen seconds later I go "wait, what did you say?".

One thing I've realized from unemployment is that a lot of what makes bohemian kids cool is just their complete lack of anything to do. They're very chill because they have no todo list. They're up for getting drunk or high or partying whenever because they don't have to do anything tomorrow. They have lots of free time and energy and they're bored, which lets them do art projects and make crazy outfits. They wander around the city and go to bars a lot which make them familiar with everything and friendly with proprietors which make them seem in the loop. Basically all the attributes I thought of as admirable stem from just being idle. (of course there is something admirable about them - they're having fun with their idleness, not just being pure layabouts like the traditional white trash drunkard).


08-03-08

ZOMG lol. Our new landlord is this wacky wild man who rides his bike everywhere, towing his tools and such in a bike trailer. Turns out he's the frontman of the bicycle-touring band aptly named "bicycle" ; see CNN article . Crazy wow.


08-01-08

Audio compression is broken. Here's a very easy way to see it.

1 GB can hold 5000 novels. (1 M letters per novel at 0.2 bits per character)

1 GB can hold about 15 CDs. (10^9 / 192 / 1000 * 8 / 60 / 45 = 15.4)

I think it's intuitively obvious that 333 novels contains more real information than one CD.

Here's another way of seeing it : an entire human genome is only 0.8 GB. I can write the code to make a musician, and I still have 0.2 GB left over in which I can store 10,000 songs in sheet music, as well as detailed instructions on how to manufacture instruments. This is a program to produce music (the fact that we can't currently execute this code is irrelevant to the theoretical consideration, it is executable in principle). I just encoded 10,000 songs in 1 GB. (albeit with a lot of loss in a PSNR sense)

Basically audio is jam packed full of useless detail. For example, if somebody sits and tries to strum a chord on a guitar exactly the same way over and over, the raw wav data for every one of those chords will look vastly different, but to our ear they all sound very similar, and the differences are just randomness. If you had a chord generator that could randomly make a sound that was somewhere in that space of what he was playing, you could let the generator replace all those notes. In a raw PSNR sense they would be way way off, but the experience would be identical to a human listener.

Let me add a little more detail :

Anything that a compressor does not learn, it is transmitting. So, for example, text compressors are still not really learning grammar, which means they are implicitly transmitting the information about the grammar. That means within the 0.2 bpc output, a lot of that information is actually the rules of grammar.

A basic audio compressor is also obviously transmitting tons of things it's not learning about the music. It's not learning what sound comes from what instrument, what those instruments tend to sound like (eg. a waveguide simulation that reproduces that sound), what instruments are vocal and the throat simulation parameters of that vocalist, etc.

However, even if the audio compressor learned all that stuff it would still be really wasteful. The problem is there's just so much irrelevant nonsense in audio. As a simple example, a pretty decent model for audio is a bunch of synth wave packets with effects. A wave packet is some amplitude curve applied to some periodic wave shape. Each of these has various parameters that can change over time. Each step also has random noise on it. The parameters of the noise (mean & sdev) are important, but the exact values that come out of the noise are not. Also, the phase of the basic wave shape at the base of the synth is irrelevant to how it sounds. But if you regenerate the exact same sound again with different random noise on the params and different phase, it will come out looking totally different.

If for some reason you still disagree, here's another way to see this : you can go to [KONTROL] or something and download some techno DJ mix MP3's. These are generally around 80 MB an hour. However, obviously they can be reproduced from the original tracker data, which is note timing + effect parameters over time. The total data for all that is maybe a few MB, perhaps less - it's very tiny. Modern techno is not trivial like MIDI, they're running a ton of complex processing with parameters that change over time. Now obviously techno is simpler than some guitar song - but the actual information content is not several orders of magnitude different.


08-01-08

With my new programs "drives" and "tabdir" I'm forced to confront the question yet again of whether a kB is 1024 bytes or 1000 bytes. I'd like to go with 1000, since that's what drive makers use now. For example, my 250 GB drive is actually 233 GB in the 1024 sense. However, Windows explorer and such seem to use the 1024 kB. There's a certain merit to the 1024 as its a power of two so when you have your 32 byte objects you can fit 32 of them in 1 k, but for normal people doing file sizes and stuff 1000 makes a lot more sense, and lets you use decimals in a normal sensible way.


08-01-08

The more generic and obvious and trite an observation is, the more it resonates with people. This itself is a very obvious observation. Of course pop lyricists know this well - if you write some really generic song about how tough love is, lots of people will connect with it. It's also the master trick of astrologers - if you make a bunch of nonspecific predictions, people will find ways to adapt them to fit their own life. The converse is also true - if you make actually deep complex observations that are truly interesting and required some thought, those do not hit home, people might go "hmm" but they don't seep into their brains.

All the things you learn over time that really help you live tend to be these sort of trite one-sentence platitudes. Unfortunately, they are also things that you can't really learn from just by hearing; you have to go through some long personal experience, and then finally you see the wisdom of the little saying and it starts to actually affect how you behave.

Anyway, I've been thinking through this thing I learned about communication. People don't necessarily say what they mean or mean what they say, but they are trying to tell you something, so if you think about what made them say what they did, you can see what they're really thinking. The profound thing for me was actually the reversal - when you say something, people are not in fact just listening to your words, they're trying to guess what you really mean behind those words, or why you said that. So if you're trying to convey a certain message, you don't necessarily accomplish that by making words that contain that message.

When you listen to someone, there are many levels. First, there's the actual logical content of their words. Often, you should just ingore that. Then there's what they meant to say in their words. For example, somebody might ask a question badly, like "hey cbloom, why do you like boost so much?" , and if I was a retard I would go off about how I don't really love boost, I love the STL, but if I would listen to the question they *meant* to ask, I could just answer that, which is something like "why do you like standard libraries so much?".

Then on the next level you've got not just what they meant to say, but what message they meant to convey by saying that. This is where you think to yourself "why did they choose to say that?" and of course there's nonverbal communication as well. There are tons of examples of course, but a common one is just when someone tries to make chitchat with you. The actual words are garbage, but the real message is "hey, I want to talk to you, I'm trying to be friendly". If their chitchat was lame and you don't give much of a reply, you're saying "fuck off, I don't want to talk to you". If you want to encourage the chitchat you should reply in a nice way even if its not logical in purely verbal sense based on what they said.

It didn't really hit home for me until I studied PUA a while ago. There's a lot of evil stuff in PUA, but a large part of it is just about being aware of communication and what messages you're really sending and what messages other people are really sending.

Similarly you need to be aware that what you mean doesn't come across in your words. Don't just say the words that express your idea, because people are not listening to your words. Instead realize how people hearing will take those words, and say the words that create the impression you want. A classic one of course is with guys trying to show they're nice guys at a bar, you go up to a girl and say "hi" and then get into "a like your dress" ; you may think these words are conveying that you're a good guy and you're interested, but the message that's going across is "I'm a boring loser who's uncreative and timid and perhaps just wants to bed you".

In some sense this seems too analytical and manipulative, but it sort of has to be. If you just listen and speak naively, you will be miscommunicating all the time. One of the things that's always tripped me up is the whole line of questions like "does this make my butt look fat?". God, what a retarded question, if I just listen to the words, it makes me angry and not want to cooperate, but if you stop and listen to the real message, they're saying "hey honey, I feel insecure, compliment me", and that's a totally reasonable thing to say and you should respond well to that message, and just ignore the verbal text. Also I used to get sort of pissed at people for obviously sending subtextual messages like that - I would think hey just fucking say what you want - but of course that's ridiculous, for one thing people are shy, but for another thing, everyone is operating on a subtextual level, so if you just say what you really want people will hear the subtext. Like if you just went up to a girl and said "hey we're both hot, we should fuck", what she hears is the subtext "I'm a psychopath".


08-01-08

I'm trying to clean up my hard disk a bit, and keep finding evil nonsense. There are a lot of programs out there that keep disk caches themselves and don't limit their size. ACDSee is one, it keeps a file metadata cache which just grows and grows. Visual Assist is a huge culprit. It keeps a history of your edits to help you get unsaved backups, which is cool and all, but there doesn't seem to be a size limit, so that thing was like 2 G. iTunes is keeping a ton of crud in "Application Data" that's worthless. The other big thing is there various "tmp" dirs scattered around, fucking people don't use the standard "%tmp" which I periodically wipe.

It's sort of a constant problem that as computers get bigger and more powerful, programmers get lazier. Programs are a gas, they expand to fill whatever space is available. To some extent that's reasonable, as computers are more powerful it's not wise to spend so much time on micro optimization, you should use that power to get your program done faster and with more features. However, people usually do this the wrong way.

Just because the computer is bigger and faster doesn't mean it's okay to use systems with bad asymptotic behavior. That is, your O() should still be right, but you can just be a bit more sloppy about the constant factor in front of that. Bad programmers instead get lazy and do things like use O(N^2) systems instead of O(NlogN). Similarly, just because you can use more disk space or more memory doesn't mean its okay to keep growing your disk cache without limit, or to have a memory leak and just never free things. Yes, you can be more bloated, but you can't be just plain wrong.


08-01-08

I like ranting about how fucked up things are as much as the next person, but it gets tiresome. The rants are a brief expulsion of frustration, not a constant state of mind. Yes, yes, the world is lame, now fucking get over it and get out there and make the best of it. Boys only like you because you're pretty? Okay, yes, that's lame, rant, now fucking make yourself pretty and get out there. Every shopkeep's always trying to rip you off? Yes, that's depressing, now fucking try to rip them off.

For example, there are certain coders that will go off on the evils of C++ and Windows at the drop of a hat. Yes, yes, yes, they are fucked up, so what, we've all heard this a million times before, it's not helping anything, let's just use what we've got and make the most of it. A certain amount of frustrated ranting is fine but then you get down to it, you don't check out and refuse to play.

Of course many smart nerdy guys do exactly that with the social world. They say : god damn, girls are so dumb, they don't see how great I really am, they just judge people by the way they're dressed and how smooth their pickup line is, I see the girls being all gaga over these guys that I know are the scum of the earth; this game is retarded, I refuse to play.

My new philosophy for trying to be positive about the world is the "1% rule". 99% of everything is shit. That is not a complaint, and it shouldn't get you down or surprise you. When you go out and meet people, sure you're most likely to be running into the 99% that's shit. Keep trying. It just means you should really cherish the 1% that's great. The same goes for movies, restaurants, etc. Another generic mediocre experience? No surprise, no biggy, it's just part of the 99%. Something actually good? Wow, yay, I love it, what a treat!


07-31-08

Well I stole tabview from Casey and changed it so it does incremental treeview building. The problem is the Windows controls are so incredibly slow, if you try to populate the whole treeview up front it takes several minutes for big files. So my new version populates the treeview just in time. It starts with just the root, then any time you expand a node I get the message before it expands and I add the nodes. You can download the zip of tabview .

Also in ChukSH now is "tabdir" which does a recursive dir in a format that's nice for use with tabview. It's pretty decent way to check out what's going on with your drive. I haven't done the bit to count actual clusters used yet.

Oh, evil warning if you try to build any of this code : "tabview" builds on its own, that's easy. Newer chsh stuff depends on "cblib" my new library, older chsh stuff depends on "crblib", my deprecated library. You can pretty much tell the difference because ".cpp" = new and ".c" = old.

I sort of vaguely tried to make tabdir 64-bit correct but then got lazy and annoyed and started using "int" again. That's going to be a pain in the ass if that ever actually happens. Like if we ever have individual files bigger than 2 GB a lot of programs are going to crap out and eat their own ass. It'll be like the clusterfuck I just went through with unicode.


07-31-08

I'm trying to do a little thing to get the true size of the file on disk, and it's turning out to be a huge pain. Now, you can certainly easily enough get the cluster size of the drive and see how the file size rounds up to the nearest cluster size. The problem is that's wrong on NTFS for small files. Small files in NTFS sometimes get crammed into the MFT. There doesn't seem to be any easy way to tell if that's happened, though.

The only actual foolproof way is there's a low level function which will actually give you a list of where all the clusters allocated to a file are. You can walk the list and count them to get the actual size on disk, and you can see the fragmentation too while you're at it. Use the DeviceIoControl API with FSCTL_GET_RETRIEVAL_POINTERS. See good article here on the Cluster walk APIs .

What a pain.

Oh, and it's kind of an ambiguous question whether you should include the size of the MFT entry as part of the "size on disk" for a given file. Every file takes up 1k in the MFT, which may or may not include some of the file data.


07-31-08

There're a lot of great coders out there who just insist on continuing to reinvent the wheel all the time. I'm certainly still somewhat guilty of that sin myself, but I think at least I'm aware of it. It frustrates me every time I have to interact with their code, and I just think it's a mistake.

Using existing libraries is just so inherently superior on many levels, that you need to have a really really good reason to not go with an existing standardized solution.

For existing libraries I'm talking about things like the C stdlib, the STL, and also open source libraries that are stable and old and very well tested such as Boost etc.

These things have a very low chance of bugs, the performance is generally okay, and the features are usually pretty complete. But what's more important is that the performance characteristics are well known, the feature set is the standard one so that you know you have the same features as everyone else, you can adopt improvements to the standard, other people's code fragments are interoperable with yours, etc.

Most importantly, they're familiar to lots of users. Familiarity has *huge* value. You may not like the way std::map works, but lots of people are familiar with its quirks, so you really should not make a better replacement. Familiarity lets me write code without reading through all your documentation, and your documentation usually sucks so I actually have to go and read your code and I waste a ton of time. If your code uses standard stuff and is written with the standard styles, anyone can read and instantly know what's going on without digging all over to figure out your system.

In fact, familiarity is so valuable that new interfaces that you make should be designed to mimic standard ones that people are familiar with. That means any container should be made to look and act just like an STL container. Simple string routines should mimic the conventions of the stdlib string functions. Doing it a "better" way is really much worse.


07-30-08

I'm trying to do some reading to get myself caught up with the present in games. There are lots of game devs now with good publications online :

Valve Publications
Bungie Publications
Insomniac Publications
Naughty Dog Publication

Apparently people are pretty high on Lock-free / wait-ree synchronization for the theoretical future of many many cores; as usual the Wikipedia page is a good start with some nice links; I also found this nice page : High Performance Synchronization by Michael Scott which has lots of downloadable code for crazy widgets.

Somewhat off topic, but for the threaded future you want nice threading allocators like the pretty awesome TCMalloc in Google Perf Tools .

It would be cool if there was a game programming mailing list still alive. I scanned a bit of GDAlgorithms, it seems to be semi-alive still, but I don't see many real working game devs in there.


07-29-08

When someone is just outspoken and casual about quickly saying when they're unhappy, it really makes it comfortable and easy to be around them. It's not the actual statements that help so much - it's knowing that they would say something if they were bothered. Like if you have a roommate and they instantly just say "hey, whoah, don't do that" when you bother them, and it's no big deal, then you can just do what you want and not worry, because if you're bothering they'll say something, so you know the silence means approval. The worst roommate is the one who silently fumes and doesn't say anything for hours until it's a huge issue and then it turns into a big fight. It's not the fight that's so bad, it's the way it affects your every moment, you have to keep looking over and trying to read their body language to see if you're doing anything bad. It makes you anxious and on-edge every moment. Silence becomes a torturous uncertainty.

I can definitely be the silent fumer sometimes, but I'm working hard to be the quick casual complainer. Of course someone who complains too often is also bad. Life is hard.


07-29-08

It's kind of funny how much pop music plays to the opposite of the prevailing mood. Right now Americans are generally hopeless, worried about government, our economy, our place in the world, we see our priviledged status of super prosperity perhaps finally failing. What do we listen to? Pure exuberant candy pop, new-disco, electronic dance music.

In the 90's America was in an amazing stretch of super prosperity, there was largely peace around the world, we mostly liked our government and everything was roses. So we listened to grunge and emo and nine inch nails and metallica and all the rich white kids whined about how hard life was.

I guess if you look back at the first age of disco, which started around 1970, it was another really down time for the US. I'm sure someone else could fill in the gaps better, but a few things are obvious. It was near the peak of disillusionment with the Vietnam war (Tet was 1968, we were in 'nam roughly 65-73). Watergate was 1972 so there was much hate and distrust of government. We weren't too far off the Kennedy assasination and the Cuban missile crisis still, so there was fear of the cold war and all that. It was also a period of severe racial strife and unrest among the poor; it was the time of massive urban riots all over the US, mainly 67-69. From that you obviously get the most candy pop music fad ever, with a glorification of living fast and partying hard.

It will be kind of a shame if Obama wins and makes the country happy again, because the whole current youth movement of partying and sex and fast living will die. Fortunately, I'm quite sure that even if Obama wins the US is still headed for the shitter, so the fun new-disco is here to stay for a little while.


07-29-08

The NYT really likes "Black Moth Super Rainbow" ; I should've known it would be pretentious unlistenable garbage ala Animal Collective.


07-28-08

I guess I'm not going to Burning Man this year, and I'm kind of sad about that. In theory there could be better things than Burning Man, like a party on a beach somewhere tropical, with lots of chill gorgeous people all half-naked and dancing to some of the world's best DJs with amazing light and fire shows and lots of drugs. But that just doesn't seem to exist, or if it does I'm not invited. Anyway, I hope to go next year; I don't have too many more years left before I get old.

Some ideas I had :

It would be cool to build a Penny Farthing (aka an old timey bicycle), and ride around with a top hat and a giant handlebar mustache. BTW while searching for penny farthing sites I found this insane guy riding around the world on a penny farthing .

Get a real bear skin and wear it as a cloak. Ideally get one with the bear head still attached so you can wear the head on your head. Strap the arms to your arms, then you can get down on all fours and walk around like a bear too. Some hippie might give you shit about fur, but you can always lie and say you're an amazing artist and you made it from synthetics.


07-27-08

Household tips from auntie Charlotte : Salt stops red wine from staining. When you spill red wine, immediately run and grab your box of salt and dump the whole box on the spill. Tons and tons of salt so that it is just light pink and only slightly damp. Blot very gently. Let it sit until completely dry, 12 hours or so. Vacuum it up. There will be no stain.


07-27-08

One of the amazingly cool things about San Francisco is that the tourists and horrible people do a real good job of sequestering themselves in little undesirable parts of the city that I wouldn't want to go to anyway. The whole Union Square shopping disaster is mobbed with tourists, but it's just a gross mall over there, they can have it. Fisherman's Wharf and the Fort Mason area and North Beach are mobbed with the disgusting cruise ship people, hey, go nuts, have fun over there. It's like impossible to get from the Mission to the north side anyway, I don't want to have anything to do with that part of the city. The sweet yummy best part of the city down here is blissfully untouched (mostly - the gentry invasion of places like Tartine and Delfina and whatnot is creating a mild vacuum that pulls in some human flotsam, but it's not too bad yet).


07-27-08

The DFA mixes from some MoMA party are pretty cool ; DFA is a NY DJ label that specializes in new-electro-disco. We saw Holy Ghost on Friday and they're pretty solid; they spin italodisco-influenced dance music. I haven't listened to the other mixes yet, dunno if they're any good.


07-27-08

If you're an expert-system aggregator, you take in advice from various experts, weight them based on their confidence and your own prediction of expert accuracy based on local conditions. In practice it's best to have experts that have very strong opinions which are very different from each other. You don't actually really want the experts that have the best entropy on their own, since they will tend to be very similar and their opinions are already well hedged.

For example, in data compression, if you want to weight two models, you should pick something like one PPM and one LZ so they are very different. In Netflix if you are weighting two models, you want to pick one that's very local (similar users & movies matrix) and one that's very global (low rank SVD).

I see the same thing in human life decision making. I don't really want to talk to a smart advice giver who will see the pros and cons and give me a thoughtful hedged answer, like "well, there's this side and that one" - yes yes, I know that already. It helps a lot more to just be able to go to an expert who presents one side of the argument very strongly. You can listen to that and consider it. Then you go listen to an expert who presents the other side. Then you make your own decision.


07-27-08

I'm a much lazier programmer these days. When I was young, if I wanted to implement something and it seemed to require some really complex data structure, I would think "sweet, this is a chance for me to implement a self-balancing tree, it'll be fun" ; I was more inclined to take the more complex solution just for the fun of implementing it. Or maybe not just for the fun, but if some really complicated algorithm would perform better or be more elegant, I would go for it. Now, when I want to accomplish some goal, I think "how can I get the result I want with the minimum amount of complexity".

A lot of old people call this "wisdom". I think that's disingenuous. They pretend that through the benefits of experience they see the error of writing lots of complex code and can wisely choose to do less. I don't believe they're actually doing that. Neither the young over-eager coder, nor the old cautious coder are truly making a logical decision about how to solve the problem. Both of them are just following their illogical gut instinct and natural inclination. When the old coder chooses to get the job done with less work, it's really just fatigue and laziness.

Certainly, doing less is usually the right answer. Thus the old coder is more often right than the overeager young coder. But that does not mean he has actually made any progress toward true rational decision making.

You see the same thing with all sorts of decision making. eg poker. Young players tend to be too aggressive and too tricky. Old players often get very conservative and straightforward. They call this "wisdom", but true wisdom would be seeing that both ways have their benefits and you should be able to turn them on and off when appropriate.


07-25-08

We stopped in Urban Outfitters today in my ongoing futile quest to find some decent Asics Onitsuka Tigers in my size. Yes, yes, I know Zappos & whatnot, well those fucking sites don't carry most of the Tigers styles and the good ones they have, they don't have in my size. Fuckers. WTF this is the fucking internet age why can't I see every style of fucking shoe and every size and get them from the fucking distributor. Retarded.

Anyhoo, Urban Outfitters is a really good barometer for what was super cool like 2 years ago, and what is no longer cool. Something I noticed in particular this time were all the hats. Lots of fedoras and shit like that. Funky old school hats (on men) have been big in the hipster crowd for the past 10 years or so. Urban Outfitters is now pushing them, so your dentist who is 50 and white and dorky but likes to think he is "with it" will soon be wearing them, thus they are no longer cool. An occasional check in with UO is pretty valuable, it lets you know what to give away in your next Buffalo Exchange swap.

ps. yes, I know Tigers are very 2002, but they fit my feet well and I really hate shopping for shoes, when I find a style that fits I want to keep buying the exact same shoe for the rest of my life.


07-25-08

Pitchfork is the official place to go to get your hand stamped with indie music credibility, but the better mega music site is Coke Machine Glow ; (an unfortunate name because people call it CMG, which means a million other things and you can't google it).

CMG is also full of amusing sarcasm and biley wit. I was just reading their list of Top 15 Steve Albini Records ; part of the Listravaganza ; in it I discovered that Albini is the engineer behind my beloved Songs Ohia and also Will Oldham ; WTF , the Breeders, Nirvana, Pixies, stuff I was expecting, but the modern indie-blues-country stars was a big surprise. (As another example of how awesome CMG is, one of the lists is "Top 5 Sub-Par Beach Boys Tracks That Are Still Better Than Any Song by Wolf Parade").

I think CMG's taste is far better than Pitchfork's, but it's even more obfuscated; that's partly intentional, CMG is intended for people who get all the referential jokes, but it's rather forced most of the time and becomes tedious.


07-25-08

I often try to "let things slide" because I figure the trouble of getting all annoyed and getting in a confrontation is greater than just suffering through the infraction. I think in theory that's actually true, the pain caused by most of these little sins is not really that great, they don't really hurt your day that much, and the way I get all in a huff and get all riled up by confrontations does in fact screw up my day a lot. The problem is that I can't just let things slide. It eats at me in various ways. First I sit and fume about what they're doing and debate with myself whether or not I should confront them. Then, if I choose not to confront, I sit and fume about the fact that they got away with it and what shits people are, and then I also get mad at myself for being such a pussy and letting them get away with it. This self-anger at saying nothing can linger for a long time, which is a pretty bad price to pay.

Of course this fantasy that confrontation would somehow make it all better isn't real either. I've gotten into a few confrontations recently and they rarely satisfy, you just get all angry yelling at the person, and they aren't apologetic or anything for being an ass, and you can't do anything about it, so you feel just as frustrated and the anger lingers just like if you did nothing.

The best thing to do, (as Thatcher recently wrote), is to immediately say something in a casual joking way, like when someone tries to cut in line, say "hey, nice try cutting there, I like your moxy, better luck next time" or I dunno, something better that someone less awkward than me would say.

Recently I've been often in the gloom about wanting to do something and not doing it. I don't think that doing it is actually any better, but you kind of have to just do it so that you can feel okay about yourself, and so you can be a person who does it. Is that vague enough?

I wish we could just cold-cock somebody who's being an ass the way that childish macho fantasy character on Californication does.


07-25-08

I kind of want an iPhone 3G, but the whole Apple system of "fuck you, no you're not allowed to do what you want with your own product, you're locked into our shitty universe" is just so evil I don't want to get sucked in. Yes I know you can jailbreak the phones, but Apple does their best to brick those and I don't want to have to be careful about what I do with the fucking thing. Everybody should really boycott Apple, they're just such a bunch of cockmunchers, they shouldn't be able to get away with this nonsense iTunes shitty software quality and DRM nonsense.

Unfortunately, their hardware is really good. Somehow they managed to hire some really good hardware guys, but their corporate directors are still doing their damndest to make them fucked.

I guess I'll wait for the Google phones.


07-25-08

There's this Mitch Hedberg joke :

I like baked potatoes. I don't have a microwave oven, and it takes forever to bake a potato in a conventional oven. Sometimes I'll just throw one in there, even if I don't want one, because by the time it's done, who knows?

I keep thinking about it when I think about having an electric stove. When you get home from work, you should just turn the stove on high even if you're not planning on cooking, because by the time it gets hot, who knows?

Adjusting temperatures on an electric is hopeless; what you can do is just turn on all 4 burners to different levels. Then only cook one pan at a time and move it around the stove to get different amounts of heat.


07-25-08

Household tips from auntie Charlotte : WD40 will take duct tape residue off of car paint. Do not, however, use it on walls, because the grease soaks in and stains them permanently.


07-25-08

I saw this Giorgio Moroder Promo Video on Disco Workout and it gave me much happiness. I love the classic promo voiceover guy who mostly does like industrial manufacturing promos, I love that Moroder's wearing business clothes like he's at work at Texas Instruments or something, and that he does the cheesy singing himself.

It's widely said that the classic Donna summer hit I Feel Love (music by Moroder) is one of the most influential tracks on modern dance music. That may be so, but there's a more direct correspondence between Moroder's solo work and the new indie-disco music; the Donna Summer score is just part of the history of people like Eno or Timbaland doing cool techno backup for pop songs, whereas the Moroder solo stuff is a direct correspondence with the modern dorky white guy who can't sing fronting a solo disco dance group.

It reminded me of this video I found a while ago that's also great : Herbie Hancock in the studio with Quincy Jones ; the old electronics are fascinating. (Okay, I wasn't going to do it, but I have to link the RockIt video cuz it's like the most awesome video ever made)

I feel obliged to link in this too : Jean Michel Jarre guides you through his instruments ; this is a bit after the fact when the stuff is already retro.

I'm like no expert in musical history or music or anything so I'm way out of my element. Obviously the old stuff is all very similar because hey they only had Moogs and a few types of synths and sequencers, everyone was on the same gear trying to figure out what they could do with it, and the easiest thing is making pretty spare repetitive sounds.

So I'm not an expert at gathering these examples, but I thought it would be fun to play a new vs. old listening game :

Glass Candy - "Life After Sundown"
Trilogy - Not Love
Cut Copy - Saturdays
Dance Department - Paradise
Chromeo - Fancy Footwork
Moroder - From Here to Eternity
Moroder - E=Mc2
Chromatics - Lady
Eurythmics-Sweet Dreams vs Glass Candy - Beatific
New Young Pony Club vs Pat Benatar

I could get really distracted and link in the whole other veins of old vs. new electronic music and waste a lot of time and not contribute anything because I suck at this. For example you could get into the whole Kraut evolution, I started to link these : Krafterk - The Robots , Depeche Mode - Shake the Disease , but that's really a bit off topic.

Sort of unrelated, but it's awesome how the Chromeo - Bonafide lovin' video plays off the classic Dire Straits - Money for nothing video ; I like to think he's also winking at the fact that Dire Straits was so clever about making songs that were sort of sarcastic and perhaps making fun of their audience, and Chromeo is doing the same thing; you're not quite sure how serious he is or whether he's mocking.

Also semi-unrelated, I realized the other day that Junior Boys - In the Morning is the musical soul mate to Zombies - Time of the Season ; the basic background sound with the breathing is the same, just a bit slowed down, and they both have the same kind of syrupy boy singing that's sexy and a little bit creepy. Okay, maybe more than a little bit creepy. You're too young, who's your daddy?


07-24-08

Gah plays are just awful. The writing is horrific, so mannered and exaggerated. I would never go see a play, but sometimes I accidentally rent movies based on plays. The latest such debacle was "The Big Kahuna". Almost immediately I start thinking "WTF? Why are they talking so strangely, my god the acting is awful, WTF is up with this screenwriting?" and then I smell it "OMG, this is a fucking play!", and yes there it is "based on the play by ..." ; bleck, get it out! get it out of DVD player before it taints my whole system!


07-23-08

Cheese gives me searing gas pain and much stinky farting. Every time I eat cheese I say to myself "never again!" ; sure it's delicious but it's just not worth it. Then a few weeks later I get this brilliant idea to make a quiche, or a croque monsieur, or a carbonara, and I say fuck it, I'll just eat the cheese, and then I regret it again. This is some kind of metaphor or something.


07-23-08

Disco Workout is a blog by some SF kids who are DJ's and into this new electro indie pop thing that's the current craze. It's a pretty great introduction to the music and the whole lifestyle of the SF indie club scene.

Coincidentally in unrelated searching, I discovered "The Black Ghosts" ; they're pretty rad. Hmm.. apparently they're another manifestation of Simian. They're the more indie-poppy Simian, as opposed to the Mobile Disco which is more techno/housey.

addendum : we saw the Black Ghosts live show and it kind of sucked. Do not recommend.


07-22-08

My internets is going really slow recently; I assume it's fucking Charter throttling me for doing too much torrenting (pun intended). On the other hand, the internet is such a retarded mystery box, it could be some problem in my computer or my router or the "tubes" and I would have no idea.


07-22-08

I don't quite get the cold butter thing. I mean I get it in pie crust or streusel or something like that; in that case you don't actually want the butter to mix in, what you want is for layers of butter and flour to form that are not mixed until they cook. But with liquid mixing applications they still say you have to use cold butter, like making a beurre blanc or a lemon curd or such. The first thing the butter does is melt and then you whisk it in, so why do you need cold butter? I don't get it.


07-22-08

The hard thing about working too much and fucking up your relationship is that you don't realize you're doing anything wrong. When you're working like crazy, you're stressed, you feel like you're contributing a lot to the couple by working and making all the money, you just want support and affection. You don't realize that you're totally unavailable, you're giving zero energy and time to the relationship, you're not contributing anything to your joint life. Your partner is unhappy, and that just pisses you off; you're tired, stressed, and just want some peace and relaxation when you get home, not someone you have to cheer up. Of course it is your fault; working like crazy to make a bunch of money is a voluntary choice and you chose it, you are the one putting this strain on your relationship.

On the opposite side your partner has a very hard situation to deal with. They see you're working hard and you're stressed, but you come home and just want to be left alone, you're snappy and easily annoyed and they get scared away from you. They also see you keep working or messing around on the computer in your free time and think that you don't really need to be doing that and could have more time to spend with them, but you're choosing not to. They don't understand your brain is stuck in computerland and can't just switch over to the normal world so easily.

For a relationship to work you have to both be working to make each other happy. If one person isn't putting in effort it doesn't matter how hard the other person works. It's a partnership, an agreement to have fun. Hell, most ways of "having fun" are like that. If you go to any event - a parade, a party, whatever - just going is not really much fun, you have to go in as part of the group that is cooperating to be a fun group; you're sort of becoming part of a performance group pretending that it's more fun than it is really is. If you all go along with it, it's a blast.

For all you geeks out there, it's like playing D&D. The party and the DM are making a social contract to try to get into the spirit of the game and enjoy it. If you just follow the rules and go through the motions, it's no fun. If you get into the spirit but everyone else doesn't, it's no fun. You need the DM to try to give you interesting scenarios, and you need to give him feedback that you are pleased and amused by his storytelling, and then you also need to contribute mirth and creativity in your actions.

Something that I often fail to do is give enough feedback that I'm enjoying what someone else is doing for me. The pleased reaction is just as important as the original kind action; by being a couple you're agreeing that when your partner does something nice, you will reward them by being happy because of it. If you are hard to please or inscrutable, it's no fun to try to make you happy, and you can't have a relationship. The relationship must be a series of back and forth mood enhancers. I do something to make you happy, and you show you like it; you do something to make me happy, and I show that I like it; back and forth forever. ))<>((


07-22-08

Back home in SF after being in Seattle makes me realize how much I love this place. I always knew I loved it, but my god, this place is really fucking great. Hottie hipsters on their bicycles riding everywhere. I left my car at the repair shop and walked to get a haircut at a Mexican haircut place; my haircutter spoke good english and helped me practice my Spanish; es importante de practicar para no olvides; si! I walked to the produce shop and got some amazing mangos for 0.99, pineapple for 1.59, oranges for 0.59/lb , walked by the beer shop with great selection, lots of people on the street, everyone looks happy. So they're not really friendly, but they're also not rude like New Yorkers. Tons of great dance nights this week, lots of burning man crews trying to raise money. What a fucking great city this is.


07-22-08

"Made in Spain" is pretty shitty as a cooking show, you're not really going to learn much about how to cook or any useful recipes. As a food-tourism advertainment show for Spain, it's really great. I had no idea that Spain had so many distinctive regions with their own specialized products and cuisines. It really makes me sad about America. God we're retarded. The US has tons of microclimates and distinctive cuisines, but we've rejected them, and every part of America tries to cook everything. It's much much better for each region to focus on a specialty, to work with their local produce and craft specialized dishes that maximize their local ingredients. Also the poor average cook is more likely to make something great if they just focus on a few dishes and really perfecting those. Instead every part of the US makes shitty versions of Thai and French and standard American crap that has nothing to do with the local skills.

Just seeing the caves in Asturias where they age the Cabrales cheese - natural caves in the mountains, with the perfect humidity and temperature, over time the Penicillin has taken up residence and they put the cheese in there and it naturally does its magic - that's where I want to live, I want to be around that.

We think of Spain as being part of Europe and the 1st world, but really it's quite unique. It certainly isn't 3rd world, but it hasn't been democratic for very long at all; it's still very poor and rural. The evils of the rich civilized western world still haven't really fucked up Spain even today (though the popular tourist spots where the UK chavs weekend are fucked).


07-22-08

So I've been vaguely considering trying to set up a propane gas stove indoors in the new place.

Ignacio told me that in Spain lots of people have butane cylinders and cook with that. I've read it's quite common all around the world outside of the US, particularly in poorer countries where they don't have gas lines.

"Butane" and "Propane" are both not actually butane and propane. What's called "butane" in most of the world is a mix of butane & propane, what's called "propane" in the US is another mix. The more correct generic name for both is LPG for "liquified petroleum gas" , but the colloquialism is just to say "butane" in the rest of the world and "propane" in the US. The exact mix depends on the temperature - hotter places sell you more butane in your LPG mix.

You can get little single burner LPG ranges for $10.

Propane is totally safe to use indoors. There are a few things to be careful about though.

Propane needs a lot of O2 to burn fully. If it burns with enough O2 it produces only H2O and CO2. That's good. If it doesn't get enough O2, it produces CO. That's bad. Make sure you open a window in the kitchen. It wouldn't hurt to buy a CO detector too, they cost like $30.

Propane is heavier than air. Natural gas (methane) is lighter than air so even if you have a leak it diffuses and goes up through vents and gets out of the house and you rarely get a dangerous concentration. This is why even if you leave a gas burner turned on and not lit you don't get a huge explosion when you light it. Propane on the other hand will pool up on the floor around the stove. This creates a dangerous explosion hazard. It's generally recommended that you keep the cylinder outdoors so that if it leaks there's less risk.

In the US it's illegal to have a 20 pound cylinder or larger inside your home. Many people in the country in the US have a 100 or 500 outside and get deliveries. You could also keep a 20 outside and run a gas line through your window.

Apparently propane cylinder theft is quite common in the US. WTF, people are such hooligans. Cylinder owners lock them. Personally I'd be more worried about someone fucking with the valve or the line if I had my cylinder outside.

Almost all gas ranges can be set for "LP" (that's LPG, which is propane, recall). It's a slightly different gas/air mix so don't try to use LP on a gas range without setting it to LP.

You can get propane-burning range tops (no oven) that are made for RV's for like $600. These could sit right on top of your counter or your old oven.

I haven't completely found a happy solution that I think would be safe and legal, but this is all sort of interesting.


07-22-08

I use KeePass for my passwords. It's kind of retarded. It has all this illusion of client-side security, like somehow it's protecting you from keyloggers. Of course that's nonsense. To get your password from KeePass into Firefox or whatever, it either has to send keypress messages or use the clipboard, both of which are trivial to hook and any keylogger would be grabbing.

But it's still valuable. I'm not really too worried about client side security, I keep my machine on lockdown, I use ProcessGuard for example so that no app I don't tell to run can ever run. I am, however, worried about the security of the places that have my password. Even retards like Visa that you would think should be really secure are incredibly incompetent about computer security and are constantly losing everyone's account info to the Russians.

To slightly protect myself from host-side security breaches, I use a different password on every site. I used to just keep track of that by hand, but that's a pain in the butt (and most of my random passwords where turning into asdlkfgj - only slightly semirandom, you can see the left to right hand swipe). So what KeePass is actually good for is generating random passwords and remembering all the damn passwords for all the damn sites for you.

One thing it doesn't have is automatic entry generation when you register for the first time with a site. That would be pretty easy to code and make it much nicer to use.


07-22-08

In the epinions for moving companies, United is the highest rated major mover and gets 3 out of 5 stars average. Most of the other major movers get 2/5 , and a few get less. Yay movers. I definitely would never trust them with anything valuable or fragile. Fortunately all my posessions are pretty shitty.

Won recommended "Moovers" - they look pretty good. They're the only mover recommended by MovingScam . Actually if I had a bit less stuff I would use ABF U-Pack ; they get glowing recommendations, and the only way to make sure your stuff is packed right is to do it yourself.


07-22-08

I use Google's "I'm Feeling Lucky" for my autocomplete in the Firefox address tab. That mostly works okay, but it's really not what I want. I want a search that basically matches just the addresses or titles of pages. Like when I type in "sf going" I want sanfrancisco.going.com , and it gives me www.sfstation.com ; that's a reasonable result if I was doing a regular web search, but not for the address bar.


07-22-08

I've been thinking about getting a WRX Wagon for a while. I'm debating whether to get it before or after the move, so I checked some prices. 2002 Subaru WRX Wagon :

In San Francisco, average price is $11,000

In Seattle, average price is $16,000

Maybe I'll start a side business driving used Subarus from SF to Seattle. Presumably the CA cars are also in better condition because we have no weather to mess them up. Actually the lack of depreciation for used Subarus in the Seattle area seems pretty nuts. 2004 WRX Wagons are going for $20k which is insane.

WTF, I don't get it. 2004 WRX Wagons for $20k, brand new 2008's for $24k.


07-21-08

I've been puzzling out in my head how I'm going to manage this whole working thing again. It's a little tricky. To commute to work across the 520 I absolutely must avoid rush hours. So that means either shifting later or shifting earlier. Now the vast majority of game developers shift later, but that really blows. That means working from 10 to 7 or so. When I do that it means I just putter around in the morning until going to work, and then when you get off work in the winter it's already dark and you just eat dinner and go to bed. That life is misery.

So I was thinking about trying to shift earlier. That means working like 6 to 3. You get off and still have the late afternoon with light to go play in the park, have dinner, watch a movie, then go to bed. That sounds pretty sweet. I'd love to be able to do that, but there are a few problems. One is all other game devs are probably shifting late, so you're out of sync and not around when they are. The other problem is that waking up at 5 AM is totally cool right up until you have a late night out partying, and then it screws you all up.

I'm not quite sure what to do. I remember when I was managing I didn't like the early guys. They weren't around in the evening when the shit hit the fan (and the shit always hits the fan in the evening as most people screw around all day and then try to cram near the end), and I'm pretty sure the early guys worked less because they were working real 8 hour 7-3 days unlike the rest of us whose 9-5 usually turned into 9-7 or 9-9.

I'm also concerned about trying to leave reliably before rush hour. It seems like any number of things could delay leaving - a meeting, just being in the groove working and not wanting to stop, helping a client with a problem. If you miss that pre-rush-hour departure time then you have to wait 3 hours or so until your next allowed departure time, which blows.


07-21-08

In Mendocino I was wondering about why there were such nice old houses way out there in the middle of nowhere. It's not a good place to farm, it's too isolated to be a useful port or for any trading traffic. Of course the answer is logging.

I found a cool site about Logging on the Big River, Mendocino . There are lots of great old photographs on that site, visit and click them.

Mendocino was incredibly prosperous from 1860-1900 as the lumber barons cut down masses of redwoods and made a fortune and built the fancy houses there. We read yesterday that the entire coast from Big Sur up to southern Oregon was entirely covered with redwoods back in 1800. Today less than 4% of that land has redwoods on it (and hardly any of that is original growth). There are a few little redwood parks around Mendocino today, but for the most part it's barren bluffs with a few Monterey Cyprus type things, wind swept and imposing.


07-20-08

We spent last night in Brookings OR; there seem to be a lot of sad run down seaside towns like Brookings. Lots of people on vacation with a vague air of disappointment. Oregon seems to be full of rednecks outside of Portland. Some rednecks had a bonfire and set off fireworks on the beach near our hotel, that was kind of cool. I swam laps in the hotel pool, and a German family came in while I was there; I hope they spent most of their time in the US somewhere better than Brookings!

There are tons of historic bridges all down the Oregon coast. I'm a bit of a bridge nut so it was quite a treat. Oregon is really cool in that they provide scenic view points for most of the bridges, so you can pull over to the side a bit and see their profile. Near the CA border lots of the bridges have little short trails (a few hundred feet) out to a cliff edge view point, definitely worth it.

Drove down through CA today. Humboldt is full of hippie pot-heads on the side of the road trying to hitch hike. "Get a job you stinking hippie!" I yell as we scream past. Pretty much the whole drive on the 101 from Oregon to Santa Rosa is gorgeous, through valleys full of trees and hardly a touch of civilization; in many places the 101 becomes a windy mountain road and snakes right past redwoods.

We stopped in Redwood National Park and did the short Lady Bird trail to see some big trees. It was foggy as hell and the Redwoods were doing that thing they do - grabbing the moisture out of the fog and condensing it into drops of water - so it was raining near the trees but not away from them. I read that the Fern Creek hike in Prairie Redwoods Park is amazing, but it's a rough drive to the trailhead and I didn't want to put my car through that.

We're spending tonight in Mendocino. What a ridiculous place this is. It's like all the cheezy pretentiousness of Napa moved to the coast in their Audis and Priuses. The shops remind me of Carmel. Stuff like crystal dolphins, jeans for old ladies with elastic control tops. The restaurants are all way overpriced and mediocre, but everyone says they're great because they're supposed to be great, and nobody has a real opinion of their own.

All the old buildings in town here are actually super cute and unusual. I bet it was nice here 30 years ago.

Today we drive back to SF. I'm relieved to finally get to sleep in my own bed, but sort of sad that the road trip is coming to an end.


07-20-08

The retarded way that fancy places make breakfast reveals what fucking awful chefs they really are. Good pancakes should be simple and taste like pancakes; the quality is in perfecting the little details of the recipe, how you mix, exactly how you cook them (fluffy, cooked in the middle but moist, brown on the outside but not greasy), and of course serving them hot. You do not make good pancakes by serving "Multi-grain pancakes with organic oats, corneal, whole wheat flour and seasonal fruit, served with orange pecan butter and papaya syrup". Well done plain pancakes are amazing and very hard to find; good food is about executing a dish and making it sing with its true essence, not jamming in a bunch of shit that doesn't belong that just muddies the main notes.

Side note : Alissa makes great pancakes; I've always sucked at them, so hopefully I will learn a thing or two. One of the biggest tricks aside from the batter recipe that I've learned is the super minimal amount of grease (butter) and the moderate heat; you heat the pan well, but not super hot, and you butter the pan, but then wipe it out with a paper towel; you aren't trying to make greasy fried cakes, but brown fluffy cakes. The other big thing is to use a heavy pan; cast iron would be best, non-stick is very bad no-no. When the pancake hits the pan it sucks out a lot of heat, a thin pan will go cold and not cook right.


07-19-08

We drove down the Oregon coast today. Just the drive out to the coast is quite scenic; we took the 20 (probably a poor choice, very slow), and you quickly get into these shady country lanes, cut through deep valleys, with dense vegetation all around, and occasional breaks for pasture land. Often the trees are so dense and close they form a complete tunnel of canopy over the road.

The coast drive down 101 is very slow; it's one lane so you get stuck behind RV's and such and are constantly passing. God I fucking hate people who resist being passed. They've been driving slow the whole time, finally we get to a passing lane and they slam on the accelerator. Cockmuncher! It's so retarded; just let me pass and then I'll speed off and we never have to see each other again, it's better for both of us, instead you just prolong this annoyance.

Lots of the Oregon coast is very boring. There are a few isolated spots that are quite gorgeous. The good parts are a lot like Big Sur, big rocks, pounding waves, fog and cold wind, pine trees, steep cliffs. The good parts are : Cape Perpetua, Devil's Elbow (and the Heceta Head lighthouse), and Humbug Mountain (and south of there). We got out a few times and did some short hikes around.

Just south of Humbug Mountain there is a pullout onto a patch of gravel. There are no signs. On the north side of the pullout is a trail which leads north to a 4x4 road. The 4x4 road leads out to a cluster of huge rocks in the ocean. It's the windiest place I've ever been in my life.


07-19-08

Mt. St. Helens was totally worth the side trip. We got a late start so just went down the 5 and took the detour over to the front side. The scenery all around it is very weird. First it's all private Weyerhauser land on the way up where they grow trees and clear cut. There are huge forests of trees that are all exactly identical. We don't realize when we see a normal forest, it's all broken up with variation. These forests are full of trees all exactly the same time, the same age, and they grew up in the same lighting environment so they grew their branches the same way. It looks fake, it looks really geometrical, it looks like a bad videogame where someone just duplicated one tree model all over the hillside. Then you get closer to the blast, and the river valley below the mountain is like a sea of ash; it's still all gray, and the river has cut a new very young channel through the soft debris. There are tons of wildflowers of many varieties, taking advantage of all the open sunlight since the land is still unforested. Of course the big mountain towers over the landscape, a huge chunk blown out of it. I thought it looks like a mound of mashed potatos, you know when you dig a hole in your potatos and fill it with gravy, and then the gravy busts out one side and flows out, leaving you with like a horseshoe crater.


07-19-08

Crucial questions to ask when booking crappy hotels along the highway :

Has the room ever been a smoking room?

Is there construction in the building or next door?

Do you allow pets? (if so, the place will fucking stink)

Crucial thing to do when first walking in the room :

Find the clock-radio and make sure the alarm isn't turned on for 3 AM.

Hotels are really one of those things where brand new is much better; I also realized that the quality of brand new hotels is actually a case of free added value. The room rate at a brand new hotel is not that much different than an old one - pricing in hotels is heavily driven by location and capacity, not room quality. With a chain like a Holiday Inn or whatever, it costs a lot to make a hotel, then it takes many years to make back that investment, and then after that it's pure gravy for a while, and then you gut it. During the gravy time, the old hotel is subsidizing development of new hotels. When you stay in a new hotel, you are being underwritten by people staying in old hotels.

There's a certain pressure to just not ask questions, come in, do what you're supposed to, book a room. Good people, players, alphas, they just smile and go right ahead and ask the question.


07-18-08

I remember Dave used to wear shorts in SLO on ridiculously cold days. I would say "WTF Dave" and he would say "STFU". There's definitely a NorthWest attitude of pretending that the weather is better than it really is. It's a collective denial of reality, everyone walks around in the rain without umbrellas, if it gets even slightly warm the shorts and tank tops come out. It's as if no one actually acknowledges the fact that the weather is shit, maybe it's not.


07-18-08

We're leaving Seattle today; we're gonna go around the back side of Rainier to Sunrise, then maybe around the back side of St. Helens but probably not, then head out to the Oregon coast, down the 101 all the way, maybe swing off it to hit Mendocino the last night. We've been in hotels apartment hunting and driving an awful long time now, I'm not really looking forward to more of it, I'm tired and miss my bed.


07-18-08

We got stuck in a shitty hotel near the Seattle Center because the whole town is booked solid right now. Seattle has crazy festivals all summer long while the weather is good, and it's mobbed with tourists. Anyway, since we're right here we went up in the Space Needle last night. It's actually kind of cool to do in the evening, there's no line and not much crowd at the top. You can look at the city lights and see how bizarrely empty the city is.


07-17-08

Well, we finally found a nice place in cap hill with a gas stove, but it's awfully small; looks like maybe 750-800 square feet. Otherwise it's perfect. We found another place that's a gorgeous old apartment, 1000 sqft with leaded windows and fancy molding all that, but the kitchen is awful, it's tiny and has an electric stove. So now we have to decide which bitter pill to eat. - addendum : we took the bigger place with electric stove. sigh. I guess I'm going to do some research into setting up a propane cooktop.

For almost exactly the same money, we could rent a whole house in Green Lake or Ballard or even Madrona. The little craftsman bungalow houses are going for about $1800/month.

Bleck, it's one of those things like the job choice where no matter what I do I'm going to regret certain aspects of it. It's actually even more frustrating because here I know that the ideal place is in fact out there, I just have to keep looking and maybe I'll find it, though when you keep looking it costs a lot of time and money, and you lose the ones you've already found because they disappear. Bird in the hand and all that.

For the record, let's do cbloom's guide to Seattle apartment hunting , in the city that is.

WalkScore map of Seattle is pretty cool. Even if you ignore the walk scores it's a pretty good boundary map of the neighborhoods for people trying to learn what's where.

So obviously you start with your craigslist apartment listings . Seattle craigslist doesn't have neighborhood filters like SF does (WTF) but you can search by neighborhood names, though not all posters mark their neighborhood right, so YMMV. Unfortunately, not everybody puts their junk on craigslist.

A lot of people just put "vacancy" signs outside their building and don't seem to list the place at all. Yay. You have to just drive around the neighborhoods to find those places.

There are other sites with listings, but they are mostly garbage. For example, NWSource has a big page but it's super out of date which makes it worthless. Places don't go quite as fast as SF here (in SF they go within an hour of showing, generally if a place has an open house you need to be the first one to show up) - but they do generally go within a few days, so you can just ignore old listings. If a place is listed for more than a few days and hasn't gone then there's something wrong with it.

SeattleRentals has okay listings that are semi up to date.

There are a few big apartment manager companies. They are :

RPManagement.net - broken awful page
NW Apts - useful
Cornell & Associates - listings are copied to craigslist, not useful
Alliance Apts - broken awful page

The NW Apts listings are updated by the individual building property managers and generally pretty up to date. (BTW don't confuse NW Apts with the "NW Apts" at NWSource - that's garbage).

Most buildings here seem to have an individual property manager who may or may not live in the building. They usually have other jobs which makes them pretty hard to reach; many of them are only reachable after 6 PM and don't return phone calls. You have to keep calling these people, it's annoying. They will also only be able to show places in the evening so you have to schedule carefully.

In my experience, you can pretty much ignore anything under $1200 ; there's just always something horribly wrong with it for that price. There are a lot of disgusting buildings around from the 70's that you want to avoid. You either want a "vintage" or "classic" building, or a brand new one.

The other tricky thing at the moment is all the construction. You want to be away from the massive condo construction, not just the construction site itself, but also the path that the trucks take to the construction site; it's a never ending stream of semis and dumptrucks that screw up traffic and create a huge racket. This pretty much rules out all of South Lake Union (not that it was in contention anyway).

A quick neighborhood roundup (assuming you want an urban life) :

Capitol Hill : easy access to the 520 for commuting east; walkable, plenty of restaurants and such though most of it is pretty shitty; lots of bums and gross hippies and such on Broadway. East of broadway gets very quiet and residential and nice, it's pretty sweet over there but hard to find availability. West of broadway there are many streets full of apartments, some of them are nice, most are nasty, and there's projects and halfway houses and stuff mixed in which add some unsavory characters. The south end of Broadway is actually the happening part these days, around Pine/Pike you've got the hipster bars and some good music clubs like Neumos. There are various busy artery streets around Cap Hill that are undesirable, the tree lined streets east of broadway are ideal. Cal Anderson park is a bit like Dolores.

First Hill : the actual main first hill area which is around the medical center is horrible. There's no life and there's also a ton of construction right now. Some maps consider the Pine/Pike area west of Broadway to be part of First Hill, and that area is pretty good, but not a lot of rentals available.

Belltown : giant condo towers; the units in these are outrageously expensive and super tiny, one bedrooms are generally 700 square feet or less. The good restaurants are generally around here, but you can just cab in to them, no need to live here. The people who live here are mostly douchebag frat boy prep types and trashy girls. The streets feel super dead and weird. It's weird, there must be a ton of people down here in all these giant condo buildings, but they aren't on the street.

Fremont : Kind of a cute little neighborhood; feels very isolated, though it's not very far from downtown by car (it is too far to walk). Somewhat rough commute to the east side from here. There are new condos popping up, but they're smaller buildings and it's mostly still houses and townhouses; rentals are much cheaper here, you can rent duplexes and such easily. The actual strip with restaurants and such is just really really tiny, it's like 2 blocks. The crowd is old, lots of kids and strollers. There is a nice organic market.

Ballard : too far.

Lower Queen Anne : one of the days we came over here we ran in to some ridiculous traffic due to some event at the Seattle Center. That's a huge problem with this neighborhood and pretty much rules it out. It took us about 30 minutes to go the 2 miles from I-5 to LQA. I also just never liked the hood for some reason; it's got a small strip of a few restaurants and bars and grocery stores, but just walking around there I don't get a vibe that appeals to me. Shrug. Anyway, there are actually a lot of huge and nice vintage buildings here with nice big units. Mainly you want stuff that's on the lower slope of the hill.

Some other random notes :

SeattleRentals FAQ is actually okay. They detail most of the stuff I've mentioned, and the notes on the market seem right to me.

WA Tenants Union where you can learn about how little rights you have here, other than the right for your landlord to fuck you.

WSDOT traffic maps important for commuters; or just use Google.

RentalGuide Rental Application (PDF) - I find it really useful to print this out and fill it out before going to rentals, so that I make sure I have all the info I need to fill out applications.

Questions to ask on the phone before bothering to see a place :

What kind of stove does it have?
What floor is it on? (out of how many?)
How many square feet? (850 is the minimum for two people really)
Is there laundry in the building?
What year was it built? (you want old or new, not 60's-80's)

Other minor factors :

Is there parking?
Is the unit away from noise sources in the building like the front door, mailboxes, laundry, etc.
Are the windows double, quiet, or drafty?
What kind of heat does it have? Radiant is best, space heaters are the devil


07-15-08

Capitol Hill Block Party is pretty incredible; if you live in Seattle and like good music and hipsters, it's a must-go. And it's crazy cheap, like everything here. Cool.


07-15-08

I officially give up on finding a gas stove, they just don't exist here. WTF. cbloom is sad. :( Apparently it's another one of those subtle ways that SF is enlightened and the rest of the damn country is still in the dark ages. You just take things for granted when you're surrounded by smart liberal people all the time. Like the fact that smoking is disgusting and nobody around you is doing it.

Also, I forgot my check book. Fuck. Some of the landlords here have some very cruel rules here. They take a $500 deposit with the application to prevent you from applying multiple places. If your application is rejected, or if you take the place, you get the money back, but if you're approved and choose not to move in, they keep the deposit. Pretty whack. In SF landlords just take a bunch of applications, if one person pulls out it goes to the next person, they don't lose any rented time. I suspect it's because Seattle has shit for renter's rights protection and no decent renter's union.

So many of the landlord sites use Yahoo maps or Mapquest. WTF Yo, Google maps is da best !


07-14-08

When the aspiring junior executive tries to hand you his business card, you cannot refuse. Protests of "no thanks, I already have your info" fall on deaf ears. No really, I don't want another piece of trash that I'm just going to throw out. To them, giving their business card is like marking their territory, it's like they're ejaculating their contact information all over you, and it leaves them with a strange satisfied glow. Just take the card. But don't swallow.


07-14-08

Fucking lamp has its on/off switch down at the base. Dumb. I'm in the dark and can't find the switch. Yes, putting the switch next to the bulb is fucking retarded because you have to reach up inside the lamp shade very awkwardly, but it is the standard place, so when I'm in the dark and need to get a light on, it's where I reach.

It's important to be aware of the inherent value of keeping things the same. Changes should only be made when there is enough of an improvement to outweigh the disadvantage of loss of familiarity. In this case the designer was far too "clever".


07-14-08

Veraci Pizza tows a wood fired clay oven to farmers markets around here and bakes up pizzas to order. It's super ridiculously yummy. It sort of raises the bar on market food, like hey you can actually get totally authentic super high quality food, fast and cheap.

Next I'd like to see a Vietnamese cart with an actual charcoal grill, the kind they squat down to on the street and the grating of the grill is like 1 inch off the coals, and they sear up the skewers of tasty meat at super high heat.


07-14-08

It seems like a good time to buy real estate in Seattle. I don't know if the prices have actually come down much, but there is a glut of availability. Even just with existing units, I'm seeing "for sale" signs everywhere. Tons of condos for sale, houses for sale, and tons of people renting out their condos or homes. All of Queen Anne seems to be on sale, it's a Queen Anne liquidation - everything must go! Then you add in the fact that there are still a ton of huge condo complexes under construction, presumably left over momentum from the housing boom, and they will be completed one by one over the next few years and even more units should push prices down.


07-13-08

Why is that the people who have never run on a track in their lives are the ones who walk around in track suits?

There should be words for people who live on the coast (mainly in the big cities) vs. the trash that fills the middle of the US. I dunno, it's not popping into my head, so send in suggestions. Maybe "coasters" ? "midopotamus" ?


07-13-08

The apartments I'm looking at are like $1500. You can rent a whole house in an amazing neighborhood here for less than $2500. Something is way off with that. There must be a lot of rental pressure from stupid kids like me. I guess CA is broken in the opposite way, mortgages in CA are like 3X to 4X rent, which is pretty whack, they should be 1-2X rent.

90% of the apartments here seem to have electric stoves. Electric stoves are fucking garbage, you simply cannot cook properly on them. There was a brief retarded period from '50-'70 when people thought they were this cool newfangled technology that was better than silly old gas. Thank god that's past us. I think now they might put electric stoves in apartments because gas stoves are more of a fire hazard. Lame.

Fucking electric! Everything is electric! Fuck! Maybe I can just get a tank of propane and put my own range on top of the fucking useless electric range. The fucking fume hoods in apartments are worthless too, maybe I should just get a good gas grill and cook everything on the balcony like a Vietnamese street merchant.


07-13-08

Well, I'm feeling a bit more positive. My rag on Seattle stands - there really is no happening neighborhood. Fremont is way smaller and quieter than Noe Valley, the quietest of all neighborhoods in SF. Somehow SF manages to have neighborhoods that feel homey and vibrant and local, but are full of life and things to do and people.

Anyway, there are good things about Seattle. Trees are good. Greenery is good. Great hiking nearby which we may sample this week. Nice residential neighborhoods with actual houses and lawns very close to downtown, that's pretty cool. I love the cozy tree-lined streets back in the residential part of Cap Hill.

But the really great thing is the chill attitude up here. Everything is a little slower, people are less pretentious. The restaurants aren't all about image. Everything is a bit cheaper, more honest, more authentic. You can get in to a great restaurant without a reservation (weeks in advance in some places in SF).

It's actually nice in a way that it's smaller. San Francisco has a feeling of being unknowable; you may get familiar with your hood (after several years) but the next hood over is a whole new pile of mystery. Seattle you can actually get to know all the nooks and crannies over a few years, and that's not so bad. It makes things more comfortable and familiar.

People are very defensive about where they live, it's hard to have a rational conversation about it.


07-12-08

Fucking hell, the Web 2.0 reviews are so worthless. A good half of the reviews of Seattle hotels complain about the parking charge. For example :

3 stars : "parking should be included in your stay. the extra charge is a joke!"

2 stars : "I felt the $10 parking charge was too high"

Umm, no. Go back to the fucking country, you bumpkin, you obviously don't know the first thing about the real world. The W here charges $35 for parking. Now that is a fucking ripoff that you can complain about. An extra $10-15 parking charge is totally standard.


07-12-08

Bleck, Seattle kind of sucks. I'm spoiled by the pure utopia that is the Mission District. The Mission is full of gorgeous young people being funky and friendly. It's full of locals walking around all the time. Seattle has no neighborhood like that; the residential neighborhoods seem eirily empty, and the busy neighorhoods are jammed with horrible tourists. The Mission is an ideal 23-30 demographic of hipsters and artists and aspirers. It's packed with restaurants and bars and clubs, good grocery options, you can walk everywhere, plus a cool mix of working poor and all the shops catering to them, which provides nice cheap options and balances the fetid stench of gentrification. Then you've got perfect public transit in both the J and Bart lines which take you in to the city. The weather in the Mission is pretty perfect year round, sunny and warm.

However, your connection to a neighborhood is drastically different when you're unemployed. When you're basically gone all day every day, it doesn't really matter that much what's going on in your hood. Your priorities are totally different; you're busy, it becomes more about convenience, you want to be able to do your shopping or go someplace to eat without headaches. You spend your time mostly at work or inside your home, only a tiny fraction in the hood. I realized that most of the shops in the Mission that I love close at 6 PM ; if I was working I would never ever be able to go to them, so it wouldn't matter that they existed.

I'm really sad to be leaving the idle life in the Mission, but it was unsustainable, and I'm getting too old for the demo there anyway. Sure I could move back there some day, but it would never be the same, I would be old and disconnected from the cute hipsters biking around in their ridiculous outfits.


07-12-08

I'm trying to scope neighborhoods around here, and the online resources really suck. Like I want to know general things about neighborhoods, and then I also want to know what individual streets are like. We have all that info, it's in Google and Yelp and etc. but you can't see it. I was thinking about what the ideal view would be like and I think it's something like this :

Start with something like the Google Maps building view like they have of downtown SF where you can see the outline of every building. Color the building based on what type of thing it is - restaurant, shopping, residential. That way you can just visually browse around a neighborhood and see - oh this street has the shopping, this area is really residential, etc.

Actually the maps that WalkScore makes are kind of decent, but they'd be so much better if the businesses were color coded and packed together by size instead of just icons plopped on top of each other. You know side of the street and you can estimate extents from the address range. The pop up icon tab things they use gives you a really false idea of what's going on in a neighborhood; it can look really rich with shops when it's not.

BTW that reminds me; I don't get why Google Maps isn't using the census data yet; that stuff is really cheap and would let you make really sweet population density maps.


07-11-08

Just got to Seattle. Northern Cal is burning, yikes; the sky was full of gray, even mighty Shasta had trouble poking through the smoke. Shasta in summer is pretty ugly, the snow melts and it's a big barren pile of dirt. Hood is gorgeous, the perfect cone, and Rainier is the most imposing of all, towering in the distance of so many views. Northern Cal was blazing hot, dry pines, lots of hicks. Southern Oregon is gorgeous, so many rolling hills, pastoral valleys, rivers; Northern Oregon was not so great, the big plains of the Wilamette Valley are just like the plains anywhere else. Eugene was surprisingly shitty; I always heard it was nice.


07-09-08

Hmm.. I'd like to have a way to interact with the computer purely through the keyboard 99% of the time. Mousing is just horrible for your body and it's feeling really bad for me recently. The big things I still mouse for are copy-paste and moving the cursor, and for interacting with web pages. It seems to me that a kind of incremental find should be able to find those things by typing in text matches. Like say I'm on the google results page and I want to pick one of the results, I press the macro-start key then start typing a match; as it's ambiguous multiple buttons are highlighted in one color, once it becomes a unique selection the color changes, I hit macro-end and it selects that guy, then I send the message for a left click. Etc. - I could do that for buttons in any window; seems pretty easy and good. You need to have two modes, one for just selecting buttons, where the macro program finds only active buttons, and one for selecting any text so that you can define copy-paste regions.


07-09-08

I'm watching the Nova on microraptor. It's vaguely interesting. The main thing I'm learning is that paleontologists are absolutely retarded. They seem to have no concept of the scientific method, clean room methods (keeping the analysts separate from preconceptions), or computer technology (WTF hello, you should be modeling the 3d skeleton on a computer and doing simulated crushing and fossilation, then optimizing the 3d model to match the found fossils).


07-09-08

Alissa and I are going to drive up to Seattle real soon, like probably tomorrow. The main point is for Alissa to see the town. I'd like to check out some neighborhoods; I guess Capitol Hill is my leading candidate due to ease of access to the 520 and some urban walking life, but I never really liked Cap Hill when I lived in Seattle before because it does have that shitty feel like the Haight; the "shitty feel" is a mix of broke poser hippie kids and "neighborhood tourists", that is yuppies from other neighborhoods who come in for restaurants/shopping. A good neighborhood has a bunch of young professional types and artists, not too yuppified, with restaurants & bars that cater to locals. I've always been fond of Ballard but it's a bitch to get to the east side from there. Another option might be the Wallingford-Fremont area, and I hear South Lake Union is much improved since 2000 when I moved away. I also hear Lower Queen Anne is pretty cool now, and it's not a ridiculous nightmare to get to the 520 from there, except when something is happening in the Key Arena; though I guess the Sonics are gone so maybe that's not a problem any more.

On the way back down here I'd like to do some site seeing. Somehow I've driven WA - CA a few times and never really taken it slow and stopped in Oregon. I'm thinking maybe spend a night in Portland, check out the Columbia Gorge, maybe Crater Lake, maybe Mt. St. Helens ? Dunno, we'll see how it goes I guess.

It's weird, I usually get around and take a lot of road trips and check things out, but when I was in Seattle I somehow didn't really get out of the city much. Never went to the Olympic Peninsula, never went to the San Juan Islands, never got close to Mt. Rainier, never went to North Cascades or Mt. St. Helens. There's a lot of cool stuff to do around there that I missed. I guess I was working a lot, and when I wasn't working I was obsessed with writing code for personal projects.


07-07-08

Climbing some famous mountain like Everest or the Matterhorn is pretty fucking retarded. It's a fucking traffic jam these days, you spend the whole time around a whole mob of other people trying to do the summit. Of course you're escorted by a bunch of guides, you're practically being baby-sat and half carried up. There's no sense of isolation and wilderness; there are huts built all over, ropes nailed into the mountain, fixed spikes all over for you to hook into.

If you have some creativity or sense you can craft your own much more genuine accomplishment by going trekking somewhere out in the wild where a mob of tourists don't do the same path every day.


07-07-08

Seattle-SF Neighborhood Equivalents :

Belltown = Marina / South Beach
Upper Queen Anne = Nob Hill
Lower Queen Anne = Tender Nob
Capitol Hill = Haight
First Hill = Hayes Valley
Ballard = Mission
Fremont = Noe Valley
Downtown = Downtown
U District = U District
Green Lake = Richmond

Or something.

WalkScore map of Seattle is pretty cool.


07-06-08

What's New Pussycat should be the new rickroll. This song is so fucking secretly great. At first it seems absolutely horrible, but if you listen to it like 20 times you just love it more and more. Or maybe I'm just falling under Tom Jones' seductive spell.

Everything about this video is amazing. For one, there's the way he's ridiculously coked out and spazzing all over the place. Then there's the audience reaction shots, especially the fat old lady around 1:46 that looks like she's about to faint. There's the line "big little" (did he just say "big little" ?). And of course the miming out the body parts like this is some kind of perverted hokey-pokey.

There's also something really weird about the song structure; it jumps abruptly to faster tempo in the chorus, or I guess it stays at the same tempo but picks up a hard accent on the half beat which makes it feel like double time. I don't know how to describe music shit.


07-06-08

For a long time I've been meaning to convert this page to Blogger or something, mainly so that I could accept comments, since I think my readers often know more about a topic than I do and they could greatly increase the value of the content. Recently, reading more of various friends blogs, I'm not so sure.

Most blogs fall into two categories : 1) hugely popular with mass readership; these tend to be bombarded with absolutely retarded comments from the general internet community, and the comments often turn into flame wars between various readers and are just generally useless; 2) intimate, read mainly by friends.

This latter one is a little weird. If the comments are public, or even if they're friend-only and you're one of the friends, you get to read the very personal notes that are left between friends. This has an addictive appeal - blogs in general are largely interesting as voyeurism, and seeing intimate friends' comments about posts just makes you feel even more like you are getting a sneak peak into someone's life. It's weird to me that people act almost as if this isn't happening. Most people who write comments on blogs write little notes directly to the author. Why don't they just email the author directly if it's a personal note? Why don't you write as if your audience is the anonymous internet reader? (a similarly bizarre phenomenon exists with the Yelp Compliments, which are public, and yet people shamelessly send desperate pickup attempts to girls through the compliments, and the girls go ahead and approve them for public viewing; I don't get it).

So I think I like things the way they are. I like getting into email conversations with readers. When people send me things that are corrections or useful extra info, I often post it back here if I think it is interesting and appropriate for the general readership.


07-06-08

The perfect cocktail is just not quite sweet; you mainly want the liquor to show through, with just a bit of extra sweetness and some fruit or other complimentary flavor. In general I prefer whisky drinks because of the smoke and spice and all the interesting flavor notes in whisky. For fun you can make bourbon and rye and scotch variants of any whisky drink.

My Old Fashioned :

2 Oz whisky (1 Oz = a small shot glass full)
5 square inches of orange peel, bruised with muddler
1 full circle slice of orange, mashed
3/4 tsp of simple syrup
3 drops of bitters
optional : tiny tiny splash of soda (1/2 Oz, 1 tbsp)

My Manhattan (no cherry) :

2 Oz whisky
1/2 tbsp sweet vermouth (= 1/4 Oz)
2 drops bitters
1/4 tsp simple syrup or maraschino cherry liquid (but no cherry)
2 square inches of orange peel
Combine and shake with great vigor to produce ice chips

The unifying character of all variants of whisky is the aging in charred oak. You really are not tasting the fermented grain; the beautiful golden color and the rich flavor come from the charred oak barrels that whisky is aged in. American whisky is a mix of wheat and barley and corn. Bourbon is mostly corn, which makes it sweeter. Rye is mostly rye (except Canadian Rye which is just a name for whisky in Canada and not necessarily made of rye); rye is another type of grain similar to wheat and barley, it produces a slightly dryer more bitter whisky. Rye is actually the classic whisky for use in these cocktails; if using real rye, reduce the amount of bitters.

Rye and barley pretty much look exactly like wheat. If I saw a field of any of them, I wouldn't be able to tell them apart. So they pretty much all produce your basic grain alcohol. The difference between your basic hillbilly moonshine and whisky is just the aging in oak. In fact Scotch originally comes from the rural peasants; in every country the peasants have their own tradition of taking some of their product and sticking it in a corner of their barn to ferment and make alcohol.

I encourage you not to be overly seduced by the mythology of scotch which has sprung up due to massive marketing in the last 30 years. The truth is it's plain grain alcohol, aged in barrels, and then they add water and artificial caramel color (some of them do, anyway). The big difference is the large proportion of smoked malted barley which provides the smokey flavor; also they use grains and no corn which reduces the sweetness as compared to american whiskeys.

There are blended scotches which the average drinker would rate higher in a blind taste test than the coveted single malts. The average drinker prizes things like balance and smoothness which are really not related to quality at all. The same thing is true of wine of course, but wine snobbery has so pervaded society that it's hard to fight. The true appeal of a single malt (or a non blended wine) is the ability to taste the distinctive character and unique flavor notes that come from the region of the product. Also, just like wine, longer ages are not necessarily better. With scotch, anything over 20 years is highly questionable. Somewhere around 15 years is generally optimal, though the peak age depends on the exact character of the original spirit.

With delicate, simple delicious products, we must remember that the details are incredibly important. The finest scotch is produced in almost exactly the same way as an average/cheap american whiskey, but the difference on the tongue is quite profound. Something I've been noticing watching "Made in Spain" - he tours a lot of cheese makers, since cheese is quite important in Spain, and the funny thing is - every cheese maker looks exactly the same to me. They add rennet, seperate out the curds, press it into rounds, salt it and age it. Every single cheese in the world basically goes through that exact same process, and yet there are so many unique and beautiful flavors that come from the minute differences in production. Certain things, like cheese and whisky, are much like creatures and their DNA - the instructions for making a man and the instructions for making an E.Coli are 99% identical, and yet the product seems very different.

When I was in college I decided I should learn about all the things a "man" should know. I wanted to be educated in the ways of the world, capable, never at a loss. I taught myself to cook and fight; I read about drugs and sex; I tried different types of cigarettes and cigars, and booze. When it came to booze, mainly I taught myself about whiskys, partly because they are delicious and I enjoyed them, but also because I thought it was particularly manly and sophisticated and impressive and it would make me a real qualified grown up.


07-06-08

I put up new versions of DeUnicode and MakePlayLists in exe section . DeUnicode can now optionally also get rid of underscores and change "The X" to "X, The".

I keep finding more apps that don't work right with unicode. The old version of zip that I use doen't work (2.1). Windiff 5.1 doesn't work. So I just fucking DeUnicode everything. It would be easier if those crazy foreigners would stop putting goofy characters in their file names. Don't they know that the universal language of computing is English !?


07-04-08

Nope, can't do it. I hate Californication. You cannot be a pretentious superior snob that condescends to everyone, and at the same time glorify a childish macho womanizer.

Dexter is pretty good so far. I don't really like the way the bad guys he kills are like so ridiculously obviously evil; there aren't really people like that in the real world, real evil people are more just like ordinary douchebags that are just slightly more callous and selfish. It would be a lot more morally interesting if the people he was killing were more like real ambiguous criminals.


07-04-08

EveryBlock shows the SF police blotter in a nice map interface. If I was a scared old lady sitting home alone all the time, I could see obsessing over this.


07-03-08

Some cool shots of SF fireworks + GGB ; these must be taken from the Marin Headlands somewhere, a hilltop off Conzelman Rd I guess.

If I was alone or with other biking people I would ride to Crissy Field for the fireworks. Driving over there is madness but it would be fun to bike. I hung out with a biking crew here for a brief while; it was really fun biking around the city to do stuff; unfortunately they were nut-job losers.

I suspect that the secret and little-known "Jack Early Park" might be a good viewing spot, but I haven't tried it so I'm not quite sure.


07-03-08

I suck at making fires, repairing cars, parallel parking, and everything that I consider important for a man to do.


07-03-08

Low Carb Friends is a forum for disgusting lazy fat old women to discuss horrible foods that have slightly less sugar, and generally just be slovenly and have bad taste and be lazy and love fast food. America is full of revolting semi-human organisms.

The new Dove commercials make me want to puke. The old ones were the ones that just showed semi-naked fat chicks to advertise Dove products. Okay, whatever, that's fine. But it's pretty disingenuous and manipulative; the reality is you're selling products based on making people feel like they need your products to be beautiful, rather than actually do what it takes to get attractive, they hope it's in a tube and that's how Dove makes money. It reminds me of the old Sprite adds where they would say "don't listen to some advertisement, don't trust a celebrity, obey your thrist, drink Sprite!" ; ummm... you do realize that you're advertising Sprite to me, right? so you're disparaging yourself? and you are a celebrity hawking this product? (it was usually some basketball player).

Anyway, that's the old Dove adds. The new one is about their program of seminars for children to help little girls build self esteem and think of themselves as beautiful. They show this kid reading the line "I promise to think of myself as beautiful every day". Dear god I hope not. You'll grow up to be one of those ugly fatties that wears spandex and a sports bra to walk around Las Vegas because she has no concept of how revolting she is. Or maybe one of those "sassy" girls that does burlesque because she's "big and beautiful" ; well you are big, that part is true...

The vast majority of people are ugly. That's just by definition. The way we define hotness is relative to the average, so by definition something like the top 5% are "hot". It's just the same way with wealth; it doesn't matter how many dollars you have, it's relative to how well others are doing, only the top 5% are "rich".

The message to all the hopelessly ugly girls out there should not be that they are somehow beautiful. It should be that beauty isn't everything. Hey, you're ugly. Tough shit, move on. You might still manage to be funny or smart or kind or have some other redeeming feature. The problem with these girls is that their self-worth is 100% wrapped up in being cute, and when they fail to be cute they're crushed. But no, you are not beautiful, and you should stop buying Dove shit and hoping and pretending that you are beautiful.

Oh, and BTW, it doesn't matter how smart or self-confident you are, guys will always just want the hottie, and they'll make you feel bad, and the hot chick will get all the breaks, easier access to everything, tons of favors. Better start building a deep well of bitterness.

Aside : Hock vs. Hawk (verb). To sell is "hawking your wares". To spit and cough is to "hawk a loogie". To sell something to a pawnbroker is to "hock". Basically it's always "hawk" unless you're talking about pawning or the ankle of a quadruped.


07-03-08

I like this Lino Miele Yoga Video ; he's really smooth and elegant in his movement and it looks like a nice hard workout.

I've always liked the Yoga that's kind of like gymnastics; a lot of the related stuff on that page is cool too.

I've wanted to be able to L-seat for a long time, and I'd love to be able to "flag" but that stuff is pretty far away for me still. The definitive site for this stuff is Beast Skills - all bodyweight feats of strength. Very inspiring. I'd much rather be able to say I can L-sit or flag or do a full rollout than say I can bench whatever number.

The first time I saw Cirque de Soleil, they had the standard two strong men act, where they do planche moves and balance on each other and all that, it blew me away, I got goosebumps. I think that shit is just gorgeous and so inspiring. The strong men act never gets much applause. Some stupid clown gets all this applause for being dumb, but oh two guys doing amazing hard beautiful things, meh, yawn.

Browsing Youtube for circus strong men acts, I find two interesting things. First, most of the clips of strong men seem to be posted by the duos themselves looking for work. Don't worry boys, when I get rich I'll hire you to perform at my crazy parties. The other thing I notice is that the strongmen duo acts have been embraced by the gay community. No surprise there and I certainly don't blame them, but the video of flames is a bit too on the nose ; and Les FarFadais are just one accidental slip away from gay porn. Now this is a good old standard manly strong man duo; I love the T planche they do around 3:00

On a semi-unrelated note, Cirque Berzerk used to do a lot of shows in SF but they disappeared for a while and have now resurfaced in LA. If you're in LA, definitely check it out. It's like a cool cirque with great acrobatics, but a bit younger, less cheezy, a bit more fun and edgy, not nearly as professional as something like Soleil but that's part of the fun, it's more intimate.


07-02-08

There's an annoying quirk with the system stat() call that I haven't seen documented. I'm not sure if this is an MS quirk or more global :

stat() on most dirs will fail if you stick on a trailing slash, eg. stat("c:\windows\") is no good, you must stat("c:\windows");

However :

stat() on the root dir of a drive will fail if it DOESN'T have a trailing slash. eg. stat("c:\") is good but stat("c:") is not.

So, you can make your own stat() wrapper that removes the trailing slash if strlen is > 3. I guess you should probably also look for len 2 drive root specs and add a slash.

Hmmm .. Jon pointed out this is bad on Xbox 360 since I'm relying on drive names being 1 letter. You can do the same thing without explicit lengths by working off the colon; ending with a ":" is bad, ending with ":\" is good, otherwise ending with "\" is bad.

int __cdecl mystat (const char *spec, struct _stat *st)
{
	size_t len = strlen(spec);
	if ( len == 0 )
	{
		return -1;
	}
	else if ( spec[len-1] == ':' )
	{3
		// add trailing slash :
		char * temp = (char *) _alloca(len+1);
		memcpy(temp,spec,len);
		temp[len] = '\\';
		temp[len+1] = 0;
		
		return ::_stat(temp,st);
	}
	else if ( spec[len-1] == '\\' && len > 1 && spec[len-2] != ':' )
	{
		// kill trailing slash :
		char * temp = (char *) _alloca(len);
		memcpy(temp,spec,len);
		temp[len-1] = 0;
		
		return ::_stat(temp,st);
	}
	else
	{
		return ::_stat(spec,st);
	}
}

BTW there is a bit of ambiguity if somebody tries to stat something like "c:" - did they mean the root, or did they mean the current dir on c drive in that DOS way of tracking current dirs on each drive?


07-02-08

I can never memorize junk. I've always struggled with the cursed "standard" measures, but I finally now have tricks for most of them.

I can remember cups and gallons thusly : "A quart is a quarter of a gallon and also a quartet of cups". Thus there are 16 cups in a gallon.

Similarly, tbsp:cup as cup:gallon, or "the gallon's cup is the cup's tablespoon". So there are 16 tbsp in a cup.

In a system of powers of two this all sort of makes sense. Powers of two makes sense because you can combine two of one measure to make the next measure. 16 is a nice place to put the major divisions. If you like, 2^8 tablespoons is a gallon. A gallon is a byte, a cup is a hex digit, and a tablespoon is a bit.

Two tablespoons are an ounce. If you like you can remember this in a weird way : first of all "a pint's a pound the world round". There are ounces of volume and ounces of weight, but they are the same for water. Since a pound is the fundamental unit of weight, 16 ounces make a pound, since 16 is our primary division and the ounce:pound as cup:gallon. Thus since a pint is double a cup, an ounce must be two tablespoons.

Three teaspoons are a tablespoon. This one is trouble.


07-02-08

I really need to swim. It's so good for me, it would really help my back and shoulders. But I fucking hate swimming in public pools so fucking much, it's just misery. It's so boring, the chlorine is unpleasant, some fucking lifeguard is staring at me, damn slow people are blocking my lane, and fast people are passing me, I run into the fucking lane line, some dick swims into me, I swim into someone by mistake, god damn its boring, I'm going back and forth over and over, I have no view, no music, no scenery, ugh.

On the other hand, swimming in nature is pure joy. Especially in a big lake where there are no boundaries, scenery, the smell of woods, no one else around, sun shine, no lanes, no pressure. You can just swim out as far as you can, then swim back. Go exploring, try to swim to the other side.

It would be pretty sweet to have my own pool, a huge pool big enough to swim laps. It would be retardedly expensive and wasteful but fuck it, that's what money is for. With good tree protection from the neighbors I could swim naked and lie around poolside drinking cocktails and reading in the sun.

Sometimes I think I could be happy as a kept boy.

There are no fucking swimming lakes around here, even though there are plenty of lakes, they're all forbidden (except stupid little swim lagoon areas). Fucking laws. I've been thinking about going up to Kent Lake near Fairfax. It's a fucking drinking water reserve or something so you're not supposed to swim in it, but I figure if I bike out to a hard to reach section I should be able to swim without disturbance. People should be fucking glad that they get to drink water that's touched my body. They should pay me for the privilege.

Swimming in a pool is like riding a stationary exercise bike. Bleck. That's inhuman.


07-02-08

Paul Brians' Common Errors in English Usage . Wow, this guy is more of a dick than I. It's a pretty damn good page though, it's quite an encyclopedic compendium of retardation; he's got one of my biggest pet peeves : misuse of exponential . I love the way he writes about "orders of magnitude" :

Many pretentious writers have begun to use the expression "orders of magnitude" without understanding what it means. [...]
If you don’t have a firm grasp on such concepts, it’s best to avoid the expression altogether.

Unfortunately he has diluted his pearls by cluttering the page with many simple mis-spellings, and entries that are just plain foolish, like his silly suggestion for the cake line


07-02-08

Ever since my bike crash I've been scared of fast descents. I used to really enjoy them and go balls out and try to go as fast as I could and get down without touching the brakes at all. Now I'm white knuckles on the brakes the whole way. Making a long descent braking the whole way is physically exhausting and also very nerve racking. I no longer enjoy that feeling of being slightly out of control and taking a risk and the adrenaline rush. Anyway, now I find myself not really wanting to do the long climb up to Skyline (about 2000 feet straight up) mainly because I really don't want to have to do that fucking descent to get back down. Sigh.


07-01-08

I have this big MP3 dir. When I do a recursive list on it, it takes literally 60 seconds to grind the disk, and I can hear the disk churning like crazy. Just the first time, of course, after that it's in cache (for a little while anyway, urgh).

Hang on now. We sort of take this for granted that that's reasonable, but it's 100% not reasonable.

I almost never write those files, but I read them often and list the contents often. The layout of those files on disk could be totally optimized for recursive listing. In particular, all the directory descriptors for all the subdirs could be packed on disk immediate contiguously, so that to do a full recursive list it's just one single fast continuous hardware read and blammo I have it all.

Obviously you can't do that for dirs you're changing a lot all the time, but for the vast majority of dirs that are semi-static, the content listing could be laid out far better.

I wrote before about another common case where NTFS is badly broken : the "log file" usage pattern where you're doing lots of appends and flushes. (it frags the hell out of files in that case)

This stuff is designed by smart people, but that doesn't mean it's perfect. I get a feeling a lot of these Smart People are too theoretically rigorous; they look at mean behavior and big O()'s and malicious attack usage patterns. I see the same thing with Google Search, and of course I would see the same thing a lot when reviewing my guy's work at OddWorld or anywhere else. Hey, that algorithm sounds good on paper and all, but look I can see the way we're actually using it and this behavior I'm seeing is not ideal, so let's fix the case that's actually being used.

A lot of Smart People fail the "human in a cage test". With any piece of software I imagine instead of a computer I have a guy inside a box with slots where we can pass data to each other. I ask myself, if I had a human in a box, how would he solve this problem? Would he do better than my software? If so, my software can do better.

There's another point that's actually very important. It that's the usage pattern and the algorithm are not seperable. Smart People, even those who take the good step of studying typical usage patterns and tailoring the algorithm to typical usage, make the mistake of treating the usage as this external force that's constant and not responsive to the algorithm. Of course that's not true. The users are human and will change their behavior to suit the algorithm.

You can see this of course in memory allocators. If you're considering swapping in some different allocator, you might look at your current usage pattern and pick the allocator that gives you the best improvement for your current usage. But your usage need not be held constant. For each allocator choice you should consider what you could win if you changed your usage slightly.

At something like the operating system level, it's usually a win to make typical usage slightly worse if you can provide an easily acheived fast path. If people know there is a certain behavior that will give them a fast path, they will change their workflow slightly to use the fastpath. The {user,algorithm} system is tied and they should respond to each other; the user is not held as constant over changes of algorithm.

For example, with our NTFS file system case, if I knew there was a certain way to use it to avoid fragmentation and have fast dir listings, I could change my usage to do that. In reality, NTFS is just really old and seems semi-broken.

This is extremely obvious of course, but people often miss it. If you provide some new allocator that has a much faster fast path, there will no doubt be objections that it doesn't actually optimize the current usage pattern. Yes, true, but the usage pattern can change!!

BTW, how to get Lie and Lay right.

BTW #2, Hardware designers seem to suffer almost the exact opposite problem, which is they just don't give a damn about usage at all, they just do whatever is good for the hardware and figure people can adapt their software to work in the new way. This of course isn't wise either, you need to optimize the joint {user,algorithm} system.


07-01-08

RecordForAll is a little podcasting app that lets you record audio snippets and mix in MP3 tracks and you can very easily do crossfades and beat-matched crossfades. It's simple and sweet, the UI is really well designed, it's a good piece of software IMO.

Bass is a semi-commercial audio library that does decoding, playback, mixing, all that basic stuff. They support just about every format known to man. Pretty simple and sweet.

But so far as I can tell there's no good audio processing library out there !? By processing I mean stuff like windowed STFT, MDCT/IDCT, equalizing, lowpass/highpass/bandpass, quadrature filters, phase vocoder stuff, DSP stuff like effects, etc. Basically a library of fundamentals that you could build on to build more complex audio algorithms like instrument separation or compression algorithms or pitch correction or beat detection. It must be out there, I just haven't found it yet.


07-01-08

Yay, fig season is upon us! I adore figs, I like how they can go either sweet or savory. I don't really like them raw, but you can sear them for just a second or two and it develops the starches into delicious sugars.

Quick fig compote on yogurt with walnuts and honey (+ granola optional).

Seared figs / fig chutney on pork chops.

Caramelized figs with balsamic reduction on chevre toasted Tartine bread. I had this amazing baked chevre on toast once in France and I've never been able to reproduce it. The cheese was just in a big hunk on a piece of bread, but it was cooked so that the outside of the cheese caramelized and browned, while the inside just got slightly melty but still had the sort of pasty raw chevre consistency. Any time I try it in a home oven or broiler, in order to brown the outside it completely melts the cheese, which is no good. I think perhaps the secret is a super hot wood fired oven. Another possibility might be a very thin glaze of something on the cheese to encourage the brown crust to form.

It would be pretty sweet to have a restaurant style Salamander. Being able to control the distance of the flame to the food is so useful. I made some amazing steak the last time we went camping, and the key was the shitty camp grill actually has a height adjustable grate. You can let the coals get hot, let the flames die, and then lower the grate almost right onto the coals so it's blazing hot. So much better than the shitty Webers we all have at home.


07-01-08

Well my biking web 2.0 idea is pretty much MapMyRide.com ; they just bought RouteSlip.com which maybe had a slightly better web site. Of course as usual it's retardedly broken in various ways. Le sigh.


07-01-08

My audio knowledge really sucks, but I feel like there's this massive gap between where scientists think they are in research and what's actually available to the consumer. Back in 1999 I was talking to guys about the MPEG-4 audio spec (BTW MPEG-4 is not ".mp4"), and it includes things like decomposition of music into seperate instruments, modeling of instruments from various digital models of real sound generators, and encoding of notes as synth+error. That all sounds great, but where is it? The technology we're actually using is from 1992 (basic blocked frequency-space stuff).

It occurs to me that unmixing an audio track is basically the same problem as the "image doubler" I've written about before. If you consider the simple case that you're trying to unmix into 2 streams, then it's very very similar to the image doubler. Basically you have a constraint that A + B = I , that is, streams A and B add up to the input I. This is underconstrained of course, there are an infinite number of solutions, but that doesnt make it impossible.

You assume that your component streams A & B come from some real world likely audio generating sources. That is, just like in all data compression, not all streams are equally likely, and in fact very very few streams are likely. Each way of unmixing a given float has a certain probability of having been generated, and you just pick the single most likely way.

This is of course exactly what our brain does when we listen to things. Say you listen to a track. It starts off with a few piano notes. Then there are a few guitar plucks. Then there's a piano note + guitar pluck at the same time. In fact, this superposition is a big jumbled mess that looks like neither of the two pieces. And of course it might not actually be a piano note + guitar pluck, maybe it's some weird other sound source that creates sounds that are very similar to the combination of guitar + piano. But our brain assumes that the most likely source is right and it unmixes the sounds. Instead of your brain thinking "hey here's this new sound I've never heard before" it thinks "hey that's a guitar and piano combined". Of course software could do this exact same thing.

Exploring this stuff for purposes of compression is no longer super compelling, but it is interesting for processing. As I have always, compression research is always useful even if you don't really care about compression ratio, because to acheive high compression of data is equivalent to acheiving high understanding of data.


07-01-08

I just found this post on lapped transforms on my machine; I can't find it on the internet any more so here it is. BTW since I wrote this there have been many papers written on lapped transforms that are pretty good.


From cbloom@texas.net Thu Jan 28 20:02:10 1999
Newsgroups: comp.compression
Subject: Re: the Lapped transform and JPEG

Some followup info on the Lapped transform:

We can think of it as a smoothly windowed
DCT.  The basis functions are :

Bnk(x) = Wn(x) C(k*x)

(n and k are subscripts, that's B_n_k)
where the C() is the normalized cosine
as in the DCT :

        C(f) = sqrt( 2 / L ) * cos( 2pi *f / L)

n is the interval number, x is the discrete
spatial coordinate, and k is the frequency.
For simplicity, let each interval be of width
(0-L), and then k runs 0 <= k < L

Then our transform is :

g(n,k) = Sum[x] Bnk(x) f(x)

For clarity, consider the special case where
Wn(x) = {       0 , x < n*L
                1 , n*L <= x < (n+1)*L
                0 , x >= (n+1)*L }
(that is, the step function on the nth interval).

Then g(n,k) is just the DCT of the input signal
f.  Back to our main line:

the reconstruction is :

F(x) = Sum[nk] Bnk(x) gnk = Sum[nky] Bnk(x) Bnk(y) f(y)

Obviously, we get reconstruction IFF :

Sum[nk] Bnk(x) Bnk(y) = delta(x-y)

So, what condition does this place on W ?

delta(x-y) = Sum[nk] Wn(x) C(kx) Wn(y) C(ky)

           = ( Sum[n] Wn(x) Wn(y) ) ( Sum[k] C(kx) C(ky) )

Now the final sum is just something we see all the time
in DCT, and we know

Sum[k] C(kx) C(ky) = delta(x-y)

So:

delta(x-y) = ( Sum[n] Wn(x) Wn(y) ) delta(x-y)

or:

        Sum[n] Wn(x) Wn(x) = 1

or:
        Sum[n] Wn(x)^2 = 1

So, this is a very nice and simple constraint!
For example, our step function obviously satisfied it.
(in fact, if our W's don't overlap, then the step
function is the *only* solution! hence the DCT..)

On the other hand, let's allow our W's to overlap,
but only overlap with one neighbor.  That is:

        Wn(x) * W(n+m)(x) = 0  if abs(m) >= 2

In this case, the constraint becomes

        Wn(x)^2 + Wn+1(x)^2 = 1         

in their region of overlap.

There are lots of nice functions that satisfy this.

Besides our step function, the next simplest is a
triangle peaked at the center of our interval, and
goes to zero at the peaks of its neighbors :

        Wn(x) = sqrt(1 - abs( x - (n+.5)*L ))

The constrain is satisfied because :

1 - abs( x - (n+.5)*L ) + 1 - abs( x - (n+1+.5)*L) )
= 2 + (x - (n+.5)*L) - (x - (n+1+.5*L)) = 1 !

I'll post some references on more choices for W()
if people are interested.  In the end, you're going
to discretize W(), so it's really just a table of
values for the coder.

If the W's are symmetric, and are all just translations
of the mother function :

        Wn(x) = w( x - (n+.5)L )

        w(-x) = w(x)

Then the constraint reads

        w(x + L/2)^2 + w(x - L/2)^2 = 1         

or
        w(L/2 + x) = sqrt( 1 - w(L/2 - x)^2 )

In other words, if we specify w() in the range 0 to L/2 ,
then it is fully constrained in the range -L to L

If we choose L = 8 , we can take advantage of the
standard JPEG machinery.  In fact, we can do our
inverse transform in two steps :

        1. for each interval, do an 8->16 IDCT

        2. multiply the (16) un-DCT's valued by Wn(x)
           and add them to the main stream.

This is 16 more multiplies & memory accesses per
IDCT, which could probably be dramatically reduced
if you're more clever than I !

(we need 16, because we need our interval of 8, and
possible overlaps of 4 into each neighboring interval).

The advantage over normal JPEG is obvious : the
choice of W() is like modeling; if you throw away
or quantize your coefficients, then the shape of W()
starts to "show through".  (on the encoding side,
a good choice of W will concentrate the energy more).
In particular, the blocky artifacts at very-low
bitrates can be essentially removed.


07-01-08

I do not get the point of ultra-thin or ultra-light notebooks at all. It seems like just a retarded way to one-up your neighbor with no actual benefit. An 0.7" thick notebook is not any easier to carry than a 1" thick notebook, and yet its capabilities are severely crippled. In any case you need some giant briefcase or bag to carry the thing in, so small changes in size don't matter. Once you can fold it up and put it in your pocket, that will be a big difference. There is a certain weight that you need to get under, maybe 5 pounds, but below that doesn't really help. The way to be actually user friendly is low heat, low noise, and ergonomic keyboard.

Anyhoo, the HP Voodoo Envy 133 is a worthless brick, but it does bode well. Maybe their next model will be a less trendy slightly larger system that's actually usable (eg. a 15" screen, a 7200 RPM drive, you know, at least as good as my notebook from 5 years ago).

BTW the fact that they keep making notebooks where the keyboard is inset and only uses a small portion of the possible available space makes me so furious. First of all, making the keyboard bigger is not a technical difficulty - the keyboard circuit is literally 1 millimeter thick, it doesn't get in the room of anything else. The big flat spaces on the sides of the keyboard are not there by necessity, they're there due to pure retardation. The cramped keyboard is a big problem, it needs to be absolutely as big as possible. (BTW putting a fucking numpad on is even worse; now my hands are off to one side of the fucker!? WTF!) It seems like they always use the same 13" keyboard regardless of the size of the laptop.


06-30-08

WTF is the problem with fucking academics and how they name their research papers. Everything is called something like "cie99hou.pdf" ; WTF is that? One of the first things I have to do when I download papers is rename them something like "fast_semidefinite_programming_cie99hou.pdf" ; do you people not have long file names !?


06-30-08

One thing I've learned from watching the poker community is that even the most retarded people can do the right thing when given good feedback (direct, quick rewards) and the opportunity for trial and error. Some of the top poker pros are very smart, insightful, hard working, intelligent players. But many are frat boy types that really don't understand the theory and just work hard at it because they want the money, they copy others, and while in most of their life decisions where they don't get direct feedback they continue to be retards, in poker they succeed.

It certainly seems that more gay men are fit (and thus attractive) than the general populace. I conjecture this is primarily because they get more direct rewards for physical improvements. Similarly I've been noticing this weekend with Pride that there are an awful lot of fat ugly lesbians. Surely part of that is because lesbian coupling is not as highly driven by appearance as heterosexual coupling is. People automatically respond to the conditions of reward, just like monkeys being given pieces of fruit when they pull the right lever.

Of course I also can't help wondering if there might be some population selection in the correlation. That is, are ugly girls more likely to become lesbians? Perhaps two girls might have the exact same genetic predisposition to homosexuality, which is presumably some chemical/neurological property of the brain. Whether or not that predisposition is acted upon depends on environmental factors; many people may be 25-75% predisposed to homosexuality and may or may not actually act on it. One of the girls is hot and is rewarded by society with status and attention and many male suitors. Another is ugly and is ostracized by normal heterosexual society. Presumably the ugly one is much more likely to seek an alternative social environment where she is more welcomed. (obviously this is just the same reason kids become "stoners" or "goths" or "skin-heads" or "gamers" or whatever fringe social group where they can be accepted and valued outside of the normal ranking attributes of physical appearance and social fitness).

BTW off topic a bit, but the lesson from paragraph 1 is that if you want to make the general populace do the right thing you need to give them immediate feedback they can understand. This is why people do things like destroy shared resources - if you ask people to actually make a reasonable decision based on thought, they won't. You have to flash a green light and make their score go up and ring a bell when they do the right thing. If you wonder about why people do things that are so awful for the earth - not recycling, driving big cars, littering, living way out in suburbs, voting republican - it's not really a mystery, you don't need to ponder their motives. They're just fucking retarded. If you want them to act in a reasonable way you need to give them direct & immediate feedback; any delay in feedback or any slight obfuscation on what causes the feedback will not work.


06-30-08

Wow, this Meanspeed Music is a pretty amazing crackpot, the kind that thinks up perpetual motion machines and universal compression algorithms.


06-29-08

"The Thin Man" has loads of retro charm, people smoking, drinking, racism, sexism (and quaint portrayals of strong women), classic cars and bars, but the enduring appeal lies in the great witty banter.

"Mad Men" is like "The Thin Man" without any of the witty banter.


06-29-08

Levels of dialog :

Level 0 : defining the terms, just agreeing on what exactly you're talking about, establishing the base axioms that are known to be true.

Level 1 : making the obvious conclusion about what that means or what to do.

Level 2 : Seeing how the obvious conclusion is wrong (or right for a different reason); seeing what others typically think about the problem and how that affects the situation; seeing the real reason why it is the way it is.


06-29-08

Alissa has a blog. She's a really smart, funny writer, but she mixes in stuff that's very personal and awkward to read. Perhaps she's finally taught me the lesson through example that I need to quit that shit. In my head it's therapeutic for myself and also perhaps interesting for my close friends to read the personal junk I write here, but in reality I think it's just inappropriate for me to write that kind of stuff here. I mean, I always knew it was inappropriate, but I thought it was charmingly inappropriate like Kramer spouting the truth too much.


06-29-08

I watch a bit of Jeopardy, and there are a few things I don't get. The main one is the total lack of reaction of most people at the end of the show. WTF you just won $20,000 and you just stand there? I would be hooting. Even more surprising is the lack of reaction when a defending champ loses. I would be going "fuck fuck fuck" banging myself in the head for being so fucking stupid to miss the question.

The other thing that surprises me is the way people act in the little interview segment. Haven't you seen these little anecdotes a million times? Don't you know that your funny story about your cat is just going make you look like a retard?


06-29-08

"Secrets of a Restaurant Chef" is a new show on Food Network starring Anne Burrell (famous mainly for being Mario Batali's sous chef on Iron Chef). The first episode was not bad; her camera persona is a bit of a turn off, but hey she actually knows how to cook which is very remarkable for a TV cooking show these days. Unfortunately I have a feeling this series will not last long, Anne is not what middle american stupid suburban housewives want to watch.

Right before watching the show I had this rant percolating in my head about how one of the most common mistakes of amateurs is not browning their food enough. Amateurs don't use high enough heat; you need whopping high heats, big flames; amateurs stick too much in the pan too fast, they just toss in all the ingredients right away, it's better to go in stages and brown each stage; amateurs add too much liquid too soon, they think liquid = moistness, or that dry pans will burn, in reality drying and removing moisture concentrates flavor & makes good browning. Anne covers this pretty well. She also reveals the two biggest "restaurant secrets" : 1. lots of salt and 2. lots of fat.

With "Jamie at Home" we actually have two shows on TV about real cooking. Sacrebleu!

It's funny to look back on the early days of food network, when Good Eats was in real production, we had Molto Mario, The Naked Chef, East Meets West, Melting Pot, hell even the hated Bobby Flay was doing actual cooking on Boy Meets Grill instead of worthless junk like Throwdown. At the time I thought it was a cheezy edutainment network with low information content fluff, but in comparison to the last few years it was down right high-brow back then.


06-29-08

The NYT still classifies Jazz with "Pop". I suppose that's left over from 1910 or whatever when Jazz was popular music as opposed to sophisticated music. The reality is that these days Jazz belongs in the category with "Classical", since they are both dead forms, and they're more about society functions and people pretending to be sophisticated and nostalgia and image than they are about making music.


06-28-08

"Before the Devil Knows You're Dead" was okay; P.S.H. is great as usual playing the creepy pasty repressed/depressed white guy on the edge. The big surprise for me was the bonus Marisa Tomei nudity. Wowza she's still gorgeous at 42. Take a semi-cliched heist gone wrong flick, tell in totally cliche nonlinear format, execute well, and add hot nudity - now that's a formula for success. BTW I got a lol out of Chikipedia

I kinda like the new Presets album Apocalypso. It's a bit like the harder/darker cousin of Cut Copy. Cut Copy is sort of like very early Depeche Mode, and Presets is like later Depeche Mode. Like Cut Copy wears the really loose t-shirt that falls off one shoulder, and Presets has black finger nail polish.

God damn I hate everything about iPods and iTunes. The hardware UI is so fucking awful; I hate the fucking spinny dial, I hate the pop sound it makes in my headphones when I turn it on, I hate how slow and evil iTunes is, I hate the fact that "The Presets" is filed under "P" but they don't change the name to "Presets, The". If it wasn't free I would be really angry. The fact that I can't fucking scroll around the song list smoothly is just absurd. When I change the sort order it doesn't keep me focused on my current item. WTF WTF this is basic UI shit.

I bought an iTrip car-FM-iPod thing. That was a waste of money. It works exactly like it should, it's just unusable. Trying to browse through the iPod while driving is asking for an accident (partly because of the shitty hardware design that doesn't have tactile buttons you can find without looking). The other problem is the background noise. The iTrip signal is plenty loud, but you need a clean FM channel and I can't find one, all the frequencies here are full of really loud static. Maybe out in the country it might work okay, especially with a copilot to work the song selection for me.


06-28-08

The DMV driving test should be a computer driving sim with a fake car cockpit. It would be pretty cheap and could be fully automated. Instead of the stupid paper test where you do some driving rules, you play the driving sim. You have to execute some basic moves, parallel park, etc, then maybe also throw in some surprise accident-avoidance tests to check reaction time. (the old fashioned behind the wheel test is very rare now in the US because it's very expensive for the government; I never took one myself, and of course you don't take them when you renew, which is pretty critical when you're 80+ years old).


06-28-08

Is there a decent music visualizer out there? They all seem to be just complete ass. They completely fail to do decent beat detection and separation, which means the visuals don't really feel good, they don't feel locked to the song. It certainly is a non-trivial problem to get right, but you'd think by now it would be sufficiently solved.


06-28-08

In the old days, youth was for hard work. Good jobs were hard to get, you had to be really qualified to get into a good university, and being able to support yourself was not gauranteed. You had to take advantage of the time your parents were supporting you and you had to maximize every early opportunity, you had to study hard, get a job right out of school, and try to move up. You had to scrimp and save, buy a house, have kids, and then maybe when you retire you can relax a bit (thanks to social security). We now think of that life as silly, as "wasting your youth", since when you're young is the best time to party, travel, etc.

A lot of kids now treat youth like the goal is to party as much as possible before you get "old". They think college is just a great opportunity to party and goof off without responsibility, and even the time after college is often thought of as your prime years to take some time out of the system and just travel or live somewhere great and get drunk a lot. There's certainly some merit to this, when you're young your body is ripe, sex is amazing, the social scene is vibrant, you fit in, you can abuse your body and it can handle the punishment (sort of - there are pretty bad long term effects from very heavy drug and alcohol use which kids don't seem to realize). However, they think that somehow when they get to 30 and decide it's time to get serious that they can somehow just quit goofing off and walk into a great job. Of course that isn't true, because their resume sucks and they haven't been learning any employable skills. The girls who were crazy counter-culture partiers often marry a yuppie investment banker type at this point and get him to pay off their debt.

I think both ways are pretty equally retarded. They're both ignoring very clear benefits of the other side. Unfortunately it seems very few people manage both. I don't think they're inherently mutually exclusive, it's more an issue of mind set, it's much easier to have the mind set for one or the other than it is to be flexible & smart about when you're responsible and when you party.


06-28-08

Bleck, I really hate bars. The crowd, the noise, the shitty expensive drinks, the disgusting smells of puke and spilled beer, the bad loud music. I have a lot of trouble hearing people in crowds, it's frustrating to me to even try to carry on a conversation, and the frustration makes me mad, so now I just usually don't eventry. If I'm in a group at a bar I'll usually just zone out and try to ignore the horror around me and go into my head and let the others talk amongst themselves. Of course this doesn't really make a good impression, and kind of makes me a bad boyfriend. On the other hand, if I don't let myself zone out I sometimes get so frustrated I lash out with fighting words.


06-28-08

It's a damn shame that J2K didn't catch on. People still don't fucking get it. I'm reading about HD Photo and got this page where the guy rants about J2K and HD Photo and completely misses the point. (of course by missing the point, he makes the point - people didn't understand J2K)

The awesome thing about J2K wasn't that it gave you slightly better quality at normal bit rates, obviously nobody gets that excited about having 40 dB PSNR instead of 38 at 4 bits per pixel. It was the embedded prefix quality of wavelet bitstreams that made J2K a big improvement. That is, you could just output the lossless encoding. Want a smaller file? Just truncate it. This is so fucking rad for many applications, but people never got it, and it was never supported right.

One of the classic examples was digital cameras. There's no longer such a thing as a "capacity" of # of photos for cameras. You just keep taking photos. The first 100 or so are lossless. Then you take another and all your images lose a tiny bit of quality to make room. Take another, quality goes down another microscopic bit. If you want you could take 1000 crappy photos.

In terms of daily use, I would store nothing but lossless J2K on my machine. I never have to worry about picking a quality setting again. I never have to worry about saving a JPEG and then loading it to do more edits and compounding errors. I never have to make internet versions of files. When I want to upload something I just upload the J2K. Smart servers could just terminate the upload when they decide they have enough bits. Or they could accept the whole thing and only serve up a prefix depending on bandwidth. It's so fucking superior.

J2K could've been the in-camera format and it would've provided a lot of benefits even if you typically converted to JPEG when you pulled it onto your machine. There's no need for taking RAW photos if you take lossless J2K in camera. But consumers didn't really drive any demand for it, and camera makers had long pipelines making JPEG-based chips and had no need to devote all the extra engineering to implementing the more complicated encoder. The J2K encoder is a bit complex, and while it was intended for simple camera hardware it's not nearly as easy to encode as JPEG.

Another obvious one is automatic bandwidth customization of web pages. The web server can have a desired max load or something and when it's under stress it just sends smaller prefixes of the J2K files. You could also do really nice quick previews to make the web pages load very fast then pull in the rest of the bits.

A few things killed J2K. Perhaps the biggest was the patent fuckups by all the retards who crammed too much in the standard; this also made the standard unnecessarily complex as everyone in the group tried to get their favorite technology piece in the standard. The other was lack of a good free library for encode & decode being made available quickly. The last was lack of consumer education.

BTW I'm not really a fan of the actual J2K standard; it was overly complex and contained too many different modes and options, like different transforms, lossy and lossless modes, etc. It should have just been one good single lifting reversible truncatable stream.

Bill Crow's HD Photo Blog has lots of goodies in it; it's got good intro material just about HD photography in general, not just on the format.

HD Photo could be a cool thing in various ways. The slightly better compression is pretty meh. The cool thing would be if it actually standardized the encoding of gamma, exposure, and HDR images. While the general public is not going to get this, if it's supported by the OS and the hardware (cameras) it can kind of happen automatically. The camera can tag the exposure information into the file, then when you work with it the OS knows your gamma, and all that junk can be tagged in automatically so that when somebody who actually knows their shit gets the file they can figure out the true meaning of the pixels.

Now, Bill Crow says some things on his blog that are just wrong and quite naive propaganda. He says that the way wavelets concetrate the error in high frequency areas is bad, and that somehow HD Photo's action of spreading error uniformly is better. That's way off. The whole idea of perceptual coding is that you want to put error where it's not noticed. One of the things that makes wavelets great is that they put error in the right place, and the error they introduce tends to be a smoothing, which is visually not annoying. In contrast, HD Photo seems to make blocky errors, and the tests I've seen indicate that HD Photo's human visual error is much worse at the same PSNR.

these guys at some Science news group seem to know WTF is going on.

There are some general things in HD Photo that are interesting to mention.

It does a "lapped" transform as a preprocess. If you search for "lapped image" there are tons of papers on this now. Lapped transforms are a reversible convolution that you can apply to any other transform, but they go best with block-based schemes like the standard JPEG DCT. Basically the convolution takes the lowest bit rate DC signal and changes it from being a bunch of blocks into being smooth bumps. Like instead of the 0th coefficient being an 8-pixel hard step, it's a 16-pixel wide smooth bump. There are a bunch of papers about sticking lapped pre & post processes on standard JPEG, and it improves perceptual error a lot without increasing computation time much at all. Any modern block-based coder should have something like a lapped transform in it.

HD Photo also uses one of the newer lossless "Y-Chroma" color transforms that's based on lifting operations. I think I wrote about this in Rants before. There's a lot of papers on this topic as well. More generally, you could make it so the encoder could write the lifting color transform out to the stream. This would only take a few bits and not cost anything really in the decoder. You can improve compression performance by optimizing the color transform for the given image; it takes a lot of computation so it wouldn't usually be done, maybe never.


06-27-08

I don't use the LCD on my digital camera at all. It occured to me they could make a really sweet small digicam by getting rid of the LCD, the flash, all the features. All I want is a viewfinder and optical zoom. With no LCD and no Flash the battery could be small and last forever. They do sort of make things like this, but they're super shitty quality, I want a good lens and CCD, I would use it as my primary camera. I really don't understand the point of reviewing pictures in your camera. When I'm taking pictures I just take 10 and then look at them later on the computer and delete all but the best one.


06-27-08

Jon Blow refuses to work on technology any more, he just does gameplay and the minimum of complex coding to make the game do what it must to be fun. Some see this as defeatist or stubborn. I think it's brilliant. One of the biggest pitfalls for smart coders who go indie and try to make their own game is wasting too much time on technology, getting lost in intricate details, and losing focus on just making the game. Smart coders are inherently drawn to perfectionism and arcane details like moths to a flame, and when they get free of the corporate yoke that kept them from doing things "right" they can finally do what they always wanted and really get into the technology. Good coders also tend to greatly overestimate their ability to do hard technology work, and underestimate the long term maintenance cost associated with new complex technology. Now, in theory you would like to be able to let yourself do a little technology work where it makes sense, but in practice it's like any addictive behavior - it's very hard to actually be logical and only do technology work where it makes sense. It's much easier to just cut yourself off completely and pledge to keep things simple and only use off the shelf libraries and simple coding techniques. Jon seems to have done that and the result looks like it is a great game (hitting an Xbox near you very soon).


06-27-08

The newly reasonable price of gas makes things strange in ways I haven't quite come to terms with yet. For example my drive to ride my bike today cost around $20.


06-27-08

Basic things I'd like in a new laptop :

eSATA port. Should be SATA internally of course, just expose a hole to me. For some reason this is super rare. I think it's probably pretty easy to plug into the SATA internal and run it out of the case, but that's a bit lame.

Digital video out. Fuck VGA ports. Should be able to do 2560 x 1600 on the external line. Again this continues to be super rare, people keep putting VGA out on laptops. WTF.

Cool and quiet. No monstrous hot desktop bricks like the Sager shit.

Port replicator would be nice, so I can get a docking station at home and one at work and just go snap instead of changing 20 plugs every day. Really only awesome if the port replicator does your video and eSATA too which pretty much none of them do.

Must come with Windows XP out of the box, supported by manufacturer. I don't want to deal with changing OS's and finding my own laptop drivers, I did that on my current laptop and it was not fun.

I'd love it if it was super sturdy and had a secure closing latch and big rubber corners. I'd like to be able to drop it and not break it. Toughbook seems okay but they're super crippled in terms of performance/capabilities.


06-26-08

I made pork braised in milk tonight for the first time; it was pretty amazing, sweet, very porky, simple clean flavor. basic recipe , or at meathenge . I combined it sort of with a recipe for a Tagliatelle al Ragu and then changed lots of things.

Sear pork shoulder with a tiny bit of butter. Remove from pan. Add lots of butter + lots of onions and garlic. Cook until browning. Pour in 1-2 cups of hot milk. Return pork to pan. Boil to reduce until milk is almost gone. It will curdle, don't worry. Pour in 1 beer. Add 1 tsp cracked fennel seed + zest of 1 lemon. Liquid should come about half way up pork, if it doesn't then add stock. Put in 325 oven for 2 hours or so, or until liquid is almost completely gone. Serve on wide flat egg noodle with grated parm and a drizzle of OO.

BTW it's pretty retarded to change recipes you've never made before. I should always just make the recipe as spec'ed once to understand the baseline before I muck with it.

Conclusion : the porky onion garlic milky sauce and tender meat was top top. As a pasta topping it was lacking, maybe I would saute some extra stuff at the last minute to give me some variety and some more oily saucy something to toss the noodles in. Maybe like artichoke hearts, fennel bulb, onion, something like that.

I made some ghetto meat pies in frozen puff pastry the other day cuz I had extra puff and didn't want to make any more turnovers. It was okay but not worth repeating. I guess it would be a decent sort of party food cuz its easy and cheap and you can make ahead and all that but fuck party food, it's shite.

Frozen puff pastry turnover technique :

Thaw puff per package. Roll out quite a bit. The thickness in the package will make ridiculous thick puff wedges, roll to maybe 50% of original thickness. Cut into squares about 7" a side. Place fruit filling in the middle. Of course apples should be peeled and sliced, and lots of sugar needs to be added to apples, less to peaches. Add cinammon or apricot to apples. This is a good use for vanilla sugar BTW. Dot fruit filling generously with butter. Put as much filling as possible, lots and lots, because it will cook way down. Paint 2 adjacent edges with egg wash, about 1/2 to 1 inch wide. Fold non-egged side over to egg and press together. Crimp edge. I prefer a simple hand crimp by successive folding, but you can fork crimp if you like. Egg wash the top. Sprinkle top *very* generously with turbinado sugar. Almost cover it completely, the Puff doesn't have enough sugar in the dough. Cut very big holes in the top. If you cut small holes or poke with a fork, they will seal back up when the puff does its thing and puffs. Don't worry about making too many big holes, too much venting is better than too little, in fact it's sort of cute to just cut the hell out of the top so that it creates a sort of spring-like open ribbing. Bake at 400 about 35 minutes (start checking color at 30, you want them very brown all over, not brown in parts & pale in others). When done glaze with butter.


06-26-08

Classic toys are kind of hillarious industrial cast offs. Bob, these springs are way too loose, you're in big trouble! I know, call it a "slinky" and give it to kids! This rubber is too soft. Call it "silly putty" and give it to kids! Then you produce some weird petroleum clay-like paste byproduct by accident. WTF do we do with this junk? Call it "playdoh" and give it to kids!


06-26-08

Galaxy3 just got a crappy spline simplifier. I also put in some crappy text rendering that I stole from the D3D samples (and fixed bugs; how do people still not understand alpha blending? just because the alpha of a pixel is zero doesn't mean its color value is irrelevant. Interpolation, people!).

I made a movie viewer app in Galaxy3 to view the Netflix movie database as points in 3d, located by the SVD to rank 3. Basically movies that are correlated are neighbors in a 3d space. I fade the names of the movies in & out such that when the font scale is near 1.0 they are opaque and as they get too big or too small they fade out. It doesn't work worth a damn, you can't find any good information by looking at it. Oh well.

The SVD was an okay way to get to 3d, but I was thinking about the general distance-embedding problem. Say you have N points in very high dimension (what dimension is perhaps unknown and you may not even know the coordinates of the points). What you do have are a bunch of point-point distances (more than N, but perhaps not all N*N of them). You wish to find an embedding in some lower dimensional space of K dimensions (such as K=3), such that the distances in K are as close as possible to the given distances.

Obviously if K >= the necessary dimension of the points, you can find an exact location that satisfies the desired distances. In general you can't satisfy them exactly.

You want to minimize the error

E = Sum_ij { ((Xi - Xj)^2 - Dij^2)^2 }
Where Dij is the desired distance between points i and j, and you optimize the set of points X, and the sum is taken only over the pairs where Dij is defined (Dij may be sparse).

I don't think there's any way to solve this directly. What we can do is the old trick of solving for one Xi and pretending all the other X's are held constant, do that for all the X's, that's one step, and then keep stepping until it converges.

Starting from the slightly different error measure :

E = Sum_ij { (|Xi - Xj| - Dij)^2 }
Take deritive in Xi and set to zero, do some algebra and you get :

Xi = Sum_j { Xj + Dij * Unit(Xi - Xj) } / Sum_j { 1 }

Where Unit(V) = V / |V| , and the Sum is over terms where Dij is given and i != j

Now this doesn't look too useful because it's a solution for X in terms of X, but we can play a trick. The X on the right hand side is the X from the last "time step", the X on the left hand side is new X that we get for the current time step.

You can actually see what's happening here geometrically. This is like the Verlet constraint solver that game people use a lot. We have all these pair distance constraints of Dij. To solve for the new Xi, we take each "fixed" point the old Xj, and we make the point that satisfying the distance constraint by walking along the unit vector to the old Xi. Then we just average all these points that satisfied each constraint.

Now that we see that, we can play with this. In particular, we can weight each of the terms in this average. Rather than treat all the other Xj are equal, what we really care about are the points near our Xi. That is, I don't really care much about getting the very large distances exactly right, but I do care a lot about getting the closest points right. In particular I really want the identity of which point is my closest neighbor to be preserved by this mapping. Now that we think of this we can see our original choice if squared distance error was pretty poor. The squared distance error says that it's more important to turn 1004 into 1000 than it is to turn a 4 into a 1. Obviously that's wrong. We should have something that measures the fractional error, maybe

E = Sum_ij { (|Xi - Xj|/Dij - 1)^2 }

In any case, its obvious a decent weighting now would just be 1/Dij. That makes smaller D's much more important.


next Xi = Sum_j { Xj/Dij + Unit(Xi - Xj) } / Sum_j { 1/Dij }

Note that if any Dij are zero, this form snaps those points together exactly, which is good.

This iteration looks good, but there're a few niggles that still bothering me. This thing is pretty sensitive to the initial seeding and I don't have a really good way to do that. I have a hunch this iteration may be prone to getting stuck in local minima too.

I guess classically this problem is called Multidimensional Scaling . In 2000 in Science 290 there were two papers that seem to have shaken up this old problem. One introduced Isomap ( Isomap homepage ) , the other was Locally Linear Embedding . Both are pretty sexy.


06-26-08

BTW on the String thing : Ignacio has an EditString/ConstString kind of thin in the NV texture tools open source depot : StrLib.h ; I like how his String just looks like a "char *" and the refcount is at [-2], that's nice for debugger examination.


06-26-08

The Tour de France is coming up soon now and I'm excited to watch it. I don't even know who the favorites are this year, it's all fucked up by people & teams being kicked out for doping. The actual racing is pretty boring 99% of the time. There are occasional exciting moments like some of the finishing sprints on the flat stages, and once in a rare while there's a heroic battle up one of the climbs (like Contador - Rasmussen in the Pyrenees last year, or that classic when Lance got clipped by a spectator and crashed then sped back).

My favorite part is just all the helicopter flyovers of the French countryside. It's beautiful and it makes me imagine biking through it myself. It's inspiring to watch the pros kick huge gears up monstrous hills and it makes me want to get out there myself and ride harder.


06-25-08

Geologic History of CA is quite interesting. So much of the shape of the state is extremely young.

Orientations in LA always got me confused. LA actually points mostly south, and the mountains run east-west. I always felt like the ocean should be to the west and the mountains should run north-south. Well, it turns out it was that way 25 million years ago. The mountains around LA to Santa Barbara are called the "Transverse Ranges" because they run east-west, and they were rotated 90 degrees 25 million years ago as the plates slammed together and all sort of chaos happened.


06-25-08

California's burning (again). I want to go for a bike ride but I'm a little scared since I'm mildly asthmatic. I remember biking in LA when I was a kid; the pollution in LA used to be so much worse than it is now. We lived in Pasadena which is like 10 miles from the San Gabriel mountains, and many days you couldn't see them at all, you would forget they were even there.

Some good sources for satellite smoke maps and such : US Air Quality Blog , National Weather Service SF Area


06-24-08

At the beginning of Pig Earth there's a statistic that blew my mind, and I just checked it out at the world's most accurate Encyclopaedia . In 1320 the population of France was 20 million. In 1720 the Population of France was 20 million. In 400 years it didn't grow at all. That's mind boggling.

Just read another one that's similarly shocking. Population of Berlin in 1925 : 4M , population in 2007 : 3.5M

If you look at a graph of the population of any (current) major city in the US or the US as a whole, it's pretty much an undisturbed exponential, we just keep growing and growing. (by current major city I mean LA, NY, Seattle, Houston, something that's still a healthy city, not Detroit, Cleveland, etc. that have died).


06-23-08

I've been checking out the Better String Library .

Let me back up a bit. I'm not really delighted with my String. For ease of edits, I really like plain old char []. I even like the null-delimit of C that some people hate. The null delimit is really swank because you can take a big string and split it into substrings in place just by jamming a null, then you restore it by putting the original char back. This is a very common and sweet thing, for example if you want to split a full file spec into the path part and file part you just find the last slash and jam a null, blamo you have path part and file part, then you can get the full file spec back just by going filepart[-1] = '/'; how hot. I also really like the sprintf() way of making strings.

So, what's the problem with char[] ? A few things. One is the static sizes. Mostly that's okay (assuming you use all the "n" versions of functions to prevent overruns, which you probably don't). Even if you do, it's ugly for cases of very highly variable lengths, like emails or something. The other big one is they don't go in containers well. sprintf is very unsafe, but if you use my safeprintf you get a lot of protection against the common errors there.

Now the String I have in cblib is a COW string class which mainly doesn't provide edit functions. My design idea was that you use it for storage, and to do edits you get the cstring and stick it in a char[] and edit, then jam the result back in a String. Sort of like the Java readable string / writeable string. My String is not strictly read-only but it's just a bit of a pain to edit so I rarely do. COW is pretty far out of favor these days but I still think it has a lot going for it. For one thing it lets you just return things by value and pass by value in function args and not worry about making copies. That's very handy. The real reason COW is nice though is that it plays very well with STL containers; you can make a vector < String > and not have lots of unnecessary copying, and you can even just std::sort on it and it's all good. Of course you could get the same benefit by wrapping your string in a ptr, like vector < shared_ptr < std::string > > or something.

Okay, so anyway, the idea of a string class that's very simple and easy to use like char[] but is packed up and safe and containerable like my String is pretty appealing.

"Better String" is pretty close. It's really not like a containerable string class unless you use shared_ptr< CBString > because if you just use vector< CBString > you get copies like crazy. It's really just a wrapped and cleaned up version of char[] which will resize instead of overrun and all that kind of good stuff. However :

It's an annoying thing that it doesn't treat null the same as C strings. If you want to track the length in a seperate variable to accelerate strlen and strcat, that's fine, you can do that and still support null. Rather than having an operator[] that returns a char, you have an operator[] that returns a CharProxy. When CharProxy is assigned a null, it updates the length. If CharProxy sets a null to non-null, it updates or invalidates the length. But this has a problem :

When we work on C strings, we often temporarily invalidate them and this is hard to translate to bstring or any other string class. The simplest example goes like this :

1. int len = strlen(string);
2. string[len] = 'a';
3. string[len+1] = 0;

This is code to stick an 'a' char on the end of string. It looks pretty normal (maybe), but it holds a trap. In between lines 2 and 3 the string is temporarily fucked. We stomped on the null and made the string of indeterminate length. We simply rely on the fact that during this phase of temporary fuckitude, we will be treating "string" only as a char array and not as an actual string. Obviously this is a silly example but this general pattern of temporarily fucking the string and treating it as a raw char array is very common to C-style string manipulation, and IMO is part of what makes it cool.

I dunno, I'm still kind of unhappy. It seems to me that maybe making a solid EditString and ConstString might be the way to go. That was kind of annoying in Java though.


06-23-08

People who curb their wheels the wrong way kind of amuse me. Of course inexperience with hills is no excuse, it takes about two seconds of thought to realize what curbing your wheels is for and how to do it. When I first parked here I had no idea what the term curb your wheels even meant, but I saw a sign saying "curb your wheels" and my god I figured out what that probably meant and which way to turn it.

Anyhoo, these days curbing to prevent roll-aways seems rather quaint. It is however, very useful still. When you parallel park on a steep hill with a manual transmission, it's very hard to avoid hitting the cars in front & behind you. Now say you parked okay, but when you get back to your car you need to start up from a dead stop on a very steep hill with a car about 2 inches behind you. That's tough. However, if your wheels are curbed tightly it's much easier because the curb keeps you from rolling back, and having your wheels rotated gets you going in the right direction. It means you can put the car in neutral and let off the brake and you don't roll back into the guy behind you, because your wheels on the curb stop you. Then you can gas it and clutch and get going without a big roll-back.


06-22-08

Some random bloggy blog about our camping trip :

Sierraville is a high Sierra ranch town on a big plain; how strange. Hwy 49 between Camptonville and Sierraville is gorgeous, it runs along the North Fork Yuba River in a deep valley cut through the Sierra. The river was running strong still, we stopped randomly along the road on the way back home and jumped in the water (it's super cold snow melt). Downieville is really touristy but looked pretty cute, old downtown, lots of cafes and lots of mountain bikers and outfitters. I guess they run a lot of rafting out of Downieville in the spring; looks like that would be pretty fucking rad. Bassetts is not so much a town as it is one store that sells wood and ice.

The Sierra Buttes is a huge granite craggy set of peaks carved by glaciers or some shit. It's pretty impressive towering over the scenery. The first evening there we hiked up the short 4x4 road from Lower Sardine Lake to Upper Sardine Lake, about a mile. The view of the Buttes from Upper Sardine is amazing, the solid rock seems to grow straight out of the lake. Alissa took a good picture . There are some rough camp spots around Upper Sardine Lake that would be pretty sweet and very isolated; it would take a true 4x4 to get up that road though.

The next day we drove the access road up to Packer Lake which you can take all the way to the ridge top next to the Buttes. There's a good description of the roads at climber.org . Packer Lake Road is paved & a very easy drive way up to the top of the ridge and you can see for miles in all directions. We didn't actually do the hike to the lookout tower on the top of the Buttes; it looked pretty amazing but we're both semi-crippled injured sad people right now.

The actual Lakes Basin area is a bit north, all along Gold Lake Hwy. There are just tons of cold clear alpine lakes all over; the mountains made of giant hunks of rock that were glacier cut, so there are many crags and shear faces. It was alpine spring time, so there were still some patches of snow around in shady dips, and lots of flowers. It's a pretty popular area, even on a weekday it was a bit crowded. I mean, it's nothing like a Yosemite or Sequoia, but it's not exactly wilderness. The short hike to Frazier Falls was pretty mobbed. As usual, however, if you just hike a bit you can get away from everyone. We did the Lakes Basin Loop from Long Lake trailhead by Elwell Lodge, and we did the little detour up past Silver Lake to Helgramite Lake which nobody else does and we were all alone. We took a swim in Helgramite and froze.

Lying in the sun up at Helgramite, the clouds over the rocky ridge suddenly started to glow with colors; first the higher clouds started to glow red and orange, then a bank of lower clouds lit up turqoise and green and blue. We took some pictures (see one on Flickr ), but they can't really do it justice. I guess it was a Sun Dog , which would make sense in the sierra, the clouds would have lots of ice crystals in them which would cause the refraction.

The Pacific Crest Trail runs right through the area past some very scenic wilderness. It made me fantasize about doing some chunks of the PCT some day. I don't really like the idea of carrying a load on my back though. We're fucking humans, masters of the earth, can't I get a donkey or something to carry my gear?

Lakes Basin hand drawn map
Forest Service Lakes Basin Page with a good downloadable map.

We camped at Salmon Creek because we happened to find a really sweet spot there. #33 ; they don't reserve, but if you can get it, do. But, in general Salmon Creek kind of sucks. It's close to the highway, like most of the camp sites around there. WTF I don't get that, we're out in the woods, we drove hours to get there, there's nothing around, then the campgrounds are directly on a semi-busy highway. We checked out some of the other campgrounds around and they mostly sucked balls. That stupid fish-brained fucker Stienstra rates some of them 8 or 9 out of 10 even though they have very poor seperation from neighbors and are directly on highways. The other standout spot was in the Diablo Campground, which is mostly awful, there's one spot (#13) which is really sweet.

I'm finding the best way to scope campgrounds is just with a map. If you have a detailed map of campgrounds ( this atlas is pretty good) you can see where they are. Directly on a road? No. Directly on a reservoir? Probably no, check to see if motor boats are allowed. Motor boat = no me because it attracts rednecks. Check for proximity to cities. No. Okay you have found a campground that actually might be decent. Now just search it on the internet to read about it. When you search a campground name, you can usually get a PDF map of the actual campground layout. From that you can usually tell if it will decent. Is there a single road loop with sites crammed in the middle of the loop? That's bad. Are there a bunch of feathery roads with camps far apart from each other on the arms of the feathers? That's good.

While doing my map scanning I noticed that the Middle Fork of the Feather River is really remote. Hardly any roads get near it. What a prize! Turns out you can do a very intense rafting trip down it.

Places I've scoped out for the future :
Clark Fork : maybe a bit crowded; near Iceberg Meadow
Highland Lakes : looks very sweet, Aug-Sept ideal; good high alpine trails nearby
Loon Lake North Shore, Camino Cove : meh, boats, but supposed to be very nice anyway; good access to Desolation Wilderness
Yosemite Creek : high camp in Yosemite, maybe July
Silver Fork : simple river camp; seems pretty quiet
Pi Pi : lower El Dorado camp, in logging road territory


06-22-08

What my cycling site would be like :

Casual browsers would be able to type in their city and search. They could search for ride groups, events (stuff that happens on a specific date such as meetings, classes, political stuff, jams), or routes. If you look at routes, you can see the start points on a map like businesses, and they'd be rated by other users. You click on a highly rated route. On the route page, you would see the Google Map overhead route, the elevation profile (with grade %'s), and notes along the route. The route description would be like a Wiki edited by the community. You could click on points along the route to read user comments or see user pictures. If you scroll down you could see member comments on the route with their review rating. You could see if your friends had done the route and what they rated. If you were a member you could also see your own training history on the route - if you'd done it, and possibly a chart of previous speeds (maybe more data if you uploaded from your bike computer). On the side you could see a list of similar routes, like "people who liked this also liked ...". From each person's review of the route you could click on them and visit their blog, see their groups, etc.

Regular members would update the wikis of route descriptions, add new routes (with the simple Google Map style clicking of end points and dragging mid points), rate routes, track their training, track what rides they're doing. In addition to the route pages, you could view your ride history in a calendar format, which would also show upcoming events or group rides you were signed up for. From the calendar you could also graph things like your speeds and weight over time. You could also have your own blog page. You blog page would include the reviews of routes and events that you write, and also any other blogging about your riding that you want to do.

You could connect with other members and see what rides they're doing and what they recommend, send messages to each other, etc. ala Yelp / Myspace / etc. Of course there would be a forum. People would upload pictures taken along routes. Pictures could go into their blogs and also into the route pages. Of course people would want to take pictures of their rides and use their bike picture as their avatar.


06-21-08

I'm about 55 pages into Snow Crash and I can't take any more. WTF this book is retarded, why do so many people like it? It's laughable, it's like Stephen Colbert's Alpha Squad Seven, it's like what you would write if you were trying to make fun of the "hacker ninja" stereotypical ridiculous jargon silly personification of the internet genre.

I got "Pig Earth" from the library; it's a John Berger book about peasant life in rural France. Some jackass scribbled notes all over the book, highlighted sections, wrote in definitions of words, etc. He should be punched in the nose and kicked in the balls. People are such fucking scum.


06-21-08

When I'm depressed I like to hole up at home and watch TV and eat garbage. Some people go out and get drunk and have sex with strangers. It's basically the same feeling that leads to both behaviors, and both give you a similar sort of temporary shot of happiness which rapidly turns into regret and self-loathing. I really can't relate to the other behavior, when I'm depressed I feel like a rotten turd, and I feel like I'm transparent, everyone can see right into my soul and can tell that I'm a loser and a coward and a jerk, and I just want to hide. In any case, as much as I can never imagine doing the more social destructive behavior, I envy people who do. It has a slightly higher health risk due to STD's, but it has a lot of side benefits. It gives you funny stories to tell at parties. It gives you familiarity with the sexual quirks of lots of different people. It lets you experiment with social interactions. It gives you a sort of feeling of superiority or "bragging rights" due to all the sex you've had; it makes things that are intimidating to the hermits very commonplace for you.

Last night was another intense short heat wave; I've written before about how the city goes nuts on a hot night. It makes me feel very alone. Slutty neighbor got home around midnight with a cute young blond boy. I was happy to see that she was satisfying her need for male approval with someone who at least looked half decent, it made me sad when I saw the 45 year old short bald guy leave her place.

It occurs to me that just going out and getting HPV and Herpes would be sort of liberating, because after that you really don't have to worry much about STDs any more. I mean Syphilis and Gonorrhea and Chlamydia all suck, but are easily cured and pretty rare, you just take antibiotics, no biggie. HPV and Herpes sure they sort of suck but for 99% of people who get them they're very mild, just like having some pimples. The only thing left is AIDS, but the big secret is that AIDS is actually very rare (in the US, among wealthy white heterosexuals) and especially for men the rate of transmission is very low, even without a condom. So if you just go ahead and get yourself the Two H's you really don't have to sweat STDs any more, just use a condom and go nuts.

BTW you should never end your acronym with an S.


06-21-08

Wrapping up my Unicode adventure :

I uploaded new versions of cblib and the ChukSH executables that should handle unicode pretty decently. The main piece of code is a function in cblib/FileUtil.h called "MakeUnicodeNameFullMatch" which takes a char string and does a file search in each directory portion of the path to promote the single byte char strings to unicode one by one. (fixes the flaw in earlier posted code on this page).

I've straightened out a few things. For one the "%S" (capital S) unicode printing is just totally broken, don't use it. Console output is indeed "OEM", so in my console apps I am treating all single byte char strings as OEM, and any time I do any file IO, I use the unicode file IO functions (the single byte char file IO functions would be in "A" code page, so you cannot use them if you treat your char strings as "A"). For example, I do FindFirst/FindNext in unicode, then kick down to OEM single byte to do substring compares to the command line args, then promote back up to Unicode to do a file rename or copy.

Some notes for people using consoles :

cmd.exe seems to do everything "right" in the sense that it displays unicode by converting to OEM code page. The dir autocomplete and "cd" and such all take the OEM code page names.

4NT is just totally broken for unicode. You can't even "cd" into dirs with unicode names. That's sort of okay because 4NT is deprecated and you're supposed to use :

TCC is pretty weird with unicode. "dir" appears to be incorrectly outputting "A" code page names, not OEM, but the console is still OEM code page, so you get bad characters. I believe what's actually happening is TCC is actually putting unicode chars in its screen buffer (since you can drag-select-copy and get the true unicode names in the clip board), and windows is converting those unicode chars to "A", not OEM, for display. That seems to just be a bug. If you drag-select a unicode name and paste it to the TCC command line, it converts to OEM.


06-21-08

I really like the sounds my Prelude makes, the little tick tick of the turn signal, the soft ding ding if you leave the lights on. I love that it doesn't beep if you fail to put on your seat belt, doesn't beep if you leave the door open or whatever, doesn't honk the horn when you use the keyless entry. It's all subtle and pleasant and informative without being unpleasant. I can't believe how bad most cars are, I could never be in those cars, I would want to smash them every time they beeped or honked at me. I've ridden in many people's expensive cars and they make disgusting rackets with all sorts of loud and unnecessary beeps and dings and honks.

On a related note : the fucking power LED's on electronics just keep getting more tasteless and retarded. If I'm watching a DVD in a dark room I don't want a bunch of fucking 100 Watt super bright blue LEDs on all my power indicators. Fortunately this is pretty easy to fix. Just get the screwdriver, open up your electronics, disconnect the LED, throw it on the ground and stomp on it, then scream curses at the retarded fucking product designers that made you waste your time on this.

In fact, there are very few electronic devices which should even have a power light at all. If it's got a hard switch that you can tell is flipped one way or the other (which it should always have) then it doesn't need a power light. If it has any kind of LCD or other activity indicator, it doesn't need a power light. If it makes noise when on, it doesn't need a power light. The only things that should have power lights are things that don't have on/off switches or may be hard to tell if they're on or not, such as microphones and gamepads.


06-21-08

Funny little thing. AAA is a member-owned co-op or something like that. Anyway, because of it, they publish all their financial details in the membership magazine. You can see a breakdown of money in & where it goes. I was amused to notice that AAA loses money on their basic service. Roadside service & free maps and all that cost quite a bit more than they get in membership dues, something like cost $5M, receipt $4M. They make up the difference through the profits on their travel agency and insurance business. So the basic membership is a loss leader. I was kind of surprised, I always figured that AAA worked with the "gym" business model - that is, the people who actually use the service much are very unprofitable, but you make it up with the vast number of people who sign up but never really use it.


06-20-08

Lakes Basin / Sierra Buttes / Gold Lake Hwy area was pretty great. Maybe more later. Some pics on flickr.


06-18-08

good site on cycling knee pain .


06-17-08

Most of the best hiking and camping in CA is way the fuck up high in the mountains. That's not because the high sierra is the only place with good scenery - it's because it's the only place that nobody else wanted. All the usable or habitable beautiful places lower down were developed. All the wilderness areas that are preserved are not preserved because they're so great, but rather because they're so *not* great for normal uses. (obviously special places like Yosemite, Sequioa are not included).

CA is paradise; the weather, the sun, the lack of rain and humidity, the variety of scenery, there's nothing like it in the US. Unfortunately, everybody knows that, which means it's full of damn people. Actually even 15 years ago I would think to myself "why in the fucking world do people live in Minnesota when they could live in CA?". To some extent that's still true, but there has been a massive exxodus from the middle of the country to the west in the last 15 years. High prices here now keep people out to some extent.

To find ideal spots these days you have to be willing to suffer some minor inconvenience that most people aren't willing to suffer. You can still go to deserted tropical islands if you're willing to take a local flight, maybe catch a little boat, and wind up traveling all day to get there. You can go to amazing places if you're okay with places that aren't easy for tourists, where perhaps people don't speak english, you have to find your way around and figure things out.


06-17-08

strncpy is one of those basic functions that doesn't do what you want. If you use it like this, as most people do :
char buf[256];
strncpy(buf,from_str,256);
You just wrote buggy code. If from_str is actually longer than 256, buf will not have a null and when you try to use it as a string it will hose you.

The way I like to replace library functions now is with a namespace and a using :

namespace my_strncpy
{

	inline void strncpy(char * to,const char *fm,int count)
	{
		::strncpy(to,fm,count);
		to[count-1] = 0;
	}

}

using namespace my_strncpy;
Any code that follows this and calls "strncpy" will actually call my_strncpy::strncpy


06-17-08

I started talking to Google about maybe working in the Search Quality team; I like the idea of working right in the guts of what matters most, plus it seems like an opportunity for me to learn a lot of stuff I'm not an expert in. I see a lot of flaws in search and think I have ideas to improve it, but who knows if I'd really get to fool around with that. I've got a deadline June 27 now so I need to get my shit together and decide.


06-17-08

We're going camping again tomorrow. It's either going to be Clark Fork in the Stanislaus (on the 108 near Dardanelle, between Yosemite and Tahoe) , or the Lakes Basin / Sierra Buttes area off Gold Lake Hwy north of Truckee.

I want to go to one of the high country (8000+ feet) camps in Yosemite, but they aren't open yet. There's a lot of good stuff up Hwy 4 in the Bear Valley - Hermit Valley area, but it seems maybe a bit too early still.

The Highways that cut the Sierra Nevada are rich in wilderness - mainly the 4 and the 108, but also the 88 and 120.

I'm also pretty limited by my car's complete lack of offroad capability, though lord knows Dan & I took it places it never thought it could go. I've gotten it stuck a few times and don't care to do that again. The California Sierra seem to have a lot of the best trailheads only accessible by high-clearance vehicle. I don't care to park a few miles early and walk the road.

Lots of good info at climber.org ; I like how you can browse around there hitting the North,South,East,West buttons. sherpaguides is pretty amazing.

BTW hiking searches are one of the many ways Google is broken. It literally takes me hours to find the pages that have actual content. For example, if you do any search related to Yosemite, 90% of the results will be pages that just show crappy copies of the government's content. Also lots of hiking searches now return pages from fucking hikercentral which appears to be an autogenerated text aggregator that someone cooked up to make money from ads. The shame is that google search even returns crap like that at all.


06-16-08

Bleck, I don't know what to do with myself.


06-15-08

I spent my very early coding days making a lot of libraries and not ever really making useful apps with them. It's sort of what I crave to do, it's a very satisfying form of mental masturbation for the type-A OCD coder inside me. To fight that I really don't let myself go off and do that too much any more, and I think maybe I fight it too much. There are some basic libraries that I don't have that I would find very convenient.

1. A standard set of functions for working with file specs and paths, and for doing standard command line app type arg parsing, file spec qualifying, renaming, etc.

2. A standard very basic 3d app harness and 3d drawing utils. How in the world do I not have this?


06-15-08

The situation with wchar is so fucked. There should be a wstring.h that has all the exact same functions as string.h with the same names, but taking wchars. That's what fucking C++ does for you. I guess if you're using std::string you can just switch to std::wstring and that works, but the fucking std::string functions suck so bad, any time I need to do real work on strings I go back to strlen,strrchr,strrev,strtok,etc.

I guess I could make it myself with a bunch of this fucking retarded shit :

size_t strlen(const wchar_t * s) { return wcslen(s); }

BTW it's easy to get a unicode argc/argv using CommandLineToArgvW( GetCommandLineW() ) - but as I said before, do NOT do this! It's an illusion of correctness that is not true. You must take the ansi argc/argv and do the search match to find the right unicode promotion for file names.

How can engineers be so fucking retarded. How did this shit pass review in a code design committee? Why am I not in charge of everything?

Oh, I just discovered this new awesomeness. It's perfectly legal to make two file names which appear 100% identical to the user. There are multiple different ways to make the accented characters, such as in "1-15 Crème Brulée.mp3" ; you can have two file names with have identical display chacters but different unicode names because one of them uses composed accents and one doesn't. Awesomeness. If you take the version of Creme Brulee that's made with composed accents and copy-paste into an ansi text editor, it turns into "1-15 Cre`me Brule´e.mp3" - even though the accented e's are perfectly well representable in the windows "A" single byte code page.

Okay, so rather than deal with this BS I just made an app "DeUnicode" to get rid of this nonsense. It's in exe now.

Addendum :

I should note that "wchar" is pretty evil in another way that I haven't mentioned - it gives you the false illusion that you are solving the problem, and that one wchar = one visible char, but of course that isn't true. 16 bits isn't enough for some languages, so you still need composed chars or escapes.

There's some appeal to using UTF-8. It lets you still use normal string storage and compares and such. You still have a little bit of an issue to interact with a console correctly.

Also printf with "%S" (that's upper case S) doesn't do at all what you want. It supposedly takes wchar strings, which it does, but it doesn't actually covert them to oem code page to printf to a console, so you just get gunk.

The "dir" in CMD seems to be converting to OEM which is fine. The "dir" in TCC seems to actually be trying to show the unicode, but the non supported chars show up as squares. If you select-copy the name in TCC you seem to get the true unicode file name, but if you paste that to the command line, it converts to OEM. (FYI, TCC is the successor to 4NT, it stands for Take Command Console)


06-15-08

It's kind of weird to me, but I actually completely forget what makes me happy. The things I really enjoy just slip my mind and I don't do them. Recently I just remembered how much I love to just sit outside first thing in the morning while I drink my first cup of coffee. I like to feel the morning air, listen to the birds chirping, and read the stupid newspaper. I miss my house in SLO.

Sometimes on a nice day I sit out on the stoop in front of my building. It makes me feel like a real city dweller to sit on the stoop, and I can see the appeal; people walk by and you can say hi to your neighbors or people you know, flirt with girls, or just check out the freaks.


06-14-08

I'm really digging "Fleet Foxes" and "Band of Horses" but wow they just completely rip off My Morning Jacket. That's okay with me cuz I love the classic MMJ sound.

[Kontrol] is an SF DJ group that does minimal tech stuff. Follow the link and browse around, they have a ton of big mix mp3's to download for free that are very good if you like the minimal techy sound.

The other SF group I really like is DirtyBird . Again on the link there are bunch of big free mix mp3s. DirtyBird is more standard house, but it's tasteful, good quality.

The Satellite SF guys have a good weekly and lots of free mixes to download : here

There are lots of other big name SF DJs, like Mark Farina, M3, Miguel Migs, David Harness, Dimtry Mykonos, all of whom I think are total crap. They play "funky house" and it's just gross, tastless, big beat junk.

Most of the Burning Man related groups, like Green Gorilla and Space Cowboys are pretty meh to me. I do generally like the Opulent Temple stuff (Opel Productions). There's a good free mix by Syd Gris (Opel) but I can't find it now with cursed Google. There's also a good mix by Myles Egner I like but I can't find the download link to give you.


06-14-08

Two weeks ago I decided I was drinking too much (booze) and I should stop for a while. Well, I did, and it really wasn't hard at all. I didn't miss the buzz at all, in fact it feels nice to be clear headed and strong. What was hard was eating dinner without the right accompaniment.

For "bar food" like burgers or hot dogs or peanuts, beer is the perfect partner, the bitterness of the hops balances the heavy fat, and the sweetness of the malt accentuates the sweetness of the caramelized sugars in the food, but I can sort of be okay with soda as a substitute there.

With French and Italian food I just can't find a substitute for red wine, and the food just doesn't work without it. I take a bite of spaghetti carbonara, my mouth is full of cheese and garlic, now I need something to balance it, I take a sip of water - bleck, fuck, yuck, it doesn't work. It needs the acid and tannin of the red wine to play counterpoint. You have to go bite-sip-bite-sip. The problem is if you eat a ridiculously large amount, as I do, then you wind up drinking an awful lot too, which is not always what I want.


06-14-08

How Windows File Name and Charset Handling is Fucked

I've started getting files with unicode names and am discovering that lots of old apps crap out very badly with them. I mainly get these in mp3's where the damn music database decides it's going to do all the correct accenting and it's not possible in ascii. Some old apps that don't support unicode names throughout will crap out.

Usually this happens when apps enum the dir and see the files, grab the names in ascii, and then try to do something to the file - and windows refuses to find it. Windows isn't nice to you, it won't let you open the file with the ascii version of the name where you just crammed the unicode into ascii. All the old POSIX dir enum stuff that's just ascii like readdir is thus useless and old unixy command line tools break badly.

(BTW I'm using "ascii" wrong in these first paragraphs, I'm going to try to refer to "single char strings" in the remainder; so far as I know there's no good standard way to refer to single byte char strings of indeterminate encoding)

Okay, so I've done a bit of research and the result is even nastier than I thought. First, let's talk a bit about character sets.

The "wchar" in Windows is unicode, I believe it's UTF-16. Note that there can still be composite characters in UTF-16, it's not necessarilly one short = one character.

The "A" in Windows means a single byte string, but it's not exactly ANSI or ASCII and it's also not UTF-8. What it is, is an encoding in the Windows Code Page. That can actually change depending on your locale settings. By default it is "Latin 1" which is similar to ANSI but not quite the same.

Now, just to have even more fun, if you are writing a console app, you also have to deal with the "OEM" code page. It has nothing to do with an OEM, it's really just the DOS code page. Note that this is also a single char code page, but it's not the same as the "A" code page. If you printf stuff, it will use the OEM code page. If you just take "A" chars and put them in printf, some weird junk will come out.

In practice for English, the OEM code page is basically a subset of the "A" code page, the low 128 chars are the same, so you can take OEM strings and cram them into "A" strings and you think everything is fine. But it's not, because the file names won't be the same. When we usually talk about "ascii" we are sort of vaguely referring to single chars that are either OEM or A strings.

External reference : Michael Kaplan on OEM & A code pages , there are a few pages on this over at "Old New Thing" : such as this , and this , and a a page at smallcode .

Okay. But none of these people really address how this is fucked and how to deal with it.

1. You cannot really convert between OEM and "A" file names. That is, if you have some Unicode string and you convert it to OEM and "A" versions, you will get two different results (sometimes). Now if you take those different results - there is no way to get between them at all. If a user does something like "dir" in a DOS box, they will see the OEM names. On the other hand, if they look at the names in Explorer and do a copy-paste of the file name into a (non-unicode) text editor, they will see the "A" name. The A name and OEM name are now just both char strings and there is no function that will turn one into the other.

2. When you use something like FindFirst/FindNext , Windows will give you the "A" versions of the file names. So far as I can tell these "A" names are made using this call :

WideCharToMultiByte(CP_ACP,0,from,-1,to,maxlen,NULL,NULL);

(*) it's important to me to know exactly how Windows makes the "A" names; this appears to be it, but it would be lovely to get confirmation. Note that with composite unicode names, using WC_COMPOSITECHECK|WC_DISCARDNS will give you much prettier looking "A" names, but you can't use that because it's not the same thing that windows does. Note that you may be tempted to try to pretty up the names for display, but DON'T because you want the user to be able to copy the name you show and paste it and have it be a valid file name, so you must use the standard convention at all times.

3. Windows will *SOMETIMES* accept the "A" versions of file names for file IO functions. This is easy to test. Run FindFirst/FindNext over a bunch of names and try to fopen them all. It works with all the simple names, and sometimes it works with weird unicode names, and then sometimes it doesn't work. Yay. I believe that the failure cases have to do with composite characters. With the weird file names that fail, I have not been able to find any "A" encoding of the name that will succeed in fopen.

This #3 is actually a pretty horrific problem. It means that legacy apps will actually fail to open some files. For example even the plain DOS copy and move will fail. This can make your apps very confused and can cause you to lose data.

4. Just to be clear - even files that are not even unicode have some of these problems, when the "A" and OEM encodings are not the same. For example : "Í gær.mp3" , is not unicode, that's the "A" encoding, the "OEM" encoding is "I gær.mp3". And if you just take the "A" encoding and output it with printf and don't convert to OEM, you display "- gµr.mp3"

Okay, so like obviously this is pretty fucked and you should be well scared and hating MS right now. It would've been pretty trivial to make an "A" equivalence for file names that always worked, but they didn't. It's pretty obvious that FindFirst/FindNext should always give me names that function even in "A" mode, but they don't.

Alright, so you decide to bite the bullet and do everything in unicode like you're supposed to (including converting Unicode to OEM before doing console displays). You think that's grand, until you start taking command line arguments. Now you're back in the world of hurt, because users can pass in file names in various encodings. It's perfectly reasonable to do something like "dir" and then copy-paste a name (in OEM encoding) and use that as a command line argument. Or they might just use the cmd shell name autocomplete (which appears to also be OEM encoding). But your app could also be invoked directly from someone passing unicode args, or passing "A" encoded names.

Note that you could have this problem not just with command lines but of course any time you take text input from the user, they might paste in file names from any encoding. Also note that while you can get the Unicode version of the command line, that doesn't really solve anything because the most common case is that the user is not actually typing in correct unicode commands.

The best solution I have to this is to work internally all in unicode and whenever you get input in a char string, try to convert to unicode.

Of course there is no function to convert a char string to Unicode and match the file name that you want. (if you just blindly convert the char string to unicode, it will not match the file name). The best solution I have is to search the dir containing the file name to find the unicode name that converts down to the char string. Of course in general there could be multiple unicode names that map to the same string and we should check for that and scream loudly about ambiguity, but if that ever actually happens you are super fucked anyway.

Here's the code for GetUnicodeFileNameFromMatch. This is imperfect in a few ways if you want to fix it. First of all, it only works with bad unicode file names - not bad unicode dir names. To make it work for dir names too you should start at the drive root and search each dir up the path spec and match as you go. Second of all, it only works for full file names, not partial files and wilds. Ideally it would be able to match not just full strings, but substrings. eg. if somebody does a DOS autocomplete on a unicode name and then deletes the first few and last few chars, I want to still match the internal substring and get the unicode equivalent.

This also provides a way to correctly convert between OEM and "A" encodings. Take the encoding and use Match to find the unicode file name, then convert to the other encoding. This also lets us do a nasty way of avoiding making our whole app unicode. First take command line args (OEM) and promote to unicode then convert to "A" encoding. Work internally entirely in "A" encoding. Right before doing any file access calls, use Match to find the true unicode name.



void StrConv_AnsiToUnicode(wchar_t * to,const char * from,int maxlen)
{
	MultiByteToWideChar(CP_ACP,0,from,-1,to,maxlen);
}
void StrConv_OemToUnicode(wchar_t * to,const char * from,int maxlen)
{
	MultiByteToWideChar(CP_OEMCP,0,from,-1,to,maxlen);
}
void StrConv_UnicodeToAnsi(char * to,const wchar_t * from,int maxlen)
{
	WideCharToMultiByte(CP_ACP,0,from,-1,to,maxlen,NULL,NULL);
}
void StrConv_UnicodeToOem(char * to,const wchar_t * from,int maxlen)
{
	WideCharToMultiByte(CP_OEMCP,0,from,-1,to,maxlen,NULL,NULL);
}

// GetUnicodeFileNameFromAnsi
//	from name must be a full path spec
//	does a search for the uni name that matches the ansi
// only works if the dir names are ansi !! does not support uni dir names !!
enum EMatchType
{
	eMatch_Ansi,
	eMatch_Oem,
	eMatch_Either,
};
bool GetUnicodeFileNameFromMatch(wchar_t * to,const char * from,int maxlen,EMatchType matchType = eMatch_Either)
{
	// have to do a search :
	
	const char * filePart = strrchr(from,'\\');
	if ( ! filePart )
		return false;
	filePart++;
	
	char findSpec[1024];
	strncpy(findSpec,from,1024);
	
	char * lastSlash = strrchr(findSpec,'\\');
	if ( ! lastSlash )
		return false;
	
	lastSlash[1] = 0;
	strcat(findSpec,"*");
	
	wchar_t wFindSpec[1024];
	StrConv_AnsiToUnicode(wFindSpec,findSpec,1024);
	
	WIN32_FIND_DATAW data;
		
	HANDLE handle = FindFirstFileW(wFindSpec,&data);
	if ( handle == INVALID_HANDLE_VALUE )
	{
		return false;
	}
	
	do	
	{
		// process data
		bool match = false;
		
		if ( matchType == eMatch_Ansi || matchType == eMatch_Either )
		{
			char ansiName[1024];
			StrConv_UnicodeToAnsi(ansiName,data.cFileName,1024);
			match |= (strcmp(ansiName,filePart) == 0);
		}
		
		if ( matchType == eMatch_Oem || matchType == eMatch_Either )
		{
			char oemName[1024];
			StrConv_UnicodeToOem(oemName,data.cFileName,1024);
			match |= (strcmp(oemName,filePart) == 0 );
		}
	
		if ( match )
		{
			wcscpy(to,wFindSpec);
			int len = (int) wcslen(to);
			len--;
			to[len]=0;
			wcscpy(to+len,data.cFileName);
			FindClose(handle);
			return true;
		}
	
	}
	while ( FindNextFileW(handle,&data) );
		
	FindClose(handle);
	
	return false;	
}


06-12-08

I'm reading through Alton's book "I'm Just Here for the Food: Food + Heat = Cooking" (one of the worst titles in the history of food writing). I got it when it came out and glanced through it but never really read it. I only consulted a recipe or two over the years. It's pretty meh as a cookbook for recipes, but it's actually a really entertaining read straight through. He covers a lot of the same ground that he's covered in the TV show, but there are plenty of other little entertaining tidbits, stories of experiments he's done to test out different temperatures and methods, etc.


06-12-08

I just finished "The Apprentice" by Jacques Pepin, which was very enjoyable. Alissa doesn't think it's engaging for someone who's not already a Jacques fan. Some things I like about it : Perhaps foremost is just his personality, how sweet and fun loving he is, his joie de vivre, his true love of cooking. But it's more than that. He has a depth of experience and a perspective that is quite unique.

Jacques went through a traditional apprenticeship, which never happens any more. It harkens back to an older time when young boys would go to learn a trade by working for free for a blacksmith, or a cobbler. It gives you a depth of appreciation for the basic techniques, because you had to do them for years. It also produces admirable knife skills and sensitivity (he learned in the days when baking was done in wood burning ovens with no thermometers; to tell if the temperature was right or anything was done required feel and experience, not precise formulas).

When I was growing up "Nouvelle Cuisine" was something that was roundly made fun of. It was a standard joke on sitcoms right next to the toilet seat up and how people of various races drive. In the joke, nouvelle cuisine was a tiny portion of something very simple served on an enourmous white plate. Certainly that ridiculous stereotype did exist and the practitioners went a bit overboard, but it makes us miss how important nouvelle cuisine was. I, like many food lovers, have read the history of the classic recipes from the time of Escoffier and laughed at how ridiculous they seem now. Armies of chefs preparing these elaborate food scenes, and yet all brown, all glace and butter. Thinks like fish stuffed with langoustine and puree of scallops, baked in a salt crust that's carved to look like the fish, and presented with potato puree rolled in truffles and carved to look like heads of coral. It's this bizarre superlative iteration under constraint. Like you're only allowed to use meat and potato and mushrooms and butter, everything has to have a typical gravy like taste, and now spend as much time and money as you want to make it as fancy as possible. This classic style french food doesn't exist any more, all modern high end restaurant food (the generic CIA style we get so much) is a descendant of nouvelle cuisine.

The book actually reminds me of Papillon a lot. Partly it's the style of the way anecdotes are crafty, slight exaggeration, and a kind of bragging that's quite charming. Mainly it's the attitude that every challenge is an opportunity for adventure, and even disasters (Jacques was in a really severe car crash) are something you face so you can get back to fun.

It makes me think of the life I wish I had - hanging out with great chefs, doing food related adventures like gathering mussels or wild mushrooms, trying to do a huge clam bake or cook your own whole cow head to make tete de veau, and having some of your experiments go horribly wrong. What fun, that's an ideal way to live for me.


06-12-08

Sunny day per year count. South San Francisco : 160. Seattle : 70. source

Sunny days per year for working stiffs (2/7) : SSF : 46 : Seattle : 20.

Currently I'm (potentially) alive 160 days a year. It's hard for me to imagine really only being alive 20 days of the year.

Part of what makes this area so fucking perfect for cycling is that with all the microclimates you can get the perfect temperature just by driving 30 minutes. A bit cool out? Palo Alto will be perfect. Summer heat and you want it cooler? Head to the coast and ride the 1, or up to Marin. Winter and it's quite cold? South or east will still be hot.


06-12-08

There's this weird thing with apartment repairs, where if I bug the landlord and make them fix a problem while I live there, I don't get charged for it, but if I just live with it and move out and they see the problem in inspection, then I get charged for it. It forces me to be way more of a pest tenant than I want to be. Most little things I would just live with.


06-12-08

I fucking hate flies on boxers; my dick is always popping out and it's both uncomfortable and indiscreet. On the other hand, flies on tighty whiteys are very important. Not that I ever actually poke through the hole to pee, that is weird as hell. The fly on the whiteys is important because it's a flexible basket for the junk. Since it's not sewed it can spread as necessary like a camera iris or something, in a way that no flyless whiteys can. I sew a lot of my boxers shut but that's an awful lot of manual labor for underwear.


06-12-08

People keep making fucking cords where the cord is attached to the device via its electrical contacts, so if you pull on it the tension is transferred directly to the electrical connection. That's so fucking retarded and trivial to fix. You just need to loop the cord back and afix it to the body of the device so there's slack between the tension point and the electrical contact. This of course is easy for you to do at home and is a good idea when you buy a new device.

Headphones are one of the classic perpetrators of this flaw. That's easy to fix with some electrical tape and you will be happy about it later. Black twist ties work too. In many cases you can also loop the cord back and just make a little knot around the device. My coffee grinder also has this flaw. More annoying, my digital probe thermometer has this flaw, and that's a bit harder to fix. I can't use tape because it has to live in a 500 degree environment.


06-11-08

I've been thinking a lot recently about the French way of living, with a flat in the city and a weekend home in the country. All the middle-upper class in Paris who live in the city will have a nice flat in town where they spend the week, then a country home out an hour or two away in a little village. It seems pretty ideal to me, the best of both worlds. And it's really not that much more expensive than the American way of just having a big home near the city. For example, in SF it would be $1M+ to get a decent home in the city. Instead you could buy a condo for $600k and also get a cabin in the Sierra for $400k. The bigger problem in SF is that to get to country that's both cheap and desirable you have to get really far away from the city, perhaps a bit too far for a weekend. You certainly could have a weekend home in a place like La Honda to the south or Tomales Bay to the north, which are not super far and surprisingly still very rustic, but they are no longer cheap.

The country home should have a vegetable garden, a big herb garden (mainly of perenials like thyme, marjoram, rosemary, tarragon, sage), fruit trees. Lately I've been eyeing the wood burning brick oven that Jamie Oliver's got but I would probably tire of that. I'd like to be able to bike right out of my house onto good country biking roads. It should be isolated or protected with enough shrubbery that I can walk around my yard naked all the time. (don't ever use a weed whacker while naked; also make sure to check for ticks).

One thing I've always wanted is a more social kitchen. I like to hang out in the kitchen, but my girlfriends are usually scared to get in there with me because it's a small space and I'm a bit of a whirling dervish at work. I'd like a big inviting space. Recently I've realized one of the crucial things that would be cool : having two seperate gas ranges so two people can work without being in each other's way at all. They shouldn't be right next to each other either, you could have the rack of pans and tools in between the two ranges so they are convenient to both work stations. The other huge thing that most home kitchens get wrong is insufficient ventilation. You need functioning fume hoods so that you can sear the fuck out of stuff and make a bunch of smoke and have it all sucked away. Part of this is not just the fume hood but the entire air flow design of the space; quite often your only window is adjacent to the stove. That's very bad, because if you turn on the vent fan and open the window, the air is sucked directly above the stove and out the vent. What you want is a window on the opposite side of the room so that air comes in, across the stove and out the vent.

I guess one problem with the two house method is US tax laws give you a break only for primary residence. Another is that condos in the US tend to be shitty, unlike the old flats in European cities.

BTW that reminds me of an interesting thing I heard on NPR the other day. The guy said that our perception that people used to build things better in the past is mainly due to sampling bias. That is, what we see today is not a representative sample of old buildings, since most of them have burned down or simply been torn down for new construction. What we see are the very best examples from each period that were strong enough to endure or were preserved because of their beauty. I think it's certainly an interesting point, and worth considering, and perhaps is true on other topics, but I think he's actually wrong about building. Obviously we have lots of new technology, but even with it the average home of the upper middle class now (such as your typical McMansion) is shit compared to the home of some lower gentry of yore.


06-11-08

Montara Beach and Graywhale Cove are pretty sweet, isolated, sandy beach with steep cliffs all around.

I've done a few rides recently, my first of the year. Holy crap! I forgot how good it feels and how much I love it. The sun, the scenery, my body and the machine, the coating of sweat all over me, the hypnotizing rhythm of the pedals, the way the tension bleeds out of me around mile 15 and suddenly I feel fast and smooth. When I get back from a ride I'm actually smiling and cheerful and pleasant; who knew I had it in me !?

my bikely paths . Bikely is pretty fucking god awful in every way, but it seems to be the best we have at the moment. I mean I can't even begin to list the fuckups with it it's so broken.

I guess bikers aren't enough of a community to make a decent biking web site? No, that can't be true. This is a huge Web 2.0 opportunity waiting to happen. It also ties in very well to adds because you can sell bike gear. You have a big forum, review new products, have a map making and route sharing setup, tied into the Web 2.0 so people can review routes and share them with each other, you coordinate groups and group rides, etc. You'd probably get more press profile by tying it into urban biking and gas conservation and commuter advocacy and all that nonsense, though that's a little bit of a tough dance because the serious recreational cyclists and the urban hipster cyclists tend to be antipathetic communities. We could have experts writing articles, but more geared toward beginners and well organized; there's not a single good cycling web site out there that I can point people at. Sheldon Brown of course has great stuff but that site is a mess. There is no great site for routes, just lots of little messes. My theoretical Web 2.0 site could gather people's cycling blogs together too, connect them to the shared route maps, and also have training / progress tracking for fitness.


06-10-08

We went to Tilden last week to check out the swimming at Lake Anza. It sucks balls. It was a weekday and still loaded with yelling children. That wouldn't be awful, except you're only allowed to swim in the little swim complex area, and they actually put lane dividers out in the lake to cordon off a tiny area that's like maybe 1 acre, but looked more like half an acre.

Doing some research - the East Bay actually has a ton of swim lakes, which seems like it should be awesome, but all of them seem to be fucking lame like Anza where you're not allowed to swim anywhere in the lake.

The one exception is Del Valle out near Livermore. That actually seems pretty awesome, it's a big lake and you can swim anywhere in it. A few problems though. 1. Motor boats are allowed. 2. It's pretty far from here. 3. It's 92 degrees there today.

One highlight at Tilden - we layed out in a field for a while and watched a feral house cat hunting.


06-10-08

When you pull up in the left turn lane in a tight intersection, don't pull all the way to the front, hang back about 10 feet. This doesn't hurt you at all and it greatly improves the flow for everyone. (quite rare, not many do this)

When some retard has got themselves stuck in the middle of the intersection, don't squeeze right up to them and box them in, give them space and let them get out. It's much faster for everyone. (not super rare, nice people do this)

When you park on a line of cars, and you are the last one that can fit on the available curb space, don't pull right up to the car in front of you. Instead, park as far back as you can on the curb, potentially leaving some space between you and the next car. This is significant because parked cars are not permanent fixtures. (I've never seen anyone but me do this). Quite a bit more people get this one right when they are parking on the front of the line, presumably because if you put something right in front of someone's face they tend to go for it.

People are so retarded.


06-10-08

I think the hubbub about Tibet is rather otherblown. First of all, just because a part of a nation would like to be independent and secede is no reason to support them. Even if their parent nation has laws and policies that are rather onerous to the group that wishes to secede, that's still no reason to support them. There are countless groups around the world that would love to secede. The Kurds in Turkey and Iraq, the Tamils in Sri Lanka, the Indians in Southwestern Mexico, etc. etc. Some of these groups have much better cases than the Tibetans, but it's unclear when the international community should get involved in supporting independence for sub-nations. One reasonable criterion is to support independence when severe human rights violations are being inflicted on the sub-nation by the parent nation. So that's the question in Tibet. The news is a bit hard to parse, because obviously the official Chinese news is garbage, but the Tibetan partisan news is pretty questionable as well, and independent western journalists aren't allowed in the area much. From what I can tell, the human rights violations against the Tibetans are not any worse than what China is doing to the Falung Gong sect, or to anyone who criticizes the government.


06-10-08

We went to Henry Cowell yesterday to check out the swimming. It was pretty good. There are lots of nice big swimming holes, big enough to swim laps in. decent guide to holes , good map showing holes Misc notes :

There are trees all around the river and the river runs north-south, which means you only get full sun exposure for maybe 3 hours in the middle of the day (east-west rivers get more continuous sun on the north bank). It takes about 80 minutes to get there from SF if you drive fast. It's like 5 minutes from Santa Cruz. The main swimming hole is called "Garden of Eden" and is a very short and easy walk from the road. The combination of easy access and proximity to Santa Cruz mean it's jam packed with people, both locals and college kids. It's not worth going to the main hole. Direct access to the holes is easy from the many parking spots along Highway 9 between Felton and SC. There's no need to pay the park day use fee or go into the main part of the park at all. Another major hole is "Big Rock Hole" that you have to hike about 2 miles to get to, starting at the Rincon Fire Road gate. I thought maybe that hike would make it more empty, but there were a ton of cars parked at the gate so we didn't check that out, maybe they all went to "Frisbee Beach" and not Big Rock Hole so maybe that would've been a good spot.

On the map there's only official parking at the Ox Trail gate and the Rincon Fire Road gate, but in reality there's parking all along, and most people park very close to Garden of Eden and cut down. Don't do that, it's a short walk from Ox Trail gate and there's no need to add to the erosion. It looks like "Ox Trail" is separate from the railroad, but actually it runs right along it. Also the railroad actually runs right along the river edge, so as you walk you can spy the river and check out the holes. There are various little paths people have cut down the bank - do not take them. They're really badly eroded and hard to climb, and it's also pointless. Just go down to Garden of Eden, which is well signed and easy to walk, and from there it's easy to walk along the river bank upstream to more holes. We went about 200 yards upstream from Eden and were alone almost all day.

I don't think the main holes are really worth a return visit due to overcrowding and excessive ease of access, but the river is very promising. I'm sure there are plenty of other holes that aren't so well known, and with a bit of scrambling around on rocks you should be able to get a secluded swim.

On the plus side, Henry Cowell is a pretty setting, lots of nice redwoods, a rich smell of redwood in the air, some decent trails and one hike to a view. It is a small park that is everywhere very near civilization, but you can occasionally forget and feel like you're far out and alone.

p.s. hole crap Santa Cruz is so bizarre and trashy. I actually sort of like the run down beachside carnival town aspect, but now it's got yuppie gentrification randomly scattered around it, with brand new condos and the big strip of chain store shopping which creates a really bizarre contrast. Scott's Valley is even worse. It seems to have sprung up over night and is now a tract-home + big-box-store suburb plunked down in the mountains.

All the trash left around these popular river swim spots really hurts my fragile faith in humanity. I start feeling okay about people again, I think, hey there are actually people who appreciate nature and get out and do fun things with their time, these are my kind of people. Then they go and fuck it up. It's not just that they fuck it up, it's that it's so purely destructive and retarded. It's not even the usual way that humanity fucking sucks - if people can give themselves some small pleasure at great cost to others, they generally do it. Okay, I've come to know and accept that, though I'm not happy about it. But this littering in nature, it's not really even much of a pleasure to the litterer, it's just a purely destructive asshole thing to do. Even among the decent subset of humanity that actually gets outside, a large percentage of them are fucking dicks. Sigh.


06-07-08

I want to kill a man. I mean, not really, I'm very anti-violence, but on the other hand it's one of those things where once you've done it, it's much easier to do in the future, and it changes your whole perspective on what your options are in a given situation. It gives you a certain power, the knowledge that you can do it and it changes life from something sacred you can never take to something you might have to do once in a while. When the psycho is pointing a gun at your wife, instead of shaking and freaking out, you can pull your weapon and take him down. It's sort of like chatting up girls at a club, yeah it's a disgusting horrible thing to do, but you kind of have to do it once just so that you know that you can and so that if you ever are forced to do it again it's much easier. So, like I don't actually want to kill a man, but I want to have killed a man. I also don't want to join the army, but I want to have been in the special forces.

On a related note, I'm so fucking sick of all these "crime gone wrong" movies. The robbers tried to time the shifts of security guards, but Amos had to go home early for his daughter's play so the schedule was changed and a guard walks in on them cracking the safe and they shoot him, and then of course everyone totally freaks out and panics and starts yelling at each other and they dispose of the body stupidly and leave lots of evidence behind. Every fucking edgy crime movie now is in this vein and it's boring. Look you killed him, it went bad, now fucking get your head on and take care of it, it's not that fucking hard. I kind of want to go rob a bank and kill some security guards just to prove how fucking easy it is to screw your shit on for a few hours to get the job done. It's pretty much the definition of being a man. When you have to, you just disconnect your emotional reaction and go into pure logic task-doer mode and think about what you're doing and kick that shit out. Of course once you get it all clean and escape, and get off on your own in your motel room in the desert of the American Southwest, then the floodgates open and you freak out and break down and cry for hours and then kill yourself.


06-07-08

Notes to self on mussels : cook 4-5 minutes. Reduce the broth (white wine, beer, stock, whatever) by about half before adding the mussels. When they are cooked, remove them from the pan & reduce the broth some more, to taste. Monter a beurre. Pour broth in a seperate boat. This is non traditional but I prefer it to the thin broth you usually get.

French onion soup : really really cook the onions hot and long, I pretty much always don't do it long enough or hot enough. Broth should be much richer than you think it needs to be because the bread and cheese are mildening agents. Need good beef broth. If your broth is shitty, you can cheat and punch it up with Worcestershire.

French apple tart : it's easiest to just blind bake the tart crust and cook the apples in a pan seperately, and then put together. You want quite a thick crust, like double the thickness of an american pie crust; the star of the tart is really the crust, the apples are just like a topping on the sweet buttery pastry. Also glaze the crust before putting on apples, it will harden the boundary. Between the crust and the apples you want to have a bit of glue, a thin layer of something that will bake firm and absorb flavor, like an apple sauce + ground almond paste. To get a good caramelization you want to foil the edges of the tart and broil. The secret to the real french glisten is lots and lots of butter (during baking) and lots and lots of glazing with apricot jam (at the end), way more than you think.

The right fat % for hamburgers is somewhere around 12%. More is gross oily, less is nasty dry. The "Kosher" ground beef at TJ's seems just about perfect. The other stuff they sell is too lean or too fat. I guess if you were really fancy you could grink your own and add some nice fat to just the right amount.

How to prep garlic : first of all, a "clove" is one little piece of a head of garlic, a "head" is a bunch of cloves. I saw a couple in a grocery store the other day in line in front of me, the guy asks his girl to run and grab a clove of garlic (wrong), she actually runs off and comes back holding one clove (dumb, obviously he meant a head). I hate it when people react to what you actually said and not what you obviously meant. Anyhoo. Take a clove (skin still on) and cut off the stem end, you only need to cut about a tenth of a centimeter off. You don't want to eat the stem end, but mainly this is to release the skin. Lightly bash the clove. Personally I don't like to bash with my chef's knife because I've found over time I've been putting slight bends in my knife from bashing garlic and it's not perfectly straight any more. If you are into silly unitaskers like Alton Brown is, you can use a hunk of granite. I find board scrapers are a very useful tool and make good garlic bashers too. Mostly I just use the heel of my hand. You aren't trying to crush to a pulp here, just a light bash. The skin should now pop right off. At this point you have various options. For a very fine dice you can use a garlic press. I think there are very few dishes where that is actually the right cut for garlic; it is the way to go generally for asian garlic use. For most applications you just want to dice with a knife, which produces a controllable size and larger pieces which cook sweeter and without the bite of crushed garlic. To make thin garlic flakes, if your knife skills are not super top notch the easier way is to use a vegetable peeler. Garlic flakes fry quickly and make a lovely garnish for garlic dishes.

BTW something I've learned from Jamie Oliver is that you can use garlic very nicely with the skin on. Take a clove, and cut off the stem end as usual which will make it easy to squeeze out later. Now when making a roast, such as oven roasted carrots or brussel sprouts, or a roast shoulder of lamb, or whatever, just toss a bunch of skin-on cloves in the mix. 40 minutes at 400 or whatever and you'll have nice roast garlic, which will also have perfumed whatever you roasted. The skin keeps the outsides from burning which it would do if you took the skin off in these applications.

Sugar is a cruel temptress. In the last 2 weeks I've had : Joy of Baking molten chocolate cake, Jacques' brownies (+ lots of plain roasted hazelnuts, yum), Nigella's chocolate chunk cookies, carrot cake (thanks babe), banana bread, banana banana bread bread pudding (lol, parse that beeyotch) (aka banana bread banana bread pudding), french apple tart, in addition to lots of tartines (aka bread with jam) and some chocolate. And when I say "brownies" I don't mean like one or two, I mean a batch. Work used to provide a good outlet for my bad baking habit, because I could make a batch, eat a few, and take the rest to work. Now I have to eat them all myself.


06-04-08

I always thought "best thing since sliced bread" was kind of ironic/odd because sliced bread fucking sucks, it's a retarded invention, part of the convenience over quality shitty phase of modern invention that spawned the TV dinner and canned everything. How fucking hard is it to slice your own bread? It takes like 2 seconds, and it means the bread stays much fresher much longer without preservatives, plus you can slice it the way you want instead of a fixed predecided way. A better expression would be "best thing since scissors" since scissors rock (they rock paper anyway), or "finest find since the frost free freezer".

Actually "worst thing since sliced bread" would be good, but you can't actually say things like that in the real world because you waste your life explaining.


06-04-08

Whenever I plug into a hard wired network, I disable the wireless connection on my machine. I heard from Eli long ago that Windoze could get confused when you had both, and in some cases even get so confused as to mess up the whole local network by creating a loop. I'm not sure if that was ever really true, and even if it was true from some early Win2k WiFi support it probably isn't true any more. Still, I'm paranoid and don't trust Windoze at all, so I keep doing it.

Ryan says it is true, so I'm not crazy to keep doing this. It should be fucking automatic though. Hey you have a good hard wire connection, turn off the fucking WiFi now.


06-03-08

Viva Robusto travel/food blog. This guy was a pro poker player from 2+2 and decided to take a year off and travel the world with his wife. The writing's not really that great, but it's a nice example of what human beings can do with their lives. Not everyone is living a standard uncreative boring salaryman life.

BTW why can't I fucking switch blogger to be past->present instead of present->past !? When you want to catch up on someone's travelogue you want to fucking start at the beginning and go forward.


06-02-08

Season 6 of Curb is pretty great. Pretty, pretty, pretty great. It's a lot more sitcom, which is actually kind of nice, since it had such a hard edge at times in the early seasons. This one doesn't have a lot of extended yelling and awfulness.


06-02-08

I believe that the vast majority of people who give me life advice are naive. Or in any case, I disagree with them. There are largely two types of advice I get, and pretty much all the advice falls into one of these stereotypes.

Type A : you have talent, you're wasting it, do something intellectual and productive. I believe that these people measure success in life by what you accomplish.

Type B : you're still young, live it up, chase girls, travel, party. This mainly comes from aging lothario types who either miss their younger days or regret not partying more.

I don't believe that either of these get me anywhere, and both are phases I've gone through and I believe that I've grown past. In fact I'm quite proud to be past "Type A" and I consider it one of the few major emotional accomplishments of the past few years.

I used to believe that the best thing in life was to do some great work, and it didn't matter how shitty everything else was if you had some intellectual toil that was worthy. Certainly having good work is an enjoyable thing, and to feel like you are doing something important is very emotionally satisfying. Note that actually doing something good or important is irrelevant. What feels good is working at something you believe to be worthy of your work, and then the accolades afterward feel good too.

"Type A" also works for fame, though they usually don't admit it. I certainly did. To some extent, that is logical. I've written about this before, but fame is valuable. It gives you access and respect. It lets you talk to a better quality of people. I mean, if you go to GDC and you're just some shmo, you will talk to the other shmoes. If you're famous, you'll be in the back room with Will Wright and Masaya Matsuura and whoever else you think is cool.

But too often Type A is about avoiding all other aspects of life and seeking solace in work. And the truth is the actual accomplishments don't mean shit. You have certain pride about what you did in the past, but I don't need that any more. I think it mainly satisfies worries about your capabilities.

I used to be a totally shallow Type A. I didn't respect anyone except based on what they had accomplished, or what they were working towards. When I was in college doing physics, I would dream that there would someday be a "Bloom's Law" that kids would learn. Even when I was a complete social & life loser I would take solace in a sense of superiority based on accomplishments or my projected future accomplishments. Yeah, you may be friendly and happy and well adjusted and have all the girls, but some day I'll do something important.

"Type B" is all well and good, but those pleasures are just so temporary and tiring, they don't get you anywhere. There's nothing wrong with that per se, but it doesn't lead to happiness. Happiness comes from building something. Anything. A life. Chasing short term pleasure doesn't build anything, and the memories fade.

Now I see how silly that all is. I actually am not terribly impressed by people's accomplishments, though it does quickly send me a signal of what level I can talk to them on. Hey, you invented the iPod, I can at least talk something intellectually with you. Hey, you haven't done shit, let me just be quiet and roll my eyes at you.

The thing that really impresses me now is basic behavior.

I admire people who can interact with the common man without dumbing themselves down, but not condescending or being pedantic either, that's despicable. It's very rare. To actually talk to the average dolt and enjoy what they have to offer, but without agreeing with the retarded shit that they say (like "it doesn't matter who you vote for, they're all corrupt"). People who can be food snobs but still have a dinner party with non foodies and actually enjoy it and be nice.

I admire people who can do things they suck at and still enjoy it, but without being ironic or making fun of it. Like singing or dancing, any kind of performance, dressing up for halloween, whatever - but not the people who are actually good at it, that's not hard. The people who suck and KNOW they suck and do it anyway, and just enjoy it. That's amazing to me.

I admire people who can address confrontation or just talk directly about issues, but without making it a big deal. Like if someone does something you think is really rude to you, like they ate your food at the work fridge. If you can talk to them without getting all upset or passive aggressive or turning into the "mmkay" Office Space boss, I'm impressed.


06-02-08

Back before cycling became hip, we were a subculture of nerds and enthusiasts and granola types. We would always smile at each other when we saw another cyclist, because we were pretty rare. We would definitely stop and help another cyclist with a flat or other mechanical problem. We were the goofy types that smiled too much and wore backpacks with both straps. Now all the fucking cool kids cycle and have aloof attitude and they're fucking lame.

I stopped to help a guy with a flat yesterday; he didn't need any help but he was so delighted somebody stopped.


06-02-08

Funk's "Hebbian" way of doing the SVD incrementally learns from each element of the residual matrix one by one. The BellKor paper uses my method of stepping rows, and points at this "EM PCA" paper as the source. I don't really get the point of that. You can derive the whole row SVD method very trivially using variational minimization.

You've already found the first N singular vectors and you wish to find the next one. You have a "residual" matrix Rij which is the original matrix minus the SVD so far. Think of the problem as a best fit approximation. The next rank SVD are two vectors Ui and Vj which you want to approximate the remaining residual as well as possible with the outer product Ui*Vj. So you have an error :

E = Sum_ij { Wij * (Rij - Ui*Vj)^2 }

Note that I've added a weight term, Wij, which measures the importance of each element. I won't say more about this but it's a cool thing to have. Also note that the Sum may be sparse, which is the same as having W = 0 for some terms. In particular there may be elements where Rij is unknown. For those we set Wij = 0 and they don't appear in the sum.

Now, we can just use this, but even better is to regularize. Since the sum is usually very sparse, we may have a bad problem with overfitting, which in practice usually means that instead of the U and V being around the right magnitudes they wind up with huge very large magnitude values that oscillate like crazy. To regularize we just add a penalty to the error for large U and V :

E = Sum_ij { Wij * (Rij - UiVj)^2 } + Sum_i alpha * Ui^2 + Sum_j beta * Vj^2

Where alpha and beta are regularization parameters. Their value must be tweaked.

To solve we just take the derivative in Ui and Vj and set the result to zero. It's some trivial algebra and you get :

Ui = Sum_j { Wij Rij Vj } / ( alpha + Sum_j { Wij Vj^2 } )
Vj = Sum_i { Wij Rij Ui } / ( beta + Sum_i { Wij Ui^2 } )

Now we can't just plug these together and solve, but we can do the hacky iteration solution. We have an equation for U only in V, and an equation for V only in U, so we step them over time :

U(t) = func( V(t-1) }
V(t) = func( U(t) }

Note that V is computed from the current U, not the previous one, so it's not a symmetric step. This is actually a very general hacky way to iterate hard equations. I talked about it here a while ago. In fact I mentioned before it's a cool trick for solving hard equations that are only in one variable by introducing a fake 2nd variable.

Now supposedly it's been proven that this iteration for the SVD actually converges and all that. That kind of rigor is beyond me, I'm afraid, but I have crufty experience with this kind of iteration. In practice I've found a few hacky options can help a lot.

Time centered parameter for V :

U(t) = func( V(t-1) }
V(t) = func( lerp(U(t-1),U(t),0.5) }

Incomplete step :

U(t) = lerp( U(t-1), func( V(t-1) ) , frac)
V(t) = lerp( V(t-1), func( U(t) ) , frac )

where frac is some fraction of a full step. This in theory doesn't change convergence but can make you converge must faster and prevent oscillation. I really don't like the way other guys have to cut off their iteration to avoid overfitting. For me, iterations should smoothly take me towards the ideal value, and I should only be cutting them off because I'm close enough and don't want to spend more CPU time getting closer. With some of the Netflix SVD implementations it's a huge hacky tweak parameter to do just the right amount of iteration.

Also note that you need some initial values. You actually only need one, V(0) then you can compute U(0) from that. All zeros is not an okay choice. All ones is not too bad. I usually use all random values in [0,1].

I should add that the BellKor guys do some other heuristic things that seem to improve their SVD. After they compute each pair of singular vectors, they scale down the residual before doing the next pass. This explicitly forces the later singular values to be smaller (something that should be happening automatically, but doesn't always work). It means that you're only modeling a portion of the error in the higher vectors, which turns out to be a good thing because a lot of that error is just noise and you don't want to model the noise.


06-02-08

I put up a new "winmove" in the exe section with left/middle/right options. Very nice on a hotkey. Some day I'll get Windows more amenable to all-keyboard use.


06-02-08

Some construction dudes are changing my windows today (finally, the windows here were horrible). They are surprisingly incompetent. The manager came out months ago to measure the old windows to order the new ones. Today they show up and the have a bunch of windows on the truck of various sizes. They don't remember which one goes where. They just start bringing windows in and then realize they don't fit and go into a tizzy. Of course they've already ripped the old ones out and now they have windows scattered everywhere and are going around measuring everything to try to figure out what fits where. How the fuck can you screw up something so easy? I guess when you're billing by the hour and not by the job you lose some motivation to be organized. Serenity now! Change my point of view! Haha, isn't it cute that monkeys are putting in windows! How adorable!


06-02-08

Maybe I've stumbled on a new way to be okay with humanity. Think of them as pets. Or maybe trained monkeys. You know all the monkey movies from the 60's where they dressed them up as people and had them do human things, like maybe the monkeys are baking a cake and they're mixing and pour the flour everywhere and then they turn on the mixer and it's a huge flour explosion and the monkeys run around and scream a bunch of "hoo hoo ha ha". When I see all the so-called humans behaving so foolishly, it makes me sad and disgusted, but if I think of them as monkeys I can be amused and delighted that they've even managed to do so well. Look, the monkey has managed to put on clothes and walk down the street; look, the monkey is driving! better watch out and be careful with monkeys all around behind the wheel. When the monkey stops right in the middle of the aisle at Trader Joe's I can think "oh, silly monkey, let me move you over".

I think a lot of men think about women this way, though they may not be fully aware of it or admit it.


06-01-08

I kind of want to just snap and lose it and go full on fucking nuts Kramer / Larry David style and say the truth to strangers and act bizarro all the time. It would eliminate all hope of normalcy, but it would make me a happier isolated weirdo.


06-01-08

I thought "King of Kong" was really strong for the first 15 minutes or so, just introducing you to these awesome video game nerd characters. They are of course very familiar people to me; they reminded me a lot of the guys at the Amiga parties I used to go to. One of the really endearing things about true nerds is that they are completely oblivious to just how nerdy and outcast they are. The stars like Walter and Billy and Mr. Awesome are just perfect. After that first 15 minutes though it turns into manipulative docu-shlock which is not interesting and pretty tacky.

[semi spoiler alert]

After the movie, around the time it was coming out, Billy finally played in public and retook the record. I have the feeling he had that up his sleeve all along but he didn't want to do it for the movie people. Or he had some master plan to make a really dramatic performance but it somehow went awry.

I also wonder where the Japanese are. It's unbelievable to me that so many old American guys hold the records, and not a bunch of Japanese teenagers.


06-01-08

Video art project : take images of horrible things and replace the audio with a sitcom laugh track; perhaps include the sitcom audio from stuff like Home Improvement or "Two and a Half Men" ; that is, completely innane chauvinist/misogynist jokes with that generic canned laugh track. Set to video of someone being brutally beaten or raped.


06-01-08

Sean Anderson's Bit Hacks page is full of bit hacking wackiness. An awful lot of it is not actually useful on modern CPU's, but it's still quite intriguing. I somehow never became aware of the modulo division as an accumulator trick.

MIT HAKMEM from 1972 contains lots of weird little hacks and tricks and is quite an entertaining read, because you can see followup responses of people figuring out better ways or the math behind it. For example, check out Item 149, then the next few.

Won sent me some more cool similar stuff :

The Aggregate "Magic" algorithms; this stuff is mostly pretty weak, but something might be useful there. Not related to Eberly's Magic Software which is more better.

Doing divide with multiply detailed page on how to do it correctly. This is something I hack frequently and get slightly wrong.


06-01-08

You would think that having data on the computer would make it easier to work with. In some ways that's true (mainly search) but mostly it's not. There are many superior things about having data in the real world, mainly having to do with the detailed power of spatial location. Spatial location is not just about filing. Computers do filing well, but how I collate and place things in the real world contains loads of extra information.

I love printing out papers to read. Being able to write notes on the paper is a huge benefit. In theory you should be able to do that on the computer, but even if that software was decent and ubiquitous and uniform, it still wouldn't be the same because writing by hand where you can make arrows and underline and circle things is so superior.

Something huge that's missing is you can keep important things open, or queued. You can put a post-it on a page and have that tab hanging out. You can put that paper on top of the pile so you see it in the corner of your eye all the time. That's of huge value - it reminds you to come back to it, it keeps it in your brain, you don't lose it in the mess of your computer. It can be spread out on a tricky page in the corner of your desk for weeks where you keep scanning it occasionally. You can keep stacks of papers to read together and on top of your pile.

You can also collate and bundle different types of data. Like some paper, some other paper, some pages of my own notes, paperclipped together. It forms a bundle of data and action items that is useful.

One of the key things is that these bundles are dynamic. We see that perhaps even more so with CDs. Yeah you have your filing, which is alphabetic or whatever, but you form little temporary bundles. There's the pile next your CD player, which is partly a history but also maybe stuff you took out to listen to and didn't play. Then maybe there are piles scattered around, a cluster of jazz you took out cuz you wanted that one night, or a cluster of your favorite stuff.

These are all things we'd like on the computer.


06-01-08

Nice review of ear plugs . I currently use the Leight plugs which are alright. They do wonders for my ability to sleep here with the street noise. On the minus side, I have started to have a recurring dream that someone has crept into my apartment and I can't hear them at all because of the plugs, and then I suddenly wake up and they're standing right next to my bed just staring at me.


05-30-08

The movie "Bad Boy Bubby" was pretty great. I actually picked it up because of Mark on Top Chef who I found an amusing character. The movie starts out like it's going to just batter the viewer with misery, like a Von Trier or Requim for a Dream or something, but fortunately it swerves off that course quickly and becomes bizarre and sickly funny. Very few movies actually live up to the label "dark comedy", usually it just means they're trying really hard to be quirky and are neither dark nor comedic, but this does. Also, lol - Nick Cave ?

"Blindness" the novel didn't do much for me. It was fine I guess but the characters were weak and nothing at all surprising happened and several bits were extremely unrealistic.


05-30-08

I guess you all probably know about the game "Maple Story". It's a Korean MMO that's now global. It's free to play, but you pay real money to buy gear for your character. Apparently they've made around $400 M from it now. Holy macaroni. Somehow I stumbled on some youtube vid of a low dex hermit , of a guy who spent $5-6k on gear; apparently from the comments that's semi normal. (btw wasn't actually that video, I can't find the original one I stumbled on, apparently there are a lot of vids on youtube of low dex hermits lol).


05-30-08

It really bothers me that mkdir requires quotes. If you type "mkdir hello world", it makes two dirs, named "hello" and "world". I never ever want that. I guess I have to make my own version that always makes one dir using all the arguments. Similarly I'd like most of my copy and move commands to quote for me. Quoting is annoying. In fact I hate fucking spaces in file names, stop it! But like if you type "copy hello world c:\" it should figure out that "hello world" is an existing dir and you don't have to quote it. Of course it should also check for any ambiguity and complain if there is ambiguity, that way you can gaurantee no mistakes.


05-29-08

"Army of Shadows" was magnificent. The tense acting and pacing, you can feel the dedication and sincerity and hard will of the resistance fighters. The cinematography makes the movie, the stark montage, the desolate scenery, lit in cold harsh blue, lots of natural lighting, constant winter.

I do think the stories of the French Resistance are a bit ridiculous in general. The resistance really didn't do much of anything, and the obsession of the French with the resistance is an obvious attempt to glorify the one redeeming aspect of their wartime experience. It would be interesting to have a movie that combines the resistance, the racism of the ordinary French, the plight of the jews in France, the life of collaborators, how the non-collaborators felt about their compatriots, the political maneuvering of DeGaulle to create a myth and manufacture power for himself. Hard story to tell. It would have to be a mini series.

Anyway it got me excited so I pushed up some more French movies in my Netflix queue and made myself a Cassoulet and drank some French red. Bleck French red is so gross. It's fine with food because it's very bland which I guess is the idea.

I'm still convinced that I could make a super-premium wine by blending some cheap wines. I don't really understand why there aren't more cheap blended wines - winemakers could easily do this themselves and balance out the strengths and weaknesses of various bottles. You could easily take something like the Bear's Lair Cab which has nice pepper and tannin, and blend it with the Coppola Syrah which has a nice round mouthfeel and good initial fruit. I'd like to get a little leather and earth in there, maybe I could find a cheap Grenache. I think the Smoking Loon Cab had a decent earthy profile. The only problem is I have to drink 3 bottles worth :( I should get a vacuum resealer.

For some reason people seem to think "thin", "dry", and "minerally" are positive adjectives for wine. I want none of those qualities in my wine.


05-27-08

WTF of course cloned food is safe to eat. That's a retarded objection. Labelling food as cloned or not or whatever is irrelevent. It's not the issue at all, it's a distraction. The problem with cloning is the reduction of biodiversity. It's already a problem among many of our domestic species just due to breeding, and if ranchers are allowed to just clone their best individuals to make whole herds that are genetically identical, it sets us up for a massive food supply catastrophe.

Now, if we had a genetic databank of all the current bovine diversity (though it's a shame we're too late, we've already fucked up cows pretty bad) then we could rest somewhat more easily, since if there is a disaster we would still have those genes in the bank.


05-27-08

Don't walk away from the stove when you're reducing balsamic vinegar.

Don't try to make hard cuts in flip flops.


05-27-08

Ishkur's Guide to Electronic Music SWF is super awesome. It's almost like a joke making fun of electronic music for all its inscrutable and vague labels, but I guess it's actually serious.

It doesn't really answer many of my questions though. Like WTF does "deep house" mean exactly? And how do you classify some of the newer electro that certainly doesn't have a steady beet like traditional dance music, but also doesn't really fit with what we normally call "breakbeat" ? Stuff like Hot Chip or Junior Boys, what is that?


05-26-08

Recent music I've listened to :

"If I were a Carpenter" - nothing good but the Sonic Youth song. And IMO not even the best Sonic Youth cover song; I love "Get into the groove(y)".

"The Presets" - mmm, kind of a more generic clubby sound version of Cut Copy. Just not super great.

Cut Copy's "So Cosmic" mix - mmm, more house/dancey than their stuff normally is, it's nice to have a smooth mix, I definitely could see listening to this for workout music or something like that.

The Album Leaf - Into the Blue Again - meh, I'm kind of over the Album Leaf. I really hate all the songs with singing, they need to really not sing, and too many of the songs are just boring new agey piano shit. Some of the early EP's were nice, it's just hard to listen to because it's so inconsistent.

St. Vincent "Marry Me" - yuck. Lots of layers and complication that leads to nowhere. Compare to someone who does this sound well like Beirut or Sufjan and this is just amateur.

Destroyer - "Your Blues" and "Destroyers Rubies" - mmmm.. I really like his sound and the music, but I just don't like his voice. May have to give this another listen to try again.

Final Fantasy - "Has a good home" - this is the album before "He Poos Clouds" ; not quite as good, but still nice. I kind of wish he wouldn't sign and just do instrumental cuz his voice sucks balls, but the music is so great it's still listenable.

Gomez , Glitch Mob - WTF, why did I get these? ass.

Efterklang - atmospheric, but too glitchy and annoying for background music. Me no likey. I kind of put M83 and Caribou and Hot Chip all in this category too. I just don't know when I would want to listen to this. It's too jarring for background but not energetic enough for foreground.

Ben Watt's "Lazy Dog" - blech, gay house music. I really like Buzzin Fly, but a lot of the Ben Watt CD's are awful.

Heiroglyphics - seems like some pretty sweet old school style rap; reminds me of Jurassic 5.

Simian Mobile Disco - there are a couple really great songs on "ADSR" and a few stinkers; there are also a ton of mix tapes made by these guys available online that are pretty sweet. I don't actually like the way they mix songs together, they tend to put big breaks in between the tracks, it's smooth but not continuous. Still their song selections and remixes are really good. It's sort of dirty electro/dance music.

Hercules and Love Affair - WTF why do people like this? Super gay disco house. I actually like the guy's weird voice but the music is totally uninspired.

Band of Horses - digging this. Emo country rockish. Reminds me a bit of My Morning Jacket.

MGMT "Oracular Spectacular" - hipster operatic rock. Pretty good, I dig it.

VHS or Beta - slightly more punk cousin of MGMT. Also dig it. The songwriting is a little bit retarded over simple and they rely a bit too much on the cool throwback sound ala early 2000's cute boy bands like the Strokes.

Cut Copy - really fun trashy electro. Actually really reminds me of old Depeche Mode.

Peter Bjorn & John - "Writer's Block" - hmmm, I guess I missed this, I listened to Young Folks when it came out of course and just figured they were a one hit wonder and never listened to the rest of the album, but it's actually pretty good.


05-26-08

I'm really annoyed by the lack of decent standard MP3 encoding. Lots of the torrents are in fucking 320 which is so unnecessary and huge. Then you get the retarded ones in 128 which is not good enough. 192 is okay, but really everything should be in VBR, with some kind of good settings for VBR (which again is a big cluster fuck because there aren't good regular standards for VBR settings). For disk storage you want something that sounds at least as good as 192 but uses minimal bits, and you don't care if encoding takes a bit longer and the bit rate might be highly variable.

Of course we did (do) have the same problem with JPEG. Exposing technical parameters to the average user is just dumb. The defaults need to be better and exposed in ways that are more intuitive. I don't blame the user for doing it wrong when it's exposed so badly. I always had the same philosophy when writing tools in games; if the coders expose the control in a really awful nonintuitive way or with broken default values, it's the coders fault when the content is broken.

The MPEG group (redundant like Mount Fuji I know) is generally very smart about defining the decoding standard and not defining the encoder. That allows lots of room for improvement in the future, because they're smart about making the format pretty flexible so future better encoders can change the code stream enough, and compatible decoders just keep working. The problem is that you rely on the 3rd party software makers to make decent encoders, and the software makers don't, and the user doesn't really know or care.


05-26-08

Damnit, I really want one of the Seattle jobs, but I want to live in SF. And no I don't want to telecommute, I want to be with people in an office. The quandary has sort of paralyzed me.

When faced with really tough decisions where there's no obvious best answer, I tend to just do nothing. I think that's a mistake. There was some dumb fucking shallow article in the NYT recently about a study of soccer goalies, you know how soccer goalies tend to just guess a side and dive, the study found they would make more saves if they didn't guess and just stayed put. The NYT articles tried to extrapolate that to general life decisions, but that's entirely foolish and not analogous. In life when facing a decision with no clear best choice it's usually best to just go ahead and pick one. Doing something is better than doing nothing because at least it moves you in some direction. If nothing else it provides you with powerful psychological benefits : 1. you stop debating that decision and just move on to other thoughts, and feel good that you made a choice, and 2. it puts you in a mind set of rapidly deciding and acting, which gives you momentum for moving forward, whereas not deciding makes you feel static and carries into the rest of your life.


05-26-08

I haven't actually played on a Wii Fit yet but it sure looks retarded.

Several years ago I thought of making some PC games that work with the DDR Pad as simple exercise games, stuff like the old Track & Field arcade game but where you actually run on the pad or whatever. I thought up a few game designs (such as Simon Says), and came to the conclusion that the best possible exercise game on a DDR Pad is DDR.


05-26-08

After reading some semi-scary stuff around the web I've decided to stop taking my Creatine supplement. Facts about Creatine :

1. Most people consider it completely safe in reasonable quantities, with cycling.

2. Creatine supplementation definitely improves athletic performance and muscle growth in people who have a creatine shortage for some reason, either due to disease or due to creatine-poor diets, such as vegetarians.

3. Creatine definitely increases the size of muscles due to muscle tissue water retention; most people who take creatine see this effect and believe creatine has "worked" because of it. Of course for most people, merely looking strong is the goal.

4. Modern diets rich in red meat provide dietary creatine far in excess of what the body needs. Even without creatine supplementation we have far more than ancient man.

5. There is no scientific evidence that creatine supplementation in healthy people actually increases athletic performance, though this is widely accepted in the weight lifting community. (note that lack of evidence here doesn't mean it's not true, since sport performance studies are uniformly poor).

6. Cyclists and other weight-sensitive athletes actually think creatine is contra-indicated because the weight gain due to water retention hurts performance.


05-24-08

I'm thinking about just duct taping over the whole exposed end of my chopped keyboard. That would emphasize the hacky DIY nature of the chop. I chopped off the end of the numpad to use to close the end, but of course that doesn't work because the keyboard tapers, so the end piece is a lot smaller than the exposed hole which is a bit goofy. Plus I have to figure out how to glue plastic. I think maybe silicone sealer is the way to go.

I put some pics of the keyboard on Flickr . Chopping off the numpad has made me wish the arrows were gone too. Not completely gone, but like moved up above the backspace key, so that whole side area could be gone.


05-24-08

I made the Molten Chocolate Cake Recipe from Joy of Baking the other day. It kind of sucks. I mean it's okay, but it's not what I consider a Molten Choco Cake at all, it's really just a soufflay. A proper Molten Chocolate Cake should be dense and rich, cooked crispy on the outside, dense and rich, and then almost liquid (but not quite) in the middle. It shouldn't be dry or tough on the edges, which is quite common in restaurants.

I've never really found a great Molten Choco Cake recipe, but you get a pretty good result just by making a good flourless brownie recipe and cooking it too hot in a small ramekin for a shorter time. Cook at 400 instead of the regular 350, and around 15 minutes in a typical ramekin.

BTW I like Jacques Pepin's brownie recipe from Fast Food My Way, but he has an error. He says to toast the hazelnuts for 5 minutes at 350. That produces a semi-raw hazelnut which is quite disgusting. A better hazelnut roast is 13-14 minutes at 325. You may need to experiment a bit with your oven because nuts go from perfectly toasted to burned very quickly. Don't worry about the nuts roasting further inside the brownie - they won't. In general in the majority of baking recipes you want to go ahead and use fully roasted nuts in the batter, don't use raw nuts, because inside the batter the nuts will not cook much at all. With something like a quick bread you should use nuts that are 75% roasted.

I think the soufflay style actually is authentic with the original "molten chocolate cake", that's just now what I want. Also there is a whole world of tweaking I've never explored. If you start with any soufflay style recipe, you can make it more or less dense by tweaking what you do with the egg whites. At one extreme you make proper stiff peaks and fold it gently, at the other extreme you just stir in the liquid egg whites with no beating. In between you could do things like whisk just to soft peaks and stir it in without folding.


05-24-08

Any place with "Ultra Lounge" in the name will be ridiculously lame, full of douchebags, and probably a velvet rope to create the illusion that anyone would ever care about getting in.

BTW "douchebag" actually looks much worse if you put a space in it, like "douche bag".


05-24-08

The South Yuba BLM Camp turned out to be really perfect. It's not exactly far from civilization, it's cabin country all around there, and Nevada City / Grass Valley has turned into a big suburban nasty town, but the camp is tucked back enough that you can feel all alone. There was hardly anyone else there, and the sites are well separated and the foliage is dense so we couldn't even see our neighbors, which is a wonderful treat. It was perfectly silent at night. I imagine that on a week day away from Memorial day you might be the only person there.

It's about a mile hike down to the river from camp, which is a good thing because it means nobody is at the river. If you scamper about 500 feet upstream from the access point there are some nice swimming holes, and you have privacy so you can get naked and freeze your balls off in the snow melt water. It's a nice mix of pines and deciduous trees with plenty of understory.

The major well known swimming holes (such as Edward's Crossing, Bridgeport, Purdon Crossing) are crowded with locals who park and walk the few feet to the water. But like everywhere, if you just hike a mile from the parking you can be all alone. People are lame and lazy, and that's to my advantage. I'm guessing that if you do the trail from Malakoff Diggins down Humbug Creek to that river access it's probably deserted there as well since that's like a 4 mile hike. (btw Malakoff Diggins is a really good name for a hobbit).

The next day we went down to Bridgeport on the way out to take a different route. We passed an original Wells Fargo office from 1857 when this was gold country. There's lots of cool old gold-rush historical crap around here if you're into that. The river at Bridgeport is much hotter and drier, it's brown grassland a lot like San Luis Obispo, or so much of California. It's also more crowded with people there, including some loud mobs of local teenagers.

We did get to watch two youngsters have sex. The trail along the river is high above the water with occasional access paths. The couple was lying on the sand at river's edge and we were on the trail above hiking along. I saw the somewhat chubby bikini clad girl crawl on top of him and bend over his swim trunks; her head started bobbing up and down. I wasn't sure what was going on so I stopped to have a look and watched as she sat up, still straddling him, and scooted up to align their hips. She started bouncing up and down while gyrating her hips like a tilted spinning top, making her jiggly butt bounce vigorously. And then it was over just as it was getting interesting.

The town of Wildwood is one of the more bizarre things I've ever seen. It's in the middle of fucking nowhere, right next to the town of "Rough and Ready" (which pretty much described my condition when we passed there). It's like 20 miles from the freeway and 50 miles from Sacramento, with huge open spaces in between, and yet it's built like a suburb. There are rows of tract houses packed together, and there's a fucking gated community with a guard. WTF - who exactly are you guarding from? I guess there is like one row of older houses inhabited but the actual country people who used to live out here before this bizarre development got built, so the gate is to make damn sure they never come in.

Even though it's really good, it's not exactly my camping-swimming fantasy. I kind of suspect that fantasy cannot be fulfilled in the Sierra Nevada, since all the remote hike-in streams are snow melt and really only great swimming maybe 1 week out of the year at the end of August. South Cal has the warmer weather, but it's so dry there are basically zero swimmable rivers in the whole of Southern California outside of the Sierra. (I've been to the exceptions : Red Rock, China Hole, Big Sur River, Arroyo Seco). I think maybe somewhere in Northern Cal is actually a better bet, because it gets so much more rain up there, you can find rivers outside of the high mountains. Maybe somewhere in the Shasta-Lassen area, or in the Mendocino Forest area (that's not the same as the Mendocino coast).


05-21-08

All this reading about camping options has given me fantasies of living closer to the Sierra. Maybe some place like Placerville or Grass Valley that's in the foothills so it's warmer. Then you can easily drive up to the mountains any day and camp or hike. You could get a 4x4 and drive the dirt fire roads that nobody ever takes. You can find all the secret camp spots that the tourists don't know and be all alone. You could have your truck loaded with gear all the time so you don't have to pack and unpack, you just hop in and go. Maybe I'd get a dog. And learn to fish. And in the National Forest you don't need to use a campground you can just camp anywhere, so I could really learn super secret spots and remember them on my GPS and find swimming holes on the rivers and carry out my tent.

It would be awesome to do while I'm still young, when I can still move and enjoy it. But then I also need to get back to work while I'm still young. And I can't really work and live at the same time.


05-21-08

Yay, I finally did this thing to Chop your numpad off your keyboard . It pretty much went smoothly, some little things :

When I first took the screws out, the keyboard seemed to be stuck together and I couldn't get it apart and was kind of stumped. I was just about to try to force it apart when I noticed the stickers on the back of the keyboard. Yep, there are screws hidden under the stickers. You can find them just by feeling around on the stickers for a spot with no plastic - it's a pit with a screw in it.

When I read that site for some reason I thought that he was tucking the circuit board back in the keyboard. He's not, he's tucking it UNDER the keyboard so it's just exposed to the desktop. That kind of sucks. I tried tucking it back inside, but that's just not possible.

On a related note - the numpad circuit has not been disabled! That circuitry tucked under the keyboard is still live and pressure sensitive! That means if you push on the body of the keyboard along that edge it will push numpad buttons which is seriously whack. I need to get some kind of layer of insulating material between the two layers of circuitry. I'm not sure what would be best, maybe just some paper.

If I was hot shit I would cut that damn exposed circuit sheet off and connect the broken loops.

Also something to be aware of - the feet that hold up the keyboard are in the numpad area. Now I personally hate those flip-up feet that tip the keyboard forward (and they're very bad for you, if anything the keyboard should be tipped BACK not forward), but if you like them you're fucked. The cut also removes the little rubber feet, which means the keyboard is resting right on the folded circuits, and also means the left side that still has the feet is higher than the right. I need to buy some little adhesive rubber feet and put them on both sides to even it out.

I cut my keyboard with my jig saw. It worked fine. Make sure to wear protective eye wear because plastic bits fly everywhere.

I'm considering cutting the outside edge off the numpad and superglueing it to my chopped keyboard so that I get a nice sealed edge. Seems like it would be hard to make the interface good enough. Probably some silicon or something would be better than super glue since the two sides won't mate very well.


05-20-08

I just saw a girl biking down market in a short skirt with garters and thigh highs. Yowza! It was pretty ridiculously hot, combining two of my favorite things, but it would've been even hotter if she was a half competent cyclist.

BTW FYI tiny hard saddles are totally correct for racing bikes but don't really make a ton of sense for city riding. For one thing, the reason they have no padding is because it's assumed that you will wear bike shorts that have the padding built into the shorts. If you are doing city riding in street clothes, you should have a saddle with a bit of padding. This is one of those cases where people think they are cool for using the more "hard core" component without understanding its function and appropriate use.


05-20-08

The new Death Cab is alright. I'm not really a fan anymore, but it's definitely their best album since The Photo Album. Transatlantacism and Plans both sucked IMO.


05-20-08

Bah. It's impossible to find decent information about camping/hiking. I've been googling and reading books and all the information is fucking shitty. It's too dry factual and too disorganized. What you want is qualitative editorial descriptions of the best places, some idea of what it's actually like there, not shit like "16 sites, piped water". I can get that fucking lame information from the US government web sites, I don't need books full of that shit. Books should have pictures, descriptions of the area, perhaps some info about nearby sights & trails. Books also don't need to list all 500 fucking camp sites in the state, they should just list 100 of the best. Also every site that does raw numeric ratings is lame. The rating should be on different criteria, like "good for RV campers" or "good hiking nearby" or "isolated / scenic".

The "definitive" Stienstra books are not great. The basic factual information I can get online. His editorial information is primarily about the fishing, which seems to be all he cares about, and I could give a rat's ass about how good the fishing is. He also rates highly places which I'm pretty sure I would hate, like places with boat ramps on reservoirs - those tend to be full of noisy douchebags and the camp sites generally don't feel wild at all.

Anyway I've narrowed it down to 4 choices. I'm somewhat limited because my car can't handle rough roads at all and it's still cold up high.

Pi Pi in El Dorado, on the Cosumnes river, near Grizzly Flat.

Moore Creek, on the Mokelumne river, further up the 88, near Salt Springs Reservoir.

South Yuba BLM Camp, on the South Fork of the Yuba River of course, near Nevada City & Malakoff Diggins. Edwards Crossing is a very popular and heavily used swimming hole here.

Fiddle Creek or Indian Valley on the North Yuba River, near Downieville.


05-19-08

I've never really been camping in the Sierra much. I've been to like Yosemite and Sequioa and King's Canyon, but apparently there's tons of great rustic camping out in the national forests. I guess it's a bit cold still in the high Sierra, the good time is more like July-August.

One of the prime areas I've spotted is just north of Truckee, around the 89-49 intersection. Apparently off "Gold Lake Hwy" there's tons of rustic camping if you have a 4x4, because lots of spots are accessible only on very rough dirt roads. A bit south of there Faucherie Lake looks amazing. Below Tahoe along the 88 is supposed to be good too, around the Shealor Lakes. I guess most of this is Emmigrant Wilderness and Tahoe National Forest, and then below that is Stanislaus National Forest.

I think we're gonna go camp this week, maybe somewhere around there but in the lower Sierra where it will be a bit warmer.


05-19-08

I have a little bit of a bingeing problem. It happens sometimes with booze, but it's not that I have an alcohol problem, I have an *everything* problem. Certainly chocolate, also almonds, bacon, pornography, steak. Anything self indulgent and bad for me, I can't keep in my house. 99% of the time I have control and don't over-indulge, but every once in a while something releases in me and I will quickly consume absolutely bad in my house. Usually it's at night after dinner when I'm bored. I don't think it even necessarilly has to do with depression, I've done it some times after very good days.

Anyway, it's something I know about myself and I can manage it by just never having those things in my house in significant quantities, so I can't ever do too much damage to myself. When I'm in that bad state, if I have to make the effort of actually going to the store to self-destruct I can usually control that and convince myself not to.

It is a pain in the ass, though. It means I can never have a well stocked bar. I can only buy booze in small quantities so that I don't have a big stock on hand. The same goes for chocolate, I can never buy bulk chocolate, and in fact I can't even keep baking chocolate in my pantry because I'll bake something bad. I have go out and buy supplies each time I want to bake something.

Lately I've picked up a problem with almonds. I'd like to be able to eat nuts as part of my diet, they're very good for you in reasonable quantities, but lately if I buy almonds I eat the whole bag in a day or two which is not a reasonable quantity.

Maybe I could get one of those machines for old people with Alzheimers where you put in the week's worth of drugs then it locks and you get fed your daily ration on a timer.

I have a lot of sympathy for people with mental flaws. However, I do not have sympathy for people who don't try to control or minimize their mental flaws. Even if you can't actually fix what's broken around you there are always ways to minimize the amount of damage the flaw can do.


05-19-08

The last few days have been a near ideal course of what I like to do with my time - hiking, going to the beach, lying in the sun, listening to new music, lots of great sex, dancing, good food, barbecue, being with a great girl - what more could I want? It's been nice, but today rolls around and those days are in the past and I'm faced with the bleak expanse of hours until bed time just like every other day.

My birthday's coming up soon. I fucking hate birthdays, I wish I didn't have one. They provide a painful annual reminder of how shitty my life is and how I have no friends and couldn't throw a party if my life depended on it. Thanks calendar! I managed to push that pain out of my mind over the last 11 months, lucky for me this mandatory celebration has rolled around once again to bring back this particular sorrow.


05-19-08

I fixed some more issues in chuksh with moving files using wild patterns. All that code is so old and gross; I wrote that stuff when I was in college and some of it is badly broken. I did do a good thing making wild patterns an opaque type, but I failed to make correct standard conversions from wild specs to strings, which means I incorrectly convert literal reserved chars to wilds, and then also don't back convert right either. I keep just patching the problems because I don't want to have to rewrite all that stuff in my more modern code base, but someday I'm going to have to revisit all that. At the moment I'm somewhat scared that there could be ways to accidentally lose some files (not sure if that's actually possible or not).

I talked to Ignacio a bit about the problems with tangent spaces. Ignacio wrote a while ago about how the standard seam break thing that people do for flipped tangents is BS. I actually feel that the whole way that has become standard for us to make tangent spaces is very primitive. The standard way is to use the UV mapping as a handy way of getting a continuous direction field on your mesh. That is indeed convenient since you already have a UV mapping, but it may not be the most natural way to get good tangent spaces. For one thing, there's a big difference - the tangent spaces are constrained by the normals on each vertex, and the UV mapping was made without consideration of those normals. This is of course why you get tangent space flips and degeneracies even with decent UV mappings such as LSCM.

Using the UV mapping is sort of a quick hack to get tangent spaces, and it works okay, but really we should just be optimizing the tangent spaces directly. Your vertex normals are a constraint so each tangent space has 1 DOF, a rotation angle of the tangent around the normal. You want to optimize the tangent spaces to be continuous across the surface of each chart on the mesh, and specifically constrained to have no flips or degeneracies.

I haven't thought about this a whole lot yet, but I did find that Bruno Levy et.al. have a new paper out that's basically on this topic : N-Symmetry Direction Field Design


05-19-08

I know some of you use an "autoadjuster" screen for your LCD like I do. I have long just had it in my Startup, but that often doesn't work because the monitor will have already done its autoadjust at the log on screen. I thought with Windows XP you couldn't change the log on wallpaper, but of course you can. The trick is to first turn off the "Welcome" screen, so you have a "classic" style log in, then you can change the log in wallpaper thusly .

BTW this is my autoadjuster bmp (zip) . You need to paste that into an image the size of the native resolution of your LCD. You don't want any scaling of the image, the one pixel black and white grid must be preserved.

The autoadjuster image helps your LCD hardware correctly self-adjust when you're driving the LCD with an analog (VGA) signal. Obviously you should be using a digital signal and most of you are now, but some of us are stuck in the shitty past. If you autoadjust without this image up, it won't adjust quite right and if you display the black and white grid, you will see it shimmer, or even worse you may see big lines move through it. If you let it autoadjust with the grid up, you should get a pretty nice crisp image.


05-18-08

I'm trying to find new funny TV so I picked up "Spaced" which came highly recommended. Yikes. Just because it's British doesn't mean it's smart or clever. It's sort of on the level of "How I met your mother" or "My name is Earl". Every "funny" moment has me sarcastically thinking "oh wow, what a clever funny twist, I NEVER saw that coming, oh how novel, his idea for how to be more productive is to smoke some pot, ha". I guess I shouldn't be surprised, since I find all of Simon Pegg's stuff to be patently unfunny; it's very hammy broad comedy, like the unfunny Adam Sandler or Ben Stiller.


05-18-08

Egg white omelette = bad people.


05-18-08

The name "super Tuscan" bothers me.

Old drunk women who hang out in groups and laugh loudly and are outspoken and aggressive really terrify and repulse me. I have waking nightmares about them, kind of similar to evil clown nightmares. I think they're a lot like clowns, seemingly jovial, grossly overly jovial, yet creepy and sinister.


05-18-08

Many of my friends have often said to me (speaking of a girlfriend), "she's hot, you should hang on to her". Umm, no. Hotness is only one of the many basic qualifying traits I expect in a girl. Why would I ever be with a girl that's not hot? Or sweet, or intelligent? These are basic qualifying characteristics, not anything exceptional.

Hot, smart, competent, sweet - that's just the baseline. Exceptional traits are things like : wry subtle wit, sexy dancer, good taste in music, good taste in TV comedy, disdain for the common man, liberal politics, good hiker, willing frisbee partner, great at sex, strong enough to defy my negativity, and so on.


05-18-08

The place I want to vacation has a fresh water swimming hole, with clear water and a waterfall running in to it, hot weather, and a good rock or sandy bank to lounge in the sun. It should be a bit of a trek to get to, so that it's mostly deserted and I can swim naked by myself. That's it. Seems easy. But how the fuck do you find that? There must be hundreds of them in the world, but I don't know where they are.

I could give a fuck about historical crap or famous sites or checking the wonders of the world off my list. I don't give a rats ass. I just want my little idyllic swimming hole to myself. I'll bring my own booze and music and food and have a little happy party.

I have found some sites for the US now : Waterfalls West , WayMarking swimming holes , Swimming Holes dot info

I suppose that on this issue I am becoming one those weird old people who become overly obsessed with some obscure pleasure. I often mocked these strange oldsters when I was young because it is pretty ridiculous and silly. They pick some certain thing, for many it's something generic and uncreative like golf, for others it's swing dancing where they get all the outfits and practice all the time, or maybe it's wine varietals, and they just spend way too much time on that one thing way beyond what's reasonable or pleasurable for a sane person. Well, the truth is that as you get older you realize that most things in life just fucking suck balls, and when you find something that you like, you just want to do that thing a lot. But as you do it more you become more picky about it, so you want to do it better, then you want to do it perfectly, so you gradually become this bizarre obsessed person who spends months preparing for this little event that seems like no big deal to a sane young person.


05-18-08

I have never done a kegstand, nor have I ever even been to a party where a kegstand was done. I think "kegstand" is one of those critical dividing lines; many people don't even know what a "keg stand" is, and other people thing it's lame and sad that I've never seen one.


05-18-08

Unlikely rare events are often treated as if they are completely random flukes and the damage from them can not be blamed on anyone. This goes from things like terrorist attacks to famines, droughts, financial bubbles, poisonous medicines, contaminated food, earthquakes, cyclones, bridge collapses, etc. In fact you can estimate the likelihood of most of these somewhat accurately, and they should be planned for, and reasonable steps taken to prepare for handling them or preventing them.

Government has grossly failed us in this. Obviously this US government has failed miserably, but so have many others around the world and so have many previous US governments.


05-18-08

A lot of newspaper articles about these financial bail-outs sort of miss the point. The current Fed & UK programs to exchange bad paper for good or to offer emergency credit and super low rates is of course in fact a direct subsidy worth quite a bit. But if you just look at the $ value of that subsidy you're missing the real subsidy, which is the gaurantee of help when you're in trouble, which allows you to take more risks all the time. It's a massive EV boost throughout the lifetime of the bank, not just in these rare bad times, but in the good times too.

Now having the government as a backup insurer is not necessarilly a bad thing. It would be very expensive for companies to properly insure themselves if they had to, or they would have to take much smaller risks. Imagine if when a corporation went bankrupt the board & CEO had to personally cover the debt - they would become much more cautious, which would hurt the economy as a whole. What is irksome is that the large corporations enjoy this special benefit that nobody else gets.


05-18-08

Recycling bins have a huge value way beyond just their merit in reducing waste. Some analysts contend that the actual recycling is not a very good use of human time and money, that we don't reduce the land fill enough and we spend tons of energy doing the recycling. Regardless of that, I think it's very valuable because it introduces a daily awareness of conservation to people's lives. People don't think about things unless they are in direct contact with them every day. Everyone in SF complains about the homeless, but if they were on our streets where we seem them every day nobody would think about them at all. We have a disastrous prison situation, but nobody cares because it's hidden away. Recycling is a perfect thing because it's not too onerous, people don't mind doing it too much, so it gets into their daily routine and they start thinking about conservation, and then that extends into other behavior, it becomes connected to consuming less, not buying water bottles, getting a more efficient car, etc. Once something is in our lives we can become pleasantly obsessed with it.

This model is very good in general for getting people active & caring about issues. If you give them some very small easy way to get involved in something in their daily lives, in an activity that they do anyway, then they will accept it and make it part of their routine and grow to care about it.


05-17-08

I just found this site randomly, it's so AWESOME-ly bad : Ismael Rodriguez ; check out the links on the side too. OMG. It's so perfect it must be fake, but I dunno, I can pretend it's hillariously real. Wow.


05-17-08

We've had a sick heat wave recently. Of course no one has AC so the city's been going a bit nuts. Thursday we went to Ocean beach. Meh, Ocean Beach kind of sucks. I don't recommend it to anyone. Friday we went to East Beach. East Beach is right off Crissy Field, and while of course it's no LA beach and the water is freezing, it is actually an amazing place. It's on the bay side, facing Marin, so you have perfect views of the Golden Gate Bridge, Alcatraz, the Palace of Fine Arts (aka the Exploratorium), and back to the city. It's lovely just lying in the nice sand there and listening to the gentle bay waves and checking out the view - it's one of the few beaches in SF that's actually worth going to, because it has what SF is actually good for. Unfortunately, hot clear days are pretty rare over in that part of the city.

Friday night was boiling hot in my apartment so we went out and sat in Dolores park; it was still toasty, and we admired that great night time view of the city from "Dolores Beach". There were a ton of people in the park, lots drinking and hanging out, probably a few hundred people all trying to get out of the heat. Around 11 or something a whole bunch of cop cars showed up and chased everyone out of the park. The big mass of hipsters down below put up some resistance to the police but eventually got chased off too.


05-17-08

God damn I wish I had a parking spot, I feel stuck at home all the time because I don't want to give up my spot on the street, especially on a nice Saturday when a mob will descend on the park.


05-15-08

When people close to me are down, it really brings me down. I wish I could cheer them up, sometimes I try a little bit, but when I try to be up and they just go "bleck, fuck you" I get discouraged and give up. It's my own problem, my fear of rejection, my insecurity, I should be able to take the first rebuff and just keep trying and eventually it will work, but I can't, and it puts me in the pits, and the pits lasts for days with me.

In general in life I'm torn about trying to fight my natural self, or to accomodate it and tailor my life to make it work. eg. knowing that little rejections can send me into 3 days of depression, should I just put myself out anyway and try to fight my immature natural tendancy and be better, or should I just accept that that's the way I am, and do what I need to do in order to avoid putting myself in the bad situation in the first place.


05-15-08

Garam Masala is one of those magic spices you can stick in anything and it makes it more interesting. For example, spiced nuts : cinammon, chile powder, salt, sugar, garam masala!

I'm not totally happy with my spiced nuts method. It's basically roast nuts, heat 2 tbsp sugar + water in a pan until liquid, toss in nuts and quickly coat, toss on spices. That works fine but I don't like how sugary they are, but if you use less sugar it's not enough to coat evenly and the spice doesn't stick evenly.

There are alternative methods. One is the egg white coating method to get stuff to stick. That sounds weird and gross. Another is the butter coating method. I think that kind of makes your nuts taste like chex mix (and every girl knows you don't want your nuts to taste like chex mix).

Perhaps I could use a bit less sugar and add some butter to make a sort of very thin light caramel and use that.


05-14-08

From 1996 to 2006 the average price of existing homes in the US very nearly doubled. That sounds awesome, but anually that's only 7.18% growth. That's also perhaps the fastest appreciation of home values in the history of the modern US.

Over the same period, stocks (the S&P 500 to be precise) rose even more, by about 225% , or 8.48% anually. Over longer time spans stocks look even much better vs. housing, I was just surprised that even during the biggest housing boom in modern history stocks did better, even despite the big crash in 2001-2002.

BTW obviously housing in hot spots did better than the national average, but also stock sectors like energy & technology did better than the S&P so let's not get into that game.

Of course the big advantage with houses is that you can massively leverage your investment (and the interest deduction, and the tax break on gains). If you leveraged a big stock bet the same way you would do better on average. For the most part people don't do that. The reason is that housing is supposed to be much safer. Leveraged bets are very risky; no bank would ever loan you money in order to invest it in the stock market, but they will make that loan for housing.


05-13-08

This ferrofluid performance art stuff is pretty rad : 1 , 2 , 3


05-12-08

Perfect Daiquiri :

1 Oz lime juice
1 Oz simple syrup (simple syrup = 2 parts sugar, 1 part water)
1 Oz light rum
1 Oz dark rum

Stirred, not shaken (no ice chips please!). Serve up in frozen glass. Garnish with a wafer thin wedge of lime, floated.

If you like the malty flavor, you can use simple syrup made from turbinado sugar.

While I applaud 10 Cane (LVMH) for trying to bring back the classic daiquiri, actually putting 10 Cane in a daiquiri is comparable to making a vodka-cran with Grey Goose or whatever. (btw expensive vodka = lol)


05-12-08

Software engineers seem to intentionally commit the most egregious UI/usability sins that they can find. The more obvious and heinous the sin, the more they like it.

One of the common ones is the pop-up failure box after a long batch process. Lots of things do this - iTunes music imports, Windows Installers, etc. You set it doing some huge thing and walk away, only to come back an hour later and find it only ran for 5 minutes and then decided to pop up an interactive yes/no box about some warning. Even worse of course is when it runs for 2 days and then pops up a "whoops couldn't complete" box. Thanks. Of course it's blatanty obvious that any time you do a time consuming process you should check the possible failures and anything you need to ask about right up front, and get that all verified, and then let the user know you're about to go non-interactive for a long time and let him go away. Furthermore a semi-accurate progress percent is pretty important.

The progress percent is another one where people seem to just get a laugh at fucking with you. There's a few funny ones :

The progress bar that's actually just an hourglass. It moves across the bar steadily and you feel all happy, and then it gets to the end and just starts over at the beginning and keeps moving again. WTF. iTunes does this.

The progress bar with super non-linear speed. It ticks along nice and fast, you decide not to even stand up, and then after five minutes it hits 98% and just stops. Then it hits 98.1%. Doh.

The progress bar that restarts over and over. Windows installers love to do this. You see a progress bar and you think hey this won't take too long. Then it restarts for the next phase and it's ticking a little slower. Hey no big deal I can wait this out too. Then it reaches the end and restarts another phase. Doh!


05-12-08

"urbane" is not the same as "urban", though they are somewhat related. Urbane should only be used to refer to people, and is describing their manners and way of comporting themselves in polite society. Urbane originally comes from meaning "appropriate for a city" I suppose as contrast to the majority of the population that was rural back then, but now it means sophisticated, polite, educated, etc.

"pederast" is not the same as "pedophile", though they are somewhat related. Pederast is more specific, and refers to someone who has anal intercourse with young boys. It's sometimes specified that it's against the boys will or with them as passive partners, ergo they are being raped, but I don't believe that really needs to be explicitly indicated, it can be assumed.

Also, what's the word for someone who likes walking (going places by foot)? I'm pretty sure it's "pedephile" (?) , which makes me a huge pedephile. Not to be confused with someone with a foot fetish, which is a "podophile".


05-11-08

I really hate it when girls tell me about their wild pasts. I guess it's mainly some flaw of my own that makes that bother me. Maybe I'm jealous because I don't really have that past. Maybe I want all their good times to be with me. I do in general not find those stories amusing; the whole genre of "man I was so wasted" story is just very eye-rolly not interesting to me. It's right on par with exciting stories of renovating your house or the great shopping you did.

More than anything I wonder why they insist on telling me these stories about their youthful debauchery. Hey that's great, you got drunk and had sex with lots of people, good for you, why don't you just keep that a secret? Why are you telling me that !?

Of course the worst bits always come out in off hand little comments. There are two primary types : 1. the knowing comment and 2. the horrible thing passed off as funny and no big deal.

1. The knowing comment is some little remark that indicates experience with something that's a big deal, but it's said in a sort of off hand way in a quiet voice. If you ask "what was that?" they always say "oh nothing". For example, you're watching TV together and there's an interview with a porn star who just did some video of 101 guys coming in her or something. The porn star says "the main thing you have to worry about is lubrication, with so many guys you can really get rubbed raw" and your girlfriend mumbles "yeah you can". You say "huh?" and she goes "oh nothing".

2. The horrible thing passed off as funny and no big deal. This often comes up as a "funny story" that's really not that funny and just horrifying, like "yeah it was my birthday, we went to this bar and I met a couple of guys and got totally wasted and I can't remember anything that happened, but I woke up in my bed and I only had one stocking on and my panties were gone; haha, I wonder how I did that? isn't that funny?" oh my god no that isn't funny it's shocking and disgusting.

There must be some reason girls drop these kinds of things so often. (by "often" I mean about once a year, any more than zero is pretty often for this IMO). Maybe it's to keep me from feeling too important and too secure, to let me know they've had wilder and could have it again any time they want so I better work for it.


05-11-08

I wish I was a member of a big Chinese family that could go to those restaurants with big circular tables and a Lazy Susan in the middle and just order like 20 dishes and eat what you want. That's the way you're meant to eat Chinese food, and going with two people and just ordering a few things really doesn't get you anywhere near an approximation of what the experience should be like.


05-11-08

It's sort of funny in groups of old friends how everyone gets totally stereotyped. There's some guy who's "always" doing his thing X. Another guy is the expert on Y, any time topic Y comes up everyone is like "oh ask that guy", or any time you make small talk with him you talk about Y. Another guy always makes his famous stuffed peppers; have you had guy's stuffed peppers? oh hey we're having a dinner party ask guy to bring his stuffed peppers.

The funny thing is that these stereotypes have nothing to do with reality, and everyone keeps up the illusion to make each other feel better. That guy's stuffed peppers might actually suck, and he might be really sick of making them all the time, and nobody really wants them, but everyone keep up the charade because it's the group dynamic and it makes everyone feel valuable, like they have a special skill and they're contributing.


05-11-08

3D Ski maps is pretty cool; it's actually something 3d on the web is good for!


05-10-08

It really doesn't matter what you've done in the past (sort of), it doesn't particularly matter what kind of job you have, how much money. What really matters is the condition of your *self* - your body and your mind. That's by far the most valuable thing you have, and it's what brings happiness to your own mind and makes you valuable to others. Of course your "mind" encompasses many things, your intelligence, knowledge, your taste and humor, your ability to love, your courage and strength, etc.

If you somehow get to a good current state, that's all that matters, but of course your past strongly affects your current state. If you were a huge slut and slept around with lots of losers, that's fine in theory if it didn't affect your brain, but of course it does affect your mind in ways that stay with you. If you partied all through college and just drank and didn't study, okay, good for you, I'm glad you had fun, but of course that affects your mind in the present in a negative way.

Everyone's entire past is simply the road they have taken to try to build a perfect self in the present. Your past does nothing for you that's productive in the present other than contribute to the current state of your self (mind and body). Having fun memories is of course part of your current self and that's a valuable contribution, but it actually doesn't do that much to improve your present self.

I really don't understand people who make huge changes in behavior and talk about their past self as if it was a different person, they'll say "it wasn't the real me". Of course it was you, it was your mind. I don't believe that human minds really change very much. Your outward behavior and the portion of your mind that you choose to let control you can change dramatically, but the core of your brain doesn't change much at all. Anyone who's worked to try to change their brain knows how hard it is to even make tiny tiny changes in your fundamental personality.

Obviously people can make huge outward changes; this is most obvious in things like when an alcoholic goes clean. Their outward negative behavior was being greatly amplified by the alcohol in their system, so when they manage to go clean their behavior can in fact change very dramatically, but the basic thing in their brain that made them an alcoholic in the first place is of course still there, and the depressiveness and desire to avoid the real world and self loathing and whatever else made them turn to the bottle are all still there.


05-09-08

I've been rotten to every girl that's been good to me. I like to think of myself as strong, but in the rare tough times when it really matters and I've been tested, I've been weak.

Actually it reminds me of something I've been thinking about old single people a lot, and I believe I mentioned this before. Someone of my age (30) who's single almost always has something horribly wrong with them. It's actually a really bad sign when that thing is not obvious. For example, if you meet someone who's just butt ugly, you can go okay, I know why you're old and single, you're ugly as sin. But when you meet someone like me who appears attractive and desirable and has money and whatever else girls want, ruh roh, that's a danger sign. There must be something horrible that's not obvious and that's much worse.

The best person to meet is someone who has some horrible obvious flaw that is something you don't personally mind. For example someone who's really shy and awkward might be a good candidate, because it's possible they could be single because of that despite being otherwise wonderful. Another good flaw might be someone who's just way too picky, as long as you can pass their high standards then their flaw becomes not too bad. I guess even better would be someone where the flaw is actually a positive; for example if you meet a girl that's just super geeky/nerdy and you're into that, then that's ideal for you.

It's like when you find a couch on the sidewalk with a "free" sign on it. If it's really old and ratty, okay you see why it's free. If there's a big obvious coffee stain on it, okay, flip the cushion and take it. But if it looks great and there's no obvious flaw and it looks expensive - ruh roh, something disgusting has happened to this couch and you shouldn't touch it.


05-09-08

David Mamet, Hal Hartley, Quentin Tarantino - all just awful. They write completely unnatural dialog that's exactly the same regardless of what the movie is about or when it's set. It would be awesome to see Tarantino write like a Victorian period piece and have the exact same rambling pop-culture obsessive dialog. It should star Malkovich and Pacino and Jack Nicholson and James Woods all doing their standard shtick.


05-09-08

One of the things that modern stupid fucking pretentious bullshit restaurants in SF like to do is call themselves "Wine Bars" when they are in fact just fucking restaurants. If you refuse to seat people unless they are eating dinner you are a fucking restaurant. Just because you happen to offer wine for sale does not make you a "wine bar". And why in the fucking world would "wine bar" somehow be a good label that makes you more appealing?


05-09-08

One of the wonderful things about SF is that it's so full of freaks and weirdos that you can do pretty much whatever you want and nobody looks at you funny. They may smile and laugh a bit, but it's just being amused at your weirdness, not a harsh judgement. You can wear super bizarro clothes and go skipping down the street and most people won't even turn their heads, you're just another one of the many freaks, and not even close to the weirdest. I find it very liberating.

I love it here. I wish someone like Bungie or Valve or RAD was in SF. Instead I've got myself a real dilemma. :(


05-08-08

I just almost spilled my chicken on the ground and made a sound like "whoah" as I caught the plate. I wondered why my brain wanted me to make that sound. It doesn't help me to catch the plate at all. Logically I should just focus on the catching, and making any "whoah" sound is a distraction that just hurts my plate steadying. I asked my brain why it was doing that. It told me that it does it as a hedge against the case when I do spill the plate. If I do spill the plate without saying "whoah" then everyone looks at me, and I feel all embarassed. If I make a "whoah" first and then spill the plate, everyone looks at the "whoah" and then sees the spill and knows I was aware of the drop before it happened, and I feel less embarassed.


05-08-08

So I joked to somebody that I was going to make a "How to cut a mango" video next. Well, I did. This is a bit different because I think my method is somewhat unusual and definitely better than the standard way; I don't blame people for using the standard way, but if you have some knife skill this way is definitely faster & cleaner :

First the instruction :

Stand the mango vertically and line up the seed so the long side points away from you. Put your knife next to the tip of the mango right at the very top. Work it down gently until you feel the seed, now tilt your knife and work it gently to one side so that you go down right along the seed. Note you are not cutting straight down, you are cutting an arc to exactly trace along the seed. This is easy because you can feel the seed. Repeat on the other side so you have two curved halves.

my video part 1

Now take each half and slice it in half the long way. Now you have a long wedge of mango with skin on the outside. To remove the skin you need to make two cuts to avoid wasting flesh. The smoothest way to do this is to pick up the wedge of mango with your hand, with the mango skin touching your skin. Insert the knife near one end just above the skin. Push the knife in slightly past half way. Now run the knife down almost all the way to the bottom. Rotate the knife around to the other side while you also rotate the mango in your hand. Now run the knife back up the other way. The flesh should now come off the skin with no waste.

my video part 2

Note that you have the pit left over, but it has almost no flesh on it because we made curved cuts. I just suck the little bit of flesh off the pit with my mouth.

You should now have 4 big chunks of flesh, you can very quickly dice them if you like.

I used to do the standard method of cutting into 3 pieces and then cutting a grid into the halves and then inverting the skin to pop it out. That method is taught by just about everyone on the net : retard , bad , bad , bad . That method sucks balls. It's slow and clumsy.

So far as I know nobody else demonstrates the cbloom method of cutting mango.

WARNING : Cutting while holding fruit in your palm should not be attempted by the dumb, clumsy or inexperienced. You may cut yourself, and don't blame me! Go do some more practice dicing onions.


05-08-08

New chicken method from chowhound :

Cut the potatoes into wedges, place in a bowl and toss with a little EVOO. Spread evenly on a rimmed baking sheet. Butterfly the chicken along the back bone (not the breast) and flatten on your board then place on top of the potatoes.

Place in a 425 oven for 40 minutes.

Remove the chicken, sprinkle the potoatoe with S&P and place them back in the oven for 5-10 minutes more until they absorb all the chicken juices and turn crispy brown.

My comment : this is extremely similar to my roasting in pieces method, I'm not really sure if the butterfly is better in any way than pieces; I guess it looks a bit cooler in presentation.

Result : yeah, it's pretty to serve on a big platter with the butterflied chicken and roast potatos and carrots and whatnot around it. Could roast some fennel and turnips and such too. The chicken came out perfect; I rubbed the skin with soft butter as I always do and it was crispy, the meat moist. The roast potatos underneath were delicious, but would've been better if I'd taken it all out and flipped the potatos half way through cooking; the sides that were on the bottom were too charred and the sides not touching the bottom were not charred enough. Also obviously any roast veg that's not under the bird cooks very differently than stuff that is under the bird, so you can't leave them in the same length of time.


05-08-08

Women really suck. I was listening to NPR and some local female comedian comes on and starts whining about how "comedy clubs never book women, why aren't women comedians getting the big specials, you only see male comedians, blah blah". Wanna know why? Because you fucking suck! You're not funny. If you were funny you would get booked. There are a small handful of female comedians that are decent, but the rest are stuck in "Cathy" territory with material based on their period or "men are so lame" or "na uh don't go there".

A few days ago I saw this video of Girls doing Parkour . WTF? They're doing the easiest beginner moves and their flow sucks.

I don't believe that girls genetically inherently suck, which means they *choose* to suck, which is actually worse. If they were somehow genetically inferior and doing the best that they could, that would be respectable, but they are in fact not limitted and just suck because they aren't trying, or something. Perhaps some of it is because they're coddled and told they're awesome when they in fact suck.

Now don't fly off the handle. Of course I'm not talking about every single woman, I'm talking women in general. If you just tried to disprove my general point using specific counter examples, I'm guessing you're probably a woman.


05-08-08

Bungie really has their shit together. I was super impressed with just about every aspect. It's pretty inspiring to think about being surrounded by some of the most talented people in the world in every aspect of game creation, people who are super smart and super dedicated and top experts in their discipline. It sort of gave me the feeling I had at Caltech, where everyone around is kicking so much ass you feel like you really have to step it up to be on the same level.

Their basic philosophy of game development is very appealing to me. They're devoted to making a "simulation" that responds consistently and logically; the user only has a few ways to interact with the world so that you aren't creating tons of canned interactions, rather the way you can poke the world always works and leads to lots of interesting scenarios because the systems all work together. Their game design also seems to be very logical, in the sense that they have certain feelings and types of play they want to create and they find the game systems that lead the user to experiencing those things.

On the other hand, WTF is up with the music in the Halo games!?


05-08-08

(I think this is all stuff that's common knowledge and shouldn't be any secrets, but if you feel like I'm spilling some kind of beans let me know and I'll stop)

Talking to people in Seattle got me excited about games again. It's a pretty interesting time. The big negative at the moment is how huge and complex games are, and how huge the teams have to be, which kind of sucks. On the other hand, games are still advancing very rapidly, and some big advances are going to be made in the next 10 years. We're finally getting to the point where we can realistically talk about making true dynamic simulations of complex worlds.

In contrast, at the moment there are basically two types of games : 1. "Deep, narrow" games, that are simulations, but in very limited ways - the user can only do a few things and the environment is strictly limited in how it responds; this includes things like Halo as well as lots of old games like Mario etc. 2. "Broad, shallow" games that have lots of canned hacky interactions and try to create the illusion of a huge world you can interact with in lots of ways, but aren't true simulations and you can't do anything the designers didn't specifically code in; this includes things like GTA and the Sims as well as most of the classic j-RPG's and stuff like that.

Everyone is very excited about the continuing growth of CPU power as we continue to move into the multi-core era. The problem is that with machines getting more complex we can do a lot more and run a lot more content, if we keep making games the way we do now that would require 10-100 X as much art & design work, which means prohibitive schedules and team sizes. So we need a way to make tons more interaction without a lot more content creation, which of course means code.

The big exciting things coming up IMO :

Procedural interaction ; N*M problem. We want to have N types of things in the world and M things the user can do, but we don't have to manually set up N*M special interactions, and of course the user can put objects together and they should respond to each other as well which is N*N or even N*N*M, etc. This means that the way things work together needs to be more procedural. Currently in games for me to be able to do a "pick up" , I need to code or animate a different "pick up weapon" , "pick up box" , "pick up humanoid", etc. In the real world if I know how to do a "pick up" I can pick up anything.

"sparse virtual geometry" ; importance-based object detail & existance. This is very vague and nobody knows really how to do it, but we know it's what we want to do. In fact, I and others have been talking about this since 1998 or so. I believe Carmack has been talking about it a lot recently. I should emphasize first off this is not about rendering performance, though rendering is part of it. The idea is that you want to have a world which has "virtual" geometry and objects of massive detail and uniqueness. We want to get away from instancing and just decorators on simplistic backgrounds, and actually have something like a city that's full of millions of unique objects all interactable. Of course you can't just have all those objects in the simulation all the time, so you want to page out stuff that's not important and down-res the distant stuff. Down-res means lower LOD, not just for rendering, but also for collision, AI, pathfinding, etc. etc. The overall goal is that you wind up with a constant performance system similar to the sparse virtual textures, with more detail where you need it.

Dynamic everything. Currently all complex games rely very heavily on having the basic structure of the world static or semi-static, which allows you to precompute lots of helpful things like AI paths, radiosity, collision acceleration structures, etc. People are doing semi-dynamic worlds at the moment mainly by allowing only small or specific canned changes to the static world and precomputing the effect of those changes. The goal in the future is of course to support dynamic everything, which means fully realtime lighting, PVS, etc. I actually don't think the rendering is the hardest part of this at all; things like packaging for paging, and AI are much bigger problems, which leads us to -

AI that can understand its environment. Currently nobody has AI that can actually understand geometry. The designers do lots of tagging, or some complex tool runs a preprocess to analyze and figure things out about the world, and the result is some simple tags like "you can walk here" or "this is a good place to shoot from" etc. There are two reasons this is bad. One, of course if you have totally dynamic geometry you can't do this. Two, the amount of work it takes to tag all this stuff for designers is pretty massive and we'd like to eliminate it. This is a huge area of work that we'll probably only begin and could continue for a hundred years, in the extreme case it includes things like strategic reasoning about environments. In the short term we'll probably have to continue to rely on markup for the macroscopic issues (like "this is a flanking area", "this is a good first retreat area") but we'd like to advance to dynamic smart AI for microscopic issues (like "I can walk here" or "I can take cover here").

This is all pretty pie in the sky; there are a lot less insane things that are also going to be happening, or maybe just some baby steps in these directions.

Also this is all very exciting tech, but in terms of what actually makes games good or bad in the short term, none of these have anything to do with making better games. The problems with games in terms of the user experience are the same as ever :

1. Not enough time spent on all the little details that annoy the user; stuff like UI usability, controls, load time & paging, good tutorial integration, etc.

2. Shitty stories, boring characters, uninspired worlds, gameplay that doesn't integrate the play and the user and the world/backstory, generic uncreative art designs, schedule cuts that wind up wrecking the world/story/art.

3. Generic repetitive gameplay due to lack of game design vision and lack of risks taken in prototyping/prepro.

To some extent these things can be improved by technology, largely by making content easier to create, more foolproof, and faster to iterate. The goal of game content creation should be that the artists/designers can just try anything they want, instantly see it in the game, and have it all "just work", so they don't have to know a bunch of weird rules about how to make good content and don't have to worry about manually tagging up a bunch of junk.


05-04-08

Mariam Bent Omran contacted me randomly on Flickr, I have no idea how she found me, but it was quite a fortuitious thing for me, because her photos are great. They're gorgeous - and yet not so "artistic" that they're removed from capturing reality, which is what makes photography really interesting.


05-03-08

I can't find a command line app to just sync my whole iPod vs. an M3U playlist, or even vs. a directory. WTF. Help. Note : I have found tools to copy the entire contents of the iPod to the PC or from a PC dir to the iPod, but that's not the same as a sync because it's not doing delta updates.

I did find SharePodLib which is pretty awesome, but I'd rather not write my own app, plus his sample project seems to be a C# project that uses some Vista.NET thingies because my version of VS.NET refuses to open the project.


05-03-08

To cook 1 cup of grain (or thing that acts like a grain) :

Rice : 2 cups water, 20 minutes, covered simmer.

Risotto : 2 2/3 cups water, 30 minutes, uncovered simmer. (ratio is 1.5 cups grain to 4 cups liquid)

Steel cut oats : 3.5 cups water, 25 minutes then check and maybe cook 5 minutes more or add liquid (milk optional). uncovered simmer. The goal is "al dente" not mush. Usually pre-toast in dry pan. Stir minimally. Finish with butter.

Rolled oats in the microwave : the quaker oats says 2 cups water (to 1 cup of oats); I find it's better with 1.5 cups water, otherwise it's just oat soup. 2.5 minutes for me; I like my oats with a tiny bit of tooth, not soggy mush.

Couscous (fine) : 1.5 cups boiling water, 5 minutes. seal and let sit off heat. This produces a semi-dry couscous which is intentional because I plan to use it as a bed for a saucy main dish or pour some other flavorful liquid over it.

Warning : This is for the typical fine grain couscous that Americans get; real traditional couscous is a much larger grain and takes a lot longer to cook; don't be thrown off by traditional couscous recipes. There are also medium grain couscouses available which would be different.

Kasha : 2 cups water, 10-15 minutes, covered simmer. Usually pre-toast.

Warning : there are a wide variety of kasha (buckwheat groat) kernel sizes, so you may need to do some experimenting to see what you get. There are completely whole kernels (not recommended, a bit weird IMO), cracked kernels (best) and fine kernels (bad). Start with 10 minutes cooking and see what you get. The stuff I get at Rainbow takes about 10 minutes.

Also, IMO the traditional "varnishkes" method with egg is a little bit weird and definitely unnecessary.

Polenta : 2.5 cups water, 40 minutes then start checking for doneness and maybe 5 minutes more, uncovered simmer. Minimal stirring. Finish with butter & parm. Lots of salt.

Quinoa : 2 cups water, 10-15 minutes (generally 15 unless you like it really poppy like fish eggs). Covered simmer. Note : actually if you rinse the quinoa it holds so much water that you only want 1.5 cups water.

Warning : you must rinse quinoa before cooking, though many grocery store brands are pre-rinsed.

Yes yes I know couscous is not a grain, it's nuggets of wheat, but I treat it like a grain so whatever. Also Kasha is technically not a grain, it's a "groat" but it acts like a grain, and quinoa is some kind of seed or something.

The #1 mistake people make with grains is not salting. Grains needs a LOT of salt. Salting during cooking is generally good, but supposedly bad for steel cut oats (questionable). The #2 common mistake is probably overcooking. When in doubt slightly undercook because there will be carryover. Your goal is not mush.

General warning : it's almost impossible to cook less than 1 cup of a grain. If you're single or a small eater you may be tempted to try to cook less, but it's too little mass and the water evaporates too much and it probably won't turn out very well. Grain is cheap, just make 1 cup and throw out the excess.

Other notes on steel cut oats : Alton likes to add dairy, but personally I prefer them without any dairy; I've tried cream too, and any kind of dairy in the oats just really mellows out the flavor and subtracts from the nutty oaty goodness; I'd rather add extra butter, though the better the oats are cooked the less butter & sugar you need, you just want to appreciate the texture and natural flavor. If you are single and want to make a batch and don't plan on eating the whole thing - scoop out what you want to save after 20 minutes of cooking and put in tupperware. Lid it and stick it in the fridge. At 20 minutes it's very undercooked, but the residual heat will keep cooking it, so when you take it out of the fridge the next day it will be almost cooked, and then after a few minutes in the microwave it will be done.


04-28-08

Planning dates or trips really stresses me out. If the restaurant or whatever activity sucks I feel responsible because I picked it. 99% of the time the suckitude could've been detected if I'd just done the right research, looked at the right clues, maybe cross-checked the reviews I found with other things I was familiar with. After the stressful planning, if it all goes well I just sort of feel relieved, and if it doesn't go well I feel embarassed, ashamed, and sorry. Urg.


04-27-08

I've finally found the really good hip new-electro dance bars in SF. These nights are almost intentionally not well publicised. They're in smaller places, they don't have fancy fliers. Sometimes I'm frustrated that these things are so hard to find and wish they would put better information out, but of course if they did it would attract the "bridge & tunnel" crowd and the popped collar yuppie douchies and frotteur/voyeur set. I am a little bit out of the loop though, so by the time I find places they are already on the downward part of their life cycle curve.


04-26-08

I kind of like getting library books that people have written in. Not a ton of writing, and not highlighting or underlining, that's awful and rude, but just little thoughts scribbled in the margins every few pages. It makes me feel like I'm reading the book with someone else, talking with them about our thoughts on the book. I remember back in college I got on a classic-horror kick and read through the entire collection of Sheriden Le Fanu books, and some other single person had scribled a few notes in all of them; this person had read through the same set of 12 books before me, and I followed in their footsteps with their notes as a guide and companion.


04-26-08

A lot of the companies I'm talking to these days use a semi-democratic model (Valve and Google, for example), where in theory people from the bottom can push good ideas and decisions are made by concensus. I have no idea how well it really works at those places, but I find that these kinds of things almost never wind up working as real democracies. The theory is that all the agents act and think independently, and thus ideas are judged only by their merits. That doesn't happen because people are human. A few different social problems hold it back.

Groupthink almost always develops in these groups. What I mean is a certain style of thinking becomes accepted by the majority and no longer questioned, and people find it easier to just go along with majority. This style might be something like love of STL, or love of very simple exposed C-style interfaces, or just the general concept that C++ is broken and many of our woes are due to the language, or whatever. It's some belief that's not really rational and becomes a common framework for everyone and the group thinks similarly. Groupthink develops for various obvious reasons. The senior people tend to hire new people that think similarly to them. The new people are taught the current way of thinking. People who think differently get in big debates all the time and get sick of it and just stop objecting. When the majority is against you, you tend to just stop talking.

Leaders and followers almost always develop. Some people are just naturally pushy, or very respected, or whatever, and take up leadership roles even in a putative true democracy. Similarly some people are just weak or natural followers or just lazy or don't care, and so rather than really be independent they just follow one of the leaders. This means that a few loud voices tend to dominate and you don't really get a bunch of independent thoughts on problems. This is totally independent of any formal heirarchy, and of course it develops in social groups of all types. At a place like Google, for example, I'm sure that many people adopt the "Larry and Sergey" way of doing things because it's easier to defend.

A lot of the problem comes from subconscious laziness. Really thinking independently about various problems is very tiring. Most people stop doing so and just go with the flow because it's easier. Usually this isn't even a conscious decision and people aren't aware of it. I've commented before about how when I'm out cycling by myself, sometimes I'll zone out and stop paying attention to my pace, and then all of a sudden I wake up and discover I'm going like 5 mph. The human mind has a built in subconscious desire not to work; it's very lazy, it's designed to conserve your energy for the next big chase or fight. In intellectual work, if we don't force ourselves to be active and vigilant in our thinking, we slip into lazy habits and just go with the flow and stop thinking for ourselves.

One way to fight this is turnover. You want to hire new people with very different styles from your core. This goes against most people's hiring practices who do retarded things like favor candidates that use the same coding convention as you. That may make it slightly easier to integrate someone, but it's much better for the health of the group to bring in people with different ideas. Then when you do hire them, you have to be a bit careful to not beat them into the groupthink mold. You also want to listen to their ideas on how you do things, because they bring a very valuable fresh mind. Often when I was moving around from company to company I would come into a new place and they would have some absolutely insane onerous process that made it so hard for the artists to work, and everyone there was just convinced that "that's the way it is", and I would be like "whoah whoah this is insane, you shouldn't have the artists spending 2 hours to sync every morning, or running a debug build at 1 fps" or whatever. Of course the newbie will also be a bit retarded since they don't know your process, so you have to be smart about what you listen to and what you ignore. When I was hiring I mostly did this the "bad way" ; it's definitely tricky to balance the immediate usefulness of hiring similar people to the long term health of keeping a diverse population.

Another problem with groups is that people have a tendency to develop an "us vs them" mentality. This is also subconscious and it pervades all groups, not just these companies. People have an innate desire to be part of a tribe and to feel like they're banded together against the rest of the world. It's a sort of pack mentality, and it leads to being very defensive of the practices inside the group and being dismissive of voices from outside the group.

Part of the "us vs them" mentality comes from creating myths about how great your practices are. All successful groups tend to over-value their practices and think the way they do things is great because they've been successful in the past. Well, maybe so. More likely your success is due to A) good people B) good circumstances, and C) luck. Human beings in general vastly underestimate the amount of variance in success, and look too hard for direct cause & effect relationships that often do not exist. This is most obviously retarded in gamblers; anyone who wins a hand of poker makes up all kinds of reasons why their style somehow led to that success. It's less obvious in endeavors with lower variance, but still present. For example, maybe some of your practices really are good, but many of your practices may not be; people tend to associate success with every single practice and elevate them all to the magic formula that brought that success.

None of that is to say that the democratic models are a bad thing, obviously they're very cool and successful if done right. But the idea that decisions will be made rationally and on their own merits is a bit of a dream. And how well you fit in is not so much about how you work in a democracy, but about how you meld with the dominant thought camps in the borg network.


04-26-08

I'm stuck on the gaijin sushi items. I love my salmon, yellow tail, tuna (many types), eel, and don't really appreciate anything else. I did convert to the minimal-soy dogma a little while ago, I do want to actually taste the fish. I'm not too bothered that I don't really like octopus or uni or some of the weirder stuff like geoduck clam or whatever, but I should at least like mackerel and halibut and that kind of stuff and I just don't. Actually I like raw white fish much better as crudo (Italian raw fish).

I wish more Japanese places had real natural soy sauce & fresh wasabe. The shit they serve is kind of like a breakfast place putting Aunt Jemima on the table (= Kikkoman Soy), and I Can't Believe It's Not Butter (= tube Wasabe). I think about the Seinfeld where Jerry sneaks in his own maple syrup. I imagine getting my own fresh wasabe root and smuggling it inside my pants, then I take a rasp out of my coat pocket, poke the wasabe out through my fly, hold my plate down at my crotch and grate off a bit.


04-24-08

I tell a lot of the companies I'm talking to that I want to work on "technology". I get the impression that they think that means I want to go off in a corner and do impractical pie in the sky researchy junk. Not at all. Something like figuring out the best way to turn gamepad stick deflection into character motion is a very interesting piece of technology. Writing Maya UI boxes to expose shader parameters to artists for the standardized shaders is "wiring". To me lots of aspects of gameplay programming or seemingly mundane things are actually "technology", it's more a question of whether the problem is already solved and I'm just plugging in a known solution, or whether it's something where I have some freedom to find the right answer.

In video games, the most basic aspects of the player interaction are still some of the most unsolved. How do the sticks turn into motion. How does that motion show in animations. How does physics & kinematic animation interact. How does physics limit your motion. How does a 3rd person camera track the player & the action. etc. very basic stuff, really not solved, and lots of interesting technology to work on.


04-22-08

Am I an obsessive over-perfectionist? Absolutely. Do I get bogged down in minor details and waste time fixing other people's mistakes that aren't actually important? I hope not. Anyone who does that is just retarded, since a true perfectionist should be trying to optimize their overall efficiency. A big part of the overall optimization is making good decisions about what to obsess over and what to let slide. Also a good perfectionist realizes that you aren't just trying to optimize a certain product or a certain process, you are trying to optimize the big picture which includes your relations with your coworkers, your amount of intellectual capital, the annoyance factor you are building up from nagging people, the mental momentum of the established way of doing things, the value of the existing standard & documentation & knowledge, and lots of other fuzzy factors.


04-21-08

"There are times when I look at people I see nothing worth liking. I want to earn enough I can ... get away from everyone."

Ruh roh shaggy.


04-21-08

The Schwarzenegger-Bloomberg Charlie Rose episide recently was pretty amazing. They're both very impressive politicians, extremely reasonable and rational, they get to the point and talk about the problems with government. A lot of liberals are still anti-Schwarzenegger and I'm not sure why.


04-21-08

Yesterday laying in the park with Alissa, this single guy came over nearby us and sat in the grass. He started doing some light stretch moves, rolling his shoulders and such, then did a head stand, then some dancy-like dynamic hip stretches. After the warmup he did a bunch of parkour rolls back and forth with pretty solid form, then proceeded to do the beginning Wing Tsun form (horribly though). I guess I should've gone and said Hi since he was doing almost exactly the same stupid things I do when I go to the park by myself, but I was just so blown away by how totally retarded he looked, and how I must look exactly like that all the time.


04-21-08

While I'm on culinary instruction : almost everybody cuts bell peppers wrong, even the majority of trained chefs do it wrong.

The right way ("right" being defined as fast & easy) is to cut the flesh away from the core, not to try to cut the core out of the pepper. Basically you want to chop off the outsides the same way you take the outside off a pineapple. Also never detach the stem part of the top from the core, you want it to hold the core together so you don't make a mess.

In detail : stand the bell pepper up vertically ; put the most stable end down, whatever that is. Your non-knife hand should be stabilizing the pepper by placing a finger tip at the top. Make vertical cuts downward with your knife, following the shape of the outside of the pepper, to cut off just the edible pepper walls. The knife should go right along the inside of the pepper walls so that the veins are left attached to the core. Don't try to cut too much in one slice or you will cut into the core or the veins - just take off the outside. It will take 3-8 cuts to take off all the outside depending on how irregular the shape of the pepper is. Your non-knife hand should now be holding the core with all the seeds and veins attached, which you throw away. When you do it right (very easy with practice) you will be left with 6-8 slabs of edible pepper exterior with almost no veins or seeds, completely ready for use.

For example, all of these people are 100% retarded. retard 1 , retard 2 Like hey, I know nothing about anything and my skills suck and my brain is broken, let me make videos telling people how to do things that is totally the wrong way. The blind leading the deaf or something. Yay interwebs.

(I mistakenly had this guy in the retard list, but actually he just shows the wrong way first and then the right way, not retard )

This guy at video.about.com roughly does it right, but his knife skills suck donkey balls. Maybe this is how you will fare since you probably suck ass with a knife too. Go practice dicing onions.

Okay I made my own video . I only had one bell at home so I knew it had to get it in one take. The pressure was on so I went extra slow and careful.

BTW I don't mean to rag on the amateur home chef with shitty skills. This is for you to learn. The thing that pisses me off are these people who presume to be teachers and just suck so bad. How dare you think that you are qualified to teach anyone anything when you obviously haven't studied or put any effort into this subject at all !? I have great respect for the people out there who actually have skills, and there are plenty of them, and it's disgusting for someone to put themselves on that level when they don't deserve it.


04-21-08

Checker and I were breaking the ends off of blue lake green beans a while ago, and we amusedly noted our different styles. Checker was breaking the end off each one by one whatever way he picked them up. I would take a bunch and turn them all the same way then break off all the ends at once. We figured it was an example of people taking different approaches to the same problem that appear very different but perform almost identically.

I now see it's an example of how people can take very different approaches to a problem, think that they have spanned the solution space, and yet still be ridiculously far off the optimum performance.

The right way to take the ends of blue lakes is similar to the right asparagus solution : just use a knife. Line up a bunch on a board and chop. Line up, chop. You're done. It's an order of magnitude faster than the hand breaking method, like seconds instead of minutes.

Presumably the very common practice of breaking off the ends of green beans by hand came from the historical practical of de-stringing string beans, but modern green beans don't have strings so this practice is vestigial.


04-20-08

Bleck. Grass fed beef sucks so bad. It's dry and grainy, and has some weird flavor sort of like your grandma's burned salsbury steak. I just spent some small fortune at Bi Rite on some shitty ass beef just because I don't really have any other nearby grocer options (I love the jive-ass meximarts in general but their steak is pretty poor). The steaks from cows that are stuffed with corn and not allowed to move around much is so much better, such as the Harris ranch stuff. (people think Harris ranch is fancy; lol; they have huge cow pens right next to the freeway out in the central valley with masses of cows jammed together standing in their own poo and chomping on troughs of grain; it's delicious).

Some of the better places now are grass feeding early and then stuffing with corn to "finish" before slaughter. Maybe that would work. I think wild Salmon is similarly shitty, the flavor is nice but it's so dry and dense compared to the lovely light tender farmed stuff.

It's basically trivial to spend a lot of money and produce good food; certainly plenty of people fail to do that, but it requires gross incompetence to screw up. Spending little money and producing delicious food takes care and skill. Of course it also takes a lot of skill to spend lots of money and produce truly superlative food, but very few people in the world ever accomplish that. Even their fanciest creations rarely surpass a good piece of buttered bread.


04-19-08

There's an oft-perpetuated myth that asparagus will snap naturally where the woody part ends. The suggestion is you hold the asparagus with your fingers and bend it until it snaps and the point where it snaps is where the edible part ends. This is complete and utter nonsense. It's similar to 19th century mentalist / sleight of hand tricks. The secret to deceiving the rube in this case is where on the asparagus you hold it. The reality is that the asparagus will break roughly at the mid point between your two grip locations. If you hold it from the two ends of the stalk, it will break near the middle. Most of the shysters who propagate this myth choose to hold the stalk with one hand at the base and one hand in the middle of the stalk, which makes it break about 1/4 of the way up, and then they claim that's where the woody part ended.

The better way is just to use your eyes. You can see the transition. This is of course what they are doing, using their eyes to decide where to hold it to snap it. Even if you use your eyes I can't really recommend the snap method, because it's very imprecise and you often snap off lots of good tasty bits. Just use a knife.

Once you cut it, you will see the exposed ring at the base. You can now see how thick the skin is there and decide whether you need to bother with peeling the stalk. Generally the actual woody part is very small or not existant at all on store-bought asparagus, and all you need to do is a bit of peeling.

Addendum : while on the subject of asparagus let's talk about size. It's really funny when people proudly brag about what nice thin asparagus they bought as if it's some prize. The truth is that in the supermarket, the thick asparagus is usually best. The love for thin asparagus is a very common sign of the yuppie fake-foodie pretentious douchebag who hasn't really put any study into food at all but acts like they are some authority just because they shop at Whole Foods and watch Rachel Ray.

The myth of thin asparagus is I think just based on foolishness. We could pretend that it's based on the fact that if you grow your own asparagus, the very first shoots will in fact be thin and tender and delicious, but I'm pretty sure that fact has nothing to do with this common erroneus belief. Asparagus is this plant that's mainly underground and sends up flower stalks over and over kind of like a mushroom. You chop off stalks a few times and it sends up more. When farmers grow asparagus, they of course do not chop off the first growth when it's very young - they sell by the pound and they want it to get bigger. So they let the first stalk grow big, then chop it off. This is the best asparagus and it comes in spring and is quite thick. Then they let it grow stalks again and chop it off. Then they do it again. These stalks will be thinner and thinner as the plant is getting out of season. In the fall you get very thin stalks and they are horrible. Of course the real way to judge the quality of your asparagus is to look at it like any other vegetable. Size doesn't matter so much as the color and texture. It should be all green, without any yellow splotches. The skin should be plump and smooth, never wrinkly. If you can touch it, it should be crisp and snap easily, never bendy.

Amusingly, this asparagus error is so common that you will often find the asparagus bin has been picked through and all the crappy thin stuff has been removed, and only the nice plump crisp thick stuff is left. Well, okie doke. To give people some credit, part of the misconception comes from the fact that thick asparagus does need some peeling. That can be done very quickly with a paring knife if you have top skills, or slightly slower with a veggie peeler.

Now if you are one of the many people suffering from bad information and believe that thin asparagus is good, that doesn't make you a horrible person. But if you brag about that fact and act like you know far more than you do, that's bad. There's general disease in our culture that people like to act like experts and take pride in things that they have put absolutely zero effort into; have you studied food, have you read books, have you practiced, have you asked questions? no? then why the fuck are you pretending to know what you're talking about? The real test comes with how you react to correction. Good people are glad to be corrected and welcome the new information, perhaps with skepticism but still with gratitude.


04-18-08

My ex-girlfriends all tell me I should "open up". They're wrong. Sometimes I try really opening up and talking about the complicated thoughts I'm having, and it just leads to confusion and makes things worse as they make all kinds of negative conclusions from what I admit. When they say "you need to open up" they really mean "you need to show more affection for me". People don't really want to know what you're thinking. They don't want to hear about your doubts or the hints you're seeing that your relationship isn't going to last or the problems you have with them or that you think they're getting fat and you're not attracted to them as much anymore, or that you're disappointed with your life and feel like you need a big change or whatever it is. (for the record, these are not examples from my life they're just things I thought of now as examples of thoughts you might have that they don't want to hear).

I'm learning more and more that the idea of really living honestly and connecting to people on a deep level is not possible, and even trying generally makes your life worse. If you just do the superficial/manipulative thing of pretending to be the person that they want, positive & funny & loving & caring & interested in what they're saying & supportive and etc. that your life will be much better. eg. just fake it. You don't even have to "fake it till you make it", you just plain fake it, there is no "make it". A lot of people have a negative reaction to this idea because they have very false ideas of what "faking it" is like; they think of the total douchebag guy who's always smiling and acting your friend. That guy is just a really bad faker and obviously not a good example of how to live. The better example is the charismatic guy who's always nice and seems real and is fun to be around. He's a total faker, but he's good at it, and that makes his life better and the lives of everyone around him better.

In fact, being "real" and not faking it is very discurteous to others. Everyone can think of examples of this. Say you and your spouse throw a dinner party and he does something right before to piss you off. The mature thing which benefits everyone is to just hold it in and pretend to be happy until after all the guests leave. But even after they leave, why exactly do you need to say anything about being hurt? If you can say something and have it improve the situation and make it happen less in the future, or make you both feel better, then that's great, say something. But that's often not the case. Often you are saying something just to make yourself feel better, and it will make him feel worse and make you both angry at each other. Then you shouldn't ever say anything. Those cases are in fact the majority, and if you look for these spots you'll see more and more than the really considerate and mature thing to do is to ignore your real feelings and just act jovial and entertaining and sweet.


04-18-08

I hate you all so much. You people are not only banal and boring and bland and boorish and bourgeois, you're proactively evil, you make the world worse every day in every way. The most uncreative uninteresting unthoughtful people roll their eyes and whine about how uncool things are. The people with the least to say and never any insight are the loudest and dominate every conversation. The most selfish and uncaring and uncurteous people chew me out for doing things that are totally reasonable. The most uncultured and unintelligent are pretentious and condescending and act superior.

I'm so angry at my fucking human biology which makes me need the company of other humans. I wish I could just go away and live in the woods and commune with the squirrels and be happy, but I can't. My own cells betray me. They force me to seek the approval of these fucking walking turds. My own cells that I care for so well, they force me to feel like a loser if I don't fit in with these slags.

I guess I'm having a bad day. I'm kind of depressed, and in a somewhat amusing feedback loop, it really depresses me when I get depressed. If I was the strong uberman that I think I should be, I wouldn't let myself get depressed, so feeling depressed is a fucking failure, it's being weak, it's giving in to wallowing in teenage woes, and I'm such a fucking loser for doing that, which of course just makes me more depressed.


04-17-08

My external hard drive that turns itself off when idle turns out to be a huge fucking evil thing. It's an okay idea in theory, but it's not at all well coordinated with Windoze, which makes it fucked in practice. The worst thing is that occasionally Windoze decides it needs to look at that disk for no obvious reason; I'll do some file op on my main disk and suddenly it stalls and waits to spin up the external for no reason (obviously some code somewhere is enum'ing all the disks and querying something on them that's not cached but that's fucking fucked; for example some of file select dialogs do this).


04-17-08

"Italian for Beginners" is a pretty horrible movie. It's a random mashup of unpleasantness and cheeze. Many of the Dogme Manifesto movies, faced with the difficulty of achieving emotional heft under the simplicity constraints, resort to a very manipulative battering of the audience with human misery. Then we get a mix of pure Romantic Comedy silliness where everyone's problems disappear and they all have fun and find love.


04-16-08

I think the whole "pita pocket" thing must've come out of some dumb American trying to make "foreign food" and totally misunderstanding how you make use of bread.


04-15-08

Fucking hell. A lot of the financial websites now are doing this thing where they track what computer you're logging in from. I'm not sure quite how they're doing it, but however it is is fucked. I'm plugging things in & out of my machine all the time and it seems to make it qualify as a different machine and I have to go through this long fucking validation to get to my accounts again.

Bleck. While I'm ranting about it, these fucking web people just keep making the most awful unusable sites with fancy shit that doesn't work. I fucking hate fucking web apps and their shittiness and bugs and fucked interfaces. Yesterday I spent half an hour filling out the online application for a passport, and I get to the end with the magic button that says "generate form" and I click it and it takes me to a flash page and spins the loading graphic and then does absolutely nothing. Awesome.

Even more common these days are all the active forms where like every time you click a check box or something on a page it has to load to update some derived shit or show you something useless, so instead of being able to tab through the dialog and click things fast you have to go click, oh wait while it changes, click, wait, oh fuck my cursor moved, click, whoah the blank I was about to fill is gone. Fucking fucked retards.

One of the most common examples of this now is the fucking date entry widgets. I tab into the date entry field and start typing it out, then look up and notice that some fucking GUI widget has popped up over the date blank and now I have to mouse around to find the date I could've typed in half a second.


04-14-08

The regular "toss everything in a pot" method of making pot roast tends to just make a bland mushy pile of goop. You can make a much tastier faux pot roast using the "cook separate and combine" method. The idea of cooking the flavors together is very overrated; for example when you cook carrots with meat, you really don't get good carrot flavor into the meat, all you do is suck the carrot flavor out of the carrots. When you cook things seperately, each thing gets a chance to brown and develop it's own rich flavor, and then when you eat the dish you can put those flavors together in your mouth.

Basic composed pot roast : sear the meat in a big pan, salt & pepper of course. Toss a bit of flour in the pan and stir around in the meat fat (this will wind up thickening the sauce). Add liquid to almost cover, stock or maybe some beer, also bay leaves, whole garlic cloves, etc. Put on a tight lid or aluminum foil and toss in a 325 degree oven. Cook about 2 hours. Now jam the oven up to 425. Toss in a sheet of carrots rubbed in olive oil and salt & peppered. Also toss in a sheet of potato wedges with the same treatment and also perhaps some thyme or similar. Cook about 30 minutes at the higher heat. Make sure you don't completely run out of liquid on your meat, add liquid if necessary but not too much. The carrots should get nice and charred. When it's all cooked, remove from oven. Pour the juices off the meat & reserve. Toss the carrots and potatos in the pot with the meat. Toss in some frozen peas and let it all sit 5 minutes so the peas cook.

Turn the juices into a sauce. To really do this right you should've cooked the whole thing ahead so the drippings can cool and you can take off some of the fat. Or you can skip that. Taste the juices and maybe don't do anything. If it's too thick, add wine or beer or stock. If it's too thin, you can either cook some flour in the pan you cooked in to make a gravy/roux, or make a cornstarch slurry and add that, or if it's thin and the quantity is sufficient you can just cook it down a bit to reduce. Perhaps add salt & pepper to the sauce. Finish with a bit of butter.


04-14-08

Nobody really appreciates hedging. When I'm not sure about something or I feel like I might wind up changing my mind at some point, I don't feel like I can just commit without qualification, so I'm cautious, send some mixed signals, and hedge my words. I figure that's a favor to everyone else involved so that they know what they're getting into. But people don't respond logically to hedging. It makes them super cautious, way more so than they should be, or it just annoys them and they don't see it as anything more than weakness or lameness. People generally much prefer it if you commit without hedging regardless of whether you really feel that way or not, then go ahead and change your path with equal conviction somewhere down the road if necessary. This is true in relationships and in business. If you look at the beloved figures of history and fiction, like G.W. Bush or Captain James T. Kirk they are always the brash macho guys who commit 100% and believe that what they are doing at the moment is right and never hedge.

On a related note, even "hedge funds" these days don't actually hedge. LOL.


04-14-08

I got lazy about finding new music in the last few years. Of course part of the reason I was so vigilant in trying to find cool new undiscovered music in the past was to impress girls. Yes I also liked the music, but anyone who doesn't admit it's to impress others is foolish. It's to show that you're cool enough, when hipster indie music lover people meet someone, one of the first things they do is look at their music collection (or I guess now it's their iPod playlist) and judge them based on it. If you don't have enough rare little known hip stuff in common you don't qualify. Anyway, with Dan I stopped looking. I have enough great music that I can listen to whatever from my 1000+ CD's and find something to fit my mood and not get bored of it.

Anyway, that's changed now, and Alissa introduced me to the Junior Boys. Who knew that my love of offbeat indie music and my love of electronic dance music could be combined? They're pretty rad.


04-14-08

There are three big problems with game development (from a working conditions point of view) :

1. The amount of work vs. amount of reward ratio is way off. The amount of work expected of employees is massive, and you have to be very smart, and the reward is nowhere near what you can get for similar highly skilled work in other industries (such as being a quant in finance, or a consultant for petro companies, etc. etc.). The big problem is that so many people want to work in games because it's fun and they love playing games, that it drives down the wages and makes the working conditions worse.

2. Competition with other crunchers. I suppose this happens in other industries as well, but the problem is to some extent all the game companies are competing to do the next cool thing, and everybody else is way overworking and crunching to produce things fast, and everyone is making things with a lower budget and shorter time than is really needed, and you have to compete with that. Some people seem to avoid this trap to some extent, like Valve and Blizzard, but they can really only get away with it because of the fact that they are the only ones that do it. And I don't think they're working at any less of a fever pitch, they just do it for longer.

3. Bad management. Most of the people running game production are not qualified for the task. I'm not sure this is necessarilly worse in games than it is in other industries, but the thing is game technology and production is changing so fast that you really need powerful intelligence to run a game company, whereas in other industries there are these learned best practices that have developed over N years that people can just copy and do okay. If you like you could phrase this as saying that the high rate of change of methods and technologies is what makes games so hard & painful to make, but really those things just expose the weaknesses of planners that can't handle thinking ahead and can only learn from experience. (eg. was the debacle of the Iraq invasion necessary because it was a new situation, or did the novelty of the situation just expose the incompetence of the planners that didn't anticipate the challenges correctly?). Also by "management" here I'm not necessarilly just talking about the game studios, but also the direction from publishers. Of course the rapidly changing technology is what makes it really fun to program for.


04-14-08

I've done almost every day hike that's reasonably accessible from SF. I don't really mind repeating, there are some really nice ones I'd be happy to do again, but I have a problem. The first time I did most of them was with Dan, and whenever I go back it still makes me think of her. I don't like doing things that I did before with someone like that, I'd rather build new fresh memories, but my hiking options are running slim. There's also huge advantages to doing things you've done before - you're an expert at it, and you know what's good. I'm always trying to take people new places, and it leads to a lot of mistakes because doing new things is risky and often it sucks. If I was willing to repeat I could create more magic moments.

There's a whole new kingdom of hiking if I consider going as far as Mendocino or Auburn/Grass Valley , but those are mighty far for day hiking.

The only things I haven't done here are the short Alamere falls hiking in Reyes, and I haven't actually been to the top of Diablo, though I've been around it. I also haven't been to Sunol/Ohlone so that's something to do.


04-14-08

When I have a severe allergy attack, as I have for the past few weeks, I feel like the mucus builds up in my sinuses, behind my eyes, in my temples, more and more goopy gunk builds up in there, the pressure mounts, and it starts to seep into my brain. The little spaces between the brain cells get jammed with mucus, and it slows the electric flow of thoughts, it creates a fog in my mind, a gray haze of mucus that makes me zone out. Then when I eat spicy soup, and sit in a steam bath for a while, and then get a huge long sneeze, I feel like I can pull the snot all the way in one long strand from deep inside my head, and my thoughts suddenly clear and start to move faster.


04-13-08

Bathing with Bierko is kind of funny. It makes me wonder - does Malkovich know that what makes him so funny is that he's just a ridiculously awful actor? When he tries to do a character like in Rounders or Dangerous Liaisons it's awesomely bad. He seems to be a good sport about making fun of himself, but I wonder if he knows what's going on. Do I know that what makes my blog so funny is that my thoughts are amusingly inane?


04-12-08

I finally made it out to Henry Coe on Friday. I've been thinking about it for about a year, but it's an awfully long drive from SF city and the hikes are all long so I never quite made it. It's also really only nice in spring and tolerable in fall so you have a limited window to hit it. Henry Coe is the biggest State Park in CA ; that's not saying much since all the great places are national parks or national forests. It used to be a cattle ranch but was shut down & donated back in whatever year blah blah. It's all rolling hills and oaks and stuff, I imagine it's what 90% of southern California looked like before settlers cleared it (of course its nowhere near its original state either). There are lots of wildflowers in spring and it has a sort of rustic beauty. There's lots of wild life. We saw deer, wild turkeys, and a coyote.

Anyway, the attraction for me was always the swimming hole ("China Hole"). It's a moderately strenuous 5 mile hike in to the hole which keeps the crowd down a bit, at least on week days. It's a nice big clean hole in a river with some fun jumping rocks. There's a bit too much traffic for nudity unless you're an incosiderate freakazoid who likes to show off their wang and belly to hapless hikers. I went with Alissa and we spent a few hours jumping in the cold water then lying out on the rocks to heat up, then jumping in the water again. There were fish and turtles swimming around us, wild turkeys making their psychopathic-clown-laugh sound, and much clumsy buffoonery by me.

I would go more often if it wasn't a 1:30 drive :( ; I put a few pics on flickr.


04-10-08

SF hiking links :

Kevin's Hiking Page
The best overall hiking page about CA. He hasn't added much content in the last few years so it's failing to keep up a bit, but still very well organized and lots of useful information.

Gambolin' Man
Two-Heel Drive, a Bay Area Hiking Blog
Two excellent hiking blogs. Good photos and descriptions of lots of Bay Area hikes. Two-Heel is more strait to the point information, Gambol' is more of a prose poem about the wonders of hiking with lots of great photos.

California Hiking Trail Finder
SlackPacker is a cool site with good general info on how to be a decent hiker. Their link page of CA information is quite good.

.. Hiking in Big Sur ..
Really superb site detailing the hikes in Big Sur.

WaterFallsWest CA Index
WaterFallsWest Blog
WaterFallsWest is a cool page I just found. Obviously it's focused on waterfalls which I don't care that much about, but it's got tons of information on hikes in CA, and waterfalls very often = swimming holes, which gets me pretty excited. It's also a mix of a hiking blog + a useful database which is a pretty sweet combo.

Openspace.org - Your Preserves
The Peninsula Open Space main page ; the site blows but their maps are superb, so just download all the PDF's and figure out your own trails.

Redwood Hikes
RedwoodHikes is a commercial site selling maps & trail guides. There's plenty of free information though and their trail descriptions and photos are very good quality, unlike the shitty bahiker. Even their limited previews of maps are better than most of the free maps you can get elsewhere.

Running Trails - trailrunning tips and information.
Marin County trail running site. I hate trail running, but this site has some useful descriptions of trails with good information you don't often get, like how to link various trails together and water stops and grades. Also, these people are fucking irresponsible douchebags, running up & down steep trails with trekking poles totally ruins the mountain, so if you stop by email them some hate.


Random other hiking links I have :

Waterfalls of California - Traverse Creek Falls; Placerville, El Dorado Natl. Forest
Waterfalls of California - Shingle Falls; Spenceville Wildlife Area, Marysville
Waterfalls of California - Gold Country Regional Map
The Tahoe Sierra A Natural History ... - Google Book Search
South Yuba Trail
South Yuba River SP
South Yuba Map
Popular Day Hikes that Start at Henry W. Coe State Park Headquarters
Point Reyes National Seashore - Maps (U.S. National Park Service)
Nevada County Today's Feature Summer swimming holes They're plentiful along the Yuba River if you know where to look - TheUn
Mycological Society of San Francisco
Malakoff Diggins Shp, Northern Sierra Nevada, California
Henry Cowell The Truck Trail and Fall Creek
Henry Cowell Swimming Hole
Henry Cowell Redwoods Big Rock Hole Swim
China Hole & the Narrows
Camp Spots by Swimming Holes - Weekend Sherpa
Best hikes in the San Francisco Bay Area
BAY NATURE Fields of Color Wildflower Viewing in the Bay Area
Bay Area Hiker Tennessee Valley Trailhead
Bay Area Hiker Memorial Park
Bay Area Hiker Ano Nuevo State Reserve
Arroyo Seco Nude River Hike (NSFW)


04-09-08

Fucking hell, there are some really ideal jobs for me in Seattle. I would like to stay here, I like SF, but work is important, it's 50 hours of your life each week, and doing good work with good people is a huge part of happiness. Friends and clubs and everything that I've found here I could find again anywhere in theory.

In general in human decision making processes, adding another type of factor to the decision make it almost unsolvable. If you're just looking at {job} you can give values to your choice and pick the best. When you start trying to make a decision on {job,location} you suddenly have a metadecision - how to weight the two factors. The problem is they're in different units, so there's no absolutely correct way to combine them to make a single rating, it's totally arbitrary and you just have to "feel" how you want to want the two factors, which leads to dead end logic and circular reasoning and general failures to make a decent decision.


04-09-08

Duh, I guess you all know this, but I just realized that the "M3U" playlist files are just text file lists. So you can easily make them yourself. So you can write your own little apps to aggregate your music in various ways and create playlists by artist, by date, by album, whatever, and put them in dirs together. I guess it's a really obvious use for perl but I just wrote a little C app. You can just google "m3u playlist perl" or "m3u playlist bat".


04-07-08

So I bought one of those retro padded vests that's so popular these days (and by "these days" I mean two years ago). Mainly I just want to look like Bret McKenzie and he wears them alot. It's actually been cold and I wore it one night and realized - padded vests are totally retarded. My arms are the part of me that gets coldest fastest, and the vest leaves that crucial part un-warmed. In fact, if I were to take a jacket and someone told me I could only keep half of it, the half I would keep is the arms!


04-07-08

I'm so fucking upset about the shitty ass media player options. I'm sort of forced into iTunes because it's the only decent way to manage my iPods, but I keep trying to still use WinAmp, but the shittyness of WinAmp is becoming too much to bear. Fucking ass. It's one of those things that makes me disgusted about our whole industry. How is it that people are still making such awful unusable software!?


04-07-08

Went hiking with Ignacio on the back side of Purisima in the "Bald Knob" area. There were tons of cyclists on the road in the way in, but not one single other person on the trail. The main part of Purisima is often crowded and full of mountain bikers, but I guess nobody makes it back there. It was gorgeous, a few nice views, and the trail was all overgrown due to the lack of use, which makes the hike a lot more fun.


04-06-08

The Mission is literally gentrifying before my eyes and it fucking sucks. In the last month we've had 3 new restaurants open, all of which have that fancy well-designed interior that looks good but is way too noisy and not actually pleasant to eat in, and the food is okay but totally lacking inspiration or passion (Farina, Spork, Beretta). Little fancy clothes boutiques have been popping up like the spring wild flowers. And the people who come are the posh set, they're terrified and disgusted of the real neighborhood, and they scurry between their fancy restaurant and their fancy bar and their fancy cars.


04-06-08

Example of how search is fucked :

There are three good web sites about hiking in the bay area : Hiking with Kevin , Gambolin' Man, and Two Heeled Drive. When you search for hikes on Google, quite often not one of those three will show up on the first page even though they have info on that hike. In order to get the information I want, I have to do searches like "portola redwoods kevin" or "portola redwoods gambol" which is fucking retarded.

Step 1 improvement : The system should know I like those pages and automatically give me results within them.

Step 2 improvement : The system should've figured out I would like those pages based on my tastes and how other similar people already rated the sites.


04-06-08

Homosexuality is not corrupting the fabric of America. Unisex pants are. Unisex pants go against everything I hold dear.


04-02-08

I'm going to Big Sur Thu-Fri so I'll be out of touch. Ciao.


04-02-08

Dating & social networking is really weird. I've met people through web sites recently, and it's generally been a really good thing, I've met some great people, so as a way of making real world connections I find it totally succesful. The weird thing is when you actually start dating someone from a social network site and you're still both active online. You see each other online, and the whole nature of the social networking sites almost forces you to be an online stalker, because you get notifications when they write something new, you see each other's friend network, etc. I guess the kids these days growing up with Facebook and whatnot probably find this all totally normally, but I find it really creepy. Not only do you see the other person's blog posts on their page, but you see their friends' comments. There's a whole lot of very private communication between people that is posted publicly these days. You can tell who they're hanging out with, what they did that night, you can see when they post up new pictures, etc. I really don't like it. I'm not super jealous or intrusive in peoples' lives normally, but seeing all these bits of things online leads me to those thoughts.

I've always had a pretty active online life, but unlike the new generation of web 2.0 kiddies, I like to keep it separate from my real world life. I think that's pretty common among the older generation like me, we don't merge our physical and digital worlds so much. I'm okay with taking people from the online life and promoting them to real-world friends, but after that I can no longer be as free around them online, and any intimate communication has to be real world. Once I make too many real-world friends on a certain site, I can no longer be free there and have to leave and go to a new site where I don't know anyone in the real world.

BTW I think we should call web 2.0 sites "BBS's" since they're really not much more or less than an old BBS. They are similarly isolated from each other. They're a similar mashup of forums and other content. The BBS's generally had much better moderation and community management and screening. It's kind of funny that we went from these little islands of BBS's that had many great advantages, and we blew them up and went to the totally spread Web model which threw away the greatness of community forums, and now we're back to basically a BBS model and we haven't really improved on it much at all, except for the trivial UI improvements that you would expect from the huge increase in network speeds and computer power.


04-02-08

BTW I passed the Google job interview. I haven't gone through the offer process yet and I'm not sure that I'll accept it, but I'm happy to have passed the test. I was a little worried cuz I didn't think I really nailed the interview, and they take a long time to respond. I'm used to interviewing at game companies where they give me a job offer the same day and beg me to start work the next day and make promises of back rubs and blow jobs. Googs definitely seems like a good place to work. I'm a little turned off by walking in and seeing the giant rooms full of cubicles and soul-crushed coders hunched over glowing screens.

I'm talking to ILM and PDI to see if there might be a fun job for me there. It seems like it could be a pretty good fit; I imagine they have some smart research guys, but I think I could bring an ability to understand practical issues and implement good technical solutions. But my background is not in film, and they don't know me, and my resume/experience doesn't impress them at all, so I get tossed in with the regular candidate pool and have to list my skills and all that junk, it's quite humbling and I'm really not used to it.

I would be taking a big pay cut & seniority cut at these places, but I'm totally fine with that as long as the work is good. The problem is it's hard to tell if the work really is good. I really don't put salary as one of the more important things about a job, I care more about what work I get to do, how cool/smart my coworkers are, how good the management is, how much freedom I have at work, etc. However, on all those criteria you will be lied to by the people trying to hire you. Salary is the only thing that you actually know for sure you will get what you are promised.

It reminds me of back in the day when I first interviewed at some game jobs, and I interviewed at Valve, and I was kind of laughing to myself inside the whole time, because I could tell the Valve guys were not really impressed with me at all, and I knew that I was a fucking code ninja and they just couldn't see it.

ps. I'm not actually as arrogant as this post makes me appear to be.


04-02-08

I find the Netflix Recommender kind of useless. When I'm browsing around movies trying to find new things, I don't really want rating *correlation* I want movie *similarity*. Like if I'm browsing arty Japanese movies, I don't want it to be telling me "people who liked this also liked" the documentary on Herzog and Kinski, or some damn Ingmar Bergman movie, which seems to always correlate to the stuff I like regardless of the original movie. I want recommendation of other arty Japanese movies. And in fact there's a lot of merit to the graphical representation of something like GNOD, though gnod is a broken ass piece of crap. I'd like to see the nearby similar movies in a 3d space, with the axes meaning something, (the 3 most prominent SVD vectors would make good axes).

Basically a good film-buff human is way better at recommending movies that are related to something I like. That really shouldn't be. The computer has way way more information about my taste history and about the movies that are out there, but it still isn't close to making good recommendations.


04-02-08

Great movies that are a little bit off the radar so you may have missed :

And I also have to mention Emir Kusturica and Takeshi Kitano. If you haven't seen their core body of work, they are absolute must sees; I always think of them as pretty mainstream and well known, but it shocks me to find how many film buffs haven't seen any of their movies.

The core Emir Kusturica set is "Time of the Gypsies" , "Underground" and "When Father was Away on Business".

The core Takeshi Kitano set is "Hana Bi", "Sonatine" and "Kikujiro".


03-29-08

While I'm at it I'll write up the PD I'm using for the record. This is not an exact solution of the PD - it's an implicit Euler step. You can actually totally solve the PD exactly, but using an implicit Euler step actually is more stable than the exact solution, it adds a sort of fake drag which is a nice thing in practice. It's also a lot nicer numerically for doing tiny steps than using the exact solution with exponential functions.

K & D are unitless config parameters of the PD
  K = 1 and D = 1 are reasonable ; D = 1 is critical damping
time_scale = desired time to converge
dt = current time step
x0,v0 = start position & velocity
x1,v1 = target position & velocity

ks = 36 * (K / time_scale)^2
kd = 9 * K * D / time_scale

scale = ( 1  + kd * dt + ks * dt^2 )

a = ( ks * (x1-x0) + ( kd + ks * dt ) * (v1-v0) ) / scale

vt = v0 + a * dt
xt = x0 + vt * dt

If you had no min velocity that would be it. Note the funny scale numbers in ks & kd ; those are just there so that the time to converge roughly matches "time_scale", and so that K = D = 1 is a good choice. Note that K,D, and time_scale are really not three independent parameters, there are only two free parameters, but it's easier to tweak if they're seperated because you can leave K and D alone and just change "time_scale" to match your desired duration to converge.

To handle min velocity you add some logic after the above PD step :

mv = min velocity

if ( |xt - x0| <= (mv * dt) )
{
	if ( |x1 - x0| <= (mv * dt) && |v1 - v0| <= 2*mv )
	{
		xt = x1;
		vt = v1;
	}
	else
	{
		vt = (x1 > x0) ? mv : -mv;
		xt = x0 + vt * dt
	}
}
This is ugly in various ways. The first part was a pure PD that works in N-d. Now we've gone to 1d. Also the first part worked with arbitrary end velocities. This min velocity part only really works for a still target. I think it's not too hard to fix for a moving target by using a min velocity relative to the target but I haven't bothered.

Now of course PD's don't always take the same amount of time to converge, unlike the cubic. Converge time depends on initial seperation and initial velocities. With the constants in the equations above, and if you set up your tweaks right, then you can have a PD that converges in roughly "time_scale" for typical starting situations. Here's how the time varies :

PD convergence graph

the X axis is the "time_scale" parameter, and the Y axis is actualy time to converge. If it converged in the time you wanted, all the points would be on the red line (Y=X). There are four series of points for different starting distances so you can see how converge time varies for starting distances. The distances are {160,320,480,640}. In the graph the start & end points are all at zero velocity.


03-29-08

cubic maxaccel maths

I figure I should write up the maths for the record since I've described it previously but haven't been totally clear. There's an implementation in testdd you can look at.

The goal is to make a curve that goes from initial position & velocity {X0,V0} to final position & velocity {X1,V1}. Position and velocity are N-d vectors. Traveling this curve, you should at no point exceed the maximum acceleration "m". m is a scalar. I'll use caps for vectors and lower case for scalars.

The lowest order polynomial curve that fits these condition is a cubic. A parametric cubic has 4 vector coefficients which can be used to fit the end position & velocities. It also has a free scalar - the time to travel the parametric interval from 0 to 1. This duration can be fit to "m" the max acceleration.

Using the Bezier form we have :

B(s) = B0 *(1-s)^3 + B1 *3*(1-s)^2*s + B2 *3*(1-s)*s^2 + B3 *s^3

s = (t / d) is parametric time
t = real time
d = duration of curve
And fitting to the end conditions :
B0 = X0
B1 = X0 + V0*(d/3)
B2 = X1 - V1*(d/3) 
B3 = X1
Now, the velocity of a cubic curve is quadratic, the acceleration is linear. The means the highest acceleration on the interval [0,1] is either at 0 or 1. So we have to just check the acceleration of the two end points :
A(0) = 6*(B0 + B2 - 2B1)/d^2
A(1) = 6*(B3 + B1 - 2B2)/d^2
Now you have to solve both end points and use the shorter of the two durations. You may want to early out to handle the trivial case, if you can use a tiny value for "d" and not exceed maximum acceleration at either end point, then just return. In fact "tiny value" could be the duration of the frame - if you can step the whole curve in one frame then just do that.

If we just consider A(0) for now we have to solve :

|A(0)| = m
m = max accel parameter

or

A(0)*A(0) = m^2
(B0 + B2 - 2B1)^2 = m^2 * d^4/36
( (X1-X0) - d*(2V0 + V1)/3 )^2 = (m^2/36) * d^4
You can expand out the dot product and you are left with a quartic polynomial in the duration "d". Solve this polynomial. There are in general 4 complex roots of a quartic. You must choose the lowest magnitude positive real root. There should always be a positive real root because all the coefficients are real.

Note that the quartic arose because A was a vector - if we want to just solve the 1d problem it's much easier, because the equation in d is just quadratic. Note that you can not just solve the 1d problem and run it indepedently on each dimension of a vector, because that allows maxaccel in each dimension seperately and gives you curves that are obviously axis-aligned (it breaks rotational invariance of your space).

Once you have solved for the shortest duration "d" which gives you a curve that doesn't exceed maxaccel, you can now simply step along the curve. Note that we are not simply applying a force, but taking an exact step along the curve, you evaluate the position and velocity from the curve at the end of your current time step. This is equivalent to doing an exact integration with a force that is changing.

NOTE : we are not solving this curve once and hanging on to it; our system has zero state. A new curve is solved each frame using the current position and velocity. Because the cubic is exactly constrained, if the external conditions are not changing, then solving each frame will produce exactly the same path as just following the original solution the whole way. If the external conditions are changing, then the path changes smoothly.

ADDENDUM : talked to Drew about this, he made me aware of two issues. One thing I should state clearly : when you are changing the duration of the cubic, you are not just changing how long you take to follow the same curve. Obviously changing the rate of change of the parameter would change the acceleration, but that would also change the start & end velocity. In the math we did here previously, we are scaling the duration of the curve while keeping the real-time start & end velocity constant, which means that we are changing the parametric velocity of the ends of the curve. That means the curve actually has a different shape as you scale the duration.

The other note is that it might be possible to have seperate accel/decel parameters by using a different "max accel" parameter for A(0) and A(1), since you are generally at max accel at the start and decelerating at the end. That's not necessarilly true if the start & end velocities are not zero so maybe a bit more thought is needed, but in general the idea of using different maxaccel to get a control over accel & decel seems possible.


BTW you can also acheive the same purpose using a piecewise quadratic. To use a piecewise quadratic you have 3 phases of travel :

phase 1 : accelerate up to max velocity
phase 2 : travel linearly at max velocity
phase 3 : decelerate to hit target
So in phase 1 you are fitting the end points {X0,V0} and ending max velocity. The maths for piecewise quadratic are slightly simpler, but the logic is quite a bit more complex because you have to figure out what phase to use and also handle the degenerate cases where phase 2 is not needed because you're close enough to the target.

I find the cubic is more appealing because you can just do the math and get an answer. There is one advantage of the piecewise solution, which is that you can have seperate max accel parameters for the acceleration and deceleration parts of the curve, which can give you non-time-symmetric curves.


03-28-08

God damn tattoos are so fucking awful. Why are you putting this nasty dark green badly drawn fucking amateur art on your gorgeous human body. If you're a big ugly man, then WTF go for it, knock yourself out, but if you're a sexy woman then don't wreck yourself!


03-28-08

The romantic relationships you have when you're older can really never match the magic you can share with someone earlier in life (up until around 25 or so). In your first few serious love affairs there are so many new experiences you can have together - really falling deeply in love for the first time, living with someone for the first time, really wanting to spend the rest of your life with someone else for the first time. And even beyond those obvious ones there are just constant new things that you can teach each other and show each other in the world because you're both young and you're still discovering and become adults. When you're 22, you can do things like just go to a fancy restaurant and it's so exciting and new, or take your first vacation that's just you and a lover flying somewhere exotic, or discover new kinds of music.


03-28-08

I'm trying to make a "sexy movies" list because so many people out there are just fucking retarded. Rape and disgusting old men are never sexy. Just because a movie has sex in it does not make it sensual. Cheesy 80's movies are too goofy to be sexy. Super realistic sex or lighting is also not sexy.

The ideal sensual movie is intelligent, titillating, lush. It's a very fine line between cheesy and hot, because you do want a little bit of that orange-light soft-focus over-acting-pleasure, but if you get just an ounce too much it crosses into cheese and doesn't work. The ideal movies tease

There are a lot of classic Hollywood movies from the studio age that sort of qualify, but I'm not going to include any of them because they never quite cross the line from alluring to arousing. Something like "To Have and Have Not" may in fact be more appealing to women, or pretty much any early Brando, Bogart or Cary Grant movie.

I'm also not going to list movies that have like 5 sensual minutes that are sort of out of place in the movie and don't fit in with the general mood.

Not Sexy :

Borderline :

The truly sensual movies are as much about the director and the look and feel of the movie as what happens to the characters. They also have to be good enough to be watchable just as movies.

Sexy (in no particular order) :


03-27-08

How to make casual group decisions.

Typical office conversation around noon : Where do you want to go to lunch? Uh, I dunno, whatever, where do you wanna go? Whatever. Well what about that one place? Mmm, nah, not there. Well how about blank? Nah.

I like to play "Choice Giver / Selector". This is sort of like the fair way to cut cake. One person cuts the cake into pieces, then the other person gets to choose which piece they want.

In "Choice Giver / Selector" , first someone is nominated or volunteers to be the Choice Giver. The Choice Giver should give 2-3 fair options which are reasonably distinct, eg. you can't just give the one option you want and then other straw man options. There's always protection against a bad choice giver, because the Selector gets to choose one of the options, or he can select to swap roles - he says "none of the above" and then becomes the Choice Giver and must give options himself.

In terms of a social dynamic, two details of this are important. The Choice Giver is only giving a few choices - not simply listing every possible option. By only giving 2-3 options he is expressing his own preferences, not putting all ther burden of decision making on the Selector. The Selector also can't just simply say "no" - if he doesn't like the options then he must take on the burden of giving options, and he must then offer 2-3 options that are reasonable and distinct.

I've given the example for two people, but this works in a group too. The initial Choice Giver volunteers or is nominated by the group. The group then votes on the options, or votes "none of the above". If none of the above wins the vote, then the group votes to nominate a new Choice Giver.

Of course it's quite common for people to play an informal version of Choice Giver / Selector but they leave out some of the very crucial aspects of the rules which ruins the entire balance of the game.


03-26-08

Well I promised that I would eventually take my controller stuff out of testdd and put in a .h so it's actually useful to people. Yeah, I'm probably not gonna do that. What I did do is fix my quartic curve solver to actually be correct, and added a "hybrid" cubic version. (hmm, I'm a retard, I just added a ComplexDouble class to cblib and then noticed that std::complex is totally fine and I should've just used that. doh)

Hybrid cubic works like this : if the target is stationary, the max time to converge is set by a user parameter. A shorter time can be used at any time as long as max accel (user parameter) is not exceeded. The result is that you get the desired behavior of the original cubic controller of reaching the target exactly within a certain time interval, and it avoids the weird quirk of sometimes taking extra long curves because it was always taking the same amount of time - now it can take a shorter time in a reasonable non-hacky way. Note that this is not some tweaked out fudgy solution. There are two user parameters : max time to converge & max acceleration on the path, and the cubic path that fits those constraints is found exactly each frame.

I wrote something about this on game-tech but I never posted it here I don't think. To me, PD controllers and this cubic controller thingy seem like very opposite ends of a theoretical spectrum of controllers. On the one end, the cubic curve is exactly symmetric. That is, the path from P0->P1 and the path from P1->P0 are identical under time reversal. The cubic goes from point A to point B in controllable finite time, and basically never overshoots. The PD is sort of the opposite in every way - it's very asymmetric, it attacks hard to cover distance fast initially, then slows down and comes in to settle very slowly (eventually infinitely slowly for a pure PD). A standard critically damped PD will definitely overshoot as part of the price to attacking quick and then stopping gently. In hand-wavey terms the PD feels very "springy" while the cubic feels very "robotic".

Now in theory it would be awesome to have this as a parameter. So if parameter is 0, you get a cubic, if parameter is 1, you get a PD, and in between you can play with how robotic or how springy your controller is. And of course that's easy. You can just blend the controllers. It's important to note why you can blend the controllers - they are stateless and linear. You could just get the acceleration from each and blend that, but that's not exact since with both the PD and the cubic I've solved them to take exact time steps, going to a discrete integrator with a constant acceleration would be lame. But of course Newton's equations are linear too, so I don't need to blend the accelerations, I can just run both controllers independently and blend the resulting position & velocities. This is now in testdd as "mode 10" ("blend").

A quick note on PD's. You generally want a critically damped PD. PD's will never exactly converge, so you need to fudge it. The best fudge I found was a "min velocity" parameter. This make the controller try to at least move you at a speed of "min velocity" towards the target, which cuts off the long exponentail tail of PD convergence and make the end part linear. Now, with this you might go ahead and try using an overdamped PD to reduce overshooting. That does work but it's a little weird looking. I can't imagine why anyone would ever want an underdamped PD, they're just gross. I couldn't find a clean stateless way to give a PD controller a max acceleration. If you do it naively, you prevent it from stopping fast enough and get horrible oscillation. If you try to prevent that naively by allowing decceleration, you get weird looking curves when your points move around in 3D space because you've created a splitting plane where your controller changes discontinuously.


03-26-08

The positive effects of me writing personal things in this space are very very small. The negative effects have been quite large a few times in my life. It's pretty obviously not worth it. I should really delete all the personal stuff and never write anything personal again.

It used to make both Dan and Tiffiny very upset, not because I was writing anything personal about them or our relationship, but because they felt like I was sharing more of my inner thoughts with the anonymous internet than I was with them.

The positive effect is mainly that it leads me to email threads with people I'm close to on a much more intimate level than we would otherwise communicate. I've gotten some very good emails recently because of that, but in theory I could have those conversations with my friends without using a public blog to initiate them. In practice I probably can't.


More : 11/2007 to 03/2008


Back to the Index

Visitor number