DigitalOcean Sucks. Use DigitalOcean - <AUTHOR> https://raymii.org/s/articles/Digital_Ocean_Sucks._Use_Digital_Ocean.html <comment><USER3> We [https://commando.io](https://commando.io) use, love, and are sponsored by DigitalOcean. They've been awesome and amazing. The SliceHost of 2012/2013.

Some features we really want to see are when upgrading a droplet, the ability for the disk to increase in size. Right now, you have to image it, delete it, create a new droplet from the image, and pray that you keep the same IP address. Not a suitable solution for companies relying on uptime and stability.

Second, when creating a droplet, the ability to check a box, "ensure this droplet is provisioned on a different hypervisor then the rest of your droplets." Again, when building a highly available cluster, does absolutely no good if they are all on the same physical machine.

Finally, the ability to attach multiple ip addresses to a single droplet is a must have.

With that said, thanks DO, you guys rock!

<comment><USER4> Commando.io rocks man! I actually use commando server management on digital ocean :)

The IP thing is definitely annoying especially since you're never guaranteed an IP (say you want to switch VMs) even in the same region. That and hard drive size which has definitely made me pay more than I should (when I don't need that much CPU/RAM but need the disk space). Otherwise great experience with them.

</comment></comment><comment><USER5> I've still had absolutely no issues with my running droplets, though space is getting very tight in AMS1 at times when creating new ones. Their support is excellent even if you have a very specific question about their network, there's none of the fluffing around I've seen with other providers. It's cost effective even for my non-existent budget. Put simply, I'm pleased as punch.

I'm not usually vocally supportive of companies, but they're doing quite a good job: this article is a little undeserved.

<comment><USER6> "with my running droplets"

Personally, I hate new names like this for old things.. [1]

Stop making up names for things. My brain doesn't want to learn a new language for something that can easily be called by the legacy name. It's wasted time and slows things down. (I'm exaggerating a bit of course but why do I have to learn something new of no value to me? And I'm reading this and someone is commenting calling things droplets and now I have to do a search to find out what a droplet is...)

Reminds me of some of Spike Lee's first films where he was more concerned with coming up with some creative oddity that could be linked to him. (If you've ever taken a film class you probably remember the prof talking about something that Hitchcock was doing in the film that had never been done before.)

[1] From DO website: "DigitalOcean calls its virtual servers, droplets; each droplet that you spin up is a new virtual server for your personal use. "

<comment><USER7> I agree with this in many cases, but "Droplets" is really not difficult. Some providers invent whole new languages for perfectly mundane things. Digital Ocean just brands their virtual servers in a very straightforward way.

<comment><USER6> If they were simply differentiating between different levels of servers then I would agree. (Just like people call things "gold" "bronze" "silver" etc.)

