RethinkDB 2.1 is out: high availability - <AUTHOR> http://rethinkdb.com/blog/2.1-release/ <comment><USER2> This is soooo awesome. I started rewriting SageMathCloud to use RethinkDB when I learned in May about your plans to support high availability. I've been rewriting everything, doing tests (building from sources, then using the beta you kindly provided), and finally after months of work, I'm ready to release the new version of SageMathCloud last night, but RethinkDB 2.1 isn't out yet. So I'm torn about whether to go with 2.1beta and cross my fingers, or just wait, or what. And this! Thank you so much. RethinkDB is, for my use, the first database I've ever actually really loved (and React.js+flux the first web framework). Here's my client code in case anybody is curious: [https://github.com/sagemathinc/smc/blob/rethinkdb/salvus/ret...](https://github.com/sagemathinc/smc/blob/rethinkdb/salvus/rethink.coffee)

</comment><comment><AUTHOR> Slava @ RethinkDB here.

I'll be around all day to answer questions about the release (along with a few other engineers on our team).

We're very excited about this release -- it makes the lives of RethinkDB users dramatically better because they won't have to wake up anymore in the middle of the night in case of most hardware failures :) It also took over a year to build and test, and has been one of the most challenging engineering problems we ever had to solve.

<comment><USER3> We're seeing serious memory leaks in 2.0.4~trusty.

