What programming languages should I learn and why? - <AUTHOR> <comment><USER2> _'what programming languages should I learn?'_

I'd rephrase the question slightly and ask, _'what problems should I work on?'_ and _'how can the language(s) I use solve them'_. This is one reason why lisp is a compelling choice. You can create your own sub-languages to solve any particular problem.

But for lots of reasons lisp may not be suitable. There are lots of other languages to choose so pick the ones that suit solving different problems. There is not one _"universal programming hammer"_ (though lisp is pretty close) but an array to choose from that may suit different types of problems.

esr in his faqto (faq + howto) recommends python, c/cpp, java, perl and lisp. Each language chosen for their abilities to solve different types of problems ~ <http://www.catb.org/~esr/faqs/hacker-howto.html#skills1>

Tall order? Take too long? Then read on with Norvig and _'Teach yourself programming in 10 years'_ ~ <http://www.norvig.com/21-days.html>

</comment><comment><USER3> +1 for python. Why? excellent docs, excellent libraries, excellent books, flexible language thats easy to learn.

<comment><USER4> Agreed.

But, shouldn't _we_ be asking the poster "why"? If the "why" is because he wants to be good at programming, then I would suggest that he first does some light c, a tiny bit of assembly, and a get a basic understanding of FP languages and the insanity of advanced OO in java.

In the end though, be sure you are using Python. Heck, even if you get bored along the way, throw some python in.

A [Warning] though: python will spoil you. Good luck going back to a more verbose, rigid language, should you be forced to.

<comment><USER5> Same thing can be said for Ruby and Perl

</comment></comment></comment><comment><USER6> While we're on the topic, PG mentions in one of his essays a few languages with a "reputation for succintness": Forth, Joy, Icon. They are all tiny blips on my radar, popping up once every year in some obscure article. Does anybody have experience with them, and are they worth learning? (Forth is already covered on this page)

<comment><USER7> I learnt to program by writing a Forth compiler in assembler (Dad taught me). It was a superb way to learn.

One of Forth's strengths is its ultra-simple syntax. If you thought Lisp had little syntax, think again. Forth is just tokens and whitespace. You can write a compiler than can compile itself in a few screenfuls of Forth (and I'm not talking about eval).

Forth is obscure but beautiful. It's reflective, meaning you can write code that writes code (macros). Also like Lisp, you can easily roll your own control structures or add an OOP interface. But it does lack good libraries and a decent-sized user base.

<comment><USER8> I have just started poking with forth, after seeing some network card firmware source written in it.

One of the most interesting things, to me, was the built-in disassembler: if you ask 'how is this word defined', and it's not defined in the current environment, it'll go disassemble the binary and show you that.

Pretty insane, if you think about having to write software to interface with old / undocumented / closed source libraries.

</comment></comment></comment><comment><AUTHOR> I have been teaching myself how to hack. I see that the first real software engineering classes in most schools is taught in JAVA, usually a data structures class. Should I even bother.... I see the merit of learning ground level stuff , like memory management seen in C/C++ but with JAVA is it useful to learn even if majority of web development is done in LAMP ( I should say majority of web development interesting to me, I know there is alot of JAVA out there) Does anyone know of a good book/tutorial to learn data structures with languages such php/ruby/python.

<comment><USER9> Lisp is great but Python/Ruby are a great halfway point between C and Java and the purely functional Lisp type languages. It's tough to say whether you're better off learning Ruby or Lisp first. It would probably make a good PhD project for someone to compare the teaching of programming to first-time students with Pascal, Java, Ruby, and Lisp.

Anyways, www.hacketyhack.com is a great integrated IDE for learning the syntax of ruby.

<comment><USER10> _"purely functional Lisp type languages"_ I think Common Lisp actually has one of the most powerful Object Systems: CLOS

<comment><USER9> Sorry, I meant languages that actually allow for functional programming, not languages that are exclusively that way.

<comment><USER11> Just to nitpick, any language that allows functions 'allows' functional programming to some extent. More seriously, any language with higher order functions, lexical scoping, and closures can be considered appropriate for functional programming.

You probably meant languages that are biased primarily towards functional programming, as opposed to others where FP is not the dominant paradigm. You have to specify that much if you are going to include the Lisps but leave Python out.

</comment></comment></comment></comment></comment><comment><USER12> Read COncepts, Techniques, and models of computer programming.

You will get a taste of all these languages/paradigms, and in addition, others like concurrent programming etc.

<http://www.amazon.com/Concepts-Techniques-Models-Computer- Programming/dp/0262220695>

</comment><comment><USER13> Learn ruby and/or python and C for low levels and/or create extensions for those two.

</comment><comment><USER8> lisp, haskell, prolog, forth, erlang, smalltalk, python, ruby, c, java

I think lisp will be adequately enunciated, so I'll move on to the others

Haskell is a lazy, strongly-typed functional language. It's syntax is very close to mathematical notation, and it enables code reuse by not allowing side effects. It'll teach you to think in actual algorithms, where most languages teach you to think about how to implement those algorithms.

Prolog is a logic language. It'll teach you logic, and some of the fundamental ideas from that field. Backtracking search, unification, and other interesting ideas.

Forth is a reverse-polish-notation stack language that is very 'close to the metal' and yet a higher order language than C. Forth will teach you more about the workings of a computer than anything but assembler, and it won't break your soul like assembler might.

Erlang is strict strongly-typed functional language that is all about concurrency. Right now it's probably the best language to write highly concurrent applications in, and, as it turns out, most of the internet can be made highly concurrent.

Smalltalk is the mother of all object oriented languages, and shares with lisp the interesting concept of a running image. In smalltalk, everything you do is in a live instance of an image, and to deploy, you simply move the instance over and run it on the server. This also one of the first languages to have an effective refactoring browser.

Python is a dynamic object-oriented language that incorporates features from a lot of previous languages. It's got some interesting things and a fairly nice syntax. Take a look at TurboGears, Pylon, and Django

Ruby is a dynamic object-oriented language (lisp + perl) that is (like lisp) all about metaprogramming. Ruby has also got an interesting framework that is becoming notorious, Rails, which makes OR mapping and quite a few other things brain-dead easy. If you get into the internals of rails, you'll learn a lot about metaprogramming.

C is The Language. If it has to be fast, small, and close to the metal, C is the go to language (no pun intended) There are a lot of situations where you'll end up needing to rewrite in C if you hit performance problems, so knowing some C will let you squeeze about an order of magnitude of performance out of things. Plus, you can start to understand drivers for your hardware here.

Java is less about the language and more about the IDEs. With the possible exception of Smalltalk, Java has the best IDEs and refactoring software. This is the kind of thing that most languages should have, but don't.

Anyway, this is kind of just a menu, but if you learn three or four of these, you'll be well on your way to deciding which one suits your style.

<comment><USER14> Sorry, but I think that is complete bullshit. Why should some beginner start with Lisp and Haskell? He should start with something that is useful for him, that is, he should consider what he wants to do, pick a suitable programming language and get started.

Nothing against LISP, but if he was into Web programming for instance, I think it would be a bad choice. Maybe an experienced programmer could leverage the power of LISP for that task, but a beginner needs good documentation, examples to look at, a community to ask when he is stuck etc. I don't think LISP would be top of the list in those categories.

<comment><USER15> The value of learning all those different languages is not that they're immediately and obviously useful. The value is that each one has a different set of tradeoffs and assumptions, and being fluent in all of them will teach you how to think more flexibly.

Sure, a beginner should use a language where he gets feedback and support. But a beginner who aspires to be a real programmer rather than a 9 to 5 coder will need a much broader base of experience than he can get by only working in one or two languages, and understanding that sooner rather than later is key.

</comment></comment></comment><comment><USER16> Now, you're going to hear a lot about how wonderful LISP (etc, etc) is, but remember that almost every _real_ application is in C (Unix), C++ (games, other desktop apps), or Java (50 million goddawful enterprise backends).

<comment><USER17> That might be true of "almost every _real_" desktop application, although on my Linux install, I have a healthy amount of Python and Perl programs. As for quickly prototyped web applications, I think that Lisp, Python, Perl, and Ruby far outnumber Java and C/C++ (with Java far outnumbering C/C++).

</comment></comment><comment><USER18> Instead of learning C or C++ you may consider D which will enable you to learn more about actual programming and less about the idiosyncrasies of C/C++.

<comment><USER19> I agree that D is a better and cleaner language than C++, but in what way is C idiosyncratic?

<comment><USER18> True, C does not suffer too much from idiosyncrasies, more from being poorly designed in comparison to modern programming languages.

<comment><USER19> On the contrary, C is _excellently_ designed for its intended purpose: as a language for writing UNIX. If that's what you're doing, C is the ideal choice. If you're using it for something else, you're misusing it.

<comment><USER11> What do you use to optimize a bottleneck in Ruby or Python? (After you have profiled, exhausted the higher level optimizations, and all that.)

<comment><USER19> Well, most languages use C for their FFI so you're almost stuck with that. You can still use D, since it can call C functions transparently. Though, if I were designing a high-level language and wanted it to be able to call a fast lower-level one, I might choose Forth or OCaml. Once it matures a bit, I might change my answer to Fortress.

</comment></comment></comment></comment></comment></comment><comment><AUTHOR> I think this question really shows what a great community this site has developed into. Thanks for all the help!!!

</comment><comment><USER20> All of them. Because we are compelled.

</comment><comment><USER21> as many as you possibly can.

so that you'll be able to pick the right tool for the job (nobody ever asks, "which should I learn,the hammer or the screwdriver?")

<comment><USER11> Yet time is limited, and there are other things a programmer should learn besides programming languages.

</comment></comment><comment><USER22> C#.

<comment><USER17> Especially if you want to do any non-Windows programming.</comment></comment>


Going further than an IT workers union with the CNT - <AUTHOR> http://www.cnt.es/en/news/cnt-it-sector

<comment><AUTHOR> I find their "current status of the industry" interesting:

 _Today the industry is highly polarized as far as salaries are concerned, having one end with fairly high salaries compared to the rest of the working class and the others with wages just at or even under those of the collective agreement applied, since they don't have their own agreement._

 _The vast majority of companies in the sector today are temporary work agencies in disguise and their profits come mostly from the illegal assignment of workers. The most common contracts are for specific work and services and the easiest way to improve working conditions or salaries is to change company. Because of this, unions have little presence and workers have little interest in unions. After all, why fight to improve conditions in a company which you will leave in 6 months? The lack of a union presence allows the employer act with impunity and causes workers to be totally unaware of their rights. Which encourages things like mandatory but unpaid overtime, endless workdays, the lack of a proper collective agreement, general helplessness, etc._

