This system is retarded. First of all, it severely favors returning champs who have experience with the buzzer. Someone like Ken Jennings can become a real master of the buzzer. The Jeopardy producers might like this because a long running champ is good for TV but it doesn't make for a fair game. Second of all, the point where the buzzing opens is ambiguous and you have to sort of learn what they expect - it's not something you can go into and do well just by knowing the rules. It's not a well designed game mechanic. It would be okay if you got a practice round to get used to the system, but you don't, and if you don't learn it right away you can get too far behind to catch up.
Oddly, the fix for this is trivial and also makes the game more interesting, and lots of other game shows do this. You just let people buzz in at any point after the clue is shown. If they can read the clue faster, they can buzz in sooner. They can also choose to make a strategic decision and just buzz in immediately and hope to know it without seeing the clue. This takes away the arbitrariness and the need to master some weird skill that you can't know in advance, and makes it more strategic and more fair.
1. The coffee steam. When you make your coffee or tea in the morning, leave the kettle boiling so tons of steam is coming out. Breathe this in through your nose repeatedly so you get a ton of moisture in your sinuses. Blow it out. This is like a light/easy version of the Neti Pot treatment, a good way to start the day.
2. The pluck. If you want your sinuses to instantly flush - pluck a nose hair. It's surprisingly painful and irritates the hell out of your nose, it'll give you a violent sneezing fit. Good to use after #1 so the mucus is loosened.
3. The breathe-right strip. Athletes use these, but most people don't know they're awesome just every day. When I have one on I feel like I'm breathing pure oxygen, it's unbelievable how much fresh air I'm getting, my head clears, it makes me realize that just about every minute of my life I'm suffering from mild oxygen deprivation which gives me headaches and makes me feel fuzzy.
One of the few ways that a fixed gear bicycle is superior to a freewheel is that it's far far easier to balance on the bike at a full stop (such as when you come to a light and have your toes clipped in). For one thing, you can roll back & forth which helps, but more importantly, you're constantly in tension between your feet and the movement of the tires, which is what allows you to balance. Inspired by this I got an idea for how to balance on a regular freewhile bike like mine so the fixies can't show me up.
The secret is : brake.
As you're coming in to a light to stop, you apply the brakes to slow down, and you should stand up. You will be standing to balance. Your two pedals should be at the same height, eg. horizontal to each other. Now, as you come to a stop - simply keep holding the brakes compressed, and apply forward pressure with your feet. You are now in a tense equilibrium - your feet are gently pushing forward in the pedals and your hands are holding the brakes which keeps the bike still. This is "The Balance". Once you have mastered The Balance you be able to simply hold here and keep the brakes fully held and be completely still.
When you are working on developing The Balance, you should let off the brakes gently so that you can inch forward very slowly. This makes it a lot easier to balance; if you like you can imagine that you're on a Segway - you have your weight to the front of the bike to hold the brakes, which makes you want to topple forward, you compensate that by allowing the base of the bike to slide forward to get under your falling weight and keep you balanced. When working on developing The Balance, you should stop 5-10 feet behind the crosswalk so you can allow yourself to inch forward very slowly while the light is red. Practice by trying to move as little as possible during the red. If you feel yourself losing your balance, let the bike go forward by releasing the brake, don't put your feet down.
This will be much easier with something like Power Grips - some kind of good toe clips; I can't do it without clips yet but I imagine it's possible. The reason you need to be in tension with the brakes on is so that you can use your leg muscles to move your body and support yourself in balance; it turns the pedals into fixed structures that translate your force to the ground. If you don't use the brake trick on a freewheel bicycle, the pedals will either just let you fall or make the bike move.
The big problem with this "democracy of content" is that people are retards. Say for example you want a recipe. If you just search google you will find recipes from the democracy. Often the top hits will be from places like "cooks.com" or "recipesource" etc. which are themselves user-contribution recipe sites. These recipes are then reviewed by other users. What you get is stuff like this for a top hit :
LOBSTER OR CRAB BISQUE 2 cans cream of mushroom soup 1 can tomato bisque soup 2/3 c. dry sherry 1 c. light cream 2 c. milk 1 (7 oz.) can lobster or crab with liquid (I use crab because lobster is so expensive; lobster tastes better) Blend sherry, milk, and cream into soups in saucepan. Add lobster/crab and heat gently, stirring often, until hot. Do not boil. Very good for lunch with green salad.
This is completely retarded. It's not a difference of taste, it's a problem that 90% of the people in this world are just fucking retarded, and when they get to run the democracy, the institution is ruined. It's not just recipes that have this problem, it's movie reviews, restaurant reviews, articles on politics, sports, etc. To find actually useful valuable content, you have to sift through tons of garbage to find the valuable stuff - and the valuable stuff comes from an old-media style content producer most of the time.
One example I've encountered is with upcoming events in San Francisco. There are tons and tons of sites that supposedly track and report on cool stuff happening, like upcoming.org, flavorpill, nitevibe, etc. When I got here I was excited to check them all out. Guess what, they're all pretty much just retarded crap. Some are user-maintained which makes them crap, and others are corporate but are just trying to make an easy internet buck and not doing good reporting. If you actually want to know about events your best bet is the old-world paper copy of a weekly newspaper.
Now, it's no so bad yet because the old media outlets are still around, but the trend is that they will die. For one thing, they have to actually pay a staff of writers who are knowledge about a topic, they actually review postings and fact check and all those things that the "Web 2.0" sites don't have to bother with. That's a lot of cost overhead and they can't produce nearly as much content. Furthermore, users prefer to go to the "Web 2.0" sites because they can join in the forum and talk about soap operas, make clever tag-lines and hook up for one night stands, become a respected figure in the forum community which boosts their ego, etc. etc. This will kill the old media sites and really fuck us for decent content.
Fortunately, the thing that can save "Web 2.0" is an idea that already exists - the Network of Trust of course. First of all you have to realize that just plain rating systems like Digg don't work, because the same retards that make the content are dominating the ratings. What you need is a system of ratings by people who you trust and/or people who have similar taste to you. This allows you to have a personalized search, personalized view of the internet where you can find the sane people, the good content. In the simplest form, it allows the old internet "Elite" - the nerds and old media - to create a sort of internet within the internet where they can find each other, but more generally there are a huge number of overlapping sub-nets.
ps. I hate the term "Web 2.0" so so much.
1. Health care deduction. Health insurance costs (literally your monthly payments for health insurance) are easily deductible. Your actual out of pocket health care costs are NOT deductible easily (unless they are huge, they have be greater than 10% of your income or something like that). This means that there's actually a big tax advantage to having a health plan with a higher cost and a lower deductible, even if that plan is not the optimal plan for you in a straight sense. I guess with the deduction you're getting a 30% discount or whatever on your dollars spent on the health care plan, so if you can spend another $1000 per year on the health care plan, you only need to reduce your expected deductible payouts by $700 to break even.
2. Estimated tax. If your tax is not being with-held you need to make estimated payments with 1040-ES. There are a lot of funny caveats with this. Basically it's not that bad to just not do it at all. The only penalty is you have to pay the interest they would have earned if they had your money, but presumably by keeping the money you made that interest, so you break even on that. The problem occurs if they think you *intentionally* didn't pay your estimated tax, in which case you're liable for fines and audit and all that. So if you make a good faith effort to estimate and pay your quarterly, it's not a big deal if it's too much or too little, you just fix it up at the end of the year.
3. Credit card for deductions. I hate keeping track of this stuff. The way to do it is really to just get a seperate credit card for "business expenses". The credit card companies want you to have cards all the time, so just get one, it's quick and easy, you use it for all your biz purchases and there you go - records.
4. Seperate home office. If you're working from home, try to get a setup with your "home office" as a separate room. eg. don't just use a corner of an existing room. This is pretty significant and should be a factor you consider when looking at apartments or choosing how to lay out your furniture. To be a legal/safe deduction the home office must be a separate room, so you should prefer apartments with a few small rooms rather than one large one, which is what I would normally prefer.
5. An "Enrolled Agent" is a tax specialist, a CPA is not. You should use an EA if you hire someone to do your taxes and you can find them here : NAEA
Hop Henge (from Deschutes brewery, the prople who make the great Mirror Pond) is an IPA, a classic "hop bomb" and it doesn't disappoint with tons of hoppy bite and aroma. The thing that makes it special is it doesn't have too much of that hoppy bitterness, and has some nice fruity sweet notes to balance the bite. Goes well with my house-made spiced nuts.
Anderson Valley's Dubbel (aka "Brother David's Double") (from the folks who make the very nice Boont Amber) is a dark belgian ale, which is pretty rare in the US but very common in Belgium (I adore the dark Affligem but it's impossible to find here). It's got the yeasty fruity notes that you expect from a Belgian ale, but it has more malt and sweetness which makes it an extremely full sip, you definitely have to chew it and it doesn't need any food to complement it. The lingering taste is only sweetness, it's lacking some kind of depth. It reminds of a few nights I spent in Belgium; right after college I took the summer and backpacked around Europe in stereotypical fashion; I spend a few days in small towns in Belgium checking out Marc Chagall and learning the difference between the French and Flemish Belges, eating the most amazing Gauffres (waffles) in the world, and spending nights drinking this dark sweet high alcohol nectar of the gods in these great fun bars at picnic tables. It was one of the coolest hostels I stayed at, there were always fun people hanging out in the communal room and we'd meet up and go out for dinner and drinks. There was this hot American backpacker girl there who was just looking for fun and "experiences" but I was still in my "sex is for true love" phase so nothing happened.
I know there are tons of fancy beer review sites on the net, but I just can't dig their beer-snob culture yet. I love tasty beer but it's still just freaking beer.
I'll also probably never do crabs at home again. For one thing if I'm going to spend a fortune on some nice protein I'd much rather have a real good piece of beef or pork. For another thing, eating them is such a mess it's worth it to pay to do it at a restaurant. I used to really love crabs when I was a kid, I'd fly out to visit my grandma in Pennsylvania and we'd get Maryland Blue Crabs that were steamed and smothered in Old Bay. I think I just liked it because the eating is so fun, and I love that spicy Old Bay seasoning.
BTW my idea for a better crab bisque : reduce it so it's extra strong. Don't add the cognac and cream to finish like you normally would. Instead make a fluffy creme fraiche infused with chives and drop a dollop in the middle of the bisque, so it sort of starts to melt but stays semi-solid. Revision : that's retarded, the standard bisque method was delicious.
addendum : had bisque the night after with Salmon. I finally did the Salmon Jacques Pepin's slow cook way - you just toss it on a plate (with EVOO S&P) and stick the plate in a 200 degree oven for 45 minutes. The result is so soft and smooth and tender, perfectly rare, really probably the easiest way to make perfectly cooked fish.
ps. how did "Rick Steves" get to be such a prominent travel writer / TV tour host ? First of all, anyone with two first names is to be hated. Second of all, the man is such an unbelievable American dork - he wears fannie packs in this day & age, and he tries to "join in" with the locals and I don't think he even realizes they're laughing at him not laughing with him.
The Edukators - 4/5 - I got this because I'm a closet anti-capitalist and have dreams of creating real social change (and revenge) through anarchist action, so this is sort of vicarious-porn for me. The first half of the movie is satisfying enough in that way, but you start to get the feeling that it's just such trite obvious crap. But then the second act kicks in, and it's a huge shift. At this point you get the feeling that an American director would wrap things up and give us satisfaction with some violence and deaths, some major tragic acts. Instead it stays thoughtful and the characters all deal with their thoughts. A very nice movie in the end.
Mutual Appreciation - 4/5 - This is almost the movie you would make if you wanted to make a sarcastic stereotype of urban hipster cinema. And yet, despite that, I enjoyed it and it worked pretty well, partly because the acting is so simple and earnest, it feels like real people in a student film project and it sort of works.
The Story of Qiu Jiu - 2/5 - the Chinese version of "The Trial" but without the humor. So tedious and repetetive. The major redeeming thing about this movie is the slice of life into Chinese culture; most of the actors are not professionals, just real people, and the city scenes are real cities, not sets full of extras. Would've been a nice 15 minute short.
Swimming Pool - 3/5 - I'm still not sure what to think about this movie. On a totally superficial level, it has the beautiful slow direction of Ozon and the sexy body of Ludivine Sagnier half naked all the time and fucking everything that moves, so your attention is sort of engaged by that. On a secondary level, it seems to be a retread of the horribly cliched older British repressed woman (played by Charlotte Rampling who seems to be type-cast in that role) who travels south to the warmth of the Mediterranean where people live wild and free. Ozon does do a good job of threading an eerie premonition throughout the movie and a stillness which foreshadows the ending, but does a twist ending really redeem the fact that 99% of the movie is totally trite tittilation?
The Grifters - 1/5 - wow, what is the point of this movie? It's so broken on so many levels. It's hillarious to watch John Cusack switch randomly between doing his sort of standard self character, and then going into old-timey Grifty Mc. Grift hard-boiled pulp novel dialogue. The movie sets you up from the beginning expecting a big clever con; a whole complicated scenarios is layed out and Cusack's mentor tells him "never go for the big con; the greatest thrill for a grifter is to con another grifter, to beat him at his own game" - so we totally expect Cusack is going to screw up and go for the big grift, to grift another grifter. Then the Annette Bening character lays out the big con she used to be running. And then - none of it ever happens and we're totally disappointed. I can't believe it won all these awards, this movie is so awful and there is zero point to watching it. If you want to see a good con movie watch "House of Games" or "Nine Queens" instead.
Take My Eyes - 3.5/5 - decent movie about love and spousal abuse. It's somewhat broken because the husband is just made a bit too ridiculous and unlikable, and the little aside with his family that's supposed to make us sympathise with him doesnt' really work and is unnecessary. Fortunately it's Spanish so the scenery is beautiful, all the people are sexy, and that adds a lot.
Zorba The Greek - 2/5 - yikes. Yet another disappointment in my attempt to get through the classics. From the first frame of the movie you know this is the same story as "Swimming Pool" - repressed British/American visits the Mediterannean and blossoms in the emotional openness of the French/Italians/Greeks/Spanish. Okay, you accept that and just go along for the ride and try to enjoy it. But it just fails, and laughably so. Perhaps most disturbing, the Greeks are portrayed as savages, they hardly seem to speak at all, just cawing like crows and grunting, they're provincial, small-minded, afraid of technology, murderous, barbaric - it's shocking that this was written & directed by Greeks. Then our Englishman - he's just so completely wooden that you can't sympathise with him at all, and he never really transforms, even when he's thrust directly into love and violence, he just becomes despicable when he doesn't stand up for himself or his lover. Also the black and white really hurts here; if we actually could get some gorgeous color shots of the greek isles it might make this watchable, as is, not recommended.
The Awful Truth - 3/5 - this is sort of a classic Cary Grant screwball vehicle with lots of banter and quick comebacks and everything you want from one of these movies. But, it's really not very clever, a bit too screwball and not enough smart dialogue. If you want one of these types of movies I recommend "His Girl Friday" or "The Philadelphia Story" instead.
Uptown Saturday Night - 1/5 - this is a "classic" Bill Cosby / Sidney Poitier comedy, from what some consider the golden age of 70's swinging black comedy. Wow, it's bad. I sort of can't tell what parts of the movie are making fun of things and what parts are just so bad that they're funny. Poitier does a horrible horrible job of trying to act like a regular working class person, he really can only pull off the sophisticated well-spoken roles. Cosby is actually really great, but just seems awkward in the material and never really gets to shine. I can't believe they made a whole series of sequels.
The Perfect Crime - 4/5 - "El Crimen Ferpecto ? it's Perfecto with a P !" ; quite a delightful little caper movie, surreal and energetic. As usual with Spanish movies it's full of style, color, beautiful people, and lots of sex. We get the sort of surreal graphic over the top violence that's so fun, a deluded ridiculous protagonist who's so charming we go along with him, and throughout just lots of fun touches that keep us entertained, and the ending doesn't disappoint. It is very sexist, and I was a bit disturbed with the "ugly girl" character who's basically super hot and just sticking out her teeth. This movie reminds me of a thought I often have - I wonder to what extent Almodovar should really get credit for the "Almodovar Style" (which is flamboyant, surreal, sexy, colorful) and to what extent that's just Spanish. If he really did create that style, then almost every Spanish movie in the last 10-20 years has copied him.
It's interesting to compare to my old neighborhood in Austin . For one thing you can see the crazy college-dominated population in Austin and then they all leave. Also the rent spectrum in Austin is very sharp because it's market controlled, the rent spectrum in SF is a much broader histogram because of rent control.
Finally check out the neighborhood my mom used to live - Houston / Bellaire - you can actually see the population spike from the baby boom (I think that's what that is), and there's a huge dip at college age because everyone leaves the area to pursue their lives.
Projection Bombing ; temporary graffiti with a powerful digital projector
How to tie a Shoelace ; I had no idea I've been tying Granny Knots my whole life by tying the two knots in the same direction!! Clear evidence that knot theorists (me) don't tie good knots.
Jackson Pollock painting applet ; also use space bar & click the mouse button.
1. Use a custom allocator. The STL containers do lots of allocations (if you tell it to). Your app should already be using a customer allocator, like dlmalloc, but you still might want to turn on one of the node/pool allocators in the STL because things like map,list,etc. have a very reliable node style allocation pattern. You might also consider using arenas or the stack for temporary work. Just to be clear I'm not talking about the per-container allocator nonsense that the STL supports, I'm talking about changing the overall allocator in the STL which is a non-standard thing but pretty easy. In STLport this is in _site_config.h and _alloc.h
1.B. Most STL implementations come with some replacement allocators you can turn on. Also, most STL implementations are by default exception-safe and thread-safe. That requires some overhead, and if you don't care about that you can turn it off. There's usually a config.h for your STL implementation and you can go in there and hammer on the options to make it more performant. I like to disable iostreams and other things I don't use to speed up my compile. In STLport this is in stl_user_config.h and there's some more in _site_config.h
2. Don't use vector<> like an array. vector is a heavy thing that stores an ordered list. It shouldn't be what you pass around in function arguments - functions should take iterators, or just raw pointers. That allows the client code to just use a regular C array, or some kid of templated fixed-size array<> , or a stack array, etc. If you're going to use vector like an array, then go ahead and construct it to a set size using vector x(5); or whatever. A lot of game developers over-use vector because they think it's light-weight and efficient (it's not), so we'll do more points on :
3. vector<> can be really inefficient. When vector has to realloc it has to destruct all the originals and construct new copies, which can be really bad if the contained things do allocations. Most of the other containers don't have this flaw, so don't use vector<> on things that allocate. Or, make sure you reserve enough space so it doesnt have to realloc. People often write really bad code for building lists where they just start a vector and keep pushing onto it. vector<> also doubles when it has to grow which can be really dumb in some cases for games. A lot of people in games use vector<> when they're really just going to be adding things in one spot and never again, well vector's very heavy for that and the memory used could be close to 2X as much as actually necessary.
4. A pointer is a type of iterator, so all the cool algorithms that work on iterators work on pointers. So you can just use flat C arrays and still use the STL. In particular if you have a sorted array, you can use binary_search and such to do logN lookups and you don't need to bother with a map<> or whatever.
5. The string in the STL will do a ton of allocs, especially if you do something evil like vector< string >. If you're going to use strings much you really want a COW ref-counted string which will allows you to do things like sorting without a ton of allocs. BTW I personally still use COW strings in threaded apps & use the STL in non-threaded support mode in threaded apps. All communication between threads I do either with primitive types only or with manual protection. This is just because I'm a major threading paranoid lunatic and like to keep my threading as simple and contained as possible.
6. Override the std::swap and std::hash when appropriate. The STL algorithms for sorting and insertion and such make use of swap() to avoid allocs. The default swap() uses a temporary which is very evil if your object does allocs. Say for example you have a simple Buffer class which owns an m_ptr. The standard swap() will duplicate it, assign it, delete the temporary. You should replace it with a swap that just swaps the internal pointer. This is a huge performance issue if you ever try to sort or insert in a list of these things. Similarly for the non-standard hash_map , if you want to key your hash_map on anything other than an int it might do something very stupid unless you define your own hash() function which does something reasonable. (and even if you're just keying on an int, if you know the range the int takes you should use that info to define an optimal hash) (BTW see also Google's SparseHash and Super Fast Hash )
7. The STL containers and algorithms are very well implemented for the constraints that they are designed for, but if you don't care about those constrains you can obviously do better. Don't bother trying to replace them with some other totally generic container, but if you're doing something that doesn't match their constraints then by all means write your own thing. For example you might want some kind of container where you don't really care how long it takes to build but you want the lookups to be as fast as possible, well then you can easily beat the STL because their containers all limit insertion time.
8. If you're paranoid about performance like me, make all your constructors "explicit" so you don't get any implicit temporaries. (IMHO this is a good style thing to do regardless of performance, but the performance nazis also like it because it means there're no hidden constructors happening so they can sleep at night).
9. The return-value-optimization only happens when the function is inlined, so for functions where performance is important, either don't return by value, or use __forceinline and/or make sure the function is very simple. This goes for constructors as well. Also try to use the initializer list in constructors as much as possible, because it eliminates temporary initialization of those variables which may be expensive (eg. don't let things just default construct and then fix them in the code of your constructor). (BTW LTCG sort of makes this go away if you trust it to take care of all sorts of magic for you, but I prefer to not trust it and then if it can make things even better then that's awesome).
BTW , Won made an interesting reply and I made some revisions. He pointed me to this VList thing which is sort of interesting.
Unfortunately, some of the things that make the overheads of C++ almost free on a modern processor (large caches, out of order execution, complex load-store units) have already disappeared from current consoles and may be disappearing on future PC's. That blows.
Anyway, this thought process makes me doubt the common assertions like "Perl code is an unmaintainable mess". Yeah, maybe, but I believe that largely because the Perl code I've seen is an unmaintanable mess. Maybe I've just seen bad perl code? I've certainly never tried to write a large clean app in Perl, so maybe you totally could and it would be fine if you had a strong style guide, etc. The same thing goes for contentions like "X language is too slow" - is it really, or is it just a matter of newbs not knowing how to write fast code in that language? (I guess the best way to compare language speed is to look at those contents where people write speedy algs in different langs).
(I'm not implying that I don't have these human flaws, in fact I probably have them more than usual, but I try to fight them as much as possible)
Another thing keeps happening recently where I do some minor thing which I slights a friend and they hold it against me as some major transgression. I sort of don't care any more so I just roll my eyes and say "whatever" and might never interact with them again pleasantly.
On second thought, the more depressing thing about the exchange is what a jerk I am and what a bad communicator.
It's interesting to me the way SF has all these micro-communities that feel like small towns. NY or any other big city has them too I guess, but NY is so big that each area is like a city. SF the city is actually pretty small, so each neighborhood is more like a small town, where you can get to know all the shop-keeps, not just on your block but in the whole neighborhood. The 'hoods tend to hate each other, and travelling to another 'hood is like taking a day trip, you pack a lunch and wear your travel clothes and you laugh at how different the people are in this strange other town (that's 1 mile from your home).
I've also read some weird stuff on drives. In the old days I'd always heard that the spin up/down was the most dangerous time for a drive, that just having it on and spinning wasn't very bad for it. Now recently I've read that the main thing that makes drives fail is just their total spinning time, so spinning up & down all the time will actually make a drive last longer. That's a direct contradiction with the common wisdom that I'd always gone by.
- ► 2014 (48)
- ► 2013 (87)
- ► 2012 (134)
- ► 2011 (237)
- ► 2010 (310)
- ► 2009 (362)
- ► 2008 (697)
- 03-31-07 - 3
- 03-31-07 - 2
- 03-31-07 - 1
- 03-30-07 - 1
- 03-26-07 - 2
- 03-26-07 - 1
- 03-25-07 - 3
- 03-25-07 - 2
- 03-25-07 - 1
- 03-23-07 - 3
- 03-23-07 - 2
- 03-23-07 - 1
- 03-21-07 - 5
- 03-21-07 - 4
- 03-21-07 - 3
- 03-21-07 - 2
- 03-21-07 - 1
- 03-19-07 - 3
- 03-19-07 - 2
- 03-19-07 - 1
- 03-18-07 - 4
- 03-18-07 - 3
- 03-18-07 - 2
- 03-18-07 - 1
- 03-17-07 - 2
- 03-17-07 - 1
- 03-15-07 - 2
- 03-15-07 - 1
- 03-14-07 - 2
- 03-14-07 - 1
- 03-13-07 - 1
- 03-12-07 - 4
- 03-12-07 - 3
- 03-12-07 - 2
- 03-12-07 - 1
- 03-10-07 - 1
- 03-08-07 - 4
- 03-08-07 - 3
- 03-08-07 - 2
- 03-08-07 - 1
- 03-05-07 - 1
- 03-02-07 - 1
- 03-01-07 - 2
- 03-01-07 - 1
- ▼ March (44)
- ► 2006 (654)
- ► 2005 (696)
- ► 2004 (226)
- ► 2003 (74)