What's New in Emacs (Part 2) - <AUTHOR> http://www.masteringemacs.org/articles/2011/12/12/what-is-new-in-emacs-24-part-2/

<comment><AUTHOR> The most exciting part is at the end:

 _Code can now use lexical scoping by default instead of dynamic scoping. The `lexical-binding' variable lets code use lexical scoping for local variables. It is typically set via file-local variables, in which case it applies to all the code in that file._

</comment><comment><USER2> There are tons of goodies in there, and the author is doing a hell of a service to Emacs users.

That said, a part of my can't but sigh... Now we have new completion & new electric pairs. How is that going to propagate to other modes? Just the thought of new the work involved in diagnosing which mode is using what, and how to adapt for it gives me the chills.

The package manager looks nice, but how can it handle stuff hosted on a git rep? How are changes show? Without all of this sorted out, it's usefulness is severely diminished.

<comment><USER3> The completion mechanism is actually the same as what it has always been. `completion-at-point' is Emacs's generic completion framework, and what they've done is replace all those mode-specific hatchet jobs with the more generic one. As for the electric stuff, that's the same story: every mode had its own way of doing it. I used (and still do, not migrated yet!) skeletons for my electric pairing as it did a really good job of handling all the edge cases (you're in a word, you're at a bracket already, etc.)

</comment></comment><comment><USER4> > C-y in Isearch is now bound to isearch-yank-kill, instead of isearch-yank- > line.

Thank you.

> New commands `count-words-region' and `count-words'.

No more M-| wc? Another thanks.

In general, I'm really glad to see the Emacs developers standardizing and catering to the rest of the world - a lot of these things are things that annoy me subconsciously or consciously, but not enough to figure out how to fix in my .emacs.

<comment><USER3> Make sure you read the caveat I wrote as what counts as a "word" depends on the mode.

<comment><USER4> I usually am counting in markdown-mode, so I doubt there are any major gotchas.

</comment></comment></comment><comment><USER3> Aww, damnit. It's down again. I really need to ditch Apache or learn how to not make it take down my 1.8 GB ram Linode instance.

<comment><USER5> Wordpress is pretty easy to get going with Nginx. Took me a couple of hours (max) to switch from Apache on my linode box.</comment></comment>


Erlang and code style: Musings on mostly defensive programming styles - <AUTHOR> https://medium.com/@jlouis666/b5936dceb5e4/

<comment><USER2> Already present in HN: [https://news.ycombinator.com/item?id=7775308](https://news.ycombinator.com/item?id=7775308)</comment>


Clojure Socket Prepl Cookbook - <AUTHOR> https://oli.me.uk/2019-03-22-clojure-socket-prepl-cookbook/ <comment><USER2> This is a really useful write up, thanks for putting it together. Pairing fighweel main with the prepl seems like a very powerful combination. One feature I use a lot in fireplace.vim is "doc", hopefully you can add that feature in Conjure soon!

<comment><USER3> Already there :) K will look up docs for the symbol under the cursor. Pretty sure fireplace has this though...

