December 14, 2009
There are so many different ways to be annoying that it’s probably pointless to have a Distinguished Number One Most Annoying Category of Person type award, and so I don’t try. But one that surely makes my hypothetical top ten is the Non-Racist Racist.
Everyone in America has met this guy - though my honest impression is that there are a lot more of them “up here” (in the North) than there are “back home” (in North Carolina - nominally part of “The South” - though not, of course, the Alabama South). He’s the chap who will take any and every opportunity to condemn the most specious expressions of “racism,” but then doesn’t mind turning around and - stricly in confidence, of course - making a couple of COMPLETELY racist jokes on the sly.
I work with such a person, and it’s starting to get really fucking annoying. Some examples follow.
As a joke, someone hung up this image on the back door:

Along with a caption that went something like “If you can’t find the book you want, you might be at the WONG FOOK HING bookstore!” HAHAHAHA!!! Ok, actually, I admit, I DO think it’s funny. I chuckled a couple of times. And everyone generally thought it was funny until the completely Non-Racist Racist showed up, at which point we had to hear him sigh a lot and carry on about how completely unfunny he thought this was. I bit. “What’s wrong with it?” “Well,” he explains, he lived in Taiwan and was the butt of racist jokes by Chinese people, so he’s just really sensitive about racism in general.
Uh-huh.
In what way, exactly, is this racist? It’s a pun. Sometimes it just so happens that completely innocent syllable combinations in one language happen to strongly resemble not-so-innocent syllable combinations in other languages. This is one of those cases. I’m pretty goram sure the person who snapped the photo wasn’t anti-Chinese, he just noticed one of these coincidences, chuckled a bit, and then applied the Wonders of the Information Age to share it with his friends … who then shared it with their friends who then shared it with their other friends and me and the Completely Non-Racist Racist are in the transitive closure of that somewhere. Laughing at coincidental syllable chains may be juvinile, but it’s pretty certainly not “racist.” When I put this to him, he says “yeah, because they [the people who put up the sign] assume that all Asians talk like that.” Which is a COMPLETELY asinine thing to say considering that billions of Chinese people DO talk “like that.” “Wong Fook Hing” is presumably someone’s name transcribed in some reasonably faithful way - which I can corroborate with evidence from orthographically-descended Japanese, in which the second character from the left would be pronounced “fuku” (aka “fook” in a parent language with closed syllables) and the last character is the first of a compound that means - what else? - “bookstore.”
Which is what’s alternately hillarious and tragic about Completely Non-Racist Racist type people: what counts as “racist” to them isn’t actual racism, it’s just any time anything at all negative is said about someone non-white it’s assumed to be “racist.” In this case, it’s not even negative, really, it’s just us having a laugh at a linguistic coincidence, but because it’s in some broadly-defined sense “at the expense” of Chinese, it must be racist. Great.
Anyway, here’s the punchline. Not three days later the same guy is complaining to me about how women can’t drive. And he finishes up with the normal invocation to the PC Gods - “I’m not sexist or anything, but when I see a driver do something boneheaded it’s just usually an Asian woman.” Got it? The guy who’s so totally concerned about anti-Asian racism that he can’t even bring himself to laugh at the “Wong Fook Hing Bookstore” can nevertheless generalize with impunity that Asian women (ASIAN WOMEN!) are shitty drivers.
Fuck. off.
It happened against recently. Some black kids pelted him with rocks for no reason when he was walking about town recently. Which was the best thing that could’ve happened to him, actually, because now he gets to come to work and bait people into asking him what race the kids were. Much to his chagrin, he’s only had two takers (no, I’m not one of them thank you very much!), which probably isn’t as many as he was hoping. But much to the rest of our much greater chagrin, the number is still non-zero, which licenses him to tell everyone who will listen that colleague X’s first question was “what color were they?” And having said this, in turn, licenses him to launch into a pious rant about how that has absolutely nothing to do with anything - how it can’t possibly matter, etc. etc.
Of course, it can and does matter. If a group of black kids is throwing rocks at white people, it might be that they’re equal-opportunity rock-throwers, sure. It might also be that they’re racist rock-throwers. After all, I’m pretty sure the Completely Non-Racist Racist would have no trouble believing in and loudly denouncing the idea of redneck white kids throwing rocks at black people. Don’t get me wrong - technically he’s right that barring further evidence we don’t know that race was a motivation in the rock-throwing. But since race frequently IS a motivation in these types of petty crimes, I’m likewise not sure it’s fair to leap to the conclusion that anyone who asks what the race of the rock-throwers was is automatically racist. They might just be concerned about racism in general, rather than white racism exclusively. And of course it need hardly be pointed out that anyone who thinks that black kids are incapable of forming gangs and pelting white people with rocks for racist reasons is themselves a racial essentialist - becuase it assumes that there’s just something especially evil about white people that only they would ever pelt members of different ethnic groups with rocks for no reason.
Here’s the other punchline. IU lost pretty bad to Kentucky here in Bloomington yesterday, and the Completely Non-Racist Racist was there to see it happen. He, in fact, showed up almost two hours late to work without telling anyone he was going to be late for that reason. To hear him tell it, IU’s major disadvantage was that “their side had lots of kids who were a lot bigger and a lot blacker.” Because, the guy who believes that race cannot possibly be a factor in whom gangs of similarly-ethnicized youths decide to pelt with rocks apparently has no problem correlating it with basketball ability.
Fuck. OFF.
Here’s the moral of the story. Just SAYING you’re opposed to something doesn’t make it so - you have to ACTUALLY practice what you preach to get credit for it. If you want to be non-racist, I’m all for it. Yay you! But your goal is NOT achieved by simply telling everyone who will listen how totally non-racist you are. It’s achieved, rather, by NOT DRAWING SPECIOUS RACIAL GENERALIZATIONS, THAT’S HOW! If you want to be non-racist, you might start by not automatically assuming that any asian woman you meet is a bad driver. Or by not automatically assuming that the more black people a basketball team employs the better it will be. Oh, ho, ho - but what if these are honest observations? What if, after 40+ years on the planet (this guy is at least 40), the numbers are in and that’s the obious conclusion? Well, so be it - you can’t unsee what you’ve seen. But if you’re going to go around saying things that can be construed by overzealous PC types as racist without actually meaning them in a racist way, then you owe everyone else the courtesy of not being “that guy” when they’re doing the same thing.
The thing is, I think Completely Non-Racist Racists are made not born. They’re the inevitable product of any approach that tries to regulate attitudes rather than simply arguing the point - such as America’s approach to dealing with its racism problems. Don’t get me wrong - such approaches are frequently better than doing nothing at all, and they do tend to have as side-effects that real, underlying changes result. Pious public disapproval of the appearance of racism has no doubt done SOMETHING to alleviate the racism problem in this country. But such approaches are nevertheless still always inferior to actually attacking the actual problem - and that’s because they also provide cover for the guilty. When even innocent puns come under public suspicion, people like my Completely Non-Racist Racist colleague will have no trouble finding inexpensive opportunities to remind everyone how non-racist they are.
December 12, 2009
In arguing with a friend about the appropriateness of Congress regulating college football championships, it occurs to me that this is a great example of Hayek’s law vs. legislation distinction. My friend, you see, is trying to argue that while he doesn’t necessarily think Congress needs to or should get involved, the law as proposed is nevertheless valid - because it’s attacking a form of fraud. Since everyone understands a “championship” to be a contest between the elite of a given sports league to determine which among them is best, it’s not clear that the BCS qualifies as a “championship.” This is because in the BCS, matchups are determined by poll and computer, so it is possible for all kinds of counterintuitive things to happen - such as undefeated teams not qualifying for the “championship” game. My friend is certainly right that this isn’t your typical “championship series” as most people understand the term.
In that sense, he has a case for this being “illegal” in the Hayekian sense of Law (nomos), rather than Legislation (thesis). “Law” is what a community understands to be the rules - the kind of “rules” that emerge from years of tacit agreement and overt negotiation. “Legislation” is what is actually written down in the codified law books - acts of Congress and such. So - for example - Legislation says that I have to drive exactly the speed limit or less (down to, in some jurisdictions and for some speed categories, a legislated minimum), but Law says that I’m allowed to go a little faster than that, that I won’t be arrested for anything up to 5mph over the legislated limit. And, for another example, Legislation says that I cannot help myself to a small snack out of a bulk bin at a grocery store without paying, because that’s stealing. The fact that people frequently do this with impunity, however, tells us that this is not “shoplifting” in the sense of Law. It is probably still petty theft - and we know this because the community doesn’t approve, exactly - but it is nevertheless not shoplifting because there’s general consensus that arresting someone for such a thing would be going too far. It’s “shoplifting” in the sense of Legislation no matter how much you take, but only “shoplifting” in the sense of Law if it’s done repeatedly with no intention of buying, or if the ratio of takings to purchases goes over some fuzzy community standard.
So what my friend’s argument boils down to - without his personally being aware of the terms - is that the BCS is currently in violation of the Law on what championships should be, but not of Legislation, and that since the legislation proposed aims to bring Legislation in line with Law, there’s no real damage, even if he personally probably feels that it’s a bit too intrusive.
My own response, then, would be to say that while that may be true for “championships,” it’s not true for “fraud.” By the letter of Legislation, the BCS probably is a form of fraud - because it markets as a “championship” game something that few people understand to meet the qualifications. But I think that in terms of Law it is not fraud at all - because no one who follows BCS is under any illusions about what he’s getting. In terms of what’s on paper, any kind of a misrepresentation of what you’re selling counts as fraud, of course, but in reality I think few of us consider anything to be REAL fraud unless there is some danger of a reasonable person getting tricked. And in the case of BCS, there just isn’t any such danger. Exactly no one who cares who the “best” team in college football is enough to watch the bowl series will have been tricked into thinking that the series settles that question. So it’s just not fraud in the sense of Law.
So we have a dilemma. On the one hand, Legislation is already in line with Law in terms of barring the BCS on grounds of fraud. On the other hand, Legislation is not in line with Law on the matter of whether the BCS is an actual championship. Since there doesn’t seem to be a way of resolving both issues simultaneously, my suggestion would be that we pick one - preferably the more important one, where “importance” is, of course, political importance. Clearly, preserving the integrity of the law with regard to fraud is more important than preserving the integrity of the law with regard to what can and cannot technically be called a championship. Ergo, the bill should not be passed - or even further discussed on the House floor.
If Congress passes this bill, it will essentially be saying that making sure that Law and Legislation are aligned on the subject of what can and cannot be called a “championship” outranks making sure Law and Legislation are aligned on the subject of what is “fraud.” A fine set of priorities.
December 10, 2009
So, there’s this bill that made it out of committee in the House to regulate what does and doesn’t count as a “championship game” in college football. It probably won’t pass. There is no similar legislation in the Senate, and most of the public comments from other members of the House indicate that they understand that the bill is silly.
Let me repeat that - they understand that the bill is silly. I’m not sure, however, that they understand why the bill is silly.
Is it because - as Rep. John Barrow (D-Georgia) put it - “… I really think we have more important things to spend our time on?”
Nope. Well, sort of. It’s true enough that Congress has better things to do, and it’s true enough that with the scant number of hours that Congressmen actually work they can’t fit an infinite, or even reasonably large, number of priorities into a given legislative session. They have to perform triage, and Rep. Barrow is right that no reasonable triage system would let this pass. But he’s still wrong about why it should have been weeded out. NOT because it’s unimportant (true though that certainly is), but…
…maybe Rep. Zack Space (D-Ohio) has the answer.
Space said that with people facing tough times, the decision to focus on college football sends the “wrong message.”
Ah, ok, ahem, NO - NOT THAT EITHER. Or, erm, I guess not - I have to admit I’m having some trouble parsing this one. What “message” does letting this bill out of committee send, exactly, and in what way is it “wrong?” What would the “right message” at this particular point in time be? And, more to the point, if Rep. Space knows what that “right message” is, can’t he just go ahead and give it to us, rather than letting the committee keep banging its head against the wall like one of those toy monster trucks until it makes it through the door?
By the way - there are people named “Zack Space.” Just sayin’.
OK, I know, you’re shuddering with anticipation, so here comes Christmas! The REAL reason why this bill is silly is BECAUSE…
…REGULATING FOOTBALL ISN’T CONGRESS’ FUCKING JOB!
Honestly - it’s like calling a plumber to come fix your computer. Imagine a world where there was just the one job - a generic “fixit man(/woman/person-of-nonspecific-gender)” - that covered ALL repairs. So, actually, it would be really convenient in terms of getting someone out to your house when something broke. It would definitely have that going for it. You drop the blender, it cracks, and so you dial 1-800-FIXDUDE, and some person who fixes things shows up at your house. Only, once they get inside, just your luck, it turns out to be someone who’s really better with lawn mowers than blenders. Ah. Well. Maybe we were better off back in the days where you called up the kitchen appliance specialist to fix kitchen appliances, and the yard equipment specialist to fix yard equipment. Back when brain surgeons did brain surgery and you called a proctologist to deal with your back door.
And yet, this kind of hypercentralized model is exactly what certain supporters of the bill are expressly advocating. Some evidence from Rep. Joe Barton (R-Texas):
“What can we say — it’s December and the BCS is in chaos again,” said the bill’s sponsor, Rep. Joe Barton of Texas, the top Republican on the House Energy and Commerce Committee. He said the BCS system is unfair and won’t change unless prompted by Congress.
So you see, if there’s any unfairness of any kind anywhere, Congress is allowed to fix it. JUST ’cause it’s unfair!
Great. Well I remember picks for kickball teams in elementary school being unfair - is that on the agenda, then?
Presumably not - nor should it be - and not because it’s actually fair (it isn’t), but just because at some point fixing the unfairness in the world is just too damn expensive and/or none of your business. You can’t - just can’t - be an expert at everything. And even if you could, it’s not clear that there is a general solution to the problem of “unfairness” to begin with.
I like to think of it as the Heisenberg Uncertainty Principle of politics. I’m no physicist, so I’ll let Wikipedia do my talking here:
In quantum mechanics, the Heisenberg uncertainty principle states that certain pairs of physical properties, like position and momentum, cannot both be known to arbitrary precision. That is, the more precisely one property is known, the less precisely the other can be known.
And the classic example, as we all know, is the speed and position of certain subatomic particles. The more you know about where they are, the less you know about how fast they’re going, and vice versa. And the reason this is so is because whatever you do to determine the speed of the particle actually changes its position, and whatever you do to determine the position changes the speed. And the more you want to know about speed, the more of that thing you have to do, consequently disturbing the position to the point of complete uncertainty.
Politics is like that too. If you want unfairness to go away, you have to have two things: control over the situation, and (accurate) information about the situation. The paradox is that the more control you have over it, the less information you have about it - and the more information you have about it, the less control. And that’s because getting information about something means letting it do what it does without your interference, so that you can observe it. Once you start controlling it, well, you get control, but you have to give up on understanding because the system will no longer be following its natural inclinations.
Price controls are the classic example here. As so many have pointed out, there is no such thing as a truly objective standard of value. “Valuable” is only to a particular person in a particular situation at a particular point in time. The prices that you get at the market are already an abstraction from that - or, rather, an aggregation of all the desires of all the people participating in the market at some common point. Some people buy lots of shoes because they want them, some people wait to buy shoes until they really need them, sometimes it’s cheaper to make shoes, sometimes it’s more expensive, some people have one pair of shoes, some have several - etc. All of this gets washed down to a handful of goods at a handful of prices. If you want to know what the value of shoes is, you have to let that price float so that you can get all this information. The price will approximate the (aggregated) value. Of course, if you just want to know what the price of shoes is, you can hold it artificially steady. The catch is that the more you fix the price of shoes, the less it tells you about how valuable they are. And that’s what the Soviets learned the hard way, of course. Once you fix the price of bread at something that “seems reasonable,” then either it’s out of everyone’s reach (as was the case with vodka in the 80s), and people find substitutes, or it’s too low, and people buy too much of it, and there are shortages.
Another classic example would be the Hundred Flowers Campaign in China. This was a two-year period when government ideological controls were lifted - and it’s widely believed to have been a deliberate trap to flush out all the dissidents. You liberate the press, allow dissidents to express their views, and then hammer down the nails that stuck up. Whether or not that was the intention from the outset, there’s no doubt that a LOT of people were arrested when it ended - and that’s kind of the point. You can control the press, or you can know who your enemies are, but you can’t do both. To the extent that you control expression, you destroy information about dissent. But of course if you know who the dissidents are, then only because you have not been controlling the press.
I think this generalizes. We can never completely eliminate unfairness because to the extent that we are actively involved in making things fair, we are destroying necessary information that we need to implement fairness. And of course if we have all the information that we need to implement fairness, then only because we haven’t, in fact, been implementing it. So there’s a tradeoff, and the very existence of that tradeoff implies that the world will never be completely fair - at least not as a result of top-down solutions. Because we have to allow some amount of unfairness in order to get the information we need to make things fair at all.
The problem with so many government solutions, in fact, is that they’re like having a central “repairs” office that employs “repairmen” whose job it is to “fix things.” These solutions sound great on paper, and they do typically do a great job of eliminating one generally superficial annoyance. The problem is that in eliminating that annoyance, they usually cause more problems than they fixed, and precisely because that annoyance was the price you were paying for your information. The annoyance in the case of repairmen is that you have to call different ones to fix different things. Government can “fix” that by making a central repairs office, but only with the hugely ironic side-effect that a lot less stuff will get repaired.
Can Congress fix unfairness in college football? Well, probably, yes - at least this minor bit of unfairness (they can’t, obviously, guarantee that all refs make the right calls, or that recruitment methods are wholly transparent, etc.). But is the fact that unfairness exists in college football enough to justify Congressional intervention? Certainly not. Congress is not, strictly speaking, in the business of eliminating unfairness. That’s a hugely complicated task that should no more be left up to a central authority than repairing broken machines should. Congress is perhaps in the business of eliminating a certainly narowly-tailored form of political unfairness - the unfairness associated with violations of rights. Since the framers can’t have anticipated everything about the day-to-day minutiae of running a nation, and since they in fact didn’t even try, we have a Congress that resolves complaints and implements suggestions for dealing with unanticipated situations brought by the people (the House of Representatives) and the states as political entities (the Senate), which are then subject to interpretation by the Executive and review by the Judiciary - the Executive in terms of their enforceability and the Judiciary in terms of their relationship to the existing body of legislation (specifically whether they conflict with this body). The way I understand this setup, it isn’t the government’s job to “do good.” That’s up to the people. Rather, the government just provides a framework in which the people do good (or not, as the case may be).
In any case, there are two very good practical reasons why no government anywhere should be involved in actively “doing good.” The first is that - as mentioned - it’s futile. The problem of human unhappiness is (much) bigger than any government, and as is usual with these things, when you try to impose simplistic solutions onto complex issues, you just get ever-more-complex issues. The second is that it’s overkill. It’s like using a powerdrill to tighten the screws on a clarinet. If the general problem of human unhapiness is bigger than any government, then the individual manifestations of it are much smaller. Governments can and often should get involved in resolving systemic unfairnesses. But minor unfairnesses that don’t threaten the functioning of the system in any way? There are more precise tools for dealing with these. In particular, in the case of the Bowl Championship system, it’s not clear that anything unfair is even going on. From some objective point of view, sure. Objectively speaking, it seems like a poor way to set up a championship, and it may in fact be an abuse of the term “championship.” But saying that this is a job for Congress simply because it’s “unfair” confuses the (mathematical?) issue of game system design with the political issue of safeguarding rights. No one who follows college football is under any illusions how the system operates. It may be a bad system, but then so are CandyLand and Hungry, Hungry Hippos, and no one has suggested that we ban these games simply because the method by which the winner is chosen is arbitrary. They are, perhaps, poorly-designed games from some sort of academic point of view, but it’s not clear that their purpose is to be well-designed. They’re distractions - and, ultimately, so is college football. If the confusing championship system gives people lots to discuss over beers in bars, then maybe it’s functioning just fine.
It’s not up to Congress to decide. This is not what Congress was designed for, nor can I think of a compelling reason why we would want to update our understanding of Congress’s mission to include this kind of thing. THAT is why this bill is silly - because it sticks Congress’ nose into an issue where it is unwelcome, unqualified, probably unnecessary, and in any case philophically unsuited to intervene. The fact that many Congressmen understand that they shouldn’t be doing this without understanding why is symptomatic of this nation having lost its way.
December 9, 2009
Vim makes everything better. But there are two areas where the Emacs gang really has us beat. One is in getting applications to use Emacs key bindings for their native editors. Open just about any IDE, and you can use it like it’s Emacs. Not with the full featureset, of course, but at least an Emacs guy can get from 0 to 60 in a reasonable number of seconds. Hell, even your basic web browser supports them. Vi keys get more and more support as the years roll by, but basically it’s still nothing you can count on, and when it does happen, it’s usually a pathetically small subset of Vim functionality. I assume that this is because implementing escape mode requires something over and above a macro language. Now, we could get around this by tricking out Vim to act like a proper IDE, but … well, that’s the second and by far more important area where the Emacs crowd has us beat. I admit I don’t have anything to go on here but my hugely unscientific impressions, but it seems to me that Emacs has more of a tinkering culture than Vim does. Vim is, of course, fully customizeable, and large numbers of people do customize it. But it seems like given a roomful of hackers, half of whom primarily use Vim and the other half of whom primarily use Emacs, you’re likely to get a much larger show of hands for the question “Who knows Emacs Lisp?” than you are for “Who knows vimscript?” And some of the Vim users might even be those who know Emacs Lisp! Although, now that you can compile Python interpreters into Vim, maybe we’ll start to see more interest.
Vim users just seem to be a more satisfied crowd - and satisfaction is arguably a programmer’s vice.
No, I didn’t just quote Larry Wall. Erm. You never saw that.
Anyway - I’m a case in point. I’ve been using Vim since 2003-4-ish, and I’ve constantly wanted Intellisense. And only today did I really do something about it. And, unsurprisingly where Vim is concerned, the feature is definitely there and easy to install, it’s just that most of us never get around to doing it because there isn’t really anything like a Vim community to speak of, and if your Vim-using friends know about it, they just never get around to telling you. Presumably because another characteristic of Vim users is humility - arguably another programmer’s vice.
My particular problem was wanting code completion for Qt, which I’ve had to buckle down and admit is my favorite programming environment. (I’ve tried everything else in the last couple of days - Objective-C, Java, Haskell, C#.) And of course, while you can get Emacs keys natively in Qt Creator, it comes with a Vim mode that is frustratingly limited. I just want Vim. And I want it to do my lookups. Is that so much to ask?
On Linux, no. There’s a great page to tell you how to do it here. Unfortunately, it doesn’t quite work for Mac. So here are the steps to getting code completion for Qt4 in MacVim.
(1) Download the OmniCppComplete plugin.
(2) In your ~/.vim directory (make this if you don’t have it - or substitute with your other distinguished plugins directory if you have another location you prefer), unzip it.
(3) Make a distinguished directory for holding tags files (I used ~/.vim/tags, as suggested on the linked Wiki article).
(4) Download the cpp standard libarary headers to this directory, and unpack it
(5) You’ll need to install a new version of ctags, because the system version on the Mac doesn’t work in quite the way you need. Get it here. Doing the normal
./configure
make
sudo make install
thing will install it in /usr/local/bin - so that it doesn’t collide with the system ctags (in /usr/bin).
(6) Now use this ctags to create the files you need in your tags directory:
/usr/local/bin/ctags -R --c++-kinds=+p --fields=+iaS --extra=+q
/--language-force=C++ cpp_src
mv tags cpp
(7) In your .vimrc file, add the lines:
set nocp
filetype plugin on
set tags+=~/.vim/tags/cpp
Now the next time you fire up vim with a file that has a .h or a .cpp extension, you should get code completion support for the C++ standard libraries. To test it, type something like:
std::v
- and if it doesn’t automatically offer to complete for you, hit Ctrl-x, Ctrl-o to force it. You should get a popup list that you can scroll in. And if you hit a couple more keys, it will narrow it down some.
(8) Another wrinkle in the instructions given on the page is that Qt4 doesn’t install to the same place on Mac as it does on Linux. So, to create the tags for Qt4, cd back to your tags directory, and run the special ctags again, but this time against the Qt headers:
/usr/local/bin/ctags -R --c++-kinds=+p --fields=+iaS --extra=+q
/--language-force=C++ /Library/Frameworks/QtCore.framework/Headers
mv tags qt4
(9) And then, of course, make Vim aware of the new tags file by adding this to .vimrc:
set tags+=~/.vim/tags/qt4
(9.1) If you’ve had vim opened this whole time, you’ll of course need to resource your .vimrc file to get it to notice the new tags:
:source ~/.vimrc
And, voila! Code completion for Qt! You will never need another toy.
Oh - well, maybe one more. While looking this stuff up today, I also came across this plugin that no C coder should be without. It allows, among other things, rapid switching between header and source files. OK, and maybe two. On the linked wiki article, there’s also a nifty macro for automatically adding tags for your very own project directories. Here’s the obvious Mac mod of that suggestion:
map <C-F12> :!/usr/local/bin/ctags -R --c++-kinds=+p
/--fields=+iaS --extra=+q .
Happy Vimming!