But while it is an easy word (and it's "cute") it is different and strictly for branding over something that already is well understood and known. Why do it?

<comment><USER8> This is no different that amazon EC2 naming servers "instances"

<comment><USER9> You are in a maze of twisty little rooms, all alike.

"Instance" has a very well defined meaning, which leads to some standard implications.

It means one particulate <thing> out of several, which are all alike. It implies that your <thing>, and in fact all <thing>s, has (have) no physical reality. It implies that <thing>s can be created and destroyed at will.

It is also completely generic. You can have EC2 instances, ${APPLICATION} instances, object instances (in absolutely any object-oriented language, and several that aren't), database instances, etc.

A virtual private server is a cheap knock-off of a real physical server. A server instance is something you get from an API instead of having to hire a guy to plug things in.

<comment><USER8> In the context of servers, I have never seen other web hosting platforms use the term "instance," in the context of on-demand server instance vs. just give me a server. While it seems commonplace now, I don't recall reading about other hosting platforms referring to their services as instances. Can you point to literature that does? For instance, from [http://aws.amazon.com/ec2/instance- types/](http://aws.amazon.com/ec2/instance-types/) : "You can think of instances as virtual servers that can run applications." That's the AWS context of instances.

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> IPv6 is something we get asked about a lot, and it's on the way. Unfortunately it's not something we can just "turn on" \- We have to make sure it's build out properly and also fits in with some of our other roadmap items that our community will love in the coming year.

So yeah, love the feedback and actively working every day to bring any suck to zero.

<comment><USER11> IPv6 is a must for my use case. Currently, I have to use an IPv6 tunnel which is OK, but definitely less than ideal.

Can you disclose what kind of allocation each instance or each customer will get? Hopefully, you guys will be much less stingy with them than Linode, and give each customer a /48 to allocate freely between the individual nodes.

I am a very happy customer currently and am looking to use DO for my next project which involves heavy use of your API and lots of concurrent instances. As a customer I can testify that your product is a fantastic value for the price. Keep up the good work!

<comment><USER10> Totally get the ipv6 tunnel being a pain.

I think our allowances will have to be sorted out a little down the road but /48 is easy to acquire (unlike ipv4 where we have to wait till we're at 80% capacity before we're allocated more IPs). ipv6 gets a little sticky when you start talking about the internet of things, there are a lot of new concepts introduced that we have to take into account when we're managing what is closing in on a million of the worlds public hosts. I don't see ANY reason why we won't allow a least one /48 per droplet. Part of our slowness on things like CDN, load balancing, failover etc are because we want the system to be really well build out to accommodate both ipv6 and the future of internet protocol addressing. While I can't speak for other providers, for us it's something we take seriously, but need to test all our systems together to make sure cloud 2.0 if you will works really we..

As I'm sure you know, we've scaled massively in the last 8 months and unfortunately the "lets just pop in a feature" becomes a lot more complex as the complexity and stability needs of our customers increase.

What I can say with 100% confidence is that there is a group of really amazing engineers working on this stuff and it's all in a roadmap, we just have to make sure everything is simple, stable and safe before we roll out.

I hope you can appreciate your measure in this matter. :)

<comment><USER11> That's great to hear. I actually envision a situation where the allocation of the /48 would be per-customer or per-customer-per-datacenter. That way I could do things like firewall off hosts easily. For example I could tell my DB hosts to only allow incoming connections from my /48 and nothing else. Having no common prefix for all my droplets would make this harder where I would have to list all allowed hosts.

I definitely appreciate that DO is doing things the right way and that this isn't going to be a rollout of "well, this host on this router supports IPv6, but that load balancer upstream does not".

<comment><USER12> This sounds like the way to do it - being able to get a /48 for every data centre and then being able to use addresses and subnets out of that, or a separate /64 for each droplet.

I wonder if we could eventually get virtual routers between subnets without having to use droplets (like the virtual networking that VMWare/OpenStack are doing)

</comment></comment></comment></comment></comment><comment><USER13> Treat DigitalOcean as any other provider - something you can't trust, so always have backups of your own data in a place you trust (not a DigitalOcean snapshot) so you can restore when needed.

Personally I use Ansible [http://www.ansibleworks.com/](http://www.ansibleworks.com/) and rdiff-backup [http://rdiff-backup.nongnu.org/](http://rdiff-backup.nongnu.org/), along with Vagrant [http://www.vagrantup.com/](http://www.vagrantup.com/) for testing. So the day something happens with my droplet on DigitalOcean - I'll just run Ansible on a fresh server and restore the remaining data with rdiff-backup.

Yes, the lack of IPv6, being unable to use a virtual machines bootloader, a lack of a decent rescue image, and no private networking apart from one location sucks. However for the price - it's a good deal.

<comment><USER14> Yep - I'm also using Ansible and Vagrant, in conjunction with machines on my home network, reverse ssh tunnels, and API manageable DNS. I'm working towards having services able to be dynamically/automatically moved between various VPS providers (Digital Ocean/AWS/Hetzner/NineFold) without me worrying (or even being aware) which VPS provider is currently being used.

<comment><USER15> How would you do it in such a way that you are not even aware?

<comment><USER14> The plan is a mail server where the hardware/storage is in my home, opening reverse ssh tunnels for ports 25 and 465 to inexpensive VPSes regularly created and destroyed via APIs, with DNS MX records updated automatically. That way my world-visible MX endpoint will regularly change IP address, and move between US, European, and Australian based datacenters. The VPSes are configured to not store or log anything, and to always attempt to initiate SSL/TLS connection (with STARTSSL SMTP messages).

I'll know which VPS providers I have accounts with (and anybody curious could also find out by watching my zonefile updates), but at any time I won't care where the remote end of the ssh tunnels is or where the MX records are currently pointing.

<comment><USER15> OK, so you are using these systems as data relays, not to store data. This makes sense. I think it would be much harder to do this if you wanted to switch between VPSs that were storing your data.

<comment><USER14> Sure.

I've done some thinking - but not (yet) experimenting with EncFS combined with S3FS to store encrypted mountable data on Amazon S3 (I'm currently useing EncFS to store data on Dropbox & GDrive and with BTSync). No good if you need fast local access to the data (you wouldn't want to run you database this way), but it would solve _some_ of those problems. For me right now - <USER2> answer is to store my own data at home, and relay access to that data when needed.

</comment></comment></comment></comment></comment></comment><comment><USER16> "TL;DR: DigitalOcean is a good VPS provider with minor issues. I like them and have been using them for over a year." \-- Thus a dishonest title.

<comment><USER17> I think the title of the original post is trying to be creative. The world would be a boring place if everything was stated as a matter of fact. You might not like the author's creativity, but I wouldn't call it dishonest.

</comment></comment><comment><USER18> I am pleased with DO but they overpromise way too often, or at least they used to. We were supposed to be able to install instances from ISO in 2012 as promised by their support tickets:

[http://digitalocean.uservoice.com/forums/136585-digital- ocea...](http://digitalocean.uservoice.com/forums/136585-digital- ocean/suggestions/3276477-allow-custom-images)

It was last updated ONE YEAR AGO. Come on, that is outrageous.

</comment><comment><USER19> I do wish there was something akin to S3 to allow for larger amounts of storage, without necessarily being bundled in complete package that gets upgraded together (and there would be no SSD required). Obviously using S3 is still an option, but it would be nice to have the network locality and maybe even the general value proposition that DigitalOcean provides.

<comment><USER20> Yeah, it makes it hard for those of us with a lot of audio and video to deal with. We still need to be on Amazon for those assets, though would very much prefer to have them available through a locally mounted filesystem on our Digital Ocean instances.

</comment></comment><comment><USER21> Yesterday I went to pay my bill and it said "Automated Abuse Detection - Account Verification". Luckily I was able to ftp in and do a back-up.

After some back and forth my account was reinstated. It wasn't a huge deal but a shitty way to start my day. And after asking multiple times I was never told the reason why I had to go through this.

I had been happy until now. This just left a bad taste in my mouth.

edit: What pissed me off was having to send in a copy of my government issued ID.

<comment><USER22> How would you like them to handle it? Fraud and abuse is a big problem, and government ID is a standard way to sort out who is who.

<comment><USER21> Telling me why I was suspected of fraud and abuse would be a good start.

Another edit: I got a helpful reply.

There has been a response to your ticket:

Greetings,

Unfortunately, we are unable to provide further information with regard to our backend abuse filters.

If we may be of any further assistance, please do let us know.

Regards, ______* Mitchell | Support Team

<comment><USER23> You really can't think of any possible reason why they wouldn't want to tell you what triggered their fraud checks?

Because it's pretty obvious to me that people would create throwaway accounts to probe for all the fraud checks, then start creating abusive accounts.

<comment><USER21> Well. I have paid for around a year. I would like to know what happened so I can avoid the same in the future. Like I said there was no communication and I worry that my sites will be shut down for no reason.

</comment></comment></comment></comment></comment><comment><USER24> A few weeks ago it was still possible to sniff traffic from other instances.

[http://seclists.org/fulldisclosure/2013/Aug/53](http://seclists.org/fulldisclosure/2013/Aug/53)

<comment><USER10> We addressed this as soon as it was brought to our attention and is no longer a vulnerability. :)

</comment></comment><comment><USER25> I was trying recently trying to estimate write-ahead log performance for my 2GB droplet, and for random sized (2-8k, 4.3k avg) sequential writes, my droplet is able to throw out 230MB/sec or ~60k 4k writes/second. I haven't actually done database benchmarks yet, but it looks pretty promising.

</comment><comment><USER26> The title is very stupid especially since he is actually giving them a recommendation.

Anyway it comes down to the fact that its cheaper than any other large provider out there and almost always works very well. No one can beat that price with an actual usable service.

If I was going to complain about anything it would be the current lack of 2GB/4GB etc. droplets in San Francisco and the fact that launching a droplet from a smaller snapshot takes several minutes instead of one minute.

</comment><comment><USER27> I run my web, email and some other stuff off a cheap end DO droplet for $5/month. Can't say I've had any problems other than availability of droplets in Amsterdam. I'm in the UK but have a VM in NY2. To be fair the latency feels about the same as our production kit which is 7 miles from my house, not 3460 miles. DO is less hops as well.

<comment><USER28> What are you using for email? Did you find a good install guide?

<comment><USER29> I don't know about the GP, but I used the "How To Install iRedMail On Ubuntu 12.04 x64"[1] guide on Digital Ocean's community site and was pretty successful in setting up my mail server, complete with postfix, dovecot, spamassasin, greylisting, ssl/tls, webmail, etc.

1\. [https://www.digitalocean.com/community/articles/how-to- insta...](https://www.digitalocean.com/community/articles/how-to-install- iredmail-on-ubuntu-12-04-x64)

</comment></comment></comment><comment><USER30> The font on that site is what really sucks... :-)

<comment><USER31> There must be a reason the Chromium/Chrome team decides to displays custom fonts like that on Windows. They almost universally look terrible, or at least worse than every other browser and every other platform. No other browser renders them so thin that the lines of the glyphs become disconnected.

I opened a bug report about font rendering and text color issues in 2011. Not only is narrow text rendered oddly as you can see, but if you give it any color other than black, the rendered color doesn't match the color you specify in CSS. It can be _way_ off, like blues rendering as purple. Last I checked, the bug was still open with no work done on it.

<comment><USER32> Chrome still uses the old Win32 API (GDI) to display fonts, whereas IE and FF are now using DirectWrite.

</comment></comment></comment><comment><USER33> I'd really like to see additional storage available for a node. I'd like to add an additional 100gb to my 20$ per month node.

<comment><USER34> Agree, I am also running out of disk space now, don't need additional RAM or CPU power.

<comment><USER35> Has anyone consider collocation yet? For DO 's 160GB 16G $160 packages, I figure I can easily put a 1u in colo center with a few TBs for $99 / month in Bay area.

Any pro/con with that approach?

</comment></comment></comment><comment><USER36> I don't use digital ocean because [https://www.digitalocean.com/community/questions/image- updat...](https://www.digitalocean.com/community/questions/image-updates-for- arch-linux)

</comment><comment><USER37> You still can't boot your own kernel...

<comment><USER38> What are some use cases that you have for running your own kernel? I just can't think of much need of running a custom kernel. There's a lot of different kernel versions to choose from. For subsystems like process scheduling, you can just load your own kernel module to change that.

<comment><USER39> Their kernels are all months out of date. And besides, I want to install updates as they are released by my distribution, rather than have to wait around for my host to get their arse in gear.

</comment></comment></comment><comment><USER40> I like DigitalOcean and these problems are annoying. I'd really like to run coreos. DO claimed they were near deploying a custom image feature months ago. But it has never materialized.

The lack of IPv6 is a pain but I can deal with it. And the screw up with the NY2 network going down for a day kind of soured things as well.

What I'd really like is for DO to be a bit faster with feature development and more transparent on their progress.

<comment><USER10> We're working on a few new ways to deploy custom stuff, we want it to be really fly and work really really well and be really really simple so we are refining it. I can't give a timeline for this but it's in our short term roadmap for sure.

<comment><USER40> It doesn't need to be perfect. I can deal with a more complex but functional feature tomorrow far better than a perfect feature in a year.

<comment><USER10> Totally, however a lot of our install base tend not to be as technical. The disparity between devs is getting massive.

<comment><USER41> Why not provide early access to new features to technical people who don't mind to be on the bleeding edge? That would be a sword cutting on two edges since you'll get high quality feedback in an early stage.

<comment><USER42> Then everybody will assume he's technical enough and still flood the trackers with issues that are more of a pebkac than a real problem. It would probably end up like the dev-builds of IOs7: People were downvoting apps because they crashed, even though it was impossible for the app authors to rectify the problems.

</comment></comment></comment></comment></comment></comment><comment><USER43> I use DigitalOcean, my application is not very large but response time is important. 20 GB is more than enough for me, even 10 GB would be enough. Being it SSD, it runs the short lived disk-based tasks I give (compilation & copying moving files) very fast due to its SSD, compared to AWS and others. This is my usecase and I am happy with it.

</comment><comment><USER44> I won't use DO for everything, but I won't use Linode for everything either, and that's ok. I also use dedicated servers with VMs and they all have their place and purpose quite nicely.

With tools like docker, it's less about where you're hosting and more about being able to deploy to any infrastructure, as the only guarantee you'll have for the rest of your life is you'll be redeploying somewhere, be it with the same host or another one.

I think for what you pay, what you get, and the level of flexibility, DO is a great value and service in that it's not a random, small, no name vps provider that may disappear due to not managing their resources between the fine line of over or under subscribing.

Where I wouldn't get a Linode and recommend someone to get shared hosting, I can start them on DO and let them grow there, so I quite like the segment they've let me introduce dedicated VPS resources to.

<comment><USER45> Does Docker run on Digital Ocean?

I tried to set it up a few months ago, without success. Maybe things have changed since.

Something to do with DO using LXC with a setup that wouldn't work with Docker.

<comment><USER46> Docker in Ubuntu 13.x has been working great for me at DO. Just have to use a recent enough kernel.

DO itself is a full VM virtualization and afaik is not using kernel-level isolation/LXC.

<comment><USER10> Correct, we run KVM vs some type of PID isolation or LXC. :)

</comment></comment></comment></comment><comment><USER47> Digital Ocean is great. The only thing keeping us from using it is lack of private networking in Amsterdam DC.

<comment><USER48> Their private networking is not private to you, it's private to all customers. Meaning I could access your server via your internal IP.

What advantage are you looking for?

<comment><USER49> I'm guessing it has something to do with EU data privacy laws.

<comment><USER50> It's because DO only offers internal/private networking in their NYC2 datacenter and thus not available in the AMS center.

</comment></comment></comment></comment><comment><USER51> For just needing an off-site VM for backup-relay-host/testing/debugging purposes, you just can't beat $5/month. Been very happy with them, and the fact that I can just throw $50 into my account and not have to worry about it for almost a year.

</comment><comment><USER52> Been a big fan since their first deploy... grandfathering is nice for unlimited bandwidth... Use them for most test setups now, proof of concepts, etc... heck I've even got a domain pointed at them, and I've run my own DNS servers since the early 90s ;)

</comment><comment><USER53> What I'm really looking forward to is better IP management. So far it looks like most cloud servers providers try to ignore the issue, which I'm really disappointed about. It looks like DO's answer to droplet failures is - set up a load balancer. OK, but what happens is that droplet disappears? What protection can I have against going completely offline for the duration of DNS TTL in that case? (And the time of manually changing it)

I see that as an unacceptable risk really - one thing that keeps me from using DO. Other services also lack the reserved IPS sometimes, but some of them at least provide an integrated solution (LBaaS style).

</comment><comment><USER54> Been using them for a few weeks now for a private Minecraft server (<= 6 people, whitelisted). Additionally it serves a statically generated map over nginx and I've been trying to get OpenVPN to work. It's a $10 one, 1 gig of RAM in Amsterdam.

Generally I'm quite happy so far. The setup process and the management panel is awesome while the CPU performance is lacking a bit. I/O performance (both disk and network) is great.

</comment><comment><USER55> I use smallest Digital Ocean package (Amsterdam) to run a play 2.x scala app. It is not a visited site (yet, heh) but I am very happy with it. And they gave me a coupon when I couldnt tinker with the project and cancelled, so I am back again :)

