background preloader

Productivity hints, tips, hacks and tricks for graduate students and professors

Productivity hints, tips, hacks and tricks for graduate students and professors
Contents Jump to: My philosophy: Optimize transaction costs Distilled into empirically-wrought principles, my high-level advice is: Reduce transaction costs to engaging in productive behavior. In short, mold your life so that the path of least resistance is the path of maximum productivity. People are surprised when I tell them I'm lazy. I don't try to change the fact that I'm lazy: I exploit it. I try to make sure that the laziest thing I can do at any moment is what I should be doing. Update: Managing willpower Years after I wrote the first version of this article, I discovered a book that provided a basis for my philosophy in sound psychological science, Willpower The book surveys the literature on the science of self control. Deliberating shaping the past of least resistance optimizes the use of willpower. Anecdote: Pull-ups In my first year as a new professor, I wanted to start doing pull-ups, so I attached a portable pull-up bar to the door outside our bedroom. Don't work from home Taming email Related:  Dr. Matt Might help: Dissertation tips

The illustrated guide to a Ph.D. Imagine a circle that contains all of human knowledge: By the time you finish elementary school, you know a little: By the time you finish high school, you know a bit more: With a bachelor's degree, you gain a specialty: A master's degree deepens that specialty: Reading research papers takes you to the edge of human knowledge: Once you're at the boundary, you focus: You push at the boundary for a few years: Until one day, the boundary gives way: And, that dent you've made is called a Ph.D Of course, the world looks different to you now: So, don't forget the bigger picture: Keep pushing. There's a bit more below, but I also wrote a follow-up 5 years after the illustrated guide which may be of interest -- HOWTO: Get tenure. Related posts If you like these posts, then I recommend the book A PhD Is Not Enough Get it in print; fund students; save lives By request, a print version of The Illustrated Guide to a Ph.D. is on sale. Click here to preview or buy it. Why biology? License: Creative Commons Resources

100 Websites You Should Know and Use In the spring of 2007, Julius Wiedemann, editor in charge at Taschen GmbH, gave a legendary TED University talk: an ultra-fast-moving ride through the “100 websites you should know and use.” Six years later, it remains one of the most viewed TED blog posts ever. Time for an update? We think so. Below, the 2013 edition of the 100 websites to put on your radar and in your browser. To see the original list, click here. And now, the original list from 2007, created by Julius Wiedemann, editor in charge at Taschen GmbH.

Architectures for interpreters: Substitutional, denotational, big-step and small-step Resources Structure and Interpretation of Computer Programs. Until very recently, MIT used to teach freshman computer science by having them write interpreters. SICP is the now-classic textbook for that course. Lisp in Small Pieces is a complete, up-to-date treatment of writing high-performance interpreters and compilers for dynamic languages (with Scheme used as an example). My post on meta-circular evaluators and first-class macros includes a complete meta-circular interpreter for a large chunk of Scheme. A simple language: Lambda calculus The lambda calculus is one of the simplest Turing-complete programming languages, containing only three expression types: variable references, function calls, and anonymous functions. <exp> ::= <variable> [references] | (<exp><exp>) [function calls] | (lambda (<variable>) <exp>) [anonymous functions] Please pardon the Lispish syntax; I have a habit of using simple syntax when syntax isn't the focus. [Exp.scala] object Exp { type Variable = String}

John Cleese on the 5 Factors to Make Your Life More Creative by Maria Popova “Creativity is not a talent. It is a way of operating.” Much has been said about how creativity works, its secrets, its origins, and what we can do to optimize ourselves for it. In this excerpt from his fantastic 1991 lecture, John Cleese offers a recipe for creativity, delivered with his signature blend of cultural insight and comedic genius. Space (“You can’t become playful, and therefore creative, if you’re under your usual pressures.”)Time (“It’s not enough to create space; you have to create your space for a specific period of time.”)Time (“Giving your mind as long as possible to come up with something original,” and learning to tolerate the discomfort of pondering time and indecision.)Confidence (“Nothing will stop you being creative so effectively as the fear of making a mistake.”)Humor (“The main evolutionary significance of humor is that it gets us from the closed mode to the open mode quicker than anything else.”) Creativity is not a talent. Thanks, Simon

