Docker 1.0 - <AUTHOR> http://blog.docker.com/2014/06/its-here-docker-1-0/ <comment><USER2> Docker is an amazing tool, but there are quite a few misconceptions about it.

Nearly all the articles and examples seem super easy, but it's quite a challenge to use in an actual multi-host production environment supporting mission-critical systems.

This can send the wrong message to beginners and send newbies down the wrong path, which ends up as a disservice to Docker when they hit the complexities and become disillusioned with it.

To address those misconceptions, I've just posted the article "Docker Misconceptions": [https://devopsu.com/blog/docker- misconceptions/](https://devopsu.com/blog/docker-misconceptions/)

I spent about a month working on setting up Docker for production scenarios and reading everything I could on it (all the docs, courses, and well over 100 articles - see Docker Weekly for a wealth of resources). My post covers the main misconceptions I see popping up and also some advice for simplifying Docker use if you do decide to use it for multi-host production.

I'm sure I've probably missed some things, so please chime in if I've missed something important.

<comment><USER3> Thanks, that's exactly the sort of thing I was hoping to learn from the HN comments.

In the post you link above, it seems like you're mainly comparing Docker to traditional, non-virtualized setups. Do you (or does anybody) have thoughts on comparing it to virtualized environments? I recently experimented with Xen as a way to isolate services, and it seemed awfully heavy; does Docker end up being a lighter burden?

<comment><USER4> My gripes:

* half git-syntax/half package manager-syntax is cumbersome to me.

* Inability to compile Docker from source without using the Docker Project's provided "black box" binary Docker.

* No formal explanation of how to create your own base image from scratch (ie. not using a Docker Project provided base image).

* Defaults to storing images in the Docker "cloud" repo. (would have preferred a git-like setup where pushing my images to a repo of my choice was more "normal")

* GO Lang is still pretty obscure for most developers, and an interesting choice given the language's youth and likely-hood to change rapidly as it matures.

* Docker is built on-top of existing Linux technologies, mainly LXC, making it more-or-less disposable in the future (as someone else figures out how to abstract/manage LXC better)