I wonder how true this is. Are IT workplaces really just like temp agencies? I don't think they are, but the contracting and subcontracting through freelancing can be hella irregular, kinda like a temp agency.</comment>


Technology's long tail: The next 5000 days of the web (2007) - <AUTHOR> https://www.ted.com/talks/kevin_kelly_on_the_next_5_000_days_of_the_web <comment><AUTHOR> motivation for sharing: this talk is a weird experience with a feeling of fascination and cringe at the same time. This recording is from just over a decade ago. Yet we were unable to forecast or envision how the Web turned out at all.</comment>


Padrino 0.11.3 Released - <AUTHOR> http://www.padrinorb.com/blog/padrino-0-11-3-released-bug-fixes-aplenty-round-3

<comment><USER2> My personal website is powered by Padrino ([http://20bits.com](http://20bits.com)), having hosted it on Wordpress for the 6 years prior. I liked Padrino but the codebase was kind of a mess. I could tell that overall it was very immature.

What progress has been made on that front in the last year?

<comment><AUTHOR> I think a lot, I mean I have deployed a huge amount of websites and others too. This does not mean that we are "error free" there are two main things planned to be refactored so I suggest to check this: [https://speakerdeck.com/daddye/padrino- framework-0-dot-11-an...](https://speakerdeck.com/daddye/padrino- framework-0-dot-11-and-1-dot-0)

</comment></comment><comment><USER3> Great news, good work guys. I've been following Padrino for a few months now and it's by far my favourite Ruby framework - I find it to provide a very elegant and powerful layer of functionality on top of Sinatra. I really hope it gets more recognition and a bigger/more active community as IMO that is the only area where Rails is unquestionably better. Congrats again on the new release - looking forward to 1.0!

<comment><AUTHOR> Thanks a lot! Yep 0.12 will be the first 1.0 pre, so should happen soon! Can't wait too

</comment></comment><comment><USER4> I'm just scratching the surface of Ruby development, and having played with Rails then Sinatra, I'm excited to try Padrino. I just wish there were a wider variety of tutorials available.

<comment><AUTHOR> We are working on that, and also we are near to release a fresh new website, so please add your request of guides tutorials or screencasts here: [https://github.com/padrino/padrino-docs](https://github.com/padrino/padrino- docs)

And there is also a good (work in progress) book: [https://github.com/matthias-guenther/padrino- book](https://github.com/matthias-guenther/padrino-book)

</comment></comment><comment><USER5> I wish I would have more time to contribute to the project.

<comment><USER6> every little helps and is more than welcome :) so just do whatever you can and that will be good enough :) thanks for your support!!

</comment></comment><comment><USER7> Padrino is a wonderful project with a great community...I hope it picks up more traction. I've used it for a few things...the only thing that stops me from going all in is that for various gems, there are sometimes differences in conventions between Padrino and Rails that prevent these gems from working right out of the box...usually something to do with the assumption by Rails gems that railties are in use. Usually the fix is a one-liner.

Example: Here's a quickly fixed incompatibility with the geocoder gem:

[https://github.com/alexreisner/geocoder/pull/332](https://github.com/alexreisner/geocoder/pull/332)

Otherwise, Padrino adds a significant, meaningful layer of convention over stock Sinatra, and significantly fewer layers than Rails...but if you mostly use Rails for ActiveRecord, Padrino pretty much has you covered.

<comment><AUTHOR> Thanks a lot, as a founder I can say that we have the best community... EVER, I'm so happy. Is it true we haven't the Rails or Bootstrap followers, but right now we have so many precious contributions and if you look at the "Changelog" you can see that. Thanks again!

<comment><USER8> Seconding the gp sentiment. you guys are building a beautiful framework. Hat tip...

<comment><USER6> yay! :) thanks so much! <3</comment></comment></comment></comment>


Russian DST now owns 10% of Facebook - <AUTHOR> http://www.allfacebook.com/2010/05/dst-now-owns-10-percent-of-facebook/

<comment><USER2> A related post: <http://news.ycombinator.com/item?id=1311569></comment>


The Evolution of a Software Engineer - <AUTHOR> https://medium.com/on-coding/db854689243 <comment><USER2> Hmm... funny but... why not show an example that demonstrates adding these various abstractions in useful ways. Just always printing hello world, so none of these subsequent refactors actually added any utility is funny but not as real as world. Like they could have read from a config file or command line, so the program output could change, depending on runtime conditions (but ultimately never do!) The elimination of boilerplate unnecessary comments though, yeah I love it.

</comment><comment><USER3> Lots of truth in that article. Sadly until corporal punishment is allowed towards "complicators" KISS programs will be rare.

<comment><USER2> It would be nice if they would stop promoting them too.

</comment></comment><comment><AUTHOR> Best presentation of the last 10 years of my career. Spot on!</comment>


Content spamming with "article theme versioning" - <AUTHOR> http://www.marketingpilgrim.com/2009/06/how-to-write-hundreds-of-unique-articles-from-one-article-with-ms-excel-article-theme-versioning.html

<comment><USER2> Or, you know, you could optimize against providing value, and gather pagerank organically rather than adopting the mentality of the shitbirds that send me postcard spam by snail mail.

Don't pretend this tactic is anything less than gas for a race to the bottom. Is that where you want to be?

</comment><comment><USER3> Having read the article I don't really see how this is anything other than an extremely labour intensive method of doing content spinning which is as old as the hills. There are many SEO spinning tools that allow the user this kind of granular control but which are still much easier to use for this task than excel. The quality of the article wasn't helped by the fact that it sounds like the author is (quite clearly) not a native English speaker.

</comment><comment><USER4> Writer's internet license should be revoked.</comment>


Inside the World's Most Hostile Network - <AUTHOR> http://www.wired.com/threatlevel/2009/08/inside-the-worlds-most-hostile-network/

<comment><USER2> Cool. Portable enough that they bring their own suds packed in dry ice.

Also I was pleased to see that they are using open/bsd with pf as the firewall.

</comment><comment><USER3> Anyone else notice that a few of the captions were cut off at apostrophes in the strings?

A curious detail for a security-focused article....

</comment><comment><USER4> I was expecting stats on network activity and got pictures of equipment and beer. Did I miss something?

<comment><USER5> Yep, you missed the point. Some of us are interested in the gear that makes everything tick.

There were also picture of some of the stats, such as the amount of data transmitted in 2 days.

<comment><USER6> Which wasn't technically saturated, since 100GB on a 20Mbit/s connection should be feasible in about 12 hours if my back-of-the-envelope math is right.

Of course, they weren't clear on details, so if they meant that the network was only up for half a day by the time they measured then it's significant.</comment></comment></comment>


Google Nexus S Available at Best Buy - <AUTHOR> http://www.bestbuy.com/site/null/Google-Nexus-S/pcmcat224600050004.c?id=pcmcat224600050004&ref=141&loc=01

<comment><USER2> I went to Best Buy on 5th Ave NYC, they didn't have any.</comment>


CodePen - A Community for Front-End Developers - <AUTHOR> http://codepen.io/

<comment><USER2> Codepen seems to be a great update/alternative to JSFiddle. The interface is intuitive and beautifully laid out. I don't use Apple products or Webkit as primary design tools, but for those who do CodePen is a great testing tool for code.</comment>


World Wide Web (1991) - <AUTHOR> http://info.cern.ch/hypertext/WWW/TheProject.html <comment><USER2> I clicked around a bit and expected most links to be dead but surprisingly all of them worked. Then it crossed my mind: Because it was the first page there was nowhere to link - so no external links, no dead links.

<comment><USER3> I was struck by the references to 4 different browser.

</comment></comment><comment><USER4> When people aren't satisfied with the "learning about the universe" justification for doing high energy physics, I remind them that particle physicists invented the world wide web.

<comment><USER5> Might need to water it down some more and say Facebook and Buzzfeed won't exists if it weren't for particle physicists.

<comment><USER6> There are laws against inciting violence, even toward physicists.

</comment></comment></comment><comment><USER7> Look at that HTML, it's so quaint. 80-column aligned. Uppercase labels. No <HTML>. <HEADER> and <NEXTID>. Numeric NAMEs on all the links.

And it uses <DL>/<DT>/<DD>, which seem sadly forgotten on today's web.

</comment><comment><USER8> Looking forward to celebrating the 25th anniversary of the last update, as well.

< Last-Modified: Thu, 03 Dec 1992 08:37:20 GMT

</comment><comment><USER9> It's fast. So fast.

<comment><USER10> And mobile responsive!

</comment></comment><comment><USER11> Damn. Only 25 years old. Puts things in perspective. Its not often that you live through a "before" and "after" to something as huge as this. (9/11 is probably another)

<comment><USER12> My first thought was: "I'm as old as the internet"

<comment><USER13> It's the Web, no Internet though.</comment></comment></comment>


Startup Puts Bounty on Google+ API Team - <AUTHOR> https://businessleads.com/post/644-Looking-to-reach-Google-API-Development-team-to-get-access-to-Google-Pages-API

<comment><AUTHOR> It's $500 and they are an analytics site that's really eager to hear back from a human.

Pay it forward AND get paid.</comment>


Show HN: We just open sourced our Scrum planning poker cards - <AUTHOR> https://redbooth.com/blog/scrum-planning-poker-cards

<comment><USER2> Yak Shaving - I like that you have a word for the concept of a simple task that can break down into lots of complex things.

Where I work we do low and high estimates (in hours, no scrum) but there is no way to express "this may take 1 hour but if the system is horribly enough designed in that area it may take 1 month" \- in which case perhaps we should decide if it is worth it.

</comment><comment><USER3> I especially enjoyed the Brownie card. Had my fair helpings to those cards...

</comment><comment><USER3> Wow. Those are so awesome. WANT!!!

</comment><comment><USER4> really cool! I will have mine!</comment>


Exfiltrating User's Private Data Using Google Analytics to Bypass CSP - <AUTHOR> https://medium.com/@amirshk/exfiltrating-users-private-data-using-google-analytics-to-bypass-csp-5f91eb3b880 <comment><AUTHOR> tl;dr; Since a lot of websites allow google-analytics.com, 3rd party javascript code can use the fact there is no verification on the UA-ID to exfiltrate information.</comment>


A Massive $75 Million Round Streams Into Ustream. - <AUTHOR> http://www.techcrunch.com/2010/02/01/ustream-funding-softbank/

<comment><USER2> They raised $20M, not $75M: [http://www.networkworld.com/news/2010/020210-softbank- pays-u...](http://www.networkworld.com/news/2010/020210-softbank-pays- us20-million-for.html)

</comment><comment><USER3> First it was Zynga and now it is Ustream. Who said raising funds is difficult? No seriously, I have difficulty understanding how can such exorbitant amount of funding is justified during a VC round.

<comment><USER4> It's really not that much money if you consider the cost of running a dedicated data center.

</comment></comment><comment><AUTHOR> Most interesting part of this article is that the money is raised mostly by Japanese banks, earmarked for Japanese / Asian scaling.

Interesting to me because $75m+ buy you a lot of technical talent overseas to build your own - what is it about ustream that makes it so compelling as an investment target vs. a new start-up buildout?

<comment><USER5> Japanese VC is a little quirky. Imagine companies with great big piles of money and no effective pipeline to get it to twenty somethings. I worked at a technology incubator and essentially the only option for startups was friends & family, government microcapital programs, and (for the very lucky) angel funding from local entrepreneurs. This funding environment turns out very, veeeeeeeeeeeeeeeery different companies than Silicon Valley does.

Things are probably different in Tokyo, which is essentially a whole 'nother country which shares a long border and some people with Japan. (I'm only half joking.)

<comment><USER6> what's the startup/tech/funding scene like in Tokyo?

</comment></comment></comment><comment><USER7> I really don't care about Ustream anymore. Not since, like so many places, they went 'super kid friendly'.

I used to love the service as I could watch artist friends create works in real time and watching an artist draw/paint is just.. wonderful. Except, occasionally, they'd draw or paint tits.

And get banned extremely fast.

So, fuck ustream.</comment>


JQuery Overtakes Flash on World's Top Websites - <AUTHOR> http://www.netmagazine.com/news/jquery-overtakes-flash-111350 appendTo, the company dedicated to jQuery, the world's most popular JavaScript Library, released data today showing that the percentage of websites that have jQuery deployed has officially surpassed the percentage of websites that have Adobe Flash deployed. <comment><USER2> I was just thinking yesterday - what ever happened to flash? Glad it's dead and (almost) buried. That said, it's still surprising how fast a dominant technology slips away into oblivion.</comment>


Create easy, free email reminders in seconds - <AUTHOR> http://www.reme.io/

<comment><USER2> you could modify the reminder to send a text. They user selects a carrier and then enter phone number. As another option. US and/or Canada.

[http://www.emailtextmessages.com/](http://www.emailtextmessages.com/)

you might also think about deleting the item once the message is sent.</comment>


Ask HN: Resources for catching up on modern JavaScript for Python/C++ Programmer - <AUTHOR> When first learning to program (back in high school 10+ years ago) I played around a lot with JavaScript, building 'cool' websites that did all kinds of things in JavaScript. I haven't really touched it since.
I moved on to Java and now program professionally in Python and C++ (desktop apps development) and do some webapps development as side projects.
I've found myself doing lots of data visualisation and analysis (performance benchmarking etc) and for the most part I used Matlab and various python libraries to achieve this - but I've been lately using the great Charts.js library. I would love to get up to speed with how 'modern' JS works for frontend development. I'm not so concerned with learning particular frameworks in depth (but should I be?) - moreover what particular programming/design paradigms are considered the most effective?
What resources have people in a similar situation to me found to be useful? <comment><USER3> I was in a similar position two years ago. Best advice I can give is to just build a full-stack website with JS on front and back. Make sure you get your tooling set up so you can use ES6, and then just focus on building what you want.

I would recommend using create-react-app for frontend as it sets up all the tooling for you and is production ready. On backend, I would recommend parse- server but I just have a personal affection for its batteries-included approach. You could also just use a simple node/express setup (and/or mount parse-server onto it).

Three major things that might trip you up, and you should read about and practice early:

\- Async programming / closures. You can't just call a function on an object in a loop like you can in Python.

\- Promises. Figure out how to use these instead of callbacks as soon as you can.

\- Prototypical inheritance. I recommend explicitly writing "classes" with the "old style" of YourClass.prototype.method before moving to using the "class" keyword. The "class" keyword is just syntactical sugar on prototypical inheritance so it's a good idea to learn the raw form before the sugared form.

Recommended reading:

\- "You Don't Know JS" ([https://github.com/getify/You-Dont-Know- JS/blob/master/READM...](https://github.com/getify/You-Dont-Know- JS/blob/master/README.md))

\- Source code. Read the source code of as many JS projects as you can find.

<comment><USER4> +1 for You Don't Know JS.

But the rest is a bit "all or nothing" isn't it ?

React is a huge bite for a start, espacially since you need webpack. How about something lighter first, like Vue.js ? Once you get how it works, you can up your game and go to React (+ webpack + Mobx, don't try redux at first it's too much) or Angular 2.

As for the backend, you can stay in Python first and do a rest API. Then once you get the front right, write a backend using node AND a framework. Do not attempt to pure JS first, it's like doing web Python without django or flask. Possible, but not worth it. ExpressJS is close to flask in philosophy, except for the asynchronous part.

If you really want to have fun though, checkout crossbar.io.

It's a Python router than allow very easy PUB/SUB and RPC between clients. Clients can be written in JS, Python, Java, C#, etc.

You can even write JS clients in the browser, making push notifications and other real time feature a breeze. It's a good way to give you motivation to try on JS: mix it with what you know, and try a new exciting technology. Plus a good way to see the difference between async in JS and in Python.

<comment><USER5> Scratch all that. Go for as long as possible without reaching for a framework like React or Vue. You don't learn JS learning those tools, you are just learning the tool.

React et al gives language newbies good shoulders to stand on, but a lot of React's so-called concepts map fairly simply to lesser-known language primitives. (And for the record, writing a simple, one-way databinding library in JS takes all of about 20 lines of code)

Don't be a tool, learn more than the tools :)

<comment><USER6> Could you expand a bit on your recommendation? Do you mean just ES6? Do you have specific resources to suggest? What do you think about all the associated tooling for writing, compiling, testing and debugging, when starting? Is a browser and a text editor good enough, or is a minimal setup vital, in particular when one is building something that is more than a toy project?

<comment><USER7> I would try to think of it from a first-principles approach. You can begin with a blank slate, for instance, a single HTML file with a


Goodbye Sourceforge - <AUTHOR> http://blog.elementary.io/post/121768724076/goodbye-sourceforge

<comment><USER2> A big minus -1 to sourceforge's rep!</comment>


Tell HN : Wordpress.com exploit - <AUTHOR>

There seems to be a very serious wordpress.com exploit which allows 3rd party sites/domains to gather a hash code which can be used to login to an user's account. Here is how to reproduce,
1. Login to wordpress.com
2. Take a look at this page : http://www.sandaru1.com/wordpress_test.html (This page is just showing the hashcode/url, I'm not saving any hashcodes)
3. Open another browser (in an attacker's case, his/her browser) and paste the URL shown in the page
4. Goto wordpress.com on the new browser and you are logged in
The exploit itself seems to be too simple. Am I missing something here or is this a serious bug?
P.S - I emailed both Automattic support and Matt Mullenweg. I didn't get any response back. <comment><USER2> WordPress.com team is investigating the issue. They have disabled the vector while they continue to investigate.

<comment><USER3> Do you work on the Wordpress.com team? No info in your profile.

<comment><USER2> Yes. Updated my profile, but don't believe what you read on the interwebs ;-)

<comment><USER4> Ha! Funny as always.

Too bad there is no way of verifying you are really lloyd.

Seems like we could come up with something - even if it only works for techies.

<comment><USER5> You mean like foaf+ssl?

</comment></comment></comment></comment></comment><comment><USER6> How did you contact them by the way? I've been looking for ways to get in touch with them with a security related question but can't find anything, which doesn't look well on their part, especially with their security record.

<comment><USER2> Does seem a little tricky to find.

security at wordpress.org Listed at <http://core.trac.wordpress.org/>

Members of WordPress.com are on that mailing list as well.

<http://en.support.wordpress.com/contact/> if anything is definitely WordPress.com specific, but I suggest always including security at wordpress org, because there may be another permutation to the attack.

</comment></comment><comment><USER7> I experienced something similar a while back when I tarred up a live instance of a wordpress installation and fired it up on my local machine. To deal with redirects, I changed /etc/hosts to resolve the live domain to the local IP. While I was working on the local copy, I would from time to time need to refer to the live instance. To do this, I'd comment out the entry in /etc/hosts and browse to the live site. At some point, I noticed that the theme for the live site had been set back to the default. When I investigated, it turned out that my session credentials for the local instance were honored by the live (remote) site.

The odd thing about this is that I hadn't been given the admin password for the remote-live wordpress instance. I had manually modified the database to change the admin password in order to work on the local instance before firing it up.

I never did look into how wordpress created or verified session credentials, but it did seem like something odd was going on, there.

</comment><comment><USER8> I haven't tested this, but if it truly works, one just needs to include ); in a page and harvest hashes of its visitors?

<comment><AUTHOR> Yes. Just a simple JSONP API call.

<comment><USER3> Is there wordpress JSONP API documentation anywhere? A couple of Google searches didn't turn anything up.

<comment><USER6> I checked out the Wordpress source just now and no mention of remote-login. I don't know if wordpress.com itself has any API documentation.

<comment><USER9> It looks like they have an xmlrpc.php file - so you could try using that.

</comment></comment></comment></comment></comment><comment><USER10> Just curious, how long did you wait for a response before doing the whole full disclosure thing? :-\

<comment><AUTHOR> About 2/3 days

<comment><USER11> like in 2 or 3 days, or like 0.666 days? :)

<comment><AUTHOR> 2 or 3 days

<comment><USER12> Couple of weeks ago I found a WP related hack on MT, had the same dilemma. I still wonder what the proper protocol is.

<comment><USER13> For core issues (WordPress.org), send an email with the details to:

email@example.com

For WordPress.com specific issues, you can use the general support form:

<http://en.support.wordpress.com/contact/>

<comment><USER14> General support form for inbound security findings? Check!

Word "security" appears nowhere on the front page? Check!

Word "security" appears nowhere on the support page? Check!

Guys. Please. Fix this! It's not like it's unlikely that someone is going to want to report things to you.

You need:

* A security page...

* ... with a PGP key ...

* ... and an email contact ...

* ... of someone who will write back immediately ...

* ... who knows what a security vulnerability is.

That's all you need to do. You haven't done that yet. You come close on Wordpress.org, but not close enough. You are asking people to wait only 2-3 days before writing scary-sounding blog posts. This is too easy not to fix.

While you're at it, earn some extra credit:

* Reply with special vulnerability IDs so that reporters think their report isn't waiting in line after bugs in your online help system. Whether it actually or isn't isn't even a problem you need to solve yet.

* Thank researchers privately instead of ignoring them.

* Give them a phone number to call back and get status on their report. You're a company. You can scale this.

* Be like Google, Apple, and Microsoft and keep a thank-you page for people who have disclosed problems "responsibly" to you.

<comment><USER15> Some more useful advice for Open Source projects and security/release management can be found in "Producing Open Source Software" from <http://producingoss.com/en/publicity.html>

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> Situations like this are why I've chosen to stay away from wordpress.

<comment><USER17> If this was your personal site or a custom CMS, odds are there wouldn't be enough community support to report bugs (or exploits) like this one. You'd simply go about your business thinking your site was secure.

<comment><USER18> I know he didn't state which direction he chose, but assuming that he's incompetent is pretty bad on your part.

I remember few months ago, wordpress had a bug where an attacker could keep on resetting administrators account password. He might actually have a point

<comment><USER17> Incompetence has nothing to do with it. It's just all too common that we overlook something in our code. All software inherently has bugs as no developer is perfect. There's alot to be said about having millions of prying eyes nitpicking your source code. I'd much assume millions of people critiqued my code as opposed to none at all.

<comment><USER19> Have you looked at the code? When I started using WordPress on my personal site, people warned me not to look behind the curtains. It seems pretty notorious for being a mess.

</comment></comment></comment></comment></comment><comment><USER20> I sent this News.YC page over to Barry over at Wordpress who runs ops.

FWIW, I tested this and it does seem to work.

</comment><comment><USER9> ok, I got a friend to copy/paste my url into their browser over IM (currently in the wrong office to access different IP's) and it didn't work (I am assuming they did it right, etc.).

So this looks like it could be a local exploit only (doesn't make it any less exploitable)

<comment><USER21> I get "Invalid key." locally.

<comment><USER9> I get that if you try the same hash twice. Go to wordpress.com and see if it logged you in.

</comment></comment></comment><comment><USER3> Based on a comment below it seems this doesn't affect local installs of Wordpress since the source doesn't include remote-login.php.

</comment><comment><USER22> OK Here's what I experienced.

First I loged in WP, got the URL from sandaru1s page. I logged out and tried the URL. And yes it worked. Then I deleted all wordpress cookies and tried again. Then I got the response as invalid key.

Again logged in and fetched new URL. This time I got a 502 with the URL. Refreshing took me 'invalid key' message (didn't touch cookies).

Update: Sandaru1s page doesn't provide a url anymore (for me). May be it's fixed?

Update2: Going to Sandaru1s page once logged in to WP now logs me out.

</comment><comment><USER23> Shoot, works for me. WTF.

Edit:

Post this exploit here: <http://en.forums.wordpress.com/forum/support>

Of course, you'd have to be logged in first. =p

<comment><USER24> I wouldn't post it there. I would contact them privately. We don't want any random stroller of the wordpress forums to get a hold of this.

<comment><USER25> but you would let a random stroller of hn get hold of this??

<comment><USER24> That ship has already sailed. The more places it's posted, the worse it is.

</comment></comment></comment></comment><comment><USER26> Works for me. :|

<comment><USER9> yep, me too. ouch.

EDIT: is this tested on different IP addressess? I only have the one IP address in this office to try it on - I could see it being IP secured.

<comment><AUTHOR> I tested it using two different IP addresses about two days ago. Exploit is still there. Even if there are IP restrictions, it might be dangerous.

</comment></comment></comment><comment><USER27> Is there any way, that it's fixed already? I've got the message "Invalid key." while I was trying to go to that URL in incognito/private mode OR in another browser</comment>


Notepad Calculator: For jotting down quick calculations - <AUTHOR> https://github.com/SteveRidout/notepad-calculator <comment><USER2> Original author here, thanks for posting my little calculator to HN - pity it didn't get many upvotes, although can't say I'm that surprised since it's very basic!

Hope to do some work to improve it one day.</comment>


Ask HN: Which technology to learn from Classic ASP - <AUTHOR> I am a classic ASP developer and planning to learn new technology which:
1. Easy to learn from my existing knowledge
2. If possible then should be within small possible duration to learn
3. Can help with getting a new job <comment><USER2> C# and asp.net. The tooling will stay roughly the same. Many of the concepts will stay the same. These is plenty of work available.

<comment><USER3> Not only is there work available, by staying in the Microsoft ecosystem, existing clients for Classic ASP are leads for upgrade projects.

If picking an outside technology, PHP might be a reasonable addition to Classic ASP because it often fills a similar niche.

Depending on goal specifics, ASP.NET MVC might be a better option than webforms...even though webforms are a simpler abstraction when I look at them.</comment></comment>


Google is Done Paying Silicon Valley's Legal Bills - <AUTHOR> http://www.eff.org/deeplinks/2008/11/further-thoughts-google-book-search-settlement <comment><USER2> Little story about Henry Ford. Every grade school American History textbook mentions how Mr. Ford raised the wages of his factory workers above market value, so they could afford to buy the cars they produced. Little known fact: Ford was then sued by the shareholders for breach of fiduciary responsibility. He lost.

Google is a publicly traded company. Its CEO and board are bound by law to seek the greatest returns possible for shareholders. If they don't seek the highest returns, they can be sued. They have decided that it is no longer in the monetary interest of Google to subsidize legal costs for an entire industry.

<comment><USER3> I find it interesting that many believe a company's "CEO and board are bound by law to seek the greatest returns possible for shareholders" is actual law. Is it? What is this law? Companies are state entities, not federal ones. So the only federal law would be SEC stuff, right? I find it hard to believe that all 50 states have the same law.

IANAL, I would appreciate someone pointing me the law or court decisions that have made this to be.

<comment><USER4> Two relevant Wikipedia links:

<http://en.wikipedia.org/wiki/Fiduciary> <http://en.wikipedia.org/wiki/Board_of_directors>

Summary of fiduciary duty as I understand it (IANAL):

An agent has a responsibility to act in his or her client's best interest. An example is a trust, which is obligated to act in the financial best interests of the beneficiary. I believe a lawyer's duty to the client and a doctor's duty to the patient are similar. In the case of a board of directors, they have a legal responsibility to act in the best interest of the shareholders.

</comment></comment></comment><comment><USER5> There is no incentive for Google to take cases all the way through the court system just so they could set a precedent that helps the rest of us.

There's actually a disincentive for them to do that since precedents could help their competition and court cases have unexpected consequences.

<comment><USER6> _There is no incentive for Google to take cases all the way through the court system just so they could set a precedent that helps the rest of us._

The article says that the proposed settlement over book indexing is for $125M. I have no idea if it costs that kind of money to obtain justice.

One thing made me very uncomfortable while reading the article:

the fact that one needs deep pockets to fight it out in the courts. When the amount of money one has significantly affects the outcome of a legal fight, what is the meaning of law? Isn't it how Microsoft gets away with pretty much anything?

</comment></comment><comment><USER7> I think this is more of a strategic decision. The opportunity is for google and only google to pay to scan all the books. This increases google's value, and competitors need to decide if it is worth it to them to spend the dough.

<comment><USER8> I think that the point the EFF article was trying to make: that Google is helping itself at the potential "expense" of others. But the EFF is an industry-wide advocacy body, so they have a vested interest in promoting the industry as a whole by helping to establish precedent, not just helping individual companies.

</comment></comment><comment><USER9> I'm not sure that this is any shift at all in Google's policies. It's probably that in all of these cases Google was trying to do maximize their own profits.

It probably just weighed the odds and decided, in those cases where it went to trial, that it was better to try to win the case than pay a huge settlement check. In the Author's Guild suit, they probably realized they had little chance of winning and the results of a loss would be incredibly costly.

It's a mistake to assume a corporation is (or should be) trying to fight for innovation rather than to maximize their own profit. Google may try to avoid evil, but they're not moral crusaders either.

</comment><comment><AUTHOR> don't be evil?

<comment><USER10> this isn't evil. there's a very real chance that google will lose the suit if they take it all the way, so settling at least buys them the ability to go forward with their book indexing project and protects them from a potentially very large legal liability. it's not like google set out to strike an exclusive-right-to-copy deal.

<comment><USER11> I don't understand why this is any different than web search, which has repeatedly won in court. Can someone explain it to me?

<comment><USER12> I think part of the difference is that robots.txt was established early enough to become a de facto standard way to opt out of automated indexing. There is no equivalent system for print, where the convention is that everything is fully protected by copyright by default.

Another difference is that automated indexing has become inherent to web publishing, so much that people publish with the expection that Google will index their pages. Book authors, on the other hand, publish with the expectation that their works are not indexed in this fashion.

</comment></comment></comment></comment><comment><USER13> $#%&.

</comment><comment><USER14> This is pure linkbait.

What high-profile cases has Google won (not settled)? I can't think of any off the top of my head.

<comment> jim-greer Most of the cases are important in setting precedents though the plaintiffs weren't big names like Viacom:

Perfect 10 v. Google - A porn site sued them over creating thumbnails of their images for image search. Google won, and set an important fair use precedent.

Geico v. Google - Geico sued over Google allowing competitors to buy keywords on Geico's trademark. Google won - this mostly affects keyword advertising.

Field v. Google - Writer sued Google for caching a page with his work. Google won.

There are others...</comment></comment>


Flipboard for iPhone - <AUTHOR> http://flipboard.com/ <comment><USER2> That's a nice landing page. I wonder how quickly it starts up with a slower connection, though - mine started immediately.

<comment><USER3> It's just an auto-playing video loaded behind the content. Path did the same thing with their v2

<comment><USER2> Which I haven't seen. And it would still look nice, even if I had.</comment></comment></comment>


Show HN: Try out OSS webapps before installing them - <AUTHOR> https://show.layerci.com <comment><AUTHOR> Hey HN,

We built this as a little hackathon project on top of our "get a dozen staging servers" platform at [https://layerci.com](https://layerci.com)

The "show layer" gallery lets you create instantaneous staging servers to play around with software, as well as discussing it and submitting your own favorites for the community to use.

Submitting is currently pretty difficult, but we'll try to add any projects you submit, even if you don't have a screenshot or staging configuration for it.

<comment><USER2> Hey HN, co-founder of LayerCI here. I recommend trying the following 1) the Ghost project:You can basically login to Ghost to try their onboarding without having to go through their actual trial flow, by leveraging LayerCI's staging feature. 2) share your project: we're happy to host your web app for free to show off what you're up to</comment></comment>


Meteor 0.9.3: Packaging updates and improvements - <AUTHOR> https://www.meteor.com/blog/2014/09/25/meteor-093-packaging-system-updates

<comment><USER2> I used Meteor intensely for two projects up to where they introduced the new templating system (blaze), which broke both of my projects extensively including some third party Meteorite packages that I couldn't fix myself (believe me I tried) and seemed to be abandoned by their authors.

I also gave up trying to get my projects to be SEOable because the package that supposedly lets you do this (spiderable) was very hard to use (I got so frustrated with it I started my own version, which I later abandoned).

I started to write a post to the Meteor mailing list about these issues, but stopped as I believed it was too negative and I needed to just take a break from developing with Meteor. Overall I am quite sad with the whole experience as I had a lot of faith in what Meteor was trying to achieve, but feel these massive breaking changes in APIs is just too much for this one dev to cope with.

It's the thing I hate most about the JavaScript ecosystem. Projects throw out huge breaking API changes without a care in the world and devs are expected to just keep up. Things move too fast, break too easily. It isn't like this with other languages I've used.

<comment><USER3> (Disclaimer: I work at Meteor) I'm sorry that you had such a bad experience with the transition to Blaze. We have been moving very fast on changes trying to nail down a good API for 1.0, which is coming very soon at this point. Hopefully you will give it another try when 1.0 comes out, and the API becomes stable.

One of our goals is to be suitable for enterprise and consulting shops, and that means we will need to declare a point after which we will do everything we can to maintain backwards compatibility. That point will be the 1.0 release.

<comment><USER2> Thanks for the considerate reply. I'll wait until 1.0 and come back and have another look around when the dust has settled. Backwards compatibility is such a big deal for so many people, I hope you guys can keep things stable post-1.0.

Good luck with Meteor. :)

<comment><USER4> I wrote a pretty complex app on 0.6.5. It wasn't hard to bring up on 0.8 when that came out last March. I haven't touched it since May, except to run "meteor update" and start the service up again. I have it running on 0.9.3 now without any issues.

It's a very good idea to limit the number of external packages you depend on in any environment. And if you take the time to inspect the source code behind a package before you commit to using it in your project, you can make things easier for yourself in the future. MDG (Meteor Development Group) is very transparent about what they're changing and why - just follow the meteor-core Google group, and/or watch the commits on their github page. If you're paying attention, you will often have a month or two of warning about what a future release will contain.

</comment></comment></comment></comment><comment><USER4> Meteor has gotten a hell of a lot better since I started using it (back in the 0.6.5 days about a year ago, in the fall of 2013). Performance and stability have improved dramatically, both on the client and server.

I've been working on several large projects, and the new things that Blaze has added (mutable, per-template data instances) have made my life a lot easier. The transition between each release has been very, very smooth. Now that it's possible to write sensible UI components, and 1.0 is very near, Meteor deserves your attention.

<comment><USER5> Can you elaborate on this statement? "Now that it's possible to write sensible UI components"

I'm curious what improvements you are referring to.

<comment><USER4> [http://docs.meteor.com/#template_instance](http://docs.meteor.com/#template_instance) [http://docs.meteor.com/#tracker_autorun](http://docs.meteor.com/#tracker_autorun)

Suppose you want to make a widget, such as a drop-down menu that lets you edit the currently selected item. To do that, you need a place to store the currently selected item id. Storing this in a collection is not desirable either. If you rely on session variables, you can't have more than a single instance of your widget running at a time because session variables are globally scoped.

Now with template instances, there's finally a way to store and retrieve that selected item id (or anything else, for that matter) in a way that's conveniently accessible within template helpers and event handlers on a per- template basis.</comment></comment></comment>


Ask HN: How do you create productive habits? - <AUTHOR> One of the things I do to deal with procrastination, and that I've had the most success with, is to develop what I consider to be productive habits. Basically, it just means me using a daily todo with tasks that I consider to be productive. I've tried out apps such as Streaks (http://streaksapp.com/) and I'm currently using Daisy (http://daisyapp.xyz/) to aid me with this.<p>Although I am successful with this, I'm always on the lookout for more efficient (and perhaps more fun) ways of doing this. So I'm curious to hear what you people do to create productive habits? Any apps or other methods you suggest for habit creation? <comment><USER3> Personally speaking, no apps helped me beat procrastination. What actually helped me a lot is figuring out that I am unhappy and depressed in my life and why is that. Once I figured that out I set for big changes, and stopped caring a lot for things that made me unhappy. I appreciated things I got, I started going on trips around the world and met my wife. After being happy in life I found my self in a very positive mood and very keen to explore things and not just sit in-front of a computer browsing youtube or other things that didn't help me in life.

Another thing that helped me a lot, although am a software engineer and I write code for a living, I said I'll only use computers, phones and whatsoever while I am at work. When am off work I am completely off tech, including TV. That forces me to enjoy time with my wife and go out do things, workout etc. Now of course this might not work if your goal is to make research or I don't know create app's per se or your own company. Although making sure that your hobby, goals, work whatever that is only takes part of your time a day and not the whole day tends to help into having a balanced life.

Good luck.

Edit: also something I forgot to mention those apps you mentioned might work for some people that like task specific programs etc, personally I find it that I couldn't program my life at all, I'd rather having it in a natural flow than having appointments with life, but thats just me, I see people that are quite happy with having a schedule.

<comment><USER4> I absolutely agree with you. I downgraded to a smart phone that only runs maps and has a camera and this has forced me to semi switch off tech when I'm away from my computer. My friends think I'm crazy (mostly because I'm a developer who doesn't have a "smart" phone).

<comment><USER5> I'm genuinely curious to know what phone or plan you use that only runs maps and camera. Google Maps or soemthing like openstreet map? I'm looking to do something similar. Any info would be appreciated.

<comment><USER4> It's an iPhone 4 with a broken mic which I got for free. It's too old to run a lot of distracting apps (VSCO, Snapchat etc) and I can't call people. I have a $20/month (AUD) prepaid plan for 1GB data which gets me through easily. I guess it can only figuratively run maps/camera, but it's enough to keep me from using it 24/7\. Battery also lasts several days because I use it so little.

<comment><USER6> I use and iPhone 4 (conveniently my mic is also broken) and I am not upgrading since I get /so/ much use of it. I feel it can run everything I would want from a smart phone.

My battery lasts like 10 minutes though, and the camera is kind of broken.

<comment><USER4> I swear every iPhone 4 has their home button and mic broken eventually. I think the battery life dives dramatically after some point which I haven't reached. Will probably upgrade after that happens.

<comment><USER6> Actually the mic works, I just get/give no sound when in a call. Works perfectly everywhere else. Home button works as well, but I mainly use something like Assistive Touch anyways.

<comment><USER7> i had that happen on my nexus 5. for me, it was a bug in the headphone jack, though i didnt bother to go about fixing it.

in a call, the phone thinks theres another mic installed, and tried to use that instead.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> When I really have to work I use a chess clock. Old fashioned, mechanical, large and an ugly reminder of my time 'off the clock' because then the _other_ clock starts to tick. The ratio between those two is the thing to maximize and it's extremely easy to use. Stop working just push one button, start working press again on the opposite side.

Very useful little trick and way easier to use than anything online or in an 'app'.

<comment><USER9> RescueTime is a pretty good approximation of this for me and is automatic.

<comment><USER10> Two different solutions; RescueTime is good at analysing how your time is spent after the fact. A chess clock is a great real time stopwatch "oh man i've been googling rhubarb crumble recipes for 14 minutes..."

<comment><USER11> If you're on Mac then Qbserve[1] (our app) will show feedback on your productivity in real time.

[1] [https://qotoqot.com/qbserve/](https://qotoqot.com/qbserve/)

</comment></comment></comment></comment><comment><USER12> Ok here's an obvious list of things that should be useful. Obviously you agree (as I do) with the Leo Babuta concept of 'habits' versus 'discipline' [0]. I'd say these are just the basis - but I believe all of them will help if you can apply them consistently. But I'd also say that there's not much point in trying other techniques until you feel you've consistently tried these for a year or more (potentially I'd say up to a life time of trying).

1\. Headspace (daily meditation) [1] - helps with focus

2\. Wait But Why on procrastination [2]

3\. 4 Ways to get motivated [3] - I like the second one about a 'pre-game routine' doing the same physical activity just before starting work. I do the yoga 'sun salutation' twice (takes about 5 minutes, helps with back problems)

4\. Leo Babuta's free 'Focus' book [4]

      [0]: http://zenhabits.net/discipline/
      [1]: https://headspace.com
      [2]: http://waitbutwhy.com/2013/10/why-procrastinators-procrastinate.html
      [3]: http://plan.io/blog/post/146892730063/4-ways-to-get-motivated-when-you-dont-feel-like
      [4]: http://focusmanifesto.com/

</comment><comment><USER13> Constrain the time you have to do something.

Work often fills the time you give it. If you try to achieve something in a short amount of time, you'll be forced to work at 100% with full focus to get it done ASAP. I'm always amazed at how sometimes a dreadful task takes 10-20 minutes when I'm forced to do it in that timespan, but if I have an hour to do it, it'll take an hour.

To make the constraint feel real, put yourself in a situation where you only have a short period of time before something else must happen, like a meeting. Then you can trick yourself to get started and see how far you can get in 20 minutes.

<comment><USER12> This does seem like a sensible way to invoke the panic monster - but for me it's often undermined by the fact that it's just me that tried to put the artificial deadline there and my brain happily ignores it moving onto the next deadline.

There was something similar laid out in this blog [1].

      [1]: http://www.raptitude.com/2015/03/how-to-get-yourself-to-do-things/

<comment><USER13> Thanks for sharing that blog post! I really liked this aspect of it:

"You finish a thing by starting it until it's done."

I read another blog post whose thesis was "To avoid procrastinating, think about starting instead of finishing". That helped me a lot too. Once you start, work isn't as bad as it seemed.

</comment></comment></comment><comment><USER14> Read The Power of Habit by Charles Duhigg. He has some good suggestions. One of the best ideas in there is that certain small habit changes create behavioral cascades. For people trying to lose weight, just writing down what they eat at each meal has a huge effect. When you make up in the morning, making your bed increases the likelihood that you'll do other things that require discipline. The idea is to get many small wins, because they accumulate and give you momentum to tackle harder and harder tasks. When you draw up your goals, the trick is to state the goal, imagine the obstacle that might prevent you from achieving it, and then figure out what you'll do in that scenario. That's the thinking behind the WOOP app: [http://www.woopmylife.org/](http://www.woopmylife.org/) which I'm not affiliated with, fwiw. Finally, in your HN profile set "noprocrast" to yes. ;)

<comment><USER15> The best takeaway from that book is the "cycle" of habit: cue -> routine -> reward. The message of the book is that if you have a bad habit, e.g. smoking, there is a "cue" that causes you to engage in the "routine" of smoking, for the "reward" of nicotine. Unfortunately, these cycles are hard wired into our brain, so once they're fully established, we can't change them. The author offers the solution: keep the "cue" and the "reward," but change the "routine." The first step is recognizing the cue. Once you know what it is, you can replace the "routine" with something more benign, that also leads to a reward.

So for procrastination, maybe the "cue" is your code compiling, and the "routine" is typing "n -> down -> enter" into your address bar to get to hacker news, and the reward is some sort of stimulus. You can fix this habit by recognizing the "cue" of code compiling, and swapping it out for a new routine, like 30 pushups, to get a stimulus reward of energy.

<comment><USER14> totally agree! digging in a little more, he talked about the cycle of:

cue -> craving -> action -> reward

and the whole question is, how do you find rewards that instill craving which will lead you to an action that changes your lifestyle?

</comment></comment></comment><comment><USER16> Beeminder ([https://www.beeminder.com/overview#how_beeminder_works](https://www.beeminder.com/overview#how_beeminder_works)) has been life-changing for me, taking me from zero to working out 3x/week and meditating 4x/week, and currently helping me learn to blog more regularly.

It's in the same category (habit formation) as Daisy and Streaks but with a somewhat power-usery focus. You commit to any number of quantifiable goals (e.g. "work out three times a week for the next 6 months"), it reminds you to stay on track, and if you fall behind, actually charges you money. The idea is to tie your long-term goal ("work out regularly") to your short-term sense of immediate priority ("work out today or it'll cost ya").

One of the reasons it works for me is that it fits with a flexible schedule. I don't have to work out at 8am every Monday; I just have to work out sometime early in the week. I can build up a "backlog" and "spend" it later. Conversely if I have a crappy week and let habits slide, it reminds me to make up for it the following week.

The Beeminder team also blogs regularly on the subject of habit formation and self-control - e.g. [http://blog.beeminder.com/flexbind/](http://blog.beeminder.com/flexbind/) which goes into more detail on why they've designed the system the way they have.

</comment><comment><USER17> Pomodoro technique [1].

Break your time/tasks into 25-minute chunks, where you focus on a single task (no context-switching, pauses, breaking). Rinse, repeat.

I use Flat Tomato on the iPhone, and I can track how many pomodoros I complete each day/month, which gives a good feedback as to my goal tracking.

[1] [http://caps.ucsd.edu/Downloads/tx_forms/koch/pomodoro_handou...](http://caps.ucsd.edu/Downloads/tx_forms/koch/pomodoro_handouts/ThePomodoroTechnique_v1-3.pdf)

<comment><USER18> I tried the pomodoro technique multiple times, and it failed. The reason for its failure was the lack of emphasis on setting up the right atmosphere.

Now a pomodoro (I use Productivity Planner, made by the guys who made 5 Minute Journal, so I keep track of my pomodoros) doesn't "count" unless I check everything off of the pomodoro prep checklist.

1\. Airplane Mode / Turn Cellular Data Off (for urgent calls)

2\. Freedom app (blocks websites)

3\. Music (atmospheric, mostly)

4\. Sign & Lights (let people know I am working, and have the right lighting)

5\. Snacks & Tea / Energy Drink

6\. Water

Then I lock the door, start the timer, and off I go.

Ever since I created this checklist, I have rarely been disrupted from my work. Sharpening the saw is quite important to saving willpower.

<comment><USER19> I used to do this during exams, suits me perfectly.

Another suggestion, If you're working on a side project or studying, try to do it early in the morning ( for me it's 4am ), you'll feel less distracted.

<comment><USER18> Early morning works well. Most of my effective pomodoros are before 11 am. I start around 6 or 7 am, and get most of the crucial things I want done for the day, done.

I don't even try to work after dinnertime if the work requires a lot of discipline. They never pan out for me. Better to sleep earlier and spend morning hours more effectively.

</comment></comment></comment></comment><comment><USER20> I find that my procrastination comes from tasks that my brain thinks are too hard, so what I do is I make todo lists, I break the task down into smaller more manageable tasks until they're small enough to digest easily. The more tired/cbf/bored I am, the smaller I make the tasks.

Also, for avoiding distractions I usually keep a piece of paper on my desk titled "distractions", if my mind wanders, I write down the thing it wandered to, if it happens again I put a dot next to that thing, surprisingly I never get more than a few dots before it's completely out of my mind for the day.

I kind of feel like this is somewhat related to the whole concept of mindfulness, rather than being stuck in your own distractions you observe them and move on... These two things help me immensely.

</comment><comment><USER21> I recommoned BJ Fogg's tiny habits course: [http://tinyhabits.com/](http://tinyhabits.com/). It's a really simple and easy free email course that shows one way of creating new habits.

How do you like those two apps? I'm currently trying out strides, but it seems like I only use it when I'm logging stuff. I'm kind of wondering if a paper calendar would be better to keep the logs right in front of me.

</comment><comment><USER22> I keep this on my desk, in a spot where my eyes land whenever my head starts to wander: [https://bwitzenhausen.files.wordpress.com/2013/11/butler- wal...](https://bwitzenhausen.files.wordpress.com/2013/11/butler-wallpaper- habit.jpg)

"First forget inspiration. Habit is more dependable. Habit will sustain you whether you're inspired or not. Habit will help you finish and polish your stories. Inspiration won't. Habit is persistence in practice."

<comment><USER23> I have a set of mandatory activities, which I do for one hour and forty minutes.

When I have motivation or interest, I pushed on.

With this, I released a rewritten version of a factorio mod(thank god that I didn't decide to try to rewrite all of it). I am also on the last leg in completing a story.

However, I got whacked with a computer hardware failure, exiling me from osx and data...

Now, I'll have to find other activities worth doing in lieu of a working computer until it get fixed. :(

</comment></comment><comment><USER24> Funny enough, the moment I stopped caring so much about time and optimizing it, the more productive I got.

Before I found that no matter how much time I had, I was always scrambling. This may be a bit too philosophical, but focusing on moment to moment and bringing attention to the problem at hand really helps.

I recommend reading Jacob Needleman's book about Time and the Soul.

"It is not, therefore, the rapidity of change as such that is the source of our problem of time. It is the metaphysical fact that the being of man is diminishing."

\--Jacob Needleman, in Time and the Soul

</comment><comment><USER25> My phone's calendar app has become crucial to me. Recurring tasks - <USER2> cycles, fitness, etc. - get a recurring block, with a well-defined start and end time. Non-programmed to-dos("remember to bring a..." "don't forget to take care of...") are accomplished by throwing in the task somewhat arbitrarily at a moment in the future when I might be able to do it. Between those two I always "find the time" to work on what I intended to work on and my stress about what needs doing goes way down, while my consistency goes up.

Sometimes the schedule slips or I sleep in and let a bunch of tasks slide; this is an expected failure mode and I build it into how I use the calendar. I do not think about strategies to be productive anymore - my maximum capacity per day is acknowledged by setting those start and end times, and if I want to produce a lot then I aim for consistency.

</comment><comment><USER26> Personally, I'm a big fan of "Baby Steps" by Dr. Leo Marvin. It means setting small, reasonable goals for yourself, one day at a time, one tiny step at a time. Just set up long range plans and when executing, focus on the immediate step you are facing. Baby steps.

</comment><comment><USER27> Here's a meta comment.

When I look this thread as of now (11 July 18:00 in Amsterdam), I see almost no nested comments in the middle.

Typically when I read nested comments I see: agreements, disagreements or new perspectives. In most HN threads the most upvoted comments have the most nested comments, but it is also quite common to see a lot of nested comments somewhere in the middle in topics that have this many upvotes and I don't see them.

The upvoted comments and the nested versions are quite original -- 'soul searching'/self therapy, broken iPhones, blackberries and chess clocks. I haven't seen half of it in productivity books, perhaps variations of it, but the variations wouldn't allow me to think of a chess clock.

I'm thinking of why there are fewer nested comments in the middle. It might be because: 1\. big enough personal differences in habit formation (my hunch) 2\. we're all saying the same thing but we don't recognize it or we do but don't react 3\. there's simply no need for further comment

</comment><comment><USER28> After years of trying to learn Japanese through osmosis by living here, this year I managed to get myself to seriously study again despite not going to school anymore.

It's a combination of a study app called Nihongo and a reminder/streak app called Commit. Now after studying about 30 mins daily for 6 months I've started to really enjoy my study sessions, and the joy of seeing the characters I've learned in my daily life. Now when the Commit reminder comes up I've usually already started my study.

<comment><USER29> Not related to habit formation, but may I say what worked for me when learning Japanese in Japan?

Take the Nihongo Nouryoku Shiken. Bookstores sell material to study for it. It's great having a study milestone.

Start reading, if you haven't already. Books, magazines, anything. A kanji you see "out in the field' for three times becomes yours.

To improve listening skills, I recommend watching lots of jdrama. If you don't understand a dialog, listen again.

And most importantly, interact as much as you can with Japanese people. This is harder than it sounds, because... Japan.

</comment></comment><comment><USER30> I find it useful (essential, really) to understand how my todo tasks relate to my longterm goals. If I can't draw a line from my task to my goals, then it's less motivating.

</comment><comment><USER31> Nobody's mentioned Strava yet. (Other sports trackers work as well)

Cycling and running every morning does the trick for me. Starting the day early with the burning desire to complete something in the shortest possible time leaves you applying that mindset to everything else you do. Sadly, this also means I'm noticeably less efficient on days I don't exercise in the morning.

Keeping track of my rides and runs gives me a good perspective on competition. I'm trying to beat my own records, and see how I compare to others. I feel a constant need to improve, and this helps me push myself in a healthy way in other tasks.

</comment><comment><USER32> What we are dealing with here is what the author Steven Pressfield calls "Resistance". He has two great books on the subject that helped me a lot and you should check out: The War of Art (2002) and Do The Work (2011)

Procrastination is basically a consequence of letting resistance run amok and by dismantling the resistance, all the wind goes out of the procrastination.

Looking for an app or some cutting edge new way to deal with a 10.000 year old problem (that was also solved 10.000 years ago) is pretty much just putting a band-aid on it.

</comment><comment><USER18> Nothing beats the Productivity Planner[1]. A simple, well-designed, and minimalist planner that gets the job done. I have never been more in flow during work hours.

Five Minute Journal, made by the same guys, is also great for worrying less and living in day-tight compartments.

I highly recommend using both in concert.

[1]: [https://www.intelligentchange.com/products/the- productivity-...](https://www.intelligentchange.com/products/the-productivity- planner)

</comment><comment><USER33> Can I hijack and ask, how do I become a "determined" person with grit? Is it learnable? If something becomes too hard, I just convince myself the success is not worth it or not attainable.

I might actually be right. Success might not be worth it. It seems winners are usually more motivated by hatred and fear of losing / failure than the joy of winning. You see this with sports stars all the time (MJ).

<comment><USER34> Have you listened to the Freakonomics podcast [1] on this exact question? It was an interesting exploration of "How to get more grit". If I remember correctly, many of the episodes around that time period (May of this year) were about getting good at things/self-improvement [2].

[1] [http://freakonomics.com/podcast/grit/](http://freakonomics.com/podcast/grit/)

[2] [http://freakonomics.com/archive/](http://freakonomics.com/archive/) (Around episode 245)

</comment></comment><comment><USER35> The best app is probably sitting in front of you. It is called an old fashioned calendar. Intention and discipline are the keys to getting stuff done. You have to develop a powerful WHY. Why do you want this change so bad? Once done the next thing is to not leave it to will power and chance. Schedule the time on your calendar. I believe in starting small and using the lowest barrier to entry. Plan your day the night before and time block what needs to be done. Don't worry about perfection. You need consistency first. You need to become the person that shows up when you say you will. You have to develop character. The last piece of the puzzle is understanding that motivation is not a prerequisite to creativity and taking action. You will find both of these bubbling from within as you start to act in a consistent manner. Do it later translates to do it never and robs energy from your creative genius that can and should be spent on the task at hand.

Good luck and let me know how it goes.

</comment><comment><USER36> For me to do lists are waste of time. I use Wunderlist to keep lists of things that i might do/read/work on sometime in future. I use my calendar for things that must happen.

None of this is a way to 'solve' procrastination. The best way to overcome it is to do something. Anything. 5 minutes on 'the task' is better than 5 minutes wasted on something unrelated. Find a method to get yourself to do something. Even 60 seconds is enough because it is more than nothing. As you do that regularly you will overcome your procrastination.

As other posters have mentioned though you do sooner or later need to find the root cause. It could be one of many things, but only finding that will help you to make real progress.

Wish you all the best.

</comment><comment><USER37> The most effective way that I have used: 45 minute work, then 5 minute bathroom break + stretches, then 45 minute work, then 15 minute break. Repeat.

The key is to understand that your body needs many little break from time to time, regardless of what your brain thinks.

</comment><comment><USER38> For me, this typically involves a lot of analysis as to what the obstacles are. There are typically multiple things conspiring to turn me into a slacker and it doesn't generally work to just knuckle down and do it. Figuring out the underlying causes and addressing those is what works for me.

So, you might try spending some time asking yourself 'Why?' x, y or z is failing to get done. Be really honest with yourself. Don't tell yourself anything PC. Then, if you still want to get it done, solve those issues first.

<comment><USER39> Nice advice. Its inspiring.

</comment></comment><comment><USER40> I created an email course (also available in book form) about this exact thing! [0]

But a few things I've found really useful are:

The Momentum app, which lets you quickly check off habits in the iOS notification centre widget. [1]

Starting small until the behaviour of a habit is ingrained, then increasing the time and effort. Eg. start with a 15 minute run until you're used to running 3x/week, then increase your time gradually until you're running 45 minutes every time, rather than jumping in the deep end. It's easier to keep up a habit that's small and easy, and to increase the activity once you've made it habitual. [2]

Only work on one new habit at a time, because it will take focus and discipline at first. [3]

Once your habit is solid, develop others by stacking them together. [4]

[0]: [https://habits.bellebethcooper.com/](https://habits.bellebethcooper.com/) [1]: [http://momentum.cc/](http://momentum.cc/) [2]: [http://blog.bellebethcooper.com/french- habit.html](http://blog.bellebethcooper.com/french-habit.html) [3]: [https://exist.io/blog/keeping-up-habits/](https://exist.io/blog/keeping-up- habits/) [4]: [http://blog.bellebethcooper.com/pushups.html](http://blog.bellebethcooper.com/pushups.html)

</comment><comment><USER41> Maintain a healthy balance in life. Read fiction, listen to podcasts, go on long walks, chat about non-technical things over coffee/lunch everyday. Oh, and get ample sleep. Beyond that, it's creature comforts around your desk: a good coffee machine, a sitting+standing desk, good natural lighting, a whiteboard, a scratchpad, a relatively new iMac.

Habits are easy to create when it's convenient to have them. That's mostly what I'm pitching.

</comment><comment><USER42> I finally developed a daily meditation practice by starting small and focusing more on developing a habit first. I read somewhere that if you do something every day for 45 days you create new neural pathways. I don't know if the research backs it up but it's a nice thought.

So for six weeks I committed to meditating for any amount of time every day. I didn't care what the time was though I strove for five minutes.

After successfully doing that I bumped it up to a minimum of ten minutes every day for the next six weeks. The next six weeks I upped it again to 15 minutes. And on and on.

I actually found when I got to 25 minutes that my commitment felt like it was waning a little. No problem, I dropped it back down to 15 minutes. When I feel I'm ready I'll start increasing it again.

That all started last October and I've only missed two days. More importantly, I feel better than I think I ever have. I think soon I'm going to apply the same approach to exercise.

</comment><comment><USER43> By being interested in what you are working on.

<comment><USER44> But you have to get to the point of developing interest in the first place. Developing Passion needs hardwork.

</comment></comment><comment><USER45> I think you're definitely on the right track, but I have a slightly different philosophy.

I try not to use any sort of app -- as I believe that can be used as a crux -- other than what I have learned. So, I have learned a few key points.

* _Focus on less things_ [[http://jamesclear.com/buffett-focus](http://jamesclear.com/buffett-focus)]

* _Don 't break the chain_ [[https://www.writersstore.com/dont-break-the-chain-jerry-sein...](https://www.writersstore.com/dont-break-the-chain-jerry-seinfeld/)]

* _Be present in every moment_ (don't multi-task, either with thought or action) [[https://www.amazon.com/Way-Peaceful-Warrior-Changes-Lives/dp...](https://www.amazon.com/Way-Peaceful-Warrior-Changes-Lives/dp/0915811898)]

</comment><comment><USER46> Block the "Hot Network Questions" div on Stack Overflow using a little browser script. Saved hours per day...

</comment><comment><USER47> I wrote an application that I use for exactly this purpose: [https://github.com/ioddly/meditations](https://github.com/ioddly/meditations)

It's a little rough around the edges at the moment, and there are no executable builds, but it tracks completion so that you get a big picture view. For example it tells me I have exercised 9 days this month, 100% of the days I've set out for this month, and am on a streak of 100+ days.

Aside from that, meditation and removing distracting things from my environment have been most important (for example blocking timesink websites on my work computer). And the work of James Clear has been very influential on all of this: [http://jamesclear.com/](http://jamesclear.com/)

</comment><comment><USER48> Work on something you would be really excited to work on even if you were a retired billionaire. Great projects pull work out of you.

The important thing is not to fool yourself into working on something you think you're excited about but deep down are really not that excited about.

</comment><comment><USER49> The following applies to all methods:

1\. Keep in mind that "forcing" yourself to do something takes considerable energy.

You can imagine a second inner you, that's, for one reason or another, actively sabotaging your efforts to get something done. Now you can barter with that second you and get it to agree to work, but if you push it too far it will relapse.

So: It's important to get a feeling for your motivational energy. If you managed to overcome procrastination successfully yesterday, don't expect the same today.

Just like in sports, give yourself a rest when needed and be realistic about your daily potential.

2\. Not all work is created equal. There is more creative and more repetitive work. If you don't feel productive, do the chores.

</comment><comment><USER50> I've personally had success with starting small and simple. I pick a habit that promises improvements and do one small and simple thing every day related to it. As it becomes a habit I can see results and adjust accordingly.

The best habit I have formed is to see the benefits of actions and forcing me every day to do them (by starting small and simple).

Its not a race. It takes time. Sometimes years. Be kind to yourself. You will make mistakes. Identify the mistake and learn from it. Then move on.

</comment><comment><USER51> For regular, consistent productivity (not just the occasional project over a day or two) I have to change my physical environment. This means having an office I go to (or library when I was a student) that--and this is key--is far away enough from my home that it's not convenient to just leave and go home when I'm sick of working. It has to be more of a hassle to go home than to just do another half hour of work (and then another, and another, and so on).

</comment><comment><USER52> Whilst @ work, I try the following: __Stayfocusd -> Nuclear option (blocks access to websites you identify as blocked. 2-3 hour sprints is what I attempt) __Switcheroo (I redirect multiple click-bait news websites that I involuntarily type to HN) __Use 'Distraction Free' mode on editors I use for programming (IDE / TextEditor - e.g. SublimeText) __RescueTime (to reflect on how it all turned out) __I mute conversations in apps that permit it

<comment><USER52> Oh, and I'm never logged into FB / Twitter in my browser and my password is 50+ characters long.

The underlying theme is context switching is pretty darn expensive.

</comment></comment><comment><USER53> My solution is to embrace procrastination. Just makesure your procrastination tasks are worth doing. If its the TV or reddit thats bad. If it's housework thats a step up. If it's a side project you would otherwise procrastinate starting thats actually perfect. Ive been my most productive when I was procrastinating trying to avoid writing my PhD thesis. I ended up with more research I had to write about which was the main danger!

</comment><comment><USER54> Highly recommend reading The Power of Habit ([https://www.amazon.com/dp/B0055PGUYU/ref=dp-kindle- redirect?...](https://www.amazon.com/dp/B0055PGUYU/ref=dp-kindle- redirect?_encoding=UTF8&btkr=1))

It goes over strategies and psychology of habits and how to change bad ones and form good ones. I literally just finished this book before opening HN to see this, and I loved it.

</comment><comment><USER55> HabitBull([http://www.habitbull.com/](http://www.habitbull.com/)) is great app for this. It also ties into quantified self analysis pretty well. I had some great luck with implementing GTD with Omnifocus and Focus GTD for personal projects.

</comment><comment><USER56> What helps with procrastination is Adrafinil (precursor to Modafinil that doesn't require a prescription), Memantine, PhenylPiracetam Hydrazide, working on things that are interesting, and filing away (or having someone/something else do) whatever you don't like doing.

<comment><USER57> Putting off or tasking someone else with jobs you don't want to do doesn't seem like the healthiest long-term strategy.

</comment></comment><comment><USER58> Do something productive. Do it again. At whatever frequency. Continue. Solved/answered.

</comment><comment><USER59> Have something I really, really want to do, and do that thing until it's done. Sort of the top idea in your mind: [http://paulgraham.com/top.html](http://paulgraham.com/top.html).

<comment><USER60> This is difficult when you have 3 things that all tie for #1, and since they need to be sorted into #1 through #3, that sorting isn't stable sorting, so each time you mentally sort it, they might end up in another order. So #1 changes all the time.

<comment><USER61> If they tie just make an arbitrary decision. E.g. pick the least fun one. Or more analysis on which should win if that is appropriate.

</comment></comment></comment><comment><USER62> Mind-expanding drugs and doing things I like doing have removed the need for extrinsic motivation to produce. I've never been able to keep up a solid habit (except weight lifting, of which I enjoy the benefits).

</comment><comment><USER63> Change is very hard ..

my favorite:

ALAN DEUTSCHMAN :Change or Die (2005)

[http://www.fastcompany.com/52717/change-or- die](http://www.fastcompany.com/52717/change-or-die)

</comment><comment><USER64> One way of staying productive is to add the following entry to one's _/ etc/hosts_ file:

      0.0.0.0 facebook.com twitter.com

</comment><comment><USER65> I use Dopamine.

[http://www.UseDopamine.com/](http://www.UseDopamine.com/)

Full disclosure, I'm it's co-founder.

</comment><comment><USER66> If you were able to defeat procrastination with a todo list, you were not a procrastinator.

You just needed some organisation in your daily activities :)

</comment><comment><USER67> Best thing is to commit yourself with other people and through those commitments you will feel forced to do whatever you need to do.

</comment><comment><USER68> I have to say, Google Inbox has utterly changed my life with its Reminders feature

<comment><USER69> though it's dangerous to tie yourself into these things...

</comment></comment><comment><USER70> For me, the ritual of measuring progress or adherence to a desired habit is a huge help, but I find that the presentation and availability of this measurement in app form is not helpful and generally is actively harmful for progress.

Here is an example. I have lost a significant amount of weight in the past year and managed to build good exercise habits and eating habits, keep the weight off, and feel very happy with the physical shape and condition I am in.

I tried using apps like Lose It to count calories, record exercise, etc., and it did not work at all. The neurotic clawing feeling that the app was always there to get me, to demand me to check it, to obsess over my progress, pressure to share my progress on social media, etc. etc., was self-defeating.

What ended up working was I bought a cheap electronic scale from CVS and I weighed myself whenever I felt like it, and did not write down or record that number. Sometimes I would weigh myself consistently, other times I would weight myself very frequently / very sparsely. I put no pressure on myself to weigh myself every day, to record or keep track of my current weight, or anything similar.

Basically, weighing myself was like a throw-away activity. I happened to see a number on the tiny LED screen. I might remember it; I might not. Who cares. But I did make sure to check in with that scale any time I felt like it.

It was similar with counting calories. Actually, what I found worked very well here is to establish decent calorie estimates for composable food items. Know the calories in the things I usually combine for a salad. Know the calories in the pasta I buy. Know the calories in bread, condiments, sauces, basic foods.

Then when I combine them together for a meal, I can get a rough estimate of the total calories. I'm not obsessively scanning the barcode of everything I buy, but I'm also rarely ever flying blind with ingredients I can't estimate.

Same goes for exercise. Know roughly how many calories you burn walking some certain distance, or running some certain distance, or doing aerobics or calisthenics. Many people recommend keeping a fitness journal, but for me this again turned it into a pressure point, ominously looking at me from across the room, tell-tale-hearting me into feeling guilty about not working out enough.

So I started writing down the exercises I did, quickly getting a ballpark on the calories (when it wasn't obvious, like reading it off a treadmill display), and then throwing the piece of paper away. Who cares.

I made rituals out of these actions, and it started to guide me a lot. I found that it focused me on things I needed to do (e.g. skip that extra helping of food because I estimated the calories) but it didn't function like self- flagellation (e.g. obsessing over my weight in an app, or stressing out about eating something minor because I've already eaten 1,799 calories today or something).

I experienced way less ego depletion in my decision making, but still felt like I was keeping tabs on things.

I don't think this would work for everyone nor for every kind of task. For example, when I want to be more productive with writing and personal tech projects, I haven't found a great sort of "throw away" equivalent for to-do lists.

But in general, I think it's worth a try. Don't go for things that will be overbearing, ever-present, or come with a high degree of pressure. The effects of all that stuff will be counter-productive. Instead, think about what those things are, and find ways to measure them that are cheap, easy, give you only the info you need for situational decision making, and can be easily thrown away / forgotten / ignored whenever you need to.

</comment><comment><USER71> I had to get to a point where I could understand the concept that the best way to get the work done is to just get the work done.

There's no magic pill. There's no yoga. There's no special coffee. There's no long walks on the beach. There's nothing that will get the work done for you. You're the only one capable of getting the work done, and it just takes sitting down and doing it.

Of course, that is easier said than done. But try it some time. Try repeating to yourself "the work does not get done until I choose to do it."

I also started getting very comfortable with the idea of giving up on things. I either choose to do a thing now or I throw it away completely. If there was something that I couldn't give up on, then the whole process sort of naturally collapsed into a propensity for starting things right away.

We make up these lies to ourselves. TODO lists, with multiple things marked as "high priority". There can only ever be one priority. If someone says two or more things are a priority, they are confused. You have to figure out what the actual, real, priority task is. There is always one thing, one real thing, that is the actual priority, and people can often lose sight of it because they think they have their planning covered. Tasks are always on the backlog until they are being worked on, and only one thing can be worked on at a time. Certainly order the backlog by what is important, but don't delude yourself into thinking you can work on more than one thing at a time.

I got more comfortable with the concept of living a lifestyle, rather than achieving goals. When you define success by goals-achieved, then you are constantly a failure, until a brief moment when you succeed, and then you need to define new goals and are right back into being a failure. I am a success because I live the lifestyle I want. Because I'm not living in a constant state of failure, then there is no sense that any particular action is woefully inadequate towards achieving success. No task can be inadequate towards achieving success, because all tasks that I engage in are a symptom of my notion of success.

And I grew an understanding that living a certain lifestyle meant not living other lifestyles. To choose to be a certain way is equally to choose to stop being another way. If there is some way that you want to be that you are not achieving, it means there is some way that you are that you need to choose to stop. I'm overweight, I could choose to stop drinking beer, and I would lose weight. I choose to have a lifestyle that involves drinking beer in front of my computer at night. I choose to not have a lifestyle that involves rock climbing on weekends. I choose to work on Virtual Reality software. That means I also choose to stop working on electronics, painting, photography, writing novels, or whatever other low-grade hobbies I had before I finally found focus.

So long as you understand your choices and their consequences, I don't think they can become psychological weights around your neck, keeping you dragged down in the duldrums of anti-productivity.

</comment><comment><USER72> find solid attainable goals and no matter focus on attaining your goals. Don't get caught in the details.

</comment><comment><USER73> www.coach.me The website and the app have already helped me create many new habits.

</comment><comment><USER74> Shameless plug: The Success Manual [https://www.thesuccessmanual.in/category/time-management- pro...](https://www.thesuccessmanual.in/category/time-management-productivity- skills)

45 Things You Should Know About Being A Productivity Superstar [http://www.thesuccessmanual.in/chapter/45-things-you- should-...](http://www.thesuccessmanual.in/chapter/45-things-you-should-know- about-being-a-productivity-superstar)

The 25 Most Useful Productivity Methods [http://www.thesuccessmanual.in/chapter/the-25-most-useful- pr...](http://www.thesuccessmanual.in/chapter/the-25-most-useful-productivity- methods)

20+ Best Productivity Techniques For The Workplace [http://www.thesuccessmanual.in/chapter/20-best- productivity-...](http://www.thesuccessmanual.in/chapter/20-best-productivity- techniques-for-the-workplace)

<comment><USER75> The 3 Best Clickbait Titles for Procrastinators.

</comment></comment><comment><USER76> Check out "How we learn" course on Coursera. It deals with procrastination among other things.</comment>