Ask HN: Are you using Grails? What do you think about it? - <AUTHOR>

One of my clients asked me to realize a project based on Grails. After two months of work i must say i found it very interesting and productive.<p>So i would like to know how many people build projects using Grails (and if it is possible to know, what these projects are) and your opinions about it. <comment><USER2> I have been using it for roughly a year now, and I have to say that I am NOT a fan. Admittedly, this opinion is probably colored by my previous history as a user of ruby on rails.

My chief complaints are:

The framework start/stop time is ungodly slow, especially when adding plugins. Many plugins are re-configured at every start, including the prominent Grails Spring Security plugin. Depending on which machine I am using, a shiny new grails app can take nearly 90 seconds to start. This causes me to lose focus, and quickly.

Speaking of plugins, there aren't many to choose from. The key plugins are there, but they are nearly all developed by the core grails team. Most of the third party plugins that I come across haven't been updated for years and were written for versions of grails long past. This means that there is usually only one option available for a certain plugin, so if you don't like the way that Grails Spring Security works or feel that it's too clunky, you're SOL. Best write your own security code.

The resources plugin that is recommended has a very steep learning curve and makes it difficult to include javascript/css frameworks if you don't know exactly what you're doing. Best just not use it and manage your own javascript and css.

Deployment is "easy", meaning that you just tell grails to wad your application into .war format. This also means, however, that re-deploying an application means that you replace 100% of the files every single time. This makes it impossible to push out changes without interrupting user access to your application.

The database management just feels awful to me, although I'm convinced that I must not be doing it right. There is a database migration plugin, but it feels very clunky and I tend not to use it. Rails has very nice database management and it is easy to rollback changes or perform modifications on tables. Doing the same with the grails database migration plugin requires several steps.

The Good Parts:

Like I mentioned before, deployment is super easy. Make a .war file, put it in Tomcat, done. Also, being able to use software like Tomcat is a bonus, because it means a much lower barrier of entry for those who are not as well-versed in configuring web servers.

If you've never installed ruby on rails or groovy and grails before, groovy and grails is by far the easier to configure. Grails is also much friendlier to the windows crowd. However, I feel that these are hardly points to make, as you only really install your framework once (sure there is updating, but ruby/rails has better version management available anyway).

If you've come from a java background, groovy will come very easily.

At any rate, sorry for the novel, but I hope this helps.

</comment><comment><USER3> > Grails. After two months of work i must say i found it very interesting and > productive

Two months isn't long enough to gauge productivity - there could be a lot of maintenance issues later.

I'm interested to know how many of the Groovy Language features are used in a typical Grails project, or in any Grails project for that matter. I mean, does any Grails project out there, say, transform the abstract syntax tree with Groovy's AST transforms?

<comment><AUTHOR> I think two months are sufficent to understand productivity of a language/platform from the "code development" point of view, at least if you are an experienced developer and have a good knowledge of other languages/frameworks/platforms.

I agree that the long-term analisys is always the best and that could be a lot of issue about maintenance and sure, two months aren't sufficent to master specific language features, but you can get a quick overview and feel if it is productive or not.

I don't use too much specific features but Groovy offers a lot of interesting things i may adopt in the future.

Maybe other experienced developers can answer your question better than me.

<comment><USER4> I disagree. Rails also has huge productivity gains in the beginning. Unfortunately with every major release they keep radically changing how things are done. Leading you to either stagnate with an older version or forcing you to do a semi painful upgrade that gets worse the longer you wait. You're not going to realize this in two months. Fortunately Grails doesn't suffer this problem but my point stands: 2 months isn't enough. 1-2 years is more like it.

</comment></comment></comment><comment><USER5> I'm working on [https://github.com/transmart/transmartApp](https://github.com/transmart/transmartApp) (it's actually a lot bigger than would seem from the repo, it's used by almost all big pharma companies). I've started only 2 months ago, so like you I'm looking for opinions about it. So far I'm mostly annoyed by it doing too much magic and being slow to start and compile

<comment><AUTHOR> I agree it does a lot of magic but this shouldn't be a bad thing. I learned Spring framework and hibernate on different projects and it helped a lot in understanding (and appreciating ;) ) all the magic. I found it slow in start too, but found it quite fast on compile time

</comment></comment><comment><USER6> We've been using it for 3+ years and we love it. We are a small team, so it enable us to build stuff fast, plus it has many good features, 2.3 has amazing REST support.

</comment><comment><USER7> Where I currently work, Grails is the default platform. This means that we have a landscape of 10-15 Grails apps. It is very nice.</comment>


Thomas Ptacek - America has doomed the industry. Please send help. - <AUTHOR> http://vimeo.com/9260794

<comment><USER2> I know some folks here don't like watching videos, so here are the points I'd take away (and I think they echo pretty strongly what Thomas has been saying here):

* Don't do your own cryptography, use SSL and GPG. If your problem isn't able to be expressed using either of these, you should probably refactor it.

* Don't read Applied Cryptography (but do read Practical Cryptography), it's responsible for a great deal of the shittiness of our industry.

* The Art of Software Security Assessment should be required reading by everyone in Canada (the talk was given in Canada)

* If you're into CS, you should seriously consider getting into the security industry (it pays well, and lets you work on much cooler stuff than you might otherwise get to work on)

* If you want to get into the security industry, you should find an open source project (or any project) and try to find vulnerabilities in it. Report them in a non-doushy way and you'll be off to a good start. Also, pick something to become specialized in (dsp, etc.) and you'll have a greater chance of getting the industry's attention.

* Writing secure software is ridiculously hard. Even software designed to be secure will have bugs, and bugs can more often than not lead to vulnerabilities. This bodes well for people in the security industry.

I recommend watching the video, it's nice hearing Thomas talk about this stuff, and while his advice shouldn't really need to be vouched for, I agree with what he says.

</comment><comment><AUTHOR> Although the vimeo date says 10 months ago, that's just when the video was uploaded. It was only released a couple of days ago.

It's a talk by tptacek on software security given at the CUSEC conference last January.</comment>


Simulating Service Discovery with Docker and Etcd - <AUTHOR> http://talwai.github.io/#/blog/post/discovery

<comment><USER2> I like consul over etcd, as it implements health checks for your services, and provides DNS services.

In combination with consul-template you can pretty easily create automated service discovery which will update a configuration, such as HAProxy or nginx LB config, and reload the service.

<comment><USER3> Indeed, I recommend giving Consul a try if your looking into deploying a microservices architecture. I even go as far as saying that Consul provides some of the stuff an ESB is suppose to provide in a traditional SOA environment, most prominently: location transparency.

</comment></comment><comment><USER4> I'm using the Deis publisher from the Deis project to accomplish service discovery.

It's a neat go daemon that runs as a global unit(every node) listening to the docker event bus and updating etcd for you. From there it's easy to use confd to manage updating nginx or haproxy (which is what the deis router does).

</comment><comment><USER5> You can use skydns[1] to implement service discovery based on DNS. It has etcd as a backend and creating/updating a DNS entry is done by creating an entry in etcd with a TTL. Then, you can use DNS the same way you are already doing without service discovery.