* Docker is mainly built by Dotcloud - a for-profit company. Dotcloud has been very generous in their effort... but, being for-profit, what is their take out of it? (It can't be "just for the goodness of Linux").

<comment><USER5> > * GO Lang is still pretty obscure for most developers, and an interesting > choice given the language's youth and likely-hood to change rapidly as it > matures.

The go authors have committed to keeping major versions stable since v1 and are unlikely to _massively_ change anything.

I'm sure much of google's infrastructure is coming to rely on go (and docker!) so they will be as unhappy about such drastic change as others.

<comment><USER4> Fair enough point about GO Lang, however, should note Docker as a project was started way back when GO's future was... perhaps iffy. Maybe good foresight on the Docker project regarding GO Lang.

However, this doesn't excuse the remaining gripes listed above.

<comment><USER6> _Fair enough point about GO Lang, however, should note Docker as a project was started way back when GO 's future was... perhaps iffy._

You mean 14 months ago?

</comment></comment></comment></comment></comment></comment><comment><USER7> I'm glad to see docker stabilizing but it's very disappointing to not see any changes addressing the logging support that was promised in 1.0 ([https://news.ycombinator.com/item?id=7712138](https://news.ycombinator.com/item?id=7712138) reply by shykes). The infinitely increasing-in-size and unconfigurable logfiles generated by containers in docker are basically a dealbreaker unless you bake your own logging solution into each container and avoid stdin/stdout.

<comment><USER8> I wonder if a very simple solution would be enough: with a one-line change, the logs could be created as named pipes instead of files. Then you could just write some upstart scripts/systemd units that do

        cat /run/docker/mypipe >/dev/log

And you'd be good.

\---

I'm not sure this is the right approach, though. In my opinion, docker shouldn't log at all—containers are unix processes, and Unix processes log to ephemeral stream-sink endpoints (think AWS SNS topics) called stdout and stderr. To collect and persist those logs, the Unix Way is to use shell redirection to "attach" those endpoints to subscribers.

Now, in Docker's daemonized run mode, these pipes are just hanging loose. But docker provides the "docker attach" command precisely so you can reattach them to something (or as many somethings) as you like. All you have to do if to get sensible logging if you're using e.g. Upstart is to create a service that runs "docker attach <mycontainer>": the logs will flow from the container's stdout/stderr to the service's stdout/stderr, and Upstart will catch them and handle them sensibly from there.

So, having done something like that, the important bit would actually be making sure docker _doesn 't_ do its own broken logging at all, except in the case of test containers that will never be attached to. Actually, this also cuts across the use (or lack thereof) of the --rm flag: it'd make sense for containers started with --rm to not log. (The generalization of the --rm semantics would seem to put such containers in the same category as e.g. EC2 instance-store instances.)

<comment><USER7> In general you ought to just be able to "docker run" in the foreground from your systemd script, and then stdin/stdout will go into the journal where you can handle things like any other file. This works now, except that the logs are also duplicated into /var/lib/docker.

</comment></comment></comment><comment><USER9> Unfortunately, installing the Docker client is currently broken, at least via brew: [https://github.com/dotcloud/docker/issues/6256](https://github.com/dotcloud/docker/issues/6256) — This made it into 1.0

The CHANGELOG states Production support as the 1.0 feature, but how am I supposed to be confident using Docker 1.0 in production if I can't use the client from my own machine? Or is there some other preferred install method?

<comment><USER10> In fairness, nobody is using brew to install something on their production environment.

<comment><USER11> Really? Never read/worked/etc in a os x server environment, but it seems like brew would be a good package manager for automating installs...

<comment><USER12> Hardly anyone uses os x server.

</comment></comment></comment></comment><comment><USER13> I was hoping that Docker 1.0 would have a 'docker login' or 'docker shell' command for spawning a shell within the container. In baseimage-docker ([https://github.com/phusion/baseimage- docker](https://github.com/phusion/baseimage-docker)), we run an SSH daemon so that people can login to the container for administrative purposes. In the past, it that approach was criticized because it was also possible to use lxc- attach, but since Docker 0.8 or 0.9 lxc-attach is not usable anymore because the default Docker backend no longer uses LXC. The Docker authors promised they would have a solution in the future, but sadly it didn't make it to 1.0. I guess we'll continue to use SSH until they have an official solution.

<comment><USER14> [https://github.com/polydawn/siphon-cli](https://github.com/polydawn/siphon- cli) might address your needs for now. It's just a tiny little wrapper around terminals that shuttles the connection over a unix socket... which in the case of docker, you can put on a mount to access from the host. Author here; I built it to replace that use case of sshd with something that doesn't have the overhead of key management. Of course if you're doing something with network gaps involve, sshd might still be the right answer for you.

</comment></comment><comment><USER15> For those wondering what docker is:

[http://www.docker.com/whatisdocker/](http://www.docker.com/whatisdocker/)

<comment><USER16> Is there a very specific use case someone could share so I can visualize what docker really is?

Something more than a hello world.

<comment><USER15> Let me try: Say you're going to deploy an open source application that requires a whole pile of dependencies. Normally you would have two choices: ship the source with a bunch of readme's and let the recipient figure out how to install your software and all dependencies and to resolve any conflicts with other software already on the machine (aka version hell).

Or you could ship a relatively large fully installed VM image of the OS+all the application parts and dependencies (this may be problematic if your target is a licensed OS).

Docker gives you something in between.

Think of a chroot'd environment (not that that's what it is, but it shares some concepts) with all the application code, libs and dependencies pre- packaged that should run theoretically out of the box.

That way you can have a 'war' like file that contains everything required to run your app and you're 100% sure that it will just work, rather than to have to field a million questions about how to make your app run on 'obscure distro x' or 'obsolete version y'.

Another use-case would be that if you're deploying something distributed across a large cluster that you can build your docker container on your desktop box, test it until you're happy and then deploy to your cluster without having to re-test everything. Since the container wasn't changed it should work.

It's a way of isolating dependencies between various pieces of software using one single container to hold them all.

Of course this approach has its own unique set of problems, but it solves certain things quite elegantly.

I hope that explains it and that if it is wrong in some aspect that someone will correct me.

<comment><USER17> _Normally you would have two choices: ship the source with a bunch of readme 's and let the recipient figure out how to install your software and all dependencies and to resolve any conflicts with other software already on the machine (aka version hell). Or you could ship a VM image._

Option 3: use a package manager.

Now, I realize this doesn't solve the existing software conflict problem you mention. Nor is it mutually exclusive with shipping an image: you could always construct an image by installing packages into it.

I've always been a little wary of the "ship a golden image" idea. How do Docker images get updated? What if there's a security issue with software in the Docker image -- can my package manager automatically apply security updates? How do I push other upgrades to the client once they have a Docker instance -- do they need a whole new image from me? Package managers have solved these problems, and I hope we're not reinventing those solutions in the Docker world.

If you're familiar with Docker, please enlighten me on these points.

<comment><USER18> My understanding: If you provide an image then, yes, you're supposed to build a new image every time there's an OS security update. Users of docker containers aren't supposed to run 'apt-get upgrade' themselves inside containers. In fact, people build who build app images on top of base images aren't even supposed to run 'apt-get upgrade' in their Dockerfile---it's the responsibility of the base image to be up-to-date. See:

[http://crosbymichael.com/dockerfile-best-practices- take-2.ht...](http://crosbymichael.com/dockerfile-best-practices-take-2.html)

This does seem to get a bit cumbersome. I'm at DockerCon today and Fabio Kung mentioned in his talk that this is one difference from Heroku's container platform---they provide the base image and can update it _without_ requiring you to rebuild your application slug. He said there's been some discussion of a possible "docker rebase" command that would produce new images by replacing lower-level layers while keeping higher-level layers the same.

<comment><USER19> docker rebase sounds like an awesome idea. Is there a mailing list thread or GitHub issue?

</comment></comment></comment></comment></comment></comment><comment> Dorian-Marie Here is the CHANGELOG: [https://github.com/dotcloud/docker/blob/master/CHANGELOG.md](https://github.com/dotcloud/docker/blob/master/CHANGELOG.md)

        1.0.0 (2014-06-09)
        Notable features since 0.12.0
        * Production support

</comment><comment><USER20> Note that Docker 1.0 (and the brief 0.12.0) changed its TCP port from 4243 to 2375. If you use a remote client (like `brew install docker`) and have `DOCKER_HOST=4243` in your environment, you'll have to update it.

To ease this pain across a large team, I'm considering using netfilter/iptables or a TCP proxy to make the old port available in our VM environment during transition.

[https://github.com/dotcloud/docker/commit/5febba93babcf8c4b0...](https://github.com/dotcloud/docker/commit/5febba93babcf8c4b01862e88b6f6e11a1532bc8)

</comment><comment><USER21> Do we know yet if mounting a directory from host as a data volume is available in Mac OS X now? I think something along these lines was promised (not able to find the source now) - it's the only thing blocking me from using docker as my everyday dev environment.

<comment><USER22> I've been working on getting a dev environment set up with docker over the weekend, and I finally have something I'm happy with.

I don't have a nice blog post to show you, but the basic idea is:

\- Use the CoreOS Vagrantfile (+ extra files like user_data and any service unit files)

\- Share your local directory with the vagrant box with config.vm.synced_folder (just uncomment a line in the Vagrantfile)

\- set the DOCKER_HOST and FLEETCTL_TUNNEL env variables so that the local tools work transparently with the vagrant box.

\- Then you have the option of running a docker image with -v and sharing the vagrant directory with the docker container, or

\- You can dive into CoreOS stuff and write a unit file for your service, and that will share the directory with -v

Now local files sync into the docker container, and if the server is configured to reload on file changes you're good to go.

<comment><USER21> Thanks a lot, I'll give this a shot tonight. Not too familiar with CoreOS yet; I was hoping that I'd simply be able to mount a volume similar to how I might do it in Linux. I understand the problems with doing that though...

</comment></comment></comment><comment><USER23> See here: [https://github.com/dotcloud/docker/blob/v1.0.0/CHANGELOG.md](https://github.com/dotcloud/docker/blob/v1.0.0/CHANGELOG.md)

Not sure what "Production support" really means.

But, Docker is awesome software!

<comment><USER8> Quote from the blog post:

> First, while many organizations have cheerfully ignored our "Do not run in > production!" warnings, others have been waiting for a level of product > maturity before deploying production workloads. This release's "1.0" label > signifies a level of quality, feature completeness, backward compatibility > and API stability to meet enterprise IT standards. In addition, to provide a > full solution for using Docker in production we're also delivering complete > documentation, training programs, professional services, and enterprise > support.

</comment></comment><comment><USER24> A release that seems somewhat rushed, and a Red Hat media event tomorrow. I wonder if the two are related.

<comment><USER25> Today is the first day of docker con [1], that is surely the reason for the announcement.

1\. [http://www.dockercon.com/](http://www.dockercon.com/)

</comment></comment><comment><USER26> Congrats to the team - I'm wrapping up a deployment on 0.11 now; and, though there are definitely some pain points, docker wasn't even near the most painful part of the process.

</comment><comment><USER27> Version was changed to 1.0.0-dev in Github. I think this was accidental that the version said 1.0.0.

<comment><USER28> Docker .11 was also Docker RC 1 for 1.0, .12 was RC 2. So I think it may not be accidental.

<comment><USER27> Yep, I was wrong, [http://blog.docker.com/2014/06/its-here- docker-1-0/](http://blog.docker.com/2014/06/its-here-docker-1-0/)

I was just a little skeptical since there wasn't an official blog post to go with it

</comment></comment></comment><comment><USER29> This is awesome! Now CoreOS just needs to follow suit and hit 1.0...

<comment><USER30> In their last article they said they're about a week behind, so by next week we should be production ready on all fronts. Cannot wait.

</comment></comment><comment><USER31> You'd think IPv4 connectivity with containers would be high up the priority list to get working: [https://github.com/dotcloud/docker/issues/2174](https://github.com/dotcloud/docker/issues/2174)

<comment><USER15> It looks like it is pretty high on the priority list, the last update in that thread is on Friday.

</comment></comment><comment><USER32> Docker has a lot of potential and I recently really dug into it. Seems like there are still some rough edges though.

For example, when working you end up with a lot of old items or layers hanging around, and its not clear how to remove or collapse them. I've seen posts complaining about this.

Also, on some commands it outputs the the id as the first column, and sometimes the fourth, or other column. This will make script pipelines harder to write.

I've not gotten far enough to worry about logs, but I hear there is an issue with them.

It is very true I may not be using it correctly... or there could have been lots of stuff still to be done for a .12 release?

<comment><USER33> I think most (all?) of the commands can be performed over the API with JSON coming back, so the order of output shouldn't matter too much.

<comment><USER34> JSON over HTTP is not an alternative to a good CLI interface. As such, your comment, although true and happily so, is a non-sequitur.

</comment></comment></comment><comment><USER35> Can someone explain to me the practical differences between vagrant and Docker? I know they're implemented in quite different ways, but in my utterly non-devops mind they seem to achieve the same thing. Wrong?

<comment><USER36> Scroll down to the bottom of this page to see Docker VS VM's.

[https://www.docker.com/whatisdocker/](https://www.docker.com/whatisdocker/)

</comment></comment><comment><USER37> At last, it was already production ready, mostly bug free and fast enough, but having 1.0 release makes one more comfortable when they highly depend on it.

</comment><comment><USER38> I am right in thinking that Docker can virtualize any environment, as long as that environment is Linux, right? Because I have an office plugin I need to test against various different version of office and content management repository and so on and it feels like this would be ideal.

Possibly I'm reaching here - but I thought I'd ask anyway, I don't know much about Docker.

<comment><USER39> The Microsoft Azure team is talking at DockeCon tomorrow. It's just the tip of the iceberg in terms of our collaboration together. More to come. I'm extremely optimistic.

</comment></comment><comment><USER40> What is the difference between this and rpm+puppet with rpm+puppet I have no problems installing my apps with my dependencies to any server and best of all as its the developers who create the rpms+puppets they hand it as a building block to production who install it in a few seconds on any machine.

</comment><comment><USER41> Gripe:

When you start a container and forget to forward a port into it you can't do it at a later time. This is braindead.

</comment><comment><USER42> Sadly there is no new things to support FreeBSD Jails, a competitive (and much more matured) container technology than Docker's default LXC (despite earliers mentions of plans for supporting FreeBSD in version 1.0)...

<comment><USER43> I think that what you're asking for (a Jails execution driver) is really _not_ so far out of bounds, mostly given that FreeBSD has really good support for binary compatibility and Linux emulation, so FreeBSD is actually the _one_ good platform to try this with (one of the best candidate platforms?) but one thing, that people all keep repeating this about LXC makes me grumpy...

The LXC driver is _not_ the default anymore as of ~0.9, Docker switched to pluggable execution and storage drivers at that time and shortly after, started using the new "native" driver for execution (which does not use LXC at all, but uses the underlying kernel services directly, like namespacing and cgroups, that are also used by LXC).

The execution driver LXC provides the same experience from before the pluggable driver model happened, and it's still available but not the default anymore.

Am I being pedantic, is my information wrong, or has this just not been heavily publicized before (maybe it's actually a very small distinction and I should stop repeating it?)

<comment><USER12> I don't think the binary compatibility and Linux emulation will be anything useful - there is no emulation of containers, and no one would want to run a Linux process in their container.

But yes, some framework is there.

<comment><USER43> I think the point would be not to use linux containers or any abstraction around the parts that fuel LXC, but to use BSD Jails on the idea that they are "battle tested"

Just as you might not trust Docker's native driver more than LXC, if you most cynically regarded LXC as an "example of a failed marketing experiment" and then Docker as "the first notable consumer of cgroups and linux kernel namespacing, and certainly too new yet to trust with anything important" \-- but there are plenty of high-profile consumers of the FreeBSD jails and it is trusted by many to keep processes separate.

I mentioned emulation and binary compatibility, maybe because it's the thing that's missing in many other cases that wind up being responsible for alternative platform support getting back-burnered and second-classed in Docker community.

Where there might be lots of people who want to use Docker on i386, it's not supported probably most of all because it would lead to a bad user experience and fragmentation. Binary images are all built for amd64 linux at this point.

I bypassed the warnings, I use it, I'm not bothered that I have to rebuild for my specific architecture. The docker users at large can still use my images, and maybe I'm a bad citizen for pushing images compiled this way, but it works.

Similarly there are probably a lot of people testing Docker on ARM, but they can't use any of the pre-built containers that are provided by the majority docker community, tested and supported. Their architecture is even farther out from being supported. They have the drawback that they can neither receive blood from "O" nor give to "AB" if you'll indulge the analogy of images to blood types, they have one of those weird blood types that doesn't even register in the statistics with a reasonably sized sample. Anemic, maybe.

If you had a jails execution driver, you certainly don't have to use Linux processes or binary emulation, you can build your containers with a BSD base and BSD toolchain. The point is that in theory, you probably could skip that step and get working with existing binary images built from Linux distributions.

It would quickly be a better "alternative platform" than any of the other existing contenders (different architectures) who you could already see in the docker ecosystem at this point; it could probably run many existing container images out of the box, on a FreeBSD host with amd64 architecture.

The contained software really shouldn't care what execution driver keeps it isolated, at least in theory. In practice someone with more knowledge than me can probably say what a bad idea this is, maybe because either "congrats, you just invented Virtualization" or "wrong, jails won't keep those processes separated."

<comment><USER12> Isn't the FreeBSD Linux emulation still 32 bit only? I can't find any reference saying that changed. In which case it there isn't any way compat would work. I think docker will give in and support multiple repositories at some point, as all these osx people are going to want native stuff, and the arm (and arm64) people will want something, and IBM will have a big docker on Power8 push and so on... Linux amd64 will do doubt be the biggest platform.

(someone should look at porting the netbsd amd64 linux emulation to freebsd...)

</comment></comment></comment></comment></comment><comment><USER44> Join #docker on IRC for anybody struggling with Docker. Everybody is very helpful on there. And I have learned a lot just by supporting others, and asking questions myself.

</comment><comment><USER45> Looks very promising. Too bad their jobs page says they only want engineers with Go experience. Why does language matter?

<comment><USER46> Probably because they're developing very fast presently, and a fashionable- enough company that they get a lot of good applicants and can afford to be choosy with hiring.

</comment></comment><comment><USER47> Great news! I just wonder why Docker is getting so much attention and Google's lmctfy doesn't get any?

<comment><USER48> Docker and lmctfy have largely joined forces - Rohit and Victor are now core maintainers of Docker and kicking ass contributing all sorts of low-level system awesomeness :)

[https://github.com/dotcloud/docker/blob/f4b60a385cbaae045674...](https://github.com/dotcloud/docker/blob/f4b60a385cbaae045674146644294e9c55129b3f/pkg/libcontainer/MAINTAINERS)

<comment><USER47> That explains it, thanks!

</comment></comment></comment><comment><USER49> I haven't given docker a try yet, but I think I might have to give it a go.

</comment><comment><USER50> Congrats on the 1.0 Docker!

</comment><comment><USER51> Anyone know if there is a livestream or videos available from Dockercon?

<comment><USER52> No livestream but they'll be posting videos after the conference.

</comment></comment><comment><USER53> Congrats to the Docker team on 1.0!

Every time I use Docker it leaves a grin on my face.

<comment><USER39> Thank YOU. Users are amazing. Use more. Keep it up!

</comment></comment><comment><USER54> Is the devicemapper storage driver ready to use in production?

<comment><USER55> Why wouldn't it be?

<comment><USER56> When I was working on a docker-based build/test/deploy solution a few months ago, its performance was so anemic I wanted to tear (what's left of) my hair out, especially during a development/testing cycle.

I got sidetracked by other things and haven't gotten back to it, but if I do and it's still as bad as it was, I don't think I'll want to continue on that path.

<comment><USER57> I haven't seen the code but have played with LVM2 LVs / device mapper myself on my own containers-based infrastructure and also seen performance issues in some situations.

Fundamentally (1) LVM2 LVs are capable of single-depth snapshots only, forcing hacks like an actual full blockstore copy if code expects duplication. (2) Docker was written primarily against _aufs_ which provides rapid arbitrary- depth snapshots.

I suspect this is the heart of the issue... ie. Docker expects features this storage subsystem wasn't designed to support.

</comment></comment></comment></comment><comment><USER58> Is there a way to add a Docker Webhook programmatically?

</comment><comment><USER59> Congrats! I would love to see user namespace support.

<comment><USER39> "It's complicated" \- crosbymichael, my favorite maintainer of all time.

Rest assured we're working on it and it's a priority.

<comment><USER48> Yes, user namespaces are coming soon.

</comment></comment></comment><comment><USER60> Great work!

</comment><comment><USER61> Url changed from [https://github.com/dotcloud/docker/releases/tag/v1.0.0](https://github.com/dotcloud/docker/releases/tag/v1.0.0), since there were two threads on the front page and this one has the more extensive discussion.</comment>


Why are you still using Adobe flash? - <AUTHOR> http://www.gnashdev.org/?q=node/25#os

<comment><USER2> Because gnash doesn't work.

<comment><AUTHOR> Actually, it works flawlessly. At least, that's what I found out recently. I am using it on Arc Linux and FreeBSD systems. If something like flash software works on FreeBSD (which is more of a server system), it will surely work on any Linux. (And if something is available on relatively less popular linux distro like Arch Linux), I am sure it works on Ubuntu and Fedora.

</comment></comment><comment><USER3> To get access on users webcam while webrtc isn't ready.</comment>


A Family Who Sold Their Belongings for Bitcoins - <AUTHOR> https://motherboard.vice.com/en_us/article/j5jq93/we-talked-to-the-family-who-sold-their-belongings-for-bitcoins?utm_source=mbtwitter <comment><USER2> I have heard about bitcoin when it all started and did not give a damn about it. Then my friend invested a lot into mining not because of financial incentives but because it was fun. It was fun for him that he bought the GPUs and then ASIC miners. Bitcoin was worth peanuts back then.

Then prices started to grow. I thought it was too late when it was on 200. Then the value dropped. And then again the price increased to 1000$ and again I waved it that it's too late. Then the price dropped to 400 and then again it continued to grow until today.

You will always be late to invest if you do not do your homework or are too risk averse.

<comment><USER3> > _You will always be late to invest if you do not do your homework or are too > risk averse._

The stock market is _full_ of "investment" ideas like this, rising thousands of percent over short periods. Are you researching all those penny stocks? Why not?

<comment><USER4> Great point. Seriously. Wait until all those people who mined it using not their own hardware ( yeah, you know who are ) are litigated by their company and secondly, has the U.S government reconized it?

Blockchain is here to stay, bitcoin is unproven, especially with scale.

Just my opinion.

</comment></comment></comment><comment><USER5> _I still have to gain experience as a day trader. But even if we lose everything, that 's not really what it's about. As long as we have each other, everything will be fine. And if necessary, I'll find myself a job and start from scratch. But what if things go really well? If it makes us financially independent and makes possible the life we all dream about? Sometimes it's so wrong to take a step back. With a bit of luck, it'll bring you three steps forward._

Oh, SHIT!

<comment><USER6> What's wrong with that? Are you so attached to material stuff that you'd be devastated if you lost it all? Seems reasonable to me. Worst that happens, you go back to working like most people do.

<comment> aaron-lebo It's a little riskier when you have a family. His kids already had great lives, they could end up with nothing if he's made a bad bet.

<comment><USER7> Or they could be set up for life. Everyone has different comforts with risk. They're the only ones who can decide whether they're comfortable making that bet.

Also, since this article was posted, Bitcoin probably doubled. If he invested a few 100k, that's a pretty decent (paper) gain so far.

<comment> aaron-lebo Of course, that's the tradeoff. That's why with kids it is a little different, it's not just your comfort with risk, you are now risking their future and they don't really get a say in that.

<comment><USER7> Maybe. My cousins husband is quite wealthy, but they are frequently leveraged to the hilt (margin debt, mortgages, etc). All for investment and tax purposes though, not spending.

He's done really well (probably made €50m+ since 2008), but they were pretty much all in at several points. As long as you know why you're taking certain risks, it's probably fine. Even if they don't all work out.

</comment></comment></comment></comment></comment></comment><comment><USER8> I just don't understand Bitcoin as an investment, especially in 2017. Isn't it too late to do this? How much higher can the price possibly get? (Edit: Of course, I just remember saying the same thing when the price hit $2,000)

<comment><USER9> Honestly, I'm not sure. Millions USD per BTC? It seems slightly ridiculous to me. Maybe I should find a way to buy shorts instead.

<comment><USER10> You can short Bitcoin (with respect to USD or other cryptos, but I assume you're interested in shorting BTCUSD) on pretty much all the bigger exchanges. Bitfinex offers it, Kraken too. You'll have to pay a lending fee for the BTC that you short on Bitfinex, which differs depending on the current short-to- long ratio (more people shorting = higher lending fees) and which can get quite high in extreme cases, so long-term shorting on Bitfinex can become an expensive endeavour. Kraken on the other hand has a fixed fee for open short positions, which is quite affordable also in the long term, but they have a limit on the amount of BTC shorts that they allow to exist concurrently on their platform, so it's possible that you can't open any more shorts until someone else closes his positions.

Shorting can be quite lucrative, especially during bear phases. However, you can just as easily burn your fingers - I did quickly earn a nice 4-figure amount shorting ETH (and some BTC) in the middle of the year, during the first bear phase, but I got caught up during the bull phases afterwards, since I expected a pattern more closer to the bursting of the 2013 crypto bubble which was an overall bear, but with bull phases in between. This time it was an overall bull phase with short bear phases in between, and by the time I accepted my fail, I had lost all my nice shorting proceeds (and quite a bit more, but made up for that easily with price appreciations of cold storage cryptos, so I'm at least net positive now).

Shorting is king when the overall pattern is a bearish one, but when it's not clearly bearish, you've been better off longing at good entry points, as cryptos have historically been more likely to grow in price than to shrink. But as always...past market trends are no useful indicator for future trends.

<comment><USER11> Beware: Many exchanges are especially dodgy, and possibly insolvent. (Bitfinex in particular!) If the market price plummets, the exchange might collapse and you will struggle to get your winnings out...

<comment><USER12> Care to post any proof? Bitfinex had the opportunity to close shop after being hacked, yet they chose to pay everyone back.

<comment><USER13> Not the parent, but the way in which Bitfinex paid everyone back was extremely dodgy[0]. They also decided to help themselves to 15% of everyone's BCH after the August 1 fork[1]. I don't understand why anyone would trust them.

[0][https://medium.com/@bitfinexed/bitfinex-never-repaid- their-t...](https://medium.com/@bitfinexed/bitfinex-never-repaid-their-tokens- bitfinex-started-a-ponzi-scheme-86a9291add29)

[1][https://news.bitcoin.com/bitfinex-bitcoin-cash-deposits- with...](https://news.bitcoin.com/bitfinex-bitcoin-cash-deposits-withdrawals- credits-15-less/)

</comment></comment></comment></comment></comment></comment><comment><USER14> One thing I struggle with is what is the 'right' price for a bitcoin. How do you calculate that? You hear such wildly divergent claims I just have no idea.

<comment><USER3> > _One thing I struggle with is what is the 'right' price for a bitcoin. How > do you calculate that?_

Do you think Bitcoin is money?

Then the right price is simple: The amount of goods you can buy for 1 hour of labour should be equal between USD and BTC. If you can buy an apple pie for $5USD, then you should be able to buy a pie with $5USD in BTC. The problem is no one is actually selling anything in BTC in the real world.

If you think Bitcoin is money, you shouldn't be "making money" off it anymore than buying another currency in USD. The fact that it is increasing exponentially in price is a bug, not a feature.

<comment><USER15> > Do you think Bitcoin is money?

Let's say yes.

> Then the right price is simple: The amount of goods you can buy for 1 hour > of labour should be equal between USD and BTC. If you can buy an apple pie > for $5USD, then you should be able to buy a pie with $5USD in BTC.

OK. So how exactly do we compute the "right" price for Bitcoin from this? I struggle to do this simple math.

<comment><USER16> You're selling an apple pie for your own currency piecoin. If I to buy a pie from you I have to buy x piecoins first to match your price whatever it is. My need of a piecoin is defined by the need of our settlement for a pie ('right' price). Usually, pie like yours costs $5 so I have no incentive to pay more for your pie. If your price for a pie is x piecoins then I will buy x piecoins for $5 and 1 piecoin will cost me x/5.

'Wrong' part of a price is about modelling other people need for piecoins which in turn is about modelling need for pies and other people speculation and that's can be incredibly complex. As you can easily see 'wrong' part of a price makes your coin shitty currency.

<comment><USER15> None of this answers my question for how exactly to do the parent's math for Bitcoin, which the parent claimed was simple. None of this even talks about Bitcoin, which was specifically what I asked about.

</comment></comment></comment></comment></comment><comment><USER17> Terrible that these parents aren't legally allowed to homeschool their own children. That's government stepping in too far.</comment>


Things I Won't Work With: Peroxide Peroxides - <AUTHOR> http://pipeline.corante.com/archives/2014/10/10/things_i_wont_work_with_peroxide_peroxides.php <comment><USER2> I was one of those kids that read that the original Bell jetpack used Hydrogen Peroxide with a silver catalyst for "fuel". I tried it on the peroxide I bought from the drug store and it didn't work. So I figured "oh it just needs to be more concentrated." My friend and I built a pretty crude still and about 10 gallons of 5% hydrogen peroxide. I don't know what the concentration was when we finished, but I do remember trying to pour some into a steel pipe which was to be our "tank" for our test rocket. To say that I was startled by the pipe being yanked out of my hand by the steam exploding out of its end would be an understatement :-) We spent the rest of the afternoon "blowing up" ant hills in the desert by pouring like a quarter up of our distillate on to them.

<comment><USER3> How? How!?

How is it you always have cool and relevant stories!?

<comment><USER2> I chalk it up to curiosity on my part and survivor bias on the stories part. Folks who have known me for a long time know that I am a very curious person and I spend an inordinate amount of my spare time reading and "investigating" things (which my wife calls puttering). But there is also a bit of survivor bias here, it only seems like it is true because I don't have any stories to share on a lot of things here and elsewhere and don't. Oh and I'm "old", so I've got a lot of time between when I started doing crazy stunts and now, so even doing only one every couple of years I've got double the number of crazy stories than a "young" guy :-). That said, I'm sad that during my high school and college years the (late 70's early 80's) it was so much easier for me to explore things, whether it was the high school district's shared mainframe, or home made high concentration HOOH than it is today. No doubt if I were one of my own kids growing up in the 90's I would have been arrested and my parents assumed to be poor examples of responsible adults.

<comment><USER4> Agree on the parent part. If I let my kids do anything remotely close to what I did as a kid, CPS would never let me see them again. I left in the morning and came back at dark, with no check in. I did experiments with things I learned in the Anarchists cookbook. Its amazing what you can blow up with household objects. You kids today have it easy blowing up stuff - just go on Youtube. In the early 80s you had to know someone to get the really bad somewhat illegible copy. My kids love watching Mythbusters when they blow things up. I wasn't sure whether to be happy or worried when my 8 year old asked for Polycarbonate blast shields. He was thinking of things he wanted to blow up, and how to do it. That made me worry. He wanted to do it safely and had given some thought to shield and remote triggering. That made me happy, i did not have the same focus on safety as a kid and burned my eyebrows off several times. As of today we have not done anything, he has got his attention on other projects and I am not going to bring it up.

TL:DR - typical 12 year old kid from 1982 would be labeled child Al Quaeda terror cell, parents would go to jail for 25 years.

</comment></comment></comment></comment><comment><USER5> I spent some time at the remaining facility in the country making the really interesting rocket fuel. The most fascinating thing to me (aside from the multiple armed security checkpoints required to visit the food lab we were visiting) was the setup of the buildings. Nearly all of them were ~500yds apart, set in between massive ~50ft tall, ~100ft wide earthen berms. The _really_ interesting buildings had escape slides coming from the second floor. Each building at the roadside had the familiar NFPA diamond for response crews. I've never seen so many "4"s on that diamond in my life.

<comment><USER6> I used to work at a pilot plant that did large scale synthesis of pharmaceuticals. The plant was a concrete structure with each reactor surrounded on three sides by two foot thick concrete walls.

The interesting thing was that there was no outside wall to the building, just a woven steel curtain. If something did explode you wanted a path for the debris. On the outside of the building was a curved ramp, like a skateboard half-pipe. That way any explosion would be directed upward rather than outward.

<comment><USER7> My favourite chemical bunkers are the ones with a couple of feet deep gravel on the roof. So if there is an explosion, the resulting fire is smothered I assume.

<comment><USER8> Another _Things I Won 't Work With_ entry: "Sand Won't Save You This Time"

[http://pipeline.corante.com/archives/2008/02/26/sand_wont_sa...](http://pipeline.corante.com/archives/2008/02/26/sand_wont_save_you_this_time.php)

</comment></comment></comment></comment><comment><USER9> How to Blow Up Your Kitchen With Hydrogen Peroxide.

A few years ago, upon returning home after work, my my wife told me that her mother had blown blown up her kitchen but that she was OK. (My late mother-in- law was a wonderful person BTW.)

I can be prone to inattention when my wife speaks to me but this, this got my attention. :-)

My mother in law was an antique dealer. To restore/bleach old china, she would put some (hair dresser grade) hydrogen peroxide in in/on the china in question and let it warm in the oven.

One day she did this, but for some reason, this time she used her kitchen microwave instead of the oven. While it was warming she stepped out of her kitchen (to put something in the recycle I think) and luckily escaped the blast that blew out her kitchen window and sent her microwave into the Great Beyond.

When the fire department came she, I guess, feigned ignorance of what could have caused it. She was after all, a sweet old lady.

After my wife finished telling me the story, I mentioned something to the effect that "You realize they used hydrogen peroxide in the German V2 rockets?"

A picture of the remains of the destroyed microwave was displayed at her funeral.

R.I.P. ma

<comment><USER10> That is really cool.

Any chemists care to comment on why the peroxide would explode in the microwave but not the oven?

<comment><USER6> [http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=166634...](http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=1666345&url=http%3A%2F%2Fieeexplore.ieee.org%2Fiel5%2F11051%2F34864%2F01666345.pdf%3Farnumber%3D1666345)

These guy tested the decomposition of hydrogen peroxide across a range of microwave frequencies.

Since hydrogen peroxide decomposes when heated, I'm guessing it's just due to the microwaves heating the mixture.

</comment></comment></comment><comment><USER11> This is a wonderful series that (rightfully) gets posted here a lot. I'd like to point out that the author's blog is also worth digging into for interesting and insightful posts about the modern pharmaceutical industry. For example: [http://pipeline.corante.com/archives/2012/03/08/erooms_law.p...](http://pipeline.corante.com/archives/2012/03/08/erooms_law.php) (how knowing more has actually made us worse at finding effective drugs).

<comment><USER12> Indeed. Be sure to click through: [http://pipeline.corante.com/archives/things_i_wont_work_with...](http://pipeline.corante.com/archives/things_i_wont_work_with/)

<comment><USER13> This is very bad advice if you have anything else you need to do today.

<comment><USER12> On the other hand, It Might Just Save Your Life!

... though one hopes that if you were planning on doing anything for which that would save your life that you'd already have a good idea of just how likely your day was to be spent dodging rapidly moving glassware. But hey, great lede for my little reply here, right? If this programming thing ever gets old maybe I can get a job writing the 11 o'clock news.

</comment></comment></comment></comment><comment><USER14> I came here to say that fluorine is even scarier in some ways. Sure enough he's covered it: [http://pipeline.corante.com/archives/2008/02/26/sand_wont_sa...](http://pipeline.corante.com/archives/2008/02/26/sand_wont_save_you_this_time.php). I really wish he was my chem professor back in school.

Speaking of Oxygen though, I once attended a lecture/Q&A by the Myth Busters. It was pretty cool, and during the Q&A portion someone asked "Is there a myth you started, and then backed out?". They said that they won't do anything with liquid oxygen. They had a few myths about it, did some research, and realized that it can set pavement on fire. They then decided not to proceed.

<comment><USER15> That's nasty, but my favorite florene compound is still the apply named FOOF also known as "Satan's kimchi".

[http://pipeline.corante.com/archives/2010/02/23/things_i_won...](http://pipeline.corante.com/archives/2010/02/23/things_i_wont_work_with_dioxygen_difluoride.php)

"And yes, what happens next is just what you think happens: you run a mixture of oxygen and fluorine through a 700-degree-heating block. "Oh, no you don't," is the common reaction of most chemists to that proposal"

"When 0.2 (mL) of liquid 02F2 was added to 0.5 (mL) of liquid CH4 at 90°K., a violent explosion occurred."

I mean how can't you love a substance that will violently detonate things at -180C.

</comment></comment><comment><USER16> I wonder why the author is so caustic in regard to hydrogen peroxide.

Here - [http://yarchive.net/space/rocket/fuels/peroxide.html](http://yarchive.net/space/rocket/fuels/peroxide.html) \- second message mentions Clark's "Ignition!" facts, and in first Henry Spencer states:

While there are some storage headaches -- the stuff decomposes slowly no matter what you do, so you must provide for tank venting -- otherwise peroxide is much easier and safer to handle. Its bad reputation is half outright myth and half the result of 1940s experience with seriously impure peroxide. To quote a friend, a rocket-propulsion professional, who investigated the matter as part of a study some years ago:

"As far as we could find out, the stories about problems with peroxide were just that, stories... Peroxide, now, seems to only very rarely do anything exciting, at all. And, even then, it seems to never do many of the things attributed to it in the stories."

Of course hydrogen peroxide can be dangerous - relatively recent explosion in Sweden (peroxidepropulsion.com) reminds us about that. At the same time significant volumes of it with more than 70% concentration are routinely used - so a chemist can calibrate the feeling.

<comment><USER6> As a former-chemist, I can attest that oxidizers in general are pretty concerning.

You are correct that hydrogen peroxide (even up to 70%) is pretty safe by itself, but a chemist like Derek Lowe would use hydrogen peroxide in a reaction. Since he's an organic chemist, nearly every reaction is going to involve adding that oxidizer to a reducing agent (almost every organic molecule out there). When you add an oxidizer to a reducing agent, you're creating an unstable mixture that would love to explode. Just because it hasn't exploded on people in the past, doesn't mean it won't in the future.

I can remember doing some really stupid things when I was in grad school. I had a create pure m-CPBA [1] for a reaction (great! an oxidizer and reducing agent all in one molecule!!). Thinking I was smart, I purified a a lot of it, like 20 g (smart folks only purify what they need, like 1 or 2 g). To make sure it was dry I put it on a vacuum pump and then heated the flask with a heat gun. Nothing happened, but looking back I was dam lucky it didn't explode. If it had, I likely would have been seriously injured.

[1] [http://en.wikipedia.org/wiki/Meta- Chloroperoxybenzoic_acid](http://en.wikipedia.org/wiki/Meta- Chloroperoxybenzoic_acid)

</comment></comment><comment><USER17> I realize i barely know anything in chemistry. I have zero practical knowledge and would be almost incapable of performing any kind of chemistry exercise anymore ( yet i do have a scientific background).

Anyone here could recommend a book or a serie of books to get myself into shape on that subject ?

<comment><USER18> my sincere advice (as an ex-chemist) is - don't. i suspect you'll want to do something 'fun' and 'fun chemistry' can go very bad, very quick. go fast and break things has never, never been a motto in a chemistry lab (even the dragon tail stories in the manhattan project were despite advice to the contrary).

most of a senior/PG chemistry degree is about learning how to work with this stuff and it's not book learnin' so much as translating what should happen, into what could happen and then what shouldn't ever ever ever happen. this is best done in a practical mentor-tutor fashion. even saying that, most uni's are really crap at protecting their chemistry students. I damn near killed myself _after_ getting my PhD and didn't really learn how to analyse the risks until i worked in industry (which leveraged 8+ years of theory)...

</comment></comment><comment><USER19> It is a bit frustrating to read this when you lack the necessary intuition. Why is a bond strong or weak, what do these atoms want to bond with and how is this all related to stuff blowing up?

<comment><USER20> Let me try my hand at simply explaining this.

Atoms are composed to two sections:

A positively charged center -- the nucleus.

A negatively charged outside -- the electron cloud.

When several atoms get together, they do so because their electron clouds start intermingling. This sharing of their electrons is fundamentally what a bond is.

A bond is strong when both of the atoms really want their electrons to intermingle. Conversely, a weak bond is when the atoms are "forced" to be next to each other and intermingle. Strong bond = opposite poles of a magnet next to each other. Weak bond = similar poles of a magnet next to each other.

Somewhat counterintuitively, it's not the fact that the bond's want to separate from each other that makes something really explosive/reactive.

To really understand what's going on, you have to take a look at the energetics (thermodynamics) of how a reaction proceeds. The tendency of the physical world is always towards disorder (entropy). Rather than becoming more ordered, every single atom in the universe wants to be more comfortable.

Think back to our magnet analogy. Magnets with the same pole facing each other really don't want to be next to each other. In fact, they'd LOVE to find another magnet with the opposite pole facing them. The magnets which have a weak bond find it really, really easy to separate. In fact, almost anything will split the connection. However, those magnets, once separated, must find another (opposite) partner for them to pair up with. The amount of energy that they release when they find their perfect mate is evidenced by the fact that the magnets will literally hop across short distances and smack together in a satisfying *crack.

What we also know in thermodynamics is that energy cannot be created, nor destroyed. Thus the net energy in any reaction must be equal on both sides. We know a couple of things:

The energy required to split the weak bond is really, really little.

The energy released when a strong bond is formed is a lot (in fact, you hear the release of energy in the form of heat and sound!).

Atoms prefer strong bonds to weak ones (entropy).

Putting everything together, when you have an molecule with extremely weak bonds (HOOOH), it takes almost no effort for those bonds to come apart. However, when those oxygens go find other molecules to bond with, that releases some energy. Thus NET ENERGY is heavily favored in the exothermic (release of energy) direction. When enough of those super weak bonds are broken, and when enough of the strong bonds are formed rapidly, you have a simultaneous release of a huge amount of heat --- an explosion.

Sorry if that's a little long, but I tried to explain your questions. (Which was a fundamentally very interesting question!)

<comment><USER21> I found this super helpful. Thank you very much for taking the time to write it.

<comment><USER22> it's actually got a lot of problems with it. Preferring strong bonds to weak ones is _enthalpy_. Entropy is (roughly) "preferring to make m product molecules over n molecules when m > n because the combinatorics of their positions is bigger"

Energy is the total sum of the Entropic and Enthalpic components. (entropy takes a negative sign because more entropy is preferred; less enthalpy is preferred)

The text also doesn't explain what makes for high vs low energy. I'll try to explain this.

An electron is a wave. Two rules to remember: 1) a wave has higher energy when it has more nodes. 2) electrons have higher energy when it spends time 'away' from positive charge. The shapes of these waves are constrained by quantum mechanical rules, but generally speaking a 'higher energy' bond has either more nodes or has more density away from the nuclei.

<comment><USER20> You're certainly correct.

I was just attempting to keep it simple.

<comment><USER22> yeah, I'm usually pretty good at explaining things simply, but none of the explanations here are making me happy, and I can't come up with a good explanation that encapsulates my intuition. Perhaps that means that I don't actually understand it very well myself.

</comment></comment></comment></comment></comment></comment><comment><USER6> I'm always amazed at the hazardous chemistry that some labs do! They are obviously taking the necessary precautions, but I'm not sure I'd have the guts to do it.

I worked as a chemist for 7 years and witnessed 4 serious accidents, 3 of the 4 due to oxidizing agents (2 of them were peroxides). Some of the folks have scars to this day because of it.

<comment><USER7> Well, at least chemical reactions fall into the "fail early and loudly" category. You _know_ something is wrong.

Radioactivity and virus work strikes me as possibly more dangerous because of the relatively silent nature of the failures.

<comment><USER23> No, _some_ chemical reactions fail early and loudly.

For absolutely no explosive lulz _at all_ you could try for an exciting career in organic mercury compounds. (But first, I'd recommend checking out the wikipedia entry for Karen Wetterhahn: [http://en.wikipedia.org/wiki/Karen_Wetterhahn](http://en.wikipedia.org/wiki/Karen_Wetterhahn) )

Or, did I say "no explosive lulz"? Apparently at one point the USAF considered using dimethyl mercury _as a rocket fuel_. (Source: buried in "Ignition: an informal history of liquid rocket propellants" by John D. Clarke, which can be found here: [http://library.sciencemadness.org/library/books/ignition.pdf](http://library.sciencemadness.org/library/books/ignition.pdf) )

<comment><USER7> True Charlie, I should have said _most of the time_...

The Wetterhahn case was mentioned in the original comment thread (or one of the articles linked from the original post) and was so shocking that permanent changes in regulations and practice occurred.

More mundane and work-a-day 'early failures' here...

[http://pipeline.corante.com/archives/2012/02/16/when_reagent...](http://pipeline.corante.com/archives/2012/02/16/when_reagents_attack.php#comments)

PS: Posting this from near the site of a biological failure that claimed two lives and (I gather) inspired one novel...

[https://en.wikipedia.org/wiki/Janet_Parker](https://en.wikipedia.org/wiki/Janet_Parker)

</comment></comment></comment></comment><comment><USER24> Derek's blog is one of the best blog's I have read. If you want to learn about the pharmaceutical industry and how the process of drug discovery really works (or doesn't work) then I recommend it highly.

On topic I wouldn't want to work with peroxide peroxides either :) Derek often has write up about what some of the really crazy organic chemists who work on unstable compounds do - truly eye opening for someone with a biology background like me.

<comment><USER25> Agreed. My favorite is still any post discussing Flouride bonds, particularly FOOF

[http://pipeline.corante.com/archives/2010/02/23/things_i_won...](http://pipeline.corante.com/archives/2010/02/23/things_i_wont_work_with_dioxygen_difluoride.php)

<comment><USER26> Fluorine can be _so_ dramatic.

I witnessed a test of a small (500 lb thrust) H2/F2 rocket engine. The fuel & oxidizer were fed into the combustion chamber with small turbo pumps, which was the point of the test. The native fluoride protective coating failed in the F2 turbo pump, and there was an explosion with subsequent metal/fluorine fire.

Blockhouse sealed off and we all grabbed the Scott packs as a yellowish cloud of fluorine drifted by, setting fire to sagebrush as it went. Can't beat exotic propellants for excitement.

<comment><USER27> I'm intrigued: what's a Scott pack? Is is just breathing apparatus? But since the gas cloud is setting organic matter on fire surely you'd need more than that?

Or is it just a good pair of running shoes?

<comment><USER28> Scott makes a variety of Self Contained Breathing Apparatus (SCBA) devices. Mostly you see them used by fire-fighters, but Scott offers chemical industry and oil and gas variants. Check out their SCBA offerings here: [https://www.scottsafety.com/en/us/Pages/ProductSeries.aspx?P...](https://www.scottsafety.com/en/us/Pages/ProductSeries.aspx?ProductType=d0mFzhYO7R8=)

I'm with you on needing more than that: anecdotally I was once advised to use an air filter plus nose clip in case of any accidental releases. I asked "Uh, like what?" "Oh, ammonia, that sort of thing." Needless to say if ammonia was released and it got to me I'd be blind anyway. :shrug: So based on entirely anecdotal experience I'd say yeah it's to hopefully help you run away. :-)

<comment><USER29> I've been told that some criminals like to keep ammonia in a squeeze bottle (like a jif lemon container) to be used as a weapon if necessary. Also handy that they can use it to clean their cocaine as well.</comment></comment></comment></comment></comment></comment>


Did Iran Just Rocket Creatures Into Space? Sure Seems So - <AUTHOR> http://www.fastcompany.com/blog/kit-eaton/technomix/rockets-iran-kavoshgar-3-space-race-organisms-missiles?partner=rss&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+fastcompany%2Fheadlines+%28Fast+Company+Headlines%29&utm_content=Google+Reader <comment><USER2> Guess Denmark won't be the third spacefaring nation then.

<http://www.copenhagensuborbitals.com/>

<comment><USER3> I guess the Chinese aren't people? Or maybe you're counting from index 0?

<comment><USER4> Or he was excluding the US. since everyone knows by now that their space program was done in a hollywood basement.

</comment></comment></comment><comment><USER5> I can understand the use of a rat and worms as they're traditional experimental models but why use turtles?

<comment><USER6> Gamera, FTW:

<http://en.wikipedia.org/wiki/Gamera>

<comment><USER7> It was a turtle AND a rat. Must be Donatello and Master Splinter

</comment></comment></comment><comment><USER8> Could this be a disguised ICBM test?

<comment><USER9> As the article points out, it's not even disguised -- a space-capable rocket _is_ an ICBM, if you swap out the payload.

<comment><USER10> But I thought the United States and Russia spent billions of dollars on their space programs for the Tang and cutting-edge science!

</comment></comment></comment><comment><USER11> What does it say on the side of the rocket (besides probably the name)?

<comment><USER12> ماهواره بر سیمرغ

To echo the sibling post, "Satellite-Bearing Phoenix" is an acceptable translation.

Literally, it is "Satellite upon Phoenix", where Simorgh is a Persian mythical bird roughly equivalent to a phoenix of western literature (See: <http://en.wikipedia.org/wiki/Simurgh>).

<comment><USER13> No, this is not a correct translation. The correct one is "Phoenix Satellite Launch Vehicle" or "Phoenix Satellite Carrier". It's just a mockup at this point.

This was just a sounding rocket, nothing more. No ICBM test, nothing like that. Third in a series of simple sounding rockets to test telemetry and command. First launch of such a rocket since Iran put a small satellite into LEO last year.

<comment><USER14> There's very little practical difference between a space rocket program and an ICBM program. Fore example, during the Cold War, the Japanese Space Agency's most advanced rocket was basically a direct copy of the United States' MX missile.</comment></comment></comment></comment>


Lesson Learned from Queries over 1.3T Rows of Data - <AUTHOR> https://pingcap.com/success-stories/lesson-learned-from-queries-over-1.3-trillion-rows-of-data-within-milliseconds-of-response-time-at-zhihu/ <comment><USER2> Any database experts here? My question is should we use relational database for such use case? Quora like app I mean.

<comment><USER3> Why not? I can think of one reason: SQL is generally poor at modeling tree structures. This may reflect itself in the application with comments without hierarchies (which is the case for StackOverflow and Quora), but that is a more minor part of the application. Similarly if you wanted to have a graph of relations between knowledge, graph databases might be better. But QA sites tend to just add tags to the questions, which is easy enough to model.

<comment><USER4> The tradeoff is sharding and caching graph DBs is difficult in terms of the performance hit because it's harder to isolate queries to a single partition/subgraph - in some ways intersectionality is the whole point of graph vs relational.

The overhead of a large scale distributed graph DB with redundancy and caching is significantly higher than a relational DB acting as a "poor man's graph DB"; and materializing your more expensive views and queries is, in the base case, a sufficient performance equalizer.

</comment></comment></comment><comment><USER5> Blank page with JS disabled. Reader mode disabled.

<comment><USER6> "Reader mode disabled."

That's a bug. Shouldnt be possible. Let the site require executing JS to get the txt, but the web browser should have no code to attempt to limit the user.... and yet they are _full_ of it.</comment></comment>


Ask HN: How to make remote work a success? - <AUTHOR> When starting to work remotely for a company where you were previously a local team member, what are the things to look out for?
I'm mainly thinking along the lines of how one can ensure proper motivation and discipline, but also adequate communication and still having the feeling to be part of something.
What are your experiences ? What worked and what didn't ? <comment><USER2> I've worked remotely twice.

The most important thing is communications, definitely.

The best results I had were on a fully remote team, using Slack heavily.

I'm currently on a half U.S. based / half remote team, and it's harder, as much of the stuff communicated on the U.S. side doesn't reach us. We do have weekly meetings over GoToMeeting.

Some very good articles on the subject are Scott Hanselman´s, and Jeff Atwood's and Stack Overflow:

[http://www.hanselman.com/blog/BeingARemoteWorkerSucksLongLiv...](http://www.hanselman.com/blog/BeingARemoteWorkerSucksLongLiveTheRemoteWorker.aspx)

[http://www.hanselman.com/blog/30TipsForSuccessfulCommunicati...](http://www.hanselman.com/blog/30TipsForSuccessfulCommunicationAsARemoteWorker.aspx)

[https://blog.stackoverflow.com/2013/02/why-we-still- believe-...](https://blog.stackoverflow.com/2013/02/why-we-still-believe-in- working-remotely/)

See also:

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

[http://engineering.datadoghq.com/9-ways-to-make-working- remo...](http://engineering.datadoghq.com/9-ways-to-make-working-remote-work- for-you/)

<comment><AUTHOR> Thanks for the good references.

</comment></comment><comment><USER3> I have made this transition in stages with the same company (office-based --> home-based but working closely with regional clients and teammates --> home- based and don't see anyone else much). Motivation and discipline are still occasional issues. I am definitely inspired by working physically next to a colleague. For me, I find a morning routine is a critical component of a successful day (consistent wake-up time, consistent set of activities before working, etc.). To feel like I am "part of something", I try to focus clearly on the business needs my work resolves. I work to maintain a perspective that shipping a batch of work will definitely lead to a particular experience for colleagues or users.

<comment><AUTHOR> I am planning my transition to be similar, there will be a trial period to get a feel for how well this works for us. And I plan to have a separate office in the house or garden so that there is a more clear separation between work and home life. No working on the couch for me.

</comment></comment><comment><USER4> Develop your own rituals. You have to replace the 'going to the office' structure and routine with something that works for you. That you can slip into and easily get into work mode.

For some people, that means getting dressed up. Keeping a dedicated home office. Strict time routines, etc. The what doesn't matter so much, as long it provides you with familiar structure.

The key in the beginning is to over-emphasize discipline (and communication) until you find a good balance.

(I've been working remotely for 10+ years)

<comment><AUTHOR> As mentioned in another comment, I plan to have a dedicated office space and "go to work" up the stairs or down in the garden. I am making the assumption that lack of proper structure and set up will make maintaining discipline harder, so I'm trying to avoid that trap.

Any suggestions with regards to what works when communicating ?

</comment></comment><comment><USER5> Most local teams that I've worked in have mostly been centered around a tool like Slack anyway. I've sat next to people but talked to them more on slack then in person. It really depends on culture. Do most people use a tool like Slack or HipChat?

For working remote, what I found that was the best was making a place in your house or apartment that is the office. Try to do everything in that part and only do work there. It will help you get into a work mode at home.

</comment><comment><USER6> That Mitchell and Webb Look - Working from home [https://www.youtube.com/watch?v=co_DNpTMKXk](https://www.youtube.com/watch?v=co_DNpTMKXk)

</comment><comment><USER7> I have found that having a good video chat system is super important. At first, my company used Google Hangouts, but we weren't happy with the video quality. A few systems later, we ended up with Zoom, which has been pretty good. They also integrate nicely with Slack, so that you can set it up such that the command "/zoom" in slack will start a new video chat room that people can click to join. A seamless video chatting experience is crucial for remote workers.

</comment><comment><USER8> In addition to what's below there's no reason you can't pop-in on the team with bagels, or attend a group lunch. If that's generally not geographically feasible then make an extra effort to do it when you are able. I have been in sales a long time, as long as you are not intruding or interrupting, people will appreciate that fact you were thinking of them and you made the effort. This is important in maintaining any relationship and important for the morale of a team.

There is a similar thread here: [https://news.ycombinator.com/item?id=12788080](https://news.ycombinator.com/item?id=12788080)

For convenience, here is my post to that thread:

First, discipline is critical to what you mentioned. Figuring out how to develop habits that avoid procrastination or other problems with your productivity are wildly different for each individual. Some people work well with a TV on, while others are completely distracted by it, and up paying attention to the TV instead of being productive. Some people take 15-20 minute naps and wake up ready to rock. Others, fall asleep for long periods of time, don't reboot and waste a day. You have to know which one you are and tailor your routine around you. Having a routine is important.

Additionally, here are a couple of things that you might consider hacks that have worked for me:

1) Front-load your day - I start my day at 4am and I start work immediately. This has a couple of benefits. For me I know I am most productive the first half of my day. Starting early eliminates a long list of distractions and interruptions simply because no one else is up to bother me. Plus, if I find myself dragging between 4pm and 6pm I don't feel guilty about cutting out because I have already put in a pretty solid day overall. This is something I read not to long ago that validated what I was already doing: [https://news.ycombinator.com/item?id=12346307](https://news.ycombinator.com/item?id=12346307)

2) Walk - Any time I am feeling distracted or stressed I take a walk outside. It reboots my mind and I come back refreshed. If something was eluding me before the walk it typically reveals itself quickly after returning from the walk.

3) Diet - This is from my response to this post ([https://news.ycombinator.com/item?id=12684180](https://news.ycombinator.com/item?id=12684180)): "In order of volume and priority...Coffee, leafy greens(in all forms, especially cabbage - all types, kale, napa, green, etc.) and protein in all forms, diversity is important, animal and vegetable sources. I mix in other fruits and vegetables for flavoring and variety. Also, I eliminated salt and that relieved my stress in a significant, noticeable way. I start my day at 4am, if I eat heavier, carb-based items, I notice a crash somewhere around 3 or 4 pm and the last few hours of my day are a struggle. If I stick to what I listed above, I power through the afternoon and feel more balanced when I end my day."

<comment><USER9> "I start my day at 4am"

What time do you go to sleep at to make starting work a 4am feasible?

<comment><USER8> No later than 9pm.</comment></comment></comment>


US says evidence in NSA privacy case must be destroyed due to national security - <AUTHOR> http://motherboard.vice.com/read/the-us-argues-it-must-destroy-key-nsa-evidence-to-protect-national-security

<comment><USER2> There is an important underlying issue here.

The NSA's legal doctrine is that collecting and retaining data is not a search under the 4th amendment, and so has no legal protection. Querying their data for information on a person is a search, but as long as that person is not a US citizen, there is still no 4th amendment protection. If they query data for a US citizen without a court order and then find out that it was a US citizen, their policy is that they immediately throw away the search and forget that they did so. Since there was no intent to search, they think that the accident is OK.

But any query that intentionally gets information about US citizens, no matter how minor, is a 4th amendment issue. Therefore, for instance, a query to find out how many Americans were accidentally searched would violate the Constitution. (This is not a hypothetical example - they refused to provide exactly that information to Congress on that rationale.)

Therefore they have built a system that stores data about all of us, and has safeguards to throw away any unconstitutional searches. The safeguards may or may not be as hard to circumvent as they claim. (I'd guess not.) But I'm sure that any attempt to find out will be met with the state secrets privilege.</comment>


Maximize Your Productivity - <AUTHOR> http://joshdulac.com/maximize-your-productivity/

<comment><USER2> Heaven forbid that you spend sometime actually focusing on a single topic and immersing yourself in it to try to see the layers authors may have put into their books.

If you're reading something that requires that little of your focus (i.e. you can read it while on an exercise bike), maybe you should choose better reading material.

Don't get me wrong, I'm all for multi-tasking where available, but why are we a culture of trying to maximally absorb information? I was hoping this article was going to tell me that I should spend less time on the dreaded reddit/hacker news cycle.

</comment><comment><USER3> I've been doing much of this for a long time now, particularly listening to podcasts while working out or walking the dog.

In my opinion, it actually hurts productivity. You become dependent upon having a mental and emotional escape from your physical surroundings. Instead of developing self-discipline, you indulge in escapism.

</comment><comment><USER4> DISHES? Get your self a dishwasher and focus on a task that needs your full attention of just rest. After all this multitasking I think your head and body needs to just chill.</comment>


Did the web fail the iPhone? - <AUTHOR> http://factoryjoe.com/blog/2007/10/17/did-the-web-fail-the-iphone/ <comment><USER2> No matter what anyone says, there is still a need for local, unconnected software. Until someone develops an open layer in the browser for running offline apps, one that gets adopted by all the major players, the idea that the web will provide all necessary software for a phone (or even a laptop or desktop) is unrealistic. The problem is simply that there are still quite often times (like riding the bus, or a subway, or the oft-mentioned example of being on a plane) when there is no Internet connection and people still want to use their applications.

</comment><comment><USER3> Safari-as-SDK's shortcomings that really bother me:

\- can't integrate with addressbook, phone, nor maps

\- can't do alerts/notifications (sending an SMS for this is a _dirty, dirty hack_!)</comment>


Show HN: I made a widget to share Updates/Roadmap/Bugs and Webchat/Calendly - <AUTHOR> https://producthero.app <comment><AUTHOR> As a user of different saas products myself I cannot helped to notice that all the "user engagement" infos (product updates, product roadmap, bugs tracking system, webchat box, demo/appointment box) are often scattered around and almost never in-app.

So I thought to make an in-app Widget to integrates all this stuff in a single place: ProductHero.

From within the widget it is basically possible to:

\--> publish in-app product Updates and News

\--> share product Roadmap, collect upvotes and comments, new feature requests and feedback from users

\--> collect and track down Bugs and Errors

\--> publish Tips&Tricks/Tutorial about the product itself

\--> integrate existing Webchat tools and Calendly

It's actually available as in-app Widget or public standalone page. It comes with a Bootstrap-like UI with both light and dark themes. It supports markdown, emojis and images/video upload.

Thoughts?</comment>


FYI IE9 (probably) won't support WebSockets - <AUTHOR>

I emailed Eric Lawrence from the IE team to ask. The response:<p>"Sorry, Mike-- The IE team has not made any announcements regarding if/when support for WebSockets will appear in IE.<p>-Eric"<p>Make of this what you will, but it sounds like a probable no to me. <comment><USER2> Here's hoping your intuition turns out to be false. WebSockets should be really easy to implement compared to, say, Canvas.

<comment><USER3> Though it should be noted that Canvas looks like it's also going to be MIA.

<comment><USER4> About a year ago, they said they were doing "lots of stuff", whatever that might mean. <http://processingjs.org/blog/?p=77>

</comment></comment></comment><comment><USER5> It sounds to me like they have made no formal announcement and employees are forbidden from saying anything that hasn't been formally announced. Neither a yes nor a no. If they are working on an implementation, they will probably wait as long as possible before committing to it in public.

</comment><comment><USER6> Will IE9 support anything other than only some versions of Windows?

</comment><comment><USER7> That doesn't mean anything really: he's not confirming or denying and there isn't much to read into.</comment>


Node's nested node_modules approach is basically incompatible with Windows - <AUTHOR> https://github.com/joyent/node/issues/6960 <comment><USER2> Know the biggest issue I've had with Node (well not me, but my colleagues)? That modules have a habit of using symlinks, which break horridly across Vagrant/VirtualBox shared folders. We ended up fixing it somewhat by using the --no-bin-links option on `npm install` and swapping over to SSHFS, but I really wish module writers would pay more attention to Windows... one of Node's strengths is that it works pretty darned well on Windows (just like how XAMPP made PHP deal with windows well enough for a large developer base to grow)

<comment><USER3> Again, this is a Windows issue with its horribly broken symlink handling.

<comment><USER4> So, let's go fix it.

Sorry, but complaining about the base platform behavior doesn't help much if you want to build software on it.

</comment></comment></comment><comment><USER5> I am somewhat surprised at this topic. Of all the the issues Node.js has on windows, this seems like a fairly minor one. In my eyes, the biggest issue is simply this:

A lot of module writers don't care about Windows.

A big part of the node ecosystem is that there is a module for practically anything. While node core has great support for windows, and also helps aid developers in writing code that is windows compatible, from what I have seen, its not often followed.

Any number of simple things break modules on windows, using a '/' as a path separator instead of path.join, native modules, bash or shell scripts used in pre- or post-install scripts and probably a hundred other small ways to screw it up. Even trying to make your own module Windows compatible is often thwarted by a dependency that doesn't. Like Java's promise of "Write once, run anywhere", its a great idea, but hasn't completely panned out.

I really hope that as the node community matures, there can be more of a focus on making sure things work on Windows. Node is a great platform partially because of all those modules and getting them all working will make writing cross platform apps and services a heck of a lot easier.

<comment><USER6> Windows actually supports using / as a path delimiter. If a program is (following the robustness principle) liberal in what it accepts (both / and \\\\) and strict in what it sends (just /), it'll work (barring any other issues).

</comment></comment><comment><USER7> I actually find it surprising how many people feel recursive node_module dependency folders is justified. It seems absolutely the worst possible solution to me. Am I misunderstanding something about this. Is there any reason Bundler's approach doesn't work here?

It seems ridiculous to me how many folders are created when I just need a couple of node modules to do something.

</comment><comment><USER7> This is going on a bit of a tangent, but even Visual Studio used to run up against this problem all the time using some of Microsoft's own libraries. It was laughable at the time, but some of Microsofts teams ( _cough_ Patterns & Practices _cough_ ) loved to created DLLs with huge long namespaces. That coupled with the fact that Visual Studio projects were created in /Users/User.Name/Visual Studio/Visual Studio ##/Projects/ to begin with created a lot of problems.

As a result I almost always put all my projects at the root something like /src to reduce the odds of running into these problems.

</comment><comment><USER8> This definitely seems more like a Windows issue than a Node issue.

<comment><USER9> At first I agreed with you; but then I read one of the comments on github that swayed me.

"You are the one playing games - calling core parts of Windows like Explorer "3rd party tools", and suggesting that not supporting long paths is a bug. Microsoft have made it clear repeatedly that non-support for long paths is not a bug, and not something that will change.

A package manager creating paths that do not work with the majority of the software written for an OS, then claiming compatibility with the OS, is playing games, at your users expense."

At the end of the day Windows wont be the thing changing. haha.

<comment> nevi-me I don't follow, should we then rename everything to cryptic, short characters like some people do in MongoDB (as someone suggested using n_m instead of node_modules)? If it works well in other platforms, it's an issue with that specific platform

<comment><USER10> windows has path length limits. Figure out how to live in them, whatever way is best. If that means using cryptic names, then do it. cryptic folder names, while not a good thing, are extremely common in windows.

<comment><USER11> Or, don't support Windows.

<comment><USER10> Yes, fine by me.

</comment></comment></comment></comment></comment></comment><comment><USER12> Was the recursive "every package include its dependencies" done just because it was easier? Or was it a conscious design choice.

<comment><USER13> Well at least there is no possibility of conflicts(unlike some other pm). The problem is people writing modules that have like 1 function while requiring 10 other modules that have just 1 function themself that require 10*10 other modules ... Of course it doesnt scale,and of course the package manager wont scale either...

But it's not a NodeJS problem it is a NPM problem.NodeJS has other problems though(the lack of governance by a dedicated foundation is the most important one,the obvious second one is nodejs dependency on what google does/doesnt do,since google maintains V8).

<comment><USER14> > second one is nodejs dependency on what google does/doesnt do,since google > maintains V8

Google maintaining V8 is one of the big reasons why Node has been successful. There is no way an independent Node.JS foundation would have the resources to optimize and test JS like the Chrome team. So far, the problems have been minor and V8 has done a decent job keeping up with upcoming JS standards.

So this isn't a problem.

> 1 function while requiring 10 other modules that have just 1 function > themself that require 10*10 other modules

As of now NPM is working (in spite of these problems) because those modules are tiny js files. I agree it would be beneficial to have better package management.

In fact, that's exactly what's giving me problems right now. My browserify task breaks due to the NoYieldInGenerator error in parsing. The dependency (esprima parser) has been patched upstream, but now that has to make its way into 4 dependencies inside browserify, and then browserify has to update itself. My alternative is to make 5 forks just to solve this. :/

It would have been great if they all used a single shared lib, and even better if I could manually override dependency versions of my dependencies.

<comment><USER13> I wonder why Mozilla didnt/couldnt jump in the ship and propose a viable alternative to node/V8,I know there is a node/spidermonkey project somewhere but it isnt maintained.

V8 api changes made a lot of binary modules break and it will happen again,so it is a problem on the long run.Of course NodeJS team cant maintain V8.

But please dont throw that problem under the carpet,It's a real issue.

> Google maintaining V8 is one of the big reasons why Node has been > successful.

Sure,but it doesnt guarantee Nodejs survival on the long run.Look, nodejs is an awesome project,i'm not here to question that fact.I use nodejs everyday I love it.I just cant trust Google on anything on the long run.

Do V8 team consult with nodejs team,listen to their suggestion ? (that a question).Is it a bidirectional relationship or a unilateral one?

<comment><USER6> There exists "gjs" and "js" ("smjs" in Debian), both of which are being maintained.

</comment></comment></comment></comment></comment><comment><USER15> The title looks exaggerated. I thought NodeJS cannot just run on Windows anymore. It's not the case though, it does - it's just it creates folders that are nested.

<comment><USER16> Totally. This is actually a trivially solvable problem (I've been working on a meta package manager compatible with npm, bower and component).

The strategy I took with node_modules/, components/ and bower_modules/ was to just follow whatever folder structure it found as far as necessary and look for manifest files (package.json, bower.json and component.json) and register modules at the path of wherever one of those three file types is found. This approach allows any folder organization whatsoever. This information was then saved to a key-value store and the store is only updated when the mtime of the folder changes. This makes startup relatively fast since folders are only re- indexed if something has genuinely changed.

Writing an algorithm that is dependent on the folder structure to me is a fundamentally bad idea most of the time, especially when you have a manifest file that better identifies a module. Additionally, for modules with semver ranges or installed from unusual locations (i.e. URIs: git:// git+ssh://, [https://](https://), etc.), you can write an additional metadata file with install information and version locking information (like gemfile.lock)

If people don't rely on the file system organization as an API, npm and node's require() algorithm can trivially reorganize or even use different folder organization schemes on different operating systems if there were a good reason to do so.

<comment><USER17> I respect where you're coming from, but I disagree. One of the huge advantages of npm for me is that it's so transparent and I can see exactly how it's mapping to the file system. I know exactly which code is being run, from where—because it's incredibly easy to traverse the dependency tree. If you abstract away the fs level and flatten the dependencies into a single folder, you take this away, and you make the dependency tree essentially a big intimidating blob of code that requires slogging through package lists to determine what is actually being used.

<comment><USER16> Nothing in what I'm doing prevents what you like about npm. In fact npm already abstracts away what you want in a little known command called `npm explore`.

Let's say you want to explore the dependency `foo` in your project. At the root of your project type `npm explore foo` and press enter and you'll be in a shell exploring the foo module. Then if you want to return, type `exit` and return and you'll be back in your project. Or if you want to go down the rabbit hole to a dependency of foo called bar, type `npm explore bar` and press enter.

`npm explore` is a great way to explore things and navigate to the dependencies used by the dependency you want to investigate. It basically uses the information in the current package.json to find the dependency you want.

</comment></comment></comment></comment><comment><USER18> I'm surprised the obvious solution isn't already implemented universally by package managers: checkout the modules into a single directory, named as "[name]-[commit SHA]". You get all the benefits of the current system, with the added benefit that if A and B both turn out to want to check out C#1a029fb, then you only get one copy.

<comment><USER19> That benefit would be a breaking change. Node modules are stateful, so two packages suddenly sharing their dependency could have nasty side effects.

<comment><USER18> Eek, I didn't realize anyone thought it was a good idea for modules to be holding state inside themselves.

Simple-enough fix, though: drop an extra directory in there, call it "state", and have each state-container in that dir be named after the the hash of the dependency path you would have traversed to load it. Virtualize modifications to packages into those state-containers.

(This is also pretty much how Windows protects itself from programs that think keeping their state in the Program Files directory is a good idea.)

<comment><USER19> I'm not sure we are talking about the same thing: I was talking about runtime state (think: singleton instances). A directory wouldn't solve that problem.

</comment></comment></comment></comment><comment><USER20> The Win32API was initially designed to make it very easy to port from Win16API in the early 1990s. Microsoft neglected to improve the Win32API starting with the dotNet adventures. Instead of an improved Win64API we have the identical API for 32 and 64 bit (and WinRT API). The shell still doesn't support UNC path. The Windows NT series operating system would support different subsystems other than Win32.

 _Naming Files, Paths, and Namespaces_ on MSDN explains the details: [http://msdn.microsoft.com/en- us/library/windows/desktop/aa36...](http://msdn.microsoft.com/en- us/library/windows/desktop/aa365247\(v=vs.85\).aspx)

</comment><comment><USER21> Have the same problem. Although I'm a Mac user, but I'm using OneDrive to store some toy projects. OneDrive stopped working and complained about the long folder path when I tried to install a NPM package. After some researches, I know this problem will not be fixed soon and move all of my Node projects to DropBox. For Windows user, I think the only solution now is to use a VM.

</comment><comment><USER22> Windows does support long paths (up to about 32k characters): Here is a good explanation from the .net perspective (but the same holds for non-managed APIs): [http://blogs.msdn.com/b/bclteam/archive/2007/02/13/long- path...](http://blogs.msdn.com/b/bclteam/archive/2007/02/13/long-paths-in-net- part-1-of-3-kim-hamilton.aspx)

Long paths are just most ugly to use: "Long paths with the \\\?\ prefix can be used in most of the file-related Windows APIs, but not all Windows APIs. For example, LoadLibrary, which maps a module into the address of the calling process, fails if the file name is longer than MAX_PATH. So this means MoveFile will let you move a DLL to a location such that its path is longer than 260 characters, but when you try to load the DLL, it would fail. There are similar examples throughout the Windows APIs; some workarounds exist, but they are on a case-by-case basis."

</comment><comment><USER23> Long paths are a PITA on Windows sometimes :(. A while ago I had a problem with long node module paths and msysgit. Luckily, this was fixed in v1.9.0

[http://pingec.si/blog/articles/msysgit- longpath/](http://pingec.si/blog/articles/msysgit-longpath/)

</comment><comment><USER24> The easiest solution I've found is to just run a VM and not sync whatever folder you install node_modules in. I just had this problem like a week ago with gulp because I was syncing the folder I was building in. It's a good time to learn how to use Vagrant.

<comment><USER4> There are people using node as part of their desktop software for scripting. Atom for example. Vagrant that.

</comment></comment><comment><USER25> So far I've been able to get by in Windows (for my projects at least) if I use Cygwin for interacting with paths that are longer than MAX_PATH. For example - if a project has node_modules committed in git then I have to clone the repo using Cygwin. This doesn't help with the problem related to install scripts on deeply nested components though because npm doesn't support Cygwin. In Windows I still run npm and node commands in a regular command prompt.

</comment><comment><USER26> I ran into this yesterday, having tried to install yeoman into a folder shared between a windows host and a linux vm. Ended up with files which could not be deleted by any other way than from the windows command prompt using the 8.3 filenames.

An hour of swearing was enough to convince me to stop using windows for this entirely.

</comment><comment><USER27> What percent of the node.js community will this effect?

What's the design reason for Windows tools to only have a max of 260 file path chars? If it's not the OS, but the tools he is using, why not use tools that work? Isn't this the tools bug?

Honestly, if he is doing web development, his life will be easier with a linux distro.

<comment><USER28> _> What's the design reason for Windows tools to only have a max of 260 file path chars?_

So in C you can just say `char buff[MAX_PATH] = {0};` and not worry about heap allocation.

That's also the reason why it can't ever be extended - because MAX_PATH is compiled into every binary and you would create instant buffer overflow vulnerabilities in a lot of software.

It was a reasonably good idea at the time the decision was made.

<comment><USER27> Fair enough, makes sense from the C perspective.

</comment></comment></comment><comment><USER13> isnt it the reason why python ,ruby and co install themself in /c/ by default? I always wondered why they did that. PHP and Java dont have this problem(but "hello" package conflicts...).

</comment><comment><USER29> Entering my serious vote to end node development on windows

</comment><comment><USER3> I can't stand hostile issue submissions like this.

</comment><comment><USER30> This looks like a Docker container on Digital Ocean.

I would use this a lot, but many errors trying to apt-get install packages.</comment>


Show HN: I wrote a really simple client side HeatMap Effect generating script. - <AUTHOR>

The use case am considering is to do self testing on your site yourself, rather than depending on any third party, I plan to OpenSource it.
I am storing the mouse movement coordinates of the user in a javascript array which I plan to send to server every few seconds and save into DB.
Where I plan to aggregate the data and show final results.
What do you think? http://websymphony.github.com/labs/trackerapp/
Currently tested on only Chrome. <comment><USER2> I would definitely use it, if it can work with backbone.js, possibly with offline storage

</comment><comment><USER3> Works on FireFox. Very cool :) Hope to see continued development on this.

<comment><AUTHOR> Thanks for encouraging words. Will try to finish the server side code soon and let you guys know. :)

</comment></comment><comment><USER4> An amazing start! I just followed this on Github.

</comment><comment><USER5> Kudos! Very nice! ... now for the back end! :-)

<comment><AUTHOR> I know! Right now I am storing cursor coordinates as one moves and displaying it via red squares. My initial thought was to timestamp each point and then every few seconds make an ajax request to server with just the updated data. And once I have lets say 2000-3000 points, run some sort of algorithm to weed out arbit points and have only most visited coordinates displayed as most popular regions. Easy peasy right? But now as I am thinking more about it, I think the data I will have might not be able to accomplish the task. My first question to myself is, a point on my screen will have different coordinates than yours, for example lets say the top left corner of button that shows map is 300,400 on my screen. But since my screen resolution might be different than yours, it might become 200,300 on your screen. Therefore data point loses its relevance. One approach that I can think of to solve this issue. Get screen resolution of each user along with the data points, which can be used to normalize the data back on server. Any thoughts, suggestions?

</comment></comment><comment><USER6> Works on Safari 5 too :) Great stuff!</comment>


Personalized filtering of friend requests in social networks - <AUTHOR> http://blogs.fluidinfo.com/fluidinfo/2011/06/01/personalized-filtering-of-friend-requests-in-social-networks/

<comment><AUTHOR> Terry Jones wrote about the "Web 2.0 Address Book" last October ([http://radar.oreilly.com/2010/10/getting-closer-to-the- web-2...](http://radar.oreilly.com/2010/10/getting-closer-to-the- web-20-a.html)). It was an interesting concept that I've been following since. But it seems there needs to be a clear case for everybody to share their data in order for this idea to work. Wouldn't FluidDB be subject to the tragedy of the commons, with nobody curating the data and maintaining its quality? Or can it truly be the "wikipedia of data"?</comment>