Superpowers, a collaborative HTML5 2D and 3D game maker, is now open-source - <AUTHOR> http://superpowers-html5.com/index.en.html <comment><AUTHOR> Just remembered I wanted to update the website with some links to the many awesome open source projects we've built upon. Just to name a few right now:

Our game engine is a thin layer on top of [http://threejs.org/](http://threejs.org/). Our real-time collaboration is powered by [http://socket.io/](http://socket.io/) (WebSockets). Everything is written with [http://www.typescriptlang.org/](http://www.typescriptlang.org/), [http://jade-lang.com/](http://jade-lang.com/) and [http://stylus- lang.com/](http://stylus-lang.com/). The app is powered by Electron / Node.js. We use CodeMirror, Browserify, Gulp, Express, lodash and too many other awesome npm modules to name them all.

Thanks to the community for all the cool stuff we were able to reuse :)

</comment><comment><USER2> As someone who was inspired by game development to become a programmer I must thank you. When I was in my early teen years I remember getting a bunch of programmers and artists together to try and pump out a game called "Because of War." While it never took off, I still have those assets (models, environments, music scores) and have given them to people to use in their own projects. I remember compiling my game for the first time and my OpenGL shaders being wonky but resulting in a cool effect and I ended up leaving it. Game development is truly interesting, it's 90% creativity and 10% implementation whether you're on the artist side or programmer side (Think Crash bandicoot on Playstation).

Unfortunately I lost contact with many of those friends but it helped me become what I am today. Game development is a great way to get creative minds going and link the creativity of programming to those who haven't discovered it yet.

<comment><USER3> So, you've worked in game development other than your attempt as a teenager? If not then how can you say "it's 90% creativity and 10% implementation" with any authority?

<comment><USER4> Maybe you took his user name too seriously...

<comment><USER2> That happened. :p

</comment></comment></comment></comment><comment><USER5> I would love to see a compare-contrast between Superpowers and Phaser. I've used Phaser in the past and found it to be a good tool for some game projects and pretty frustrating for others.

</comment><comment><USER6> This is neat. Here's the demo game, showing what the maker is capable of: [http://sparklinlabs.itch.io/discover- superpowers](http://sparklinlabs.itch.io/discover-superpowers).

To OP: seems like I can jump through walls in the sample game.

