Highest Rated Comments


JamesMickensAMA77 karma

There are a lot of reasons why there aren’t more blacks in CS. I think that CS and STEM jobs are viewed positively in the black community. However, I think that the lack of African American role models is discouraging to black kids who might be thinking about a career in technology. I think that teachers and professors (often well-intentioned ones!) can implicitly or explicitly discourage ethnic minorities from STEM careers. There’s also an issue of social capital. A lot of stuff gets done in this world via social connections---you know a person who knows a person who helps you to get a job, or a conversation with an important person. If you’re the first person in your family to go to college, or you’re the first person to enter a STEM field, or if you went to a school whose alumni aren’t well-connected to important social networks, it can be more difficult for you to achieve some of your career goals. To be clear, it’s not impossible! I don’t want to discourage people from underrepresented groups to get into STEM fields. What I’m saying is that you will need to be more intentional about achieving your goals. When you attend classes, or go to conferences, or go to job interviews, you’ll need to be focused and prepared. You’ve got to do well academically, but you also have to be good at networking among your peers; I’d venture that this is just as important as the academic part. You need to be comfortable talking to people, not just about technical subjects, but about everyday things. You’d be surprised how many “technical” decisions about who to hire and which projects to pursue are ultimately driven by the ability of people to explain themselves and interact well with others. The only way to get better is to practice!

Finally, I’ll say that you can’t be afraid to have mentors who are different than you. This is true for everyone. If you’re a white guy, don’t be afraid to have a female mentor. If you’re a black female, don’t be afraid to have a white man as a mentor. There may be some cultural misunderstandings, but that’s okay. You’ve got to learn how to deal with those things anyway, so don’t be afraid of it. I can say with total confidence that the extent to which I’ve been successful in my career is the extent to which key mentors have taken a chance on me and put me in positions where I could succeed. This was true in grad school, this was true at Microsoft, and this was true at MIT.

JamesMickensAMA48 karma

I use cat plus a series of immutable n-gram files to construct larger documents. It’s lean, elegant, and puts a minimal amount of overhead between me and the inodes.

JamesMickensAMA40 karma

My main piece of advice is that if you’re trying to give a humorous talk, you have to continually thread humor into your presentation. You can’t just add three jokes and then expect that people will say “That was a funny talk!” afterwards. In general, any piece of communication (verbal or written, funny or not-funny) should have a small number of narrative themes; every part of the communication must reinforce those themes.

With respect to picking a particular style of humor for a talk, you have to do what feels natural. What kind of stuff do you find funny in real life? What comedians or movies or TV shows make you laugh? Study those performances, and think explicitly about why they succeed or fail. Then, apply that same type of analysis to your own stuff. When you give a practice talk, see what resonates with people and what doesn’t. Don’t be afraid to throw stuff away that isn’t working!

With respect to humor in computer science (or science in general), I actually think that there are a lot of opportunities to find comedy! My attitude in life is that, unless you’re directly helping to end war, poverty, and homelessness at the same time, you don’t have the right to be ultra-serious. I think that if scientists reflect on their day-to-day routines, they’ll find a lot of funny moments. The tricky part is expressing that humor to people who may not share your exact day-to-day routine. That’s why I think that it’s so important to observe people who do this well, and think explicitly about how their delivery creates humor. Also, as mentioned above, you have to practice the art of comedy in particular, and storytelling in general! Or make a pact with Satan to give you unholy powers. Hint: DO NOT MAKE A PACT WITH SATAN.

On the topic of being funny as a black person (or, more broadly, an underrepresented person), the trickiest part is that being funny is the process of making people accept your narrative, and, as someone from an underrepresented group, you may have to work harder to get credibility. There’s no easy way to get around this challenge. You have to practice your story-telling skills, and learn how to read body language and tone so that you can establish a good connection with your audience.

JamesMickensAMA33 karma

Here are some of my favorite computer science papers, in no particular order.

"Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications" by Stoica et al: This paper describes how a set of nodes can distribute data across themselves in a way that enables efficient lookup, but does not require a centralized coordinator. This is one of the definitive papers on peer-to-peer systems, and it demonstrates the challenges of creating a large-scale application that cannot rely on a single, global coordinator. The Pastry paper by Rowstron and Druschel describes another influential system for peer-to-peer object location. If those papers arouse the fires of science in you, then you should read about the kinds of applications that can be built atop p2p routing layers (e.g,. the PAST paper by Rowstron and Druschel, or the Pastiche paper by Cox et al).

“MapReduce: Simplified Data Processing on Large Clusters” by Dean and Ghemawat: MapReduce is a popular programming model for performing big-data computations. When the paper first came out, everybody was like THIS IS AMAZING. There was some push-back from the database community, who said that MapReduce ignores decades of results from database research (see DeWitt and Stonebraker’s fantastically-titled blog post from 2008 entitled “MapReduce: A major step backwards”). People continue to debate about the best ways to analyze large data sets. For example, for some data sets representing complex graphs (e.g., the Twitter “X follows Y” graph), it may be faster to analyze the data on a single machine rather than on a distributed computing cluster that contains multiple machines (see Frank McSherry’s recent blog post). There’s also debate about the appropriate way to build key/value stores. If you’ve stuck at the airport one day, type something like “MongoDB good or bad” into the Internet and see what happens. Answer: You’re at an airport, so the Internet connection sucks and nothing happens. You’ve stepped into my trap! Meanwhile, I’m at your house, subtly rearranging all of your pillows into non-optimal configurations.

“Hacking Blind” by Bittau et al: A deeply disturbing paper about how a malicious client can launch buffer overflow attacks on a server even if the attacker has no access to the server’s binary or source code, and even if the server uses stack canaries and address space randomization. Reading about these attack methods is like watching a documentary about those horrible goblin fish that live at the bottom of the ocean and use bioluminescence to spread evil. Even if you don’t think about them, they’re thinking about you.

JamesMickensAMA29 karma

Some of my favorite teaching moments are when students try to trick me into revealing the answers to test questions or homework assignments. They’ll stop by office hours, and say things like, “I was thinking about solving the project this way, or another way. What do you think about those two ways? BE AS DETAILED AS POSSIBLE.” I’ll say something noble and principled that involves deep scientific theories and the relationship of mankind to the universe. I will then wait for spontaneous applause. The applause never arrives. Instead, the student will say, “So, if I did the first thing, would I get a compiler error? If so, where should the semicolon go? BE AS SPECIFIC AS POSSIBLE ABOUT WHERE THE SEMICOLON SHOULD GO.” I’ll mention that learning the positions of semicolons is a key pedagogical goal for the class. They’ll look at me with a smile that says, “Well played, old man.” Then they’ll slink away and do a Snapchat or whatever it is that occupies young minds these days.

In all seriousness, I’ve really enjoying teaching at MIT. As a whole, the students are quite good. However, I will say that there are a surprisingly large number of MIT students who wear capes. Like, the vast majority of students don’t wear capes, but I have seen more than one student wearing a cape. Not a superhero cape, but a regular cape. The cape people also tend to eschew normal shirts, and wear some kind of loose-fitting elf jerkin. It’s strange, but I’m glad that they are protecting me from the things that only be-caped people can defend against.