[http://glui.me/?i=uu1gqb3son0sbnn/2015-08-11_at_11.33_AM.png...](http://glui.me/?i=uu1gqb3son0sbnn/2015-08-11_at_11.33_AM.png/)

You can see where the memory sets itself during the rethink process restart, and then it slowly climbs back up to ~3gb, despite no new data being written to the system (all our RethinkDB data is generated during deploy time).

Any pointers? I'd be happy to provide any diagnostics.

<comment><AUTHOR> Thanks for reporting this!

The image doesn't seem to load for me. Would you mind opening a GitHub issue ([https://github.com/rethinkdb/rethinkdb/issues/new](https://github.com/rethinkdb/rethinkdb/issues/new)) with as many details as possible? We need to know a bit more about the infrastructure/workload to replicate this; once we get the info we'll get to the bottom of it ASAP.

Also feel free to e-mail me at firstname.lastname@example.com if you need urgent/critical support.

</comment></comment></comment><comment><USER4> RethinkDB is great and has a lot of great features, however the thing that has impressed me the most is the way they communicate with the community. They are incredibly responsive and friendly on GitHub and IRC. It's not uncommon to get a response to a bug report within an hour or two (not that they have any obligation to this). They're incredibly nice.

It looks like they try to follow [http://www.defmacro.org/2013/04/03/issue- etiquette.html](http://www.defmacro.org/2013/04/03/issue-etiquette.html), it'd be great to see other companies adopt it too.

Thanks folks!

<comment><USER5> I could not agree with this more.. the development teams are definitely active with the community via github and irc... I followed along with the support for geolocation indexes, and was really happy to see that come into play.

It's taken a while to get to this point, but the development to get here has been methodical and incredibly well managed in terms of getting appropriate groundwork in place for a feature (like automatic fail-over) instead of just trying to hack at it or bolt it on the side. For that matter baking solutions for data streaming into the box, as opposed to less thoughtful options.

</comment></comment><comment><USER5> I've said before how I really appreciate the approach the guys at RethinkDB have taken... With the automatic failover support baked in, this would definitely be one of my go to solutions. The management/admin interface is much nicer than any other NoSQL database out there, while offering a lot of the things that a traditional RDBMS offers.

I'd probably reach for RethinkDB before Postgres or others simply for the better administrative experience. Especially for small teams or start-ups that don't have a dedicated DBA role.

For anyone curious, the databases I would most likely reach for, depending on the situation would be RethinkDB, ElasticSearch and Cassandra. I really do like MongoDB a lot as well, but RethinkDB offers the features with far less friction, though the query interface takes a bit of getting used to.

That said, I also like more traditional RDBMS options as well. I _REALLY_ like what PostreSQL offers, but have no desire to administer such a beast, failover isn't really baked in, and the best options are only commercially available, at a significant cost. There are also hosted options for AWS and Azure for various SQL RDBMS. That said, I find being able to have data structure hierarchies in collections tends to be a better fit for _MANY_ data needs.

Congratulations to Slava and everyone else at RethinkDB.

</comment><comment><USER6> This looks awesome .. great job guys .. Just a question on licenses . Server is "GNU Affero General Public License v3.0" and drivers are "Apache License v2.0." , so in simple english does it means that can i use make commercial products with backend as RethinkDB? these things always confuses me so apologies if i ask something stupid here ..

<comment><USER7> The AGPL confuses a lot of people on a lot of projects. It's actually really simple: If you modify the package (RethinkDB itself, in this case), you have to release your changes. That's it.

<comment><USER8> That's not precise. If you modify the package _and_ distribute it to your users, they must have access to the source code (including the changes, which also become licensed under the same terms). Up to this point, it's the same as with GPL.

AGPL _also_ enforces code and changes to be distributed to the users if they directly consume your database over the network. This would be the case, for example, of a database-as-a-service.

Put it simply: you use an AGPL database, internally, even for your SaaS: you're fine. You either modify RethinkDB and ship it as a product or you provide a RethinkDB or RethinkDB-derived database-as-a-service, then you have to also provide source code to your users.

</comment></comment></comment><comment><USER9> @coffeemug, do you have an ETA on when performance benchmarks will be released?

<comment><AUTHOR> This is totally my fault. I've had a pretty comprehensive benchmark report pdf sitting in my inbox for a few months now that the performance team put together, but something else always took my attention away. I'll ask the documentation team to format it and add it to the official documentation. Sorry this slipped through the cracks.

<comment><USER10> Really looking forward to seeing this.

</comment></comment></comment><comment><USER6> Great documentation with some useful examples and tutorials to get you started. I just tried it and very impressed with the performance and ease of use , especially the admin section is very handy. Need to try it with cluster , any docs/videos on creating the cluster with different machines across the globe?

<comment><AUTHOR> Check out [http://rethinkdb.com/docs/sharding-and- replication/](http://rethinkdb.com/docs/sharding-and-replication/) \-- lots of information there.

</comment></comment><comment><USER11> As a heavy Heroku user - I'm wondering - is there some hosted RethinkDB solution?

<comment> sam-mueller Utilizing rethinkdb on compose.io with heroku does take some hackery, mainly around deploying to the same colo (amzn us-east-1), and then using heroku env variables to store your ssh key that will be used to connect your api/svc to compose box. See this article for more info: [https://www.compose.io/articles/tunneling-from-heroku-to- com...](https://www.compose.io/articles/tunneling-from-heroku-to-compose- rethinkdb/)

I was never able to get the referenced python script working, but using a shell script inside `.profile.d` did the trick.

</comment></comment><comment><USER12> Can I ask please why you don't provide ready to use, fine tunned amazon images? This is preventing me to use it now as I cannot find reliable configuration or information. Also the current image is out of date. Thanks

<comment><USER13> Amazon changed the image format, and we've been working to update our images to use it. Here's some more detail: [https://github.com/rethinkdb/marketplace- ami/issues/1](https://github.com/rethinkdb/marketplace-ami/issues/1)

If you like, you can launch a 1.16 AMI, ssh into the instance, and run `apt- get update && apt-get install rethinkdb` to update to RethinkDB 2.1.

Thanks for being patient -- we'll get the official images updated soon.

</comment></comment><comment><USER14> Very cool, thanks for all the hard work that went into this. Will the docs [1][2] be updated at some point to reflect the Python 3.4.x asyncio support? Right now just Tornado is documented.

[1] [http://rethinkdb.com/docs/async- connections/](http://rethinkdb.com/docs/async-connections/) [2] [http://www.rethinkdb.com/api/python/set_loop_type/](http://www.rethinkdb.com/api/python/set_loop_type/)

<comment><AUTHOR> Yes, we'll update the docs very soon.

</comment></comment><comment><USER15> Great news! Keep up the good work. It's getting harder and harder to justify not using rethinkdb in production :-)

...Doesn't seem available on homebrew yet though.

<comment><AUTHOR> We should be able to make it available on brew very soon.

<comment><USER15> Thanks!

</comment></comment></comment><comment><USER16> Finally, we can convince our management to start to use it. All of the beautiful of ReQL, then addhing high availability What else I can expect more.

</comment><comment><USER17> > Always on – you can add and remove nodes from a live cluster without > experiencing downtime.

This has been a long-awaited feature for me. While I loved nearly every aspect of RethinkDB, it was the reason that made me hold back from using RethinkDB. Good to see RethinkDB keep improving!

</comment><comment><USER18> I couldn't really find any good docs on how to use the various async Python drivers...? All I found was some references to Tornado under `set_loop_type`.

Also, very much looking forward to trying this out!

<comment><USER13> Besides the documentation article Slava linked to, you might find this blog post helpful: [http://rethinkdb.com/blog/async- drivers/](http://rethinkdb.com/blog/async-drivers/)

If there's anything else you think is missing from the documentation that would be helpful, open an issue here: [https://github.com/rethinkdb/docs](https://github.com/rethinkdb/docs)

</comment></comment><comment><USER10> So happy you've added in Math functions into ReQL. Thank you!

</comment><comment><USER19> Any support for Windows yet? I'm keen to move to rethinkDB from using redis, but my development is done on Windows at the moment.

<comment><USER13> A Windows port is in progress ([https://github.com/rethinkdb/rethinkdb/labels/windows](https://github.com/rethinkdb/rethinkdb/labels/windows)), but it will take some time to complete. Windows support is one of our most- requested features: [https://github.com/rethinkdb/rethinkdb/issues/1100](https://github.com/rethinkdb/rethinkdb/issues/1100)

</comment></comment><comment><USER20> Comics is awesome.

</comment><comment><USER21> official JDBC drivers please :)

<comment><USER5> I know it's kind of a mixed bag. I'm also slightly, but not completely surprised that .Net and Java aren't officially supported.. I wouldn't expect JDBC support, but would expect to see a Java library for use with RethinkDB. Given the flexible nature of RethinkDB and other document databases, dynamic language environments tend to be much easier to support over static environments like .Net and Java.

Honestly, if you want to use RethinkDB with Java, it may be worthwhile to write a domain centered service with Node or Python and have that as an intermediary for Java. I've actually used Node on several occasions as a translation service for requests to foreign systems as sometimes there's a lot of disconnect in specific implementations of SOAP/WS-* services from Java/PHP/.Net etc. It tends to work _very_ well for this use case.

I've actually been looking at GraphQL with some interest, and thinking this could be a pretty awesome option in front of RethinkDB, which would open up to pretty much any client that supports graph, which is limited right now...

<comment><USER22> I'm actually writing the official Java driver right now. We should have a beta version out in a few weeks

Follow [https://github.com/rethinkdb/rethinkdb/issues/3930](https://github.com/rethinkdb/rethinkdb/issues/3930) for progress updates

</comment></comment></comment><comment><USER23> Great news, Does any one know/recommend a python ORM for RethinkDB ?

</comment><comment><USER24> Uhhh what? "Added support for Jepsen tests" shouldn't mean "we sent Kyle a pull request"

That seems like deceptive marketing to me. Once the pull request is _merged_ , then you can make that claim.

Here's the open PR for Jepsen: [https://github.com/aphyr/jepsen/pull/70](https://github.com/aphyr/jepsen/pull/70)

<comment><AUTHOR> I wrote that paragraph of the blog post, and I think I didn't phrase it correctly. What I meant to say is that we hacked Jepsen tests to support RethinkDB, and then ran the tests internally for months. I added that note late last night, definitely could have phrased it better.

We've been working with Kyle on this though, and I think he seemed happy to merge the PR (but he's pretty busy). Hopefully will happen soon, sorry for confusion.

EDIT: here is some context -- [https://github.com/rethinkdb/rethinkdb/issues/1493#issuecomm...](https://github.com/rethinkdb/rethinkdb/issues/1493#issuecomment-124598319).</comment></comment>


Making Tables Responsive with Minimal CSS - <AUTHOR> https://bradleytaunt.com/2019/06/11/responsive-tables/ <comment><USER2> I like the idea behind this article, but "Responsive Tables #2: Flexbox" really is a pretty good example of what _not_ to do.

Just hiding the table header definitely does not work - this is how I first "read" the data:

\- Slice of Pizza = 450

\- 95% = $5.00

\- Common = 8/10

And this clearly doesn't make any sense at all.

PS: I would love to see Markdown formatting make it to HN comments one day...

<comment><AUTHOR> The CodePen "Responsive Table 2.5" further builds on that example and tackles that exact problem you mention (by including the heading of what each cell represents)

<comment><USER3> If you're putting the heading in each cell, it kind of defeats the purpose of using a table to begin with, no? If I was so painted into a corner by mobile support and refused to make scrolling friendly (e.g., by pinning the left column), it sounds like just not using a table in the first place is a much better solution.

<comment><USER4> Inheriting this kind of functionality with just a little bit of CSS is pretty dang convenient though and a pretty sensible default, if nothing else.

</comment></comment></comment></comment><comment><USER5> There are other approaches which avoid the repetition of column names in SPAN chunks as suggested in the article.

The most elegant and least bandwidth consuming one is described in [https://css-tricks.com/responsive-data-tables/](https://css- tricks.com/responsive-data-tables/) and uses modern CSS selectors:

       td:nth-of-type(1):before { content: "Type of Food"; }
       td:nth-of-type(2):before { content: "Calories"; }
       td:nth-of-type(3):before { content: "Tasty Factor"; }
       ...

<comment><USER6> That's really not ideal. That is putting hardcoded data in CSS.

<comment><USER7> You could move the data into a data attribute, and then use "content: attr(data-td)" for example.

<comment><USER8> Doesn't that take the problem back to the spot where we have the header repeated for each cell? In a data attribute instead of a span, which may be cleaner, but still:

[https://codepen.io/andrelaszlo/pen/xoxmdg](https://codepen.io/andrelaszlo/pen/xoxmdg)

Is there a way to only define the header label once and refer to them depending on the cell using only CSS?

<comment><USER9> you may use html template engine

</comment></comment></comment></comment></comment><comment><USER10> How do we still not have fixed column and row headers with horizontal and vertical scrolling? Almost every business website I've ever worked on wants it. Someone remakes it for every framework as soon as they come out.

<comment><USER11> you can use `position: sticky`[0] for that, but the last time I tried it table support was spotty. That was back in 2012 though, so I imagine that things have improved since then.

[0] [https://developer.mozilla.org/en- US/docs/Web/CSS/position](https://developer.mozilla.org/en- US/docs/Web/CSS/position)

</comment></comment><comment><USER12> The author suggests that this approach is good for accessibility, but historically assistive tech has struggled with tables that aren't their native display:table. I'm not saying that this is the case here, but I'd be wary about making that claim without testing with at least JAWS and VoiceOver.

</comment><comment><USER13> CSS Grid to the rescue!

First up, style for desktop so you know what the full table should look like.

Then look at the table with your data in it. Try it on mobile and check the usability. Maybe there are supplemental columns that you have put in because you have the data but are not so important to the person on the move.

In this scenario you can make it so that a click on a table entry brings up the whole record. This could be on a separate page or in a pop-up. Again, depending on the data and the intended audience this has to be worked out by a little bit of prototyping. In the mix are font sizes and options to all 'and'hellip; to selected wide cells that can be abbreviated.

Now the fun begins in creating the responsive layout.

For the grid definitions - grid-column-rows - the desktop layout can be replaced with a CSS variable. In the CSS variable a fallback of the desktop definition can be given. This should be there already. For the variable definition that goes in a media query. This media query can be set to the max- width that best suits the data, if the table looks good down to 40 ems then the media query can be for that and below.

This approach makes it easier for the next guy that comes along. They will only have to know CSS Grid and not any of the Byzantine methods of page layout that came before CSS Grid.

This should degrade gracefully to a stock table for anyone with an extremely old browser.

<comment><USER14> I'd love to see a codepen/jsfiddle/gist/whatever that builds out what you describe so it can be compared to the examples on the article?

<comment><USER13> If you want to give it a go then this is all you need to know to get started...

So your starting grid is on the table element - display: grid; grid-template- columns: (depends on your column data, start with '1fr auto auto auto...' with as many autos as you need for your data.

Then you need to add display:contents on thead, tbody and tr.

If you are using a caption then set that to grid-column: 1 / -1;

Your original grid-template-columns for the table can then be modified to suit your data, use 1fr to keep things the same width, 2fr if you want a double standard width column.

Then you will need to turn the grid-template-columns definition into a CSS variable, with your desktop layout in the fallback and the variable set by a media query for the responsive view.

Give it a go, once you have done it once you will wonder why you did it any other way.

There are other things you can do to make a sparse table with some cells taking up multiple rows or columns on an ad-hoc basis.

Really, once you have the display:contents trick working for you nicely there is nothing to write a codepen about!

</comment></comment></comment><comment><USER15> My favorite part of this compared to Pylon tool on front page today: "Why should I care to use table elements? Simply put: accessibility and proper semantics."

Accessibility for the win without extra workarounds.

</comment><comment><USER16> My pragmatic way is to make one design/markup for small screens and one for big screens, and toggle the visibility of those two with media queries.

Often we want a completely different layout for mobile, and to focus on different data. Shoehorning the same markup for both cases just makes it harder to work with.

</comment><comment><USER17> This site has many bite-sized but intriguing pieces like TFA. Kudos to the author for writing interesting things without any fluff!

</comment><comment><USER18> Ironically, none of the example tables scroll on my iPhone (could be caused by the CodePen container to be fair).

<comment><USER19> It's the embedded codepen container. Going to codepen itself lets you scroll.

</comment></comment><comment><USER20> Filament Group has Tablesaw which is another take on this idea. Javascript based but I think the results are a bit better [https://www.filamentgroup.com/lab/tablesaw.html](https://www.filamentgroup.com/lab/tablesaw.html)

</comment><comment><USER21> Not quite about tables, but I feel this goes into the same direction and complements: [https://dev.to/winduptoy/a-javascript-free- frontend-2d3e](https://dev.to/winduptoy/a-javascript-free-frontend-2d3e)

</comment><comment><USER22> One note: in demo 2, visibility: hidden will make screen readers ignore the headings.</comment>


How SaaS companies should manage their inside sales teams - <AUTHOR> http://versiononeventures.com/how-to-manage-your-inside-sales-team/

<comment><USER2> I like the separation of folks that manage: prospecting for leads (sales development reps), following up with inbound leads (market response reps), closing deals (account executives), and maintaining accounts (account managers)

It fits my experience of the different skill sets necessary.</comment>


Ask HN: How did you go about finding your current job? - <AUTHOR>

<comment><AUTHOR> Jobs? Where we're going we won't need jobs!

</comment><comment><AUTHOR> The old fashion way, by not commenting.

</comment><comment><AUTHOR> The yellow pages

</comment><comment><AUTHOR> Going to church</comment>


Ask Hacker News: Review our block-based collaborative editor - <AUTHOR> http://draftastic.com/

<comment><AUTHOR> Nick (user nickbw) and I applied to YC a year ago with a sketch of an idea and didn't make the cut. But rejection was just the motivation required, and we incorporated and launched while holding down jobs.

Please have a look. All comments welcome. Some questions:

How should we think about pricing? For instance, as it is, the highest tier of service is quite expensive but allows you to run riot on our server. Is that worth offering, or does it look scary to have that big dollar amount on the signup page?

Draftastic sounds a lot like Google Docs, but it's quite different in practice. (GD is like a whiteboard; we're like a revision control system.) Should we worry about making that crystal clear up front, or does it look weird to define ourselves that way to new users?

Given that it could be marketed to practically any kind of business, what are some good sorts to concentrate on? Where do we look for people stuck in the mail-a-Word-file-around groove?

How can we persuade more casual visitors to try it? We made the free signup process as easy as possible, but it's still several clicks. Is it worth trying to maintain an open sandbox? Does a sandbox even make sense when we're designing for cooperative groups?

<comment><USER2> A few things: You position your app as a "collaborative editor", yet it took me almost two and a half minutes on the videocast to even get a look at it. I know you want to show how easy it is to sign up, but is that really necessary? You're not selling a sign-up/sign-in page, you're selling your service. Furthermore, if I were selling an app that does collaborative editing, I wouldn't harp on on the whole "revision control system" angle. It's redundant knowledge - I know it's there by seeing the amount of dates & times (and it's also briefly shown in the videocast), so I'll use it when I need it. See how Wikipedia does it: They don't go on and on about how each page has a "History". All that they do is put an "edit" button on each page or page section. Less in your face == much happier users.

Next, when I read the description, I was thinking of something like MS Word, online, with multiple people working on the same document, yet it comes across as an ajax-ified blog engine: "Version 1 by Nick today at nn:nn pm" isnt really information I need staring back at me at all times.

Some nit-picks: I would edit out the breathing-into-the-mic. No offense, but it's kinda grating :) And Charlie sounds kinda bored/indifferent...

<comment><USER3> Thanks for the feedback!

The screencast sucks. We know it, and we're in the middle of redoing it. We threw it together quickly because we'd heard from a few people who wanted to demo the service to bosses or co-workers, but thought signing up for a test account was too much effort or "commitment". We want to get people over that activation barrier.

Suppose we had an extremely short video that showed only the live multi-user editing, and ignored the permissions and revision control features. If you were a business with a use for a collaborative editor, would that be compelling enough for you to sign up and try it out?

For people who want "MS Word, online" Google Docs basically has it covered. We don't want all those Word features -- we just want live sharing that isn't painful, which is the one thing GD doesn't manage. I take your point, though, that we're trying too hard to emphasize our own feature list.

<comment><USER4> What if I want "shared MS Word" (presumably online) or "collaborative MS Word docs"?

If signing up is complicated enough that a video is a reasonable way to explain it, the signup process is broken. Why not fix it instead of explaining it better?

Why have sign-up at all? Why not let new users "start a doc and tell people about it", which should be very simple. After they've established that they can do what they want, biz users will then ask "how do I protect my docs?".

</comment></comment></comment></comment><comment><USER5> Looks nice, but I much prefer continuous (not block-based) collaborative editors, like SubEthaEdit.

Having to switch between blocks (or create new ones) isn't hard, but that slight effort required breaks up the "flow" of editing a document.

I haven't seen anything quite as good as SubEthaEdit on the web yet.

<http://www.codingmonkeys.de/subethaedit/>

<comment><USER3> I love SubEthaEdit for single-user editing. It's built into Coda, which is my preferred web development app.

<http://www.panic.com/coda/>

For collaboration, continuous editors drive me nuts. Someone inevitably winds up typing over someone else. It's tedious in SubEtha with just two users, and gets worse with more users or with the added latency from web apps.

We're trying to impose just enough structure to eliminate collisions.

Any suggestions for ways we might soften the hit to flow?

<comment><USER5> Make it continuous ;)

Maybe a good compromise would be to make each line a "block". If you're the first to click a line, you get a lock on it to edit it. Make a new line (i.e. block) by hitting enter/return.

I disagree that people typing over each other is a problem with continuous editors. If you're editing different lines it's not a problem at all. If you're editing different parts of the same line SubEthaEdit can handle that fine. The only ambiguous case is when your cursors are at the exact same point when you start typing. Since SubEthaEdit shows you where each user's cursor is you can clearly see if you're about to conflict with someone else. The key to this type of collaboration is it need to be very much real-time, the lower latency the better.

</comment></comment></comment><comment><USER6> suggestion: remove the brushed gray background on the website, it makes the site look cheap.</comment>


I'm completely demotivated to work; what can I do? - <AUTHOR> I'm two years before heading off to university, but I have no motivation to learn the things that are being taught at college. I chose to study the subjects that I thought I would enjoy, but sadly this isn't true. I'm assuming that if I had made other choices for subjects, I'd be in a similar problem. Maths is one of the subjects I'm studying, and although I enjoy maths itself, I'm not enjoying what I learn in school. I can't be motivated to put the work in, so that I can get good results at the end of the year. I spend my free time programming or researching instead, but I can't continue doing this if I want to get the A-levels I need to enter a half-decent university.<p>Are there any ways by which I could motivate myself to study more? <comment><USER2> I'm going to say something that's a little tough but it's meant as advice coming from years of mistakes before I finally got my head on the right way: Part of growing up is learning to prioritize what you need to do, even if it isn't fun, over what you like to do. This is how the real world works, and it's what you'll spend the rest of your life doing. Learning to do it when you're young, when mistakes are smaller, will make the rest of your life so much better.

When you get your needs out of the way, the fun stuff you _can_ do is all the better, and you'll know more about the fun stuff that you're doing enabling you to open more worlds of enjoyment later that you'll never be able to conceive of without putting in the hard work to start. Doors will be open to you that you'll never even imagine if you put in the work to build the foundation of your life right now. Digging the metaphorical ditches and laying the metaphorical concrete for your foundation sucks, but that's how life is. Lots of sucky boring shitty work, for a few profound moments of bliss.

I know this sounds just like words right now, but I wish this was a concept that I had truly grokked much earlier in my life before I had to spend years fixing all the bits and pieces I needed to do that I had deferred.

Nobody gets to do the fun stuff for long, without working out all the dreadfully boring bits a head of time.

Want to be an explorer? Spend months raising money and building schedules and looking at maps and buying equipment.

Want to be a rock star? Spend years learning to play an instrument, playing in dive bars and making demo tapes. Get a break then play the same 4 hit songs for 20 years.

Want to write awesome code and run an awesome business? Spend years learning computational theory, business management and leadership, raising funds, and last but not least, writing thousands of lines of boring boiler plate, edge case handling and plumbing code.

Want to be an author? Spend a few years writing a couple hundred pages on your topic then get rejected by 99 out of 100 publishers. Then do an endless book tour where you read the same passage from your book 300 times.

Learning to do the boring, dreadfully dull, uninteresting stuff...learning to just muscle through it...is _the_ most important life skill any human being can learn. It's the marshmallow test magnified by a million.

<comment><USER3> I feel incredibly blessed that I never had to do any of this. I enjoyed computer programming. I learned to do all the stuff because it was fun. Learned to read and write files, learned to sort, learned to write languages, etc etc.

All of it was almost always in pursuit of some goal. I want to create ABC I needed to learn about DEF. etc.. Very little of it was just learning for the sake of learning.

I can't remember ever doing a boring thing related to programming off the top of my head. I can remember automating repetitive things but even that was fun.

I remember working lots of overtime but I don't remember disliking the work.

I don't know what to take from that. I've kind of assumed it's been the same for all the programmers I respect. I see them code as a hobby just like me. I assume they keep doing because they love it.

Maybe if you don't love it you're doing the wrong thing? Maybe if you don't love anything then your advice is true?

<comment><USER4> Do you code for a living? If so, I think your experience ("no boring task ever") is pretty unique.

<comment><USER5> I'm in a similar situation. I got into writing code because the things I thought were cool required writing code to have; websites, irc bots, web apps, etc.

I have been learning new things about code (and in the process software engineering) for about 10 years and I find it more exciting than ever. I do have a a lot of boring tasks to complete but I often play around with them a bit, finding new ways to do an age old task and then it's cool again.

On a related note, I see qualified people my age working jobs they don't really enjoy for peanuts and it really sucks. I consider my self very lucky for having a full-time hobby that is rewarding and can pay the bills.

</comment></comment></comment></comment><comment><USER6> Dude, whatever you choose to do, please do yourself a favor and ignore the bullshit advice that starts with - "this is how the real world works..." That nonsense only comes from people who had settled for the average.

Life works in any way that you want it to work.

Look, if you don't want to do the shit work, don't do it, but don't bitch and moan and complain about it. Instead, find a way to still get shit done, while not doing the work you don't want to do.

You don't like doing homework? Nobody does. It's a waste of time and you will not use 90% of what you've learned.

Spend the bare minimum time you need to pass high-school on work that you have to get done, devote the rest of your time to the work you want to get done. If that means learning computer programming, do it. I had friends in high-school who managed hosting companies, while at high-school. Guess what, while the rest of us were solving stupid problems and learning history, those guys made money. It's not a bad skill to learn.

Anyways, this discussion could go back and forth... Get off your ars, close HN and just f'ing do something!

<comment><USER7> Great post. This is the kind of perspective you want to have. This reminds me of PG's high school essay:

"The important thing is to get out there and do stuff. Instead of waiting to be taught, go out and learn." \- PG

Before I quote the whole thing, the OP (and anyone in the same position) should read the whole essay: [http://paulgraham.com/hs.html](http://paulgraham.com/hs.html)

If you want the real world to be (quoting from the other post) "lots of sucky boring shitty work, for a few profound moments of bliss," that's fine. But if you don't want to accept that, you don't have to. What Kirill said above is totally right; life works how you want it to.

It's normal for someone in high school to feel like the OP, especially someone who's a hacker at heart. School limits you in a lot of ways, but you don't have to let it stop you. You just have to realize that the boundaries are self imposed. You can do real things. So treat school like a day job, get it out of the way, and do what's interesting to you.

</comment></comment><comment><USER8> So you don't like school work. You could get higher grades if only you were more motivated...

i.e. you are exactly like every other 16 year old I ever knew.

Most of them because more motivated once they started university and were able to focus on what they enjoyed studying. I'd be more worried if you _were_ motivated at 16, because then you'd probably burn out, or grow up to be an obnoxious brain box.

Also, since you sound like you are in the UK, you should realise that grades don't matter here. No-one will ever ask what you scored in your maths A-level. Your success in life will mostly be determined by the connections your parents have. The only thing you can do to improve your chances is network and make some more connections of your own at university. Plenty of top jobs go to those who graduated with the "gentleman's third" because they spent their time networking rather than studying.

<comment><USER9> > Your success in life will mostly be determined by the connections your > parents have

Sorry but this statement doesn't ring true to me, because I know of several cases where two brothers have had divergent success outcomes based on their personalities and the choices they've made.

There's also MANY ways to forge your own connections in life.

<comment><USER10> You're completely right. It's not true. Your success in life will mostly be determined by the connections _you_ make.

<comment><USER11> It's also likely you inherit the connections your parents make - provided you maintain a good relationship with them. Everyone once in a while, I'll heard about a guy by mum knows who needs some work done on his website. Since my mum is an assistant in Tesco, these are not stupendous opportunities (though not to discredit, I can use the money).

If my mum or dad was an investment banker and I was still a web developer, I imagine they would still send leads my way. There just may be more in quantity or monetary value or both.

</comment></comment></comment></comment><comment><USER12> You have a temporary hurdle to jump over. Get good grades. The aim of getting good grades is _only_ to get good grades. There's a bunch of stuff that you can do with good grades, and if that motivates you it's great. But at the moment you just need to get the good grades.

So, perhaps when you're studying you put in 30 minutes for school work, and 15 minutes for what you enjoy, then have a break. Then repeat that.

This allows you to get the good grades, and keeps you interested in the subject.

You'll have a bit more freedom in Uni, and you'll so you can see your current task (get good grades) as also being "learn some discipline".

There will be some people who want to get better grades than you. Thus, you should get best grades you can just to stick one in the eye of those people.

<comment><USER13> This is very good advice. If you get nothing else out of high school, make sure you learn the discipline it takes to study something that's not immediately rewarding. Not only is it important right now in order to have choices for the immediate future, it's a skill that will serve you well throughout life.

</comment></comment><comment><USER14> Fuck school, it has no intrinsic value. It's not an end in itself, and it's not built for everyone. If it's not built for you, find something you DO like and dive into it hard. You're on hacker news for some reason -- what is it you're into? Learn how to do it yourself, get technical, build skills around that. Also, make friends who are likewise into it. I promise you'll be a lot more engaged.

Do the school work but do it with something else in mind.

Also: the guys suggesting drugs know nothing about you and are probably not doctors. I love drugs, but I'd never suggest them without knowing more about you. It's absurdly easy to build a serious amphetamine dependency that will leave you feeling a lot worse than you do now.

</comment><comment><USER15> Do you have a job? Go push a mop for a couple years. It will motivate you to do well in school and has the added benefit of giving you some money for university.

<comment><USER16> I actually second this. I worked a bunch of odd jobs starting at 15 years old (you were supposed to be 16, so I had to get consent from the principal to flip burgers). As I was taking the garbage out while working at a grocery store, it just hit me: I can't do this for the rest of my life. I believe I was around 18 years old, so maybe a little older than the OP. I joined the local chamber of commerce and started consulting that summer and made more money than the previous 3 summers, and I enjoyed the work I was doing.

It's good to work awful jobs. It builds healthy character and eventually it'll probably hit you that you really want to be doing more intellectual things, which conveniently pays more money than most physical labor.

</comment></comment><comment><USER17> > Are there any ways by which I could motivate myself to study more?

Probably not, if you're asking the question. But I don't think you should study more. I think you should program more, since it's already something you enjoy enough to do for fun. It's a question of playing to your strengths.

Put in the 10,000 hours of sustained effort that it takes to truly become great at it. Prove your abilities through open source.

You will have no problem finding an interesting and well-paying career, _if_ you push yourself hard to always keep learning both about programming and about the business of software.

If that sounds like a lot of hard work, well yeah, it is. There's no shortcut. Either suck it up and do your homework and color inside the lines, or summon the guts to blaze your own path. Or do neither and let the path of least resistance take you where it wants.

Which path are you more likely to regret 40 years from now?

<comment><USER18> I'm not sure it's advisable to encourage somebody not to do well on their A-levels. It's not like the US where you can get low marks in secondary school and be fine. He won't be able to attend a decent university, ever. Correct me if I'm wrong.

<comment><USER17> The same logic applies in the US. You won't be going to a good college if you have bad high school grades.

But my advice was to consider eschewing academia entirely. I've worked with too many well-paid, respected developers without degrees to take the value of credentialing very seriously.

It's not a panacea, of course. It takes a lot of sustained work and learning whether you do it in school or not. Some people just find it easier to learn outside of formal schooling.

<comment><USER18> I think it's better to make that decision when you're 18, not 16. Always best to keep your options open because you don't know how you or the world will change, even in the near future.

</comment></comment></comment></comment><comment><USER19> Open a map, close your eyes and point randomly. Pack you backpack, buy tickets and go there without any reservation. Spend at least 1 month away from home, comfort and routine.

When you are back you will know exactly what to do.

<comment><USER20> > Open a map, close your eyes and point randomly. Pack you backpack, buy > tickets and go there without any reservation. Spend at least 1 month away > from home, comfort and routine.

This sounds like an interesting and exciting life-changing plan and everything, but I don't think it's particularly actionable advice for most sixteen-year-olds in today's world, and I don't think it's likely to help with the question at hand. The submitter isn't asking /what to do/; the submitter is asking /how can I be more motivated in what I'm doing/!

I think better advice is to focus on how the things you're learning relate to the things you like to do. So try to focus on how math can improve your programming, research, and other interests. Also, keep in mind that you're building a foundation--things are more interesting once you get to the stage where you're building on top of it. Even if you decide not to use it in a few years, it's a really nice thing to have that will give you a lot of flexibility.

<comment><USER21> I think we can abstract the advice you're commenting on to "if you don't feel motivated to do what you're doing, do something else", which seems okay. It's quite possible that continuing to do things you are not enthusiastic about doing may be a bad idea.

I see your point that it's not a very actionable bit of real advice. Pragmatically, if you told my 16 year old to pack a bag and leave, I'd want to smack you :D

<comment><USER22> Sixteen is old enough - especially when he can always return. Being away from _everything_ for a few months really puts things into perspective - why are you doing what you're doing, why you were so afraid of some things, whether you're on the right path, and more.

<comment><USER20> The weakness of the advice isn't that it might not be helpful and mind- expanding. It falls short in that most sixteen-year-olds probably don't really have the option to do it:

1) The plan takes more than a trivial amount of money. Most sixteen-year-olds cannot afford this sort of plan.

2) Many parents, if not most parents, are unlikely to support this idea. There's of course a spectrum of what parents might do to stop it if they're not supportive, but it's easier to just save up money and wait until you're done with school.

3) It can only be done in the summer without causing a lot of problems, and perhaps not even then.

It's a potentially helpful suggestion for someone who's over eighteen, but for many sixteen-year-olds it's probably a pipe dream or something that may bring more problems than benefits. The suggestion assumes a certain type of parents and a certain level of privilege that I would estimate are the exception and not the norm. I would have been extremely frustrated if someone gave me advice that presented this as a serious option when I was sixteen.

Advice that makes these sort of assumptions may end up decreasing motivation. I think more universal advice that addresses the actual question is a lot more helpful.

</comment></comment></comment></comment></comment><comment><USER23> If you spend your free time programming or researching, and aren't motivated by academics, then you might want to reconsider academic direction you're going in.

For someone who has the motivation to learn programming on their own, I seriously question the value of a formal education in anything like CS or math. You already know you can learn that stuff more easily outside of a classroom, so I would argue that taking that academic path is a waste of both your time and money.

Instead, I would consider studying something totally different. Programming is a wild card - you can play it to improve any hand you have. Keep honing those skills, but go to university for something you _can 't_ so easily learn on your own.

This is the advice I wish someone had given me before I went and wasted time in college.

<comment><USER24> > Programming is a wild card - you can play it to improve any hand you have.

This is the truth. Every success I've had has been where I've applied my computing skills to an environment where no-one with those skills had yet appeared. The efficiency gains you can make to mundane, non-computing tasks by applying a bit of programming knowledge will often knock the socks off people who've been doing things the same old way for years.

</comment></comment><comment><USER25> They way I think about it is you can work a dead end job for 80 hours per week making $8 an hour to make enough to survive and not have any free time to socialize, go to the gym or be with family. Or study for and try to get a decent job you like that pays half decent so you don't have to become a human eraser and wear yourself down doing the work of others. Having many skills to fall back on is great but trying to learn everything losing focus and never finishing anything isn't much help.

Or realize you need to focus and find a career that you like and is wanted by employers. I recall years ago they mentioned "The fear" and it is a great example of suddenly realizing shit I better start getting good at this life thing, now!

Time is shorter than you think your health can suddenly rapidly fail, saving for retirement is a constant worry. Time is so short it's as if nothing you do can be done soon enough. Realizing that early in life is fantastic. A big part of life I think is having mentors who are examples to follow it's good to have a person who you can think "What would Bob do?" as an internal guide.

It's easy to say all that but hard to do, I haven't mastered that yet.

<comment><USER18> I've found this fear to be my greatest motivator, but it has also lead me down false paths. Truth is, your dichotomy is a fiction. There are plenty of people who live fulfilling lives without ever having consciously focused on learning skills and meeting qualifications wanted by employers. However, nobody gets anywhere by being lazy – one then needs to find another motivator. One I have in mind is: repulsion toward injustices in the world. Rather than fearing drudgery, you can hold yourself personally accountable for evils and optimize for effecting change. Of course this is also a fiction. An individual is most likely incapable of effecting significant change in the world.

All motivations are irrational, but you still must have one. If you haven't found one, keep looking. Watch documentaries, travel, read books. You will find things to care about.

<comment><USER25> I shouldn't say or at least didn't mean a lot of money is the only way to be happy, yes finding something you love to do and your family is able to live a good life is the goal.

Education is a great character builder I often see educated people in stressful situations far more calm than someone who worked all their lives wit no education other than high school. It's not a science it doesn't apply every time but education gives you options, if you lose your job at a sawmill where you worked since age 16 you're going to be stressed. Sooner or later we all figure this out but it's better to discover that at age 18 than 49.

</comment></comment></comment><comment><USER26> Exercise. Relatively new discovery that lactic acid, that comes from muscle use, is a "pre-cursor" for motivation.

<comment><USER27> Counter-example: Me, I don't work out. I work 9-5 at a tech job and then spend the weekend working on my own products. I don't struggle with motivation as I literally enjoy what I do.

Always question advice that people like to rattle off - humans are very good at perpetuating bad memes without a second thought. Like that running a marathon (26 miles) in one go is somehow healthy, without ever questioning why a healthy activity would make them shit their pants and nipples bleed.

In fact exercising would probably decrease the probability that I would be productive as it would consume more of my time and energy.

My 0.02

</comment></comment><comment><USER28> I know it seems like what you learn in school is boring, and perhaps even trivial, but it provides an important foundation to what you'll learn in University.

When I was in high school, I'd attempt to apply the stuff I was learning in math to more interesting problems that I was actually interested in – for example, using the simple calculus I was being taught to start to understand some aspects of machine learning.

The truth is, a lot of high school math is rather fascinating – you just need to find a place to apply what you're learning. I still use that technique now; I find a lot of the electronics courses at university extremely dull, so I'll write a program to solve, say, a diode circuit using the exponential model. And I end up learning so much more than I would just studying.

So studying high school math and learning interesting things doesn't have to be mutually exclusive :)

</comment><comment><USER29> Sounds just like me at 16. Wasn't very motivated despite studying the A-Levels I wanted to (Maths, Physics, Computing). Spent all my spare time stealing Internet access at the local University (this was back in 1992/1993). I got decent grades (AAB) and got into my first choice University, but the motivation to do well still wasn't there. Ended up getting a 2:2 where everyone expected me to get a 1st. After that I was lucky and ended up in a good job where degree result didn't matter.

Looking back I wish I'd talked to someone (not my parents) about it at the time. So I'd recommend finding someone to talk to at your college; your form tutor (depends, I didn't get on with mine), careers advisor, pastoral care reps, etc. Just remember that they should be there to help you do your best, not bollock you for not putting your full effort in.

</comment><comment><USER30> One way to overcome a lack of motivation is to ruthlessly eliminate distractions. Tailor your environment and to be (and practice habits that are) maximally conducive to studying. If you have a hard time "taking a step back" to take an objective look at your habits and lifestyle, you might find yoga and meditation helpful.

Exercise can also help keep your energy up, but in my experience exercise doesn't magically solve motivation problems and sometimes gets in the way. Working a hard labor can give you good experience but I think the motivation that comes from that sort of work tends to be vastly overstated and wears off very quickly.

Do you spend time programming because you're motivated to program? Have you produced anything of value? What sort of research do you do? What motivates you besides programming and research? Who is paying the bills right now?

</comment><comment><USER31> It's nice to chip away at programming but if you don't have an academic basis to guide your studies it is going to keep you out of a lot of jobs when you get out. Take it from someone who knows - I've programmed useful things in just about every language, but because I didn't major in Computer Science (Physics/Philosophy instead) I'm unable to compete for the top tier of jobs. Hopefully this isn't permanent, as I'm teaching myself computer science now, but I could've saved myself a lot of work if I had just chosen a concentration more suitable for the jobs I was interested in.

You may be a confident auto-didact but even auto-didacts tend to have large blind spots. You don't know what you don't know, and school is there to tell you.

<comment><USER32> As a Computer ENGINEER, I can easily tell you that Computer SCIENCE is essentially a liberal arts degree. Seriously, they don't know s __t about technology, unless it comes safely wrapped in an API.

And by the way, studying Physics is orders of magnitude more difficult that learning CS. And for that alone, I would hire a Physicist over a CS guy any day of the week.

Ask any recruiter, and they'll tell you the same thing. Physics is a higher pecking order than CS.

</comment></comment><comment><USER33> Drop out and find something that motivates you. It's harder than the standard path, but if you're bright and industrious it can be a much more interesting ride. Also, university is always there later. I did the above, got bored in my second successful career and am now finishing up a Ph.D. that I started, as an undergrad, at the age of 27. I think I got more out of the program than my younger counterparts, and thanks to a decade of making money and connections, I did it in significantly better style. No regrets.

</comment><comment><USER34> I tried couple of anti-procrastination techniques and the only one I had moderate success with is the "no internet mode". When I have some project to finish, I make a decision that until it's finished, I won't use the internet at all from the morning to 8pm (except for work-related things and email). What's really important here is that you have to decide _firmly_. This usually lasts couple of days but I'm thinking about doing this every day.

</comment><comment><USER35> Some things that help me:

        Visualize goal: close your eyes, imagine your acceptance letters
        When stuck, go for a little walk or physical exercise
        Do goal-oriented studying (e.g. Pomodoro technique)

Understand the education system wants you to comply, this is wrong, but the faster you get over it the faster you'll forget about it. It's better to keep your mouth shut, don't complain or antagonize, they are not going to change for you or anybody (they haven't in centuries). Give them the little self importance they crave for and _get from them what you want_ (grades, diploma). Of course, keep your mind critical but keep it to yourself until they give you what you want.

Also don't overwork yourself, perhaps this is not the best time to spend many hours doing unrelated programming or research. It can be a distraction to your education goal. We have limited willpower, try to avoid depletion. Only when you achieve your studying goals for the day you get to do your own thing. Study in the mornings, play in the afternoons.

Modifying your routine takes a while, do it in baby steps. Remove all temptations that might get in the way to your goals until you achieve them. But keep a good chunk of the day to clean up your head.

Of course, YMMV.

<comment><USER35> It might help to go study to a special quiet and motivational place, a library or your aunt's house.

</comment></comment><comment><USER36> Step back and ask yourself: What are my assumptions? Why do I believe these assumptions to be true? What if they aren't true?

You have at least 50 years ahead of you. That's a long time. But the next 5 years will profoundly shape your next 50.

If that feels like too much pressure, then simply don't worry about it. It's more important to relax than to optimize your life if you're the type of person who doesn't react well to a lot of pressure.

</comment><comment><USER37> Wow, you sound like me 20 years ago. And I am quiet surprised at "that's life, shape up" responses.

Knowing what I know now, I wish someone would've told me: \- Try to get into top schools like Stanford, Harvard, etc. \- If you don't have the financial means or the grades or whatever, don't get discouraged one bit! \- Since you enjoy "programming or researching", stop stressing over colleges. In my humble opinion, most colleges are overrated. They are designed for drones and will suck the passion out of what you are majoring in. (note: may not be true for all) \- In my opinion, typical educational institutions in our country is broken. \- Instead, start interning. Do small projects that you can showcase on your passion. Join programming groups, meet ups that are related, etc. \- In short, make a living in doing what you love (programming). When you find a job and love what you do, you are no longer "working".

Finally, watch this: [http://new.ted.com/talks/larry_smith_why_you_will_fail_to_ha...](http://new.ted.com/talks/larry_smith_why_you_will_fail_to_have_a_great_career)

</comment><comment><USER38> Get a shit job. Get shot at by a thug. Clean up other peoples shit and piss all day for minimum wage. That's what worked for me.

</comment><comment><USER39> First thing - don't search for motivation or don't try to get yourself motivated. You'll end up looking for things that will make you feel good which will in-turn promote procrastination and thereby take you away from actions. The truth is motivation doesn't last. It's a push mechanism. You'll have to focus on things that pull you towards it.

If you keep going like the way you are currently, how would your life be? Definitely you understand the problem with it and this post is the proof. But ask yourself - "why do you want to get A-levels at school?". If programming and researching keeps you going, by all means, you should focus on it. Make sure you put the best possible efforts in it; the rest will follow automatically.

</comment><comment><USER40> Take it easy, there are lot of options available online if you are not enjoying what is being taught in college but you have interest in particular subject. For e.g.: When I was in college I felt my profs. are boring , so I always used to take online courses , like algorithms , operating system through ocw.mit.edu or stanford.edu or coursera , It helped me a lot to maintain interest in subject , and at same time participate in discussions online , there is always a big community somewhere which will be happy to help you .

</comment><comment><USER41> I went through this phase of the British school system some 14 years ago, just as the AS/A2 exams were being introduced. I'm a very technically minded person, but I found school's treatment of these subjects to be intensely boring. I found it hard to pay attention and not be distracted by some more interesting or immediately rewarding passtime such as programming.

While much of the A-level material is presented in a tedious manner, there are other books and sources available beyond your curriculum and I encourage you to seek these out. Applied topics such as computer science and engineering simply assume that you have a good grasp on the fundamentals. Books such as The New Turing Omnibus give you a taste of lots of topics, find some you like and dig deeper. Try and find some exciting, applied use of the boring school math, or chemistry, or phyisics. Find books and resources which guide you through learning rather than just reading Wikipedia.

In summary, try to find the cool things that can be accomplished with the fundamentals you learn at school and you'll be more motivated to work through the tedium. Don't be afraid of "degree level" texts. Try to stay away from any programming that involves drudgery and focus on enlightened, mathematically- inclined tasks: learn Haskell, implement fundamental algorithms, find hard problems like SAT, fourier transforms, optimisation. Find something which requires the skills you learn at school but which is exciting enough to hold your attention. Do lots of little things.

</comment><comment><USER42> It's not the material, it's not you. It's the rest of your life. You have to find a way to recharge.

I didn't do that for too long, and my grades dropped. My GPA dropped by 50%. I finally took a semester off. I traveled. I got out of the grind and away from family and work and actually tried to explore life a bit.

<i-am-obviously-projecting> When you're young and out of high school, you're mostly trying to figure out who you are independent of your parents and upbringing. Sometimes being out of your folks' house for a while and not figuring that out leaves you empty. </i-am-obviously-projecting>.

After that, I made recharging a normal part of my week. I gave myself a small music budget (a new album a month, that can't be top-40), looked into other activities (martial arts, motorcycling), and made a point to study different sub-topics of computer science at different times.

The same classes that were boring me out, I read their textbooks on the train to work.

</comment><comment><USER43> "Are there any ways by which I could motivate myself to study more?"

You told us, the answer is no.

You already dedicate your time to programming, because you need it. I also needed it when I was your age.

In my case I started programming while also studying engineering in Europe. I made a company with the code I accumulated over this time, with the knowledge of programming being really useful to manage other people(and identifying who is really good or not at it and so on).

People consider me rich now(there is always someone else with more money, but I have more than what my family needs), but I went through very hard times before it(my family wanted me to get a good job instead of risking so much).

If you force yourself to study more, you will regret it.

My advice:

Focus on learning to study more efficiently, the idea is to use the time you already use to study faster and get better grades while also giving time to programming.

Learn from the masters, read the Audiobook "The Now habit", learn aabout mindmaps and mnemonics, and always go for the best.

Use software for remembering stuff.

</comment><comment><USER44> Researching? Tell me you don't mean reading random wikipedia articles and browsing the web here.

You're at the stage of life where you need to develop deep skills in subjects. At the early stages of that process it can be hard to motivate yourself. You're gonna have to power through and realise you're doing this for future you not current you.

</comment><comment><USER45> Hey there! From the sound of it, you're about sixteen years old and live in Britain. A few years ago, I was your age and in a similar position. What grades are you getting at the minute? A-levels might be easier for you than you realise.

As to how to motivate yourself to study for them... study the cool things you can do with maths. Try to solve problems. Calculus, linear algebra and statistics are the fundament of the maths curriculum, and they're all hugely useful. Figure out how to prove things. Figure out how to solve mechanics problems with calculus. Program some statistical analysis stuff.

Frankly, if you're a smart kid and enjoy maths/programming, I expect you'll do fine at A-level. And if not, it doesn't mean much. Some of the best programmers I know didn't bother going to university.

</comment><comment><USER46> Ok let me play some mental games with you. Ask yourself would you rather pay $10/$100/$1000 or study for 5 hours?

Find the amount where you rather do the studying then pledge to donate that amount to charity. Do this everyday. I find this works for.

I estimate you are doing 4 a-levels. That's about 2000 pages of work. A 500 pg book for each subject. If you study 20 pages a day and do all the exercises, I guarantee you will get an A for whatever course(oh yea and do the past papers).

In a hundred days or so you could be finished studying for A-levels.

Enjoy the days of where you have if/then reward structures. If you study hard you get good grades then you go to a good university then you get a good job. After this, there is hardly any guaranteed recipe for success. So, take the success while you can.

</comment><comment><USER47> It sometimes helps to study the history of whatever subject you are working towards in school. For example, the history of mathematics can provide a lot of inspiration for what can be done with the knowledge. Focus on the outcomes you want and see the schooling as a means to an end.

</comment><comment><USER48> Being 16-18 and studying for your A-levels can be a horrible time - it was for me. Relationships with your friends start to change as you grow up at different rates (I don't know whether this applies to you), interests change, and you have so little energy it feels like an effort to get out of bed before noon. Some things that worked for me were hanging out with some different, more studious people, and learning the course material from books in the order I chose rather than following the course (I missed a lot of classes, but I would't recommend that). Make a game out of getting the grades that will be your ticket out of there! On a serious note, if you think you might be depressed, talk to someone (a doctor or counsellor) about it.

</comment><comment><USER49> > but I can't continue doing this if I want to get the A-levels I need to > enter a half-decent university.

Not sure where you're from, but in Canada you don't need all A's to get into a half-decent university. However, if you want to get into a top university, you'll need good grades and more (e.g. extracurricular activities).

I'm sure any university you will get into will be just fine. During your time at uni, you get out what you put in. Don't stress about getting into your dream university. You'll do fine wherever as long you like what you do and you get involved with stuff happening around you. Grades are just a means to an end, don't focus on them too much.

</comment><comment><USER50> University and school is very different. I was a B~C (even D & F) student in high school because I hated what I was taught in school. I enjoy Math but somehow was not motivated as well.

I went to the _okay_ university afterwards but things started to change. Everything what I learn there somehow made sense and was not boring anymore. It might be just the fact that university have better teacher but it was more motivating. Somehow I turned my self from B~C student to a A dean list student. I went to CMU for grad school after graduation.

The point i want to make is that university is different from school and you can always climb up the ladder as long as you try hard at some point.

</comment><comment><USER51> Get a job. Plain and simple, this the best way to motivate yourself to study more.

Fact is though, you don't need to study more. You should work a lot more. Working is the only really effective, motivating, way to take what you've learned through your studies and apply it to the real world. Without actually doing something for someone, a lot of what people learn in school is useless.

It isn't until you actually have a user that you become a developer.

</comment><comment><USER52> I had a rough time getting through my Computer Science degree, despite loving software. I still find things I hate. Currently, I've done web apps for a few years and now I'm fucking sick of them. Time to move on to a new area of CS that challenges me. That's pretty much how it goes. You'll do stuff you hate, but you have to use that as a foundation to do the things you love.

</comment><comment><USER53> Yes. By changing your attitude that 100% of what you do should be "enjoyable". Try and strike a balance. In real world you will find that most everyone puts up with stuff for safety net around basic needs like house, car, raising family etc. Right now I would enjoy 2 weeks off in Maldives. But I'm here working on this presentation to make my boss look good.

</comment><comment><USER54> This is very common situation for most of the people and it is also general for all fields. Many colleague around me who are also not interested about their daily work. Mind set is important factor to do something. Just sharing a video with you....

In youtube [http://www.youtube.com/watch?v=pN34FNbOKXc](http://www.youtube.com/watch?v=pN34FNbOKXc)

<comment><USER55> Can't stop but think that title of this video sounds like some super-cheesy self-improvement BS.

"The Power of Belief"

</comment></comment><comment><USER56> > spend my free time programming

Sounds like you enjoy programming. Assuming this is a correct assumption, go all in on it and start contributing to open source projects. If you have the talent then you might be able to get a good job out of high school. At the very least, you might want to look into Computer Science programs in University.

</comment><comment><USER57> Sounds a lot like an onsetting depression. Seeking medication now might save you a lot of time and suffering.

It's very important to recognize that your judgement about what interests you is probably distorted, currently. So think twice about making any rash decisions that relate to emotions or relationships....

</comment><comment><USER58> Keep programming and researching. Then use your skills to make cool things. Then show them to potential employers. You'll do great.

Try and get to uni anyway. But take the pressure of yourself. If you're making cool things and learning loads you're ahead of the pack.

</comment><comment><USER55> If you want to be professional programmer you don't really need university. In this profession recruitment doesn't lie when tell things like "BS in CS or similar experience.".

Just go and work, then pick up and study something else, like Mathematics or Physics.

</comment><comment><USER59> Pick up a copy of Cal Newport's book "So Good They Can't Ignore You." Read that book and then think about your situation some more. Cal brings up some very interesting observations, and you're at the perfect point in your life to read it.

</comment><comment><USER60> It could be depression. Google "depression test" to give you an idea about it's symptoms. If you think you've got depression, get medical help ASAP. There are some treatments that can make a big difference in your quality of life.

</comment><comment><USER61> Your soul is probably waking up. That's the black lung of coding.

You have three, maybe four choices. Visual arts, music, and writing, with performing with an asterisk (it's not for everyone.) Get used to being a lot poorer, but happier.

<comment> FLUX-YOU Take it from someone who fucked up and went for arts:

You get demotivated there too. At least with math and programming jobs, you have some money to fix things.

<comment><USER21> But, as someone who also went towards the arts (I'm a regularly gigging musician) and letters (I have a BA in Philosophy and dumpped my PhD during my dissertation), I can say that it wasn't super hard to get back into a technical position coming from a high-school and early college education where I learned a lot of logic, math, and programming skills... since leaving my PhD program I've been consulting doing PHP-based development for the last 4 years, and I'm on track career wise as I would have been if I was teaching at a university somewhere.

This is wholly a un-based feeling, but I feel that it has been a lot easier to pick up new and professionally useful technical skills in my 30s than it would have been if I had done well in my 20s with a technical career and had to pick up the useful philosophical and musical skills I enjoy using in my 30s.

</comment></comment></comment><comment><USER62> If you're a gamer, think of it as Skyrim: you have to craft a lot of iron daggers before you can make dragon armors, but it's worth it :)

(that or install a mod, but I haven't found the editor for RealLife yet)

</comment><comment><USER63> Wait, your two years from going to college? That makes you what, 16?

</comment><comment><USER64> You're depressed, mate. I bike 10 miles a day( 4 - 6 times a week ) to keep myself in the saddle. After that, I have no issue with this kind of stuff. Eating right is huge, too.

</comment><comment><USER65> Adopt continous improvement for everything you do. This makes a game where you can improve your thinking, skills, and processes.

It won't be boring because you can always do it better.

</comment><comment><USER66> Lots of people hit depression in college. See a doctor. You may not be sleeping enough, drinking too much, sleeping irregularly, etc, all which can cause depression

</comment><comment><USER67> Go and visit your local big council estate. Poor futureless unfortunates should give you some mojo. Or even just watch Benefits Street

</comment><comment><USER68> You don't need motivation or inspiration, and most of the time you don't have these. Just do what you have to do.

</comment><comment><USER69> What do you seek? Minimizing pain, maximizing pleasure. That's what we all are programmed to seek. You find that and associate it with the studies.

E.g.s

Maximizing pleasure:

\+ Do you want to work in another country/place. Your studies can get you there.

\+ Want to have interesting conversation with people. Study.

\+ Want to understand and have a say about a topic. Study.

Minimizing Pain:

\- Don't set yourself for failure few years down the line or make it tough

\- Avoid getting into a meaningless job

\- (Works for Asians) Think of peers getting ahead of you.

<comment><USER27> > Minimizing pain, maximizing pleasure.

Too reductivist, so do I eat the ice cream sundae and get pleasure right now? To the detriment of my long term health or do I eat the kale forfeiting short term pleasure and gaining long term pleasure?

Your model has no predictive power.

</comment></comment><comment><USER70> Travel the world. Ignore these asshats that try to guilt trip you into working through your slump.

</comment><comment><USER71> Here's my story.

Two years ago, I dropped out of a mathematically oriented master's. Let's say I quit because I wanted to found a company. That's what I tell everybody. And that's what I did.

I can get into the details of why it didn't work, but I'll tell you something here, something which, until now, I have only written down in places nobody would read it: I might have been running from reality. Using the company as a hide-out. "Maybe this will give me a purpose?"

We pulled the plug when we were forced to realize that it was a dead end.

Pause six months. Rethink life. Winter, not a good time.

Moved to another country and tried again. It went better, but still not good enough.

Again, six months of nothing. Winter.

Travel. Maybe languages are my thing? Different cultures? Get lost. Come back.

Winter.

This time, I'm not letting it steal six months. I'm trying for another project (Show HN soon), I'm going on another travel, and I'll keep on looking, because I know one thing: an office will be the death of me. Unfortunately, programming is generally done in offices.

But there's always that doubt. Got some freelance jobs to make ends meet. Flipping burgers, for programmers. Can't continue this way. Stability, future, kids, wives, divorces.

So listen, I can't give you a straight advice. I still don't even know where I went wrong exactly, or if I went wrong at all. I don't know if I would've been happier in another place. I sometimes lovingly think back about academia, then I see what happens there and I want to run even farther away than I already am.

Motivation is still a problem for me, at times, but it's getting less. I have no regrets (yet), just doubt. A shred of what I would've had, had I not tried for that first company.

On the upside: I feel free. Every day. Alive. I can decide to drop everything here and emigrate within a week. And I'm doing it. Because I can. Because it feels like the right choice.

If you tell me where you live I can drop by if I'm ever around :)

Good luck with whatever path you choose. No matter what you do, do it with pride, son. I believe in you, as long as you do.

Sorry I couldn't give you real advice.

Oh wait that's not true I totally do have some! Got so caught up in the story.. listen if you really want to tackle this: TALK TO PEOPLE. In terms they can understand. Don't say, "I have doubts." Say: "Can I study with you next Friday? If you FORCE me to be there and do it, I will cook dinner for you." Tell a girl, if she asks why explain here you have trouble concentrating alone, joke that maybe she will make it worse but you're willing to try, and tell her that it's definitely absolutely not a cunning ploy to get a date with her (it's not). If she rejects you ask someone else until you have a girl. Then choose a guy for a different subject (not a close friend, high risk of fucking around), and somebody you really don't know for another one, and a buddhist for the next, and an atheist, and and and make sure you surround your study-self with as many different styles of living as possible. You will be able to draw inspiration from them. Solitude is what's killing you. Your life will mix with theirs and your energy will combine. I'm not even half joking here; the energy you draw from linking your progress to someone else ("teamplay") can amaze you.

I'll be your first contact if you want, no problem. Drop me a line on Skype and we can work / study for an hour every Thursday afternoon. (send me your skype though, not leaving it here :P)

Peace out, stranger!

<comment><USER71> Edit in a reply: And whoever else wants to join: feel free! We can make like a Study / Work group session where nobody talks for an hour and we just work all together in a video conference. Why, that would be just the ding-dang-diddly!

(how do I edit the original post? click "edit", append that paragraph, click "update" button.. nothing happens; edit page reloads and I lose changes.. wut?)

</comment></comment><comment><USER72> The problem with education is that it always has a different take on a subject to what personally fascinates you about the subject. Subjects that might have floated your boat personally for many years will be taught differently to what you expect, killing your interest in a subject.

There is an adage about teaching - if you cannot do then teach, if you cannot teach then teach Geography. If we take Geography as an example, you might think of geography as being about places on a map, be able to name all U.S. state capitals and know where Dhaka is and Dakar isn't. Then, in a geography class, you might find that knowing where anywhere is does not matter in the least. 'How flood plains are formed', 'how a volcano works' will be what is taught, without any mention at all of physical places.

The geography example is an example of how expectations of a subject can be wrong at the basic school level, you can live with a mis-match of expectations in geography syllabus, however, go to university and it is another kettle of fish. You might think politics would be a useful thing to study, be passionate about the subject and be knowledgeable about current affairs. Again, none of that would matter.

Computer science is another area of concern. You might be good at programming and be up to date with whatever is on HN. Yet, at university you might get taught languages and methodologies that are a world away. There might actually be reasons why the university teach what they teach that are not readily apparent. The military might have some link up that means that stuff that matters to designing jet fighters gets taught. Clearly none of it - 'ADA' \- for instance - might have no relevance in the real world.

Returning to your subject of maths, in the real world you are doing pretty well if you have problems that require secondary school stuff - trigonometry, calculating prices with tax, differential equations. Actually you could probably go a long way on getting a man on the moon with secondary school maths, yet there is a whole world of maths beyond that. Triple integrations, anyone? Even if you do find a real world use - electronics with Gauss's theorem - there aren't many uses for that real world use. It is all too convenient for maths to be taught in such a way that it is abstract and not practical, e.g. teaching a program to do it for you, or working on a large dataset in a computationally efficient way. Even reading the data in is not something that would be taught. It is a bit like how you can do a degree in electronics and never touch a soldering iron or know how to fix a fuse.

So my suggestion is to not head off to university so hastily. Work somewhere for a little while then go to university because you know why you are going. You can actually learn useful stuff at university rather than go there to just get a bit of paper.

</comment><comment><USER73> Exercise. Lots of it.

</comment><comment><USER74> > I'm two years before heading off to university, but I have no motivation to > learn the things that are being taught at college.

Personally, that was a really tough time for me in my life.

> I chose to study the subjects that I thought I would enjoy, but sadly this > isn't true.

That happened to me too.

> I'm assuming that if I had made other choices for subjects, I'd be in a > similar problem.

Maybe; it's hard to know where other paths would have led.

> Maths is one of the subjects I'm studying, and although I enjoy maths > itself, I'm not enjoying what I learn in school.

I had that same experience. That's why I studied maths on my own, outside of school (I consider programming a subset of maths.)

> I can't be motivated to put the work in, so that I can get good results at > the end of the year.

Same thing happened to me.

> I spend my free time programming or researching instead,

That's also what I did. Studying philosophy also helped alot :-)

> but I can't continue doing this if I want to get the A-levels I need to > enter a half-decent university.

I found my high school to be very oppressive, so instead I went on academic strike and programmed for fun. I almost flunked out of high school, and only got into one university that has a tradition of accepting everyone.

It was all for the best. I'm not saying __you __should do that. But, it was the path I needed to take. You can live a wonderful life regardless of what academic success you achieve or fail to achieve.

Older people have a bad habit of advising younger people they need to do very specific actions in order to achieve very specific goals.

In this ancient tradition, I will now offer you very specific advice ;-)

(1) Ask yourself: do you desire the goals you are told to desire. What are __your __goals? What do __you __actually want from life?

(2) Once you have your goals in mind, your advisors will usually be __conservative __. That is, their advice usually describes __one path __to your goal --- not the only path. For example, if you want to go to a half- decent university and an advisor tells you, "you should try to get straight A's" \--- then your advisor is being conservative. Yes, if you get straight A's it will be easier to get into a half-decent university. But it's not the only way. Furthermore, younger people are often more creative in finding ways to sidestep tradition.

(3) Ask for lots of advice, but only listen to advice skeptically.

(4) Don't be afraid to "Go ahead and fail." [http://www.bloomberg.com/news/2014-02-20/go-ahead-let- your-k...](http://www.bloomberg.com/news/2014-02-20/go-ahead-let-your-kids- fail.html)

> Are there any ways by which I could motivate myself to study more?

I would caution against trying to coerce yourself into being more motivated. Follow your own path. When people give you advice it's up to you to take it or leave it. Even this advice.

</comment><comment><USER75> Endeavor to make these things a habit. Every day or 5 days a week etc.

Write down some realistic things you want to do today that you might avoid. Do this as early in the day as possible.

Before you make a decision which will avoid doing one of those things you wrote down, stop, think about it for 60+ seconds. Usually these decisions are done just like instincts without thinking: "hit next episode on netflix", "read this HN link", etc.

In that 60+ seconds, suggestions:

1\. Decide to start on the thing you'd rather avoid for just 5 minutes, then you can quit if you want.

2\. Imagine your future self looking back on your decisions.

3\. Remember how this thing ties into long term goals.

4\. Plan a reward for yourself if you do the thing.

5\. When negative thoughts or feelings happen, accept them, don't believe them or give them any more power, see them from the outside.

<comment><USER27> Sorry but little tricks and magic bullets like this do nothing in the long term to alleviate the issue. Primarily because you won't stick to the habit.

OP you will have to decide whether doing work and being productive is something you want for yourself, you will not be able to fein an answer for any substantial amount of time. Your answer is also subject to change.

My guess is if you completely gave in to your de-motivated mentality you would quickly realize how bankrupt it is and be driven back to working.

</comment></comment><comment><USER76> People seem to be misreading your question.

You seem fully aware that the subjects you're studying are very important and you need to do well at them.

As someone once told me most motivational speakers just lend you motivation. Once you've left the room pumped you quickly go back to square one.

So it's hard to know what works, there's a lot of crap out there.

I've had moderate success with the Pomodoro Technique [http://en.wikipedia.org/wiki/Pomodoro_Technique](http://en.wikipedia.org/wiki/Pomodoro_Technique)

But if it doesn't work for you, or as often happens it only works for a while, make sure you go on to something else.

</comment><comment><USER77> There are none, if you don't feel it then it's not there.

Or you could follow the advice other people had leave here... and eventually you will come back to this same situation but when you are 50 and tired...

Seriously dude, my advice, if you don't feel it leave it; and if you don't feel nothing anywhere then do nothing, many cool things happen when you are "doing nothing".

</comment><comment><USER78> Aniracetam (or Oxiracetam, if Aniracetam doesn't work for you) + DMAE. Don't forget to balance your blood pressure, use venous or arterial drugs to enhance whole body blood flow (don't use drugs that work only locally). If you don't want to use blood-related drugs, then just exercise regularly (try to focus only on resistance-oriented exercises). Try to sleep on a hard bed without any pillows. Also, increase your metabolism and energy by drinking a cup or three of coffee in first half of day and eating a big (300+ grams) portion of boiled grains + a good piece of meat, but with small amounts of fat. And don't forget to eat a lot of fruits - primarily oranges, apples, bananas and pears.

<comment><USER79> If we are suggesting drugs, may as well throw in a suggestion for amphetamines.

But personally, I would recommend intense and sustained cardiovascular exercise.

<comment><USER80> Adderall would make anything fun.

<comment><USER81> modafinil. your solution, for dire needs ofcourse</comment></comment></comment></comment>