The sucks part fortunately havent affected me yet. I could use a little more ram but when I am there it could be changed with a click (and a reboot if I remember correctly).

</comment><comment><USER56> I'm a big fan of Digital Ocean; great value and good quality.

If I had any complaint, it's that occasionally I get a droplet with a wonky IP address that seems to be shared with another host (like, the SSH host key wobbles between one and the other between invocations of ssh).

There was also some flakiness with NYC2 a couple of weeks ago, which caused some sadness and grief.

All in all, they're saving me multiple thousands of dollars.

</comment><comment><USER57> Not seeing anyone here talk about it so maybe no one has had it happen to them, but how is everyone dealing with the disk failures? Seems like your one to two man startup could have a fun day ahead of them. Not to mention if it happened on your launch day. Coming from someone looking to use DO for a future project.

<comment><USER58> Use something like Ansible (Puppet, Salt, Chef, whatever) to provision your servers, along with backups. You can also use DO disk images but they're not as good a solution; my Ansible playbooks will let me configure and deploy a fully functioning app or db server instance at the drop of a hat, on almost any infrastructure; a DO image is only good for deploying onto DO infrastructure.

If you're "in the cloud" (or hell, even if you're using your own bare iron servers), you need to be accepting that your server could just go away at any time (and Murphy's Law being what it is, probably at the worst possible time).

The real trick is figuring out how to handle backups and user data properly. It's easy to say "you need to plan for your main DB server going poof"; it's harder to actually make sure you can handle that without downtime and loss of user data. :)

<comment><USER59> > The real trick is figuring out how to handle backups and user data properly. > It's easy to say "you need to plan for your main DB server going poof"; it's > harder to actually make sure you can handle that without downtime and loss > of user data. :)

Exactly this.

My little side project is fairly minimal, but users are paying for services. If the site goes down before my next backup, I'm going to have to reverse some charges (and look bad in the process!). One option might/would be to run failover on a $5 droplet, but then I also need to cluster Redis (server-side sessions), etc, etc... and it starts to become an "operations" side project and not a "product" side project. I'm using Puppet to automate the build process (and will build a "hot spare" image to get things up faster), but backups and failover are still tricky problems to solve.

</comment></comment></comment><comment><USER60> I use ksplice to run my own OS & kernel on Digital Ocean, you don't have to stick with their templates.

<comment><USER61> Do you ksplice-patch your kernels on every boot?

</comment></comment><comment><USER62> Recently moved a few sites to a single, 1GB droplet and am very, very happy with it. Also have been using a 512MB droplet for the last 3 months or so to run a tor relay. Their "one-click" installs are nice too, and WordPress runs really well on a 1GB droplet.

</comment><comment><USER63>
      1073741824 bytes (1.1 GB) copied, 3.84315 s, 279 MB/s

I was expecting it too be faster, actually. I get over 300 MB/s on a VPS with HDD at the company I work at. [1]

[1] [https://true.nl](https://true.nl)

<comment><USER64> The dd command is copying from _/ dev/zero_

I wouldn't entirely trust any disk benchmark writing empty files, you might be running into some FS optimisations there.

And 300MB/s on a single spinning disk? No chance!

</comment></comment><comment><USER65> Could someone who has used both DigitalOcean and RamNode say how they compare?

<comment><USER66> No experience with DO, but RamNode is very good. I've been a customer for over a year, and I rarely had any downtime. Disk speed is between 300MB and over 1GB (on SSD), network speed can go over 70MB/s.

</comment></comment><comment><USER67> I really dislike DigitalOcean. Terrible customer services. And do not give them a way to bill you automatically, use something like paypal when YOU are in control and can just not buy the credit and run out.

</comment><comment><USER68> I'm currently using Ubiquity SSD Cloud Servers and I'm happy with them, but still find it weird that its not that popular. Anyone else using them? Any difference between them and DO?

<comment><USER69> It is not popular because the site lists all plans sold out, i.e. no new interest in the site.

<comment><USER68> I just noticed that and sent them a message about it. Thats definitely weird and not inviting at all. You can actually get more cloud servers once you signup.

</comment></comment></comment><comment><USER70> Thanks for the opinion. I have been considering moving my server to DigitalOcean for a while and this assured me I probably won't regret it

</comment><comment><USER71> It would be nice if implementing something like Amazon Marketplace was in their roadmap but it isn't right now.

<comment><USER10> I wouldn't say it's not on our radar. ;)

</comment></comment><comment><USER72> Are there any (decent) similar per-hour priced providers based in the EU? Any experiences or suggestions?

<comment><USER73> I plan on setting up a vps at Gandi [0] shortly. Based on what I've heard they seem decent (not only as a domain registrar).