Electric meat Don't touch the electric meat Some time ago, a primatologist ran an experiment with chimpanzees. The experiment involved a hanging pallet of meat that, when touched, sent an electric shock througout the entire chimp cage. At first, the chimps responded with bewilderment every time one of them grabbed the meat and the shock rippled through the cage. Eventually, the chimps realized that the shocks came from the meat. The chimps began to attack and beat, savagely even, any chimp that approached the meat, and over time, fewer beatings were necessary. At this point, the experimenter began to replace the chimps, one by one, with chimps that had never been shocked. Naturally, when this new chimp went for the curiously untouched meat right before his eyes, he was attacked. Confused at first, he eventually connected the meat to the beatings. Each new chimp learned to attack when others approached the meat. The experimenter continued replacing the chimps. The meat was now safe to eat. Epilogue Related pages

9 things successful people do differently | bethexception. Why have you been so successful in reaching some of your goals, but not others? If you aren’t sure, you are far from alone in your confusion. It turns out that even brilliant, highly accomplished people are pretty lousy when it comes to understanding why they succeed or fail. The intuitive answer — that you are born predisposed to certain talents and lacking in others — is really just one small piece of the puzzle. When you set yourself a goal, try to be as specific as possible. {*style:<b> 2. To seize the moment, decide when and where you will take each action you want to take , in advance. Achieving any goal also requires honest and regular monitoring of your progress — if not by others, then by you yourself. 4. 5. Fortunately, decades of research suggest that the belief in fixed ability is completely wrong — abilities of all kinds are profoundly malleable. 6. The good news is, if you aren’t particularly gritty now, there is something you can do about it.

Relational shell programming Representing relations In mathematics, a relation is a set of tuples. [A tuple is an ordered collection of values, (v_1,\ldots,v_n).] For example, \{({\tt Bob}, 31), ({\tt Judy}, 32)\} is a relation. In database theory, a relation is a set of tuples with an assigned name for each column; that is, a relation is a table. For the earlier relation, we could define a header tuple ({\tt name}, {\tt age}) that names each column. We could then represent the relation explicitly as a table: Relational algebra is a theory for manipulating relations whose power is equivalent to SQL and relational calculus. Remarkably, relational algebra has only six primitive operations. I define the six primitives below, but if you're looking for a comprehensive work on relational theory, particularly as it relates to modern databases, I recommend Date's SQL and Relational Theory Relations in Unix Many Unix commands interpret files like relations: each line is a tuple. The command traceroute produces relation-like data: Union

10 tips on how to give an academic talk The biggest mistake academics make is misjudging their audience. I've been to (many) talks where the talk itself was presented to one or two people in a room of hundreds. (Disclaimer: I've given my fair share of these talks too.) When preparing a talk, glance at the program for the event, or ask your host what you should expect of the audience in terms of background knowledge. Aim appropriately. When we speak on favored topics, our instinct is to gloss over concepts and details that once took us the better part of grad school to understand. It feels awkward, or even insulting, to recap "introductory" material. There's also a negative feedback mechanism in academic culture. When you present to a broader audience, experts in your own specialty will claim to be annoyed and chastise you in public Q & A to stroke their egos. Don't listen to them. Always ask: What needs to be understood to convey the big idea? Practice Practice is the key to a "natural" delivery. Nerves Public speaking is a common fear.