Example of the doc output: [https://imgur.com/vSB5Fv5.png](https://imgur.com/vSB5Fv5.png)

</comment></comment><comment><USER4> That Conjure thing definitely looks interesting. I wonder how it handles the repl - like fireplace or like slimv.

<comment><USER3> Hi, I'm the author and that means a lot to read! It's been a labour of love going back and forth on rewrites and ideas for about six months so it'll mean the world to me if it ends up being something people enjoy using some day.

The tool is, like all tools, designed around my preferences and opinions, it definitely won't align with everyone but I hope there's some good ideas in there.

There's no traditional REPL, there's a log buffer that has results appended to it. You can edit that buffer (which happens to be a .cljc file) and evaluate anything in there like you would in any buffer.

The log buffer appears, expands and hides when required. I've tried to keep it out of the way when you're not using it but persistent and accessible when you need it. I definitely want to experiment with Neovim's floating window API and the "virtual text" API too.

<comment><USER5> Can you please write a dev-workflow guide (maybe with some GIF's) when you have the time ? I am a clojure newbie and I can't quite figure out how to leverage this. I am using lein and vim-fireplace presently, but I always get the feeling that there is a better dev workflow.

<comment><USER3> Yep, sure thing, good idea. I was going to do an asciinema video or something, I only got around to writing the README as it stands yesterday, it's the first time I'm showing it off really.

</comment></comment></comment></comment><comment><USER6> This tool looks really cool, but I've never heard of a prepl, what is it? How is it different from a repl?

<comment><USER3> The p in prepl stands for programmable or programs, as in, for programs. If you open up a socket REPL you can connect to it and send code + receive results but they're printed without any structure. String goes in and string comes out.

The prepl wraps all responses in a predictable EDN data structure tools can consume with ease. This is what Conjure is built on. The source and doc for the Clojure prepl is really informative: [https://github.com/clojure/clojure/blob/8e7213781a1a45db9668...](https://github.com/clojure/clojure/blob/8e7213781a1a45db966898835b8f41f545c64d52/src/clj/clojure/core/server.clj#L192-L215)

<comment><USER6> That sounds fantastic. Thanks for the info. Currently I'm using iced-vim, but I'll definitely have a look at Conjure when I have some time.</comment></comment></comment>


Modern garbage collection: Part 2 - <AUTHOR> https://blog.plan99.net/modern-garbage-collection-part-2-1c88847abcfd <comment><USER2> > For a video game running at 60 frames per second each frame has 16 > milliseconds in which to complete, so a pause of less than a millisecond is > not going to be significant relative to other overheads.

This is definitely very significant, you just took away 6% of the CPU time available to the game to calculate everything necessary for that frame. And that's if there's only one pause inside each frame. And if you are running close to 100% CPU time, and the pause happens right before the vsync, you might miss the vsync and you will drop a whole frame.

This is not only a problem with GC, even with more deterministic memory management, like plain malloc() and free() in C, you can have pauses if the operating system needs to go and find some free memory, update page tables, flush TLB caches and so on. So for games and anything real-time, you probably want to avoid memory allocations as much as possible, and certainly don't want your whole process being paused at random. So if you are stuck with GC, then one question would be: can GC be done for individual threads without blocking other threads?

<comment><USER3> True. This is why any serious game running on a VM with GC would avoid any kind of per-frame memory allocation and use arena allocators instead.

The whole premise of a GC to save you from thinking about memory allocation is moot if it comes to real-time sensitive tasks, there it makes things harder instead of easier. A reference counting system is much better IMO, even though you may be able to get higher absolute throughput with GC, at least the small overhead you incur is stable and predictable.

<comment><USER4> Reference counting is not better, it's a poor man's GC. Reference counting means: 1) instruction pollution from all the refcount updates and their synchronization 2) circular references, ie memory leaks 3) too much time spent freeing memory (whereas a generational GC spends time on live objects only) 4) memory fragmentation and hence slow allocation (whereas in a normal GC allocation is just O(1)

<comment><USER3> Languages like Swift and Objective-C hide the reference counting for you, so 'instruction pollution' is not really something I care about. The overhead at the instruction & memory level is fairly minimal for these language too, by means of using tagged pointers. I'm pretty sure the compiler is smart enough to factor out reference counting for complete sections where it can determine objects can impossibly go out of scope (e.g. sections where aliasing can be ruled out, and all assignments are to locals, such as in many loops).

Circular references can be a problem, this is just something you have to live with and design for, just as in languages with manual memory management. In the typical cases where this can be a problem (graphs of objects) its very straightforward how to fix them using weak references.

I don't understand point 3 and 4 and why they would be a property of reference counting for memory management. They both seem completely orthogonal problems that have nothing to do with the mechanisms that decide when to free memory.

Anyway, my original point was not that reference counting is perfect, or even more efficient compared to garbage collection. Just that it is predictable and deterministic, which is very often much more important, especially for code with real-time constraints.

<comment><USER5> > Languages like Swift and Objective-C hide the reference counting for you, so > 'instruction pollution' is not really something I care about. The overhead > at the instruction & memory level is fairly minimal for these language too, > by means of using tagged pointers. I'm pretty sure the compiler is smart > enough to factor out reference counting for complete sections where it can > determine objects can impossibly go out of scope (e.g. sections where > aliasing can be ruled out, and all assignments are to locals, such as in > many loops).

New Swift Ownership API can help, but compiler is not that good to figure out exclusive ownership all by themselves without any annotation. It is common to have more than 10% of you time in RC environment spent on refcount calculations and locks acquisition (some stats: [http://iacoma.cs.uiuc.edu/iacoma- papers/pact18.pdf](http://iacoma.cs.uiuc.edu/iacoma-papers/pact18.pdf)).

</comment></comment></comment></comment></comment><comment><USER6> > For a video game running at 60 frames per second each frame has 16 > milliseconds in which to complete, so a pause of less than a millisecond is > not going to be significant relative to other overheads.

First of all: bullshit. Second of all: bullshit.

99th percentile of 1ms means that 1% of the time you're worse than that. The author says sometimes it's as bad as 8ms. A dropped frame every 15 seconds or so will make your game unplayable. 99th percentile measurements are useless. Tell me how often your users are subjected to any given latency.

One millisecond is enormous. My kingdom for a millisecond. If one in ten frames losses 1ms to a GC and one in a thousand frames looses 4ms, that means my budget is 12ms down from 16ms. Thanks, you've sent my expected environment back to 2010.

People think they can just say "99th percentile is bad but not terrible" and assume that's the end of the argument but that's not how the world works. 99th percentile frame time happens once every 1.7 seconds. If your web page loads 200 assets (which is basically all of them these days) nearly all page loads will hit worse than 99th percentile for one of those asset loads.

99th percentile analysis is useless.

<comment><USER7> As we say in fintech, a millisecond is an eternity. (Lately, I have been hearing that a microsecond is an eternity.)

Garbage collection promotion is always, fundamentally, an exercise in doublethink. How can an intolerable process be made to seem tolerable, so that my dodgy language which depends on it can be used in place of a mature language which has a robust mechanism for managing all resources, not just memory?

It can't. GC is fine for things that don't matter, but things have a way of coming, in time, to matter. Then you have a Problem.

</comment></comment><comment><USER8> It's telling that of the 15 "things that matter in GC", power consumption isn't mentioned, even in passing.

<comment><USER9> What should be said about it that's not already covered by CPU and memory overhead?

<comment><USER10> Power consumption has some subtle details which make it different from both CPU and memory overhead. For instance, to reduce power consumption it's important to reduce wakeups.

<comment><USER9> I'd like to learn more, if you're willing to provide something more than vague hints.

</comment></comment></comment></comment><comment><USER11> Incremental GC is very promising for games in favour of traditional stop-the- world GC. It's essentially time sliced GC that runs over multiple frames. Unity supports it and if you tweak if correctly for your needs the GC can run while the CPU is waiting for the GPU.

<comment><USER12> I don't think there are _any_ GCs that do not stop-the-world at some point, except those with special hardware support, are there? Even C4 requires in theory stopping individual threads, and in practice even has a global stop- the-world phase.

<comment><USER13> It's easy to write a GC that doesn't stop the world at all. A Baker treadmill [1], for example, is a very simple type of incremental collector that can be implemented quickly. (It's a fun exercise, by the way!) If you implement it "by the book", it will have no stop-the-world pauses whatsoever (assuming the mutator doesn't allocate faster than collection can happen).

The problem is that a simple GC like this will have low throughput, so it's not worth it. These are some of the most common misconceptions about GCs: that it's hard to write a low-latency GC and that pauses are all that matter. In reality, GC engineering is _all_ about the tradeoff between throughput and latency.

[1]: [https://www.memorymanagement.org/glossary/t.html#treadmill](https://www.memorymanagement.org/glossary/t.html#treadmill)

</comment></comment></comment><comment><USER14> It's odd how he goes out of his way to make the Go team's decisions seem strange just because they're different. What's going on there?

I'm happy that the Go team doesn't want to expose tuning knobs. I've seen a lot of people fiddle with JVM settings without doing the controlled experiments needed to see if it actually helps on a particular machine and I've done that myself. It ends up as cargo-cult programming, like people sharing magic JVM settings on the wiki to allegedly make IntelliJ faster. (It worked for one person!)

<comment><USER15> > I've seen a lot of people fiddle with JVM settings without doing the > controlled experiments

That's a problem with what the people are doing then, not the JVM. Furthermore, the new low latency JVM GCs only have 2-3 knobs to tune.

golang likes to pretend that complexity doesn't exist, and goes for the most simplistic approach, at the cost of things like throughput, code size, speed, code maintainability, etc. The JVM is suited for a much wider range of tasks.

<comment><USER16> That's not the impression I get from Go literature at all.

Go authors tend to be quite humble about Go being targeted mostly to a specific class of software, read servers. And Go is pretty darn successful at it.

The lack of GC knobs is an informed decision within that context.

<comment><USER15> "Servers" refers to a broad range of software. If you're writing a simple app that parses JSON and handles REST, it can be an ok fit. Now if you're writing server software that needs to be high-throughput, then that's where you hit golang's limitations.

<comment><USER16> High throughput servers you say? I'll just leave this here:

> How We Built Uber Engineering's Highest Query per Second Service Using Go

[https://eng.uber.com/go-geofence/](https://eng.uber.com/go-geofence/)

And that was in 2016. Go's GC performance characteristics improved quite a bit since then.

<comment><USER15> This doesn't negate the fact that I stated. You can throw more hardware at the problem to reach higher throughput if your problem domain allows for it (such as the use case you link to). It goes without saying that this is an inefficient approach, not to mention that this won't apply if you're running batch jobs for instance where you need high throughput (e.g. on individual nodes).

</comment></comment></comment></comment></comment></comment><comment><USER17> I was hoping this was about the infrastructure and systems around collecting human garbage in the modern world.

<comment><USER18> Anyone have any details on recent developments in the field?

For example:

      Reclaiming raw materials from landfills
      Machines/robots that can sort recyclable materials from a heap of mixed garbage.
      Better insulated landfills

<comment><USER19> In the area in Stockholm, Sweden where I live we throw "all" garbage (we of course separate glassware, metal, paper, electronics first) in the same bin, but food waste in green bags. I don't know if it's robots that does the final sorting but I would believe so. Less than 1% of household trash ends up in landfills here.

</comment></comment></comment><comment><USER20> The technical detail in this article is excellent! A great read.

But I think it would have been an even better article without the negativity about Go and how the author thinks "the Java guys are winning" in his words. That felt a little petty.

<comment><USER21> Why? Did he hurt Go's feelings? It's a programming language, not a child. I prefer his honest assessment of their relative strengths and weaknesses.

<comment><USER22> Except that it isn't necessary nor is it completely honest. Go and Java take different approaches here, but the article focuses on the merits of the Java approach and the downsides of the approach taken by Go.

Example 1. The article talks about compaction and generational collection as being Good Things(TM), but it doesn't talk about the costs associated with them. Looking at the linked Go article, these approaches suffer from high write barrier overhead. For Go, this isn't worthwhile because escape analysis allocates many young objects on the stack (which btw is effectively bump- pointer allocation) so trying to further reduce GC overhead by increasing the overhead of every pointer write is just not worth it. It may, however, be the right trade-off for Java.

Example 2. Java's many tuning parameters means that programmers who care about performance have to choose the right GC and tune it. If better GCs come out or tweaks to the algorithms are made, these configurations have to be updated. In contrast, Go programs gets these benefits for free. The best approach seems to be to offer a small number of high-level knobs, but it's hard to determine what those are, leading to the two (suboptimal) extremes you see with Go and Java.

<comment><USER13> These are common misconceptions.

> Example 1. The article talks about compaction and generational collection as > being Good Things(TM), but it doesn't talk about the costs associated with > them. Looking at the linked Go article, these approaches suffer from high > write barrier overhead.

You need a write barrier no matter what for any sort of incremental or concurrent GC, to maintain the tricolor invariant. Otherwise there is no way for the runtime system to detect a store from a black object to a white object. Typical GCs will fold the write barrier needed for generational GC into the write barrier needed for incremental/concurrent GC, so there is no need for extra overhead if properly implemented.

> For Go, this isn't worthwhile because escape analysis allocates many young > objects on the stack (which btw is effectively bump-pointer allocation)

Java HotSpot has done the same thing for a long time! It's just that in HotSpot escape analysis doesn't really help allocation performance, because the generational GC already offers bump allocation in the nursery. Escape analysis in the JVM does open up more optimizations, though, because it serves as the scalar-replacement-of-aggregates transformation.

> so trying to further reduce GC overhead by increasing the overhead of every > pointer write is just not worth it.

This is only because of their specific implementation. There is no need for increased overhead.

> If better GCs come out or tweaks to the algorithms are made, these > configurations have to be updated. In contrast, Go programs gets these > benefits for free.

There is no reason why Java can't do the same by updating defaults. In fact, they often do.

<comment><USER21> >> If better GCs come out or tweaks to the algorithms are made, these configurations have to be updated. In contrast, Go programs gets these benefits for free.

> There is no reason why Java can't do the same by updating defaults. In fact, > they often do.

Correct. The JVM guys always update the default GC to be the nearest to 'one size fits all'. Obviously if you've made a custom GC configuration then you want a level of tuning that Go does not provide.</comment></comment></comment></comment></comment>


Looking for UI Elements for illustrator - <AUTHOR>

Anyone know a free or premium UI Elements for Web App for illustrator (there are many available for PSD, want it for AI) <comment><USER2> Indeed, polished UI elements tend to be done in Photoshop, while those for AI tend to be for wireframing. Here are a few links:

<http://developer.yahoo.com/ypatterns/about/stencils/>

[http://www.webalys.com/design-interface-application- framewor...](http://www.webalys.com/design-interface-application- framework.php)

Note that not all Photoshop is raster, however; shape layers can be used to create vector elements. For example, the following is vector despite being PSD:

<http://designmodo.com/polaris-free/></comment>


Golf prolongs life - <AUTHOR> http://esciencenews.com/articles/2008/05/30/golf.prolongs.life

<comment><USER2> Talk about jumping to conclusions. All they know is that there seems to be a correlation between playing golf and lower death rates. Could it be that those people have a lot of free time and are already healthier than those who don't/can't?

Maybe golf is a sport that attracts older people who are not suffering from debilitating diseases that make them stay at home, especially in Sweden.</comment>


Introducing Brotli: a new compression algorithm for the internet - <AUTHOR> http://google-opensource.blogspot.com/2015/09/introducing-brotli-new-compression.html <comment><USER2> It's been posted pretty often the last few days. [https://news.ycombinator.com/item?id=10257305](https://news.ycombinator.com/item?id=10257305) from two days ago has 138 comments.</comment>


WebOS 1.4 coming in February with built-in Flash... - <AUTHOR> http://www.precentral.net/webos-14-coming-february-built-flash-video-etc?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+Precentralnet+%28PreCentral.net%29&utm_content=Google+Reader

<comment><AUTHOR> I'm curious to see what developers think about how this changes the competitive landscape. Is the device still not in enough people's hands to make it worth it?

</comment><comment><USER2> I am curious how Managers think that adding Flash makes them better then Apple.

<comment><AUTHOR> I would be surprised if they thought that that feature alone was what did it. I would not be surprised if its one of dozens of features that does though.</comment></comment>


Show HN: Can You Beat the Machine? - <AUTHOR> Let me start by saying from where did the idea of this project, because I find it is one of the most interesting things about a project. The idea comes reading "Thinking, Fast and Slow".
I created a simple game to give a simple demonstration of how we are often biased in making choices.
If you are interested you can go into that reading this paper Choices, Values, and Frames: http://web.missouri.edu/~segerti/capstone/choicesvalues.pdf and this article: https://en.wikipedia.org/wiki/Loss_aversion
The game consists of choosing between two different bets.
If you want to see here is the link:
https://thundershotgames.github.io/CYBTM/
Let me know what you think, thank you ! <comment><USER2> Clickable: [https://thundershotgames.github.io/CYBTM/](https://thundershotgames.github.io/CYBTM/)

To submit a link using the |submit| page, put it in the |url| box and _leave the_ |text| _box empty._ It is ok to add a comment after the link shows up on the HN |new| page.

</comment><comment><USER3> Interesting mechanics.</comment>


These genetically modified cyborg dragonflies could perform 'guided pollination' - <AUTHOR> https://techcrunch.com/2017/01/25/these-genetically-modified-cyborg-dragonflies-could-perform-guided-pollination/ <comment><USER2> >>we can make enough of them fast enough to counter the disappearance of honeybees

Black Mirror Series 03 "Hated in the Nation"

[http://www.imdb.com/title/tt5709236/?ref_=ttep_ep6](http://www.imdb.com/title/tt5709236/?ref_=ttep_ep6)

</comment><comment><USER3> This is amazing, even if it's a bit far-off.

My question is whether this can be streamlined and the little bots can be re- used enough to cover their expense, and we can make enough of them fast enough to counter the disappearance of honeybees.</comment>


Ask HN: Y U No Comment If U No Like? - <AUTHOR>

Throw-away account obviously.
Following dang's advice, I've resubmitted things a few times that got a lot of interest on other sites (let's say, Slashdot and Reddit, why not?). I'm lucky if any one of them ever got a single upvote.
Nobody has suggested, "Hey, we don't like this material," so I have no indication that there's a lack of interest in my submissions. I've never been flag-killed, and my account has >1000 karma from comments, so I like to think I'm not too abrasive to the community.
So it's starting to frustrate me and baffle me when they continue to get no interest from the community, but no one tells me what they dislike about it.
I'm not going to out myself and name specifics (please don't ask), I just want to ask in general why HN is like this. <comment><USER2> I guess it's just not that interesting to this crowd. I mean you may have been simply unlucky. But it takes some effort to actually go to some link and comment of why you didn't upvote. It would take a high level of "dislike" to actually do that.

New page is full of articles most people just don't care about. I scan it from time to time, but rarely find any title interesting enough to even click on it. This post for example I clicked on only to flag for using a meme in the title. (I didn't in the end, well played...)

Another explanation: the only reason I'd upvote/comment on something is so that more people see it, so that some discussion about it is started. Why should I care to spend time on something I don't find interesting? I'd have to comment about my dislike on 99% of the internet and that's just trolling :)

</comment><comment><USER3> A community gets to a certain size and you're just not going to get that kind of engagement. Besides, many of the people here are probably active over in the places you mentioned and so maybe it just doesn't resonate.

I won't speculate much more because surely someone informed actually has data on lurkers v not here.

</comment><comment><USER4> See: "Tell HN: If your HN submission doesn't get any upvotes, don't worry about it"

[https://news.ycombinator.com/item?id=9864254](https://news.ycombinator.com/item?id=9864254)

</comment><comment><AUTHOR> Bonus question: Should I keep trying, or is it a waste of time and effort because everyone is too busy or apathetic to judge new content that isn't click-baity?</comment>


Development Tools for Scala Language - <AUTHOR> http://vigilance.co.in/development-tools-available-for-scala-language/ <comment><USER2> Also worth adding to the list are Querulous and Configgy, which are (respectively) a database abstraction layer which is optimised for running raw SQL (it's not an ORM, it just abstracts away 90% of the JDBC bullshit), and a config/logging library.

Also, sbt is fantastic. sbt ~test is a cheap form of CI: every time you save a file, your project gets recompiled and your tests re-run; it makes it really easy to get IDE-like error detection out of a simple text editor, and encourages you to write tests for your code.

<comment><USER3> What's wrong with JDBC? Slap a driver in, and then populate the parameters of your statement (basically a query string wrapped in an object that prevents SQL injection attacks) and BAM you're good to go. Iterate through the result set. If you want fast raw (but no food poisoning) SQL it doesn't get much better than that.

I hope your Querulous and Configgy are set up in such a way as to easily avoid SQL Injection?

Or since you're talking about database abstraction, at the other end of the scale JPA is an absolute dream. Very easy to get up and running fast with the right tools (Netbeans used to be good for this).

Just don't touch J2EE with a barge-pole (Java EE 5 is the nice one) and you'll be fine.

<comment><USER2> I find JDBC unnecessarily wordy for everyday usage. Preventing SQL injection with:

PreparedStatement x = dbh.prepare("SELECT * FROM mytable WHERE a = ? AND b = ?");

x.setString(1, "test");

x.setInt(2, 3);

ResultSet xs = x.execute()

while (x.next()) { ... }

... and so on and so forth, is far more lines than I personally think I should need to write. The type system already knows the types of the vars I'm dealing with: why should I have to retell it what they are?

Querulous:

val connection = QueryEvaluator(host, dbname, username password);

connection.select("SELECT * FROM mytable WHERE a = ? AND b = ?", "test", 3) { row => ... }

It's much more concise, it's just as type-safe (and therefore avoids SQL Injection, as behind the scenes Querulous uses a prepared statement), and (to my mind) makes code much easier to deal with.

Each to their own :), but after dealing with a _lot_ of raw JDBC in another project, Querulous has been much nicer to me.

</comment></comment></comment><comment><USER4> Nice list. You could also add

Scalatra <https://github.com/scalatra/scalatra>

a Sinatra-like (ruby) framework.

</comment><comment><USER5> (TBH i've never heard of some of htese:

<http://www.scala-lang.org/node/1209>

</comment><comment><USER6> I always think that Scala lacks a good, deep IDE, but this is a handy list. Thanks.

<comment><USER2> It might be worth trying the ScalaIDE Eclipse plugin - I think it works with Helios now. That said, I had so many issues using it half a year ago I went and learnt to use emacs with scala-mode, which, combined with sbt ~test, has worked out brilliantly.

The only thing I'd really appreciate an IDE for is mass refactoring (my project is at a point now where it's all a bit badly organised).

<comment><USER7> If you're using emacs to write Scala, you should check out ensime: <https://github.com/aemoncannon/ensime></comment></comment></comment>


Join the Engineering Leisure Class - <AUTHOR> https://medium.com/@chrisloer/join-the-engineering-leisure-class-b3083c09a78e <comment><USER3> > Luckily, there's a corner of the Internet dedicated to breaking the link > between "comfort" and money.

The problem with this is that it moves in the wrong direction. You spent all this time learning how to earn more money for your time. Then what do you do after you earn a bunch of money? Figure out how to trade your time for money again, just in different arenas? Why, so you can avoid having to spend more time doing what you specialized in? This isn't the direction of leisure.

The MMM types always are quick to say that they actually enjoy all these little things they do to avoid having to put out more money for daily essentials. Cloth diapering and seems the be the poster-child for these sorts of things. Also using single-blade razors. Working on your own car.

Doing these things properly requires learning more skills. But time spent learning these skills is time not spent engineering. It almost seems more of a irrational reaction against modernity than it does an actual path towards greater impact.

You need to be trading the money you're making through specialization for time not spent learning more skills to be going in the direction of more actual leisure. (what I call "fuck you time". Much better IMO than fuck you money.) You use some of the freed-up time to make more money, and the rest of it towards leisure activities. It's possible for your skill-set to be so valuable that you can maintain ridiculous incomes on, as Tim Ferriss puts it, four hours a week.

Every dollar I can spend on not learning a new skill is a minute I can put towards pushing my flywheel.

<comment><USER4> Sorry, but i cant find a reference to what MMM means anywhere. Im guessing you guys aren't talking about the Moon Miners Manifesto.. or talking about enjoying something "mmm.mmm.mmm"

<comment><USER5> [http://www.mrmoneymustache.com/](http://www.mrmoneymustache.com/)

<comment><USER4> Ahh, there we go, context. Thanks!

</comment></comment></comment></comment><comment><USER6> I've been doing this for 8 years and love it.

I'm married with 5 kids. We live in rural Wyoming (no income tax, bought a comfortable house for $86k). We've always lived well below our income so we have no debt and sufficient savings.

I mostly choose to work on "products". That helps me focus on problems that people actually care about without any of the startup pressures. Although, I've also written several open source libraries that I thought the community might like.

I started by telling my employer that I would only work 4 days each week. I spent Fridays working on a cool idea my brother and I had. That idea proved useful enough to pay the bills so I quit my job.

I'm much more relaxed now and spend better quality time with my kids. In hindsight, it would be worth almost any sacrifice to get to this point again.

<comment><USER7> Quick question since you have a few kids. Is real Wyoming a good place for them in terms of school and future? (really asking, no idea as I live on the other side of the pond).

I work from home so I can move anywhere, and a more rural/calm place, earning less and having more time does appeal to me, but all the good schools here are in the city and I'm not brave enough to risk my kids future on my dreams of today.

<comment><USER6> I think that our local schools are about as good as government education can get. My kids' classes range from 11 to 14 students so they get lots of 1-on-1 time with a teacher. The teachers provide extra challenges for exceptional students. The teachers and school administration are very responsive to feedback from parents. Students graduating from high school with good grades get a full scholarship to the University of Wyoming, if they want it.

Having said that, my wife and I place much more emphasis on independent learning and life experiences than on formal schooling. Because my wife and I have plenty of time, we are able to encourage their education in ways we couldn't if we lived in an expensive city. Our lower living expenses also allow us to take trips and have experiences that we feel are more valuable than book learning.

</comment></comment></comment><comment><USER8> I did this. I advise against this.

I had money saved up, and for visa reasons had to spend a year outside the USA. Seemed like a perfect time to indulge in some risky ideas, especially those which were a little idealistic.

It ended up being incredibly depressing and I got very little done.

It's hard enough to build a product when you're in a startup or a smart team. In my opinion it's nearly impossible if you're going it alone. And unless some of your friends have an exactly coincidental amount of leisure time or extra energy, you probably won't make progress.

It's especially bad if you're taking on something that you think is good for the world, because now you have extra pressure, but no extra motivation.

Plus, things that are good for the world tend to be _products_ , and not just tools. Those are harder.

I know _you_ , the reader reading this, are exempt from this, and you're an island of personal productivity that needs no human inputs. That's how I used to think, too. Or at least, I told myself that I was more capable than others who said the same thing and who similarly failed.

The main problem is that you think you're freeing yourself from distraction and you're just going to have 100% of time to work on something. But in the process you might also free yourself from people to tell you you are overbuilding, from customers to tell you you're doing it wrong, from the social interactions that make the day brighter. And you might feel the urge to keep it all behind the curtain until The Great Unveiling. This has the effect of making all your small progresses, in the meantime, feel useless. Success recedes further and further away, and human emotional feedback loops don't usually work in those situations.

So I suggest if you're going to use your money and time this way:

\- Take on something small. REALLY small. Then cut it to 10% of that size. Then release it. Iterate if it seems to be working out and building a community.

or:

\- Be very young and with enough privilege to not have to worry about debt. You have leisure time, few expenses or commitments, and extra energy, and so does almost everyone you know.

or:

\- Make sure others are invested in your success and have a commitment to it that's at least in the same order of magnitude as your own. A funded startup is a wonderful way of focusing commitment like this, and ensuring that you have to talk to people all the time. But there are other models.

<comment><USER9> I did this too, and I agree. IMO anything worth doing is non trivial. The project I took on had some really hard parts. Example: something akin to defining a relational schema for maintaining a model of c/c++ source code, before and after preprocessing (not exactly, but same idea minus the difficulty of parsing c++). This was one of about 5 'hard' problems. I got bogged down, and with no one to bounce ideas off, I became trapped in 'analysis paralysis'.

I gave up after 8 months and got a job. Now all I have to show for it is some source code, and a gap on my resume to explain.

<comment><USER10> I'll have to respectfully disagree with the idea that "anything worth doing is nontrivial." This might certainly be the case for you, but I would love to just spend some time learning Haskell, writing an OS for fun, reading papers on Theoretical Computer Science, or trying to find security exploits.

I don't think these things are hard, at least they certainly aren't things I would doubt myself to be able to do. These are just things I'm sure I could do today if only I had more time, and at least to me these are definitely worth thing for one reason: they make me happy

<comment><USER11>
        > I would love to just spend some time learning Haskell,
        > writing an OS for fun, reading papers on Theoretical
        > Computer Science, or trying to find security exploits.

What you describe sounds like what students do in a university. Maybe you should consider another degree in CS?

<comment><USER10> Indeed I didn't finish my degree and would love to go back and even get a PhD! But.. it doesn't make much financial sense right now, especially when you consider that the earlier you save and invest the better the outcome, so I'm waiting till the time is right.

</comment></comment></comment></comment></comment><comment><USER12> "An engineer earning an amazingly-not-uncommon salary of $100k/year ends up living in an expensive place like San Francisco, starts spending money on some admittedly lovely luxuries, and quickly becomes convinced that her spending is just about right for a comfortable life."

Certainly, one way to manage all this is to not live in a place like San Francisco. But I think it is important to make sure people know that lovely luxuries aren't really what forces people with families to focus on money, and that if you do try to raise a family in SF on the median developer's pay (about $114k a year in SF), you'll find engineers don't really have "more money than <we> need", though of course there's always a version of poverty or struggling that would make raising a family on $114k in any expensive city a cakewalk.

Just keep in mind, the median price for a house here is over 1 mil, and that 1 mil will get you a 2br, maybe 3, south of 280 or maybe the outer sunset. OK areas. Full time childcare is about $24,000 a year. Those are really the whopper expenses (that and health care).

Are those "lovely luxuries"? Well, maybe living in SF is a lovely luxury. I like it here, though I'm really here because I grew up here, have two kids in school, and have so much family around that I'm sort of superglued at this point. But yeah, I could leave. All in all, I think there are better places (no, I'm not like some pac northwester trying to get you scared of the rain, if it's your choice to live here you should be welcome in SF, but I really do mean this, I'm really not sure SF is worth it if you have the option of living somewhere else).

I'm not trying to be hard on the author of this piece, but I do think it's important for people to know that engineers in SF even in dual income families struggle with housing and child care payments, not with luxury cars, expensive vacation, lovely luxuries.

<comment><USER13> > I'm not trying to be hard on the author of this piece, but I do think it's > important for people to know that engineers in SF even in dual income > families struggle with housing and child care payments, not with luxury > cars, expensive vacation, lovely luxuries.

Choosing to work in a locale where a median home price is a million dollars is a luxury. Engineers could pick from other metro areas, and get fairly close to $100K/year with much lower costs of living (Austin, Dallas, Durham come to mind, there are many more).

<comment><USER14> Most of my family is here in SF. Since when is "living near your family" a "luxury"? Fuck that.

<comment><USER15> When it is a _choice_ , and other people do not have that choice because of their ability to pay for it.

</comment></comment></comment></comment><comment><USER16> Something to consider is risk. Here's what goes through my head: I can plan for how much I need to earn throughout my life if everything is "normal" and predictable. But what if one of my kids is born in need of some monumental amount of care? What if something happens to my own physical / mental health, or that of my spouse? What if the economy goes into a long term downturn and we have to live on savings indefinitely? What if we have to leave the country due to political turmoil? (One of my parents is a refugee).

Thinking about these things made me kinda appreciate why the rich want to get richer. Even if I'm earning more than strictly necessary for subsistence under normal conditions, our economy / society is set up so that the only source of a safety net for my family is my own productivity right now. I wouldn't mind growing that safety net to infinity, so long as it imposes no externality on my own family. This is what keeps me in the rat race.

A better safety net would make people think less about going to such extremes.

I'm lucky to have a mentally rewarding job with minimal "price" in terms of things like office politics and bullshit. My opinion might change if this situation changes.

</comment><comment><USER17> I am currently doing this. I am much more productive compared to having a corporate job, but it is really hard on your family. There seems to be an arms race on doing everything for your kids these days. That means moving to a good school district (usually in very expensive places), paying for and driving to tons of activities, organic food, nice stuff. I have realized none of these things are possible while we are living off savings.

That said I feel much happier now being able to focus on a project that is my own creation. I was frequently angry everyday I had to split my time between paid work and my own project, leaving even less time for my family. (To be honest, in terms of total work, I got more done, but was miserable.) I frequently think about the consequences if my project ends up being a failure, but if I never tried to create something on my own, I'm pretty sure I would regret it on my deathbed.

My advice is to do this engineering leisure time before you have a family to support.

<shamelessplug> If anyone wants a preview of what I'm building, please check out [https://solveforall.com/](https://solveforall.com/). It's a hackable search engine that can be enhanced with user-provided data, programs, and third party APIs. I'm currently working on making it much more customizable and private, so hopefully I'll be able to publicly announce it in a 2-3 more months. </shamelessplug>

One problem as mentioned in another thread is that it is very hard to get feedback while working alone. Everyone is so busy these days caught up in the rat race and their families, and I don't blame them. It would be nice to have some tech friends at work to bounce ideas off of. If anyone has any feedback for me, I'd greatly appreciate it!

<comment><USER18> Try telling us about your projects and updates on Glitch Club, this is exactly what it's for: [http://glitchclub.com](http://glitchclub.com)

<comment><USER17> Sorry, I'm a bit old school in that I prefer text over videos, and desktop apps over mobile. Text on desktop can more easily be edited and perfected before being sent out. I like the idea of a community feedback platform though -- would definitely use it if it were multiplatform.

<comment><USER18> Yeah it's for desktop and mobile. Desktop for browsing and watching and listening, and take your phone out of you want to add your voice.

</comment></comment></comment></comment><comment><USER10> This is actually exactly what I want to do, although I just started working so for obvious reasons it isn't a reality yet. How long does it take to save up enough money that you wouldn't need to work though?

Also, it seems like eventually you'd run out of money unless you can just retire early, in which case, you have the issue of explaining why you've been out of work for so long and proving you still are up to the task.

The last issue I have is that things I want to enjoy in my leisure time are costly. For example, I'd love to finish my degree and study music, but these things cost money. I want to continue studying piano, but pianos cost money, getting a house costs money, and lessons cost money. I'm sure I would still program and do projects, but it's not the only thing I happen to enjoy. Maybe not everyone has expensive hobbies like I do but I bet a lot of people, for whatever reason, want kids. Those things are expensive!

Also, I take issue with the author assuming that we spend money on luxuries just because we make more. At least for myself, this is not true at all. I've had jobs that were very stressful, and getting things I liked was my means of destressing and justifying staying at my job instead of just becoming a teacher or something (Not that teachers don't have stressful jobs, I just wonder if I'd enjoy it more). I think I'd have trouble keeping some jobs if I couldn't enjoy spending some of what I made.

<comment><AUTHOR> \- On how long it takes to save up enough money that you don't need to work: depends on your assumptions, but yes it takes some years of work. There are lots of people who write on this, I especially like: [http://www.mrmoneymustache.com/](http://www.mrmoneymustache.com/)

\- I don't personally have enough money to pay for my current living expenses for the 70-odd years I hope to remain alive. It was an important shift for me when I stopped thinking this was necessary. I have enough money to glide for several years, and I'm confident that either some money will come my way during those years (and I believe it's a little easier to make money when you're not worried so much about it), or I will at least have enough time to notice I'm running out and adjust course. I'm not too worried about the "hole in my resume". If you do interesting stuff with your life, you'll always have a good story to tell. Maybe your story isn't optimized for going up a certain career ladder, but who cares?

\- I don't think luxuries are bad, and I think you spending money on a piano could be an awesome use of your time on earth. I just think we don't realize quite how many choices we have. I know lots of poor musicians find ways to get access to pianos, and owning a house out here in 29 Palms is certainly not too costly. But that doesn't mean you have to do it that way!

\- I also spent more money while I was working long hours in part to "de- stress". While I don't think it was strictly necessary, I don't think it's crazy. It's just useful to remember that those "de-stressing" costs disappear when you leave the stressful situation.

<comment><USER19> Wow, you live out in 29 Palms? I grew up in Yucca Valley.

You can live pretty cheaply out there but you also have to deal with all dumb crap out there. It wasn't very pleasant growing up in the schools there.

<comment><AUTHOR> We're still a few years off from worrying about schools, but it is the sort of thing that makes us _toy_ with the idea of some variety of home-schooling. I'm sure there other nuisances around, but I'm a desert rat and I think this place is absolutely beautiful (although my opinion of the desert usually dips a little in July and August).

</comment></comment></comment></comment><comment><USER20> Why should we assign "meaning" to leisure? Why does everything you do have to be meaningful? Reminds me of a lyric from Cat Power - Metal Heart: "How selfish of you to believe in the meaning of all the things you do."

<comment><USER21> I think we assign "meaning" to leisure so we give it as much value as our work. Gaming ourselves to respect leisure more.

I.e. The itch we instinctively don't bother scratching when we are too busy working. We need to value that itch so we take the time to scratch.

</comment></comment><comment><USER22> Engineers don't make _that_ much money. Yes, I live a middle-class lifestyle. But even without owning a car, not having a child, etc. After saving for retirement and eating healthy food, I simply don't have that much savings to start any business that requires a decent amount of capital to get going - <USER2> least not without burning through everything fairly quickly. At most I could take a couple of months off and destroy that savings the buffer against job loss and other emergencies.

I don't get why the world thinks software engineers are so rich...

<comment><USER23> >>But even without owning a car, not having a child, etc.

>>I don't get why the world thinks software engineers are so rich...

Last year I lived in Austin TX, owned a car, ate healthy, lived 15 minutes from the city center and made 29000 before taxes. Of which I managed to save 15000.

The world doesn't think software engineers are so rich, we think anyone above 50K is rich, because for a lot of us thats double what we make a year, and many of us are supporting families on that. The idea that some one making 75-100k could be living paycheck to paycheck is fucking baffling to the half the population making less than 42k per household.

<comment><USER24> What's happening is that upper-middle class families _really do_ run out of money after saving for college, sending the kids to private school, both driving two new cars, and so on. They think of those things as _basics_ and forget that those _basics_ are unattainable to most.

<comment><USER25> Note that "saving for college" means "saving to pay for their kid's tuition AND ALSO pay for the financial that goes to a family earning $50k/yr".

And two cars (not necessarily new) because both parents are driving to work.

And property tax that pays for public school for kids of less real-estate- wealthy folks

Also marginal tax rate (Federal, state, social security) of ~30-40% on the difference in income.

<comment><USER24> You can't list those first three things and then _also_ -in the last one. The last one encompasses the first three.

<comment><USER26> That is incorrect. Tuition and property tax is not the same as income tax.

</comment></comment></comment></comment></comment></comment><comment><USER27> It always drives me crazy when people that make 50k+ a year complain about not having money. I live on about $500-$600 a month and I'm fine. Granted, not everyone is ablebodied and living within biking distance of their school/work, but most certainly could be, especially with a little effort.

Not needing money is incredibly liberating, I advise everyone to just try it for a year.

<comment><USER28> I agree with you. My current life style ends up around $7,000 a year. I live in a very affluent mid-east city. I don't own a car (15 minute walk to downtown), I don't eat out constantly (I prefer healthy meals), and I don't buy a bunch of luxury junk. I can honestly say that I do not feel like I'm struggling at all.

Having the 'standard' car, house, and family are unnecessary luxuries. It's fine if you choose to do these things but it's silly to me that people feel poor making 50k+. I would argue that if you are struggling with those types of income, your lifestyle is severely out of whack. You don't have to keep up the Jonses to lead a very happy, healthy life.

The benefits of living cheaply are pretty obvious and already pretty well covered. The ability to work on whatever I want, whenever I want all without ever having to think about the personal finance side of it, is just incredibly freeing.

</comment></comment><comment><USER29> The author obviously doesn't live in London. I could never afford to pay rent without a job.

The article is idealistic bullshit.

<comment><USER30> So relocate to bumfuck, england and do your work there. I don't think the idea is to ditch your job and still pay $3000 a month for an apartment.

<comment><USER31> What work? There are no jobs in Bumfuck, and not enough companies that hire remote workers for this to scale.

As i understand it, the situation in the US is that there is Silicon Valley, where the salaries are high and the rents higher, and then half a dozen other places where there are significant concentrations of software jobs, and more reasonable living costs.

This is not really the case in the UK. There's London, there's a ring of big corporate offices just outside London (Guildford, Cheshunt, places like that), and that's more or less it. You pretty much need to live in London or its commuter belt to work non-remotely in software.

<comment><USER32> You're mistaken about how easy it is to find remote developer work. Upon moving to bf Lake District, I had no trouble picking up a gig for an American company at my Bay Area rate.

There are enough companies hiring remote workers these days that I can't understand why _anybody_ in England continues to put up with comically low and out of touch with reality London rates.

<comment><USER31> Are you seriously trying to generalise from your experience as one person to an entire city?

There's certainly enough remote work going for you to find a job. Or for everyone reading this page to do so. But there are over 100 000 people working in IT in London. Are there 100 000 remote jobs available?

<comment><USER32> Remember, we're not trying to find remote jobs for everybody in London. Only enough for the ones smart enough to move someplace nicer and take a job with an American company.

Also keep in mind that _every_ developer job is a remote one. It may not be advertised that way, but if you've proven that you're good at what you do and you decide to move out of your felt cube and claim back your quality of life, your company will find a way to accommodate that (if they're smart enough to do the simple arithmetic to calculate what it would cost to replace you in this market).

<comment><USER33> There is going to be a tipping point if London property prices continue to rise. There's no point in having a start up in, say, Shoreditch if you can't afford to pay living salaries to people to work there, so either you a) move somewhere the salaries and office space is cheaper or b) you go remote and increase your talent pool. There's quite a few startups that have to be in London (e.g. they work in the finance industry) but there's likely more than a few that really don't need to be.

</comment></comment></comment></comment></comment></comment></comment><comment><USER34> Its nice to see a name for this. I am considering joining the Engineering Leisure Class this winter. My wife got a new job which will comfortably support our family, so I will have some flexibility. My plan is to look for jobs also, but only apply for ones I would love.

If that doesn't work out then I will find something fun to do that may not pay. This will be some combination of taking Tactition Programming seriously, and working on open source lab specific software that my wife uses for crystallography.

</comment><comment><USER35> > You're not limited to small ideas, either: part-time volunteers in the open > source community have built huge parts of the modern world.

Am I wrong in thinking that, in fact, all major open-source projects continue to thrive because there are big established companies supporting them? Where corporate support is lacking, the project doesn't do too well in the long term (I'm mainly thinking of the OpenSSL case from a few months back).

</comment><comment><USER36> The RMS lifestyle - get a $1m grant or two, then work for free!

<comment><AUTHOR> Haha, he's a pretty impressive example of independence, although I don't think either the million dollars or the parrots are truly necessary!

<comment><USER25> RMS is not independent. He is interdependent. He relies heavily on the community for housing when he travels.

<comment><USER11> Who is RMS? First results on Google are "root main square" and "Risk Management Solutions".

<comment><USER37> Fourth result and first person (at least for me) on Google is Richard M Stallman.

</comment></comment></comment></comment></comment><comment><USER38> Two words make this difficult. Health Insurance.

<comment><USER39> Not with the ACA... now if you retire and only have income you draw from your investments, you pay a low income based rate even though you may have significant assets.

<comment><AUTHOR> Yeah, I think ACA is a huge supporter of this kind of move... although I planned to get an exchange plan, I ended up marrying a member of the US Navy, so I get covered by Tricare. I know, not everyone has that luck (or lots of other luck I enjoyed)...

</comment></comment></comment><comment><USER40> While I'm sure this sounds great in theory, I can't help but interpret this as coming from someone who is lucky enough to have the privilege of not being broke.

If you're part of the lucky privileged elite that actually _has_ money to burn, then yeah, go for it. For the rest of us, though, saying "you should stop working for a paycheck so you have more time to do other things" basically translates to "you should stop eating, drinking water, and breathing oxygen so you have more time to do other things", which is plain nonsensical unless one happens to be a robot (which, while I'd love to be a robot, isn't really in the cards right now).

</comment><comment><USER41> We aren't rich by any means... Don't start thinking about dropping off the face of the earth or going into philanthropy if you still only have a 6 figure bank account, like many of us do... Also don't forget about what happened in 2000. Engineers should probably work more but spend less money because things aren't so easy in less favorable conditions

</comment><comment><USER42> How many kids do you have, Chris? :-)

<comment><AUTHOR> One kid is on the way -- and yes, I have no idea how children are going to affect our lives! I've considered going in two totally different directions: I might go for a high-paying full-time job so that my wife and I can pay for a nanny and all those other modern affluent child-raising tools, or I might try to go full-bore stay-at-home Dad changing diapers and raising the kids to grow their own food in the backyard and make their own clothes. More likely I'll muddle somewhere in between, but I want to go into it with as many options as possible, and a clear idea of what we want for ourselves and our kids.

<comment><USER43> If you are considering the in-between with kids and work, remember that managing the in-between has it's own logistical overhead (== costs).

For example, if you have a nanny part-time, you will have to figure out nanny taxes - assuming you're doing it the legal way - or pay an outside party to manage the nanny's payroll.

That overhead may be easier to justify when the nanny is allowing you to work a full time high paying job, less so if the nanny is only coming a couple days a week. In this case, you might consider a part-time day care center instead.

And unless you have a lot of energy or hired/family help, you will be so tired in the first few years of your child's life that you likely won't have the energy to do anything beyond growing a few token tomatoes and potatoes, certainly nothing at the scale needed to make a dent in a family's food costs.

For clothing, tap your friends-with-kids network to get into the hand-me-down stream. Babies and toddlers grow out of clothes faster than they can wear them out, and new clothes are $$$.

</comment></comment></comment><comment><USER18> This is exactly what I'm building with Glitch Club. It's a community of talented engineers who could be creating great things if they had the support of others and the community feedback on their work daily. Check it out:

[http://glitchclub.com](http://glitchclub.com)

At the moment I'm exploring other directions with it, such as having it as a story telling platform, but the original idea was a startup/engineering sounding board. With reply videos able to be added to the existing videos there, and smart conversations happening through video replying to video.

</comment><comment><USER44> Living comfortably on little money is a skill. MMM calls it the "frugality muscle". If you don't understand how to do it, it's not because it's impossible. It's just that you haven't learned how.

In parallel to the skill acquisition there is a change in mindset, replacing the ideal of comfort with the ideals of strength and self-sufficiency.

</comment><comment><USER45> I would much prefer working part-time in traditional money earning avenues, and spending my other 20-30 hours of energetic time on the projects/activities I personally want to work/play on. I just wish there were more opportunities for high value part-time work.

</comment><comment><USER46> If you are an engineer working at a company, I'd expect that the resources provided by the company and the access to coworkers make you more productive. If you think you would be more productive on your own, this may be a sign to change employers.

</comment><comment><USER47> Few things:

\- Depending on what kind of problems you enjoy solving, you're going to be miserable even if you are able to do this.

I love working on my own at times (exploring new concepts and ideas, new languages, or even "toy projects" with no real-world applications), but in the end, I find working on bigger problems, with a team of great people to be a lot more fulfilling.

\- Constraints are useful in that they force you to rely on something other than pure will power. This can go both ways: _if_ you are going without a regular source of income (as opposed to retiring after winning the [startup] lottery), you'll need to sacrifice time for money. On the other hand, a full time job provides a good deal of constraints as well (both for what you do _at_ work and what you do outside of work hours).

Gene Wolfe[2] kept a full time job and wrote an hour each day. That had two constraints: he didn't need to rush or alter his work in order to sell (his books are fulfilling and rewarding but not a "easy, fun read" that brings in great royalties right away) and since he only had an hour each day to write, he knew he had to make the best of it (one thing said about him, is that he doesn't waste words: he's got a whole CNC machine milling Chekhov's guns...)

\- Burnout is an entirely different matter, one shouldn't generalize from "this helps deal with being burnt out" to "drop everything, do this, and you'll never be burnt out."

\- Finally, it isn't a feasible option for most:

First, one can't insure against economic catastrophe, savings and a low burn rate are great, but ultimately the _only_ financial insurance one is there ability to earn an income[1].

That ability is predicated on ability to contribute and the amount of people willing to pay for your contributions. In other words, if you're a great developer and you live (or can relocate to) a fluid job market, your risks are lower than those of an average developer (note: assuming a normal probability distribution, 50% of developers are _below_ average, and most fall within a standard deviation of average...) in a less fluid job market.

Areas with fluid job markets tend to have higher costs of living. Unless one is extremely talented (and in many cases, even if that is the case), one doesn't become a great cut above average overnight. One generally starts off with a job in an area with a fluid job market (hence greater expenses!) and over the time develops ties to the area (friends, family, pets, etc...) and can't easily drop everything to move to a cheaper area for their "leisure time" and then -- if something goes wrong -- easily return to the area to take advantage of the fluid job market.

All else being equal, a developer of equal skill, in an equally fluid area, that did not "take a year off" will hired over one that has, _unless_ they've done something extra-ordinary with this time. Best prediction of being able to do something extra-ordinary is... having done something extra-ordinary. So at the least, do something extra-ordinary on a smaller scale _first_ before going full-time on it. Zuck and billg didn't drop out of Harvard with a blank emacs window (in billg's case, perhaps it was a TECO window, not sure if TECO EMACS was around in his days...).

\- In a capitalist system, money does one thing well: if you have more money than you have a use for, you can give it to someone who has the time to make the most of it. Marginally, a dollar spent donating to someone _very good_ working on a project I care about (a programming language, infrastructure for open source projects, a social cause, etc...) goes _much further_ than a dollar "spent" by foregoing income to work on most of those projects full- time. As for the exceptions to this, I can usually incorporate them into full- time jobs.

Conversely, I'd suggest this heuristic:

1) Can you afford it without putting people who rely on you into jeopardy? (Are you going to demand that your wife end a rewarding career to move to a cheaper area with you? Are you going to make your kids move to an area in inferior schools? If either is true, stop right there and then...)

2) Marginal value of dollar spent metric above: if someone can do a better job with the same resources, help provide the resources for them. Concrete example: since my username doesn't begin with a 'p' and end with a 'g', money I contributed to Clojure project (when it was in dire financial straits) probably had more impact in creating a Lisp-1 with a good macro-system than if I were to quit my job and work full-time on a Lisp-1 (likewise, while pg can afford to literally work on anything he wants to, he chooses to invest[3] in teams capable of building things he careers deeply about, but isn't quite good at building himself).

Otherwise, try to make the "leisure" activity part of your day-to-day job as well.

3) Otherwise, if you can do something awesome with your time -- you probably don't need someone named after a function that may never return in a memory- unsafe language's standard library to tell you that :-)

[1] Investments under-writing "early retirement" may collapse. "Social insurance" such as universal healthcare, pensions, unemployment benefits, etc... can be voted or sued out of existence.

[2] If you're an SFF fan, pick up Gene Wolfe's Book of the New Sun tetralogy sometime, but be warned that once you start, your dreams of doing anything else with your time will be over.

[3] Investing is not the same thing as donations, but I don't believe any angel/seed investor invests purely for the money.

</comment><comment><USER48> i have been pondering getting a high salaried job in sv for 1-2 years living out of my car and office and saving 90 percent of my salary to live nicely anywhere else in the country.

<comment><USER49> Reminds me of this article :) [http://www.dailymail.co.uk/news/article-2750652/Former- Googl...](http://www.dailymail.co.uk/news/article-2750652/Former-Google- employees-brag-long-lived-work-rent-free-thanks-tech-giant-s-awesome- perks.html)

</comment></comment><comment><USER50> > We're used to thinking of leisure in the narrow sense of "use of free time > for enjoyment," but leisure can be more meaningful if we focus instead on > its broader definition as "opportunity afforded by free time to do > something."

Stop coupling "enjoyment" with "non-productive".

<comment><USER10> How did the author couple enjoyment with nonproductive?

It seems like the opposite considering he's advocating working on an idea for no pay, which is something you'd only do because you enjoy it and can easily be seen as being productive.

<comment><USER50> > How did the author couple enjoyment with nonproductive?

By considering "use of free time for enjoyment" too narrow. Supposedly because he thinks that "meaningful" is distinct from "enjoyable".

<comment><AUTHOR> I'm sorry if I phrased that sentence wrong. I certainly don't think "enjoyable" things are "non-productive". In fact I think that the things we truly enjoy are likely to be some of the most productive things we do.</comment></comment></comment></comment>