[0] [https://www.gandi.net/hosting/iaas/buy](https://www.gandi.net/hosting/iaas/buy)

<comment><USER74> I had awful experience with Gandi several years ago: ssh was broken on a newly created server (wrong permissions for some ssh folder), and CPU was limited in a fun way: processes periodically stopped to do CPU work for 200-300ms (once each second or so). We moved to Linode (they have servers in London), and for the same price got literally 20x faster performance (measured as rps), good support and flawless setup. Of course, things might have changed since that time.

</comment></comment></comment><comment><USER75> Feels like a perfect place to host your hobby projects but nothing for serious business

</comment><comment><USER76> You know Disqus has taken over English when OP asks us to disquss on Hacker News.

</comment><comment><USER77> What's with all the outdated OS images on DigitalOcean?

</comment><comment><USER78> I'm still waiting for a data center in Asia

<comment><USER79> Me too. Curious, have you tried using the US data centers from Asia? If so, how is the speed like?

<comment><USER78> Ping result shows that I'm getting around 200ms (from Malaysia)

</comment></comment></comment><comment><USER80> with the first 3 points of the cons, no doubt to use DO rather than other cloud service for small/personal stuffs

</comment><comment><USER81> Unresponsive droplets here

</comment><comment><USER82> I want to say that I hate Digital Ocean as well. I am a University of Waterloo Computer Science student. I have CS 458 (computer security) this term. We had an assignment last month asking us to get all the users permission without knowing their password for a web app. Then I wrote a script. The use of the script is to use curl one time per second (may be longer, due to the connection issue) to guess all the different combination of the password. Of course I was using that script on Digital Ocean!

After running it two days, I receive an email saying their router find out that I was doing the DDOS and ask me to stop it. I stop the script immediately and reply them my reason telling them that I was doing it for University Assignment and I don't know that I was not allowed to do this. However, my account got suspends anyway. No matter how I send emails to beg them to give back my files in the server (I use the server for emacs and tmux to write codes for school projects), they just told me that sorry but my account is suspend. No matter how I beg them, all I received back from the email is just a max two line saying that my account is suspend. They do tell me that it suspends forever. After several days they deleted my account with all my files in it. Now I have no ways to get any of my files back! I feel ... so angry and hate so much about the digital ocean.

Is this how a normal American Company does? Will a normal American Company suspends customers account because that customer use it to do university work? I can understand it suspends me if I violate any laws but I was just doing an assignment and not violates anything. It also ignore the apology from the customer. Any evidence the customer provides is ignored gets well. Even that after couple days, digital ocean deleted that customer's account with all his files permanently!

This is my story. This is the reason why I hate Digital Ocean!!!!!!

<comment><USER14> As another Digital Ocean user - I'll just say I'm happy to hear that other people running DDOS and/or dictionary attacks from the same IP pool I'm relying on get slapped down _hard_, and that excuses like "but I'm doing this for a Uni assignment!" don't give you a free run to be a bad actor in their (and "my") netblock.

Do you _really_ think you have a "right" to run a dictionary attack from someone else's network? _Seriously?_

Personally - from looking at my fail2ban logs, I wish Amazon - and even more usefully, large residential cable/adsl providers - would implement this sort of pro-active monitoring of user/customer behavior.

<comment><USER82> Sorry that I didn't read your post carefully. I did not know that I cannot run a dictionary attack from their network. I admit that I made the mistake. I do tell them that I was wrong and stop the script immediately after I receive the notice. It's just I do not think that I deserve a penalty with destroy my account and all my files.

<comment><USER14> So what penalty do you think you deserve?

What penalty do the people attacking my clients' WordPress sites or SSH ports deserve? Would that penalty change if they mailed Digital Ocean saying "No, it's OK - me attacking that website is part of my Uni assignment!"? Who'd be responsible for checking that claim, and how much time would it take? And remind me again how much you'd spent with Digital Ocean?

You fucked up big time - deal with it and learn from it. There's clearly a whole bunch of things you didn't even think about before doing this (ad that you're still whining about and failing to accept responsibility for). Be glad it bit you on the ass for something as unimportant as a uni assignment - imagine how much worse this could be if instead of a few assignment files, you'd lost 6 months of your startup's code - because you hadn't bothered reading the TOS you agreed to and didn't bother keeping off-site copies of important files.

Sorry this is harsh - but seriously, think about this from anybody else but your perspective. You behaved like a jerk, then tried the "But I didn't know! Sorry, I'll stop now." justification. And you're _still_ whining that you're being treated unfairly.</comment></comment></comment></comment>


How Will I Measure My Life? - <AUTHOR> https://www.facebook.com/notes/kent-beck/how-will-i-measure-my-life/1792902224075967/ <comment><USER3> Related: Paul Graham's "The Top of My Todo List" [http://www.paulgraham.com/todo.html](http://www.paulgraham.com/todo.html)

"A palliative care nurse called Bronnie Ware made a list of the biggest regrets of the dying. […]

"I would like to avoid making these mistakes. But how do you avoid mistakes you make by default? Ideally you transform your life so it has other defaults. But it may not be possible to do that completely. As long as these mistakes happen by default, you probably have to be reminded not to make them. So I inverted the 5 regrets, yielding a list of 5 commands

"Don't ignore your dreams; don't work too much; say what you think; cultivate friendships; be happy."

<comment><USER4> Inverting the first 2 into positive form would be better: maybe "Pay attention to your dreams" or "Listen to your dreams". I'm not finding the second one so easy to invert...

<comment><USER5> * Pay attention to your dreams

* "Take time to spend on leisure" or "allow yourself to 'waste' some time"

* say what you think

* cultivate friendships

* be happy

</comment></comment></comment><comment><USER6> The book, "How Will You Measure Your Life," by Clayton Christensen is easily on my list of Top 5 Most Important books, I cannot recommend it enough.

Interestingly, Kent seems to have focused in on hygiene-motivation factors more than anything else, while the large takeaway I brought from the book is more about relationships than money/freetime options. While it is important to be locally maximizing the balance of those two, I found the message of the book to be about focusing outward, more away from one's self and career, and more towards others in ways that you can positively effect them.

Not saying at all that the content is wrong (because it's not, it's a fun engineering way of looking at it), but for those curious it also represents a subset of the book.

<comment><USER7> What are your 4 other top books?

</comment></comment><comment><USER8> This man is quantifying his life into two things, money and freetime, nothing about quantifying the quality of your time at work, nothing about happiness, and nothing about being an ethical person. What's the point of having all the money, and all the free time in the world if you're an unhappy jackass who hates his job?

<comment><USER9> I don't know if it is good to love your job. Anything that you do professionally has a tendency to get boring after a time. If you're working for someone else, that also constitutes a blow to your happiness.

I think finding a _sustainable_ balance should be sought after when looking for a job. Does the job let you disconnect? Does the job feel satisfying to you? Do you like the office environment? How much does it pay? And how does this job affect your career?

If you have sufficient money, you can quit at any time and find a suitable less-demanding (both physically and psychologically) job.

I like to think that, I can provide value to a company. If they don't appreciate that and try to take advantage of me without compensation I am always free to look for better opportunities.

Once I did an internship working crazy hours. The people I worked with also worked non-stop. A couple of them slept in the office, a guy slept in the gym. Everyone there was telling us to evaluate our options, think carefully before committing to that firm. And we were thinking that once we got in, our lives would be on hold for the next 10 years. While we were discussing this in the middle of the night another employee looked at us and said "You can quit at any time. See this job as an opportunity to learn things while making good money. Once you stop working, they take the firm cellphone away. All notifications stop. Everything will be back to normal." That talk stuck with me. Whatever the circumstances are a job is a means to make some money. You are free and nobody's slave.

<comment><USER10> How about those in the arts as a profession? I don't think they'd have a successful career if they didn't love their job. I think they'd produce pretty abysmal art.

<comment><USER11> I've produced music for others (as a job, if you will), and I've produced music for my own enjoyment and satisfaction.

While I do get an amount of enjoyment out of producing music for others, it may or may not be music that I personally like. It has to meet certain criteria. It has to sound like this, use these instruments, or be that duration, or whatever.

A lot like programming, I think. I can program on my own time, making whatever I fancy, using whatever language I want, to my own maximum enjoyment. At a programming job, I will likely enjoy it to at least some degree, but I may or may not be doing everything in a way that I think best, because I'm doing the work for the satisfaction of someone else.

But then, producing something for someone else, be it software or music or whatever, results in a different kind of satisfaction on my end: the satisfaction of meeting someone else's need. They wanted X, and I made X for them, and they are happy with it. I may or may not like X myself, but I am pleased that they like it!

</comment></comment></comment></comment><comment><USER12> For those unaware, the author (and HN submitter apparently) is Kent Beck [0] who wrote _Extreme Programming Explained_ and was one of the original signatories of the "Agile Manifesto."

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

</comment><comment><USER13> I measure my life in a very abstract way. How much my existence is positive or negative to the world and to the people around me. Can I make people around me happier / have better lifes? How much of an environmental footprint am I creating? These are all impossible things to measure and I know that I might even contradict myself in how a feel about some of the things that I do but for me it's good enough for me to know what direction I would like to be heading.

</comment><comment><USER14> When I look at the things that I am most grateful to have experienced in my life, none of the decisions that would have been motivated by optimization processes would have led to them coming about.

So what, then, is the point of optimization criteria, if they wouldn't actually enable any possible decision making that accomplishes the "goal"?

Sorry to be so down on this, Kent, but this line of reasoning is such a fail on so many levels. Once in a while--maybe often!--we should just turn off the optimizer and let life unfold.

<comment><USER15> A standard explore/exploit model can work here. Perhaps it's semantics, but I consider that strategy an optimizer, although it's non a linear or deterministic one. Optimize the things I know are working; add semi-random decision making for some percent of my decisions to explore new spaces.

</comment></comment><comment><USER16> I'm surprised no-one has mentioned "financial independence" yet. Check out the subreddit: [http://reddit.com/r/financialindependence](http://reddit.com/r/financialindependence), and the blog called Mr. Money Mustache: [https://www.mrmoneymustache.com/](https://www.mrmoneymustache.com/)

Many software engineers get paid a lot of money, so it's not too difficult to retire at 35 if you can keep your expenses down.

<comment><USER17> the spiraling cost of healthcare makes this very difficult in the US.

</comment></comment><comment><USER18> There are a few metrics other people have considered that he seems to have overlooked; daylights, sunsets, midnights, and cups of coffee are all highly quantitative.

Qualitative measures are probably to be preferred though, e.g. Love.

<comment><USER19> You left out the most quantitative measure of all: 525,600 minutes.

<comment><USER20> ^This.

Whenever I whine on my b'day about turning-a-certain-age, there's always some older person in the room who gets all wistful and says, "Ah, to be N again..."

Oh thanks! Way to mellow my harsh man!

(I gotta stop inviting that guy.)

</comment></comment></comment><comment><USER21> I believe the purpose of life is joy. It comes from growth (ie learning, developing abilities, raising a happy family etc), and service to others (helping them grow or have happier lives), and from knowing one's life is pleasing to God (which can be personally known, it's not all that complicated nor needs to be argumentative). The things you'd want someone to talk about at your funeral. This belief is connected to a strong belief that life has a background, a purpose, is eternal, and growth can also be eternal (I'm a Mormon). I think much about maturity models for the various aspects of life, and how to use/share them. I have written some things about that (more to be added later I hope, just haven't got to posting it), somewhere buried under the features descriptions at [http://onemodel.org](http://onemodel.org) . This life is hard, but very good, and the best is yet to come.

</comment><comment><USER22> Good summary, thanks. I'd come to a less clear version of the same tradeoffs, thinking in terms of commitment level and capacity over time. Eg. 70hr week might be okay once a year but not 60hr for several weeks in a row due to draining personal reinvestment, which stunts the capacity growth that also would happen with the reinvestment time. "Vetting (commitment)" is the title of my freestyle lecture on YT. Your post is much more to the point; thanks again.

</comment><comment><USER23> Something I still have bookmarked to likely get is a "Your Life in Weeks" poster ([https://waitbutwhy.com/2014/05/life- weeks.html](https://waitbutwhy.com/2014/05/life-weeks.html)). This would not be so much for planning as for keeping a sense of scope and proportion.

</comment><comment><USER24> You will need a unit of life. If you have figured out what it is then you can measure life.

Could unit of life be

money? time? number of pizza's u ate? number of babies u had?

Or are they binary in nature?

Happy or Unhappy, Satisfied or Unsatisfied, Enjoyed or Not Enjoyed. Fulfilled or Unfulfilled?

What could it be?

</comment><comment><USER25> Everyone measures and compares oneself to others all the time, why spend even more energy and time on that? Just try to not make stupid moves and all the rest should be fine

<comment><USER26> Meditating on it I realised that this is where a lot of suffering in my life comes from - comparing myself to others. I can't think of much positive that comes from it.

</comment></comment><comment><USER27> I think I would measure my life by how many people come to my funeral because they will miss me due to the positive impact I have had on their lives.

</comment><comment><USER28> "many of the things that make life worth living aren't measurable at all, or if they are measurable then they aren't comparable. How many dinners with family equal one random act of kindness?"

I think there is a dangerous mysticism in this idea of the immeasurable, incomparable, and unfalsifiable value judgement. It may be difficult to reason about the value of family dinners or acts of kindness, and more difficult still to calculate or approximate some kind of dinners-per-kindness measurement, but that's a different thing entirely from claiming there is not and cannot be such a measurement.

For example, you could adopt the axes from the rest of the article, and ask questions like "how much of my money and/or free time would I give up for a family dinner?" "how much would I give up for a random act of kindness?" "is there a minimum amount of money and/or free time I need to be able to afford family dinners or acts of kindness?" "if I only had enough to afford one of the two, which would I choose?"

Saying "my values are complex and I don't know how to reason about them" is the start of a series of interesting questions that ultimately yields a better understanding of yourself. Saying "my values are so complex that they cannot be reasoned about" is anti-intellectualism dressed up as profundity; it's nothing more than an excuse to stop trying to understand.

Worse, the entire foundation of the premise is rotten. Oh, sure, rational thinking is great for measuring laser waves or whatever, but can you reason about the beauty of a sunset, the warmth of a lover's embrace, the blissful confusion of waking from a nap on a summer afternoon?

Yes you can. And the sooner you stop thinking that significance demands ignorance, the sooner you can start understanding and improving the things that are most important to you.

<comment><USER29> >I think there is a dangerous mysticism in this idea of the immeasurable, incomparable, and unfalsifiable value judgement.

In what sense is it dangerous and in what sense is it mysticism?

It's actually kind of an interesting philosophical question, I linked to some background reading at the end of this post.

>Saying "my values are so complex that they cannot be reasoned about" is anti- intellectualism dressed up as profundity; it's nothing more than an excuse to stop trying to understand.

It's not anti-intellectual, it's a _different_ intellectual viewpoint from yours.

>Oh, sure, rational thinking is great for measuring laser waves or whatever, but can you reason about the beauty of a sunset, the warmth of a lover's embrace, the blissful confusion of waking from a nap on a summer afternoon?

This isn't an anti-rational viewpoint.

[1] [https://philpapers.org/archive/CHAIAI-2.pdf](https://philpapers.org/archive/CHAIAI-2.pdf)

[2] [https://plato.stanford.edu/entries/value- incommensurable/#Va...](https://plato.stanford.edu/entries/value- incommensurable/#ValInc)

[3] [https://plato.stanford.edu/entries/value- theory/#Inc](https://plato.stanford.edu/entries/value-theory/#Inc)

[4] [http://www.hup.harvard.edu/catalog.php?isbn=9780674447561](http://www.hup.harvard.edu/catalog.php?isbn=9780674447561)

<comment><USER30> > _It 's not anti-intellectual, it's a different intellectual viewpoint from > yours._

It is anti-intellectual, in the sense that it posits a separate magisterium of things "too complex to reason about" (or sometimes, "too profound to dare and reason about") and asks to give up the attempt. That way lies supernatural.

<comment> wu-ikkyu Do you think humans can gain omniscience using the scientific method?

<comment><USER30> No. Though I am implying that we can get asymptotically close to omniscience (to the extent it's allowed by physics; full omniscience would probably have infinite energy requirements anywy) through the systems we build - <USER2> include mental frameworks, organizational structures and computing devices.

<comment> wu-ikkyu So then if we will always fall short of omniscience, why should we always seek it in everything we do?

<comment><USER30> Because it doesn't matter that you can't walk a hundred million light years, if your goal is 5 meters away from you.

<comment><USER29> Except our goal here is how to measure the worth of your own life. That's a lot more like "a hundred million light years" than it is "5 meters away." We've literally been trying for millennia to evaluate what 'the good life' is and are probably not that much closer than when we started.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER31> His chart is Freetime vs Money Options.. How about a more generic name: Time vs Money.

</comment><comment><USER32> It's all measured in the total instagram likes and reddit tips..

</comment><comment><USER26> Why would you want to measure your life?

You will only end up comparing your life to others, (which is not a particularly good thing to do in my opinion).

</comment><comment><USER33> why did he post on fb lol

<comment> nappy-doo Probably cause he works there?

<comment><USER33> he does? he's gonna measure it poorly then because lol at working for facebook.

</comment></comment></comment><comment><USER34> JavaScript free version: [https://mbasic.facebook.com/notes/kent-beck/how- will-i-measu...](https://mbasic.facebook.com/notes/kent-beck/how-will-i- measure-my-life/1792902224075967/)

I shudder to think about all the data Facebook manages to suck up when you give it the ability.

<comment><USER35> Thanks, but is there a facebook-free version as well?

<comment><USER36> I cloned the page and you can see it here. [http://whatisee.co/95714489.html](http://whatisee.co/95714489.html)

</comment></comment></comment><comment><USER37> Tock tock Who's there? Facebook cryptocurrency.</comment>


I'm a Data Scientist and It's Not My Passion - <AUTHOR> https://www.refinery29.com/en-us/six-figure-paycheck-data-scientist-nyc <comment><USER3> The media's constant reporting on college debt and low paying majors has actually had a large impact on what the next generation is studying. [https://qz.com/1370922/the-2008-financial-crisis- completely-...](https://qz.com/1370922/the-2008-financial-crisis-completely- changed-what-majors-students-choose/)

The humanities and social sciences have fallen off a cliff, heath care and STEM has soared. I'm skeptical that this is a good thing.

<comment><USER4> Less bullshit majors seems like a very good thing.

<comment><USER5> Science gives us answers. Culture gives us meaning.

<comment><USER6> Is that what the arts and humanities graduates serving my coffee in Starbucks are generating - culture?

Don't conflate culture with those who study it. The vast majority of non-STEM graduates generate no activity of either cultural or economic significance. All such degree programmes could be dropped tomorrow with no detriment to society.

<comment><USER7> And possibly even a net benefit to society as many of these degree programs have become little more than people believing they are highly educated because they have been trained to hold certain cultural and political opinions.

</comment></comment></comment></comment></comment><comment><USER8> Link to original post: [https://www.refinery29.com/en-us/six-figure-paycheck- data-sc...](https://www.refinery29.com/en-us/six-figure-paycheck-data- scientist-nyc) (Edit: URL fixed)

The real question is that $125k as a _Senior_ Data Analyst in NYC seems low.

> I have this creative side, which comes in handy when thinking through > challenging problems, but there is only so much creativity that I can use > when in data analysis.

This I disagree with; in data analysis/science, there's more than way to highlight/analyze a problem, and more than one way to solve it. In my experience, the best solutions are often the craziest.

<comment><USER9> Really? $125k doesn't seem low to me based on experience. Also, just looked on Payscale and it says Senior Data Analyst (with 6 years experience) salary range was $63-113k.

<comment><USER10> Data Analyst is not the same thing as a Data Scientist.

<comment><USER11> Here's what bothers me.

When I see Data Science in industry, it means an analyst. When I see Data Science in academia, I see Michael Jordan and Alex Smola. I think this is the core disconnect.

</comment></comment></comment></comment><comment><USER12> I find the last two paragraphs on this web page to be hilariously juxtaposed:

> "Slow down and enjoy the moment. It's not worth stressing about how to > become a partner in ten years or make money as quickly as possible. Set an > attainable goal (something you can achieve in six months or a year) and work > towards that."

> Are you a woman under 35 with a six-figure salary ($100,000+) and want to > tell your story? Submit it here.

</comment><comment><USER13> I often wonder how/why professional developers got into this profession - <USER2> basically came to conclusion that it's not for everyone (basically solving puzzles all day long in front of monitor), and most folks move out from it (into management or wherever) after about 10 years. Especially those that got into it for money.

Personally I got into it by accident - and couldn't believe that I get paid to basically continuing playing games that I was into as teenager and solving various puzzles all day long.... I was doing it for free before, and frankly would still be if not for all the money bull shit all around us.

</comment><comment><USER9> Title seems pretty click baity. She acknowledges that her side passions (creative/design/art) may not be what will pay the bills and that she is happy in the role for now.

</comment><comment><USER14> The misnomer. Title of post says "data scientist" but then says "sr data analyst" in the first paragraph.

<comment><USER15> "Scientist". "Architect". "Engineer". Even "Developer".

Bah!

All borrowed titles that try to make what we do sound more important to those who really do those things.

Coder. Programmer. You're either encoding logic or data into something a computer program can use. Even if all you do is draw fancy diagrams.

Off-topic whining. Downvote to oblivion.

</comment></comment><comment><USER16> Idk if real world engineering is often about passion. Who is passionate about legacy code, constantly changing design requirements and live site issues/on call? I love to build things but at the end of the day it's more of a job than it is a passion project.

<comment><USER17> Yeah, passion is overused recruiter-speak. Sure it's nice for cheerleading if everyone feels passionate about their job, but it's really just short-hand for being engaged and focused which is orthogonal to passion.

There is however something which I believe software engineers need: an innate desire to understand how things work, and a tenacity to debug them when they don't. If you don't have this internal drive, then you'll never get over the hump of the vast background knowledge you need to be a productive programmer in any interesting job.

</comment></comment><comment><USER18> If you can make $125k in your 20s, work that soul killing job for 10 years and put as much away as you can. Then at least you have the start of a nest egg by the time you reach retirement. If you do it backwards and save when you're older, it's 10x harder.

Do your passion when you actually have a passion. Until then, work to live, and save save save. (But don't forget to travel)

<comment><USER19> That is sound advice for a limited amount of time, as you said ten years.

The risk is that before you know it you find yourself with a "fully-funded" retirement account, a stable career, and your vitality gone with your life now behind you. The trick is hard to pull off.

</comment></comment><comment><USER20> So I left my 'typical' role type for a massive paycut due to being done with working in SF and Silicon Valley for something I am passionate about.

I turned down a job at $180,000 and took a job at $52,000.

(previous to that I was making $228,000 - as a consultant)

Because I have literally no passion for what I used to do, the ageism, cut- throat bullshit in silicon valley has quite a toll. Housing is retarded. Transportation in the bay area is horrific, and the quality of life-work- balance is terrible.

I know that I am going to make a heck-ton of a lot more money soon.. but I am pretty much done trying to work in startups in SF/SV.

Thats a job for 20-somethings.

EDIT: Since people asked.

I joined as director of tech for a cannabis startup that has a lot of licenses and has a valuation in hundreds of millions.

It is all bootstrapped from the founders, and has zero debt nor investors (thus the low pay)

And I am building out MRP/ERP/OPs/Sales-ops/data for them.

Further, We are building something amazing on the vape-pen production market.

(the valuation is based on investors who have been trying to buy into the company... and keep getting turned down)

<comment><USER21> 20-something here, we get it too, or people in late 20s anyways. I recently quit a $220k job to pursue a passion startup. I can at least say this: 3 months in and the health metrics I track are significantly better - sleep, heart rate, HRV, blood glucose, and inflammation markers.

While it's a great stepping stone for gaining skills and credentials, there's really nothing "high status" about being an employee for someone else, giving your work away to your employer. It's anti-innovation thinking otherwise, and wish the status driven careerists in this town would reflect on this.

<comment><USER22> How do you track those markers?

<comment><USER20> Apple watch?

I want to know this as well.

I need a mobile blood-pressure monitor.

<comment><USER23> I hope the Apple Watch eventually becomes something that can track all of these metrics, especially sleep, but I don't think the battery life is there yet.

I've gotta charge mine sometime and at night seems like the best time to do it...

<comment><USER24> I have a series zero Apple Watch from the day it was released and still wear it now.

I have figured out how to use it to track my sleep: charge Apple Watch less. I charge Apple Watch twice a day, once in the morning, once at night, for about 15min each time.

My Apple Watch has enough energy for me to use all day and track my sleep using the Sleep++ app.

[https://itunes.apple.com/us/app/sleep/id1038440371?mt=8](https://itunes.apple.com/us/app/sleep/id1038440371?mt=8)

I _sometimes_ have to charge it at work, but in general, this charging method has worked for me.

</comment></comment></comment></comment></comment></comment><comment><USER25> There's not much content to work with here. Her success runs counter to the prevailing media narrative that young people are always broke and struggling. Yes, many are, but many are not, especially in STEM fields. The short-term inconvenience in exchange for making a lot of money (especially if one keeps expenses low) makes it worthwhile in the long-run by being able to retire sooner. 10 years in a high-paying job that is not one's passion beats 40+ years n a low-paying job and never having enough to retire. Her parents paying for most of her college helped a lot, but so does a high IQ to get a good paying job as she did.

</comment><comment><USER26> are proper DS jobs only available in certain cities? I'm curious how many people relocated to get into the field.

</comment><comment><USER27> You need to ask for a pay rise. $125,000 is nothing these days. A regular developer makes that much.

<comment><USER28> I thought devs make more than data scientists? It's my experience that devs are in much shorter supply related to the demand, and their (comp or) value is usually higher.

<comment><USER29> Long story short: both titles are too broad to be useful.</comment></comment></comment>


Foundations of deep learning - <AUTHOR> https://github.com/pauli-space/foundations_for_deep_learning <comment><USER2> With all due respect, this is a quite random reading list, and appears more a result of the 'if "deep learning" in post.title: post.upvote()' trend on Hacker News ...

I will pick on two under the "Classics" section simply as I know the author and have used their work, so am not in any way saying the work isn't useful (it certainly can be in the right spot!), but it isn't "classic" or what I'd recommend for early readers at all. "Uncertainty in Deep Learning" and "Dropout as a Bayesian Approximation" were both published within the last year and a half and is a PhD thesis + paper on interpretations of neural networks in a Bayesian fashion. "Classic" for a paper + thesis less than two years old is quite a stretch even for the fast moving field of deep learning. The same holds true for many of the other papers in "Classics" such as batch norm which is (a) recent and (b) certainly not the only of such techniques (see layer norm, recurrent batch norm, ...) and (c) has complications in implementation[1].

As the simplest example, why is the original dropout paper[7] not under classics? It's an elegant paper, fundamentally important for current neural networks, and is more classic than "Dropout as a Bayesian Approximation" or "Dropout Rademacher Complexity of Deep Neural Networks" which are both listed.

I'm also highly dubious of the noted neuroscience connection - most deep learning researchers use very little from neuroscience.

Again, this list may be helpful to the creator of the repo and tailored toward their specific research direction but it is not useful for readers from Hacker News or those aiming to get their start in deep learning. Why so many upvotes? Zero comments? Zero discussion?

If you want a book, check out the Deep Learning book[2]. If you want a course for RNNs, check out CS224d[3]. If you want a course for CNNs, check out CS231n[4]. If you want to get down and dirty in a practical software engineering way, check out Fast AI[5]. If you want summaries of select recent deep learning papers in GitHub format, check out Denny Britz's notes[8]. There are many other starting points but those are my default suggestions.

If you really want to start learning, this isn't the right list for you and I'd really like to suggest a more sane and potentially tailored path. Seriously. If you reply with what you want, I'll do my best to suggest a starting point.

Background: I'm a deep learning researcher who publishes papers and articles[6].

[1]: [http://www.alexirpan.com/2017/04/26/perils-batch- norm.html](http://www.alexirpan.com/2017/04/26/perils-batch-norm.html)

[2]: [http://www.deeplearningbook.org/](http://www.deeplearningbook.org/)

[3]: [http://cs224d.stanford.edu/](http://cs224d.stanford.edu/)

[4]: [http://cs231n.github.io/](http://cs231n.github.io/)

[5]: [http://course.fast.ai/](http://course.fast.ai/)

[6]: [http://smerity.com/articles/2016/google_nmt_arch.html](http://smerity.com/articles/2016/google_nmt_arch.html)

[7]: [https://www.cs.toronto.edu/~hinton/absps/JMLRdropout.pdf](https://www.cs.toronto.edu/~hinton/absps/JMLRdropout.pdf)

[8]: [https://github.com/dennybritz/deeplearning- papernotes](https://github.com/dennybritz/deeplearning-papernotes)

<comment><AUTHOR> Hello Smerity,

I have read the deeplearning book and I think it's great that you know Yarin. His PhD thesis is the closest thing to a survey paper on uncertainty in Deep Learning. I also think that while the original dropout paper is nice, Yarin's paper extends this method in a very useful manner.

Now, let me address your other points:

1\. This is not for people who want to get started in deep learning. Or it could be. Do you know how I got started into mathematics?

2\. The dubious neuroscience connection isn't dubious at all. In particular, I would also advise that you read 'Towards an integration of deep learning and neuroscience' by Marblestone et al. If you still disagree, I could assure you that Dr Kriegeskorte, Konrad Kording, Professor Bengio and many others are of a different opinion.

Furthermore, the language of statistical learning has shown its limitations. Consider Srivastava's paper on Locally Competitive Networks and every other paper on deep rectifier networks for example. As the complexity of deep models approach those of biological systems, I have no doubt we'll be using similar tools to understand these models.

fyi: I'm currently working on deep rectifier networks.

Aidan

<comment><USER2> Hey Aidan,

As noted, it's not a criticism of a reading list tailored for you, I simply feel it's a really confusing reading list given the likely audience that will arrive there from Hacker News and the title. I also don't think it can be pieced together to form a good introductory reading list or that the contents as stated are "foundational" yet given the progression and holes.

Your (1) confuses me still - I admittedly don't know how you got started in mathematics or how that's relevant here?

Regarding (2), there certainly is a place for neuroscience to influencing thinking or introduce new ideas, and I'm certainly not disregarding the entirety of that potential intersection, but it's a very specific field that is still largely disconnected from the practical application of neural networks. This may change, slightly or substantially, in the future, but thinking again with the lens of the audience of Hacker News (where the incorrect adages of the style "deep learning learns just like a human brain" gets thrown around frequently), I rarely want to exaggerate the influence that neuroscience has on the field at this stage. I'd also lightly note that appealing to authority isn't an argument, though do note the author's pedigree.

<comment><AUTHOR> Good morning Smerity,

I'm sorry if my response sounded harsh. It wasn't my goal to confuse readers and I admit that it's a work in progress. That said I must clarify a few things as I realise that I left out important details:

1\. Regarding neuroscience: Those researchers I've mentioned(Kording et al.) are actually people I've discussed this issue with recently. That's the context. However, I must say that I thoroughly agree with you that "deep learning learns just like a human brain" is a very inaccurate statement and a reflection of the imprecise understanding many deep learning practitioners(and some researchers) have of their own field.

2\. My approach to math: Was certainly not the approach used by deep learning tutorials. The issue I have with the proliferation of these tutorials on the internet is that they lead to familiarity rather than understanding. How to reach such a theoretical understanding is debatable and I'd like to encourage a debate.

In fact, this list is part of a bigger project which I'd like to collaborate on with others in the near future. You can think of it as the early stages of a Bourbaki project for deep learning. :)

Who was Bourbaki: [http://www.ams.org/notices/200709/tx070901150p.pdf](http://www.ams.org/notices/200709/tx070901150p.pdf)

</comment></comment></comment></comment><comment><USER3> You can't take papers and reupload them to GitHub uncited from the original source publication.

<comment><USER4> Also, the HN guidelines specify:

> _Please submit the original source._

[https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)

<comment><USER3> The "Awesome List" trend of link aggregation on GitHub has been a gray area for that particular HN rule.

<comment><USER4> That's generally a link of links, though, right? Or am I misremembering?</comment></comment></comment></comment>


How Difficult is it to Write a Compiler? - <AUTHOR> http://tratt.net/laurie/tech_articles/articles/how_difficult_is_it_to_write_a_compiler <comment><USER2> He's grandstanding, for example "limited error checking." I have written commercial compilers for a computer manufacturer and a number of translators, DSL compilers, and an application generation framework. I wrote a Pascal to C translator in a week, but it took another month's work before it could translate any Pascal program, not just MY programs. The reason it took only a week is that Pascal's data structures and types map easily to C. Most importantly, I wanted to get rid of Pascal's variety of strict typing. It is brain damaged. By using C, I let the C compiler do the heavy lifting like code optimization. If I had been trying to map Python to Java, it would have been way more difficult, because of the typing mismatch. Python has dynamic typing and Java has static typing. Python to Java is so difficult that I doubt any sane person would attempt it.

Yes, you can write a compiler in a few days, if you have done it before, if your target language semantics are compatible, if you wave you hands about usability, if you are the only user, and you don't give a rat's ass about performance. If you want to translate to a low level virtual machine like JVM or to machine binary, you have a lot more work to do: compiler optimization, instruction scheduling, register scheduling, etc.

Tratt's three steps are something that you might find in a Wikipedia article (but I haven't looked.) Generally you don't create a parse tree, unless are doing something like mapping back into a newer version of the target language or doing sophisticated macro expansion. Using Bison or a similar parser generator, you directly create an Abstract Syntax Tree (AST). Using the AST, you perform semantic checking (has the variable been declared, type compatibility in expressions...); language based optimizations like removing redundant expressions, loop hoisting, tail recursion; generate abstract machine code. Using the AMC, do machine specific optimizations like instruction scheduling (reordering to take advantage of the architecture); register scheduling; and finally generate the binary. All of which take more than a couple of days

<comment><USER3> Both JRuby and Jython compile dynamic languages into the JVM; the instruction set of the VM makes it fairly difficult to deal with dynamic types and to deal with reloading methods on the fly (I believe that in Java the only real way to unload a class is to throw away the whole classloader associated with it). If you're really curious about how it's done, check out Charles Nutter's blog ([http://blog.headius.com/2008/09/first-taste-of- invokedynamic...](http://blog.headius.com/2008/09/first-taste-of- invokedynamic.html) is pretty interesting) or download the JRuby source and check it out.

That said, it's certainly not trivial, so it still might not qualify as "sane."

<comment><USER2> Sorry. I meant source to source, as in Python source to Java source. Python to java byte code, as in Jython, is a reasonable thing to do, but not easy.

</comment></comment></comment><comment><USER4> Graydon Hoare's "One-Day Compilers" (<http://www.venge.net/graydon/talks/mkc/html/mgp00001.html>) presentation is worth a look. It uses OCaml to build a compiler for basic makefiles (using C as an intermediate language).

Kragen Sitaker has a _great_ collection of links for amateur compiler writers on his Ur-Scheme (<http://www.canonical.org/~kragen/sw/urscheme/>) page.

This paper (<http://scheme2006.cs.uchicago.edu/11-ghuloum.pdf>) by Abdulaziz Ghuloum is also very interesting - he shows step-by-step how to write a simple native-code Scheme-like compiler by writing small C functions, compiling them with gcc, _and then saving the assembly output._ ("Since we don't know yet how to do that, we ask for some help from another compiler that does know: gcc.") Heavy theory about optimizing? Nope. Demystifying and inspiring? Heck yeah.

<comment><USER5> Um, that's not what the paper does at all. There's exactly one invocation of gcc in the whole paper, and its only point is to enable the (human) developer to see what the calling convention for a function should look like. A couple of sentences after the one you quote we get: "Let's compile it using gcc [...] Generating this file from Scheme is straightforward." and then comes the very first compiler in the incrementally-improving series, which accepts a small integer and outputs assembler code for a function that returns that integer as its value.

<comment><USER4> Right. He uses grabbing assembly output from gcc to demystify the process. (I guess I worded that poorly.)

</comment></comment></comment><comment><USER6> If you're writing a real honest-to-God compiler (source language to hardware execution, not a Java/Ruby/Python VM targeted language) these years, and you don't start with LLVM (<http://llvm.org>) as a basis for code generation, you're really missing the boat.

As an old compiler hacker (from the early 70s), what I've seen of LLVM is that it's a world-class foundation.

<comment><USER7> Unfortunately, it doesn't do exceptions well - certainly not Windows SEH, and it relies on DWARF2 exception tables + specific runtime library unwinding support.

Apart from that, and the slowness of its instruction selector, though, it's pretty good.

</comment></comment><comment><USER8> After I took a compilers class (or an operating systems class for that matter) the thing that really stood out is how much _stuff_ is dictated simply by convention or remains a "black art" where only a few people really understand how it works.

In any case, I'd venture to say writing a simple compiler should be pretty easy these days with tools like LLVM - <http://llvm.org/> \- and the slew of lexers/parsers available for different platforms.

<comment><USER9> If you use something like Lisp's syntax, then writing a parser is pretty simple:

<http://blog.fogus.me/2008/07/22/broccoli-v022-bellwitch/>

Smalltalk has only about 8 terminals and nonterminals in its grammar. You can hand code a top-down parser for it in an afternoon.

Then there's always Forth.

<comment><USER10> Lexing/parsing is one of the easiest parts of writing a compiler these days. With a parser generator, it shouldn't take you more than a couple days to write the lexer and parser for a moderately-complex language.

I second the comments up-thread about error-reporting being the hardest part of a real compiler.

</comment></comment></comment><comment><USER9> The NAND to Tetris course has a section where you implement an Object Oriented language with a syntax comparable to Ruby/Groovy/Lua/Javascript.

<http://video.google.com/videoplay?docid=7654043762021156507>

There are course materials available for free download, including all of the programs and emulators, which are Open Source.

</comment><comment><USER11> It's easy to write a compiler.

I understand that writing a _good_ compiler is somewhat more difficult.

<comment><USER3> Indeed . . . as someone who works with an in-house language, I can affirm that the ratio of time we've spent on the initial parse/compile steps to the time spent on things like error reporting and optimization is probably approaching 1:100 at this point.

<comment><USER12> I find the error reporting the hardest thing. And a lot of "tips and techniques" kind of neglect that you actually may have syntax errors and need to report them to the user in a helpful way.

</comment></comment></comment><comment><USER9> The guy who laughs reminds me of a conversation I had years ago. This guy I was talking to was worried about people contracting AIDS from tattoo parlours. I pointed out that this could be prevented by simply sterilizing with bleach. Well, he simply couldn't believe that something as nefarious and complex as AIDS could be prevented with something as mundane as household bleach.

<http://www.cdc.gov/od/ohs/biosfty/bleachiv.htm>

Also reminds me of the rube who couldn't believe that someone could improve on the speed of MRI by a factor of 50X, simply because he somehow felt that everything about Ruby must be advanced in every possible way.

Scott Adams should sell cards that read: "Congratulations, you've just exhibited a prime example of PHB logic!"

<comment><USER13> _Also reminds me of the rube who couldn't believe that someone could improve on the speed of MRI by a factor of 50X, simply because he somehow felt that everything about Ruby must be advanced in every possible way._

Got a citation / reference for this?

<comment><USER9> "So do you seriously think that all these smart people, writing (and collaborating on) all these projects have somehow missed the magic technique that's going to make Ruby run 60x faster?"

[http://fukamachi.org/wp/2008/06/02/maglev-and-the- naiivety-o...](http://fukamachi.org/wp/2008/06/02/maglev-and-the-naiivety-of- the-rails-community/)

<comment><USER13> Much appreciated - thanks!

</comment></comment></comment></comment><comment><USER13> Vidar Hokstad has written a series of blog posts about building a compiler (of sorts) in Ruby that's well worth a read: <http://www.hokstad.com/compiler>

There's also Jack Crenshaw's classic "Let's Build A Compiler": <http://compilers.iecc.com/crenshaw/>

</comment><comment><USER14> I just finished writing a compiler for a CS class. I was surprised at how logical it ended up being. For me, it really took away a lot of the mystic nature surrounding compilers.

Writing a compiler for a small language with minimal optimization features and an easy to understand assembly/bytecode format is actually relatively straightforward.

</comment><comment><USER15> I had this same realization over the summer when I spent some time learning about interpreted languages, VMs and the like. Once I realized what a compiler does, I couldn't believe how simple the basic idea is. Obviously the devil is in the details, but its surprising nonetheless how simple a compiler can be.

<comment><USER16> _the devil is in the details_

The details are usually what gives one project/company/etc a huge advantage over the rest and are usually the hardest to get right. The basic idea of everything isn't hard to grasp, but to create a proper modern compiler/operating system/game/etc is a ton of work not suited for everyone.

<comment><USER17> I don't think either the OP or the author of the linked article claimed that the details are unimportant or that creating a 'proper modern compiler' is simple. Rather, they're claiming that many people find compilers _conceptually_ intimidating, and that this is unwarranted.

<comment><USER18> There is some truth to this. I also think that when people say "compiler" they commonly have an expectation that is closer to something like GCC. What he's describing is akin to a code to assembly translator; in college in the first week or two of the compilers class we wrote simple C to assembly code translators in yacc. It's really not much more to it than that. You simply lex it, you parse it and if your language is simple enough you can pretty much just emit instructions. Traditionally, those were some of the hardest and most time consuming parts of compiler development.

When you start to add all the translations to perform advanced optimization and those optimizations, you're talking about some very very cool stuff and it is kind of hard and I think of lot of people think of that when they think "compiler." Those simple code translators really ignore that which is the part most compiler users are really thankful for.

How did Bruce Lee say it? "It is like a finger pointing away to the moon. Do not concentrate on the finger or you will miss all that heavenly glory."

</comment></comment></comment></comment><comment><USER19> Once wrote a compiler in Lisp. It makes you smarter the first time. Therefore you won't try a second time.

</comment><comment><USER20> Writing a compiler is like anything else, it's a lot easier when you've done it. If you want to try out compiler writing, use (or invent) a simple toy language and write a compiler for it, in your favourite implementation language. Once you've done that, it'll all seem a lot simpler.

</comment><comment><USER21> Parsing is complicated, as the author admits. It is also a problem well- understood by the field in general, though, and once it is learned is not a major obstacle. Setting up a parser, though, can involve a lot of easy but tedious work, depending on the language.

Following a language specification requires _precise_ attention to detail, and understanding of the whole process helps a lot.

For a sufficiently complex language, writing code to manipulate the AST requires ability to hold a lot of data in your head at one time, or some really good visualizing tools.

Code-generation from AST can easily require a lot of effort, even when it is not especially difficult (and it can be difficult).

Optimization is difficult.

Error reporting is difficult.

<comment><USER22> Actually, in my experience, PEGs make parsing not complicated. What kind of visualization tools have you found helpful in manipulating the AST? So far I've found equational reasoning (in my head or on paper) much more helpful than visualization in writing code to manipulate ASTs. And code generation from ASTs does not require a lot of effort when it is not especially difficult; it's really just a tree traversal or two. (As you point out, with optimization it can become arbitrarily difficult.)

</comment></comment><comment><USER23> <http://community.schemewiki.org/?90min-scheme2c> In 90 minutes you can write a scheme to c compiler.

<comment><USER22> No, the 90 minutes is the time to _explain_ the compiler, not to _write_ it, as Marc explains at the beginning of that excellent talk.

</comment></comment><comment><USER24> difficult

</comment><comment><USER25> Short Answer is: Depends on what language you want to compile.

</comment><comment><USER26> No mention of parrot? It's absolutely trivial to write a compiler using parrot.</comment>


Open-Sourcing the Anvil App Server - <AUTHOR> https://anvil.works/blog/open-source <comment><USER2> Well done Meredydd and team. This makes Anvil a much more friendly investment for those who can't risk losing a service or can't run on a public cloud.

<comment><USER3> Note the licensing.

<comment><USER4> What does it mean? Is it a sort of Lesser-Affero GPL, where the runtime is open source but it can be linked and distributed with other Anvil proprietary apps?

</comment></comment></comment><comment><USER5> Former user, definitely returning to it again now. Despite loving the tools, not having the complete code stifled me too much and not being able to host where I needed to pushed me away about a year ago. Looking forward to seeing the improvements they have made.

</comment><comment><USER6> Related from 2017: [https://news.ycombinator.com/item?id=15584124](https://news.ycombinator.com/item?id=15584124)

Edit: reposts are fine after about a year, and this isn't a repost in any case. These links are just for the curious!

</comment><comment><USER7> Great low code technology! This should accelerate usage</comment>


What I admire about professions like Engineering and Medicine - <AUTHOR> http://weblog.raganwald.com/2008/01/what-i-admire-about-professions-like.html

<comment><USER2> It's worth noting that the professional engineer or doctor is as much an ideal as the professional computer programmer. Doctors actually don't wash their hands as often as they know they should (<http://www.nytimes.com/2006/09/24/magazine/24wwln_freak.html>). Engineering failures occur with sufficient frequency to merit a civil engineering dailywtf (<http://www.icivilengineer.com/Failure_Watch/>), though thankfully not updated daily.

This is not to say that the failure of those professions to live up to their ideal should excuse us. We equally have a responsibility to the quality of our code. The solution is nothing so easy as an unread code of ethics or a well- it's-just-money justification for sloppiness. A lot of code actually does risk lives -- fly by wire systems, automated storm dams, anything in a nuclear power plant. The risking of lives isn't sufficient to make surgeons follow well known infection prevention protocols. For them as for us there have to be cultural changes which value slow and steady repeatable processes over wunderkind acts of brilliance.

</comment><comment><USER3> Engineers and doctors are driven to abide a code of ethics because they don't want to kill people. If there was software which was safety critical (maybe NASA code), then I'm sure that the developers would have the same kind of ethics.

I'm a power systems engineer involved in designing offshore oil and gas facilities. We frequently have to shoot down dangerous hare-brained schemes from clients who want to save a little cash. Thank god for the national standards though, they usually back us up. Which is another thing - failure to adhere to standards is a legal offence (especially if the oil rig explodes).

</comment><comment><USER4> _Engineers have a certain line that they will not, cannot cross. Doctors work the same way._

While the romantic in me would like to believe this, there are too many counterexamples out there for me to just accept this generalization.

When software engineers fail the results often are not visible or comprehensible to ordinary people but when those professions screw up the results are dramatic. As a consequence they have to take extra steps (like always letting everyone know about these codes of ethics) to maintain trust.</comment>


Open invite to HN - halloween party at WePay (Palo Alto) this Friday  - <AUTHOR>

Who (will be there):
  -Hackers
  -Founders
  -Press
  -Friends
What (is this all about): We want to celebrate the phenomenal growth we've seen over the past year, and thank our team, investors, and  community for the important role they've played in it.
Where: WePay HQ 455 Portage Ave. Ste. B Palo Alto, CA 94306
When: Friday, October 28th, 7pm 'til the po-lice shut us down, down...
Why (should I go):
  -You want to meet other cool startup people
  -You want to drink and eat for free (we'll have    an open bar, and the party is catered by Popeye's Chicken)
  -You want to take advantage of our photo booth/set, so you can take home a photo of you and your sweet costume.
Link to facebook event: http://www.facebook.com/event.php?eid=289782027698784 <comment><USER2> Will Bill Clerico be bringing his millionaire honeys?</comment>


Boogie: An Intermediate Verification Language - <AUTHOR> https://www.microsoft.com/en-us/research/project/boogie-an-intermediate-verification-language/?from=http%3A%2F%2Fresearch.microsoft.com%2Fen-us%2Fprojects%2Fboogie%2F <comment><USER2> Ha, Spec#... Good old times... It has interesting static design by contract constructs as well as tracking resource ownership (via [Claims] attribute) 13 years before Rust! [0] Yeah, I know it's mostly apples to oranges but with Bartok [1] the CIL was compiled ahead of time to native code.

[0]: [https://en.m.wikipedia.org/wiki/Spec_Sharp](https://en.m.wikipedia.org/wiki/Spec_Sharp)

[1]: [https://en.m.wikipedia.org/wiki/Bartok_(compiler)](https://en.m.wikipedia.org/wiki/Bartok_\(compiler\))</comment>


Japan gets Fx0–Mozilla Firefox OS-powered transparent smartphone - <AUTHOR> http://phys.org/news/2014-12-japan-fx0mozilla-firefox-os-powered-transparent.html <comment><USER2> Looks like your submission went didn't meet with readers' attention, while the later one did. [https://news.ycombinator.com/item?id=8791056](https://news.ycombinator.com/item?id=8791056) Happened to me, too :/</comment>


A petition to stop the usage of lightboxes - <AUTHOR> http://rohanprabhu.com/?p=161

<comment><USER2> Sounds like he wishes to stop the _abuse_ of lightboxes.

Lightboxes are great for showing zoomed images or image galleries. They're not welcome for spammy widgets, signup offers or ads. But then, what format do you prefer for spammy widgets or ads? None obviously, so lightboxes are not the problem.

<comment><USER3> Is there any advantage of using a lightbox vs a proper pop-up to present zoomed image or gallery?

I, for one, much prefer the latter. You can continue with reading the article, you can use all the window management you already know and you don't have to suffer the horrible effects that author of the lightbox library though you can't live without. Not to mention that on netbooks, because lightboxes are always contained within the size of your browser viewport, the "zoomed" content is often smaller than miniature on the site.

<comment><USER2> A lot of people don't like popup windows, due to the their abuse years back. That also led to browsers and security software blocking them a lot of the time.

<comment><USER3> They're blocked automatically when untrusted application tries to open them not in direct response to user interaction. If you open one from <a> tag, I don't think any browser will try to block that.

<comment><USER2> Schlonky security software and 'popup blocker' add-ons might, though.

<comment><USER3> But then you're worrying about users that _deliberately_ decided to block all pop-us.

It's exactly the same as with nojs users—if they can block, they can unblock it. Especially if they expect a pop-up to appear, because they've just clicked on a miniature.

<comment><USER2> Well, not really... I get support requests/error reports from users all the time who are running stuff like this, and couldn't click their way out of a paper bag. They have no idea that they are running software which interferes with websites working the way the author intended.

Thankfully, it seems that makers of security and antivirus software are changing their products to not restrict JavaScript and browser functions.

</comment></comment></comment></comment></comment></comment></comment><comment><USER4> My biggest gripe with web browsers today is _middle-click hijack_. If I left- click on a link/picture, fine, you can do whatever you want. Fancy javascript, lightboxes, the whole jazz. But if I middle-click that same link, by god it better be opening in a new tab in the background. No exceptions.

<comment><USER5> I prefer lightbox implementations that extend a standard hyperlink to the enlarged image. If you middle-click, ctrl-click, etc, your browser grabs the URL from href and opens it in a new tab/window. The script is initiated by an event attached using a framework like jQuery, which uses a DOM query to locate links with a specific class. This has the additional upside of working as expected for users with JavaScript disabled. The implementations that fail miserably either use 'javascript:methodCall()' inside href, or have a kludgy onclick implementation.

Built properly, a lightbox shouldn't get in the way of your desired behavior.

</comment></comment><comment><USER6> My main problem with lightbox is when viewed on mobile devices and pages that don't allow you to zoom.

<comment><USER7> I really don't get why mobile Safari can be set to not allow zooming on a web page.

Who benefits from that option existing?

<comment><USER8> Happens in Android browser, too. Whose bright idea was it that I didn't need to be able to read my phone without holding to my face, or stretch the screen so I can hit that tiny checkbox?

</comment></comment></comment><comment><USER9> I have to admit, lightboxes have been very prevalent lately and I'm getting sick of them. Signed.

</comment><comment><USER10> Sounds like a petition for the _appropriate_ usage of lightboxes. That's something I definitely agree with.

It's similar to the old problems with modal dialogs in desktop applications. Basically: don't use a modal dialog unless your situation absolutely requires it.

<comment><USER3> What would be the appropriate usage of lightboxes? I really can't think of any besides the Facebook's "Before you submit."

<comment><USER10> On the web, they seem to work pretty well for image galleries. Although I think it's important that you can dismiss the lightbox by simply clicking anywhere outside the image.

In general, modal dialogs are suitable for operations where it helps to have contextual information in the background, but you don't need to interact with it. A 'Save' dialog is a common example.

This thread on UX exchange has some more thoughts and examples:

[http://uxexchange.com/questions/1153/when-should-you-use- a-m...](http://uxexchange.com/questions/1153/when-should-you-use-a-modal- dialog-box)

</comment></comment></comment><comment><USER11> here's a link:

[http://viewtext.org/article?url=http://rohanprabhu.com/?p=16...](http://viewtext.org/article?url=http://rohanprabhu.com/?p=161)

...looks like the site is struggling to serve requests right now

<comment><USER12> Or use the Coral CDN by appending nyud.net to the host:

<http://rohanprabhu.com.nyud.net/?p=161>

It preserves images better than ViewText does.

<comment><USER3> All I get are 408 Time-outs now. As I've mentioned before[1] CoralCDN isn't very good at preserving content that is already down.

If OP knew his hosting wasn't very well suited for handling load spikes HN users can generate, he should have posted the _original link_ behind the cdn.

At this point the only thing OP could do is to create a rule to redirect to .nyud.net link if the referrer equals HN.

[1] <http://news.ycombinator.com/item?id=2235559>

<comment><USER13> _At this point the only thing OP could do is to create a rule to redirect to .nyud.net link if the referrer equals HN._

At this point there might be nothing the OP can do except wait until the initial hump of traffic has died down: ifthe server really is completely bogged down he may not even be able to open SSH session to make any config changes.

For an article like this, that does not need any dynamic content, would be better served by an event based server as these tend to cope better on low-end boxes in the presence high demand for static content than thread or process based servers.

Or, like you say, stick with the current web server setup and post links to high volume sites via a cache like CoralCDN.

<comment><USER3> > At this point there might be nothing the OP can do except wait until the > initial hump of traffic has died down: ifthe server really is completely > bogged down he may not even be able to open SSH session to make any config > changes.

I actually did some testing at that moment, before I edited the part you have quoted (I added this later), and I'm confident OP could have probably rescued it if he wanted to.

But I agree, it's pretty much game over because you can't edit the link after you've submitted it. So if you're not prepared to handle dense traffic, it's a good idea to submit coralled link instead or put your website behind CloudFront temporarily.

</comment></comment></comment></comment></comment><comment><USER14> A big offender on this is actually Reddit. The lightbox that pops up prompting you to log in when you try to vote is broken for smaller screen sizes. Though personally I keep Reddit zoomed significantly, and that makes it even more broken.

</comment><comment><USER15> What's the alternative for displaying images?

<comment><USER16> img tag, optionally wrapped by an anchor tag pointing at a larger version. simple and working just fine since the early 90's i think. "if ain't broke, don't fix it!"

</comment></comment><comment><USER17> The worst part about lightboxes is that when you click the back button like you've been doing for the past 15 years, you get really pissed off.

<comment><USER18> HTML history pushState should fix that.</comment></comment>