AWS S3 open source alternative written in Go - <AUTHOR> https://minio.io <comment><USER2> Or, run _Riak_ with their S3 compatibility layer. Riak is extremely stable and the work Basho has done to make a truly robust distributed database is significant.

[http://docs.basho.com/riak/cs/2.1.1/](http://docs.basho.com/riak/cs/2.1.1/)

<comment><USER3> Other alternatives:

ceph - [http://docs.ceph.com/docs/master/radosgw/s3/](http://docs.ceph.com/docs/master/radosgw/s3/)

swift - [https://wiki.openstack.org/wiki/Swift/APIFeatureComparison#A...](https://wiki.openstack.org/wiki/Swift/APIFeatureComparison#Amazon_S3_REST_API_Compatability)

<comment><USER4> CEPH is a volume service not an object storage service.

SWIFT is indeed analogous to S3.

<comment><USER3> Come on, I literally linked to a website describing "CEPH OBJECT GATEWAY S3 API"

</comment></comment></comment></comment><comment><USER5> Theory here is that people will build apps that talk to S3. But sometimes those apps might need to run inside the perimeter and can't talk to the cloud. So rather than rewrite an app to talk to a new internal datastore, you just point it at a locally hosted Minio and you're up and running.

Smart.

<comment><USER6> What kind of situations do you see this becoming a factor in? 5 or 10 years ago this was an issue with early cloud adopters. Now a days cloud providers are ramping up their DCs to be compliant and allow companies/government entities with strict policies to still onboard.

Its a good strategy but not one that I see being exercised frequently enough.

<comment><USER7> The software I work on is targeted towards customers who generally have really spotty internet connections (eg: they all are in the less forgiving parts of the ocean or middle of nowhere if on land). This pretty much mandates using software like this to build out your app as you can't rely on internet connectivity.

There pretty much isn't anything you can do to improve their internet connections as cables to remote places are always getting dug up with week+ times to repair so you need something that can run locally for long periods. Ships have a different problem with very slow speeds that effectively means you can only transmit the absolute minimum off the ship when its out as sea (when they are at port they typically have normal internet connections to bulk dump data off on).

</comment></comment></comment><comment><USER8> I switched from Fake S3 [1] to Minio for local development. Fast and lightweight, good experience so far :)

Easy to setup with Vagrant, and linking / sharing the Minio shared folder to the host makes it quite convenient to quickly check the files without going to the UI [2].

[1] - [https://github.com/jubos/fake-s3](https://github.com/jubos/fake-s3)

[2] - It stores the files as-is in the local filesystem (files in folders, unchanged), as opposed to having it 'wrapped' like Fake S3 does.

</comment><comment><AUTHOR> Minio will always be 100% free software / open source. We have no plans to add any proprietary extensions or hold back on features for paying customers only. -- Minio Team

<comment><USER9> Then why not make the license AGPLv3-or-later, to avoid other people creating proprietary forks? I get that it's not a common occurence within the Golang world, but nothing will change unless more Golang projects start making their code copylefted.

<comment><USER10> GNU AGPL is an ideal license for free software projects. We are a strong supporter of the GNU project. We chose Apache License for Minio purely for adoption reasons. Most of our users build proprietary software around Minio and their legal council has a default NO policy towards GNU licenses. Besides, FSF has also approved Apache License v2 as a free software license.

Proprietary forks are OK with us. It will be too expensive to maintain branches of their own and catch up with the upstream.

<comment><USER11> > It will be too expensive to maintain branches of their own and catch up with > the upstream.

Haha, you guys are awesome! You've totally figured it out. Stay awesome!

</comment></comment></comment></comment><comment><USER12> After evaluating a couple of options mentioned in the other comments here, we recently replaced our in-house built s3 clone with minio for our on-prem version of our app. Very robust and stable.

<comment><USER13> Keep in mind that there are plenty of object stores that are robust and stable until you put 1 billion keys in them.

<comment><USER12> That's a very good point - but for what we do (on-premise version control for Excel where each workbook version represents one object) we won't be getting even close to that number. But yes, agreed, it entirely depends on your use case.

<comment><USER13> If you don't mind me asking, why not use Amazon S3? It's cheap and -- importantly -- somebody else is on-call for its uptime.

<comment><USER14> I'm going to guess that it is part of the "on premises superstition" where companies feel that the stuff they own is more secure somehow. Obviously, this is not often true in practice, but 5 years of research/consulting has taught me that they feel this way all the same.

Occasionally, there are laws that also mandate certain controls that cloud providers in general did not have. That is also becoming rarer as time goes on.

<comment><USER15> There really are pros to on prem.

There are cons, don't get me wrong, but to somehow claim that AWS is the end all be all of hosting choices is demonstrably wrong.

For example - You want to develop a financial exchange with a 100 microsecond average response time, peaks of 10Gbit traffic, and 5 9s of uptime. Do you host that on AWS? I wouldn't.

Another example - If I were a medium+ sized company (say 20+ employees), I would want my source control 100% on prem (excluding backup). Internet connections are too flakey, and Github gets DDOSed too often. I could not stake my entire business on github.

<comment><USER16> I'll give you another pro, customization. Our on-prem Jira instance can have add-ons and changes that aren't allowed in the cloud-hosted version.

<comment><USER17> That's the Atlassian SaaS offering. You could still run it in any cloud yourself and get all the customizations you want.

<comment><USER18> but then voiding the argument that was stated initially i.e. no one needs to maintain it and be on call for it

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER19> Does this have the ability to mirror to an encrypted remote? I'm looking for something like this for a simple home storage server, but emphasis on being able to replicate to something like B2 Storage for cheap backup.

Currently Infinit.sh has my attention the most, but it's quite young still.

 _edit_ : [https://news.ycombinator.com/item?id=12125344](https://news.ycombinator.com/item?id=12125344) this thread seems to be talking about what i want. With that said, i'm not yet sure if `mc mirror` supports Backblaze, as that (per price point) is my prime need

<comment><USER20> Current opinion is that "borg" is the holy grail of backup schemes ... it takes attic, which fixed all of the duplicity shortcomings, and improved on that ... [1]

We[2][3] tend to agree with that.

One reason it might not work for you is that we are an order of magnitude more expensive than B2, so perhaps that's a better bet for you. On the other hand, $7.20 per year for our smallest borg account is almost as close to zero as your B2 minimum order would be, so ... who knows.

One upside of choosing our service is that you can choose your location (US, Zurich, HK, etc.)

[1] [https://www.stavros.io/posts/holy-grail- backups/](https://www.stavros.io/posts/holy-grail-backups/)

[2] rsync.net

[3] [http://www.rsync.net/products/attic.html](http://www.rsync.net/products/attic.html)

<comment><USER21> from [3]

> If you're not sure what this means, our product is Not For You.

Please don't do that, its childish and unimpressive.

<comment><USER22> There's no support for that service. Makes sense to ward people off who might need support at the headline.

<comment><USER20> Just to be clear, there is no support for the deeply discounted borg/attic accounts at rsync.net.

Regular rsync.net accounts have full, unlimited support provided by a US-based engineer. As in, an honest to god unix engineer. Sometimes, but rarely, me.

</comment></comment></comment></comment></comment><comment><USER23> The canonical open source alternative to S3 [https://wiki.openstack.org/wiki/Swift](https://wiki.openstack.org/wiki/Swift)

<comment><USER24> Riak CS is another one:

[https://github.com/basho/riak_cs](https://github.com/basho/riak_cs)

<comment><USER25> Ran this in production and dealt with a lot of issues. I would caution people against it's use in anything critical or customer facing.

<comment><USER26> Could you please elaborate it? What were the issues you were facing?

<comment><USER27> As another user with nothing but negative experiences with Riak-CS in production, I thought I'd take a stab here. We had a 12-node cluster with ~10TB per node, fwiw. In no particular order:

\- The restart times of the Riak process ranged from 10 minutes to 3+ hours, during which time the cluster was basically useless. Not a single suggestion from support sped up this process.

\- Every single night from 0800 - 0900 UTC, the cluster would grind to a halt (as measured by canaries measuring upload/download cycle times). This continued even after we migrated all customer data and traffic off of the cluster.

\- Riak-CS ships with garbage collection disabled despite it being a critical feature. I inherited a cluster that had been run for some months without gc enabled. Turning it on caused the cluster to catastrophically fail. Basho Support, over a period of close to a year, was unable to find a single solution that would get our cluster back to health. If our cluster were a house on a show like Hoarders, the garbage in it would be considered load bearing.

\- We attempted to upgrade our way out of our un-garbage-collect-able mess, but the transfer crashed. Every. Single. Time.

\- Even had transfers worked, all of the bloated manifests have to be copied in their entirety, so you can't gc the incoming data on the new cluster.

\- Even while babying the cluster, it would become unusable at least once a month, requiring a restart of all nodes. The slowest node took 3+ hours to start, followed by another 3+ hours of transferring data. This was 6+ hours of system downtime every month.

\- During these monthly episodes, we attempted to engage with support and try to debug the processes (we were a team of seasoned Erlang developers). We could attach Observer and/or use the REPL to grab stats, but not a single support resource was able or willing to engage.

\- For giggles, once we had migrated all users off of the cluster, we attempted to let gc run. It never completed. Not once. We let this go on for a few months before nuking the entire cluster.

Now, I absolutely realize that we got ourselves into that mess by running the cluster without gc for an extended period. But in the grand scheme of things, this cluster wasn't storing a very large amount of data -- tens of TB spread over tens of millions of objects. Having the cluster get into a state where gc can never run and where this causes snowballing instability is unacceptable.

We switched to Ceph. We've never looked back.

</comment></comment></comment></comment></comment><comment><USER28> Practical use case:

\- Spin up a bunch of droplets on DigitalOcean, because I want reliability, etc.

\- What's the best way to share drive space across these to create a single Minio storage volume, so if one DO node goes away I don't lose my stuff?

<comment><AUTHOR> We are working on distributed minio [https://github.com/minio/minio/tree/distributed](https://github.com/minio/minio/tree/distributed)

The minio available today for production use can export single disk or aggregate multiple disks on the same machine using erasure coding.

For this, if you want backup you can use github.com/minio/mc tool to mirror, more help here [https://docs.minio.io/docs/minio-client-complete- guide#mirro...](https://docs.minio.io/docs/minio-client-complete-guide#mirror)

<comment><USER17> I think this should be made clear on your site. I spent a good amount of time trying to figure out how to actually get this to be distributed, but the answer is - you don't. So it's only like S3 in interface, not in durability or availability.

</comment></comment></comment><comment><USER29> minio works awesome for dev & test deployments. It's dead simple to set up, just a single executable. Hopefully it doesn't lose that simplicity as it grows up and gains features.

<comment><USER30> It's a go binary, that's just how they work.

</comment></comment><comment><USER31> Sorry for two posts (the other one was unrelated). If anyone has experience with this I have a few questions regarding a particular use case.

How does something like this behave with really large files. Video files in 100s of gigabytes, for example. I'm asking because if one could set up a resilient online (online as in available) storage with fat pipes like this it could be used as a platform to build a centralized video hub for editing. It's another question how much sense would it make over a filesystem though.

<comment><USER32> I think these days we should by default think of storing blobs of data (like video files) in storage systems like S3 or the alternatives, and that ordinary filesystems should be thought of as a special case where you want to attach storage to an individual computer.

Edit: I'm going to elaborate, because people are calling me naïve. Full disclosure: I work at a cloud provider on a storage team.

For most people and applications, you simply don't get good value for your money by using filesystems and hard drives directly. We've tried to make things more reliable and durable with backup policies, RAID, and ZFS but the fact is all of these things come with operational and capital expenditures that compare unfavorably with common cloud storage options. There are some good technical reasons why cloud storage is better: basically technologies like RAID and ZFS are attempts to make each layer of your storage stack completely durable and available, but this approach is not competitive with the way cloud storage is typically implemented, which is to build a reliable distributed service on top of cheap hardware. Consider RAID 1, for example. This gives you N+1 redundancy at the drive level for an individual computer. This worked in the 1990s but drives are bigger and RAID failure modes suck with larger drives—it's worrying how common it is to see errors when rebuilding a degraded RAID array, and at N+1 that means that your data is lost from that computer. Essentially, with modern drive sizes (4+ TB seems pretty common these days) a RAID 1 array should always be considered N+0 instead of N+1.

Cloud storage is implemented much more intelligently. If you have distributed storage, you can simply spread files across computers in different DCs and use error correction codes to increase the redundancy. You can get more nines of durability and availability for less money this way. You end up with something like 33% overhead on disk space instead of 300% overhead, and you're also off the hook for a big chunk of your capacity planning and various other operational expenditures.

These days I would consider starting from "this file is in cloud storage, and we have a local cache" rather than "this file is in local storage, but we have a cloud backup". That's really all I'm saying.

It also won't _always_ be competitive. Sometimes cloud storage is more expensive than regular filesystems, depending on how you're using it. If you're a big company you can sometimes amortize the costs of doing it yourself better. That's all I mean by "default"—I'm going to put my data in cloud storage unless I have a compelling reason to store it some other way.

<comment><USER33> That's awfully naive, especially for tasks like video editing that are significantly impacted by disk read/write speeds. Even a NAS on a gigabit network is going to be roughly 6x slower than a standard internal SATA III spinning disk.

<comment><USER32> I said "by default", the implication being that you'd do something else if your application needs it. But it's much easier from an operational perspective if you start with a reliable system (replicated, networked storage) and cache locally for speed, then to try and make local filesystems reliable and durable.

</comment></comment></comment></comment><comment><USER34> Their CLI client is called `mc`. This is an unfortunate conflict with the venerable Midnight Commander.

</comment><comment><USER35> I love the website. I'm a lone developer who doesn't know any HTML, how would I go about getting such a nice design for my own projects? (Or how much would it cost)

<comment><USER36> Wappalyzer ([https://wappalyzer.com/](https://wappalyzer.com/)) tells me they're using Bootstrap ([http://getbootstrap.com/](http://getbootstrap.com/)) (probably customized a bit). HTML isn't very difficult (just another markup language) and if you're not inclined toward design (I am also not) there are a plethora of CSS frameworks to choose from (like Bootstrap) that will get you up and running with something not completely ugly. Personally I like Bulma ([http://bulma.io/](http://bulma.io/)) right now which showed up (I think as a Show HN) on here a while back. Currently using it for a project and I'm enjoying it.

<comment><USER35> Really my design sense isn't great, given time I can hack together something with bootstrap, but I do think I lack the designer training and probably instincts

<comment><USER36> Same here. I recommend making friends with some designers or looking around at pre-customized versions of Bootstrap. I also spent some time looking for this: [http://jgthms.com/web-design-in-4-minutes/](http://jgthms.com/web-design- in-4-minutes/) One of my favorite sites for this type of conversation.

</comment></comment></comment></comment><comment><USER37> Or run LeoFS [http://leo-project.net/leofs/](http://leo-project.net/leofs/)

</comment><comment><USER31> Unrelated question. What's the point of fullscreen button on those term session players (or whatever they are) if it doesn't stretch the playback to fullscreen? You only get a same-sized screen with black around it. It's not even centered to the screen.

<comment><USER38> I guess it is [https://asciinema.org](https://asciinema.org) but their samples have centered full screen. Maybe a CSS issue here.

I'm not sure about the point either. Maybe if you embedded a small player it would be zoomed out and fullscreen would show the native style.

<comment><USER39> all my brain sees in the domain name is "ascii enema"

</comment></comment></comment><comment><USER40> Is this just meant to emulate S3 for the sake of dev/test environments? Without clustering/HA I don't really see the point of using this over the plain old file system. Or am I missing something?

<comment><AUTHOR> Absolutely, our focus currently is on multi-server minio which is being actively developed on the "distributed" branch [https://github.com/minio/minio/tree/distributed](https://github.com/minio/minio/tree/distributed)

Our current stable version can export single disk or multiple disks (using erasure coding providing protection against disk failures) As it is very easy to get started with (single binary, thanks to Go) people find it attractive for dev/test environments.

To replicate for HA (even for the single server version), use "mc mirror -watch SOURCE TARGET" command to pair them up. If you have multiple drives (JBOD), you can eliminate RAID or ZFS and use Minio's erasure code to pool them up. Distributed version is also in dev/testing at the moment. It should be out in a month.

</comment></comment><comment><USER41> Previous discussion: [https://news.ycombinator.com/item?id=12122998](https://news.ycombinator.com/item?id=12122998)

</comment><comment><USER42> How easy is it to embed this into go tests? Right now I use goamz/s3test for that, but it has a lot of limitations.

<comment><USER10> Quite easy actually you can look at

[https://github.com/restic/restic/blob/master/run_integration...](https://github.com/restic/restic/blob/master/run_integration_tests.go)

<comment><USER42> I don't want to run it in an external process, I want to run it in a goroutine.

<comment><USER10> For that you can just do

```

package main

import minio "github.com/minio/minio/cmd"

func main() {

            go minio.Main()

            ... do your stuff ...

}

```

</comment></comment></comment></comment><comment><USER43> So, I can use midnight commander as the client? ;) (half joking, half serious)

</comment><comment><USER44> Why is it so important what language it is written in? :-)

</comment><comment><USER45> couldn't find at a glance wheter it has the same read after write issue of s3, or in general what the consistency is.

also, failure and backup modes.

<comment><USER46> Minio server provides read-after-write consistency. For fault-tolerance, * protection against failed disks, you could deploy Minio erasure code setup. ref: [https://docs.minio.io/docs/minio-erasure-code-quickstart- gui...](https://docs.minio.io/docs/minio-erasure-code-quickstart-guide)

* Minio erasure code setup also provides protection against "bit-rot".

</comment></comment><comment><USER47> Do you guys have plans with multi-tenancy feature?

<comment><USER48> Absolutely, we are working on it. Please visit our "distributed" branch [https://github.com/minio/minio/tree/distributed](https://github.com/minio/minio/tree/distributed)

</comment></comment><comment><USER49> ok tired of people bragging about "Go". It underperforms than many GC based languages that are out there.

<comment><USER21> Generally, if you comment less about Go, then you end up in less discussions about it

</comment></comment><comment><USER50> written in Go - Does this matter?

<comment><USER51> Yes and no, if you're in the market for an S3 clone, but want to be able to add features, fix bug or hack on it in some way, it nice to know which language it's being developed in.

As you can tell from the other comments, there's plenty of alternatives to pick from, and if you're going to dive in to the code yourself the language may be a deciding factors.

<comment><USER44> It is important, because you will not find any Go-developers on the market, so if you are serious about using it then think twice ;)</comment></comment></comment>


No More Ransom project has prevented ransomware profits of at least $108M - <AUTHOR> https://www.zdnet.com/article/no-more-ransom-project-has-prevented-ransomware-profits-of-at-least-108-million/ <comment><USER2> _No More Ransom started out with three founding partners -- Dutch Police [...]_

Ironical since the Netherlands is a major source of dirty hosting. Bulletproof hosts love that country.</comment>


Nerdspotting: A real live Kindle user - <AUTHOR> http://valleywag.com/355159/a-real-live-kindle-user <comment><USER2> Trevor has one. After about 2 minutes of using it, I realized it was going to be one of those things I'd see again in 10 years and say "Wow, is that a Kindle? I remember those."

<comment><USER3> Ouch.

</comment></comment><comment><USER3> It's funny how the buzz has died down on this after such a huge hype-up and grand talk of "changing the way people read." Reminds me of the Segway.

<comment><USER4> And Sony Reader. Once someone releases one of these without a CRIPPLING copy protection scheme, then we'll talk.

</comment></comment><comment><USER5> Funny thing is it _looks_ like someone using a Newton on the subway.

</comment><comment><USER6> I have one that I often read on the subway, and I get a lot of questions about it. I've never seen anyone else carrying one around.</comment>


MSEdge: Type confusion in HandleColumnBreakOnColumnSpanningElement - <AUTHOR> https://bugs.chromium.org/p/project-zero/issues/detail?id=1011 <comment> Const-me Confirmed in IE.

MS Edge however doesn't crash. It refuses to show the page, but the debugger shows what looks like a normal JavaScript exception during a JS function call. Edge catches that exception just fine.

> Microsoft Edge and 32-bit IE 11 should behave similarly

No, google, they should not. The two are almost completely different.

Live demo: [http://const.me/tmp/test.html](http://const.me/tmp/test.html)

Call stack from Edge: [http://const.me/tmp/edge- stack.txt](http://const.me/tmp/edge-stack.txt)</comment>


What Is Knot Theory? Why Is It in Mathematics? [pdf] - <AUTHOR> http://www.sci.osaka-cu.ac.jp/~kawauchi/WhatIsKnotTheory.pdf <comment><USER2> One of my favorite mathematical diagrams: [http://www- math.mit.edu/~andyp/Figures/FIGURE2.pdf](http://www- math.mit.edu/~andyp/Figures/FIGURE2.pdf), from Matveev, Fomenko, Algorithmic and computer methods in three-dimensional topology.

<comment><USER3> That is awesome!

</comment></comment><comment><USER4> I think a lot of human understanding is basically intuition about topological invariants in various "spaces". If you go around asking famous thinkers what they see when they think they all describe similar kinds of imagery, fuzzy shapes that merge and unmerge in various ways as they probe the subject.

One good book I've found on the subject is [https://en.wikipedia.org/wiki/Where_Mathematics_Comes_From](https://en.wikipedia.org/wiki/Where_Mathematics_Comes_From).

<comment><USER5> Intuition quickly becomes unreliable when you move to spaces with weird topologies, like non-Hausdorff and non-(pseudo)metrizable spaces. When your intuition stops being useful, you actually need to calculate.

<comment><USER4> I suspect a few folks that studied p-adic numbers extensively would disagree. And in general topologists and algebraists that study non-euclidean things in general.

<comment><USER5> The p-adic numbers can be equipped with a metric. The induced topology isn't Euclidean, but it's pretty tame compared to what you can see in a general topological space.

</comment></comment></comment></comment><comment><USER6> Knots can also be identified with spaces that don't seem "knotty" at first glance.

See Thurston's Knots to Narnia[1] and Not Knot[2]. PolyCut[3] is a little applet that can visualize these knotty portals.

[1] [https://www.youtube.com/watch?v=IKSrBt2kFD4](https://www.youtube.com/watch?v=IKSrBt2kFD4) [2] [https://www.youtube.com/watch?v=zd_HGjH7QZo](https://www.youtube.com/watch?v=zd_HGjH7QZo) [3] [http://facstaff.susqu.edu/brakke/polycut/polycut.htm](http://facstaff.susqu.edu/brakke/polycut/polycut.htm)

</comment><comment><USER7> hey, I was just reading about Christopher Zeeman [1] who was quite the topologist. He founded the Maths Faculty at the University of Warwick [2].

Maths is a truly astonishing discipline begging the question, are we all just made of maths?

Zeeman was very quotable: " _Technical skill is mastery of complexity while creativity is mastery of simplicity._ "

[1] Wikipedia entry - [https://en.wikipedia.org/wiki/Christopher_Zeeman](https://en.wikipedia.org/wiki/Christopher_Zeeman)

[2] in memory of Zeeman - [http://www2.warwick.ac.uk/knowledge/science/zeeman](http://www2.warwick.ac.uk/knowledge/science/zeeman)

</comment><comment><USER8> In the late 1800's knot theory was quite popular with physicists. Now there is the much bigger string theory: [https://www.sciencedaily.com/releases/2016/02/160210170411.h...](https://www.sciencedaily.com/releases/2016/02/160210170411.htm)

On a lighter note I could use some knot theory to explain why earphone or computer cables always seem to tie themselves up, despite my best efforts to keep them apart.

<comment><USER9> Here's a paper on the topic:

"Spontaneous knotting of an agitated string" [1]

From the abstract: "We performed experiments in which a string was tumbled inside a box and found that complex knots often form within seconds. We used mathematical knot theory to analyze the knots."

[1] [http://www.ncbi.nlm.nih.gov/pubmed/17911269](http://www.ncbi.nlm.nih.gov/pubmed/17911269)

</comment></comment><comment><USER10> One question if some knot theorists (or at least topologists) are reading along: I can understand why knot theorists are so interested in finding invariants.

But now let's define a "dinvariant" ("dual invariant" or "different invariant"): A dinvariant assigns to each knot also some object such that if the knots are _different_ (or topological space are _different in their class where they come from_ (say: are different simplical complexes or different CW complexes), the dinvariant will assign _different_ values. On the other hand, if the knots are equivalent, the assigned values might not be equal.

What I want to know is: Why doesn't there seem to exist a theory of dinvariants for knots (or topological spaces)?

<comment><USER11> Invariants are useful because they allow you to distinguish equivalent knots, which is otherwise really hard to do. If two knots have different invariants, then they are surely different.

Dually, you would want the following: if two knots have identical dinvariants, then they are surely the same. Since "if the knots are equivalent, the assigned values might not be equal", dinvariants cannot accomplish this function, and that makes them mostly useless.

(full disclosure: lawyer who did his undergraduate degree in math, not a topologist)

<comment><USER10> > Invariants are useful because they allow you to distinguish equivalent > knots, which is otherwise really hard to do. If two knots have different > invariants, then they are surely different.

> if two knots have identical dinvariants, then they are surely the same. > Since "if the knots are equivalent, the assigned values might not be equal", > dinvariants cannot accomplish this function, and that makes them mostly > useless.

That doesn't make them useless. Dinvariants just serve a different purpose:

\- invariants serve the purpose of distinguishing knots that are different

\- dinvariants serve the purpose of detecting that knots that look very different are actually the same

</comment></comment></comment><comment><USER12> Why is it just in 3D? 1D things making knots in 3D seems like it would have immediate analogs for m-dimensional things in n dimensions. Is that not the case? Is it not as rich an area of study or something?

<comment><USER13> You are right that interesting knot theory does exist in higher dimensions. It is appropriately called higher dimensional knot theory. It considers spheres of dimension m embedded in n-dimensional space. When m = 1, you get a 1-dimensional sphere, which is a circle. There are restrictions on which m and n yield interesting math. Intuitively, if the dimension of the sphere is too small compared to the ambient space (i.e. m is much smaller than n), then there will be so much wiggle room, that any knot can be "untied" without crossing itself (i.e. every knot is the trivial unknot). If the dimension of m is too big compared to n, then there is not enough room to twist things around, and so again nothing can get knotted.

It's been a while since I've studied this, but I believe it's the case that the only time you get nontrivial knots is when n = m + 2. The most well known case, of course, is when m = 1 and n = 3. But for every value of m >= 1, there are nontrivial knots in dimension m + 2. I believe it is indeed a rich area of research.

</comment></comment><comment><USER14> Here's a good video from Numberphile: [https://www.youtube.com/watch?v=aqyyhhnGraw](https://www.youtube.com/watch?v=aqyyhhnGraw)

</comment><comment><USER15> Reference: Kawauchi, Akio, and Tomoko Yanagimoto. "What Is Knot Theory? Why Is It In Mathematics?." In Teaching and Learning of Knot Theory in School Mathematics, pp. 1-15. Springer Japan, 2013.

[http://link.springer.com/chapter/10.1007/978-4-431-54138-7_1](http://link.springer.com/chapter/10.1007/978-4-431-54138-7_1)

</comment><comment><USER16> Topology has always seemed like the exotic yet substantive branch of mathematics... would love to see more reading like this posted.

</comment><comment><USER17> also [https://en.wikipedia.org/wiki/Racks_and_quandles](https://en.wikipedia.org/wiki/Racks_and_quandles)

</comment><comment><USER18> I find it remarkable that it took humans so long (1849) to start mathematically investigating something as fundamental as knots.

<comment><USER19> Paper folding is something just as fundamental yet it wasn't until 1893 that humans started mathematically analyzing it.</comment></comment>


Ask HN: Is flagging down YC/Thiel/Trump stories on HN a form of censorship? - <AUTHOR> In the past days, after the news of Thiel's donation to the Trump campaign, many related stories - the original announcement, the response from Pao's company, marco's shame post - have been submitted (as well as an annoying number of duplicates). Many made it to the front page quickly, then got flagged down, then got resubmitted, then flagged down, etc. A couple of times, the mod intervened to remove the flag filter, but because of algorithmic weights given to flags, the stories were removed from the front page quickly anyway.
The main reason suggested for flagging was the off-topic HN guidelines (though HN obviously does not require anybody to justify their flagging, so this is pure speculation) while many people would argue that given the relevance of these stories to YC and HN, these are very valid (and important) topics to debate here.
In a more worrisome twist, my previous Ask HN asking questions about why that was happening (https://news.ycombinator.com/item?id=12716662) also quickly got promoted to the front page but got flagged down as well.
When a topic that a majority wants to debate but a vocal minority - whose motivation is unclear, are they Trump supporters? are they rule zealots? are they tired of political subjects? - manages to shut down (as well as shut down any discussion about that flagging down) one may wonder if it doesn't amount to some form of censorship. What do you think?
And please, don't flag this one down, this isn't about politics, it's about HN! <comment><USER2> "Are flags censorship" isn't an interesting question because it isn't factual. "Censorship" is a pejorative that indicates you don't like something—so if a story you liked was flagged, it was 'censored', and if you disliked the story, then it was 'moderated', 'curated', or some such. The factual aspect, that user flags cause stories to fall in rank, is the same either way.

We reduce or turn off flags on YC-related political stories for a very specialized reason: the community's trust in HN is its most important asset and we don't want to jeopardize that. It doesn't make those stories and threads any better for HN than the usual flamewars; it means that the cost of letting those flames burn hotter than usual is smaller than taking risks with the community's trust.

At some point, though, enough is enough. For the latest barrage of political stories we should probably revert to normal moderation practice, unless significant new information appears.

<comment><AUTHOR> This is a question, how can it be factual? And how many of the stories that make HN front page are actually "factual"?

The fact that you disabled flagging for some stories shows that you do care about the perception of censorship and acted upon it.

Automatically demoting stories based on flags is just a bad form of moderation. Moderation should be done by moderators who are clearly identifiable. But I guess we can't discuss this as this post got flagged...

<comment><USER2> [flagged] doesn't mean you can't keep discussing; that's what [dead] means.

I'm happy to keep discussing, because I appreciate your concern for the integrity of the content here. However, I'm having trouble following what your last comment is saying.

</comment></comment></comment><comment><USER3> As a frequent HN user and an active member of this community, I think that these stories do not belong on HN. Even if they are technically relevant, I don't think that they improve the quality of this website and discussion.

Personally, I don't want to see any headline with the word "Trump" in it on HN. So far it's been the only place on the internet free of this nonsense.

I know that it's relevant and inflammatory, so it gets popular and upvoted, but I come here for "things that stimulate intellectual curiosity". Trump articles, on either side, only stimulate controversy and anger.

Let's talk about programming and science here guys, there's plenty of subreddits where you can discuss Trump!

<comment><AUTHOR> I disagree because this community has a tendency to ignore other "soft" problems (like gender equality or diversity in tech) that are very relevant and important. If we keep it too narrow, then there is no hope to ever solve them.

While you may not feel concerned by the misogyny and bigotry of a Trump or Thiel, it's essential to minorities that already haven't felt very welcome in this community.

<comment><USER4> Are you familiar with the concept of 'entryism'?

It is where a political organization, among other things, puts headlines in the news to try and wrestle control away from the owners of a company.

This is not imaginary, in China this is explicitly done with the Communist party and small companies when they reach a certain size or amount of influence.

The right believe the left is doing this with Silicon Valley. Here social justice warriors are something like shock troops indirectly manipulated by higher level political organizations like the Clinton foundation. We know for example that Salon and Gawker were put up to specific stories in pay for play and they received mysterious anonymous donations when they did so.

You don't have to believe that, but perhaps this will explain to you the hesitancy of the other side in taking your proposition seriously.

When a right wing tech employer hires a person (esp. a woman or minority) they sometimes wonder if they are part of a leftist ideological struggle which is orthogonal to the business's interests. An example is that we see the CEO of Yahoo, a woman, firing large numbers of men to replace them with women for no conceivable reason relating to merit.

This sort of thing appears to be uncontroversial in Silicon Valley but it is _very_ not OK elsewhere. Mayer is being sued for sexism against men with a class action lawsuit I believe.

I predict Silicon Valley bifurcates along leftist and rightist lines but there is also a chance political chicanery tears the industry apart.

All of this is to explain to you that we are very aware of this:

> community has a tendency to ignore other "soft" problems (like gender > equality or diversity in tech) that are very relevant and important.

It's that if I were to start a company tomorrow I would explicitly make it clear that SJWism was something that would get you immediately fired for the same reason having a 'StormFront' club in the company would be bad news for the manager.

</comment></comment></comment><comment><USER5> Many popular stories in medium.com get reposted many many many times. I think I counted like 20 reposts once. The problem is that medium.com adds some tracking crap to the URL that confuses the deduplicator. (I hope the mod can fix this someday.) The latest non political were "Fuck You Startup World" and "I Peeked into My Node_Modules Directory and You Won't Believe What Happened Next". (I hope that someone can post the total count of resubmissions of these post.) When it's not political, there are usually not so many complains because it's clear that it's a fault in the deduplicator. When the story is political then it looks like censorship.

Also, most political stories are flagged, this is even considered in the guidelines. There are elections in many countries per year and there are good, bad and worse candidates in each one. If tomorrow were an lection between Putin and someone else, do you think that it would on-topic? What about an election in Argentina? (Next year we have a midterm election and some people really hate the current president, and some people really hate the previous president, and some people hate both.) When the post is about a country you don't care, then you don't care and it looks like something to maintain the signal to noise ratio and filter the off-topic stories. When the post is about a country you care it looks like censorship.

</comment><comment><USER6> This is a polite reminder to everyone that you can hide stories instead of flagging them now, if you simply don't want to see them, or comments about them.

</comment><comment><USER4> The flagging is occurring because it doesn't take many people to flag a topic in order for it to disappear. So that is an issue of simple mechanics.

I do not recall any complaints about financial aid being given to Clinton from Silicon Valley. Compare that to the vitriol dedicated to one person going in the other direction. That there is bias is unmistakable.

If you want to talk censorship you should look at the fact that a right wing opinion will get you downvoted on HN.

If you don't believe it, try making an account and make some standard right of center statements. It's like playing with one hell of a golf handicap.

</comment><comment><USER7> This is worse than censorship, is brainwash. So Trump has a lot of problems, but it looks like he is not corrupt. Hillary, on the other hand, is fully with corruption. I really don't like/agree with YC priorities (I'm not an American, which is even more disturbing to see someone that laughs about killing others country president been endorsed/elected)

<comment><USER6> You merely pasted and slightly edited this comment from a previous one ([https://news.ycombinator.com/item?id=12733234](https://news.ycombinator.com/item?id=12733234))

Please stop acting like a bot. Hacker News values insightful, thoughtful discussion, not copypasta.

<comment><USER8> If it was copy-paste across multiple live stories I would agree with you but here the the original story was flagged so reposting a comment seems forgivable and the only way the poster can have the thoughtful discussion you wish to see.

<comment><USER6> If the poster wanted to have thoughtful discussion, they could have put some _thought_ into their second comment, but they didn't.

The boilerplate anti-Hillary spleen vent isn't even on topic here. It's exactly the sort of derailing tangent that gets these thread flagged to begin with.

<comment><USER8> We always talk "around" the story on HN. The topic is about censorship of views and excluding and silencing people because of their views. That means talking about the views too.

I am just a non-US outside observer so I give this to you as food for thought but your post looks like an attempt to silence views you don't agree with. You didn't downvote but went on the attack. Rather than a derailing tangent, its actually a case in point.

If it genuinely wasn't your intent then just take this as a friendly message that it is the _appearance_ so a different approach might avoid this in future.

<comment><USER6> I wasn't trying to silence views I disagree with. I want to promote discussion.

It's just a matter of maintaining the signal to noise ratio - when it comes to political discussions here, there is already too little of the former and too much of the latter, and too many people grasping for the low hanging rhetorical fruit. But copying and pasting a comment isn't discussion.</comment></comment></comment></comment></comment></comment>


Ask HN: which (web)framework should I focus on? - <AUTHOR>

I'm currently work on a few new projects that are in a early, me being the only coder (with some friends occasionally contributing), stage. These projects are all web focused (with iPhone/Android apps in the feature pipeline) and I'm having a hard time deciding on what framework I should commit to.
The current code-base is a straight forward ajax->php->mysql system. I'm trying to decide wether I should switch to a ruby-mongoDB, python-mongoDB, java/scala-mongoDB, node-mongoDB or couchApp/CouchDB or stick with php.
The data I'm using right now is well suited for a document based database so that isn't a problem (at least at the moment), I know all the languages but scala well enough for this.
What I'm wondering about is how resource demanding the non-apache servers are and basically if stability will be a problem with them? If anybody has any experiences with managing a project in those frameworks?
Also which framework you would recommend learning for the future (which one you'd like to know/hire someone who knows)? <comment><USER2> I've been a big fan of Flask over the past year, or so. It's a light weight framework for Python. <http://flask.pocoo.org/>

My "go to" tech stack, when working on fresh projects, is:

nginx, gunicorn with gevent workers, flask with jinja2, mongodb / redis, Celery with RabbitMQ, if I need a task queue

<comment><AUTHOR> Thanks a lot, seems like a solid stack. I've got to check it out. I've never really used flask for anything other than some light experimenting.</comment></comment>


Your Résumé Won't Get You Hired - <AUTHOR> http://hicks-wright.net/blog/your-resume-wont-get-you-hired/ <comment><USER2> In my experience in hiring, this is the opposite: we don't get may cover letters (if any), and never require one. There are not too many reason a candidate wants the job: more money, bad work environment at the previous/current company, or unemployed (or soon to be).

<comment><USER3> The article is right. The cover letter gives you a chance to jump out from the resume format and do some marketing for yourself. I accidentally did A/B testing on my cover letter a few years back. I wasnt getting much response with a dry cover letter, so I rewrote it with a more informal upbeat tone adding humor and even threw in snippets of song lyrics (I kid you not). Immediately the response doubled. One thing it did was engage the front line screeners and HR types. If you dont get by them you dont get anywhere. It also gave me a personality that people could remember.

<comment><USER4> I couldn't agree more.

Presenting your personality is precisely why I carefully write a friendly, intriguing and upbeat cover letter for each and every job.

You can't present a culture fit better than by presenting your personality.

I once went to Dublin for a weekend with the sole intention of eating a banana. I returned with a girl to whom I proposed whilst in Dublin and who has now been my wife for over five years.

That says more about me, outside of my skill set and experience, than my CV ever could and works wonders for making me stand out, as well as intriguing whoever may be reading my application.

<comment><USER5> "I once went to Dublin for a weekend with the sole intention of eating a banana. I returned with a girl to whom I proposed whilst in Dublin and who has now been my wife for over five years."

That is the best thing I have heard in a long time. I can't stop laughing.

</comment></comment></comment></comment><comment><USER6> Of course not, that's why I send a complimentary desk calendar.

It has color pictures of me in various worldwide locales (thank you, Photoshop) and notes important days, like my birthday and when HR should schedule an interview with me.

Then there's always the inflatable sword with my name on it. Nobody can resist an inflatable sword!

</comment><comment><USER7> Counterpoint: In my experience as an interviewer (for peer positions) there's no benefit. It's vaguely amusing to read people imagine what the position might be like and try to spin it to sound like what they want to do, or to hear them talk about changing the world or getting all excited about our industry.

It seems like if you're not a principal in a business (i.e. a YC hacker) you're a cog in a business: your primary task is to do what your boss wants you to do. I'd rather see professionalism that results in being good at your job (and going home at the end of the day) than hell bent on some quest to find life satisfaction at work.

This topic has blown through a couple times in the past few weeks and there's definitely been a lot of "YOU MUST DO THIS", "it doesn't matter", but I still don't have a feel for how as an candidate it might help me, and I find rationalizing my desire to do geek stuff as a passion for working at a specific company _very_ disingenuous. If I'm finding positions on monster.com, I'm looking because I want a different job, not because I'm passionate about improving peoples lives with $company_brand widgets. Maybe employers that are expecting these are getting their resumes from elsewhere?

</comment><comment><USER8> If you're handing your resume to an HR person, cover letters are good to differentiate yourself from everyone else. If it's a tech person, cover letters can be good if they talk about amazing stuff you've done that doesn't fit into a Resume. (I want to work for your company because your line of software is similar to many of my projects [list])

<comment><USER9> While I agree with you about cover letters and HR people, I think most amazing stuff should fit in a resume. I've definitely included relevant academic projects in my resume and have gotten great traction from them.

Generally speaking, if it's important and relevant to your career, and you can express the subject in a concise bullet-point way, I say put it in.

You still have to remember to keep the resume short, but including unconventional yet amazing stuff isn't half bad.

</comment></comment><comment><USER10> Computer people hate cover letters because they're redundant, and so they annoy people like us. But this can't be stressed enough: _HR people aren't computer people, even at software companies._

Anecdotal evidence: just last week a friend in HR at RedHat told me very matter-of-factly, "our intranet is a wiki!" She's a sweet girl, and very smart in her own field, but is nothing like your potential co-workers.

<comment><USER11> tghw works at Fog Creek, as do I. We're both software developers.

Here's the thing: your cover letter (hopefully) isn't redundant. If you want to think of it in computer terms: your résumé is data; your cover letter is the function through which to view the data. Your résumé may say that you only have experience working with VBScript. Your cover may tell us that you do that, but you hate it, so secretly, in your spare time, you pretend to be a fellow named _why, and write your own languages. Conversely, your résumé may be a shotgun approach to skills, but your cover letter sounds about as excited about coding as I personally am about doing my taxes. In neither case is the cover truly redundant; even if, in terms of raw data, your cover letter _is_ redundant, it tells me more about you than your résumé ever could hope to.

I'd challenge you that, if there's a redundancy, it's the opposite of what you're positing: the résumé is for HR to tick crap off in a spreadsheet; the cover letter is for me as a person to learn who the hell you actually are.

<comment><USER12> Wouldn't the interview traditionally fulfill those criteria?

<comment><AUTHOR> The problem is, interviews cost money. We fly every candidate in for a day of interviews and put them up in a nice Manhattan hotel. And that's the cheap part. The expensive part is taking developers' time to actually do the interview.

So while the interview most certainly looks at those sorts of things, we try to interview only when we're confident that a candidate has the potential to actually get the job.

</comment></comment></comment></comment><comment><USER13> In my experience the resume has been more of a formality than anything else. I've always been able to get jobs by being referred by a mutual friend/work associate.

<comment><USER14> That's all very well if you are being headhunted into a company with no formal HR rules. We, for example, are a reasonably cool place to work at but our paymaster is an Equal Opportunities employer. That means we have to be very very strict about the hiring process and even in situations where we know and have solicited an applicant, s/he _still_ has to be graded according to fair and consistent rules like all other applicants.

The original article was correct: an employer typically asks for 6-9 things in a job ad; some will be obvious directly from your resume (eg. "10 years experience in C"); all others should be dealt with in a cover letter. For example if the employer asks for "MacOS X experience" and you haven't got any in your resume, a cover letter that says "while I do not have much direct experience with MacOS X, I have programmed for many years on similar POSIX compliant environments such as FreeBSD and I am confident I would quickly be productive in the MacOS X environment".

</comment></comment><comment><USER15> Cover letters are really only useful when you're acquainted with the company well enough to actually want to work with them (but not well enough to just call up and say hi). It's more commonly just fluff:

> I want to work for Acme Corp because RocketSled 2.0 is exciting...

Blah, blah, blah. If you're hiring for acme corp, just accept the acme resumes. If you're hiring for somewhere neat, then why not dig into your network and make the cover letter AND the resume unnecessary?

<comment><AUTHOR> Why would you apply to a company you didn't know well enough to want to work at? You should have some reason you're applying to the company. Think about it this way: if you're already an employee of the company and someone applies who doesn't really want to work there, and HR lets them through, would you want to work with them? I wouldn't.

But even if you can't write a good "I want to work and Foobar Inc." paragraph, the cover letter gives you a chance to talk about all the stuff you do on the side, to show how much you love making software.

Personally, I would much rather work for a company that hires people who love working there than one that hires people just because they know a guy who knows a guy.

<comment><USER7> Reasons why I'm currently looking for a new job:

1) I'm looking to change locations, half way across the USA

2) I've been in my current position for nearly five years, and am ready for a change:

2a) In my chosen trade (being a unix sysadmin) you often get tremendous latitude in selecting tech, tools, and tasks, but cross pollinating with the technology stack at other companies gives you answers to questions you didn't even know you had and makes you a better employee for it.

2b) I'm a disbeliever in the "you've got to get out by the time you're forty" age discrimination stuff. I have, however, seen a lot of people, both young and old, that have spent long enough in one industry that they were not hireable for a position in mine because they'd spent so long in a single frame of mind that they fell flat on their face after several attempts to coax them through design/architecture questions.

 _Think about it this way: if you're already an employee of the company and someone applies who doesn't really want to work there, and HR lets them through, would you want to work with them? I wouldn't._

Sure, if someone actively doesn't want the position they applied for they should have told the recruiter "thanks but no thanks", but, frankly, if I find a job I'm interested in, the interview is _mutual_ : while you're determining if I can reboot routers with style and grace, I'm determining if you're a sweat shop, if my potential teammates are idiots, and if my future boss is a jerk. In my opinion it's the employer's job to sell _me_ on why I want to work in that industry, rather than the other way around.

<comment><USER16> Ever tried dropping your age from your resume? There is no requirement to put it on. If you get into the interview and the interviewer has an, "Oh, you're not what we're after" moment you know why. In this country that is grounds alone to sue so most companies will give you a decent interview, at the very least.

<comment><USER7> Actually I'm currently in the prime of my hiring age, and it's not listed at all, but it's very easy to infer, particularly if an individual has dated their college history (I honestly don't recall if I did or not).

<comment><USER17> And if you don't 'date' it, it's a flag to the person who reads your resume anyway, that you're old (which is why you would do that). It's tough.

</comment></comment></comment></comment></comment></comment><comment><USER18> bad article. talks about 7 criteria, and has lots of numbers, but doesn't tell us what they are. lacking meat.

<comment><USER19> <http://www.joelonsoftware.com/articles/SortingResumes.html>

</comment></comment><comment><USER20> Same goes for contract gigs/sales/partnership inquiries. I noticed more than 60% of professionals you approach with a short (under 8 lines including salutations), tailored email with or without a portfolio/resume will email back and ask for more information. Throw a resume alone and you are not very likely to capture the guy/gal's attention. Be different.

</comment><comment><USER21> I just focus on phone screening really heavily. Anyone with relevant experience on their resume gets called. Any of those that seem really good are asked to come in. The best person is made an offer, if they decline, the second best is made an offer. Very few "bad" candidates make it passed the phone screen, so little time is wasted.

Works great.

<comment><USER22> I agree, it's much faster. When hiring for a developer position I usually ask "what's the most recent scientific paper you have read" and ask them to discuss it. Extra credit is given if it's in a different field than computer science.

I have found this a very reliable way to weed out candidates who can talk the talk but really are just winging it.

</comment></comment><comment><USER23> It would be more relevant if everyone here commenting would indicate whether they are personally involved in the hiring process, and in what role.

Otherwise, we may as well be discussing the purchase of a new car with folks who have never and will never buy one. Their perspective must be discounted accordingly.

I am not involved in hiring. But I sure wish the companies I apply to were like Fog Creek; openly publishing their hiring philosophy and requirements check-list.

</comment><comment><USER24> I have seen my coworkers viewing applications... many were discarded outright because of stupid spelling errors or poor grammar, or no letter at all. Applicants whose work and homepage weren't available or were scarce lead to the (inductive) conclusion that the applicant was crap.

My last two job interviews lead to being hired, and my approach is generally:

(1) be very picky about which company I apply to; (2) go the company's web site to get a history, which is important for: (3) write an interesting letter saying what you like about the company, and give attachments and links to things that they can go take a look at, and (4) to actually provide some critique of the work the company has done, and provide solutions. Anyone can point out mistakes; we need someone who solves problems, like The Wolf.

Also, in reference to language skills, I like a quote by Dijkstra:

"Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer."

</comment><comment><USER25> Yes, yes it will. The job I hold now, the interview process went as such:

* Phone interview with resource manager. "So, are you interested in working at such and such doing Coldfusion and .NET?"

* Phone interview with hiring manager. "Do you know Coldfusion and Perl? What have you worked on?"

* Had an open interview session with another part of the company. Explained this to the hiring manager. I was told I would hear something the following week.

* Offer letter arrived on Monday.

It really doesn't get much smoother than that. Not once did I have to defend things on my resume, make up answers to crazy questions, or jump through silly hoops. They wanted someone who could do the job, and I could. So they hired me.

</comment><comment><USER26> As programmer, something that might help more than a cover letter or a résumé is open source code you wrote.

<comment><USER23> I want to believe that, but assume that the number of applicants is a hundred- fold more than the number of interesting positions available.

You need to survive that first sift through the pile, especially if it's done by non-techies.

</comment></comment><comment><USER27> If I'm looking through 100 emailed resumes, your cover letter (which should be in the body of the email) is an advertisement for you. It should give me a reason to bother opening your resume.

<comment><USER7> You have 100 resumes to read and you're reading the long-form bodies of emails? Why? I've always had the benefit of a HR department to do that screening but I'd think I'd read the resumes first and then go back and follow up and read the emails they sent.

<comment><USER27> HR department? At a startup?

</comment></comment></comment><comment><USER28> i do think cover letters are important, but would emphasize they should employ a less is more approach. just enough to show a "voice", a persona -- humanizing the interaction. perhaps pointing out 1 or 2 key things that might show in an understated way that you "get" something that might be of value to the employer, or highlights something about your unique value. but don't overdo it. too much about why you want to work at this company is gonna start to smell a bit.

</comment><comment><USER29> Resumes are pretty useless, half the stuff people write is made up on the spot, the other half is exaggerated beyond belief.

</comment><comment><USER30> I don't care about a resume or a cover letter. Show me an interesting github profile and I'll recommend you for hire.

</comment><comment><USER31> I always thought the point of a resume was to get you an interview. Then it's your job to get yourself hired.

</comment><comment><USER32> Hiring is Obsolete <http://www.paulgraham.com/hiring.html>

</comment><comment><USER33> I thought a cover letter was a prerequisite. Anyone can put a CV together and email it to 1000 companies, but to write a cover letter for each company just shows you actually know what you are applying for to start with.

<comment><USER34> If you email your resume to 1000 companies, you've already lost the game before it starts!

This is no way to find a good job. Plus, you already know it intuititvely, when it happens to you, you call it spam.

As a hiring manager for many years, I barely took notice of all the e-mails sent to firstname.lastname@example.com. But the ones sent personally to me, from someone who has some connection (works for a competitor, uses our products, etc...) would get first class treatment.

I know it's tought out there for new grads though, because what I describe kind of requires some experience (read [http://blog.fairsoftware.net/2009/05/13/being-a-new-cs- grad-...](http://blog.fairsoftware.net/2009/05/13/being-a-new-cs-grad-in-this- economy-sucks/) for more advice on that topic)</comment></comment>


Show HN: Implementing Microservice Discovery in 100 lines of Node.js [pdf] - <AUTHOR> https://github.com/asyncanup/vasco/raw/master/vasco-talk.pdf <comment><AUTHOR> Author here. Here's a link to the Github repo if you want to try this out in code: [https://github.com/asyncanup/vasco](https://github.com/asyncanup/vasco)

Also, [https://github.com/asyncanup/vasco- frontend](https://github.com/asyncanup/vasco-frontend) lets you hook up a real-time UI on top of the service registry to show a dashboard of all the live (and dead) services

This was the first major conference talk I gave at DeveloperWeek 2018 in SF, and am mainly looking for some healthy feedback.

<comment><AUTHOR> Motivation for writing this tool will hopefully be made clear by the following abstract:

\</comment></comment><comment>--

Service discovery has been made too complex by combining it with orchestration. There are too many beasts-of-a-tool out there that do too much, and yet can't do versioned microservice deployments. This talk will walk you through 100 lines of Node.js code with no dependencies other than redis, and implement a discovery service with the following features:

1\. Semantic versioning of services:

Services depend on specific versions of other services, so v1.2.3 & v1.3.0 can both be live, and you kill off old services that have no users.

2\. Live health checks with inversion of responsibility:

Don't ping a service under high load with status & health checks, instead let it ping back when it can. If it can't ping back because it's near-capacity, then don't route any more traffic to it!

3\. Mocking services during testing & development: Should not have to bring up the entire microservices stack to develop one of them.

4\. Randomized scheduling: So you don't starve any one service, instead pick one at random from the ones available & healthy.

5\. No highly-available service discovery service: Solving the chicken & egg requirement of a highly available service discovery service, in order to enable other highly available services. Only the service discovery database (redis) needs to be distributed.

A surprising number of tools out there simply fail to provide these set of features together, and yet pack in too many other things they want to do. This talk does the above in easy-to-understand 100 lines of Node.js code that you can use & modify with confidence!

</comment><comment><USER2> Linking to the project might make for a better submission, [https://github.com/asyncanup/vasco](https://github.com/asyncanup/vasco), because the RAW PDF just downloads, and it's slides rather than something that people can try out.

<comment><AUTHOR> Thanks! Added some more context in a comment. Did you have any feedback for the slides and/or code?

<comment><USER2> Though I find microservices intellectually interesting, the project is not something I am likely to use. I am more of a "general reader." As a general reader, I find slides without the accompanying presentation rarely hold my attention. I would rather have a good README.MD.</comment></comment></comment>