[1] [https://github.com/skynetservices/skydns](https://github.com/skynetservices/skydns)

</comment><comment><USER6> Kubernetes seems like it is the future way to do this. It auto spins up, wires and load balances docker containers implementing named services within a cluster of vms.

[https://github.com/GoogleCloudPlatform/kubernetes/blob/maste...](https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/services.md)

</comment><comment><USER7> Given how much effort you have to go through with etcd and discovery, why not use an MQ like RabbitMQ, that will take care of replication, etc as well?

<comment><USER8> First of all, because one of their explicit choices was to use HTTP. Using a persistent message bus like RabbitMQ has great advantages, but in terms of failure modes acts very differently to HTTP. For example, an upstream service failure would result in a timeout on getting a response (or ideally, a different instance of that service would respond to your message instead), rather than a more traditional TCP socket error or close.

Again, not necessarily worse, just different and unfamiliar.

The other reason is that this really only pushes the service discovery down a layer - how do you know where RabbitMQ is running? Of course, the same could be said for etcd - how do you know where etcd is running in order to query for more services.

<comment><USER7> Thanks for the explanation. I was looking for any dealbreakers with the MQ approach, but the concern you mentioned is valid. About pushing discovery down a layer, sure, but you'd do it the same way you'd query etcd, as you say.</comment></comment></comment>


One Hundred Naked Citizens: One Hundred Leaked Body Scans - <AUTHOR> http://gizmodo.com/5690749/these-are-the-first-100-leaked-body-scans

<comment><USER2> Worth pointing out for those who don't read the article: These scans came from a far less powerful scanner that was used in a court house. The images that come from airport scanners are much more "revealing" than these.

Though given that just like the airport scanners, these weren't supposed to be storing images makes me think a leak of TSA scanner images is inevitable.

<comment><USER3> Here is what the backscatter scans look like:

[http://www.cbsnews.com/8301-504763_162-20022861-10391704.htm...](http://www.cbsnews.com/8301-504763_162-20022861-10391704.html)

</comment></comment><comment><USER4> Why such an highly annoying video with random, needless panning? Just write an article and display the pictures.

</comment><comment><USER5> Hardly "naked". I think the uproar about this isn't what can be seen, but the future of this. If we can see blobs of people as public images on the internet, if it ever does get to be "naked" then it could be bad.

At this point, I really wouldn't give a rip if someone published an image of my "naked" blob.

<comment><USER6> These are from a far less revealing scanner than the new backscatter machines at airports. The larger issue is that the government and the vendors said falsely that there would be no way to save the images for later use.

<comment><USER7> It may be that this scanner setup has a way to save the images, because they're so blobby and indistinct, but which was removed from the newer model because of the higher fidelity images.

The older tech... who cares if they save images, because you can't see anything. It probably wouldn't occur to me that it would be a privacy violation for someone to see pictures that make everyone look like a Star Wars Stormtrooper.

</comment></comment></comment><comment><USER8> I wonder how many of those people are going to end up with cancer because of these scans?

<comment><USER9> Orders of magnitude less than will end up with cancer because of the altitude jets fly at.

<comment><USER10> Backscatter radiation delivers a more serious payload on the skin.

Also you are assuming the machines are working properly and not overdosing people.

<comment><USER11> Would it be possible to crank up the radiation (intensity or hardness) to peer deeper into the body?</comment></comment></comment></comment>


Perkeep: personal storage system for life - <AUTHOR> https://perkeep.org/doc/overview <comment><USER2> [https://perkeep.org/](https://perkeep.org/) is the new(ish) name for Camlistore, created by Brad Fitzpatrick and with a lot of active developers.

From the home page (rather than the linked overview):

> Perkeep (née Camlistore) is a set of open source formats, protocols, and > software for modeling, storing, searching, sharing and synchronizing data in > the post-PC era. Data may be files or objects, tweets or 5TB videos, and you > can access it via a phone, browser or FUSE filesystem.

Things Perkeep believes:

\+ Your data is entirely under your control

\+ Open Source

\+ Paranoid about privacy, everything private by default

\+ No SPOF: don't rely on any single party (including yourself)

\+ Your data should be alive in 80 years, especially if you are

<comment><USER3> > Your data should be alive in 80 years, especially if you are

How do they deal with obsolescence?

Software that used to exist 50 years ago doesn't run today, and most of those formats (if they aren't text formats) are either obsolete or completely unsupported. Emulators exist, but nobody actually uses it. Part of this is because software becomes obsolete over time, and part of _that_ is because hardware becomes obsolete.

How are they going to make software today that will run on new computers in 80 years, or how will they make software and data formats backwards compatible for 80 years?

<comment><USER4> I sympathize with your skepticism but I think 1968 is so quantitatively and qualitatively different that it's not a very helpful comparison.

In 1968 nobody had personal computers, they were not a thing. ASCII is still really new, "files" aren't really a thing yet, the Multics system is under development and nobody has yet made the pun "Unix" let alone named an operating system.

What formats are you thinking of that weren't text formats but are now "obsolete or completely unsupported" ? The Joint Technical Committee (home of JPEG, MPEG, and so on) isn't even an _idea_ yet, many of the people who'll form this committee are undergraduates or still in school. Machines aren't storing pictures, they're barely storing meaningful text, it's mostly numbers, big calculations.

If we ask about 40 years ago instead, things are hugely different. By this point Unix exists, ADVENT exists, ASCII has "won". There is no Internet, no X Window System yet, and there still isn't a Joint Technical Committee but already the documents, software and systems are familiar because we're still using them. At home there is Pong, and in pinball arcades the new Space Invaders, both are nicely emulated today.

<comment><USER5> > I sympathize with your skepticism but I think 1968 is so quantitatively and > qualitatively different that it's not a very helpful comparison.

It's sort of like automobiles in 1968 advertising how they are made with care and detail so they'll last, and made to be easy to work on so you can expect them to actually have people (or yourself) that know how to fix them decades later. People could easily come out and say most of what made a car in 1918 was very different to then, all the way down to the tires themselves. Industries that have had multiple decades of general use mature quite a bit, and people don't like to throw away stuff that works (or that they're fond of). We'll still have computers capable of running a von neumann architecture in 50 years, whether through hardware or software, and that's assuming we can't just port/compile to newer systems if they aren't as extreme of departures.

I still occasionally play computer games written in the 1980's, generally through dosbox or something similar. I think the most likely reason we have to lose access to running this software is if we lose access to running all software, in which case nobody will really care (not that I think that's remotely likely, just that it's the most likely scenario where that holds).

</comment></comment></comment></comment><comment><USER6> I've recently started using Fossil[0] to archive all my personal data. It works rather brilliantly. Technically you can use any VCS but Fossil is unique in that the entire repo is a single SQLite db, so it's very easy to backup and restore. Not to mention the web UI to have a quick glance before checking out any files. Even better I can sync flawlessly between multiple hard drives and computers. I've a few separate branches for Docs/Photos etc. I checkout the related branch and just add more files whenever needed. After files are added to the repo, I just remove the working copy. There are some limitations though like files larger than 2GB aren't supported.

[0] - [https://www.fossil-scm.org/](https://www.fossil-scm.org/)

<comment> star-techate Fossil's also very easy to put online, needing at a minimum a two-line bash file to function as a CGI script.

Maybe more relevant to private data, the builtin wiki makes a good personal knowledge database.

The next version of fossil will have a forum (seen already at [https://fossil- scm.org/forum/forum](https://fossil-scm.org/forum/forum) ). With the time sorting for threads, that might be good for temporal data that you wouldn't want to put in a wiki.

</comment></comment><comment><AUTHOR> TDLR: This is a content addressed data store similar to IPFS (although this project is older). You can configure one of several backends such as local file storage, S3, SSH, etc. It includes an organization system based on tags, and other meta data. You can construct a fuse filesystem representation based on a query. A web UI exists allowing exploration of existing files, uploading, etc.

</comment><comment><USER7> I'm looking for something like perkeep, but with the ability to add (scientific) metadata. Oftentimes when doing science for the university your research fund is attached with clauses that obligate you to store all data of your research for a timespan of 10-20 years and to do (who would have guessed) scientific research - which entails saving information with every data point: When was the data obtained, how was it obtained, who generated it, for which experiment, what's the copyright on this, is it anonymized, pseudonymised, is it connected to any other research, what's the doi/arxiv/ark-id connected to it,....

An archive where you drag and drop your files that can upload everything to a s3 storage (no not amazon s3) and tag metdata to it would be a dream. Right now there is no good solution for this and in the beginning I took a deep look at camlistore and hoped for a solution in it. (I looked at upspin, ipfs and other solutions as well). If someone as a solution for this or if perkeep could be expaned (or has the option somehow hidden somewhere) I would be very happy if somebody could point me in the right direction.

</comment><comment><USER8> It seems weird that deletion is prohibited. As we grow as people, sometimes we no longer want to associate something with ourselves. A photo we don't want to remember, for instance. This feels like an unnecessary restriction.

<comment><USER9> > no delete support

Yeah that's a show stopper. There's just way too many scenarios where's you _need_ to delete something.

<comment><USER10> For instance if forced by law.

<comment><USER11> Delete is not (or only very poorly) supported in git as well. For almost all use cases this is correct way.

<comment><USER12> Perkeep is for single users so the use case to compare with is a private git repo.

If you're not publishing anything, reverting the last change is easy and a rebase isn't that hard.

</comment></comment></comment></comment></comment><comment><USER12> The bottom of page says last updated in 2013, but the name has been changed and the latest version does seem to be 0.10. This was previously called camlistore.

Is it still the case that you can't delete anything? Although rarely needed, that seems like a showstopper these days. Irreversible actions are bad UI.

<comment><USER8> Not to mention a violation of GDPR.

<comment><USER13> Software is not a violation of the GDPR. GDPR means you can not use it for some things, but given the focus on a _personal_ storage system it's less relevant.

<comment><USER8> Yes software itself is safe. But eventually you'll want this stored online. At that point, the company hosting your data will be obligated to comply, but by design, cannot. In that sense, it's worse than simply incompliant. It's virally incompliant. Any software that uses it will also be affected.

<comment><USER14> The GDPR is effectively irrelevant here unless your goal is to host Perkeep as a service. Yes, if you upload your own personal database to Dropbox then Dropbox does still have GDPR obligations to you but those obligations do not extend to managing your files for you also, as an analogy if you were to upload a zip file to Dropbox it would not be reasonable to expect them to remove a file from within that zip file at your request.

</comment></comment></comment></comment></comment><comment><USER15> Is there a user guide anywhere?

I'm having trouble finding one. The "Getting Started" page just says "run the daemon" and not much more. There are pages on how to set the many configuration options.

What if I just want to use Perkeep, or find out what the experience of using it is like? Is there a friendly walkthrough or tutorial? Or an introduction to the concepts one needs to understand as a user, not as a developer?

</comment><comment><USER16> Looks like a pretty interesting project, and it's been consistently worked on for seven years, which is definitely something:

[https://github.com/perkeep/perkeep/graphs/code- frequency](https://github.com/perkeep/perkeep/graphs/code-frequency)

Anyone have a testimonial from the perspective of a user or hacker on it?

</comment><comment><USER17> It's really worth thinking about the idea of not having filenames by default. They give a good example: if you take photos you don't want to name them, instead you want automatically collected metadata (like creation time) and some UI for easily searching by that metadata.

So it's basically a correct idea, but I want to know what is needed to make it work.

I remember the Palm Pilot tried to do this by pretending not to have files, and having "databases" instead. The result was that the palm-pilot database just became an obscure, inconvenient file format.

On the other hand, modern big giant internet storage service do a pretty good job of "freeing" you from filenames, letting you get photos, docs stuff.

On the other, other, hand, there might be something about the _personal_ aspect of perkeep that makes it more like the palm-pilot.

<comment><USER18> The reason for a filename is identity. This might be automatically assigned based on metadata (e.g. creator+date+index), but it's definitely necessary.

<comment><USER17> Right, so to be clear by "filename" I did mean something like "filename the user actually cares about".

Almost any database (including a filesystem) has a primary key, which can be thought of as a file-name. Filesystems are unusual in that ordinary users sometimes want to explicitly deal with the records (files) and their keys (names).

</comment></comment></comment><comment><USER19> There was some discussion earlier about the former Camlistore, and how it differs from the Upspin project in a couple threads here ([https://news.ycombinator.com/item?id=13700492](https://news.ycombinator.com/item?id=13700492)) but maybe the authors can chime in here and restate what the different usecases would be between Upspin and Perkeep -- it seems like they are targeting the same audience: personal users wanting to back up data. The biggest point of emphasis is that these are _not_ to be used for enterprises, and using them as such would be an anti-pattern, but curious as how the breakdown goes after that.

<comment><USER7> This was answered by bradfitz himself [https://news.ycombinator.com/item?id=13700968](https://news.ycombinator.com/item?id=13700968)

</comment></comment><comment><USER20> Where does it store the data?

<comment><USER12> Seems to be local disk or Amazon S3.

[https://perkeep.org/doc/server-config](https://perkeep.org/doc/server-config)

</comment></comment><comment><USER21> The thing about files is that they are never going away and they are simple like a rock. If you want to avoid any type of lock-in ever, just store things in files.

<comment><USER22> I think you're making a category error: files are an _interface_ , they don't actually store anything (the underlying filesystem may or may not do that). Obvious counterexamples to "just store things in files" are /proc on Linux, pifs ( [https://github.com/philipl/pifs](https://github.com/philipl/pifs) ) and Plan9.

Note that Perkeep provides a FUSE interface, i.e. you _can_ use files.

Being slightly less facetious, it depends on the filesystem. Files can easily disappear if, say, a disk crashes or there's a network outage.

Those problems can be avoided if we make backups and distribute copies across several disks and machines, but that gives us a synchronisation problem:

\- If something gets renamed during an outage, how do we know that it was a rename rather than a brand new file?

\- If we find that two nodes have different content in files with the same name/path, which one is "correct"?

\- If we don't have much local storage (say, a netbook or a 'phone or a raspberrypi), how can we take part in the storage?

\- How can we cache things to avoid remotely accessing the same data over and over?

\- How can we keep data self-contained, i.e. without needing external metadata/keys/parity info/etc.?

These are hard problems, and Perkeep is a very promising solution to some of them.

</comment></comment><comment><USER23> Past discussion[0].

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

</comment><comment><USER24> "You are in control of your Perkeep server(s), whether you run your own copy or use a hosted version."

Can the perkeep server be an SSH/SFTP login ? Or is there a server side component that would need to be running ?

I've thought in the past about the intersection between (camlistore) and rsync.net but it's not obvious what that looks like ...

</comment><comment><USER25> I've been looking for a system that lets me track replication of online/offline data, as well as a search tool + format obsolescence report on files. I once started writing such a thing using Python + SQLite. It's kind of trickier than it seems.

</comment><comment><USER26> This is in the same spirit as some OSS work I did a few years back, to enable similar scenarios

[https://github.com/briangu/cloudcmd](https://github.com/briangu/cloudcmd)

</comment><comment><USER27> This looks like an article from 2013. "Last updated 2013-06-12" is in the footer

<comment><USER28> The date on that page is old, but the source code was last updated only a couple days ago, and the last release was in May of this year.

</comment></comment><comment><USER20> Hmmm how is this different from Box/Dropbox etc?

<comment><USER29> I don't think you can upload your own Dropbox server, or run dropbox locally.

Furthermore, dropbox uses folder structures, and can only sync folder-by- folder, and to have one folder synced requires EVERYTHING in that folder being synced.

There are many other differences that are listed on the article.</comment></comment>


SpaceX booster on the ground – first time I appreciated the scale - <AUTHOR> http://i.imgur.com/e0iaGV8.gifv <comment><USER2> So many wheels on that truck. How does that truck make turns? Does it make turns?

<comment><USER3> The wheels generally have a hydraulic steering system so they can turn each wheel individually.

Edit: Like this [http://www.truckinginfo.com/fc_images/blogs/l-img-1583.jpg](http://www.truckinginfo.com/fc_images/blogs/l-img-1583.jpg)</comment></comment>


How to get data scientist? - <AUTHOR> After five years of enjoying an programming/software dev. education at my school(finished school some days ago) I now face a full year of civil service. So i decided that I want to dive into the world of data science. Are there any good courses / tutorials online that I shouldn't miss out on? And what do you folks think I should do to get a data scientist one day (or at least get in the right direction ^^)? <comment><USER2> From my bookmarks, I haven't taken any of those courses (yet) [https://heartbeat.fritz.ai/new-to-data-science-here-are-a- fe...](https://heartbeat.fritz.ai/new-to-data-science-here-are-a-few-places- to-start-119e4a752f81)

<comment><AUTHOR> looks very interesting, thanks ;)

</comment></comment><comment><USER3> I suggest beginning with "Computer Systems That Learn" by Weiss and Kulikowski.

<comment><AUTHOR> always open for a good book!</comment></comment>


Ask HN: Should Apple also be a Search engine, ISP and Mobile carrier ? - <AUTHOR> I, personally, would subscribe to all services, no matter the prices, given Apple's impeccable privacy and security record.
Try creating a device, that is uncrackable with physical access, like iPhone with iOS 12. They did it.
At $1T valuation, it should not create much financial stress for Apple. What do you think ? <comment><USER2> No. They should work to get Siri better and keep vertically integrating until they build all the chips for all their hardware. Imagine an A12 derived laptop with Apple T2 chips powering the storage and security etc. if, by some miracle, the telephone polls become free game and somehow Apple could put cell units on all of them and blanket the nation (if this is even feasible) then maybe. But mostly, no.

<comment><AUTHOR> > until they build all the chips for all their hardware

I may be wrong, but I think they are on it as a first priority. I would've been :) I expect it to happen in, like, 3-4 years.

</comment></comment><comment><USER3> Definitely. No matter how good or bad the result will be, competition is always good, especially in the toxic mobile carrier industry.</comment>


"Hello World" for authentication in a Backbone.js app - <AUTHOR> http://blog.sfdevlabs.com/post/52229252869/hello-world-for-authentication-in-a-backbone-js-app

<comment><USER2> @jenkinsj Great work. This is clean, readable and well commented. Many of the patterns are great for a `hello world` backbone/node app.

I noticed you are using the underscore.js templating engine, and that you are embedding the templates in script tags within a 'shadow' dom poly-fill.

you might want to use <template> tags instead, and use display:none to poly- fill. I found that it works pretty well, and it's more semantically correct. Browsers should expect template tags in the future to be templates. I have tested this in number of browsers and it seems pretty well supported even in IE.

<template> tags reference [http://www.html5rocks.com/en/tutorials/webcomponents/templat...](http://www.html5rocks.com/en/tutorials/webcomponents/template/)</comment>


How to work with Scalable Vector Graphics (SVG) in HTML 5 - <AUTHOR> http://mrbool.com/how-to-work-with-scalable-vector-graphics-svg-in-html-5/25183

<comment><USER2> Has SVG not been around a lot longer than HTML5? The article says "This is a HTML5 tag to draw a vector graphics"

And pretty sophisticated JS libraries have been built to make use of this technology in web applications. The best IMHO is d3.js: <http://d3js.org/>

<comment><USER3> Yes. We had SVG back in '02-'03 (the company I was at built a product on it).

</comment></comment><comment><USER4> SVG is SLOW in Firefox. I mean _really_ slow. I did some complex charts for genomic data, and while chrome was rendering it really smooth, in FF it was like slideshow.

According to link below [1], NYT ported d3 to be 90% canvas because of speed issues in FF.

[1] [http://www.quora.com/D3-JavaScript-library/Why-is-D3-so- slow...](http://www.quora.com/D3-JavaScript-library/Why-is-D3-so-slow-running- on-Firefox)

<comment><USER5> I believe this site [1] is a great example of what you are saying (it was featured on hn earlier this week [2]). Firefox 14.1 performs really badly in comparison to Chromium 20.0 in this case.

[1]: <http://www.jasondavies.com/primos/>

[2]: <http://news.ycombinator.com/item?id=4255738>

</comment></comment><comment><USER6> Interesting that they decided to use JPEGs instead of SVG for the illustrations.

</comment><comment><USER7> Although in a lot of ways Canvas is easier to work with, SVG has some advantages for user interaction because it takes care of interaction logic for you. For instance, you can register a callback for clicking or hovering on complex shapes, whereas with Canvas you'd have to calculate the hit detection geometry yourself.

</comment><comment> jarek-foksa "SVG Primer for Today's Browsers" has more detailed introduction: <http://www.w3.org/Graphics/SVG/IG/resources/svgprimer.html>, you can skip SMIL section as it's probably going to be deprecated.

</comment><comment><USER8> I read the article with some interest remembering what it used to take to work with SVG (the Adobe plug in---free, but still). Just for grins I copied one of the examples to my editor, EditPlus which uses whatever version of IE that you have installed on your system. To my very pleasant surprise, the example worked. This should open up a very large box of goodies of interest to me. I spend a lot of time working with chess and HTML. If this could simplify my code in any significant fashion then I'm all for. It will be interesting to explore.

</comment><comment><USER9> The last time I played with SVG (on January) it had a couple of ugly bugs like crashing Google Chrome with many nodesin a graph and leaving trails when moving an object (a Hello Kitty for my daughter!)

</comment><comment><USER10> For those in the know: can you tell me/us how this is superior to working with just Raphael.js?

<comment><USER11> Personally, I don't think it is. For most use cases, Raphael is a better choice for its browser compatibility (namely IE up to 8) and approachable syntax.

Having said that, there are times when pure SVG is preferred, such as when JavaScript is not available (although SVG files can contain JS) or when you don't want the processing overhead of a library. For example, SVG is often used to render the UI graphics for navigation menus in TVs which until recently were very low powered.

Of course, it's also beneficial (IMO) to have a grasp of how the underlying language works even if you use it through a layer of abstraction. Overall, though, I'd use Raphael unless you have a reason not to.

EDIT: I forgot to add that knowledge of SVG is useful for editing images in a text editor, such as when you want fine-grained control or you want to manually remove some of the cruft that graphics software tends to add to files.

<comment><USER12> you can get cross-platform compatability with svg using google's svgweb - <http://code.google.com/p/svgweb/>

</comment></comment></comment><comment><USER13> Wow, these are some great examples to work with. Thanks for this :)</comment>


Out of office email handling - <AUTHOR> Hey guys - I guess many of you notice the manual efforts involved in setting up OOF replies, and in responding to them once you get back, especially if you are a frequent traveler. You have to remember to set the OOF every time you are gonna be away from email. Once you get back, depending on how long you were away it's a royal pain to go through all the emails and respond to them. I checked to see if there are any tools/bots out there to help me out with these issues but haven't found any so far. Is there any such tool/bot that can do these two things:
1. Scan your latest emails, find out when you are traveling or gonna be on vacation and set an OOF automatically. The OOF message should be more humane than just a template and that message should change depending on your travel context. Perhaps even respond to emails with some smartness, depending on the sender.
2. When you are away, this bot automatically collects and prioritises incoming emails for you to process them once you get back. Sort of like an improved Gmail filter that can add another tab "OOF" and sort the emails in that tab according to importance, than by the date they arrived.
Much appreciate all your help. <comment><USER2> This is the sort of thing that might better be outsourced to a competent human and why secretaries are valuable in an organization.</comment>


YCombinator German clone funding YCombinator Startups clones - <AUTHOR> http://zkombinator.com/

<comment><USER2> American propaganda condemning the rocket internet for doing copycat companies, completely ignoring that 99% of tech companies in US are just copycats... even the most successful.

I guess the only reason why "Arrington copycats" hate them is that they create and execute successful copycat companies.

</comment><comment><USER3> They are using a Google form for the application form, this is so not Ycombinator.

YCombinators is built by hackers (PaulG) not some random business guys like this clone.

</comment><comment> jack-r-abbit I'm pretty sure this is a joke that came about after a recently posted HN link to a NCombinator site was slammed for ripping off YCombinator.

</comment><comment><USER4> Everything about this is just trying too hard.

</comment><comment><USER5> There is no way in hell this isn't satire.

</comment><comment><USER6> This guys takes cloning "seriously"</comment>


Intel CPU History - <AUTHOR> http://www.tomshardware.com/picturestory/710-history-of-intel-cpus.html <comment><USER2> Intel's CPUs are such and impressive and obvious showcase of the evolution of a product. The early chips like the 4004 are downright primitive, and each product leapfroggged and obsoleted the one before it, right up until the Pentium IV.

Each chip brought a huge new feature or performance gain. It's also amazing how fast they went from a hobbyist chip to a full-feature chip that could do anything the rest of the market could.

</comment><comment><USER3> I always thought that 80386DX was the first Intel's CPU with integrated FPU, yet the text says it's 80486...

<comment><USER4> The 80386DX never had a FPU integrated -- it required a second 387 coprocessor chip. You might be thinking of the 80486DX [1] also known as "RapidCAD" that included a dummy 387 FPU to place in that socket.

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

<comment><USER3> You're absolutely right, thanks for the correction!

</comment></comment></comment><comment><USER5> I actually hoped to see details about the instruction set changes and register changes between related CPUs. Oh well.

<comment><USER6> Reading the title, I thought it might be on some fancy debugging microcode!

</comment></comment><comment><USER7> Where's Itanium?

<comment><USER8> Or the iAPX 432.

</comment></comment><comment><USER9> Curiously, they left out the 8088, the processor chosen by IBM to be used in the IBM PC. It was designed in Israel having the 16-bit instruction architecture of the 8086, but with an 8-bit data bus, thus being able to use the cheaper, established chips used by the 8080. This effectively gave IBM an 16-bit machine to compete against Apple II 8-bit 6502 but at prices more consistent with an 8-bit processor.

<comment><USER10> It is mentioned under the 8086.

 _Intel also produced the 8088 around the same time. This processor was based on the 8086, but with half of the data bus disabled. This loss in bandwidth hurt performance, but as it still had access to up to 1MB of RAM and ran at higher frequencies, it was faster than Intel 's previous eight-bit processors._</comment></comment>


Building applications for Firefox OS using AngularJS - <AUTHOR> https://hacks.mozilla.org/2014/07/building-applications-for-firefox-os-using-angularjs/

<comment><USER2> "This is not a situation that's inherently bad because in essence Firefox OS is the web; and thus gives you complete freedom in the toolchain you use." \- except that is not true and we are limited to legacy languages like HTML, CSS and JS or some sort of ugly work-around like transpilation.

<comment><USER3> Yes, even iOS is more open - you can use C/C++, C#/F# (Xamarin), Java/Scala (RoboVM) to build apps. Now that's a freedom.

</comment></comment><comment><USER4> Very nice! I just started with AngularJS. I'm starting to understand it a little bit and it seems to be in demand where I'm at. So, I'll be sure to run through this this weekend.

</comment><comment><USER5> I am not impress with the quality of this article. What about device specific feature like camera or GPS? Also they use standard angular router which is way below standard</comment>


How (and why) to create a good validation set - <AUTHOR> http://www.fast.ai/2017/11/13/validation-sets/?t=1&cn=ZmxleGlibGVfcmVjcw%3D%3D&refsrc=email&iid=341bb0bed5eb4980a9118cad2e6536f3&uid=22616011&nid=244+272699400 <comment><AUTHOR> Great article thanks Rachel</comment>


How refactoring a macro reduced my Rust project build time from 4 hours to 40sec - <AUTHOR> https://users.rust-lang.org/t/5-hours-to-compile-macro-what-can-i-do/36508 <comment><USER2> This is clearly an O(n^2) situation somewhere in LLVM. Usually it is pretty easy to fix by adding a cache or two; or by changing a linear search to a hash map.

If OP could produce an LLVM reproduction sample then this would be a good help for LLVM team.

</comment><comment><USER3> Does anyone know what LLVM does that breaks for long functions? Is the optimization pass doing something quadratic in the number of basic blocks in the function?

<comment><USER2> This is an O(n^2) in processing of instructions, blocks or anything related. Optimizations are specifically prone to this.

</comment></comment><comment><USER4> I hope this is considered a compiler bug.

<comment><USER5> Compiling a single function containing over 100,000 lines is a rather pathological case. And while you could argue it's a compiler bug, it's honestly not one I'd expect anyone to be spending any time on.

<comment><USER6> A single function is >100k damm! I though a 1300-1440 line Fortran 77 subroutine was over the top back in the day

<comment><USER7> I'm not sure if this is still the case, but Akamai previously had over 18,000 lines in the _main_ C function in the heavily modified version of Squid they used for their CDN.

</comment></comment></comment></comment><comment><USER8> This is generally good practice. Put runtime logic in functions, then write macros with just enough syntax sugar to bridge the gap to those functions.

</comment><comment><USER9> TL;DR: Don't autogenerate a large monolithic function. Generate many small functions instead.

</comment><comment><USER10> It sounds like this is an LLVM problem. So could this same thing happen in C?

<comment><USER11> I think I'm seeing this in C code too with clang. I'm having fairly big code- generated switch-case statements in my CPU emulators with hundreds to thousands of case-blocks (Z80: [1], 6502: [2]), and those take up to 7 seconds to compile with -O3, which is really unusually long for a single C compilation unit of that size (compared to the same number of lines across many smaller functions). If the problem has exponential behaviour it could easily blow up to minutes or hours for larger functions.

[1] [https://github.com/floooh/chips/blob/d0f690f2598f967f75cb360...](https://github.com/floooh/chips/blob/d0f690f2598f967f75cb360c5f8127791f88bdec/chips/z80.h#L866)

[2] [https://github.com/floooh/chips/blob/d0f690f2598f967f75cb360...](https://github.com/floooh/chips/blob/d0f690f2598f967f75cb360c5f8127791f88bdec/chips/m6502.h#L713)</comment></comment>


Ask HN: Please re-review my new website www.favilous.com - <AUTHOR> http://www.favilous.com/default.aspx

<comment><USER2> In your responses here you state you are aiming this product at the masses. So I'm going to attempt to review your site from this angle.

Before putting on my typical user hat let me say that I like the concept quite a bit and the site design is very nice.

I am putting my 'mass market consumer' hat which means I'm pressing the back button in 10 seconds unless something good happens.

I see discover. bookmark. share. But these are kind of vague... (I would A/B test this heading) But intriguing enough for me to checkout the tour.

Next I see what looks like a movie/slides. I press play and see the instructions are "click on play icon to view". I press play and get to the "what is favilous?" slide but then nothing happens. I don't really see another play button anywhere. This happens when I remove my mouse from the play task bar and unless I go back over it don't see it again. The play button to the lower right of the mouse if quite small and hard to see. Maybe think about either explicitly stating to keep pressing play or clicking the screen to keep the slideshow going or turning this into something more like a movie.

The slideshow itself is of very high quality but the initial slides highlight features. The entire time I was asking myself... I want to see this thing in action. Take me through a typical user experience with the app. What can this app do for me? This doesn't happen until much later on. I would make the slides more into a story about what a first time user would do and how this would be useful to me - a casual user.

Feel free to email me if you have additional questions.

<comment><AUTHOR> Thanks very much for this.

I can see that quite a few people are struggling with the playing of the tour - we will have to make this more obvious. I don't think Prezi offer an easy autoplay option.

You are right with regard to the user experience and this is something that again we are rolling out in the next two weeks. We have made a video of a user bookmarking, discovering and doing other bits and pieces to do with the site. We will post this somewhere on the site (still to be decided!) and hopefully this can solve this issue as you are right from the homepage you still don't get a complete feel as to what Favilous does.

May well take you up on the email option - thank you for this. Also, we are offering a yammer style service to the worker (see my comments below). Would like to know what you think of this?

thanks

<comment><USER2> I would post this video right smack on the home page. To the right of the signup/tour buttons and try to make it btwn 30-90 seconds. Maybe with a heading like... See it in Action. And to stay consistent with the high end feel of your site I would try to make the video high quality.

Yes. Email away - I love providing feedback. While I do think a yammer style service would be useful I would try to focus on one thing and really knock it out of the park. If you are making the choice to pivot your product towards a yammer/bookmarking combo product that is new tech this is a new hypothesis and should be part of your overall strategy. As opposed to adding bells and whistles.

In my office, we all have common links... email, time tracking, bug tracking, PM web app, etc. And having a centralized bookmarking network would be useful. Especially if I could publish a bookmark to say all the sales people and say - read this o sales people it's useful. But you would have to ask people in management (which I am not) for a more important opinion since they are ultimately the ones making this decision. Or aim this new product at the front line employees and move it up the chain verses down.

</comment></comment></comment><comment><AUTHOR> It has been a month exactly since we posted Favilous for review.

You all gave us such excellent feedback and we have been working through each of those to try to enhance the site. We also have a lot of exciting new features that we are working on in the next month or two.

We have redesigned the homepage in line with your comments and we still need to tweak it some more.

We now have over 275 users (more than Reddit in their first month) and have over 7000 links bookmarked.

Any further help you can give would be much appreciated!

Thanks

Steve

</comment><comment><USER3> Cool.

Bike-shed-color style: when I tried the tour, I was told to click the "Play" button. I did, but then I found it doesn't really "play" it. It's a "next" button, you have to keep on clicking it.

</comment><comment><USER4> Impression:I'm not sure why I'd sign up. It says something about bookmarking, but like most people I already have a bunch of bookmarks in my web browser and wouldn't want them in two different places. Does it integrate the two?

Or is it another sharing stuff with people site? If so how does it differ from facebook, twitter, reddit, stumbleupon, delicious, digg, mixx, technorati, etc.?

I don't know what it's new big feature or innovation is. Or how it's different at all. Explicitly tell me what your new big innovation and feature is. Or if there is no distinguishing feature (which is fine), at least tell me "we are different than other sites because we are NEW, BETTER, and AWESOME"

<comment><USER5> True... there are a ton of sites which do almost exactly the same things. But in a non-saturated market there's always room for a usurper with some kind of hook. Be it better usability, just a more stylish interface, or simply better marketing. So I'd say its got a chance. Saying that, the service is far too invasive for me, or probably most other people on here. We already have enough goddam firefox extensions etc., and already know 1m places to get buzz and social-driven recomendations. But pitch this at the n00b-level, and pitch it well, and it could be a winner imo.

<comment><AUTHOR> One of our ideas that we are thinking of is 'work networks' - very much like Yammer. We aim to position ourselves, in the next couple of months or so, as a Yammer for bookmarking.

We will still offer the same 'personal service' for our users but we will also go down this other route. Like Yammer people will be able to create and then join a private work network. You will be able to bookmark work links and documents as part of your work network and build up your Favilous work page. You can share these with other people from your network and your network is private - you cannot see out and other's cannot see in.

Would this feature be of use do you think? As I say we are a couple of months away but I know I would use it and find it useful so I am hoping others may feel the same way!

Any feedback on this would be most welcome...

</comment></comment></comment><comment><USER6> I couldn't immediately get the video to play (IO_ERROR), looked around for something else that would tell me what the site did, failed, gave up. My recommendation - add a text based explanation of what your site is for.

</comment><comment><USER7> Hi guys,

I have gone back to your last submission and think you have, largely, done well.

You have taken the comments on board and implemented them pretty effectively. 275 users is pretty good going too.

I would like to be able to convert my existing bookmarks however before I sign up with you..

Keep up the good work.

</comment><comment><USER8> I think the design looks cool. Personally, I would like to see the fonts in the main graphic a little fuller & "fatter" if you will. I think those bullet points are part of your key selling points, so they should probably be bold and strong in order to draw more attention.

<comment><AUTHOR> That is a fair point - these bullet points are our key sellers and this is something that people felt we had failed to do last time we posted. Do the bullet points give you a flavour of what the site is/does?

</comment></comment><comment><USER9> The bookmark tools slide down animation is incredibly jerky is safari.

Also the front page doesn't tell me enough to get me excited about your product. How does it differ from Reddit/Delicious? What makes it special? Why should I sign up?

<comment><AUTHOR> With regard to your first comment I will look into this and try and fix it - works fine in IE, Firefox and Chrome (I believe) but I thought that to be true of Safari too. I will look into it and fix it.

With regard to your second comment - Favilous is aimed at the mass market. We feel that Delicious, in particular, is a bookmarking site for 'techies' and we are keen that anyone can use Favilous. We also want to focus on the bookmarking and not just the social part of social bookmarking. We also feel we fit well with the IPhone and IPad markets - our site is particularly visual, clean and simple. Added to that the fact then when you are browsing from any browser be it IE, Firefox, Chrome, Safari (on the IPhone or IPad) you can bookmark any link using Favilous

If you're somebody who thinks "I like this article but I haven't got time to read it now, I'll read it when I get home", you might email the link to yourself for when you do get home. With favilous you can click one button and it saves it for reading later.

We wanted a visually compelling site that focused on bookmarking and the ease of bookmarking. With additional touches such as being able to have your own background image, sending links to your Favilous followers, seeing what is popular on Favilous and discovering new sites and reading descriptions of sites.

We are also going to be offering a big feature in the coming weeks that we hope will give us a niche in what is a very competitive market.

</comment></comment><comment><USER10> Here's a link to the original feedback - <http://news.ycombinator.com/item?id=1060022>

</comment><comment><USER11> The tour looks beautiful!

<comment><AUTHOR> Used a neat tool called Prezi to do it - very cool site, check it out! We wanted a tour that was a bit different and one that matched our ideals - I.E. very visual..

</comment></comment><comment><USER5> stylish. I like the idea of saving a bookmark to look at later... does the service email you at your primary email address???

<comment><AUTHOR> Funny you should say that. We are rolling out a bunch of features in the next week or so and this is one of them! Along with some enhancements to our bookmarking tools...So just to clarify you would like to click 'view it later' and it would email you the link to your primary email address? Is there any other features like this that you would like to see?

thanks</comment></comment>


Ask HN: Building a Website in Go - <AUTHOR>

I am looking to build a website using Go, are there any good books/websites on the subject? I am familiar with Ruby and have written a decent web server in C for a course, so I have a fair amount of experience. <comment><USER2> <Go Web Programming>: [https://github.com/Unknwon/build-web-application-with- golang...](https://github.com/Unknwon/build-web-application-with-golang_EN)</comment>


20 Tiny but Powerful Ways to Accelerate Your Personal Growth - <AUTHOR> https://www.inc.com/nicolas-cole/20-tiny-but-powerful-ways-to-accelerate-your-personal-growth.html?cid=sf01001&sr_share=twitter <comment><USER2> #1: stop reading articles organized as bullet points or titled like "X things to Y"

<comment><USER3> I thought the same, and reckon many of us did. Great comment!

<comment><USER4> But how else will I know the secrets to success? THAT'S THE ONLY WAY!!</comment></comment></comment>


The GitHub GraphQL API - <AUTHOR> http://githubengineering.com/the-github-graphql-api/ <comment><USER3> Neatly coinciding with GraphQL's announcement 'Leaving technical preview' [1].

In hindsight, sending a query, written in a query language from client to server seems obvious. So obvious, that I think I've seen it before...

      select login, bio, location, isBountyHunter
      from viewer
      where user = ?

It's ironic to me that it took Facebook reinventing SQL (or a graph database equivalent thereof [2][3][4]) and Github embracing it to legitimize this practice, since if you were doing this before, you were judged in the eyes of your peers and clients for not being "RESTful" (the fake-REST kind [5]), as if everyone was just itching to PUT and DELETE blobs of JSON of your poorly mapped resources to quasi-hardcoded, templated [6][7] URLs.

What's old is new again, but this time I'll take it.

[1] [http://graphql.org/blog/production- ready/](http://graphql.org/blog/production-ready/) [2] [https://neo4j.com/developer/cypher-query- language/#_about_cy...](https://neo4j.com/developer/cypher-query- language/#_about_cypher) [3] [http://tinkerpop.apache.org/](http://tinkerpop.apache.org/) [4] [https://www.w3.org/TR/sparql11-query/](https://www.w3.org/TR/sparql11-query/) [5] [https://news.ycombinator.com/item?id=12479370#12480408](https://news.ycombinator.com/item?id=12479370#12480408) [6] [http://swagger.io/specification/#pathTemplating](http://swagger.io/specification/#pathTemplating) [7] [http://raml.org/developers/raml-200-tutorial#parameters](http://raml.org/developers/raml-200-tutorial#parameters)

<comment><USER4> Also reminds me of CMIP and GDMO in old ITU network management standards in the mid 90s. They were RESTful, object-oriented, and you could make some pretty expressive queries with them. The standards failed probably because they were way ahead of their times: too many new concepts, too complicated compared to SNMP, and the documents were a very boring read.

<comment><USER5> Or CAML... _hides_

</comment></comment></comment><comment><USER6> Special shout out to the open-source contributors and members of the community who helped us build this:

[https://github.com/rmosolgo/graphql- ruby](https://github.com/rmosolgo/graphql-ruby)

[https://github.com/shopify/graphql-batch](https://github.com/shopify/graphql- batch)

[https://github.com/github/graphql-client](https://github.com/github/graphql- client)

[https://github.com/graphql](https://github.com/graphql)

We <3 your work and are thrilled to have built this with you!

Please make sure to give us feedback during this alpha stage! [https://platform.github.community/](https://platform.github.community/)

<comment><USER7> Are you guys using rails w/ graphql-ruby? Would love to see a blog post with more details about the backend implementation!

<comment><USER8> The post links [https://github.com/github/github-graphql-rails- example](https://github.com/github/github-graphql-rails-example) \- "a small app built with Rails that demonstrates how you might interact with our GraphQL schema."

<comment><USER9> This just shows that they've made use of a graphql Rails client; the GP asked about the backend which could be in a different language.

</comment></comment></comment></comment><comment><USER10> I'm impressed, but for other reasons. For once, I have no idea how to properly implement this. I mean, it really looks like a lot of trouble mapping this from GraphQL to.. .SQL? And what if the system is using some kind of NoSQL database which does not really have a very verbose query language, if any? Complexity just seems to explode. Somehow I feel there is also a risk for the client to make a quite sub-optimal query. So, probably some kind of policy should be implemented. All in all, there is a level of management ability that looks lost to me with if GraphQL is implemented improperly, and to be honest, it looks like it is easy not to be. I'm really looking forward to some book or guide, since the implementation is puzzling to me.

<comment><USER11> Does anybody considered this problem at all? (Giving too much flexibility to client and allowing non-optimal queries like joining several big tables or data collections w/o proper index support.) It's so weird that all materials I saw about GraphQL hushed up this question which is essential for the future of this technology.

And it's so similar to ORM's issues all the industry experienced past 20 years. But perhaps more dangerous due to the public nature of many APIs.

<comment><USER12> Instead of thinking of it as parsing queries, think about it as nested RPC. It's quite reasonable for an implementor to set a time limit or call limit to keep algorithmic complexity attacks under control.

<comment><USER11> Ok, but nested loop in so many situations is totally losing to other algorithms to join data (like merge join, hash join) when you deal with large datasets, right? So again, it will be inefficient by default, for so many cases.

<comment><USER13> If you're talking about GraphQL, the implementation is undefined by default. It's just a query language spec. There isn't a "GraphQL Server" product. You can resolve data from many sources. It could be a no-sql database, sql-backed hadoop cluster, etc.. it's very much just the language the client talks to the server in.

If the client requests exactly what it needs, that shouldn't be more stressful on the server-side than spamming REST requests for all the same resources. Plus, it's easier to optimize when you know what the client wants. If there's something expensive, you could, for example, cache/index something extra. If the client were doing it themselves with a series of REST calls, you wouldn't be able to understand the real use-case. Even if you did know what aggregation they really needed, you wouldn't be able to fix the problem without updates to both the service and the clients.

Either way, it's easier to set sane limits than craft un-DOSable APIs. There is always a cost to satisfying queries. If you're trying to run a free service, it's a much bigger concern. If you're paying the bill, you're incentivized to investigate expensive/slow calls.

<comment><USER10> Disclaimer: I'm just talking from a REST developer perspective.

The nice thing of REST calls in the current form is that they are that - <USER2> calls. With proper monitoring you could just see which ones do you get more or less and with these or those parameters. They can be optimized as best possible, but separately. You are right, it needs more analytics to figure out a series of calls (based on some token?) and maybe bundle them up, introducing a new endpoint (thus not breaking old clients).

But yet again, that is that one "query". With GraphQL it could be anything, and that's what bugs me. I find it challenging, in a good way.

Another thing what I'm also not sure about are the queries themselves, or rather, the number of different ways you can write a query. Multiple users can request the same data, or almost same, with queries written in different ways. Backend developers should then guarantee that those queries will be executed in a similar way, with predictable performance. I guess in a similar way SQL query optimization does. I had the "joy" of working with a database that had hugely different performance just with trivial changes in the query (it was not relational, actually it is discontinued now, thankfully). It was a huge PITA. I wouldn't like to serve an API like that.

</comment></comment></comment></comment></comment></comment><comment><USER14> I'd love to hear how Github is doing ACL here. We came up with a pretty neat solution on my team, which we have not yet open-sourced, for JS. But it was a lot of first-principles design work; there don't seem to be any good examples.

This was pretty much all the documentation we had, and it's more a design analysis of edge-vs-node authorization: [https://medium.com/apollo-stack/auth- in-graphql-part-2-c6441...](https://medium.com/apollo-stack/auth-in-graphql- part-2-c6441bcc4302#.he0radbju)

Edit: Our eventual solution looked a lot like

        class SomeTypeOfResolver {
          @allowIfAny(rule1, rule2, rule3)
          someProperty;

          @allowIfAll(rule4, rule5)
          otherProperty = defineRetrieverFunction();
        }

</comment><comment><USER15> Since the announcement of GraphQL I've been waiting for some 'real world' apis. (Sure the Star Wars GraphQL apis are fun)

Does anyone know any best practices if you want to adopt this is in an existing application using a relation database (i.e. PostgreSQL). I don't know how to implement this without causing N+1 queries. (or Worse).

For example:

{ Post {

        title,
        content,
        Author {
          name,
          avatar,
        },

        Comments(first:10) {

.. } } }

A naive implementation would cause a lot of query, for each "edge" a query.

<comment><USER6> Yup. That's something we can handle internally, under the hood to batch database requests into a single query for all edges. This problem is actually _easier_ to solve in GraphQL then it is with a traditional REST API.

<comment><USER16> Exactly, now you put the onus to solve N+1 on the serverside, instead of in the old case the client would do N+1 requests...

</comment></comment></comment><comment><USER17> Fascinating this. But glosses a bit over the cost of generating bespoke responses to every request. Wonder how it works if expensive queries are implied in the request. You also need smarter caching, I imagine.

<comment><USER6> This definitely enables a lot of opportunity to do both smarter querying and smarter caching on the back-end.

While you can indeed perform larger, more complex requests, GraphQL by nature forces queries to explicitly ask for everything you want to get back. As a result, we're not wasting any capacity giving you back a bunch of data for an entire object that you don't need like we would in a normal REST API request.

The thing that I'm most excited about with all this is the fact that we're building new GitHub features internally on GraphQL as well. This means that unlike a traditional REST API, there will no longer be any lag time between features in GitHub and the GitHub API.

API is a first-class product now. API consumers get features as soon as everyone else!

Please make sure to give us feedback during this alpha stage! [https://platform.github.community/](https://platform.github.community/)

<comment><USER11> There is a lot of cases when user needs just 20 rows from billions but getting them is very hard problem. One of such examples is well-known: it's twitter- like data model, where a user can "follow" thousands of others and you need to fetch top N recent posts from all that thousands streams.

In Postgres, straightforward approach to query such data is based on JOINs and it's absolutely inefficient. This can be dramatically optimized with recursive CTEs, arrays and loose index scan approach, but GraphQL by default it will do straightforward JOINs, right?

I hope GraphQL has (or will have soon) ways to overwrite/redefine queries, but again, it leads us to the same problems "patch driven development" that everyone hated in ORMs during decades. That's why I'm saying that GraphQL is "a new ORM", but it's more dangerous due to it's openness and proximity to web users, that's why it can bring even more dev and devops pain to the world that ORMs did during decades.

</comment></comment></comment><comment><USER18> I've been looking into implementing something like this @ Gogobot as well. This eliminates the need for all `/v/` type API versioning. The client requests what it needs for this request.

Experimenting with this we often saw 50-70% reduction in the payload being sent to the clients in some requests. If I only need the first, last and avatar from the User object there's no need for my response payload to suffer because other requests need 30 fields from the same object.

Implementing this without causing a lot of N+1 queries is the tricky part and that's where we're currently investing most of our time.

Awesome to see Github adopting this and releasing it to the public API.

<comment><USER6> I _theory_ a GraphQL API can operate verison-less utilizing things like deprecation notices and field aliasing to smooth over any rough edges. Once we see calls on a certain thing reach zero and sustain that level, we can actually remove it and never have to bump a version anywhere.

That's the dream. We'll see how reality plays out.

For reference, we actually launched with some deprecated fields (see "databaseId" on the "Issue" type -- database IDs will be phased out for global relay IDs eventually) if you want to see what they look like.

<comment><USER19> That theory is Facebook's practice. Four years later and we're on GraphQL API version 1. We add things which is safe, deprecate fields which we want to remove, and delete when hit rates drop to 0.

Granted, our clients are all Facebook engineers, so we have some pull in helping the migration away from deprecated fields, and GitHub will have to find the right process which works for a broader set of API consumers, but not only is this theory a good one, it's considered GraphQL best practice.

</comment></comment></comment><comment><USER20> Awesome to see GraphQL get some mainstream adoption, hopefully this leads to some more community tools for consuming it :) Relay is an awesome concept, but the learning curve is pretty steep.

<comment><USER21> Check out these other API consumption clients: [http://graphql.org/code/#graphql-clients](http://graphql.org/code/#graphql- clients)

</comment></comment><comment><USER22> Is this then the GitHub v4 API? Should we expect the REST API to be deprecated in the future?

</comment><comment><USER21> GraphQL increases speed: "Using GraphQL on the frontend and backend eliminates the gap between what we release and what you can consume"

</comment><comment><USER23> I'm intrigued by GraphQL, but I don't understand what separates it from passing "fields" and "embeds" parameters in a REST API. I don't see what about it would be inherently easier to implement either.

I've sparingly in my free time been working on a project that does exactly this with a REST API[1]. It's in an entirely unfinished state, but the linked documentation is a decent example of the types of queries possible.

[1] [http://drowsy.readthedocs.io/en/latest/querying.html](http://drowsy.readthedocs.io/en/latest/querying.html)

<comment><USER3> For me, it's easiest to pretend that GraphQL is a DSL (a domain-specific language) that offers special syntax to make it easier to implement certain things.

\- You can pretend that each GraphQL query is a JSON object (which, it actually is)

\- You can pretend that each GraphQL schema that you declare is actually a JSON-Schema document, which some people use to specify in a machine-readable way your API's inputs and outputs will look

\- You can pretend that each GraphQL resolver, which the piece of code you have to write (on the server) to actually dig up the result of a query, is a function that parses your incoming JSON, validates it against your JSON- Schema, and then reaches out to your datastore to produce a result. You'd then have to construct another JSON document which matches your response schema, stuff the data in it, and return that to the user. Except that in GraphQL, you only have to supply the resolver, the rest is handled by the framework.

You can of course do this by hand and many people do (most obviously when you see APIs that include arguments like "operator=eq" or "limit=100" or "page=25"), but GraphQL gives you the tools to do this with less effort, and end up with a cleaner API by passing everything in the query body. And the GraphQL server saves you from having to manually build up the JSON text of every single response.

Reading through your docs, I've seen this style of API in enterprise settings where there was a backing relational database and the designers were basically trying to expose the underlying database through HTTP. It can get the job done, but GraphQL gives you nicer abstractions, a cleaner way of passing parameters, and conveniences like a real type system (known both on the client and server side) and you only have to supply your resolver function implementations.

<comment><USER23> I totally see the appeal on the surface level of a nicer/cleaner looking query language and API.

Still, pretty much everything else you mentioned seems doable with REST. I'm using Marshmallow schemas in Python which seem to act in a similar way on a field by field basis as a GraphQL resolver does. I'm not sure what exactly I'd be getting outside of a slightly nicer/cleaner abstraction by moving to GraphQL, but maybe that's enough?

</comment></comment></comment><comment><USER24> GraphQL API Explorer wants this permission:

Public and private This application will be able to read and write all public and private repository data. This includes the following:

Code Issues Pull requests Wikis Settings Webhooks and services Deploy keys

Why'O whyai?

<comment><USER25> Because GitHub's GraphQL API will let you do all of those things via the GraphQL API Explorer ;-)

</comment></comment><comment><USER26> Slightly off topic but GraphQL vs Odata?

<comment><USER27> They're similar; both technologies allow clients to specify the data they need. I would say that GraphQL is more flexible and has a strong type system. For example, the filter semantics are defined within OData, while in GraphQL, you define how your data can be filtered within your schema.

As a personal opinion, I also feel OData exposes an API that is too tightly coupled to the persistence layer. GraphQL objects and properties are all backed by arbitrary "resolver" functions, which means you can stitch together multiple/legacy backends to generate your response.

</comment></comment><comment><USER26> What method do you use to get data. You can't put a body in GET methods so I assume with GraphQL you use POST to get data?

<comment><USER28> They use POST ( [https://github.com/github/graphql- client/blob/9e1fa16cf88de4...](https://github.com/github/graphql- client/blob/9e1fa16cf88de450483f79f89f2be19fb0e09b4b/lib/graphql/client/http.rb#L61) ) which, as far as I know, is common for query APIs like this.

<comment><USER27> You can send a GraphQL query as part of the query in your HTTP GET request: [http://graphql.org/learn/serving-over-http/#get- request](http://graphql.org/learn/serving-over-http/#get-request).</comment></comment></comment>


Show HN: BlogRoll - Yet another replacement for Google Reader - <AUTHOR> http://blogrollapp.com I've been working on this in my spare time for the past few months, and in light of the news about Google Reader shutting down, I thought I'd announce this today:
BlogRoll is meant to be an improved version of Google Reader with a tiled interface (which may not be everybody's cup of tea), but it works well for photo-focused sites like food and fashion blogs, and it handles other news sites and blogs quite well, similar to a newspaper-style layout
As for people switching over from Google Reader, it can also automatically import your existing feeds (click the "Import from Google Reader" button on the first screen after signing up)
Any feedback or suggestions? I appreciate it and will continue to work on improving this! <comment><USER2> Why this post has 4 points? When I open the page, I see nothing...

<comment><AUTHOR> Sorry, it's currently running on a single EC2 instance so it may be slow due to today's flood of traffic, though I'm working on scaling it up

</comment></comment><comment><USER3> Looks interesting. Do you have an Android app?

<comment><AUTHOR> Currently not, but I am planning to work on native mobile apps soon!

I have tried to make the current website mobile-friendly, though it may be slower on older phones since it uses javascript to position the tiles.

</comment></comment><comment><USER4> It broke my back button :(

<comment><AUTHOR> This uses Backbone.js on the frontend, and each time you change sites on the left sidebar, a "pushState" event is triggered, which saves the current state of the page (and the back button will cycle through those saved states)</comment></comment>


Whitman Expected to Get HP CEO Nod After Markets Close - <AUTHOR> http://allthingsd.com/20110922/exclusive-whitman-expected-to-get-ceo-nod-after-markets-close-and-not-for-the-interim-either/

<comment><USER2> The really disgusting part is that these CEO's have absolutely nothing to lose. If Meg Whitman gets this job she is basically guaranteed 10's of millions of dollars - whether or not she ruins the company. Carly Fiorina, Mark Hurd, Leo Apotheker and the ex-Compaq CEO (Capellas?) all walked away with 20+ million dollars. And for what?

Bill Hewlett and Dave Packard - not to mention Steve Jobs, Gates, Zuckerberg etc. - earned their billions with brilliant and gutsy decision making, while these parasites earned their money by being better schmoozers than their business school classmates.

<comment><USER3> Imagine if you worked for BigCo, and one day your boss says to you, "You're fired... and we're also taking back your stock options and severance pay."

Because that's what you're proposing doing to a CEO. Yeah, they're rich and proportionally more of their pay is comprised of non-salary items. Oh well. Yeah, you don't like what HP executive management did to the company. I agree, it sucks. But in the real world, people negotiate trading work for pay, and you can't just yank it back because you didn't like the work.

(Unless you negotiate some provision to do so, which some companies do. But not HP.)

<comment><USER2> Well, if I get fired, my unvested stock options certainly dont suddenly vest. And I dont get any severance pay. So yes, I propose that CEO's get exactly that treatment.

<comment><USER3> I'd say it's time for you to negotiate yourself to another company. Severance pay, at least, should be standard.

(Edit: I'm taking the inference you're working for a big company. If you're working for a startup, we're talking about a whole 'nother world.)

</comment></comment></comment></comment><comment><USER4> There was an article I read about this yesterday on one of the big tech websites, I'm not sure which one. HP basically hired a guy that was good at something, and operated in a certain way, and now that he's doing it, they're firing him. Granted, not everything has been well-executed, but come on, its like buying a motorcycle and then returning it because it isn't air- conditioned.

<comment><USER5> Really have to ponder why Whitman would take this job given the probability of being fired next year no matter what happens...

<comment><USER6> Are you a football fan? The CEO job at HP right now is pretty much like the head coach job with the Oakland Raiders. It's a completely dysfunctional organization. If you succeed you're the genius that was able to turn it around. If you don't then Al Davis takes the blame and you get a free pass. You get paid either way. And you have to remember there are only 32 head coaching jobs available so it's great work if you can't get the same job with another team.

Being CEO of one of the world's largest companies is a similarly exclusive club. Who wouldn't take that job?

<comment><USER4> hahahaha you just compared the HP board of directors to Al Davis, that is just plain awesome

</comment></comment></comment></comment><comment><USER7> During Whitman's gubernatorial campaign there was a great quote on SFGate, something like: "Meg Whitman is the only force in the universe that could compel me to vote for Jerry Brown." I felt the same way, pretty much.

I don't know much about her work at eBay, but the distant, autocratic way she ran her campaign -- she didn't get out and talk to people, she just stayed in her castle and put out ads -- strikes me as the antithesis of the management style needed by a company in crisis.

<comment><USER8> I once got a chance to talk to Meg when I worked at eBay. After the, very brief, interaction I dubbed her "Queen Margaret" as the look on her face suggested that rabble like me shouldn't be seen, at least by the aristocracy.

Also, across the street from the eBay HQ in Campbell there was a restaurant that had failed and Hooters wanted to open a location in it's place. Meg fought Hooters for nearly two years.

Good luck HP, you're going to need it.

<comment><USER9> I had a similar experience when she visited my AP econ class shortly after declaring her candidacy. She displayed a mixture of being obviously uninformed and having contempt for her audience.

</comment></comment></comment><comment><USER10> Good grief. This reflects far worse on the board than anyone else- they hired the wrong guy, and then fired him when he did the things he said he would do.

<comment><USER11> Well - once they've gone down the wrong path, realizing it and making a correction should reflect better on them (although it still shows poor predictive skills IMHO).

</comment></comment><comment><USER12> I'm sure she will do for HP's reputation what she did for PayPal, and build value like she did with Skype.

</comment><comment> A-K So effectively Apotheker was brought in, trashed Palm, spun off the PC division, and now is getting the boot? The suggestion that HP replace the entirety of its upper management, Apple-circa-1996-style, is becoming more and more credible.

<comment><USER13> He wasn't even that successful. He only got to the point of "maybe we should spin off the PC division, or do something else with it" without actually announcing (or maybe even having!) a plan to do so.

</comment></comment><comment><USER14> Back when I was doing e-commerce, a large percentage of my revenue was on eBay from '05-'09. I didn't realize how stagnant the platform was until John Donahoe replaced Whitman and finally changes were made to increase safety for buyers and differentiate sellers in the marketplace. I don't think ebay would have lost so much 3rd-party seller market share to Amazon if Whitman had been proactive.

I don't know what the HP board is hoping for by hiring Whitman as CEO, but if it's anything other than "steady as she goes," then I think they are making a bad choice.

</comment><comment><USER15> Normally I like hires within, but hiring a board member is just trouble. Particularly one who has been around for the total collapse of the stock. Apple had a natural and trained successor in-house and was running smoothly, HP needs a product guy who can articulate a new HP way.

Ms. Whitman is just the wrong person. Heck, I am not fond about his time at Apple or Be, but Jean-Louis Gassée (if he has learned price does matter) would be a better choice from the product side. He would need a strong CFO and COO to make it work. Not ideal but better.

</comment><comment><USER16> I have much respect for Meg Whitman, but she is not an ideal pick for HP. Her experience is with consumer companies -- eBay, P&G, Disney...Especially if HP spins off its PC business, that leaves the company as essentially a pure enterprise hardware/software play. Don't do it HP.

<comment><USER17> is the Autonomy acquisition finalized yet? it seems like maybe this is a signal that HP will attempt to refocus on its consumer products?

</comment></comment><comment><USER18> My favorite quote in this conversation so far: "[Ms. Whitman] is bit of a lightning rod in Silicon Valley, where founders are allowed to have outsize personalities but mere managers are not." [https://www.nytimes.com/2011/09/22/technology/idea-of- whitma...](https://www.nytimes.com/2011/09/22/technology/idea-of-whitman-at- hp-distresses-the-tech-world.html?_r=1&pagewanted=all)

</comment><comment><USER19> When I read the headline, I was hoping for another Whitman. Alas, it was the one I feared. Meg Whitman has never struck me as a visionary CEO who can fix a broken company. It seems like if this goes through, HP will be relegated to a slow death. Whitman will get out with a golden parachute and HP will be on to the next person who will suck some blubber out of a dying whale. Am I too cynical?

</comment><comment><USER20> God help those poor souls still stuck at HP. The gubernatorial campaign exposed all sorts of character flaws and showed that Whitman has a complete lack of empathy for people who work for her.

</comment><comment><USER21> The HP board is less organized than my local kickball league.

</comment><comment><USER22> This strikes me as a hire very much in the same vein as Bartz at Yahoo. Successful with on particular type of tech company doesn't mean success with another. (Apotheker being a similar example).

Whitman could be very competent and turn things around, she sends likely a good message to wall street. But if I were the king of HP I'd be looking for someone who's got way more domain experience.

</comment><comment><USER20> Worst tech BoD ever: HP or Yahoo? I'm thinking this pushes HP over the line.

</comment><comment><USER23> I really hoped her disastrous run for governor of CA would be the last thing the public ever heard from her. Her hilariously stupid decisions during the acquisition of Skype made me think she would have very little future after eBay. It boggles my mind that the HP board would even briefly consider her... What HP really needs is a new board and a new CEO...

</comment><comment><USER24> Cringley's article from February: [http://www.cringely.com/2011/02/why-leo- apotheker-will-be-fi...](http://www.cringely.com/2011/02/why-leo-apotheker- will-be-fired-from-hewlett-packard/)

</comment><comment><USER25> The most depressing part? "He will be fired, of course, with a nice, big (and appalling, considering the 47 drop in HP stock in his tensure) severance package as a goodbye-on-your-way out."

</comment><comment><USER26> HP should buy Yahoo and then both companies can spiral down until their stock is low enough to be picked up by AOL

</comment><comment><USER27> Does this mean they'll bring back the TouchPad? Is it even possible, given the people they just laid off from that team?

<comment><USER28> Killing WebOS and undoing the Palm acquisition was the best thing Apotheker did for HP.

WebOS features some impressive application design on top of a turkey of an OS. HP shouldn't have tried to ship any of that junk.

</comment></comment><comment><USER29> So wait, is Apotheker out yet or not?

Either way, what a waste of time his entire tenure has been.

<comment><USER30>
      what a waste of time his entire tenure has been

The stock has gone down 47%, and he will walk away with approximately thirty million dollars. "Waste of time" doesn't quite capture my thoughts about his tenure.

[http://allthingsd.com/20110921/what-will-leo-apotheker- walk-...](http://allthingsd.com/20110921/what-will-leo-apotheker-walk-away- with-if-hes-fired/)

<comment><USER31> Colossal failure?

</comment></comment></comment><comment><USER32> Am I the only one noticing some latent sexism in some of these comments?

I view Whitman's role with Ebay as comparable to Eric Schmidt and Google. Both joined about 2 years about their respective companies were founded and made them #1 in each of their target sectors.

I don't think anyone here would seriously question that Eric Schmidt could run HP (not that he'd want to).

But reading through these comments, I'm getting the impression people think she's unqualified to run HP, even with her impressive track record and having been on the board of HP to understand what's actually happening there.

So is it me, or am I reading to much into this?

<comment><USER33> Simply because someone thinks that one particular woman might not be great at one particular job does not make them a sexist. Also, I don't think success at Ebay and Google are exactly comparable. Ebay is a dual-sided market. Once they became dominant it'd be very hard to unseat them. In this environment it's very possible Ebay was able to succeed in spite of Meg Whitman not because of her. She made some very good moves like acquiring PayPal and some very bad moves like acquiring Skype. I don't have much of an opinion on how Meg Whitman would do in the role, but I think HP's board royally screwed up and will not make the job easier. They hired Apotheker, approved of his acquisitions, and never gave his strategy a chance to work before deciding to fire the guy. HP's board needs to be replaced.</comment></comment>


UK police ask blogger to remove UKIP tweets - <AUTHOR> http://axeofreason.blogspot.com/2014/05/you-are-not-allowed-to-read-this-blog.html?spref=tw&m=1 <comment><USER2> here's the poster in question: [https://twitter.com/MichaelAbberton/status/46329913991721369...](https://twitter.com/MichaelAbberton/status/463299139917213696/photo/1/large)

for context for non UK folk, the guy posting the story is a green (left of the center, strong environmental politics), and UKIP who are the current talk de jour in the UK are a rightwing nationalist party who are more acceptable in the UK than just blatantly supporting the BNP.

Oh, and if the police got involved, to be frank, assuming it happened like op said, that's absolute bullshit and basically intimidation. Considering the reach that tweet/poster image has had, I wouldn't be surprised if someone with connections within UKIP had pulled some strings to get the police to visit this guy.

<comment><USER3> The post (if by 'poster' you meant post) is confusing. UKIP say they're cancelling house building on green belt land, someone else says there's 'numerous refs', the someone else says no source was found. It seems to be pointing out that the of the claims against UKIP aren't referenced, but it's being tweeted by a Green Party supporter.

<comment><USER4> After digging through his twitter stream, it looks like he took an existing image and tried to add references for the claims.

<comment><USER5> He did. But as he mentions in his post, he only references official UKIP sources.

The unreferenced ones are contentious, but from my understanding of UKIP's plans, they're broadly correct.

</comment></comment></comment></comment><comment><USER6> Police do, and should take peaceful action without any police authority. Calming things down before they happen and that kind of thing. Seeing as these officers didn't know what Twitter was, it's pretty probable that someone called the police and told them that the author was picking a fight on the internet and might cause trouble.

It basically sounds like a less dramatic type of SWATing.

<comment><USER7> >Police do, and should take peaceful action without any police authority.

Coming to someone's house and bothering them about something political they said online is not "peaceful".

<comment><USER8> Could you please explain how it is not peaceful?

<comment><USER9> You could make an argument that it's technically "peaceful" since it wasn't violent. But it was clearly threatening, and meant to be be threatening. It's not like they were investigating any wrongdoing, since they acknowledged there was none. They were there to send the message that he had an enemy that pulled the strings of the law. It was intimidation.

It's technically peaceful in the same way that me raising my fist while staring you in the eyes is technically peaceful, although that's a very barbaric type of threat while this was a very civilized one.

<comment><USER8> I don't think UKIP 'pulled the strings of the law', I've read a lot of people say that they had visits from the police because someone (who was not famous or important) complained that they were acting in a socially inappropriate but probably not illegal manner (for example). To pull the strings of the law they'd need to exert some special influence that was not available to the ordinary person, but that is not the case here.

Raising your fist clearly implies you are going to hit me if I don't agree. Here the police made it clear there was no crime committed and took no action when he said he wouldn't take it down.

<comment><USER7> >To pull the strings of the law they'd need to exert some special influence that was not available to the ordinary person, but that is not the case here.

You're telling me that if I called the police and told them someone was making fun of me on twitter, they'd visit that person's house and ask them to stop?

<comment><USER10> In some jurisdictions - yes, that absolutely happens.

<comment><USER7> >In some jurisdictions - yes, that absolutely happens.

Which?

<comment><USER11> The linked post is by someone in the UK, for example.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> Anyone have any more information on this? Going off just the post leaves a lot of questions.

<comment><USER13> No. But I suspect his local MP will ask the Police to investigate. The officer who asked the police to pop round will probably be nagged for being naive. There may be a weak apology and it'll blow over. The damage I suspect will be for the politician who attempted to misuse a complaint about online bullying as political intimidation. UKIP won't be affected because they're a protest party, most people voting for them don't care about their tactics they see them as a single-issue party.

Edit: fat fingers and predictive text!

</comment></comment><comment><USER14> isn't the right thing to do in this kind of situations to say nothing, allow nothing and ask for the presence of a lawyer?

<comment><USER15> If this would've been in the US, absolutely.

The quality of connection between UK citizens, and law enforcement is significantly different, due to actions on both sides: specifically:

* UK police tends to seek full understanding prior to taking any action

* The standard police unit is _not_ armed, and their legal rights are significantly limited

* In general, their strategy aims for avoiding situations to escalate

This allows for the vast majority of situations to be resolved peacefully, and in mutual respect. I leave drawing conclusions, and comparisons to the US armed force to the dear reader.

<comment><USER16> What incentive would the author have to talk with the police (let alone invite them into his home) in this instance? I understand that the police in the UK may not be as menacing as they are in the US, but if nothing is in it for him (and as far as I can tell, nothing was), then why would he allow himself to be questioned in such a way?

If I have nothing to gain from talking with the police, I never would, even if I _also_ felt that I had nothing to lose.

<comment><USER15> | What incentive would the author have to talk with the police (let alone invite them into his home) in this instance? I understand that the police in the UK may not be as menacing as they are in the US, but if nothing is in it for him (and as far as I can tell, nothing was), then why would he allow himself to be questioned in such a way?

Incentive boils down to negative externalities:

* In the UK, understanding is attempted by the police; in this case, they probably received a complaint, heard out both sides, and made the judgement call of case having no legal basis. Not hearing the cops out have a potentially significant downside, in them understanding the situation incorrectly.

* In the US, the same level of understanding requires the interplay of a prosecutor, a defense counsel, and a judge (on top of the contestant & defendant), and several man-days of sweat. Talking with the cops can, by law, only weaken your position: anything you say _can only be used against you_.

The cultural trade-off is a question of variance: the UK system presumes low- variance situations, such that understanding can be built by reasonable individuals; while the US is geared to being tolerant towards people living on the edges, at the cost of longer due process.</comment></comment></comment></comment>


Facing Immigration Crackdown, Silicon Valley Rethinks Its Dreams - <AUTHOR> http://www.bloomberg.com/news/articles/2016-11-17/facing-immigration-crackdown-silicon-valley-rethinks-its-dreams <comment><USER2> Cry me a river. If I were one of the huge, mediocre bodyshop consulting firms that have abused the H1B system so badly, I might be quaking in my booties a bit, because now I'd have to reduce my profits a tiny bit and pay real market wages and provide decent working conditions.

A smart immigration policy would take in as many of the cream of the crop in the world as you could convince to get within your borders. Those are exactly the people that you want immigrating. Or, you know, let top international students stay and work here and pay taxes, rather than giving them the boot back home as soon as they take off their cap and gown.</comment>


Ask HN: How do you manage projects - <AUTHOR>

I have a question for the startups here. What process do you use for managing/scheduling projects. I work for a startup where the CEO is a non programmer and,each time there is a new feature request from a customer or an idea for a new project, his only input seems to be "Get this done ASAP". Because of this it seems like the to-do list keeps growing, and I've been working 14-16 hours a day, 7 days a week for the last 3 months. Of course, if I ask him for time off, all he does is wave the to-do list at me.
How do you manage schedules.
The system this company is using is too chaotic to be successful. <comment><USER2> Make a list of the features.

Now sort it from easy to hard to complete including estimated time to complete.

Figure out which features are need to be completed before other features.

Now summarize that data in an easy to digest form, one method is to map it onto the calendar showing this is how long it is going to take to reach a point.

Add the additional projects to the calendar.

At this point, I'd schedule a meeting with the CEO and show him how much work there is to do based on the 16 hours 7 days a week that you are working. I'd ask him which items can slip to a later date when another item is added to the project or there is a new project.

There are other solutions, but I'd keep it as non-confrontational as possible and show that you are wanting to accomplish the work.

<comment><AUTHOR> Thanks for your input. I did try doing what you mention below, but the CEO just refuses to budge. This has been a giant slap on the face for me. I think its time to leave. Now I am worried that I might never survive in a startup.</comment></comment>