<comment><AUTHOR> Ah, can you explain how? We have a check for the contact normal ([https://github.com/superpowers-extra/discover-superpowers- ga...](https://github.com/superpowers-extra/discover-superpowers- game/blob/18923c2030a73f7a1b10c0266165142623bfd515/assets/Behaviors%20\(2\)/Player%20Behavior%20\(3\)/script.ts#L35)) so you shouldn't be able to jump multiple times while walking towards a wall as was once possible.

<comment><USER7> All I can see is the ability to jump just before the doorway to hop over whatever it is that triggers the transition to the next room and be stuck past the door.

</comment></comment></comment><comment><AUTHOR> Giving it another shot since it didn't take off when I submitted it a few days ago. Quoting my comment on the original submission ([https://news.ycombinator.com/item?id=10864402](https://news.ycombinator.com/item?id=10864402)):

Hi! I've been working on live collaborative game development software for about 4 years (some of you might remember me from CraftStudio). For the past year and a half, we've been working on Superpowers with my two friends Bilou and Pixel-boy and now we've open sourced it, as promised back in March when we launched early access for supporters.

Superpowers at its core ([http://github.com/superpowers/superpowers](http://github.com/superpowers/superpowers)) is more than a game maker. It's a generic collaborative client/server Web app for building all kinds of projects. A project type is defined by what we call a system, and you can have any number of systems installed on your Superpowers server.

We spent most of the last year building the core along with a system called Superpowers Game ([https://github.com/superpowers/superpowers- game](https://github.com/superpowers/superpowers-game)), which is a TypeScript game engine built on top of Three.js along with a bunch of collaborative asset editors.

Now that the platform is maturing, we've started work on other systems. For instance, Superpowers LÖVE ([https://github.com/superpowers/superpowers- love2d](https://github.com/superpowers/superpowers-love2d)) lets you build Lua games for the LÖVE framework. Demo: [https://i.imgur.com/yLybycP.jpg](https://i.imgur.com/yLybycP.jpg)

Another example: Superpowers Web is ([https://github.com/superpowers/superpowers- web](https://github.com/superpowers/superpowers-web)) a Superpowers system for building static Websites. We've used it to build the official website ([https://github.com/superpowers/superpowers- html5.com](https://github.com/superpowers/superpowers-html5.com)) in real-time collaboration. We have plan for a "Superpowers Node.js" system, and hopefully the community will embrace this extensibility and build cool tools for all sorts of engines and creative endeavours.

You can find lots of pictures of the app in the release notes: [https://github.com/superpowers/superpowers/releases](https://github.com/superpowers/superpowers/releases) and many games made with Superpowers Game here: [http://sparklinlabs.itch.io/](http://sparklinlabs.itch.io/). The devlog album has cool stuff too: [http://imgur.com/a/NdIuH](http://imgur.com/a/NdIuH)

<comment><USER8> As someone in a similar space (libGDX creator), i wonder how you finance development. Could you give insights on that?

<comment><AUTHOR> Hi! I heard great things about libgdx :)

During our 10 months of early access, we had a recurring / one-time support option on the website. We got (very roughly) about $1000 from that thanks to many generous people. After taxes and all, that doesn't leave much but we are pretty frugal, we live and work together so we've been able to afford it so far.

We're hoping to make a decent living with a mix of donations (we just setup a Patreon - [http://patreon.com/SparklinLabs](http://patreon.com/SparklinLabs)), maybe some sponsors? as well as part-time contract work around Superpowers or game development in general. If it doesn't pan out, well, we're very happy with what we've been able to accomplish so far, so we get to keep that! ^_^

<comment><USER8> Sounds like a plan :D Wishing you the best of luck, Superpowers looks promising!

</comment></comment></comment></comment><comment><USER9> Awesome, it uses TypeScript. Biggest reason I avoid Phaser is because it's always short on type definitions, especially at updates.

Nice to see this being written from scratch in TS(?).

<comment><AUTHOR> We actually started with CoffeeScript 15 months ago, because TypeScript wasn't quite far along yet (I don't quite remember why, but we definitely considered it and said "maybe later"). We also started by writing our own scripting language for games... and then after a few months of development we converted the whole codebase to TypeScript and we haven't looked back ^_^

Seems like Phaser's developer initially considered TypeScript but felt it was too early at the time too: [http://www.html5gamedevs.com/topic/13599-reconsidering- build...](http://www.html5gamedevs.com/topic/13599-reconsidering-building- phaser-3-in-typescript/). It looks like he's decided to go with Babel for Phaser 3 / Lazer: [https://github.com/photonstorm/lazer](https://github.com/photonstorm/lazer)

<comment><USER10> At some point WebAssembly will mean you can rewrite it in any language.

</comment></comment></comment><comment><USER11> Video introduction: [https://www.youtube.com/watch?v=T7XoWWvGPd4](https://www.youtube.com/watch?v=T7XoWWvGPd4)

</comment><comment><USER12> Superpowers is shaping up to be something really incredible. I'm so glad that Sparklin Labs has decided to open source this project. It really iterates on what made CraftStudio special. I just hope I have enough free time to do some hacking on it soon!

<comment><AUTHOR> Thanks, that's very nice :)

</comment></comment><comment><USER13> This looks really great and I am definitely going to be giving it a solid try!

If I could nitpick about something...it really bothers me that all the links on that page open in a new tab! Ahh! It shouldn't matter, but I just found it a little frustrating. /rant

<comment><AUTHOR> Good call, fixed! :) [https://github.com/superpowers/superpowers- html5.com/commit/...](https://github.com/superpowers/superpowers- html5.com/commit/b771016a4b109f37828de3c2ff80b874c0b3913f)

</comment></comment><comment><USER14> Nice, gonna give it a try. Is there anything that the scene builder can do that scripting cant?

<comment><AUTHOR> Nope, the scene editor is just a way to setup a "recipe" of actors with their transform in space and pre-added components so you can load them all at once when needed. Very useful, but you can definitely do the same in code instead.

</comment></comment><comment><USER15> cool</comment>


Ask HN: How do you guys backup your Linux servers? - <AUTHOR>

I recently put an Rails app into production on a Digital Ocean VPS. I'm using their automated backups, but just in case something happens to their backups I want to keep an extra set of backups for myself. How should I go about this? Should I backup the entire Linux box or just stuff that changes frequently like the database? <comment><USER2> [https://github.com/bup/bup](https://github.com/bup/bup)

bup is the awesome.

It's quick, and does space efficient snapshots. Supports remote operation through ssh (backup remote server locally, or local server remotely). Uses git as backend. Has FUSE, Web and ftp backends.

</comment><comment><USER3> I use rsync via ssh for that scenario and I backup the stuff that isn't provided by the VPS, that is usually a list of installed packages, a dump or snapshot of the database and the relevant deployed files.</comment>


The 10-page diversity manifesto and need to look deeper - <AUTHOR> https://medium.com/@MichaelBabich/the-10-page-diversity-manifesto-and-need-to-look-deeper-84f62bcbf266 <comment><AUTHOR> Interestingly, reaction to the manifesto by itself displayed pretty clearly social temperature as to public reaction to a male employee that shared his feeling of inequality.</comment>


Organic mega flow battery promises breakthrough for renewable energy - <AUTHOR> https://www.seas.harvard.edu/news/2014/01/organic-mega-flow-battery-promises-breakthrough-for-renewable-energy <comment><USER2> I initially upvoted this but after clicking through realized it was about older research from 2014.

Here is the new-and-improved version from the same research group that was published just a little while ago:

[https://www.seas.harvard.edu/news/2017/02/long-lasting- flow-...](https://www.seas.harvard.edu/news/2017/02/long-lasting-flow-battery- could-run-for-more-than-decade-with-minimum-upkeep) [http://pubs.acs.org/doi/abs/10.1021/acsenergylett.7b00019](http://pubs.acs.org/doi/abs/10.1021/acsenergylett.7b00019)

Most battery research stories aren't significant. Either they are very minor improvements on past technologies, they require excessively rare elements, they require nanostructures with no clear path to industrial scale manufacturing, or they have poor lifetime. (Those objections weed out about 90% of battery research papers.) This Harvard group is one of the few publishing research that passes all those "meh" filters and actually interests me.

Another actually interesting battery chemistry:

[http://www.pnas.org/content/114/5/834.abstract](http://www.pnas.org/content/114/5/834.abstract)

"High Coulombic efficiency aluminum-ion battery using an AlCl3-urea ionic liquid analog electrolyte"

Ok lifetime, good efficiency, _super_ abundant and cheap materials. This would be great for large scale grid tied storage if they can boost the lifetime a bit more.</comment>


Consensual Hugs Seem to Reduce Stress - <AUTHOR> https://www.scientificamerican.com/podcast/episode/consensual-hugs-seem-to-reduce-stress/ <comment><USER2> Hmm, the study didn't hand out hugs, but merely correlated people who'd happened to have received them. The study authors already note that "Individuals who report perceiving the availability of a network of supportive individuals tend to show better adaptation when faced with stress." People with a support network are doubtless more likely to be hugged. Therefore it's not clear to me that the hugs contribute anything, or that any attempt was made to control for this - a classic case of "study measures correlation, headline reports causality".

<comment><USER3> Good observation

</comment></comment><comment><USER4> I feel like non consensual anything adds stress. One of my least favorite things is being hugged by people I work with and I always feel awkward turning down a co worker.

<comment><USER5> Why are you hugging your co-workers?

<comment><USER6> Some people lean toward the hug as a greeting or farewell, especially women. As a woman who doesn't like hugs, it's very uncomfortable for me. I used to work at an agency, and sometimes we'd even end up hugging clients after a big meeting.

<comment><USER7> Hang on for an uncomfortably long time and you'll get fewer hugs in the future. (assuming the hugger is just a platonic hugger)

</comment></comment></comment></comment><comment><USER8> I did some research on hugging and self-hugging for a presentation at a Chaos Computer Club event. Mainly trying to find out why self-hugs don't seem to work as well, despite many attempts to replicate a hug through technological solutions:

[https://rybakov.com/essay/how_to_hug_yourself/](https://rybakov.com/essay/how_to_hug_yourself/)

<comment><USER9> Because the hug is about the connection with the other, not about something arbitrary wrapping your body?

<comment><USER10> Some people—particularly on the autism spectrum— get stress relief from weighted blankets and things like the Thundershirt (the thundershirt is an as- seen-on-tv product for dogs, but there's similar garmets for people. I'm just not sure what the generic term would be).

<comment><USER9> That's called a "security blanket"

</comment></comment></comment></comment><comment><USER11> If we all hugged each other more would the world improve or would there be deflation of the stress-relieving value of a single hug?

<comment><USER12> We'd go nearly extinct via pandemic long before we had time to find out.

<comment><USER13> Unlikely. There are cultures where people hug a lot more and don't go extinct (e.g. Brazil).

<comment><USER12> It was intended as a joke, but good point.

<comment><USER14> Give back a virtual hug.

</comment></comment></comment></comment></comment><comment><USER15> Well, let's file this under the category of obvious research findings?

<comment><USER16> This is, in my opinion as a wedded empiricist, one of the main problems with science: it is extremely chauvinistic about forms of knowledge that did not originate in its chain of authority. A key function of the scientific culture is to establish the authority of a group who is qualified (according to the estimation of the members of the group) to rule on matters of evidence and methodology and, via their general approbation, to pronounce into existence new knowledge, which we then call "scientific" knowledge. Membership in this community is mostly through direct descent - graduates of the laboratory system.

This system, it is my observation, is extremely intolerant of knowledge produced by other systems. Other sources may be examined, but they must be interpreted, and more importantly tested, according to the established "scientific" methodologies (a collection of various inductive techniques, but, mostly, the use of complex physical and mathematical instruments), and then presented in the appropriately hallowed place using scientific jargon. Until such approval is given, the system is unwilling to acknowledge the validity of other kinds of knowledge. Thus, we have to once again "prove" what is already well-known to everybody.

A secondary problem is that the "acceptable methodology" criterion of scientific knowledge is subject to the latest vogue, and people don't read old papers, so everything we know must be re-proved or re-packaged using contemporary methodology every thirty years.

<comment><USER17> Isn't that a bit like saying that chess clubs are extremely intolerant of card games? I mean, science is science because it follows those methods. Other methods for producing knowledge may be perfectly valid, they're just a different thing.

Maybe we need a discipline which has the purpose of merging the knowledge from science with other source, but I don't think it's fair to criticize scientists for not doing that work - it's none of their business.

<comment><USER16> I'm not necessarily making a criticism, just observing a deficiency in the structure of the scientific apparatus. Scientists have constructed themselves and their polity in a fashion that _does not allow_ them to merge knowledge from other sources. That is, to use your phrase, they have _made it_ none of their business. This might have certain advantages, if we believed that scientific methods yielded unequivocally superior epistemological outcomes; but I don't think this is true across all kinds of knowledge. In this case, I think what's being demonstrated is that sometimes, those methods go through ponderous effort to demonstrate what can be learned efficiently through other means (viz., getting a warm hug when you need it).

<comment><USER17> I disagree with your premise. I believe there are advantages to having a body of knowledge built around consistent principles even if we _don 't_ believe that scientific methods yield unequivocally superior epistemological outcomes - in fact, even if we believe it yields inferior outcomes.

Scientism is certainly a problem, but the solution is not to jumble the methods of obtaining knowledge with science in an attempt to bleed some prestige from it. It should be to valorize those other methods separately, recognizing their particular advantages (and disadvantages) over science.

<comment><USER16> I'm not sure what advantage you think to obtain from inferior, but consistent, principles. For example, the "like cures like" principle is used to ill effect in many medical systems around the world. The only reason to support such a practice is prejudice - the conviction that the conclusions reached are, by themselves, superior merely because of the methodology used to produce them.

I don't advocate jumbling the methods of obtaining knowledge (although I think the notion of methodological purity in science is incorrect, I think the consistent principle in science is the establishment of authority, and not the methods applied by that authority, which change over time) - naturally every system must have its own internal consistency, or else it would not be a system. I advocate instead something close to what you are saying. It is fine to read scientific literature, but it is also useful to recognize that science can't tell you everything, and that its epistemology more or less fails at discovering certain things.

</comment></comment></comment></comment></comment></comment><comment><USER18> Maybe it's just me, but I get the implicature that they tested consensual and non-consensual hugs in their effects on stress, the latter of which seems like it would be hard to get past an institutional review board.

<comment><USER19> I inferred the same and was quite excited to see the results.

In fact, it seems they just asked people about hugs they received generally, without distinguishing between consensual and non-consensual hugs.

Classic case of popular science reporting over-promising and under-delivering.</comment></comment>


Is There Something Wrong with People Who Do Not Use Facebook? (2012) - <AUTHOR> https://www.psychologytoday.com/blog/unique-everybody-else/201209/is-there-something-wrong-people-who-do-not-use-facebook <comment><USER2> Um, no. Just no. If anything there is something right with people who don't use Facebook. It is tremendously addictive, and fails to do more than provide the illusion of closeness with family, friends, and acquaintances. One of the smartest things I've ever done was delete my Facebook profile. I've never looked back. When I tell people I'm not on Facebook they're absolutely astonished--as if the world would cease to exist without Facebook. Without Facebook I spend more time focusing on real relationships, and enjoy being surprised by what people have been up to when we catch up--via phone, or in person. On Facebook it would just be data points, news, trivia. Like the time my Dad told me my cousin had moved to Texas. "Oh, really?" I said. "How does she like it there?" To which he responded, "oh, I don't know. I just saw from her Facebook that they moved to Texas." Doh.

</comment><comment><USER3> It's comical and at the same time disturbing that people would actually think this way. I guess it's just another case of bubble living.

</comment><comment><USER4> "Posted Sep 05, 2012"

<comment><AUTHOR> Thanks, edited.</comment></comment>


Be an Entrepreneur They Said, It'll be Great They Said - <AUTHOR> http://spencercarli.com/2013/11/be-an-entrepreneur-they-said-itll-be-great-they-said/

<comment><USER2> _Money can be inconsistent_

I agree w/the advice given, but learning to save and limit expenses is just half the battle. Learning to get better at generating revenue is the other. All too often I hear the former advised without mention of the latter.

<comment><AUTHOR> Great advice. I certainly agree.

</comment></comment><comment><USER3> I'm sorry but how did this make it to the first page? Nothing new in this article and not deep enough to provide new insights either.</comment>


Functional programming in object oriented languages - <AUTHOR> http://www.harukizaemon.com/2010/03/functional-programming-in-object-oriented-languages.html <comment><USER2> One important thing to point out: functional programming and object-oriented programming aren't necessarily mutually exclusive. Scala, OCaml, and a lot of Lisps have proven that. Whether it's a _good idea_ is another question entirely, but the point is that it can be done.

<comment><USER3> > One important thing to point out: functional programming and object-oriented > programming aren't necessarily mutually exclusive.

I'm not sure that's true.

The essence of functional programming is treating a program as evaluating a function without carrying around state, a declarative approach that promotes things like pure functions and referential transparency.

The essence of object-oriented programming is passing messages between objects with identity, state and behaviour, an imperative approach and one that fundamentally relies on late binding at run-time.

Aren't these styles mutually exclusive?

Of course, you can have tools _representative_ of both styles, such as higher order functions and abstract data types, in the same language; the languages you mentioned all do. But whatever merit the resulting hybrid programming style may have, I'm not sure that style is properly called either functional or object-oriented programming.

<comment><USER2> "The essence of functional programming is treating a program as evaluating a function without carrying around state"

Isn't a closure a function that carries around state? There's an old tale about this:

"The venerable master Qc Na was walking with his student, Anton. Hoping to prompt the master into a discussion, Anton said "Master, I have heard that objects are a very good thing - is this true?" Qc Na looked pityingly at his student and replied, "Foolish pupil - objects are merely a poor man's closures."

Chastised, Anton took his leave from his master and returned to his cell, intent on studying closures. He carefully read the entire "Lambda: The Ultimate..." series of papers and its cousins, and implemented a small Scheme interpreter with a closure-based object system. He learned much, and looked forward to informing his master of his progress.

On his next walk with Qc Na, Anton attempted to impress his master by saying "Master, I have diligently studied the matter, and now understand that objects are truly a poor man's closures." Qc Na responded by hitting Anton with his stick, saying "When will you learn? Closures are a poor man's object." At that moment, Anton became enlightened."

[http://people.csail.mit.edu/gregs/ll1-discuss-archive- html/m...](http://people.csail.mit.edu/gregs/ll1-discuss-archive- html/msg03277.html)

<comment><USER3> > Isn't a closure a function that carries around state?

Well, that's the question, isn't it?

In our present context, to me "state" suggests something persistent and independent, something that could be read and possibly written by multiple paths.

Do you view creating a closure as customising an existing function with specific data, or as defining a whole new function? I think of it as the latter, and it just happens to be at run-time. The resulting function is still pure, and any customisation based on particular data is an integral part of it that isn't externally visible, which doesn't feel "stateful".

</comment></comment></comment></comment><comment><USER4> There are so many facets in object-orientedness and you can ignore many of them and still have something that's clearly object-oriented.

For example, object-oriented doesn't mean you have to store all your state in objects and that objects must thus be mutable. You can, for example, return new objects of the same kind with new, modified state.

</comment><comment><USER5> I can't imagine this would work out well if he had to do his own memory management.

<comment><USER6> What would memory management have to do with it? That seems orthogonal to his point.

<comment><USER7> If you have to do your own memory management the first thing people reach for is reference counting. Reference counting means maintaining state and directly contradicts immutable objects.

So immutable objects only really work if you've got some kind of garbage collection available.

<comment><USER4> Maintaining mutable metadata for objects doesn't preclude having immutable objects. The object's value doesn't change when someone wants to inc/dec its refcount.

<comment><USER7> The strategy discussed involved lots of creating new objects that were the same as an old object but with one more piece of data. If you're using a reference counting implementation then every one of those methods needs to know about, and adjust, all of the reference counts that the object points to. This kind of busy accounting work is error-prone, and does a lot to undo the simplicity that you're trying to achieve with this methodology.</comment></comment></comment></comment></comment>


Ask HN: What's your dev machine setup? - <AUTHOR> It's time to replace my PC. I'm curious about your setups - for a dev machine, what kind of hardware do you use/recommend? How do you configure your machine to keep it running nicely? Any other thoughts configurations/setup for a dev machine? <comment><USER2> I run a multi-headed desktop, running Ubuntu 16.10 + Windows 10 simultaneously.

Specs:

      * CPU: i7-3820
      * Motherboard: Asus p9x79 deluxe
      * Memory: 32GB DDR3
      * Graphics: EVGA GTX 680 SSC + ASUS GTX 970 SSC
      * 1tb Samsung SSD + 2x1TB WD Black HDD

The net result is that I can have both windows 10 and ubuntu running at the same time, with native performance and native graphics, native inputs for both operating systems. The 680 is dedicated to running the Ubuntu 16.10 graphics, and the 970 is dedicated to running the Windows 10 output. I have both cards outputting to multiple inputs for each monitor, so I usually run Windows 10 with 1 display and Ubuntu with my other 2, but I can use any combination, giving either OS all monitors. I can game in windows 10, press a key, and be surfing on Ubuntu 16 while windows does some pesky updates.

Highly recommended setup, but your CPU and motherboard must support VT-D virtualization. Most hardware does not support this. Look into /r/vfio.

<comment><USER3> Interesting. Can you elaborate on the virtualization stack? Vmware? host in Win10 or host in Ubuntu?

<comment><USER2> Ubuntu 16.10 using libvirt 2.1 + KVM

</comment></comment></comment><comment><USER4> I have a 2013 MacBook Air. I used to develop Django apps on a Windows PC and was perfectly satisfied. I had to switch because of a off-hand promise. I've never been happier.

I made a lighthearted promise one day, many moons ago, to my client. We were running our service on CodeIgniter in PHP. I found it difficult to move quickly. I was gently trying to convince them to move to Django. My client jokingly remarked that if we ever do change to Django I will need to start developing on a Mac. Knowing that it is not smart to just change languages and frameworks for the heck of it, I agreed to the promise. I did not really want to get a Mac. Some time passes and we need to do a ground-up rebuild for various other reasons. Other people recommend Django to him out-of-band and bam!

Promise made, promise kept. We switch to Django. I get a Mac. Both decisions turned out very well.

The main thing, as silly as it may be, my favorite thing is the multiple desktop and the three-finger touchpad sweep to change between them. I had a brand new 3 monitor set up, with plans of going to 6. All of a sudden I have as many "monitors" as I want in a super-portable package!

I like the Mac. It took about two weeks to get used to it, but it is nice. It feels very natural. I may go back to a PC one day, but not before I can have virtual screens and a multi-touch sweep to change between them.

<comment><USER5> Do you have to obsolete (not produced) thunderbolt displays? I have a macbook air and am trying to figure out how to do a two (external) display set up but have had trouble figuring out which monitors/set up would work for this. If you do use thunderbolt displays I'll keep looking for other solutions, but if you have a set up with another brand of display and could post your set up that'd be super helpful!

<comment><USER6> I have a Dell UltraSharp Monitor [1] attached to my Air when I use it, the monitors come with the correct display port cables to connect to a Mac. You can also daisy-chain (MST) these monitors so technically if you'd use two you only have to use one port on your Air. However, the Air doesn't support more than one monitor at the time, at least I can't get it to work on my Air (I think it has to do with the bandwidth in pixels that the GPU can process, or something like that). I think the Pro is capable of supporting more than one display at once. The screens are pretty good for the price charged.

[http://accessories.ap.dell.com/sna/sna.aspx?c=au&cs=aubsd1&l...](http://accessories.ap.dell.com/sna/sna.aspx?c=au&cs=aubsd1&l=en&s=bsd&~topic=ultrasharp- monitors)

</comment></comment></comment><comment><USER7> Late 2013 MacbookPro, 16gb ram, 512gb ssd. I do all my development in a VirtualBox 5.1 Ubuntu VM. I keep my host OS 100% free of any development stuff now. Just SSH in and let rip.

macOS seems to be more stable under this setup, and if I need any tools I'd normally get from homebrew on the host (say, I want to download a Youtube video using youtube-dl) I just do it in the VM into a shared folder.

I'll probably replace this laptop when it dies with the HP Z2 Mini which was on HN a week or two ago running Linux directly since I want more than 16gb ram and Apple doesn't think that's worth supporting.

<comment><USER8> That is interesting since I do almost the exact opposite of what you do. I hate VMs and SSH sessions for dev work with a passion.

I have a powerful linux desktop box that I run my builds on, and a light weight 13" 2015 Macbook Pro to connect to it. I check-out the code onto my linux box and scp it down to my Mac (ignoring source control folders) and subsequently use rsync to keep both the boxes in sync (there's an Atom plug-in that rsyncs every time you save).

I get native OSX performance as I edit code and I get to run fast builds on my desktop, so it's a pretty nice win-win scenario as far as I'm concerned.

<comment><USER7> That's funny! I do all my dev work in emacs so it doesn't matter to me if I'm working locally or using SSH. :) I was very against running VMs for development until I tried it again a few months ago.

Have you considered just keeping your code on the desktop and mounting it to your OSX host via NFS? I was doing this up until recently (was running Atom instead of emacs) and it worked really well. Might be an option if your latency is low enough.

I actually tried "desktop Linux" last weekend to see if I could just ditch OSX entirely. The first experience I had was that the mouse cursor in 16.10 _does not move_ in the installer and livecd boot. I installed 16.04, played with a bunch of the desktop environments, and was ultimately unhappy with the feel of them. They're just too alien and inconsistent compared to OSX.

I'm probably just going to keep the current setup until this MBP dies, then I'll get whatever the best Mac Mini equivalent is (HP Z2, Intel Skull Canyon, etc.) and switch to Linux finally.

</comment></comment></comment><comment><USER9> 2015 Macbook Pro, which has been the best machine I have ever owned.

Just as important as the machine though is the software/ shortcuts I have put on it.

        -homebrew
        -iterm2 mapped to a global hot key of cmd+shift+space (get to the terminal in a hurry)
        -contexts.co is also a great tool that has almost resolved all of my window managment issues
            -chrome mapped to cmd+1
            -various other tools mapped to cmd+2 - cmd+5
        -visual code studio. Nothing important to add. I just enjoy it. (not my ide though)

A note on osx window management,

Contexts.co resolved a lot of my problems but not by itself. For all you dev's who use Chrome and extensions or apps. If you're more than frustrated with how osX handles switching between chrome and your extensions (hangouts, keep, postman, etc.) try removing the app version and find the extension for whatever you are looking for. It's not perfect, but with context.io and the extension version of hangouts, when I cmd+tab to hangouts, it now actually takes me there.

</comment><comment><USER10> I'm doing frontend (react) on a MacBook Pro 15' late 2008 (8go ram, SSD) plugged to a 27' monitor.

Code editor on the Mac screen, terminals, web browsers and Slack on the external monitor. No external keyboard nor mouse.

I'm also looking to get a new machine: I would love to hear the feedback of owners of MBP 15' with touchbar. My dilemma: get a 2015 version or 2016 with touchbar?

<comment><USER11> The keyboard on the new MBP is an improvement from the new MacBooks, but it still doesn't feel as good as the keyboard from the 2013 MBPs IMO. On the other hand, the larger trackpad is fantastic and makes a big difference when browsing, etc.

The touchbar is a wash for me, not having a real ESC is kinda weird, but it's not a deal-breaker for me (although I don't use terminal-based editors often.)

The biggest frustration for me is the dongles, I have to carry around 4 of them in order to maintain my workflow and device connectivity. I get the argument that Apple is nudging us forward on this, but they sacrificed a lot of usability and convenience in getting rid of the current gen ports, and I notice this daily.

</comment></comment><comment><USER12> I have a mid-2014 Macbook Pro which I love (although given Apple's direction I may switch to linux). I haven't found any hardware that really compares with Apple's products on build quality and just the pleasure of use (from the screen quality to the responsiveness of the trackpad and everything in between).

I normally have it plugged into a 24" Dell monitor but got rid of my Apple wireless keyboard and magic mouse because actually prefer having my laptop in front of me and the larger (primary) monitor above it so I don't have to move my neck/eyes along the horizontal rotation.

As for an environment, I mostly programme with node.js and use docker to contain my databases, rabbitmq, etc.. All my config is stored in my dotfiles [1] anyway so setup is easy (and I basically live in my terminal so homebrew + zsh + tmux + vim sorts my life out perfectly).

[1]: [https://github.com/gfarrell/dotfiles](https://github.com/gfarrell/dotfiles)

<comment><USER13> Interesting response when you state that you may give Linux a try given Apple's direction and then you list what you like about Apple's laptop. I wonder why you're thinking that other then the recent 'post' by some complaining about the new Notebooks. I recently purchased a new MBP 15 (up from a 2011 MBP 13) and the build quality is still there, the design of the new laptop is really nice and the screen quality is excellent.

To top it off the new MBP have a awesome trackpad and are very quiet (least mine is I have the 2.6GHZ 16GB 256GB SSD model) and even while playing videos on Google Chrome (which use to really heat up my 13 inch) my 15 inch is quiet and cool.

<comment><USER12> My feeling is that Apple have basically decided to pursue a "fashionable" path, rather than actually considering design as they used to (and also have abandoned their professional market). (1) getting rid of magsafe is a PITA; (2) USB-C is a PITA; (3) I think my MBP is the last one in which I can replace the hard-drive (or take it out if my logic board fails).

I agree on the build quality - they are still really nice laptops, but the price increase and trajectory of bad design in general (I think that without Steve Jobs steering him, Jonny Ive is incapable of producing genuinely groundbreaking work, and is instead coming up with some really egregious rubbish) are making me feel like jumping ship.

Likewise with OSX: the main reason I use OSX (oh, sorry, macOS) is not the OS itself anymore (which I used to love) but more the apps I can't really do without (basically just Alfred and 1Password) - for everything else I spend most of my time in the terminal.

</comment></comment></comment><comment><USER14> I use a 2011-vintage 17" Macbook Pro. I'll maintain it as long as I can. Memory is maxed out and it has an SSD. It performs about as well as a new one would, plus it has a full suite of ports. Besides programming, I also use it for music recording and photo editing, so the generous screen real estate is very helpful. (Useful fact for those who love their old MBPs... Apple will do an "anything" repair for $300. They'll fix anything and everything they find wrong. I had my motherboard replaced last year that way.)

For the development itself, I do _everything_ in Vagrant. That way, I get my nice Mac and nice editor (Textmate), with a predictable and repeatable build and test environment. I could just check out my code onto a different computer with Vagrant installed, and pick up where I left off.

</comment><comment><USER15> Web dev here, 60% server side and 40% front end most of the time.

        - Windows 10 + Ubuntu (but never really use Ubuntu any more)
        - 2600k CPU
        - 16GB RAM
        - GTX 970
        - two 27" monitors

I used to have a Macbook Pro and a beefy iMac until this spring, grew to hate them, then the iMac was stolen from the office and the MBP I swapped for a 9550 Dell XPS 15" laptop which is better than the MBP but not something I want to work on really, it's just for excursions.

I can't ever go back to a single screen for dev any more. REALLY working on a simple laptop with one screen has become this phobia I now have.

</comment><comment><USER16> Currently on a 2012 Retina Macbook Pro 2.6Ghz i7 with 16GB RAM, and 2 thunderbolt mirrors... I mean displays ;)

I run OSX for my day-to-day dev work, but am noticing I'm drawn more and more towards tiling window managers (like i3), so I'm exploring options to switch back to Ubuntu (which I used on my Dell laptop before I got the MBP).

The previous gen rMBP is hands down the best laptop I've ever owned. I haven't used the new 2016 model yet.

At my office we use the (ridiculously cheap) iiyama prolite x4071 40" 4K displays, which I absolutely fell in love with. Once you go 4k, everything else feels like a step back. I'll probably upgrade my setup somewhere in near future to a high end laptop + 2x 32" 4K displays. 32" because 2x40" is too big (you'll need to turn your head constantly) and 'high end laptop' because I'm not quite sure about the new MBP.

My 2 cents: Invest in a high end laptop and an external monitor/keyboard/mouse, instead of a desktop. That way you'll have an ergonomic setup at your office/house but still be able to carry your work anywhere you want.

</comment><comment><USER17> 4th gen lenovo carbon x1, 16gb ram, 512 gb pcie-nvme, i7-6600U, running fedora 24(currently)

i mainly develop for python, go, and javascript, also using a bunch of cloud platform stuff with kubernetes and openshift

in terms of keeping it running nicely, for me that means using fedora server edition with a custom selected Xorg stack and regular updates.

when not on the road i like to attach a 24" 1080p monitor for some extra real estate

</comment><comment><USER18> I work in game development writing c++. All our workstations are 32GB ecc DDR3 ram, dual 8/10-core Xeon processors with hyperthreading (so 32/40 cores per machine) and at least GTX 970s. Would absolutely recommend a machine with this much parallelism if you're compiling c++ regularly. We all run Windows 10, with 3/4/5 instances of visual studio open at anytime.

</comment><comment><USER19> Just picked up a 32" 4K monitor, and I think it's about the perfect size for dev.

\- 140 DPI is about perfect IMO. It's "almost-retina" for a 2 foot viewing distance. Yes, there are benefits from having a higher DPI, but once you hit retina you definitely hit the point of diminishing returns. The DPI is also low enough so that if you very occasionally use an app that doesn't scale, it's still moderately usable.

\- it's a good height. A lot of coding tasks really benefit from a reasonable amount of vertical height, and the shift to 16:9 screens has really hurt that. But too much height gives you a crick in your neck if you use the full height. I think the 16" of a 32" monitor is about right.

Unfortunately 32" UHD is quite expensive. 40" UHD is inexpensive because it has the volume of crappy TV panels, and 27/28" is inexpensive because it seems to be the volume point right now. To get a reasonably priced one you need to get a Korean model from EBay. I have the QNIX UHD3216R.

<comment><USER20> 700€,thanks ,i will pass :)

<comment><USER19> It's USD400 on ebay.

</comment></comment></comment><comment><USER21> I have an "old" MBP 13'' from 2013. Works just fine for me, I'm sure I can get another 2 or 3 years with it. If I had to replace it now I would go either with a new System76 Lemur, or a Dell XPS 13. I'm a big fan of 13 inch screens since I'm always on the move.

Not really sure what you want to know re: configuration.

<comment><USER22> I'm also using an "old" 13 inch MBP. I was hooking it up to two 27" 1080p monitors using a Matrox "Dual Head to Go," with Divvy hotkeys to make that easy to use. (Basically, I just had hotkeys to move windows to the left or right side of either monitor.)

I think I'm going to wait until next year to buy a laptop. I really want to see what Apple and Microsoft can do with a Pascal GPU.

</comment></comment><comment><USER23> A 2011 i5, 12GB RAM, 128GB SSD +2x 1TB HDD with two 24" 16:10 monitors. Using Sublime Text since 2012? (best software buy ever) for quick PHP fixes, Go micro services and scripting mikrotiks and lately Android Studio which runs very fast compared to my 2015 13" Macbook Air which, I'm using for all the above except the Android part.

Oh and btw, I'm running Debian 8.2 and Gnome and I couldn't be happier. Some day I will be installing onto the mac as well; though I really like the macos ui and everything it is starting to get ever more difficult to opt out from various updates etc.

EDIT: re-reading your post, I would definitely recommend dual monitors with 16:10 ratio for 24" size or less. I also recommend an SSD m.2 for swap, root, /usr partitions, specifically the expensive NVMe ones from samsung. I can't emphasize enough on how big of a difference they make even compared to sata SSD's.

</comment><comment><USER24> Quad-Core Haswell Xeon, 32 GB ECC RAM (server RAM is ridicously cheap second- hand). 27" 1400p, 19" 1280x1024 (not a good match, not used very often). Arch Linux, KDE.

Paid about 250 € for CPU/MB/RAM.

Previously: Phenom X6 1055T, 16 GB non-ECC RAM. The X6 was a pretty decent CPU for parallelized work, due to it's six cores, but pretty poor in most other regards. The Haswell quad is "only" 50 % or so faster on average in thread- heavy work, but much, much faster in anything single threaded and has a much more recent ISA (the X6 doesn't include AES-NI, for example).

Mobile: X200 bastardized with a X201 board. Qubes, KDE. Formerly Arch and i3. Didn't like i3's handling in Qubes.

My recommendation: don't buy hardware new. Especially since in the last years there is no real difference anymore between Intel generations. No need to pay a 100+ % premium to get Skylake, if Haswell performs essentially the same.

<comment><USER25> > don't buy hardware new

Generally agreed, except that SSDs are a major exception which should always be purchased new.

<comment><USER24> I think drives in general should be bought new, at least for production use (ie. were it is a hassle to replace it). I've got quite a few second-hand rust-spinners, but I only use them for backup purposes, ie. they are all replaceable with no loss.

</comment></comment></comment><comment><USER26> Worth checking out - [https://usesthis.com/](https://usesthis.com/)

<comment><USER27> Every six months or so I start to wonder about my setup and how it compares to others and I try hunting down this site. It's surprisingly tricky to find if you don't remember the URL.

<comment><USER28> Yeah, I guess I've made it tricky by not matching the name and the URL.

</comment></comment></comment><comment><USER29> I built a desktop with a quad core i5, 16gb ram, a GTX970, an Intel SSD, and around 2tb of spinning disk storage. The whole build cost around $700 and it's a very fast machine. I also have 2x 1440p 25" monitors, a mechanical keyboard, and recently added a (normal looking) gaming mouse. I use it primarily for programming/research and occasionally games/oculus rift. Also makes a great web server.

I run Ubunutu, with i3 window manager. I really like this combo after some personalization. It's very stable, and lightweight. I also have two Windows versions and a secondary Linux installation which come in handy.

I also have a 2013 15" rMBP of which I think very highly. I can mount my 2tb of desktop storage, and my SSD as a network drive on the MacBook for sharing files. I also use SSH to run intensive scripts (sometimes GPU stuff) on the desktop.

10/10 would recommend this setup

</comment><comment><USER30> for the past few years my main computer has been a self-built 3930k 6-core 64gb ram linux box with a couple of SSDs, lately running pretty much everything in i3 under virtualbox VMs (see my profile for my blog describing how I set it up, basically debian based with networking running over pfSense to firewall individual VMs) with 3 monitors,only upgrade would be to move to 3x1440p, but I am doing ok with only the center being that resolution and the side ones being smaller.

Works amazingly well to have everything in VMs, very easy to maintain and to use. Giving up a little bit of speed compared to bare metal but hasn't been an issue up to now and is worth the peace of mind to run everything virtualized.

This of course would not work for games development and/or GPU-based development in general, but for general back-end dev work it's been great.

</comment><comment><USER31> Home 1: 4k TV with a Macbook Pro 13" running OSX Home 2: 1080p TV with an 8G/8 core Acer running Solaris 11.1 Home 3+: various laptops running as servers with Linux

Work 1: 15" Macbook Pro with a 27" Mac Monitor Work 2: 17"? Dell Laptop with 32G/8 cores

Keeping configurations sane is something that I've been unable to keep track of yet with the variety of OSs I'm running. Mostly I use emacs and pass around a .emacs.d git repository but that still seems to have problems.

Most machines run 'nicely' without too much configuration. Solaris is about as rock solid as they get if you don't mind running 10 year old software...but it screams and with running a simple WM and it's almost too fast and could be considered 'twitchy'.

Keyboards are a combination of builtin on the laptops and Unicomp Model M keyboards.

Throwaway mice.

</comment><comment><USER32> I run a Mac Pro 5,1 (2010). It's a fantastic piece of hardware and I doubt we'll see anything quite like it anytime soon. It's ancient in a sense, but it's very fast and it runs OS X 10.12. I wanted the pre-2013 model (the large aluminum box) specifically for the 4 HDD bays.

I sync most of my dot files to Dropbox (symbolic-linked). I use software you've heard of: Sublime, Karabiner, Moom, Brew, Omni stuff, f.lux, &c. Sometimes I run acme.

I use a Topre keyboard, a Deathadder, and a 2007FPB 1600x1200. I like the Deathadder but it's a bit too large. Peripherals are very personal choices, so I won't make generic recommendations, but having a good middle-click is very important (esp. for acme).

</comment><comment><USER33> Macbook Pro 10,1, early 2013. Still a very speedy machine, although I do covet the new SSDs that are almost an order of magnitude faster. Apple bluetooth keyboard, and some random mouse and an external 24" monitor. Ruby on Rails, iOS, web dev.

</comment><comment><USER34> I use a Macbook Air from 2013 driving 2 24'' monitors at work. I have to use a USB 3.0 to DisplayPort adapter. It's not ideal. At home I use a 27'' monitor.

I would like to upgrade but the Macbook Pro that came out is expensive for what you get. I would like 32 GB of Ram. I probably will pretty soon.

Also, I have 2 desktops at home which I SSH into. One is a Haswell Xeon machine with 8 cores, 128GB of ram, 2 GPUs. I have another i7 machine, 4 cores, 32GB of ram, and a GPU. I do machine learning and data processing on them.

</comment><comment><USER35> 2014 13" Retina Macbook Pro on a Rain mStand alongside my Thunderbolt display. On the desk I also have a mechanical keyboard with cherry blue switches, Logitech G502 mouse and Apple desktop trackpad.

Not machine related, but very important to my setup, I have a Herman Miller Mira chair and Ikea motorised sit/stand desk, although I don't stand nearly as often as I should!

I think generally as long as you have a suitably powerful computer for your job, the peripherals and desk environment are most important.

</comment><comment><USER36> I have a Lenovo Thinkpad W550s (i7-5500U and 16GB of RAM). I dock it and use two 1920x1080 monitors (and not the monitor on the computer) with a bluetooth mouse and a Microsoft ergonomic keyboard. It's provided by my company's IT department who keeps up security, though I do much of my development in an Ubuntu VM. If I was providing my own machine, I'd probably do similarly but use Ubuntu as my main OS and have Windows for the few Windows-specific tools I need.

</comment><comment><USER37> Main machine is a custom built: 6700k, 32gb ram, gtx1080, win 10.

Laptop: 2016 MacBook fully spec'd out.

On both I use atom and docker. I mount my files from a network share so I can always access them.

</comment><comment><USER38> For me I actually spent a fair bit of time trying to decide what machine to get, after my iMac died. What I went with is a docked 15 inch MBP (16gb ram, 2.5ghz i7)

Display's on desk are an HP 32-inch envy (main) and portrait 24 inch dell p2414 (secondary)

Mouse is logitech m705, keyboard corsair mechanical keyboard

dev done in virtualbox linux VM, which i definitely recommend doing if you can get away with it.

I will likely move to a linux machine next time around, short of apple surprising us with a new release.

<comment><USER39> If you're using a Linux VM, is there a difference between using a Mac vs Windows?

<comment><USER38> Yes, for me I have a lot of stuff still in OSX, and a few hard-to-leave apps.

When my iMac died, i moved my VM to my PC and was able to get back to work with minimal downtime. But even within my VM, I found windows managed to interrupt the experience enough that I went and bought a mac sooner than later. Which is a shame, because my VM gets about twice the performance on the PC.

So for me it's now Mac for leisure, Windows for gaming, Linux VM for work.

But I will move to Linux for leisure, linux VM for work, and (maybe) windows for gaming. I may end up getting a low-end Mac and using VNC or RDP for the few mac apps I really want, if I can't find alternatives.

</comment></comment></comment><comment> VuWall-Matt I've got a Thinkpad X1 Carbon (2015) that I run hooked up to two external 27" 1080p monitors along with the 14" 1080p laptop screen itself. My host OS is Windows 8.1 with my Chrome/Word stuff, some Visual Studio, and then I have an Ubuntu VM I run for all other types of development.

The portability and battery life of this laptop are what I love most.I can go to a coffee shop for 9-10AM and work through to 5PM without needing my charger.

<comment><USER40> Does it overheat with three monitors? Have an x220 (older notebook but with 16gb and SSD) and it is impossible to use it with two external 1080p monitors without cpu throttling.

<comment> VuWall-Matt No it seems fine. How would I test for CPU throttling? That said, I do find 8GB RAM restrictive for the number of tabs/VM I have open and wish I had 16GB. Also, I think the SSD might be slowly dying because it's had many, many writes on it by now (reformats, VMs, videos, etc.) and sometimes Windows takes ages to open Explorer to show me my files.

<comment><USER40> > How would I test for CPU throttling?

Use [https://www.hwinfo.com/](https://www.hwinfo.com/) it will show you the CPU multiplier, if you experience throttling the multiplier will be low and never go up. Look at the following picture: [http://cdn.ultrabookreview.com/wp- content/uploads/2014/03/hw...](http://cdn.ultrabookreview.com/wp- content/uploads/2014/03/hwinfo.jpg)

</comment></comment></comment></comment><comment><USER41> Thinkpad W541 (i7, 32gb RAM, SSD), running Fedora, often connected to an external monitor, mouse and keyboard.

For travel, I use Thinkpad X1 Carbon (3rd gen), also running Fedora.

Nowadays I mostly work on native Android dev, so environment is primarily just AndroidStudio, vim, terminal (Guake) and what seems like hundreds of open tabs.

It used to be all Macbooks for many years though. I still have a 2012 tricked out Air and a 2013 rPro, which I need to sell off.

</comment><comment><USER42> I'm using an ASUS Ultrabook that is 4ish years old. I got it as a free hand-me down from my father-in-law. It has an i3 processor, 8GB ram (it started with 4 but I upgraded and maxed it out) and 500GB hard drive. My favorite part is that it is a 15" screen, which I absolutely love and could not go back to a smaller laptop.

</comment><comment><USER43> I use a ThinkPad T410 (2010) with i5, 8 GB RAM, and 7200 RPM HDD and a headless Debian server running on an Intel Atom (also circa 2010) with 2 GB RAM and 7200 RPM HDD.

Most of my development is done on the headless server using ssh + tmux + vim, though I will use Visual Studio or gvim on the ThinkPad if my current development is targeting Windows.

</comment><comment><USER44> Build a computer on Newegg. Today is black Friday. Get an i7, some SSDs, an NVidia 1080, 32GB of RAM. Full power!

</comment><comment><USER45> An old Acer which I didn't even care about specs. What's important to me:

\- Works with LXDE, Sublime Text, Terminator and Chromium at same time without problems

\- Doesn't run games very well

\- Enough HD

That's it. Fast for work only. Unless I want to use some IDE or emulate some mobile, but that's not my case.

</comment><comment><USER46> \- 13" 2015 Macbook pro with 2 external monitors (34" and 24") mostly used to ssh to a powerful 16 core ec2 instance (amazon linux), which is where I do all my development

\- iterm2 with tmux and oh-my-zsh

\- mostly vim / clion / intellij based on what I am coding atm.

</comment><comment><USER47> Chromebook that I boot elementaryos on, vscode, azure, redis, jupyter notebooks, and Julia language.

With these tools I can do basically anything. Better put, I have yet to find something I CAN'T do. Maybe someday...

</comment><comment><USER48> headless machine with a low-wattage i5, 32g of ram, evo ssd, and an r9 200 gpu. I can leave it on 24/7 and ssh in from either my gaming desktop or my ultra light laptop or my android tablet. gradle / java / Android builds take about 12s on a warm package cache; the process is still storage limited, not cpu. the gpu has more than enough grunt to prototype and test ML apps. plenty of memory to keep a full ngnix / jetty / Maria / memcache running for client demos and still work on other stuff.

</comment><comment><USER49> i3 window manager - it has a fantastic optimized workflow that I love. I also pair it with a nice mechanical keyboard that has Cherry MX blue switches.

Arch Linux - I don't have to re-install or distro-upgrade my laptop every 6 months, or year. I just keep it up-to-date on a continuous basis. Arch Linux lets me keep things simple and clean.

I also regularly perform system maintenance, like removing packages I don't use anymore. I also never make install software, or use CPAN, or npm global install, or what have you, to screw up Arch Linux/

</comment><comment><USER50> my stack of free windows progamms:

[http://www.ninite.com](http://www.ninite.com) installer for the basic bunch of stuff (browsers, skype, thunderbird and many more)

And these things (names of the installer in my download dir):

      ddmsetup1800.exe //some dell monitor tool to control brightness on my external monitor (with an AHK script for hotkeys)
      AutoHotkey_1.1.24.03_setup.exe //keyboard shortcuts and clicking with the keyboard against stress injury from testing apps XD
      HexChat 2.12.3 x64.exe //IRC client
      tsetup.0.10.19.exe //Telegram messenger
      AstroGrep_Setup_v4.4.5(1).exe //grep for windows
      Wox-1.3.183.exe //alt+space launcher
      Everything-184.108.40.2066.x64.Multilingual-Setup.exe //indexed search
      neo20(1).exe //my german esotherical keyboard layout (www.neo-layout.de)
      OpalCalcSetup(1).exe //best calculator, sadly just a demo, will need to buy this
      Ampps-3.6-setup.exe //local server for wordpress stuff
      TeamViewer_Setup(1).exe
      qutebrowser-0.8.4-amd64.msi //keyboard driven browser, experimental state still
      SetupProjectTimer(2).exe //time tracking
      koala_2.0.4_setup(1).exe //SCSS compiller
      setuploopbe1(1).exe //virutal midi cable (lol)
      flux-setup(1).exe //tints the monitor at night
      EqualizerAPO64-1.1.2.exe //global equalizer (I measured my room with "room EQ wizard" and correct a bit)
      DisplayCAL-18.104.22.168-Setup.exe //for monitor calibration with calibration hardware (using an old spyder 3)
      calibre-64bit-2.72.0.msi //ebook management
      ownCloud-126.96.36.19908-setup.exe //storing and syncing my personal markdown/flatfile wiki
      MouseSpeedSetup(1).exe //lowering mouse speed for my high-dpi external mouse
      LeapdroidVMInstallerFull.exe //last release of this android emu
      RATM_Mouse_7_0_47_1_x64_Software(1).exe //mouse driver
      AtomSetup(1).exe //Atom text editor
      vs_community_ENU(1).exe //VS
      kodi-16.1-Jarvis.exe //for watching suff in bed
      vtuploader2.2(1).exe //virus total scans via right-click in the explorer
      SlackSetup(1).exe //for team chat
      Monotype_SkyFonts_Winx64_18.104.22.168.exe //hate this, but still the easiest way to get some google fonts on your system

</comment><comment><USER51> 7 monitors on my primary desktop (one of them being 40" 4k monitor), then have server where I run Hyper-V which remote into virtualized environments.

<comment><USER34> That's some serious screen real estate. Can we seen a picture of this setup?

Also, what do you have on 7 monitors?

</comment></comment><comment><USER52> I use two thinkpads T560(win) & L450(linux) and just dock them when using either one for more monitors

I do miss having more than dual core cpus...

</comment><comment><USER53> x230 with 16GB RAM and a 256GB SSD from 2013 - and I see absolutely no need to upgrade.

These are my "pain" points:

\- RAM: with too many VirtualBox VMs running (e.g. Clusters for testing) I have to close some other applications, but 32GB is so hard to get in a laptop, not worth it I guess

\- CPU is fine unless I'm in a hangout. Seriously, WTF Google

</comment><comment><USER54> 2015 MacBook Pro, connected to a 43" 4K TV. I can spread so many windows on that screen it's ridiculous.

</comment><comment><USER55> iMac 27inch i5 mid-2011. Upgraded to 32GB of RAM. Just added a 1TB SSD drive and boot from this and it is now like a brand new machine. The existing 1TB drive is used for cold storage.

To load dev environments I use vagrant.

</comment><comment><USER56> thinkpad t460 with 32gb of ram and 1tb ssd (upgraded from the minimum options)

I hook that up to a nice keyboard/mouse/monitor setup when at my work desk.

</comment><comment><USER57> I am continually amazed that so many people that I know (and everybody posting here so far, as I write this) use notebook computers as primary. Do you all really need to do real work at continuously-changing locations?

I do have a notebook for airplane/offsite work. But in my case, a desktop workstation is absolutely more productive.

Right now I use a Mac Pro, which I guess I bought in 2013 since that's when it came out. It was kind of expensive, but I've been using it for years, and it is still _much_ faster for my workflows than any notebook (save 17" monsters, perhaps?). It has 64GB of RAM, so I can run Windows and Linux VMs without getting loaded. Since it's stationary and connected to full-time power (and UPS) I can augment the internal 1TB SSD with a big external 10TB RAID5 rig (a Pegasus2 thunderhole box, not as fast as the internal SSD but still does a respectable 900MB/sec or so).

It drives a 27" 5K display, and could drive another one, which I would totally do if macOS multi-monitor support hadn't gotten so shitty over the recent few releases. It could theoretically drive 3, but in my case I'm using some of the thunderholes for other purposes.

Plus: ECC memory. For me it has always just been a gut feeling, it makes machines more stable. But over the years, several helpful posts on this very internet forum (including a few recent ones) have been made by people who track the "cosmic ray" memory errors that will flip a bit from time to time. Nice not having those.

As for configuration, the best time-saver is to do a lot of development work in VMs, which tend to have great snapshotting capabilities. Automate setup of the dev environment, then nuke and rollback often. (I even do this every morning for some projects; with a Linux VM in VMWare Fusion, it's truly painless.) With guest-host filesystem sharing mechanisms, you can still use all the great Mac development tools, while running your code on Linux and using the tools there too. (Or even Windows, I've had to do that a few times and it works great. Or at least, better than on a physical Windows PC.)

The biggest pain point is actually maintaining the host macOS. I fantasize about moving off the Mac, and instead running Linux on a much beefier and less expensive workstation. But I estimate that's still about 20 or 30 years away from viability as a day-to-day workstation-class OS.

I do make a point to nuke and clean install my macOS every few months, though. That's the only way I've found to ensure that your dev setup is reasonably automated and reproducible.

Beyond the computer, I second the fellow in this thread who said the desk is a top priority. I use a GeekDesk motorized frame (with a slab of wood desktop I attached). Sitting desks are bad, standing desks are bad, but sit/stand desks are good.

Finally, I gave up on wireless input devices a few years back. That sucks in some ways, but I found wireless mice in particular to be flaky with like... 99% or 99.5% reliability. Which meant my mouse didn't work 0.5-1.0% of the time.

I use a Code Keyboard and a wired gaming mouse (even though I don't use the computer for games). Made my life easier, and like the Mac Pro itself, these devices seem to have a 5-10 year service life, not the 1-1.5 year service life I get out of a MacBook Pro before I have to buy a new one.

</comment><comment><USER58> Everyone else seems to be recommending laptops, me, I don't have that sort of lifestyle and prefer desktops and the superior keyboards you can get for them ([https://elitekeyboards.com/products.php?sub=special&filter=s...](https://elitekeyboards.com/products.php?sub=special&filter=spacesaver)), a mouse which least aggravates my RSI (Scope Node, curiously enough, since I think it was designed to more be cool than ergonomic), and a big high quality screen (currently a NEC with a 4 year warranty), my eyes are getting old (and this does double duty for watching DVDs and Blu-rays from a conventional player), etc. etc., so, as of 2014 (last time I built one):

Supermicro server or workstation motherboard that supports ECC.

Xeon processor to support the ECC, either the near cheapest or the fastest one before the knee in the price/speed curve hits, each generation was getting me another 100Mhz for "free". Arctic Silver heat sink compound, stock CPU fans (which I'm not sure they're shipping anymore). Arctic fluid bearing fans in general, BTW, and I use a non-contact thermometer to make sure there's no hot spots on the steadily fewer chips on these motherboards.

Cheapest Intel enterprise SSD for the system (e.g. 80GB SATA, only 1/3 the capacity in writes for 5 years but that's enough; I expect my next motherboard will use a more serious PCIe one, though).

Seagate Constellation "Enterprise" SATA hard disk for media, distribution software and other "cool" or cold storage (that might buy you better firmware, it will buy you a 5 year warranty, which you will statistically end up using).

Seasonic higher quality power supply.

Cases, well, I really liked a Lian-Li model they don't sell any more, I bought a bunch of those for myself and my parents and just cycle through them for each new build.

For my development (and media watching) purposes, Intel's on chip GPU is entirely satisfactory, and as of late, Supermico has a line of what are clearly workstation motherboards, plenty of slots including 1-2 for GPUs, no IPMI management port, HDMI output which covers video and sound output (I use a Turtle Beach USB analog dongle for Skype), really very little is on the board anymore.

And the systems I've been building with these parameters for 2 decades, and always run on a power conditioner or since 1999 an APC Smart-UPS, _have yet to die in service_ , besides some of the Seagate hard drives (and I used to build, and still have in service, 15K SAS drives before I trusted SSDs enough).

But that'll be put to the test now, since there's no major speedup available from a newer system besides e.g. PCIe SSD support which I don't _need_ , and 32 GiB of Kingston memory (lifetime warranty, which I've had to use once for a stick on a non-ECC Mini-ITX board) "ought to be good enough for anyone" ^_^. Although I note that Ubuntu 14.04 + BackupPC full backups actually consume all and more of my DRAM....

Last time I priced such a system, it weighed in around 1,000 US$, note of course I'm recycling the case and external peripherals.</comment>


Vanity Metrics - <AUTHOR> http://firstround.com/review/im-sorry-but-those-are-vanity-metrics/ <comment><USER2> Another good technique is to pair metrics. Find a second metric for each metric you care about that you expect to see negatively impacted if you overfit for the first metric. For example, you might pair user growth rates with per user acquisition cost.

</comment><comment><USER3> The bitcoin world has a real problem with vanity metrics to call out a few specific ones:

It's full of companies like Coinbase and blockchain bragging about number of accounts/wallets but I've yet to see any of them report MAU.

Companies like Bitpay talking about massive use growth using % figures and no absolutes and constantly changing some part of what they report on so it cannot be compared.

SCI/Rebit regularly talks about how they can't give actual figures to their volume because they don't want to attract too much attention yet spend half their time posting to forums with % increases and bragging about how fast they are growing and how huge they are.

Cointip spent years bragging about growth and how much volume they were doing before suddenly shutting up shop.

The only companies in the space that show any real information are the exchanges and Openbazaar and in the case of the later I'm sure they wouldn't if they could hide it.

<comment><USER4> The important point, though, is that each of these is actually _good news_ for Bitcoin.

</comment></comment><comment><USER5> I call them input metrics and output metrics - you can't usually directly improve output metrics like 'daily active users' \- but they are necessary validation of operational performance (just don't look at them every day)

input metrics are things that you can impact directly (like site speed - which, if improved, will likely indirectly improve the outputs)

from Jeff Bezos 2009 shareholder statement:

 _360 of the 452 goals will have a direct impact on customer experience._

 _The word revenue is used eight times and free cash flow is used only four times._

 _In the 452 goals, the terms net income, gross profit or margin, and operating profit are not used once._

[https://www.sec.gov/Archives/edgar/data/1018724/000119312510...](https://www.sec.gov/Archives/edgar/data/1018724/000119312510082914/dex991.htm)

<comment><USER6> I could easily increase daily active users of even the worst app by paying people in India to use it. This wouldn't exactly help the business - but if that's all you are optimizing for then its not hard to get. In the same vein I could increase people's time in the app by simply making it harder to use. They'd spend more time trying to get what they wanted.

There are no benchmarks that cannot be gamed.

<comment><USER7> I'm not sure exactly how this relates to the above comment.

But you are making the point that the OP made. You need to pair your metric with an opposing one.

Nobody honest person is going to say "we'll increase time on site by decreasing load time". But on my current project, I've had to take into account that the improved load speed and UX has kept time on site the same. This is actually an improvement as uses are able to interact with the app quicker and therefore their relative active time on site is higher.

<comment><USER8> Ironically, I have seen cases where increased load time lead to higher conversions by getting people to read the page copy rater than skimming it.

</comment></comment></comment></comment><comment><USER9> Protip: the quality of any metric used to measure performance will ultimately degrade over time, as the metric itself becomes the target for optimization instead of actual performance. any metric can be gamified

<comment><USER10> Also known as _Goodhart 's Law:_

"When a measure becomes a target, it ceases to be a good measure."

[https://en.wikipedia.org/wiki/Goodhart%27s_law](https://en.wikipedia.org/wiki/Goodhart%27s_law)

</comment></comment><comment><USER11> Like this blog post.

1) Vanity metric: great. First page on HN.

2) Clarity metric (getting right type of readers and subscribers): not so much. Since I do not think target audience like "sign up" pop ups in the middle of reading the blog.

<comment><USER12> It was kind enough to give me TWO pop ups - one because I tabbed away to another window for a bit, and then after I closed that a second one when I got 3/4 of the way through the article.

One is at least understandable. The second resulted in me closing the tab because fuck you.

</comment></comment><comment><USER13> I think it's more that "vanity" metrics are those that get reported by companies to the press, and by higher ups to their employees, because in both cases they want to give the appearance that everything is going great.

In my experience the key decision makers see the reality of the situation and care about measuring what's actually going on.

</comment><comment><USER14> tl;dr measure the right things, not just those that make you look good.</comment>


Google Just Plugged into Japan with Its Own Undersea Cable - <AUTHOR> http://www.wired.com/2016/06/google-turns-giant-internet-cable/ <comment><USER2> Title is a bit misleading, Google is part of a consortium with KDDI, SingTel, China Telecom, China Mobile, and Global Transit. Google owns a single fiber pair in the cable (of 6), so they control their own optical capacity. They have a design capacity of 100x100G currently on their segment.

Google is also the sole owner of the cable segment between Japan and Taiwan, likely connecting to their data center in Changhua County.

This is one of 4 cables Google has invested in in some form, and the 2nd transpacific one. The first being the Unity cable. Google also invested in Monet and Tannat, cables between US/BR and Uruguay.</comment>


How to Never Miss Writing a Blog Post - <AUTHOR> http://nathanbarry.com/how-to-never-miss-a-blog-post/

<comment><USER2> I subscribe to the "silence is golden" camp -- blogging when there's nothing meaningful to say just devalues your efforts when you actually do have something useful to say.

<comment><USER3> this isn't necessarily a point against scheduling posts. I have about 8 draft posts which sit there for months on end until I finally revisit them and get then done. There's even a fully written (and awesome) blog post that's just waiting for me to tidy up and githubify some code.

</comment></comment><comment><USER4> I would think you need some kind of content strategy, more than tricks.

Get stimulus from various or particular kinds of things and respond to it. That is probably the best source I can think of.

Maybe keep notes of many/any ideas and add to them and rethink them over an indefinite period.

I have posted something every week for about 8 months now (missing only one week). They are idiosyncratic, but some are probably quite interesting -- two or three have appeared on HN.

</comment><comment><USER5> Is writing a blog post no matter what - even if you don't have much to say - such a worthy goal? It's not like there's a shortage of blog posts in the world...

<comment><USER6> Writing begets writing. The process of sitting down and figuring out what to say is something that gets easier and hopefully better with practice.

</comment></comment><comment><USER7> I like Seinfeld's technique - "don't break the chain". [http://lifehacker.com/281626/jerry-seinfelds-productivity- se...](http://lifehacker.com/281626/jerry-seinfelds-productivity-secret)

We're going to add individual task tracking to LazyMeter to automate this.

</comment><comment><USER8> I preferred you would have forgotten to write your post so an empty one would have appeared instead of this one ;)

I treat my cats with more dignity than you treat yourself. Stupid little tricks like yours work for about a week, or longer if you're stupid enough to be sensitive to this kind of thing.

It makes sense to schedule your writing, but this method is not exactly the bee's knees, and the title of your post "How to Never Miss a Blog Post" kinda reminds me of bad advertising.

Your work kicks ass though, and your posts on design are interesting. Get a favicon btw!

<comment><AUTHOR> It almost did. I was only 12 hours away from an empty post when I wrote this.

I try to write useful content, but often need a little encouragement. This helps me. It's not for everyone.

Thanks for the complements about my work. And you're right, I should create a favicon.

</comment></comment><comment><USER9> Has Wordpress's "Future Post Date" feature become more reliable? If I remember correctly, there were some issues with Wordpress posting unfinished posts due to a bug or something...

I do like the idea of forcing a deadline upon you to get a blog post out (though this only works when you have something like a once-a-week post schedule). Just wondering if there is a better way to do this technique.

<comment><AUTHOR> I've found the WordPress schedule feature to be quite reliable. Just make sure you set your timezone. That caused me some confusion at first.

</comment></comment><comment><USER10> Genius. Good for personal blogs but won't be appropriate for some other kinds of blogs e.g. news blog.

</comment><comment><USER11> Regular blogging is trickier than you think.

For instance, I started a little hobby blog a few weeks ago. I have a hobby of collecting funny pictures, so I thought it might be fun to filter them yet again, then tag the hell out of them and post them on a blog. Who knows? Might have a lot of traffic one day. If nothing else, it'll make it personally easier for me to find my pictures. (shameless plug: <http://caption-of-the- day.com>)

Pretty simple, no? I already have the pictures. The tags should be pretty obvious. It's just select one, then write a tiny bit of text describing it, then post.

For some reason even this tiny amount of work quickly becomes a chore. I've started doing exactly what this author is doing: schedule the post first, then use the upcoming deadline as a motivator.

<comment><USER12> _tag the hell out of them and post them on a blog. Who knows? Might have a lot of traffic one day._

If you're going to rehost other people's work, you should at least link to the source. Most of the images on your site are taken from popular webcomics/blogs, so it shouldn't be hard to find the url.

<comment><USER11> Thanks for the suggestion. I'll consider doing that (Although the purpose of my comment was what a pain in the ass it is already.)

Hopefully every comic has a link included in the image. If you find one that isn't, I'll remove it. There's no intention of taking credit -- or even of using too many web comics. I have a lot more stuff. I guess the comics just floated to the top of the second sort. If anything, my dream is posting plain images and then letting the audience make up their own captions (hence the name of the site) But I'm happy if it only ever amounts to a fancy image storage system. That outcome still beats uploading them to FB (which is what I was doing before the site.)

</comment></comment></comment><comment><USER13> I really like this strategy. Its so easy to let those deadlines you set for yourself just slip by.</comment>