A Better Pip Workflow - <AUTHOR> http://www.kennethreitz.org/essays/a-better-pip-workflow <comment><USER3> I would additionally recommend to use :

      pip freeze -r requirements-to-freeze.txt > requirements.txt

instead of just:

      pip freeze > requirements.txt

So you can keep your file structure with comments, nicely separating your dependencies from the dependencies of your dependencies. Actually I only used one requirements.txt file, removing everything below "## The following requirements were added by pip --freeze:" and regenerating it when I changed my dependencies.

And sure, beware of git urls being replaced by egg names in the process.

<comment><USER4> Another tool you might find useful is pipreq.

        pipreq --savepath gen.requirements.txt /

The above will run through all your source code, and generate the requirements that you _actually_ use via imports.

[https://github.com/bndr/pipreqs](https://github.com/bndr/pipreqs)

Disclaimer: I contribute to it.

<comment><USER5> Does it work well? I can't imagine it would be very accurate for things like a Django project...

<comment><USER4> It works pretty well for a Django project with the exception of anything that's only called from INSTALLED_APPs.

I have a branch that can handle Django, but I kept it private because it's not really general purpose to introspect Django's settings.py then read out data.

</comment></comment></comment></comment><comment><USER6> This is sort of the same thing setup.py is intended for.

The way I've seen this successful in practice across many projects:

setup.py: specify top-level (i.e. used directly by the application) dependencies. No pinned deps as general practice, but fine to put a hard min/max version on them if it's for-sure known.

requirements.txt: Pin all deps + sub-deps. This is your exactly known valid application state. As mentioned, a hasty deploy to production is not when you want to learn a dependency upgrade has broken your app.

requirements-dev.txt: dev dependencies + include requirements.txt

<comment><USER7> This in fact was my intention when creating this feature in pip: setup.py has the abstract dependencies, requirements.txt is a recipe for building something exact. And I quickly found requirements-dev was useful for adding tools (some people have done that with setup.py extras, but the ergonomics on that never seemed great).

The one thing I wish was part of this is that there was a record of conflicts and purportedly successful combinations. That is, you distribute a package that says "I work with foo>=1.0" but you don't (and can't) know if the package works with foo 1.1 or 2.0. Semantic versioning feels like a fantasy that you could know, but you just can't. Understanding how versions work together is a discovery process, but we don't have a shared record of that discovery, and it doesn't belong to any one package version.

This sense that package releases and known good combinations are separate things developed at separate paces is also part of the motivation of requirements.txt, and maybe why people often moved away from setup.py

<comment><USER8> A pacakage/system that handled this would be great. Zope and Plone have the notion of "known good sets" \-- and it's not really a pleasure to use (but much better than nothing). As far as I can tell, with Plone 5 - <USER2> recommended way to install Plone is from the unified installer - leaving known good sets, pinning and buildout to manage plugins:

[http://docs.plone.org/manage/installing/installing_addons.ht...](http://docs.plone.org/manage/installing/installing_addons.html)

For an example of what bootstrapping a full Plone 4 site via buildout entails, have a look at the (defunct) good-py project:

[http://good-py.appspot.com/release/plone/4.2rc2](http://good- py.appspot.com/release/plone/4.2rc2)

[http://www.martinaspeli.net/articles/hello-good-py-a- known-g...](http://www.martinaspeli.net/articles/hello-good-py-a-known-good- versions-manager)

As long as one is able to manage to keep projects small, and in a virtual-env of it's own, managing "known good sets" (in buildout, or for pip) shouldn't really be too hard. But as projects grow, a real system for managing versions will be needed. As far as I know there are no good systems for this... yet. Ideally you'd want a list that people could update as they run into problems, so that if projectA runs fine with foo=1.0, and bar=1.1, maybe projectB discovers a bug in foo<=1.0.4rc5 and can update the requirement.

It's not a trivial thing (see also: All the package managers, apt, yum, etc).

</comment></comment></comment><comment><USER9> I was thinking about this the other day when I was helping a friend with his method #1-style requirements.txt, and how I wish there was something similar to composer's "lockfile".

The author's proposed method is basically the same as how php's composer does it, with its composer.json and composer.lock. Specify your application requirements by hand in composer.json, run composer install, and composer.lock is generated. Check both in so you can have consistent deploys. When you want to upgrade to the latest versions within constraints set by hand in composer.json, run composer update to pull latest versions, updating composer.lock. Run tests, and commit the new composer.lock if you are satisfied.

<comment><USER10> > The author's proposed method is basically the same as how php's composer > does it

Composer merely cloned Ruby's Bundler and its Gemfile/Gemfile.lock in that regard. Which is a good thing. It's beyond puzzling that Python has spawned multiple dependency managers, none of which have replicated the same golden path.

<comment><USER11> That it hasn't been adopted as a core functionality doesn't there isn't one, zc.buildout first stable release predates bundler's 0.3.0 by at least one year:

[https://pypi.python.org/pypi/zc.buildout/1.0.1](https://pypi.python.org/pypi/zc.buildout/1.0.1)

</comment></comment></comment><comment><USER12> The lack of separation between requested direct dependencies and a pinned resolved dependencies(including transitive) has been one of the great confusions for me learning Python. Having used Bundler, CocoaPods, Composer, and NPM before, which all have this separation builtin, pip feels broken.

However there are a few project that tries to solves this, but the fact that the Python community has not decided on one cripples any initiative to fix it.

<comment><USER13> I can second this, I wish every time I interact with pip that it was npm. I never appreciated the KISS approach npm uses of just dumping all the dependencies in local folder exhaustively until I visited Python versioning hell upon myself by not using a virtualenv (which is an ugly hack itself).

<comment><USER5> How does NPM do it? My requirements.txt looks like this and I've never had any problems:

      foo ~= 1.8.2
      bar ~= 2.4.1
      baz

(These are only requested dependencies, resolved are not specified).

<comment><USER12> I misspoke a little with regards to NPM. NPM has something called npm- shrinkwrap that allows you to lock resolved dependencies. It's used in many NPM projects and seems to be a standard chosen by the community.

I am not sure what ~= means in requirments.txt, but I'm gonna guess it means something like ~> or ^. With as system like that if everyone follows semver correctly we are fairly okay. The problem is that not everyone does and you have no guarantee that deploying the same code at two points in time t1 and t2 will produce the same application since one of the dependencies might have released new code.

</comment></comment></comment></comment><comment><USER14> I've been using pip-tools to manage my requirements. It allows you to specify a top-level requirements file, and from that it builds you a requirements.txt with specific versions and all dependencies. It has really streamlined my pip workflow.

[https://github.com/nvie/pip-tools](https://github.com/nvie/pip-tools)

<comment><USER15> Yep, I'm surprised no one knows about pip-compile. It does exactly as the OP suggests, but with the ability to specify a range of versions.

</comment></comment><comment><USER16> If you don't mind committing to Anaconda Python distributions, then you should simply use conda.

You can still pip-install things within a conda environment, and conda can manage more dependencies than just Python dependencies (a common use case is managing R dependencies for a Python statistical workflow).

You can do

        conda list -e > requirements.txt

then

        conda create -n newenv --file requirements.txt

to create a Python environment from the frozen requirements.

I believe that conda makes it easier to selectively update, but even if you don't enjoy those features of conda, the same two-file trick as in this post will work for conda as well, since you can use `conda update --file ...`. Conda's "dry-run" features are more useful than pip's as well.

The perfect feature for conda to add is the ability to specify alternative Python distributions, either by a path to the executable, or by allowing alternative Python distributions to be hosted on Binstar.

I can understand why Continuum wants conda to heavily influence everyone to use only Anaconda, but I think the goodwill of making conda work for any Python distribution would bring more to them than keeping it focused solely on Anaconda. (For example, I know some production environments that still use Python 2.6 and are prevented from updating to 2.7 -- and even if they did update, they'd need to keep around some managed environments for 2.6 for testing and legacy verification work).

<comment><USER17> I agree. Only used conda on a few projects just recently, so not too battle tested, but I've found it much easier to use, especially with "difficult" libraries.

</comment></comment><comment><USER18> Nice post as alway from Kenneth.

However, this workflow has a little drawback. If you have a dependency not from pipy, e.g. `pip install git+ssh://github.com/kennethreitz/requests.git@master`, it won't work.

<comment><USER14> I've given up trying to use vcs links as dependencies with pip. I deploy everything to an internal devpi server and use --extra-index-url

</comment></comment><comment><USER19> I would argue that the information in "requirements-to-freeze.txt" could simply be expressed in the "install_requires" list in setup.py. That is, the "general" dependencies (with only vague version information) should be in setup.py, whereas requirements.txt should pin the exact "guaranteed to work" versions. For small/non-commerical projects, requirements.txt may not even be necessary.

<comment><USER20> So, you use `python setup.py` instead of pip?

<comment><USER19> No...? AFAIK (and based on my daily experience), pip processes setup.py, so it definitely installs the dependencies listed there.

<comment><USER20> Ok, so you just skip the requirements file.

</comment></comment></comment></comment><comment><USER21> Pinto ([https://metacpan.org/pod/distribution/Pinto/lib/Pinto/Manual...](https://metacpan.org/pod/distribution/Pinto/lib/Pinto/Manual/Introduction.pod)) nails this problem in the Perl ecosystem:

Pinto has two primary goals. First, Pinto seeks to address the problem of instability in the CPAN mirrors. Distribution archives are constantly added and removed from the CPAN, so if you use it to build a system or application, you may not get the same result twice. Second, Pinto seeks to encourage developers to use the CPAN toolchain for building, testing, and dependency management of their own local software, even if they never plan to release it to the CPAN.

Pinto accomplishes these goals by providing tools for creating and managing your own custom repositories of distribution archives. These repositories can contain any distribution archives you like, and can be used with the standard CPAN toolchain. The tools also support various operations that enable you to deal with common problems that arise during the development process.

</comment><comment><USER22> The `pip-tools` utilities automate this nicely.

<comment><USER23> ... but it's notorious for not working on latest Python and pip.

<comment><USER24> A limitation you are not bound to cause they are open source.

<comment><USER23> So, I should learn the inner-workings of pip just to use a basic tool that exists both in Node.js and Ruby land and a dozen others?

<comment><USER24> Yes. Or, wait until some one else does.

This is how open source works. How do you think Node.js and Ruby got the capability? Do you imagine they sprout fully formed from hyperbole like "a dozen others".

<comment><USER23> I've been waiting, trust me. It's never been working with the latest pip, sorry!

</comment></comment></comment></comment></comment></comment><comment><USER25> With this workflow, what purpose does requirements.txt serve? Would the file ever be used directly?

Only thing I can think of is you'd track top-level packages in requirements- to-freeze.txt during development, while your deploy would use requirements.txt to get a deterministic environment.

<comment><USER26> That is indeed the idea.

</comment></comment><comment><USER27> What does "requests[security]" do? I don't remember ever using the bracket syntax.

<comment><USER28> Brackets are used to install recommended dependencies. See [http://pythonhosted.org/setuptools/setuptools.html#declaring...](http://pythonhosted.org/setuptools/setuptools.html#declaring- extras-optional-features-with-their-own-dependencies)

In the case of requests[security], it installs some extra packages that allow for more secure SSL. [http://stackoverflow.com/questions/31811949/pip-install- requ...](http://stackoverflow.com/questions/31811949/pip-install- requestssecurity-vs-pip-install-requests-difference)

</comment></comment><comment><USER29> >While the Method #2 format for requirements.txt is best practice, it is a bit cumbersome. Namely, if I'm working on the codebase, and I want to $ pip install --upgrade some/all of the packages, I am unable to do so easily.

$ pip freeze --local | grep -v '^\\-e' | cut -d = -f 1 | xargs ./venv/bin/pip install -U

Ought to be a first class command, though.

After running that the first thing I do is run the tests. Then I freeze, commit and push.

This is usually a good thing to do at the beginning of a new sprint so that more subtle bugs caused by upgrading packages can be teased out before releasing a new build.

For my projects that I release on pypi I don't want to use pinned dependencies, but for them I run periodic tests that download all dependencies and run tests so that I'm (almost) instantaneously notified when a package I depend upon causes a bug in my code (e.g. by changing an API).

</comment><comment><USER30> Another method is to use pip constraints to enforce package versions [https://pip.pypa.io/en/stable/user_guide/#constraints- files](https://pip.pypa.io/en/stable/user_guide/#constraints-files)

</comment><comment><USER31> I'm probably going to get downvoted to hell on this; but as a Rubyist who has been working on a Python project, I've been finding pip to be really weak against rubygems/bundler.

With RubyGems/Bundler I love the ability to point to github repos, lock versions (or allow minor/patch versions to update), have groups, etc.

requiresments.txt and pip just feels, awkward and weird. Especially when combined with virtualenv, in comparison to Ruby this is just stiff and strange.

I've had nothing but problems with more complex packages like opencv and opencl as well.

<comment><USER32> I am fairly positive you can do everything you have described. Just doing a quick google search returns the answers I need.

1\. Point to github repos. `pip install git+ssh://firstname.lastname@example.com/echweb/echweb-utils.git` [http://stackoverflow.com/questions/4830856/is-it-possible- to...](http://stackoverflow.com/questions/4830856/is-it-possible-to-use-pip- to-install-a-package-from-a-private-github-repository)

2\. Lock minor versions `Django>=1.3,<1.3.99` [http://stackoverflow.com/questions/6047670/pip-specifying- mi...](http://stackoverflow.com/questions/6047670/pip-specifying-minor- version)

What is a group? My google search did not turn up anything relevant.

<comment><USER33> The only bummer is that you can't declare git repos as project dependencies, AFAIK they have to be installed manually as you've described.[0][1] Does ruby handle this well? This is a real PITA when the Cheese Shop / Warehouse either don't have a particular project or only have an outdated version. In such cases you pretty much just have to create your own mirror.

FYI groups allow you to group various dependencies. E.g. you have one group of dependencies for development, another for testing, and a minimal one for production.

[0]: --process-dependency-links will permit you to pull in VCS repos as dependencies _locally_ , but it does you no good when distributing packages for third-party consumption

[1]: [https://groups.google.com/forum/#!topic/pypa- dev/tJ6HHPQpyJ4](https://groups.google.com/forum/#!topic/pypa-dev/tJ6HHPQpyJ4)

<comment><USER34> If you mean project dependencies as dependencies declared in the setup.py file, setuptools support the dependency_links option, which can include VCS links. So that shouldn't be a problem, albeit I believe it is frowned upon.

<comment><USER33> You have to pass pip the --process-dependency-links flag at install time (which is pretty shitty if users are expecting to be able to install from PyPi normally) and it will ignore your dependency links if it thinks there is a better package available at PyPi (e.g. some other package with the same name has a higher version or the GitHub repo has some critical bug fixes but still has the same version as the PyPi package). Sometimes you can fool it into working, but it's just been such an unpredictable mess that I've given up on dependency_links for software that's distributed to third-parties.

</comment></comment></comment></comment></comment><comment><USER23> I personally use requirements.txt for source and requirements.txt.lock, which I find more standard.

Or maybe use the pip tools' standard: requirements.in for source and requirement.txt for compiled at least.

</comment><comment><USER35> Hey, I have wrote Pundle to solve this problem! Idea is simple — we just have package to install other packages with versions freeze. Pundle maintaine frozen.txt alongside with requirements.txt.

What more — pundle does not use virtualenv and install all packages to user directory ~/.Pundledir and import frozen versions on demand.

It have all nice commands like install, upgrade, info etc

Check it [https://github.com/Deepwalker/pundler](https://github.com/Deepwalker/pundler)

</comment><comment><USER36> Vaguely related, I hacked together a little tool called Olaf[1] for people who like to pip freeze but also like to have multiple distinct requirements files like requirements-dev.txt – Needs a little work still but I've been using it on projects quite happily.

[1] [https://pypi.python.org/pypi/olaf](https://pypi.python.org/pypi/olaf)

</comment><comment><USER24> Instead of doing that manually, use pip-tools [https://github.com/nvie/pip- tools/](https://github.com/nvie/pip-tools/)

Some posts on theory and use [http://nvie.com/posts/pip- tools-10-released/](http://nvie.com/posts/pip-tools-10-released/)

<comment><USER3> He explicitly wrote: "I thought long and hard about building a tool to solve this problem. Others, like pip-tools, already have. But, I don't want another tool in my toolchain; this should be possible with the tools available." so it's not like he's not aware of pip-tools.

<comment><USER37> /me has commit access to pip-tools.

</comment></comment></comment><comment><USER38> We built Doppins ([https://doppins.com](https://doppins.com)) to be able to use pinned PyPI dependencies and/or ranges and still keep them up-to-date continuously. Still another tool, but it's quite quick to enable on a repository and doesn't require any maintenance afterwards.

</comment><comment><USER39> I found myself using tox for managing the general case of this. But the spirit to the blog is in the same direction.

</comment><comment> david-given I still find myself automatically thinking of _this_ PIP.

[http://www.shaels.net/index.php/cpm80-22-documents/using- cpm...](http://www.shaels.net/index.php/cpm80-22-documents/using-cpm/6-pip- utility)

</comment><comment><USER40> I would also suggest using anaconda if you are using python for science: [https://www.continuum.io/downloads](https://www.continuum.io/downloads)

It makes managing the python packages and even the python versions quite easy.

</comment><comment><USER41> like it or hate it, this is exact how its supposed to be done.

<comment><USER42> That doesn't mean its the way it should always be done though.</comment></comment>


First Analysis of Nokia-Microsoft Alliance - Wow this is good for Microsoft - <AUTHOR> http://communities-dominate.blogs.com/brands/2011/02/first-analysis-of-nokia-microsoft-alliance-wow-this-is-good-for-microsoft.html

<comment><USER2> "The N97 coulda been an iPhone killer and the N8 and E7 all exhibited potential they might have been big... if Nokia ever really put their mind to it, they coulda crushed the iPhone"

I'll have two of whatever this guy is having.

Nokia doesn't just have a problem with _execution_ it's not just about a features check list of touchscreen, appstore, music and gaming.It's about the attention to detail and ruthless application of quality in hardware build, software and UI. Nokia never even came close.

<comment><USER3> > It's about the attention to detail and ruthless application of quality in > hardware build, software and UI.

Nokia is traditionally a leader in those fields for the low end market.

<comment><USER4> On several occasions I've had feature phones built by nokia, including one I just happened to pick up a few weeks ago.

I find that the UIs have become less intuitive and ever more maddening over the years, with the latest one being a good example.

Build quality is fine for a plastic phone. Screen resulution- well it is a feature phone. But look of the UI is poor, and the discoverability of the UI is extremely poor.

All that said, you may well be right - they may still be a leader for the feature phone market, and thus that means the others are much worse.

<comment><USER5> If you read jacquesm's blog post, he mentions the Nokia 2110.

That thing was an F-in' _beast_. I had friends in high school who wanted their parents to buy them new phones try to destroy Nokia 2110's (or maybe it was one of the later Nokia bricks) and just _fail_. You wash it? No problem. You throw it down the stairs? No problem. You _run it over with a car_ , no problem.

With my Android phone, which frequently and bafflingly fails to function (randomly changes ring tones, stops receiving incoming calls, battery life drops under 10 minutes) I look back fondly on the days of the indestructible Nokia 2110.

It's been a while since I bought a Nokia phone, but if they put out an ad that said: "Remember this?", followed by someone running a 2110 over with a car and making a call, "Well check _this_ out!", followed by someone running a Nokia WP7 phone over with a car and checking their e-mail, I would buy the _shit_ out of that phone.

Anyways, not really insightful, just the brand impression that Nokia has on this consumer.

</comment></comment></comment></comment><comment><USER6> This article seems to miss the fact that Nokia are planning to continue with MeeGo development.

<comment><USER3> This comment seems to miss the fact that MeeGo development is probably doomed anyway.

<comment><USER6> The article treats MeeGo and Symbian synonymously, even though Nokia's announcement puts Symbian on a 2yr gang plank and says MeeGo is to be actively developed.

MeeGo development probably is doomed because Nokia is expected by its shareholders to cut R&D overheads, and the current plan doesn't look like doing that. I'm surprised that Nokia still is putting some of its weight behind it. The article seems oblivious to this point.

</comment></comment></comment><comment><USER7> How can this benefit Microsoft and not Nokia? If it sells a bunch of WP7 Nokia devices, then surely Nokia are making money out of it as well.

</comment><comment><USER4> This article is probably the best analysis of the situation I've seen. I really do think that this is a wedding, and thus nokia is probably going to go the way of microsoft.

In short, I bet in 10 years both companies will be less relevant than they are now. (though I do have an open mind about phone 7, I just don't think either company has competent management.)</comment>


Hackathon Accidentally Picks Perfect Metaphor for Its Own Awfulness - <AUTHOR> http://www.jwz.org/blog/2014/07/hackathon-accidentally-picks-perfect-metaphor-for-its-own-awfulness/ <comment><USER2> This is solely a link to [http://valleywag.gawker.com/hackathon-accidentally- picks-per...](http://valleywag.gawker.com/hackathon-accidentally-picks- perfect-metaphor-for-its-o-1605503368) , which is from a banned domain on HN. (the article itself has good points)

<comment><USER3> Why is Gawker banned here? Are other properties of theirs banned as well, such as Gizmodo? I've tried in the past to submit a couple of Gizmodo articles with no success. I know that they are generally not written in a way that would be welcome here, but every once in a while they have some great original writing that I think is interesting.

<comment><USER2> gawker.com is banned because it's gossipy, which means that the subdomain valleywag.gawker.com is also banned.

I _believe_ Gizmodo and other Gawker properties are not banned. (there was a Gizmodo submission 7 minutes ago: [https://news.ycombinator.com/item?id=8043765](https://news.ycombinator.com/item?id=8043765))

</comment></comment></comment><comment><USER4> Reminds me of Moxie Marlinspike's "The Money Machine": [http://thoughtcrime.org/stories/money- machine/](http://thoughtcrime.org/stories/money-machine/)

<comment><USER5> Loved that post.

</comment></comment><comment><USER6> As a European there seems to me that there is an anti-meritocracy trend in America right now. Could anyone explain if and why this is so?

<comment><USER7> As an American, I am equally puzzled.

We've had decades of sociopolitical groups pushing "social equality & justice", grossly summarized as eliminating any reason one person should have something while another should not. Much of it is valid (overcoming abject discrimination based on race, disability, gender, etc) but as those problems are solved, smaller issues are magnified into the same intensity & rhetoric, asymptotically approaching a demand for absolute equality in all things. As such, this manifests as a "war on meritocracy", whereby nobody should have "more" than anyone else for any reason whatsoever. I'd theorize that it's a combination of good intentions gone wrong, leaders having to "continue the fight" lest they work themselves out of a job thru success, ad-driven culture taught to want everything for nothing, frustration of efforts not reaping tacitly promised rewards, and straight-up greed.

Odd, as it wasn't long ago that hard work was the dominant ethos. Now it's an awful lot of "get mine" by making up excuses to take someone else's.

[downvotes commence]

<comment><USER8> I'm an American too; I don't see this happening. Straw Man.

<comment><USER7> A very large fraction of my paycheck is confiscated & "redistributed". It's happening.

<comment><USER9> Most likely it would've been a larger fraction at almost any point in the last 60 years.

Whether you like it or not, you derive innumerable tangible benefits from living in American society, in no small part because generations before you paid for it. You're probably white, male, hetero, relatively young, and relatively healthy, and none of the advantages which accrued to you because of that are due to your life choices. Arguably, you have the sense of entitlement exactly backwards.

</comment></comment></comment></comment></comment><comment><USER10> I'm pretty sure that's not an accident.</comment>


Breakthrough solar cell captures CO2 and sunlight, produces burnable fuel - <AUTHOR> https://news.uic.edu/breakthrough-solar-cell-captures-co2-and-sunlight-produces-burnable-fuel <comment><USER2> "Nanotechnology" again. It's just surface chemistry, people. It's nice that they can do this in the lab, but as usual, the PR is excessive. "The ability to turn CO2 into fuel at a cost comparable to a gallon of gasoline would render fossil fuels obsolete." At least get to pilot plant stage before issuing statements like that.

Especially since UC Berkeley announced a similar breakthrough last year.[1] Wikipedia points out that artificial photosynthesis was first achieved in 1912, and some of the same claims were made back then. There are lots of artificial photosynthesis projects. One of the best was in 2011, the first "artificial leaf"[3]. It ran for 44 hours.

The usual questions apply. How efficient is this? Does the catalyst get used up, or crud up with contaminants, and if so, how fast? What limits the life of the system? What are the costs like? (Excessive catalyst cost has been a problem.) Is this better than all the other groups doing similar work?

Artificial photosynthesis may be useful someday, but this probably isn't the big breakthrough that makes it a commercial product. That may come, though.

[1] [http://newscenter.lbl.gov/2015/04/16/major-advance-in- artifi...](http://newscenter.lbl.gov/2015/04/16/major-advance-in-artificial- photosynthesis/) [2] [https://en.wikipedia.org/wiki/Artificial_photosynthesis](https://en.wikipedia.org/wiki/Artificial_photosynthesis) [3] [https://www.acs.org/content/acs/en/pressroom/newsreleases/20...](https://www.acs.org/content/acs/en/pressroom/newsreleases/2011/march/debut- of-the-first-practical-artificial-leaf.html)

<comment><USER3> > as usual, the PR is excessive

I think articles that over hype lab results make it to the top of HN because there is no downvote button and flagging them doesn't seem appropriate. I wish there was a "meh" option.

<comment><USER4> Or just a "Bullshit" option.

<comment><USER5> With the majority of articles about cutting edge science, very few HN readers would be qualified to state whether or not it's a breakthrough or bullshit. The option would protect HN from the bullshit, but it'd also hide the breakthroughs that people believed too good to be true. I think that'd be an overall drop in the quality of what we read here.

<comment><USER4> You're not wrong, but maybe on HN at least many of those people can be counted on not to vote out of reflex, unless they do really bring something to the table.

The other simple, sad fact is that the big breakthroughs that have some initial traction issues stick around. Often people point to the very early history of SR/GR, but it's worth pointing out how that turned out. When a shocking breakthrough is actually a shocking breakthrough, it ends up producing results that speak for themselves.

Until then, when it comes to extreme claims, so many more are just "bullshit" than "breakthrough". Our lives are finite, so it's not wise to ignore the role of triage in those lives.

</comment></comment></comment></comment></comment><comment><USER6> From the title I thought the article was going to be a sarcastic description of plants.

<comment><USER7> Even if it's completely inorganic, plants (or algae cultures, etc) are a necessary comparison for anything like this, but that never seems to come up. It's like announcing the invention of the motor car without comparing it to a horse.

<comment><USER8> > _Even if it 's completely inorganic, plants (or algae cultures, etc) are a > necessary comparison for anything like this, but that never seems to come > up._

Probably that's because plants are typically only 2-3% efficient when it comes to their use of sunlight, and then it's still a long way (energetically and logistically) to usable fuel or electricity. Plants are really not a good comparison benchmark here.

<comment><USER9> Given that we are currently using plants such as corn to make biofuel (at an industrial level, not just in the lab), I think it's actually a very valid comparison.

</comment></comment></comment></comment><comment><USER10> Can anyone comment in a knowledgeable way about the chemicals involved?

1\. tungsten diselenide

2\. an ionic fluid called ethyl-methyl-imidazolium tetrafluoroborate

Just offhand I see selenium in #1, and fluorine and boron going into #2. There's some expense there, and some handling and exposure dangers. If you have a lot of these cells around, are there public health dangers either in handling or in disposing/recycling old ones?

<comment><USER11> WS2 should be a relatively inert wafer/flake, the desirable property is the so-called van Hove singularity in the electronic density of states that makes it ideal for solar cells.

</comment></comment><comment><USER12> Key facts:

> In fact, he said, the new catalyst is 1,000 times faster than noble-metal > catalysts — and about 20 times cheaper.

> The combination of water and the ionic liquid makes a co-catalyst that > preserves the catalyst's active sites under the harsh reduction reaction > conditions,

No mention of efficiency compared to photovoltaic cells.

<comment><USER13> The efficiency is around 4%, as in Figure 2 from the paper. SFE is solar-to- fuel efficiency.

From the paper, " We also calculated the solar-to-fuel conversion efficiency (SFE) for our photochemical process (Fig. 2C), obtaining a value of ~4.6% limited by the maximum efficiency of the PV-a-si-3jn cell (~6.0%) (13, 20). This SFE is higher than that of the water-splitting reaction (~2.5%) previously measured using an identical triple-junction photovoltaic (PV-a- si-3jn) cell (20). "

[https://d2ufo47lrtsv5s.cloudfront.net/content/sci/353/6298/4...](https://d2ufo47lrtsv5s.cloudfront.net/content/sci/353/6298/467/F2.large.jpg)

<comment><USER14> For comparison, most crop plants get 1-2% solar to biomass efficiency on the high end.

</comment></comment></comment><comment><USER15> This development is exciting, but the complexity of the chemicals involved looks scary. I wonder if it will impede the adoption. Anyone with the domain expertise to comment on this?

</comment><comment><USER16> This is wonderful!

We're surrounded by life forms that turn water, CO2 and sunlight into energy. I figure there must be _some_ way to harness this process.

I wonder how much power a large tree takes in from its leaves. If we could interface with its root system, perhaps we could extract newly created starch, and either store it or burn it off.

Image a huge concrete power plant with large trees growing out of it.

<comment><USER17> No, that's not likely to happen. Photosynthesis is pretty inefficient, typical plants have a radiant energy to chemical energy conversion efficiency between 0.1% and 2%. Most commercially available solar panels have more than 10 times this efficiency.[1]

[1] [http://physics.stackexchange.com/questions/109739/is- plant-p...](http://physics.stackexchange.com/questions/109739/is-plant- photosynthesis-more-efficient-than-solar-panels)

<comment><USER18> Sure, but I bet your solar panels don't manufacture and maintain themselves.

To the GP's point, the total cost of ownership of a plant that makes gasoline- level fuel is going to be more about water and land than anything else.

But the efficiency of solar panels, considering their subsidies, the rare minerals used in their manufacture, their delivery and their maintenance... I'm confident it's a lot less than e.g. coal, even accounting for pollution costs, because if it really were cheaper all-around we'd be using it everywhere!

<comment><USER19> >> "don't manufacture and maintain themselves"

Well, for any kind of industrial operation you'll want to plant the trees.. then there is the 10-20 year growth period that's kind of a problem for planning flexibility.. and then you need to chop them down and move them to the power plant which is a non-trivial and costly logistical constraint.

All the while the solar cell sits there and produces energy without any intervention. That's a big difference.. Also, wood does not scale well, there is just so much space for forests.

<comment><USER20> Solar cells don't _just_ sit there without intervention, and have larger up- front capital and labour costs than planting an orchard, or more appropriately, fuelwood or timber forests. And have a lifespan of 20-25 years.

Plants are a pretty neat technology, all told.

<comment><USER21> I dont know how much they differ but planting trees has lots of cost. I estimate the cost of planting is something like $3 per surviving tree. (Cause you usually over plant assuming many will die).

<comment><USER20> Depends on the tree.

For some forestry applications, seeding is done from the air.

Note that if you're growing wood for fuel, you're not worried about grafting stock, or the net health (much), or overcrowding (you can thin later if necessary), etc.

Planting _orchards_ is, as it happens, pretty expensive. But that's also a pretty high-end case, and the expected life is generally 20-50+ years. Upwards of 300 in cases (olives, grapes, and citrus).

<comment><USER21> I was not referring to orchards, but for regular logging industry. Those cycles are about 60-80 yrs between harvests.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER22> paper: [http://science.sciencemag.org/content/353/6298/467](http://science.sciencemag.org/content/353/6298/467) (paywall), but it's available on sci-hub.cc

<comment><USER23> [http://science.sciencemag.org.sci- hub.cc/content/353/6298/46...](http://science.sciencemag.org.sci- hub.cc/content/353/6298/467)

</comment></comment><comment><USER24> One way to make a system like this one more efficient/cost effective would be to draw the CO2 from ocean surface water which has a much higher concentration than the atmosphere, depending where you are in the world.

<comment> semi-extrinsic Flue gases with a high CO2 content are better than cheap; people will actually pay you to get rid of them. And we have a lot of them (this is kind of the problem in the first place). If you look at something like the exhaust from an oxyfuel turbine, you can get 70/30 N2/CO2 with relatively high purity.

For this reason, I'm always skeptical of atmospheric capture projects. It's just got to be more efficient to capture from a mixture with 20% (or more) CO2 than from a mixture with 0.04%.

<comment><USER25> Actually if the CO2 absorbent is efficient it is not much harder to capture CO2 from the atmosphere than from flue gas. The key really is the CO2 flux rate which wind provides.

The real advantage of atmosphere capture is you can do the capture where the cost is lowest, not where the CO2 is emitted.

<comment> semi-extrinsic > The key really is the CO2 flux rate which wind provides.

Indeed. This brings us to the issue of volumes. A useful carbon capture plant needs to capture at least 100 000 tons of CO2 per year (then we need "just" ~ 10 000 such plants). This means each of these minimal plants has to process an air volume of 250 billion cubic meters of air per year. At an air speed of 1 m/s (you can't flow too fast or there is no time for reaction), and assuming a wildly optimistic 50% capture from the filtered air, you need a reaction area of over 15 000 square meters.

Mind you, that's the area of the membrane which processes air. Add the auxiliary stuff around it, you can add at least another factor of 100 to the area, so each of your 10 000 plants have to be 1.5x the maximum planned size of the Tesla Gigafactory. And we're being optimistic.

<comment><USER26> Couldn't the membrane be folded or stacked so you achieve that amount of surface area in a far smaller floorplan footprint?

<comment> semi-extrinsic If I understand it correctly, all the membrane area has to be exposed to direct sunlight.

</comment></comment></comment></comment></comment></comment><comment><USER27> So it's 20x cheaper than the noble gas version — what's the absolute cost? I assume it's not cheaper than pumping fossil fuels yet, but I'm curious to know how far away it is.

<comment><USER28> Yeah, this sentence in the middle of the article:

> The ability to turn CO2 into fuel at a cost comparable to a gallon of > gasoline would render fossil fuels obsolete.

Doesn't actually say that this _is_ at a cost comparable to a gallon of gasoline :)

Sly words.

<comment><USER27> It would be pretty shocking if it was already cost comparable, of course :-).

<comment><USER29> Sure, but there is a big gap between "we can see a path to getting there with mass production" and "sure would be nice, wink"

</comment></comment></comment></comment><comment><USER30> In addition to lack of performance numbers, they misstate the amount of sunlight hitting earth by a factor of 10- it's supposed to be 1000 W/m2, not 100.

<comment><USER31> If you look at the (random) chart I found here[1] some places in the US are getting 6 - 7 sun hours (hours of insolation) so 7000 / 24 = 291 watts / square meter / day. So using a figure of 100 is quite reasonable when you consider that lots of places don't get that much sun.

1\. [http://www.solarpanelsplus.com/industry- professionals/insola...](http://www.solarpanelsplus.com/industry- professionals/insolation-charts/)

<comment><USER7> Insolation is usually given as peak power with no clouds or other shade when talking about solar panels (unless you specifically say you're talking about average power over a 24hr period). I think it's probably just a typo in the article.

</comment></comment></comment><comment><USER32> Isn't it counterproductive to turn it into fuel to be burned? It seems like that would leave us at best at no net new carbon dioxide, when we really should be sucking CO2 out and sequestering it away. How about we turn it into bricks or something...

<comment><USER33> It's counterproductive in the sense that you'd be guaranteed to reduce carbon emissions more (globally) if you were to instead just not burn fossil fuels at all. If you took the solar cell part and just used that electricity to displace carbon fueled power plants, you'd end up ahead.

That said, for a little while at least, having liquid fuels is inherently given a bonus relative to electricity only. Of course, you can just make those from the original fossil fuel sources as well...

Honestly it seems like a bit of a mess since each team solving problems locally rarely has all the expertise needed to see the impact globally. I certainly don't, though I've been studying it for many years.

I very much appreciate that things like the CA-GREET models have been trying hard to make it easier to apply wide systems analysis expertise to understand a small part of the overall system without spending years doing the math. But probably it will end up needing to be solved by AlphaGo...

</comment></comment><comment><USER34> Interesting that it's a combination of hydrogen and carbon monoxide that it produces. Wonder what the safety implications are.

<comment><USER35> As it says in the article:

"the artificial leaf delivers syngas, or synthesis gas, a mixture of hydrogen gas and carbon monoxide. Syngas can be burned directly, or converted into diesel or other hydrocarbon fuels."

Hydrogen and carbon dioxide are the feedstocks for the Fischer-Tropsch process, which produces conventional hydrocarbon fuel:

[https://en.wikipedia.org/wiki/Fischer%E2%80%93Tropsch_proces...](https://en.wikipedia.org/wiki/Fischer%E2%80%93Tropsch_process)

In other words, H2 and CO are _exactly_ what you want!

<comment><USER36> Probably also worth noting that syngas is the primary input for the Haber- Bosch method used to generate the ammonia feedstock for most of our synthetic fertilizers. If you just take the CO and pump it underground then you are actually producing fertilizer for agriculture using a carbon negative process.

<comment><USER37> > ... take the CO and pump it underground then you are actually producing > fertilizer for agriculture

Interesting. How does the CO fertilize the plants?

<comment><USER38> I assume he meant carbon sequestration.

<comment><USER36> Yes, my prose was a bit less clear than I had intended. You can oxidize the CO and be carbon neutral or sequester it and be carbon negative.

</comment></comment></comment></comment></comment></comment><comment><USER39> I'd love to see how this would work in my use case. I enjoy brewing alcohol and if I could capture and tap into that with a system like this I'd probably get a better yield then the average user.

It would be cool.

</comment><comment><USER40> Another interesting concept from Daniel Nocera a few years ago (Sun Catalytix), seemed to be full of promise as this one.

[http://www.forbes.com/sites/michaelkanellos/2014/08/26/mit-c...](http://www.forbes.com/sites/michaelkanellos/2014/08/26/mit- curse-part-ii-lockheed-martin-scoops-up-sun-catalytix/#287da5446da8)

It looks like these great promises never quite reach the level where they can get to market and create the impact they claim. Trust me, I really wish it were different, and I root for each and evey one of them to succeed. Maybe military and big corp. snatch the tech before they reach consumers (most likely).

</comment><comment><USER41> This is good finding, but anything substantial will take some time to materialize. But good we are trying to find ways to suck the excess CO2 from the atmosphere.

</comment><comment><USER42> One of these days, some cleverclogs is going to present to the press a black box that stores electrical charge (and even gives back almost all of it when asked politely) with an energy density almost as good as liquid fuels.

If he can shut up about it containing liquid fuels that are synthesized on the spot, they'll eat it up and hail the finding of the battery holy grail.

</comment><comment><USER43> I think what would make for a larger breakthrough is a process which produced a replacement of cement aggregates from air or sea water at gigantic industrial scales.

</comment><comment><USER44> I wonder what the effeicency is compared to growing and burning trees (which of course, also capture CO2 and sunlight and turn them into burnable fuel).

</comment><comment><USER45> I don't want to poo-poo this achievement, but is another burnable fuel really what we want at this point?

<comment><USER17> I'm going to say yes, very much so.

Remember the carbon here is coming from the atmosphere, so it's carbon neutral and won't contribute to climate change.

If the process can be scaled up to produce a gallon of gasoline for less than the costs of extracting crude from the ground and refining it - then it will quickly kill off new investment into the fossil fuel extraction industry. As opposed to alternate energy technologies, like electric cars which will take a long time to replace internal combustion engine cars. It would use all of the existing infrastructure, so all it has to be is cheaper for market forces to work their magic.

That's a very big IF, however, so don't get your hopes up.

</comment></comment><comment><USER46> I can think of another way you can take sunlight and CO2 and produce a burnable fuel...

</comment><comment><USER47> You mean growing trees for wood fuel...

</comment><comment><USER48> > Breakthrough solar cell captures CO2 and sunlight, produces burnable fuel

Is it called "A Tree"? Those things are ancient!

</comment><comment><USER49> Is it scalable to drive a Car?

</comment><comment><USER50> Add unsweetened shebenchnach. C

</comment><comment><USER51> How many times per year do we see this? I'll give a shit when I can buy a panel of these cells off Amazon.

</comment><comment><USER52> More `burnable fuel` doesn't seem to be part of any answers to climatic change though.(haven't read the whole article yet)

</comment><comment><USER53> > Authors: Mohammad Asadi, Kibum Kim, Cong Liu, Aditya Venkata Addepalli, > Pedram Abbasi, Poya Yasaei, Patrick Phillips, Amirhossein Behranginia, José > M. Cerrato, Richard Haasch, Peter Zapol, Bijandra Kumar, Robert F. Klie, > Jeremiah Abiade, Larry A. Curtiss, Amin Salehi-Khojin

I wonder how many of the scientists who made this discovery would be banned from entering the United States by Donald Trump and the Republican Party.

<comment><USER54> Don't know of course, though it appears to be a "diverse" group who worked on the project. The salient point is Trump has made it clear he was talking about _illegal_ entrants and _delaying_ entry for individuals coming from areas where terrorism is endemic, until a vetting process is established. There are a great number of professionals from Muslim countries regularly admitted who contribute to American society and culture and that would not change.

<comment><USER55> > and delaying entry for individuals coming from areas where terrorism is > endemic, until a vetting process is established.

I hate to even further the discussion on this off-topic subject, but the above is simply not true. Here is the official statement (still published in it's original form) directly from Donald Trump's website:

> Donald J. Trump is calling for a total and complete shutdown of Muslims > entering the United States until our country's representatives can figure > out what is going on.

This is a far cry from "individuals coming from areas where terrorism is endemic". Regardless of your stance on politics, what that statement suggests is blanket discrimination based on religious belief.

[https://www.donaldjtrump.com/press- releases/donald-j.-trump-...](https://www.donaldjtrump.com/press- releases/donald-j.-trump-statement-on-preventing-muslim-immigration)

<comment><USER54> Well, it appears to be policy in evolution. I based my comment on what Trump has said in his most recent appearances, and quite credibly that's not yet reflected in the online published material.

Realistically campaigns of all stripes frequently change positions and policy is hardly set in stone. I expect we'll witness numerous "corrections" from all candidates as the election season moves along.

BTW during the Republican and Democrat conventions just concluded, both candidates mentioned policies of this kind. It might be worth the effort to listen to both party's candidates' acceptance speeches since that would represent their current positions.</comment></comment></comment></comment>


Visualization of 2000 yellow press covers about the Brexit - <AUTHOR> https://www.zeit.de/politik/ausland/2020-01/brexit-britische-tabloids-grossbritannien-zeitungen-titelbilder <comment><USER2> This misses the whole point of Brexit, even so many years later. You don't have to look at tabloid covers to understand Brexit, you have to understand the fundamental grievances of the opposition that were ignored and even inflamed for decades.

It is rather ironic that the "democracies" which are by all objective measures not self-governing democracies at all, are being consumed by an inherently anti-democratic organ of sham and facade democracy called the EU that has utter contempt for the people it lies about representing; while the monarchical system of the UK is choosing self-governance and a form of democratic governance that at least purports to respect the people.</comment>


Tech's long hours are discriminatory and counter-productive - <AUTHOR> https://medium.com/@racheltho/techs-long-hours-are-discriminatory-counter-productive-17dc61071ed5 <comment><USER2> But there are plenty of jobs in tech that don't expect you to be super productive and work very long hours - it's just not the elite $250k++ plus stock options jobs where you're working on the exciting stuff. I know plenty of people in tech that do 35-40 hours / week. They can't retire on their savings after three years though.

</comment><comment><USER3> No, the discrimination could be directed at people who refuse to work the additional overtime, or it could be the reverse; employees are given an infinite amount of work or short deadlines to complete tasks.</comment>


Facebook, Google, Amazon and Microsoft Are About to Eat Telco's Lunch - <AUTHOR> https://tommakau.com/2019/11/14/facebook-google-amazon-and-microsoft-are-about-to-eat-telcos-lunch/ <comment><USER2> These efforts are very cool, and it will be a boon for the countries they will be serving but I do like the fact that there are still places on Earth where you can go and are essentially cut off from the internet connected world. I guess there's only a few more years where that will be the case :/

<comment><USER3> Oh, don't worry, just come to Germany :-)</comment></comment>


Our Magic - <AUTHOR> http://instacart.com/blog

<comment><AUTHOR> For anyone comparing us to Webvan - we are different. I've shared why that's the case several times before (google instacart). But, I think pictures speak louder than words:

Instacart: <http://imgur.com/2tWWh> Webvan: <http://minus.com/l2Mq5zUpwCP6E>

<comment><USER2> That you are no-one and they are a big company,mature and well organized? This is what I got as a person how know nothing about both. And I am not sure that is a point for you.

<comment><USER3> C'mon that's just not fair.

The point is, in case you truly didn't get it, is that these guys are a scrappy start-up (which, we hope, isn't burning money into a fiery pit of despair), and Webvan is a too-big-for-its-britches lumbering incumbent.

Good luck guys - Instacart seems like it's got amazing potential and I hope you guys do wonderfully.

<comment><USER4> It is totally fair. People (especially in the valley) tend to think small is better/more efficient than big. But what are the statistics on actual failure rates?

Start-ups that 'succeed' (buyouts, etc) for their founders can still fail before making any real difference in the actual marketplace.

Nothing against Instacart, but that first picture must become like the second before history will call them 'successful'

<comment><USER5> I think the point of the image is more that starting small makes them less likely to fail SPECTACULARLY. There is zero chance that Instacart will lose $830 million before it sees traction, which is what happened to Webvan. If Webvan had just been a small grocery startup, nobody would have cared if it failed.

Also, "historically notable" is a pretty high bar you're setting.

Finally, I'm sure Instacart hopes to reach that kind of scale eventually. But they don't want to start there because again, that's how you fail spectacularly and lose tons of money without giving people something they want.

</comment></comment></comment></comment></comment><comment><USER6> I think Instacart is a fantastic concept / service but for me it doesn't come without some internal conflict. When I was in grad school and didn't have a car, it was a huge pain to go grocery shopping. I had to bike a mile to the nearest grocery store and I could only fit a few items in my backpack. On top of that, it would rain often (thank you Florida), making the whole experience absolutely miserable. I always wished there was some service that could do "maintenance shopping" for me and always deliver the weekly essentials. I thought the same about laundry as well.

Now that I have a job and live a few blocks from the nearest store and have a car, is it right to _pay someone else_ to do my shopping for me? Am I really that lazy? Do I really value other's time less than my own? I have often pondered these questions ever since services like Taskrabbit started and I saw people (able-bodied 20-somethings) using TR to do things like screw new light bulbs in.

So I'm not saying services like this shouldn't exist, because there is clearly a need...but I worry about what it means for our culture.

<comment><USER7> The entire purpose of the modern economy is to pay other people to do things so you don't have to do them yourself. Did you build your house from trees that you chopped down yourself? Do you grow all your own food? Do you cut your own hair?

If you think it's worthwhile to do your own grocery shopping, then you may do so. But there's nothing wrong with paying someone else for a service.

<comment><USER6> You presumably pay people for their skillsets. Screwing a light bulb in or doing your grocery shopping doesn't require a special skillset. There are some tasks that just aren't in the same ballpark as building homes, growing food, and cutting hair, and I think shopping is one of them.

</comment></comment></comment><comment><USER8> Good for them - I use Instacart at least weekly and it's a fantastic service. I really hope it's sustainable, as same-day delivery services have had trouble in the past. Launching in the valley where people will pay to have more time was a great idea, but I anticipate a long road ahead when it comes to middle America.

</comment><comment><USER9> Great service. Makes shopping for groceries a cinch. My only qualm is that they're not serving NYC yet. Hopefully this funding means fast expansion!

<comment><USER10> NYC has FreshDirect though... How does this compare?

<comment><USER9> Instacart has same day (3 hour and 1 hour) delivery options. Freshdirect is next-day. As a startup founder, this kind of flexibility is great. Instacart also has a slick mobile app, which is a more pleasurable shopping experience.

<comment><USER3> FreshDirect is next-day at BEST. I've tried to order and have been limited to 2 days later at odd hours. I suppose that's a result of their success, but certainly something to be aware of and optimize against.

</comment></comment></comment></comment><comment><USER11> Can someone explain how the economics of scaling this type of business works now in 2012 when it failed in 2001? (most famously, Kozmo). I thought the problem was that the all-in cost of delivery was greater than the flat delivery fee added to each purchase. What's the trick to make this type of business work now?

</comment><comment><USER12> Maybe this time around the business can be profitable at scale. What few people know/remember is that Kozmo, despite ultimately burning large amounts of money, was profitable in three cities right before they shut down.

I love Instacart, I use it almost every day! Glad to see some big name investors agree.

<comment><USER13> The last month Kozmo was up I spent over $300 on their service. Their closure was a huge disappointment for me.

</comment></comment><comment><USER14> Focus on Trader Joe's. Their stores are smaller and easier for your shoppers to get in and out of, with a much more concise number of items. People trust the brand and are much more likely to try something out just by seeing and reading about it. Trader Joe's = Big time success.

<comment><USER15> I was thinking that as well but I'm wondering if TJ's customers are so thrifty that they might not be so excited about a $10 or $20 delivery fee.

</comment></comment><comment><USER16> In the UK the supermarkets offer a delivered groceries service themselves. Is this something that US supermarkets don't offer? Or is Instacart's selling point the rush delivery?

<comment><USER17> Maybe something like that does exist in the US, but I've never heard of it. Very few businesses deliver; pizza, sandwiches, Chinese food. That's about it.

</comment></comment><comment><USER18> Nice Hack Apoorva. I still remember reading an article about the great hustle u made to get in YC.

I also plan to integrate Instacart in one of my features, and see how it can happen. Applied to YC this batch. What you think ?

</comment><comment><USER19> Fantastic news guys! I use it every time I'm in San Francisco, and I can't wait until it's more ubiquitous.

I also love that you guys have an Android app now. Makes it much more accessible!

</comment><comment><USER20> I wonder how it works with regards to the logistics, what items are in stock at what price, which stores participate ... ?

</comment><comment><USER21> Congratulations, Apoorva! I've used Instacart a few times now and it's very intuitive and straightforward.

</comment><comment><USER22> Nice work Apoorva!

</comment><comment><USER23> The 3 hour option is really reasonable.

</comment><comment><USER24> How is this different than Webvan? <http://en.wikipedia.org/wiki/Webvan>

<comment><USER25> Webvan maintained inventory/warehouses. The modern equivalent is Amazon Fresh ( <http://fresh.amazon.com/> ). Instacart is more like an Exec/Taskrabbit model. Their inventory/warehouse is your local grocery store. They pay drivers to go grab stuff there and bring it to you. So not terribly different in value prop, but pretty wildly different in terms of business model.</comment></comment>


Ask HN: A widely used marketing company is scamming startups. What to do? - <AUTHOR> There's a company that promises startups to find them people who express interest some topic or product and fit some firmographic or demographic criteria. They sell these sales leads at $50-100 each with contracts starting at $10,000 minimum.
I discovered that they're acquiring these leads in a very different way than they represent to their customers. Rather than finding people who will opt-in to hearing from the startup (in exchange for some content), they acquire/create/search a list of non-opted-in contacts and then cold call them just to verify their info. Once the info is verified, they pass that lead to the startup. Essentially they're taking contact information--which could be bought for $1-2--making a cold call to verify basic info, then selling that contact information to the startup for $50-100 and letting them believe that the person submitted their own information and wants to hear from the startup.
They don't tell the startup how they're really acquiring the leads. I only found out after many demands for evidence (and finally getting phone recordings of the cold calls) and following up with the leads myself to ask them what happened.
Three of my clients have already been misled by this company, until I directed them to end the contract. My concern is there are many other startups being scammed like this. How can I help them avoid or escape this scam without putting myself in legal jeopardy? <comment><USER2> Review on google and other review sites ?</comment>


A Quick Puzzle Sheds Light on Problem Solving - <AUTHOR> https://www.nytimes.com/interactive/2015/07/03/upshot/a-quick-puzzle-to-test-your-problem-solving.html <comment><USER2> One of 10 times this has been submitted over the years: [https://hn.algolia.com/?query=%22A%20quick%20puzzle%22&sort=...](https://hn.algolia.com/?query=%22A%20quick%20puzzle%22&sort=byPopularity&prefix&page=0&dateRange=all&type=story) .

</comment><comment><USER3> What a great test for a hiring a QA person.

<comment><USER4> In a similar vein, made me think of writing test cases. You want to find the failures, they're part of it working the way you expect.

For anyone used to that sort of process hearing the "no"s isn't so bad at all.

</comment></comment><comment><USER5> Every tester should make this test.</comment>


McCarthy 91 function - <AUTHOR> https://en.wikipedia.org/wiki/McCarthy_91_function <comment><USER2> How does this formula help us in life?</comment>


Show HN: Hydra – Open-Source OAuth2 Server - <AUTHOR> https://gethydra.sh/hydra-1.0-stable-release <comment><USER2> In my research, Hydra is the only OSS OIDC server implementation that is built from the start in a modern, containerized manner.

<comment><USER3> [https://identityserver.io/](https://identityserver.io/)

[https://fusionauth.io/](https://fusionauth.io/)

[https://www.keycloak.org/](https://www.keycloak.org/)

[https://www.gluu.org/](https://www.gluu.org/)

Basically all of them can run in a container, it's just hosting a few endpoints and generating tokens. The complexity is in the protocols and not the app. Some of them offer a user database as well and might require a SQL DB connection.

<comment><USER4> The difference is probably between "can be made to run in a container" (which is true for almost every app) and "designed from day 1 to be containerized" \- which is obviously not true for solutions like Keycloak.

That being said, I'm not quite sure to which feature OP was referring in particular. Perhaps to the modular approach taken by Hydra when compared to Keycloak. Hydra has a much smaller scope than Keycloak, so it would be really hard to compare them. Keycloak does identity management, consent, access control and a lot of UI.

Hydra is not even a self-contained identity provider - it's basically just the shell of an OpenID Connect provider that provides tokens, sessions and security (hopefully avoiding implementing OIDC correctly yourself, which could be very tricky as the spec is downright massive). You have to provide in turn separate services which take care of login and consent.

I don't think Hydra is the only Open ID Connect implementation which follows this model of breaking down the IdP. Dex is another shell IdP that does that, and also built from the grounds up to be containerized (being started by CoreOS and all). The main difference is that is that Dex provides a more easy to use set of built-in connectors to popular identity management systems (and other identity provider protocols, such as SAML or even another OIDC provider). It's not as extensible and flexible as the Hydra model, but probably easier to use if you just want to quickly provide OIDC on top of an existing LDAP.

<comment><USER5> Ugh, I run Keycloak in a cluster of containers. Didn't have a bespoke solution, used Redhat's solution.

</comment></comment></comment></comment><comment><USER6> I'm not too familiar with this space, so please excuse my question. What is OAuth2 server is?

I was under the impression that for a given service/API typically OAuth2 is implemented by the provider on their servers, either from scratch or using some sort of library.

With an OAuth2 server are you running a separate server or is it an internal service that your application code connects to (and forwards requests?) when OAuth related requests come in?

A diagram of how an OAuth2 server fits into an application architecture and a visualization of an OAuth flow in it would greatly help here.

<comment><USER3> Authentication = who are you. Authorization = what are you allowed to do.

OAuth 1.0/2.0 are a set of protocols and standards allowing applications to identify users and get access to their data using existing profiles. OAuth is mostly focused around authorization with claims (which are just key-value pairs) and authentication was an afterthought.

OpenID is another standard designed to let people authenticate across the web, launched with a lot of hype in the early web 2.0 days but never took off. OpenID Connect (OIDC) is a new standard based on OAuth 2 + OpenID to provide both authentication and authorization in a single flow.

OIDC/OAuth is all based on tokens, which are usually JWTs containing a bunch of claims that can be validated against the server that issued them. There are ID tokens (for the user info) and Access tokens (for accessing an API on behalf of that user), but some services like social logins don't provide any access tokens. Other providers might have rate limits, or dont have fine- grained permissions, or you maybe you have completely internal APIs that you need tokens for.

A token/identity server like Hydra can take care of creating and managing all the tokens and grants, and all the OAuth token flows, in a central location between internal and external APIs and user providers.

It's really just a webapp with endpoints that implement all the protocols so you can run it as a service somewhere. Once you do, your apps can then just call the token endpoint to recognize users and your APIs can use it to validate incoming requests which have JWTs. You still need the logic in your code to use OIDC sign-in and/or JWT validation but this is standard functionality and easily available in every stack.

<comment><USER6> Thanks for taking the time to write this up.

</comment></comment></comment><comment><USER3> The Ory suite is missing the user database component. Is this still on the roadmap? The Hive project looks empty: [https://github.com/ory/hive](https://github.com/ory/hive)

<comment><AUTHOR> Yes, not only on a roadmap but in high priority and under active development (not in the public eye yet)

<comment><USER7> Very exciting. Definitely will give it a try then!

</comment></comment></comment><comment><USER8> I wonder how many open source projects use this name. There's also Hydra[1], a Nix-based continuous build system.

[1] [https://nixos.org/hydra/](https://nixos.org/hydra/)

<comment><USER9> There is also the Hydra[1] parallel Scala compiler.

[1] [https://www.triplequote.com/hydra/](https://www.triplequote.com/hydra/)

<comment><USER10> My first thought was THC Hydra [1]

[1] [https://sectools.org/tool/hydra/](https://sectools.org/tool/hydra/)

<comment><USER11> My first thought was NZB Hydra 2 [0]

[0] [https://github.com/theotherp/nzbhydra2](https://github.com/theotherp/nzbhydra2)

<comment><USER12> My first thought was the thread executor of Typhoeus [0]

[0] [https://github.com/typhoeus/typhoeus](https://github.com/typhoeus/typhoeus)

</comment></comment></comment></comment></comment><comment><USER13> Does Hydra follow the OAuth Security BCP ([https://tools.ietf.org/html/draft- ietf-oauth-security-topics...](https://tools.ietf.org/html/draft-ietf-oauth- security-topics-12))? I do not see PKCE or mix-up mitigation mentioned, for example.

<comment><AUTHOR> While not explicitly mentioned, PKCE is supported! And yes, that draft was an important guide during implementation.

<comment><USER4> How do you deal with IdP/AS mix-up?

The BCP recommends either sending back client_id and iss (but that draft[1] is long expired, and nobody seems to support that implementation), or asking the client to provider a separate exact-match return URI for each AS. The second solution is what I'm doing when implementing multi-AS/IdP OAuth clients, but this requires the clients to be aware of this vulnerability, and that's a rather tall requirement.

[1] [https://tools.ietf.org/html/draft-ietf-oauth-mix-up- mitigati...](https://tools.ietf.org/html/draft-ietf-oauth-mix-up- mitigation-01)

<comment><USER13> There is no issuer in OAuth. Therefore, the distinct-redirect-URI solution is the most universal.

</comment></comment></comment></comment><comment><USER14> I was just researching OAuth servers last week and came across Hydra several times. Congrats all on a big release!

Ran across some unexpected drama while poking around: apparently, one of the main authors of OAuth2 spec withdrew his name from the publication and has repeatedly publicly derided the standard. [https://vimeo.com/52882780](https://vimeo.com/52882780). Parts I heard were good.

I'd just like to make a small request that developers on tiny internal-only APIs not make a big ordeal out of OAuth and require a big honking session store anchored against the "user's" OAuth creds on every _internal_ , _service-to-service_ request, thanks.

<comment><AUTHOR> The blog posts and discussion was long ago (the video is 6 years old). Since then, that particular author acknowledged that (iirc) OpenID Connect solves many of the things he criticized. I have to look up the source, it's been a while.

However, OIDC and OAuth2 are complex protocols which is also why we encourage most greenfield and small projects to avoid it unless explicitly required.

It's also important to note that that particular person voiced criticism, but most of the biggest names in tech (GCP, AWS, ...) heavily rely on those protocols (+ extensions). His proposed alternative protocol Oz never got to real world adoption (to my knowledge) and has recently been archived. The prediction that we would see major OAuth2 security wholes within 3 years (so 2015j never came true. It doesn't mean that he was wrong, but that there are opinions that contradict him, and that those opinions and voices have established themselves in the industry.

<comment><USER13> Also, we now have formal proofs for the security of the OAuth and OIDC protocols.

</comment></comment></comment><comment><USER15> A looong time ago, when OpenID was sort-of new, I implemented my own OpenID provider, because I wanted to log into StackOverflow and other places, but I didn't want to use a third party service.

That worked swimmingly in the few places that supported OpenID, but eventually even StackOverflow dropped support.

I must admit I haven't kept up with what has happened since in this area, so stupid question:

Could I install this server and have my own OAuth2/OIDC provider that would allow me to login to websites using my own provider (instead of "Login with Microsoft Github", "Login with Facebook", "Login with Google", "Login with Twitter"), or is this something else/the reverse?

<comment><USER3> No, OIDC providers can only be accessed by registered clients so those sites cant use your provider unless they specifically add it. Otherwise you would be able to login with any of those accounts on any site already.

<comment><USER15> Ok, so there really isn't anything like OpenID any more?

<comment><USER3> OpenID still required sites to implement that standard as a relying party so it couldn't be used arbitrarily. It gave you the ability to choose a specific OpenID identity provider to store your account info (including your own), but it didnt get adoption so now it's obsolete.

OpenID Connect is the latest version of OpenID, and it uses OAuth to federate access to other identity providers but sites now have to implement a separate registration for each provider (google, facebook, etc) so what they choose to implement is what you get, and there's no realistic option to use your own.

<comment><USER15> Thanks, the TL;DR is "Yes" then. Too bad.

</comment></comment></comment></comment></comment><comment><USER16> How does Hydra compare to other OIDC server implementations like Dex and Keycloak?

<comment><AUTHOR> It leaves the implementation of the login (enter /password, ...) and consent (may application X have access to your pictures?) flows up to the developers using HTTP Redirection flows. You can therefore integrate it much easier in existing applications.

Also, you have complete control over the ui and user experience and must not learn a template language (Keycloak) or fork (Dex) the project to customize it.

Compared to Keycloak, Hydra is much more lightweight (no JVM/JBoss). However, you need to implement the user database yourself and/or write your own connector for it.

<comment><USER17> If we have to implement all those things, is there really much of a remaining lift in implementing OIDC, apart from bringing in a library into a web app?

<comment><AUTHOR> Yes, implementing both OAuth2 as well as OIDC according to spec is a significant development effort and countless teams and companies fail at pushing through, shipping incomplete or insecure implementations. If you're greenfield, OAuth2/OIDC is with 99% certainty not the right fit for you anyways.

<comment><USER3> Bringing in a library is different from building it from scratch. Pretty much every language has solid OIDC frameworks now.

OIDC is great for greenfield and much better than writing user signin flow every time.

<comment><AUTHOR> Username + Password with a cookie store is much better understood and harder to get wrong than implementing a full OIDC suite (server + client). If you're talking federated login, that's what OIDC is for. If you're talking "login", your opinion is misguided.

<comment><USER3> We might not be talking about the same thing. The thread was comparing to other OAuth servers, and then libraries, but nobody is talking about implementing it from scratch.

That being said, if you're working on a greenfield app where you need auth, using an OAuth/OIDC server is much better and faster than creating yet another membership system for that app. That's a major advantage of identity federation.

</comment></comment></comment></comment></comment></comment></comment><comment><USER18> Site doesn't seem to give a simple high level explanation. How does this compare to a service like auth0? Seems like a subset of a cognito/auth0/okta?

</comment><comment><USER19> Are there any load test reports? How well does it scale?

</comment><comment><USER20> Glad to see OpenAPI codegen being used for the SDKs!</comment>


Ask HN: Google Container Engine vs. Heroku vs. Beanstalk? - <AUTHOR> A lot has changed since the previous comparisons between the services when it was mostly App Engine vs Heroku one command deployments and scaling.
Now with containers being the new kid on the block and more and more providers allowing easy container deployments, what does HN think about these services?
If you were to deploy a application for your new startup or hobby project, which service would you pick and why? <comment><USER2> Depends on the scale, for smaller projects Heroku (free tier is actually pretty solid for simple Flask/node apps), for larger, probably Google. But I'm bias, I tend to stay away from the AWS ecosystem.

<comment><USER3> Why you tend to stay away from AWS ecosystem?

</comment></comment><comment><USER4> Might as well add Redhat's Openshift offering. [1]

And, being open source, you can DIY with Openshift Origin. [2]

[1] - [http://openshift.com](http://openshift.com)

[2] - [http://openshift.org](http://openshift.org)

<comment><USER5> Openshift V3 (container based) is in dev preview currently. V2 is not based on containers. Have been using V2 for personal projects and it is good.

</comment></comment><comment><USER6> If your service is non-trivial, composed of multiple services or a variety of workloads (long and short lived processes), Google Container Engine (aka Kubernetes) hands down. It is the most versatile, solid, cost effective option IMO.

If you just have a simple app with modest scale needs, the simplicity of Heroku is tough to beat.

</comment><comment><USER7> For ease of use alone and fastest time to market (aka least messing around for a web app) I'd rank them as:

1) Heroku

2) beanstalk*

3) GCE

* Currently working extensively with beanstalk. Containers and instances are still more of a pain than Heroku's basic model but they can be pretty flexible.

</comment><comment><USER8> I use Google Infrastructure personally. I'm very happy with it.

If I were you I'd look at kubernetes. Not just because it's great, but because it has cross-provider support. Configuring it is fairly easy, and you can then deploy locally on dev environments, to Google, to AWS, to Azure etc.

I favour this over solutions where you are locked in.

</comment><comment><USER9> I'd go with Dokku, which is an open source version of Heroku and (like Heroku) let's you go with the traditional "buildpack" deployment or more control over the container via a Dockerfile while keep the simple deployment workflow that made Heroku popular.

<comment><USER4> I use dokku for my sode projects and proofs of concepts.

There is also deis for clustering. [1]

[1] - [http://deis.com](http://deis.com)

</comment></comment><comment><USER10> Lately pushed a (MEAN hobby) web app to pivotal web services - it took minimal setup and app was up and running within a minute or two.

Can somebody using it in production comment on how its compared to others - pros and cons?</comment>


Show HN: Chime - A Notification Center for the Web - <AUTHOR> http://www.chimeapp.com/ <comment><USER2> This looks great, congratulations.

1) Do you have any plans to allow arbitrary RSS as notifications, or integrating with ITTT? This could allow people to create notifications for services that you don't support.

2) While I don't believe everything has to be monetized, I was wondering if you do have a plan to make money, and if you do, would you mind sharing?

<comment><USER3> Thanks and great questions!

1\. We're currently looking at creative options to support personalized notifications. One possibility is something similar to what Rapportive did and provide sites with a way to deliver notifications.

2\. We honestly did this because it was a need we had. We're looking at a number of strategies. The most likely is a set of premium features for a one- time fee. That said, we might just leave it free too.

<comment><USER4> What about limiting the number of services for the free version; say the first five are free, then a one time fee to unlock additional.

<comment><USER3> This is certainly one option and we're still thinking. Our main goal is to make cool stuff that people love, and then we'll focus on monetization. :-)

<comment><USER5> That's the only way to go about it, IMO.

It seems that in today's world, too many companies get a hair-brained idea from some executive that thinks they've got it all figured out, spend 100's of thousands building it, and millions to market it... only to discover that nobody actually likes it and/or will ever use it.

I don't want to name names (as I'm not looking to start a flamewar), but off the top-of-my-head I can think of several very prominent, very successful (historically) corporations that seem to use such a marketing-driven approach: instead of letting users fall in love with the product by their own devices, instead the corp tries to make the product and only then do they try to sell the user on why they should love it.

Sometimes it works, sometimes it doesn't, but when it doesn't it can be a costly mistake. When you have a compelling product or service, marketing is minimal; word-of-mouth is king!

Cheers, your service looks very cool.

<comment><USER3> Really appreciate your comment! I really do agree with your sentiments.

</comment></comment></comment></comment></comment></comment><comment><AUTHOR> Just launched 5 days ago! Over 100k notifications served.

We're completely client side, so there are no privacy concerns.

<comment><USER6> Congrats on the initial success!

If you are completely client side, how are you tracking the total number of notifications served? I would assume you would have to send some data back to the server to keep track?

<comment><USER7> Haha, that's true. We use google analytics for anonymized data.

</comment></comment></comment><comment><USER8> I read that as "Crime" for a moment, thought it would be some kind of real- time notification centre for when a crime is happening near you. I suppose police radios are encrypted these days, otherwise it could be interesting to recognize location from the calls, and show a pin on google map say: "bank robbery in progress 2.1 miles north of you; adam-4 responding". Then you can also add a social element: like foodspotting... but for criminals.

<comment><USER3> Hmm.. foodspotting for criminals. I like it. Do they get OpenTable integration? haha.

</comment></comment><comment><USER9> This looks fantastic.

Just one bit. Are you proudly developing this only for Chrome, or is that just a support limitation right now?

I ask this because you didn't write something along the lines of expecting it to be released elsewhere soon - you wrote "exclusively" for Chrome.

I ask this because I currently use Firefox most frequently (although I installed Chime on my Chrome installation to test it). It might be a bit of a market limitation later when you try to monetize this if you only develop on Chrome.

And also, do you have any plans to allow independent hackers to write in their own notifications? Will I be able to write in notifications for platforms too obscure or unpopular to make a mainstream update for?

EDIT: I forgot one thing. Would you consider doing this for desktop applications as well, like Growl on Mac?

<comment><USER3> Thanks! We developed Chime for Chrome first just to get it out in the hands of our users. Based on the responses in the first week since launch, we're already looking at support for Firefox/Safari.

I also mentioned this elsewhere in this thread, but we're hoping to create a way for other sites to deliver notifications through Chime. Haven't considered independent hackers just yet, but it is something we'll keep in mind.

<comment><USER10> There are platforms like CrossRider[1] or trigger.io[2] that allow you to deploy cross-browser add-ons, should be easy to port to since it's already in javascript.

[1] <http://crossrider.com/> [2] <http://docs.trigger.io/en/v1.4/modules/browser/index.html>

</comment></comment></comment><comment><USER11> Exclusively for Google Chro(Ctrl+W).

(But I liked the screenshot).

<comment><USER3> Haha, that's alright. We're considering support for Firefox and Safari soon depending on the initial response. Thanks!

<comment><USER11> Happy to read it, I'll give it a try when it's available :)

<comment><USER3> Awesome, make sure to follow @ChimeApp on twitter to stay in the loop

</comment></comment></comment></comment><comment><USER5> One feature that I can see possibly being valuable here is the ability to filer, prioritize, or otherwise throttle the notifications.

An example would be my usage of Google Reader; there's a Chrome app[1] that shows notifications for new items, but I haven't been under 1000 new items in years ("1000+" is as high as it tracks). Yes, I have many feeds I need to prune out, but even then, I may get upwards of 100 new items a day in my reader and I sure as heck don't care about them all. I really just care about items from a few select sources, but without a way to filter out the noise it's useless.

I'm not sure if that use-case would be very common for your app, although there's times when I make a popular FB post that I tend to ignore the notifications once they get past about 10.

1\. [https://chrome.google.com/webstore/detail/google-reader- noti...](https://chrome.google.com/webstore/detail/google-reader-notifier- by/apflmjolhbonpkbkooiamcnenbmbjcbf?hl=en)

<comment><USER3> Hmm.. this is interesting, something we'll look into for the future of Chime. For now, we only have filtering by sites.

</comment></comment><comment><USER12> Color me impressed gentlemen. A useful idea with great execution.

Now how about:

1) Ability to sleep/snooze on notifications. The use case would be when we are working in the browser and require focus. Some of us feel overly compelled to click little red notification badges, which can be distracting. Yes shame on us! :)

2) Make coffee and walk the dog

<comment><USER3> Thanks!

1\. This is definitely in the works. 2\. Uhh... yes, we'll put that on our "backlog"

:-)

</comment></comment><comment><USER13> All my Gmail notfications are 43 years old. I'm in europe so maybe it can't handle the 24h time format?

Apart from that it's really great! Would love to see some common forums supported (but that would be tricky as you would need access to many different domains).

<comment><USER3> Thanks! This is something we've had a few reports about this morning so we're working hard to fix it right away.

</comment></comment><comment><USER14> This looks really cool, but one thing I'd love to see/know before I install.

Do you send me a notification whenever something happens, or can you pool them together and only interrupt me every few hours? Hint: I want the latter.

<comment><USER7> Right now we send a notification as soon as it happens. We're looking at implementing a pause mode, so you wouldn't get interrupted by notifications when you need to focus.

Pooling notifications is interesting, we'll definitely be looking at that in the future!

</comment></comment><comment><USER15> Beautiful, thanks very much. Is it possible to not receive popups when new notifications arrive? I prefer notifications to be totally silent until I decide to look at them..

<comment><USER3> Thanks! Of course, click on the Chime pop-up ==> Settings ==> turn off desktop notifications.

</comment></comment><comment><USER16> Wow, this is a slick interface. I love the Windows Metro look and feel. Great job with this, I'm excited to use this and not have to worry about keeping a bunch of tabs open! How often does it check for new notifications? It would be nice if you could set a variable to check for new notifications every 1 min, 5 mins, 15 mins, etc.

Do you have a donate link or something? I would love to say "thank you" with a little money gift to thank you guys for your hard work! :)

<comment><USER7> We added a small donation link to the bottom of our Help page: <http://chimeapp.com/help>

Great to hear that you like Chime! The frequency is different for every service, and is also based on a few other metrics. It'll pick up notifications within a few minutes, usually.

</comment></comment><comment><USER17> Always the simple products that come through.

Quick question: I'm logged into multiple Gmail accounts - will it grab from both, or just the active account?

<comment><USER3> Currently, just the active one. We're definitely working on multiple gmail accounts, so hold tight!

</comment></comment><comment><USER18> This definitely looks like a great piece of software.

However, I believe different services, hence different types of information, should have their own way of being displayed.

For example, seeing a one-line summary of an email doesn't appeal to me that much.

That's why I always prefer using the web app itself (or a dedicated extension in the case of Gmail).

<comment><USER3> Thanks! We tried to cater to the way users interact with different services. We can look into adding more options to customize notifications down the road.

<comment><USER18> That'd be nice. Is there a way to be notified when such a thing goes live (mailing list)? That'd be a shame if you didn't, seeing all the coverage you're having!

<comment><USER3> You can follow @ChimeApp on twitter! If you have Chime installed, you'll see the updates automatically. :-)

</comment></comment></comment></comment><comment><USER19> I didn't realize how little was going on in my extended internet life until I installed this app.

<comment><USER3> I felt the same way... Thanks for the comment though!

</comment></comment><comment><USER20> Looks pretty amazing so far. I've gone through a couple Google mail extensions, and using Chrome for Linux and Chromium for Linux with my google sync setup, I've had trouble finding one that works properly.

This seems to work great for Chromium on Ubuntu.

<comment><USER3> Thanks! The three of us working on it are all using different platforms and we've had awesome beta users who have helped us out a lot!

</comment></comment><comment><USER21> Love this idea and execution. Any plans to add rich notifications for G+? It would be great to see info about the notification (and ideally interact with it) from the extension (vs a notification page or redirect to plus.google.com).

<comment><USER3> So we spent a good deal of time trying to do this. Google explicitly does not provide notification details for G+[1] so our hands are bit tied here. Chime does its best still convey your new G+ notifications with that limitation.

[1] [http://code.google.com/p/google-plus- platform/issues/detail?...](http://code.google.com/p/google-plus- platform/issues/detail?id=96)

</comment></comment><comment><USER22> I like this!

One problem though: if I click a notification for gmail (probably others too) it opens a new tab. I already have gmail opened (I have it pinned), can you please use my existing tab to open the email in (or make it configurable)?

<comment><USER3> Thanks! We've heard this feedback from a few others and probably will add a few different configurations in the next update :-)

</comment></comment><comment><USER23> Why Chrome only? This looks like something that could work just as well on Firefox

<comment><USER3> Yup, we built Chime for Chrome just to get the product out in the hands of our users. We've realized the response for Firefox/Safari is overwhelming so we'll be looking into support for those browsers as well.

<comment><USER23> Ah ok. Sounds great then! I was just surprised to read "exclusively for Google Chrome"

</comment></comment></comment><comment><USER24> Any plans to add other "social" source code hosting services?

<comment><USER3> We have Github already, but have had an overwhelming amount of requests for Bitbucket. So it's on our radar!

<comment><USER24> Excellent, that was the one I had in mind.

</comment></comment></comment><comment><USER25> For people who don't want to be productive ever again.

Sorry, I shouldn't be so negative, it looks like a great app. I just know that's the effect it would have on me.

<comment><USER26> I've actually found that having instant notifications about events on distracting sites keeps me from _checking_ those distracting sites and coming across other distractions on them. Net win.

<comment><USER3> I agree with you. Having my FB notifications delivered through Chime, I rarely have to actually go on Facebook now. That said, everyone has a different preference for their notifications. :-)

</comment></comment></comment><comment><USER27> Not sure how this would work, but if I want notifications from everywhere, this would need to include IRC chat when people ping me with my name.

<comment><USER28> Perhaps the Chime folks would be kind enough to write a ZNC module to allow for that type of integration: <http://wiki.znc.in/Modules>

<comment><USER3> Perhaps...

</comment></comment></comment><comment><USER29> can I have Microsoft Exchange OWA integration?

<comment><USER3> Thanks for the feedback! We're definitely considering putting this on our roadmap.

</comment></comment><comment><USER30> Great work. Really love the well refined interface.

Not that I care about it much, but as a feedback, I am not able to get LinkedIn to work.

<comment><USER3> Thanks! Can you send us an email at email@example.com describing the issue that you're having. Are you logged-in to LinkedIn?

<comment><USER30> I am logged in, and I tried a browser restart, and a logoff-login as well, to no avail

<comment><USER3> Send us a note email@example.com with a screenshot please of the "All notifications" page :-)

</comment></comment></comment></comment><comment><USER31> This looks awesome. What plans do you have for other services (off the top of my head, I'd love Dribbble and Tumblr)?

<comment><USER3> We're looking at adding some of the most requested services (like multiple Gmail accounts) first. We'll definitely add any requests to our backlog, so I'll put your requests on there as well.

<comment><USER32> I've been trying to find a replacement for One Number, a Chrome extension that notifies for Gmail, Google Reader, and Google Voice.

Google Voice notifications aren't a big deal since I get them in e-mail anyway, but having Google Reader notifications would be really nice.

</comment></comment></comment><comment><USER33> Is it open source? Can I see the code?

Edit: Specifically I want to validate the claim "all my data stays on my browser"

<comment><AUTHOR> Feel free to inspect the background page and look at the network requests we're making. We're doing requests to Google Analytics to store counts (e.g. how many installs we have, how many notifications are clicked, etc.) but there is absolutely no data from the notifications or any personally identifying information about you.

</comment></comment><comment><USER34> I get this error on Chrome 26.0.1403.0: "Could not install package: 'COULD_NOT_GET_TEMP_DIRECTORY'"

<comment><USER3> Please ensure you're logged into Google Chrome as this is enforced by Google. This may also be due to the instability of the nightly build for Chrome Dev.

</comment></comment><comment><USER35> Looks really neat and professional. Any chance to get notified about HN comments/karma changes?

<comment><USER7> Hey gingerlime, unfortunately hn doesn't offer notifications itself, so that would be difficult to implement, and outside the scope of Chime. I'm definitely feeling your pain right now, though =P

</comment></comment><comment><USER36> Reminds me of Friendfeed. Few quick mashups could do the same in the good ol' Web 2.0 way.

</comment><comment><USER19> Would love to have this on my iPhone lock screen with intelliscreen.

<comment><USER3> We would love to be on your iPhone's lock screen. That would mean a different type of app for us though, with a server and all.

<comment><USER7> Heaven forbid we have to actually _use_ a server.

<comment><USER19> I'll provide the server, you provide the client. _deal_?

<comment><USER3> Possibly haha.. Feel free to email us feedback email@example.com or tweet us anytime @ChimeApp

</comment></comment></comment></comment></comment><comment><USER37> Anyone else seeing the error: "Download was not a CRX"

<comment><USER3> It means you're not signed into Chrome on the webstore, which Google requires. Are you sure you're running the most updated version of Chrome? If you're still having trouble send us a note firstname.lastname@example.com :-)

<comment><USER37> Thanks, never saw that before. Was logged in to Google Account on the browser sync, but apparently not the store.

</comment></comment></comment><comment><USER38> This is so awesome. Any chance of yahoo mail?

<comment><USER3> You're the second person to mention this (the first was my dad), so we'll definitely look into it.. :-)

</comment></comment><comment><USER10> The "Clear All" button is not working for me.

<comment><USER13> I did a "Clear All" and the notifications just disappeared from the extension, my Gmail mails are still unread.

<comment><USER7> Clear all will just hide all notifications from Chime. Marking them as read is too undo-able, we wouldn't want users to accidentally mark a ton of important emails as read.

Perhaps we should change it to "Hide All"...

</comment></comment></comment><comment><USER39> This is really cool, nice job!

<comment><USER3> Thanks!

</comment></comment><comment><USER40> This supports the only browser thats ruining the Internet. Oh well. It looks nice though.

<comment><USER7> Hmm, why do you think that it's ruining the Internet?

<comment><USER40> It's creating a Google monopoly over the web. Chrome's not open source. Chrome has light to moderate tracking issues. Developers are starting to only support one or two browsers (talking about websites not extensions) , which I think is absurd and it reduces competition. I think Firefox is a better browser than Chrome/ium in a few ways and vice versa. You're the developer I'm assuming. You've made a great product for a popular browser, so there's nothing to worry about for you, but I think if people switched to Firefox, the Internet would be a better place. Good luck!

<comment><USER40> Whoa, sorry for all the super short sentences, I can't seem to figure out linebreaks, I don't comment often.

</comment></comment></comment></comment><comment><USER41> This is awesome Fahd!

<comment><USER3> Thanks Fil!</comment></comment>