One of my observations is that people procrastinate because it is entropically favorable, not necessarily because they want to procrastinate or because procrastination is fun. The Internet does not help with its vast potential for incessant context switching.
The obvious solution to this is to reduce entropy, and slow things down. Stay without the internet and television for a week, since these are the primary ways in which you procrastinate, think of it as rehab therapy. Eliminate all sources of deviations, and try to systematically lengthen your attention span. I would suggest meditating every day for an hour[1].
Secondly, stop reading the news. It's a complete waste of time. The set of all thought sequences you can have between time A and time B should be small. Watching the news, or reading HN greatly increases the number of irrelevant thoughts you can have. A perfect Bayesian with a utility function like "maximize knowledge gained" would not read the news at all. It is always a good idea to ponder about what a perfect Bayesian with your chosen utility function would do.
It's true that the only thing stopping yourself is you. And it's also true that you can do amazing things if you spend long enough on any particular thing[2]. I would suggest making an Excel sheet with the time spent doing productive work per day, and optimize for that.
I went from averaging around 30 minutes a week when I started measuring my productivity (I'm a college freshman .. so I'm free the entire day) to around 4 hours in the last week.
[2] Einstein spent an entire decade on General Relativity. Andrew Wiles spent 7 years trying to prove Fermat's Last Theorem. Persistence is the most important trait anyone can have.
Yes, I would highly recommend reading it, with the exception of Chapter 8.
Some of the other people have said things like:
"The gist of it was that K&R ignores the safety problems in C and there is no discussion of the habits/constructs seasoned C programmers have developed to make sure their code is safe. Of course, many of those habits were developed after K&R, but that's why we need revisions and new sources."
This is indeed extremely important, but I also think in an introductory book these details will be very overwhelming. Safety in C is a very complicated topic, and indeed entire books have been written about it[1].
I find these "critiques" rather misguided. After all, we all know Newton's laws are an inaccurate picture of reality, but one would hardly start teaching quantum physics straightaway. C is a hard language with a lot of bizarre edge cases, and K&R C does an excellent job of presenting the language without all these pesky details.
The second criticism seems to be that it is outdated. This is true, but you can catch up with coding conventions and best practices very quickly.
To summarize, K&R C is excellent for introducing people to C. I would suggest completely ignoring safety issues et cetera at the start and just have fun solving the exercises!
A: "Software engineering". Most real-world programming doesn't involve any new algorithm, doesn't require any cleverness; it merely involves implementing some known solution and making sure it's robustly commented and tested. It requires self-discipline simply because it's so boring!
""" [1]
SnapDragon, who's current rating is 3005 on Topcoder, and was ranked 18 on that site said that, who by the way is employed at Google (at least he was when he gave that interview).
I think that pretty much sums it up. In addition, there is an aspect of software engineering that is much like playing with soap bubbles. All software eventually becomes outdated and unusable. If you're very lucky, some of the code you wrote will be used in future versions and maybe last for a decade or two before even that is completely discarded and forgotten.
So it is completely unclear that anyone would want to write production code for the entertainment value. And secondly, most real world programming is in fact pretty boring, and it is likely that solving puzzles is far more entertaining.
To draw an analogy, some smart people don't do well in school because you are graded on things like penmanship and mentioning the units and things like that. I don't think the scenario here is vastly different.
Time is a finite resource. What is the most economical way to spend it? Watching The Shawshank Redemption is probably more economical than reading Facebook memes. And similarly, there are hundreds of other things you could do at any given moment with more entertainment value than Facebook.
Now, you could say, "facebook is not entertaining, but is useful". I do not find Facebook useful. If you're interested in networking benefits, there's LinkedIn and email[1]. If there is no answer you can give to the question "Why are you on Facebook?", then you should probably not use it (I'm assuming it has a very low entertainment value for you, which may or may not be true).
"because everyone else is on it".. is not a good enough answer for me. Therefore, I deleted my account completely.
On an unrelated note, why haven't there been any more modal editors?
For example, you could enter a "bold formatting" mode, where you could say type "fun" and it results in "𝐟𝐮𝐧". All these are Unicode characters, so you wouldn't need a separate document format like Word.
Presumably one can have a "math" mode where you could type math like you would type regular text obviating the dollar signs and backslashes in LaTeX.
As I understand it, LaTeX has an incredibly complicated architecture with multiple layers of macros before the lowest layer of TeX primitives. You could replace all that with Unicode symbols.
In math mode you could type "in" and get the Unicode symbol "∊". Then you would be able to copy-paste math and send it over email, instant messaging et cetera, and easily type it with a WYSIWYG editor using a traditional keyboard. Of course, there would be numerous problems with typesetting integration limits, fractions et cetera but I think these can be solved using Unicode and clever programming.
I currently do not solve say Group Theory problems on my computer because LaTeX is way too inconvenient.
I think on a hypothetical editor with a math "mode", one could touch-type math. Maybe I'm missing something and there are insurmountable obstacles to implementing such a solution. If so, I would be happy if someone could point out what they are.
Having different modes seems like a very powerful feature, and I'm just surprised the last editor using modes was written 40 years ago.
What you're describing is an interesting idea and LyX is sort of like that. Mathematica also works pretty similarly, it has different ways of representing and entering equivalent expressions visually (e.g., TraditionalForm or DisplayForm). You can switch modes for a particular cell and the underlying meaning is preserved. There's also a special escape sequence for entering symbols and a lot of symbols have an equivalence with their obvious operators, for instance "x ∈ X" is equivalent to "Element[x, X]".
That said, it's really awful at copy-pasting into other programs my experience. But it does a decent job of exporting explicitly, like for instance with TeXForm.
Also, a slightly different thing you can do in Vim is to use the conceal feature to visually "collapse" LaTeX escapes into their unicode characters. For example, the document says "\lambda", but it will display as λ (unless you position the cursor on the same line, so that you can edit it). I find it helps reduce visual clutter a bit.
There are no insurmountable obstacles to what you are asking. At least none that I can see now, but I do see some things that wouldn't be convenient.
First, when using other commands one should be able to input in bold as well. For instance, while searching. Otherwise, one wouldn't be able to search for the bold version since it is encoded differently.
Second, search and other commands should be aware that "f" and "𝐟" represent the same letter. Otherwise, each search becomes a game of trying all the styles to see what gets results.
Third, and this is a matter of taste, I prefer to keep the presentation separated from the structure as much as possible. I much rather write \myStyle{fun} and keep writing. Later, when the writing part is done, I can define \myStyle as bold or whatever makes sense.
The obvious solution to this is to reduce entropy, and slow things down. Stay without the internet and television for a week, since these are the primary ways in which you procrastinate, think of it as rehab therapy. Eliminate all sources of deviations, and try to systematically lengthen your attention span. I would suggest meditating every day for an hour[1].
Secondly, stop reading the news. It's a complete waste of time. The set of all thought sequences you can have between time A and time B should be small. Watching the news, or reading HN greatly increases the number of irrelevant thoughts you can have. A perfect Bayesian with a utility function like "maximize knowledge gained" would not read the news at all. It is always a good idea to ponder about what a perfect Bayesian with your chosen utility function would do.
It's true that the only thing stopping yourself is you. And it's also true that you can do amazing things if you spend long enough on any particular thing[2]. I would suggest making an Excel sheet with the time spent doing productive work per day, and optimize for that.
I went from averaging around 30 minutes a week when I started measuring my productivity (I'm a college freshman .. so I'm free the entire day) to around 4 hours in the last week.
---
[1] Music I find helpful for meditation. https://www.youtube.com/watch?v=WPni755-Krg
[2] Einstein spent an entire decade on General Relativity. Andrew Wiles spent 7 years trying to prove Fermat's Last Theorem. Persistence is the most important trait anyone can have.