How do I get over my bad habit of procrastinating?
Answer by Oliver Emberton:
I’ll answer your question, but first I need to explain all of human civilisation in 2 minutes with the aid of a cartoon snake.
Humans like to think we’re a clever lot. Yet those magnificent, mighty brains that allow us to split the atom and touch the moon are the same stupid brains that can’t start an assignment until the day before it’s due.
We evolved from primitive creatures, but we never quite shed ourselves of their legacy. You know the clever, rational part of your brain you think of as your human consciousness? Let’s call him Albert. He lives in your brain alongside an impulsive baby reptile called Rex:
You know how you can’t help but notice if a stranger is tongue-wettingly gorgeous? That’s Rex, and no matter how hard you try, you can never turn him off. He’s your instinct, your impulse, your love and your fear.
We like to think of Albert as “our true self” - the conscious part of our brain. He’s the talking, reasoning part. When we decide to go to the gym or write that term paper, Albert made that decision. But Albert is old, easily exhausted, and switches off all the time.
Your brain is locked in a battle of wills between a sleepy professor and an impulsive reptile with unlimited energy. You may as well hand Rex the steering wheel.
Rex does listen to Albert. Like a child, he will do a lot of what he’s told, as long as he doesn’t disagree too much. But if Rex desperately yearns to crash on the sofa to watch Survivor and eat Cheetos, that’s what you’re going to do.
The incredible ascension of mankind that surrounds us is largely possible because we’ve developed systems to nurture the Rex’s in our brains, to subdue, soothe and subvert them.
Much of this system we call “civilisation”. Widely available food and shelter take care of a lot. So does a system of law, and justice. Mandatory education. Entertainment. Monogamy. All of it calms Rex down for long enough for Albert to do something useful - like discover penicillin, or invent Cheetos.
Now let’s look at your procrastination.
You’re making a decision with your conscious mind and wondering why you’re not carrying it out. The truth is your daily decision maker - Rex - is not nearly so mature.
Imagine you had to constantly convince a young child to do what you wanted. For simple actions, asserting your authority might be enough. “It’s time for dinner”. But if that child doesn’t want to do something, it won’t listen. You need to cajole it:
- Forget logic. Once you’ve decided to do something, logic and rationale won’t help you. Your inner reptile can be placated, scared and excited. But it doesn’t speak with language and cannot be reasoned with.
- Comfort matters. If you’re hungry, tired or depressed your baby reptile will rebel. Fail to take care of yourself, and he’ll wail and scream and refuse to do a damn thing you say. That’s what he’s for. Eat, sleep and make time for fun.
- Nurture discipline. Build a routine of positive and negative reinforcement. If you want a child to eat their vegetables, don’t give them dessert first. Reward yourself for successes, and set up assured punishments for your failure. Classic examples include committing to a public goal, or working in a team - social pressure can influence Rex.
- Incite emotion. Your reptile brain responds to emotion. That is its language. So get yourself pumped, or terrified. Motivational talks, movies and articles can work, for a while. I use dramatic music (one of my favourite playlists is called). Picture the bliss associated with getting something done, or the horrors of failing. Make your imagination vivid enough that it shakes you. We use similar tricks on children for a reason: “brush your teeth or they’ll fall out”.
- Force a start. The most important thing you can do is start. Much of Rex’s instincts are to avoid change, and once you begin something those instincts start to tip into your favour. With enough time, you can even convince Rex to love doing the things he hated. There’s a reason we force kids to go to school or to try piano lessons.
- Bias your environment. Rex is short sighted and not terribly bright. If he sees a Facebook icon, he’ll want it. It’s like showing a child the start of a cool TV program immediately before bedtime. Design your environment to be free from such distractions: sign out of instant messenger, turn off notifications, turn off email. Have separate places for work and fun, and ideally separate computers (or at least accounts).
Once you know what to look for, you’ll start to recognise the patterns and control them.
There’s an impulsive baby reptile in your brain, and unfortunately he has the steering wheel. If you can be a good parent to him he’ll mostly do what you say, and serve you well. Just remember who’s in charge.
Enjoyed this? Read more of me three times a week at
Life is short. Eat dessert first.
Microsoft a lansat codul sursa pentru codul sursa pentru unul din sistemele sale de operare iar alaturi de Computer History Museum, Microsoft pune la dispozitie codul-sursa pentru MS…
What are the algorithms required to solve all problems (using C++) in any competitive coding contest?
Answer by Mostafa Saad Ibrahim:
Here is my helper list. It lists most of needed algorithms/concepts.Some elements are not algorithms (e.g. Fake, States/Concerns) and little repetitions.
But 1 final advice:
Initially, Given great attention to thinking skills rather than the knowledge. This is helpful for both competitions and your future. To do so, make sure you are so good in adhocks, where no algorithms are required, just pure thinking.
One way to do so, is to focus with TC Div2 and CodeForces Div2. In each one, move in problem level by level. E.g. Master Div2-250, then move to Div2-500
How was the PDF format created?
Answer by Alan Tracey Wootton:
I was there for the whole thing.
It was the 90’s and Adobe was doing well. In addition to the Systems department which handled the Postscript business there was an Applications group which had Photoshop and Illustrator.
John Warnok had the idea that every document that was ever printed, or ever would be printed, could be represented in a document. This was not an unreasonable idea since Postscript was designed for this purpose and Adobe also had some code from Illustrator that would handle the fonts and graphics and code from Photoshop to display images. So, Warnok started a project (the Carousel project) on his own initiative to pursue his idea that eventually the whole Library of Congress could be represented in an archival electronic format.
In the beginning he could only get part time help from programmers in the applications division - Mike Pell, Ken Grant, Mike Diamond. The project was progressing slowly so the head of the division (Eric Zocker?) started a search for a new programmer to handle the project full time.
had transitioned from programming at JPL to full time programming and was looking to leave LA and be more professional in Silicon Valley. He got the job and moved to Cupertino.
Soon there was a demo and then a team developed to produce UI for the various platforms - Mac, Windows, DOS, and ‘nix. The demo code progressed into cross-platform code to handle most of the internal data structures to support the UI projects. There were also people writing print-drivers to create documents through the printing process on all platforms.
By this point the original demos were re-written into a file format that would contain the fonts, vector graphics, and images - this would be the second file format for the project. However, there were requirements that were not being met. Requirements like forward and backwards compatibility, streaming large documents through a printer driver where the printer driver has no idea how many pages there will be, and opening a 1000 page document and being able to jump directly to the 500th page without reading the whole file.
Peter Hibberd had written a demo of an ‘object oriented file format’ so Richard Cohn and Alan Wootton went to work trying to adapt his work for use on the Carousel project. After many weeks of struggle it was decided that adapting his work was going to be more work than writing new code and that some of the ‘object oriented’ concepts were not applicable since it was finally becoming obvious that a key-value format was going to be part of the solution. This was the third file format.
Bob Wulff, the manager of the project, told Richard and Alan to ‘go away’ and to not come back until there was a file format! The next Monday Richard and Alan started meeting at Richards house in Menlo Park instead of going to work in Mountain View (where Google is now). By the end of Thursday, Richard and Alan had described data structures and concepts for a file format on many pieces of paper. Alan went home, pulled 4 overnights in a row and came back to Adobe on Monday with the fourth file format written and working in the current code. This file format became known as PDF.
There you go!
What are the most frequent false beliefs in computer science and software programming?
Answer by Jean Yang:
That learning to program and writing good programs do not take time.
First of all, many people think that if they are meant to be programmers, they will open up a terminal and immediately be able to write code. Like “mathematical maturity,” learning to think like a programmer takes time and experience. Becoming a good programmer, one who can quickly write correct and sufficiently efficient programs, involves developing a sense of how languages interact with the programmer and how they interact with the machine. Becoming fluent in a given language involves learning not just the syntax and semantics but also its quirks, debugging idioms, and so forth. This does not happen overnight!
Another major misconception is that an expert programmer can create anything very quickly. While expert programmers can easily recreate programs similar to ones they’ve seen before, give them a new problem and they will need to take some time to figure out how they want to reach their programming goals using the tools at their disposal. Rather than wait for divine oracle, when faced with a seemingly impossible task or bug, good programmers will look up information online, use tools, and/or figure out how to break up the problem into manageable chunks. In short, what distinguishes great programmers from average ones is not that great programmers can do everything instantaneously, but that great programmers don’t give up.
In conclusion, learning how to program and writing good programs require work no matter who you are. The best programmers are the ones who are willing to do this work.