5 Reasons The Future Will Be Ruled By B.S. Everything from that second tier to the capstone, they can get at a cost that rounds down to zero, if they so choose. We Internet types are so busy haggling over video games with DRM that we're not grasping the scale of this. We're like a dog who's been cooped up behind a fence his whole life, and now a storm has knocked down the gate. The dog looks out and thinks, "Wow, out there is the front yard!" No, Fluffy. Out there is the whole world. Well, shit, Utopia's here! House music and MDMA for everyone! Wait -- did you forget the thing about the baby formula? Because this is where shit gets absurd. Public libraries have been lending out books to people, for free, for the last 500 years or so. But then the publisher invented a better book.

Sculpting text with regex, grep, sed and awk Theory: Regular languages Many tools for searching and sculpting text rely on a pattern language known as regular expressions. The theory of regular languages underpins regular expressions. (Caveat: Some modern "regular" expression systems can describe irregular languages, which is why the term "regex" is preferred for these systems.) Regular languages are a class of formal language equivalent in power to those recognized by deterministic finite automata (DFAs) and nondeterministic finite automata (NFAs). [See my post on converting regular expressions to NFAs.] In formal language theory, a language is a set of strings. For example, {"foo"} and {"foo", "foobar"} are formal (if small) languages. (Mathematicians don't typically put quotes around a string, preferring to let the fixed-width typewriter font distinguish it as one, but I'm guessing that programmers are more comfortable with the quotes around strings.) In regular language theory, there are two atomic languages: Useful grep flags The +? #!

3 shell scripts: Kill weasel words, avoid the passive, eliminate duplicates More resources There are four books at arm's length in my office: Strunk and White's The Elements of Style is still a good, if not perfect, reference on style. Young writers should calibrate their reading of Elements in light of criticism from linguistic experts. Experts claim that the good parts of Strunk and White are common sense. I take issue only with their application of the modifier common. Precision and clarity My Ph.D. advisor, Olin Shivers, taught me that technical writing is a balancing act between precision, clarity and marketing. After a recent round of paper submissions with my own Ph.D. students, I've identified mechanically recognizable ways that precision and clarity leak out of a paper: weasel words and abuse of the passive voice. So, I've written shell scripts to detect these leaks. (I don't think I'll ever be able to write a shell script that detects bad marketing for a scientific idea.) Weasel words Salt and pepper words Beholder words Lazy words Adverbs Passive voice Resources

15 New Rules For IT To Live By - Global-cio - Executive insights/interviews The old IT rulebook is obsolete, but the new one that accounts for the rise of mobile, social, and analytics hasn't been written. Consider this a first draft, so your revisions are welcome. No one's going to complain about winning new business, but a recent deal to do contract unit repair work from more than 2,000 locations across North America posed a huge challenge for Flextronics' IT team. The old model would have meant setting up a server in each of those locations, making sure the software ran properly from each, and training the on-site people to maintain it. So instead of using the old approach, Flextronics' IT team deployed the software, which is custom-built on a Microsoft stack, using Microsoft's Azure cloud service. The technology's important here, since two or three years ago cloud computing wasn't mature enough for such an implementation. Here's our start to that new IT rulebook, one that begs to be rewritten many times over. 1 of 6 More Insights

Standalone lexers with lex: synopsis, examples, and pitfalls The tool lex in a nutshell The program lex consumes a lexical specification and generates C source code for a lexical analyzer. Typically, regular expressions describe classes of tokens in a spec. [See my post on sculpting text for a definition of regular expressions.] For example, an informal lexical specification might be: identifiers match [A-Za-z_][A-Za-z_0-9]*; integers match -? In ordinary usage, lex generates a file that can be linked in with the rest of the compiler/interpreter toolchain. To communicate with downstream phases, the C code that lex generates exports the procedure yylex: when a downstream phase needs the next token, it calls yylex(). Alternatively, the generated C program can be made standalone, in which case it dumps the result of its lexical analysis into a file or to standard out. (In choosing a format to dump, it helps to pick one with widespread parsing library support, such as XML or S-Expressions.) Using (f)lex As such, this article covers flex. $ flex file.l name regex

Related: