Don't test with SQLite when you use Postgres in Production - <AUTHOR> http://michael.robellard.com/2015/07/dont-test-with-sqllite-when-you-use.html <comment><USER2> Better: Don't test _only_ with SQLLite when you use Postgres in Production.

His points are all valid, you definitely shouldn't release something to production that you haven't tested thoroughly in a separate identical environment.

That doesn't mean you should never test with SQLLite though.

A good pattern I see all the time is to have a final stage of system tests that run slowly but very accurately in a production-equivalent environment, and to also have a preceding test stage that uses SQLLite instead. By using SQLLite in memory it's much much faster and easier to manage and easier to parallelize etc etc, so you find out quicker if your code is fundamentally broken.

The goal of testing is to find out as quickly as possible (minimal context- switching, easy to check locally before commit) whether your application will work. That means checking the things that are most likely to break most of the time as early as possible. It's typically not going to be a complex database incompatibility issue that makes your tests fail. It's going to be the SQL query you wrote 30 seconds ago, or the leftover query that doesn't work at all the table structure you've just moved to, etc etc. These are things you can check perfectly effectively in a lot of cases, and much quicker, with SQLLite and friends.

Quick test stages that catch all the obvious problems early, final definitive production-equivalent test stage that makes sure it'll definitely definitely definitely work in real life. If you do it well, you can set it up so they both use exactly the same test definitions, and just swap out the DB config.

<comment><USER3> I came here to say something along those lines. Our project has a SQLite backend for hassle-free local development, and we use Postgres in all remote servers. Tests run both in local and remote.

<comment><USER4> What hassle did you expereince when using PostgreSQL locally? On the projects I have been in we have ran PostgreSQL in local development almost painlessly. PostgreSQL is quite developer firendly, at least for my use cases.

I suggest using syncrhonous_commit=off to sped up the test suite and to use unix sockets (assuming you do not run Windows).

<comment><USER3> The problem with using PostgreSQL was difficulty to make it work everywhere, we have at least one dev in each platform. I use the pure JS version of SQLite (sql.js in npm). The server is fairly small, having the bulk of the code in the client (SPA).

If it wasn't for the MySQL I had to implement after the SQLite work, I would say it's better to investigate the quickest way to configure a local Postgres DB. There are portable windows binaries.

</comment></comment></comment></comment><comment><USER5> The comments here are full of people bucking against this advice. I've worked at TWO companies now where people said NO we want to use SQLIte in dev. Both switched in under a year despite fierce internal opposition. Everyone had changed their tune once they hit growth in users and complexity. Why? Because being ideologically right is not as nice as being sure you're writing code that works.

The fact is if you have a serious site there's a good chance SOME specific feature will start looking appealing ( maybe array values, JSON , window functions, a pg extension...). These features are written because people use them, we aren't all writing dead simple CRUD apps. Or you your ORM will interact with one slightly differently than the other. I don't expect to convince any of you doubters, but the first time you get a bug in prod that slipped through the testing process but really could have been caught in dev, you'll ask yourself why you weren't using pg there too.

There's no sane reason to complicate your life by running two databases unless you either have a dead simple app, or are one of the jabbering idealists I see on here. Productive programmers simplify the problem and minimize their tech stacks.

<comment><USER6> I am for both:

we run a brutaly different dev environment than production: windows, 32 bit, hsqldb, windows codepage against linux, 64bit, postgres, utf8 codepage

we also have a beta environment that's a perfect mirror of production down to the vm vendor and package version and an alpha environment that's on a cheaper vendor and uses a more updated version of production os/packages (and has experimental features of our software enabled)

this maybe slows down development a little, but catches a brand whole class of interesting error that are normally hidden and wait to happen till the next time you need to upgrade something in the production environment

then again we do have some sane lib that hides the horrible differences between databases so we have a whole class of bugs that's managed by that layer. (no it's not an ORM I hate those)

<comment><USER7> Seems that someone's running wild, downvoting every comment they disagree with.

I believe neither maintaining a code that's compatible with multiple databases, nor using a single one is a mistake per se. Whatever rocks your boat _is_ the attitude - one just needs to be aware of consequences (both good and bad ones) of chosen path.

But, yeah, the linked article's warning is completely valid - testing on a single platform, then deploying to another is likely to encounter some issues one day.

<comment><USER6> > I believe neither maintaining a code that's compatible with multiple > databases

me too! but there are soo many compatibility layers you can get and bolt on for free and they also work around version issues and things like that... of course if you need the latest version then you're in a different boat, but the generic problem of talking to a database is basically solved by now

</comment></comment></comment></comment><comment><USER8> I will tell a story that I think is very strange.

Last year I worked at a small startup that was focused on medical records. They used PostGres in production, but SQLLite in development. The frontend was pure AngularJS. They had a massive Python code base for pulling data from the database, turning it into JSON, and then sending it to the frontend.

But then things began to change.

PostGreSQL gained the ability to handle JSON natively. We began the preliminary process of switching over to use that ability. It would mean less work for the Python code.

Here is where it got strange: some of the team was so deeply committed to using SQLLite, that they began hacking SQLLite to add the ability of SQLLite to handle JSON natively. That is, any feature that PostGreSQL had, which we used, they wanted SQLLite to have.

On the one hand, the technology they developed was amazingly cool. On the other hand, it was a massive effort that had nothing to do with the goals of the startup.

I could not fathom why we didn't simply use PostGreSQL in both development and production.

<comment><USER9> Just to point out... there's no capital G in PostgreSQL's name. It's either "PostgreSQL" or "Postgres". ;)

Also to be super pedantic... it's SQLite, not SQLLite. ;)

</comment></comment><comment><USER10> This is one of those things that I would hope goes without saying, but obviously doesn't... Always test against what you expect to see in production. If you test against something else first (in this case mocking through an in- memory DB) to make the testing of other parts faster/easier then that is fine, but once those tests are done you still need to do a final full test against the real stack(s) you expect to see in production.

On the mocking thing: I thought the point of that was to completely avoid DB calls for speed when testing other logic layers, so even a fast in-memory DB isn't needed and anything (i.e. just some code that manufactures a response object) that produces a result set in the right format will do? In that case even using an in-memory DB is less efficient than the other option so is at best a "half optimisation". Am I missing a point here?

<comment><USER11> If the in-memory DB has the same feature set as the real DB, using the in- memory DB for tests should be a single flip you switch, while writing code to generate fake result sets for every tests requires writing all of that code. 90% of the benefits for 1% of the cost.

<comment><USER4> But they do not have the same feature sets. And PostgreSQL trivially be tuned to work almost like an in-memory database.

</comment></comment></comment><comment><USER12> We are mostly PostgreSQL shop and on last few projects I wanted to make it possible to use SQLite for development and testing, but I've fount that it is simply not possible. not because there are things that work on sqlite and break badly on PostgreSQL, but other way around. Just introducing Boolean or DateTime column with server_default into your SQLalchemy model causes that you can not use SQLite.

</comment><comment><USER13> Postgres is relatively light weight. We use Postgres heavily in integration tests and it's quite fast. I don't see that SQLite would speed things up significantly other than causing other potential issues due to it being a different database.

<comment><USER14> You just made me wonder whether disabling fsync for postgres would make your tests behave non-identically to a database that does fsync, and how much faster they would be. Interesting question...

<comment><USER15> I'm pretty sure the behavior would be identical except for durability.

<comment><USER14> I think so too. Okay, fsync, off you go for dev.

</comment></comment></comment></comment><comment><USER16> I use MySQL in my system but the advice should be applicable to Postgres as well: keep your test database in a ramdisk. By moving my MySQL to ramdisk I got almost a tenfold improvement when running tests on a build server. Not so much (but also significant) improvement when running tests on my development machine.

<comment><USER17> Why do you think there was a difference between tests on a build server and on your development machine? Was it just a case of the build server being configured for performance?

<comment><USER16> I'm pretty sure that it's down to hard disk performance. I don't recall exact numbers but difference in IOPS between my development machine and a build server in the cloud (Azure) was greatly in favour of the former.

</comment></comment></comment><comment><USER18> I tend to abstract away my queries using database views. This way the query in application becomes very simple (select * from view where $simplepredicate).

In my test database (sqllite,hsqldb,derby,...) i create actual tables containing test data with the same definition as the views.

This allows me to have rather complex queries that are database specific and still have fast running database queries.

The views themselves i test separately. They are also easier to fix in production than code releases, and can also be replaced by materialized views if necessary.

Inserts/updates are typically simple too.

</comment><comment><USER19> NASA rule of thumb I read somewhere.

"Test what you fly. Fly what you test."

</comment><comment><USER20> A few notes:

\- All the concerns listed in this article are addressed by ORMs.

\- SQLite supports CTE[1] (subqueries).

\- It's safer to use the exact same setup in development and production, but it's slower for applications with many tests. It's a trade-off and that's all there is to say.

[1] [http://stackoverflow.com/questions/21819183/how-to-use- ctes-...](http://stackoverflow.com/questions/21819183/how-to-use-ctes-with- update-delete-on-sqlite)

<comment><USER21> ORMs are not a panacea, for most applications it makes sense to bypass the ORM for operations which translate well to SQL but become convoluted or slow when expressed using the ORM's API. ORMs can't hide all of the differences between database implementations anyway, not without hiding some of the functionality that you actually want. It's unfortunate, but unavoidable.

</comment></comment><comment><USER22> I've always preferred this (using Django):

1\. Local development is done with the simplest of everything (local memory cache, SQLite3 database, console based email backend, local static file storage (vs S3, etc.)). The result is that there is very little overhead and everything is easy to work on and test quickly. This also gives me the ability to quickly wipe out things locally (erase and make new migrations for trivial changes, delete the database file, clear cache more quickly by just restarting the Django server, etc.).

2\. Final testing takes place on a staging server (Heroku), which is free, and which can contain all the production-level backing services that production will have. This server will be treated like production (no in-place hot-fixes and database wipes / restarts). Separate dev accounts will of course be used for things like APIs, email, etc.

3\. Production (Heroku).

This gives me the best of both worlds; the simplicity of local development with simple backing services, with the comprehensiveness of a staging server with better parity.

<comment><USER23> This makes sense when you use an ORM that will transparently work. You trust the ORM to insulate you. If you have needed to go direct to SQL for something then you're looking at putting in test-specific code in your production code to simulate/fake/disable the custom SQL bit...

Just run postgres on a ramdisk, or on an SSD with sync disabled and a scripted setUp/tearDown.

</comment></comment><comment><USER24> Testing with a different database would only be good if you:

a) Also test with your real production database b) You restrict yourself to using the lowest common feature denominator of both databases (which is probably a pretty low figure)

Still, different databases behave differently in many aspects. And despite how cool SQLite is, PostgreSQL is so much more advanced (specially in SQL querying) that I don't see the point losing all those features. As I have already mentioned in HN, check this amazing presentation: [http://use-the- index-luke.com/blog/2015-02/modern-sql](http://use-the-index- luke.com/blog/2015-02/modern-sql) before deciding to restrict yourself to a subset of the SQL supported by PostgreSQL.

Given that it's easy to start PostgreSQL from a unit test, and how lightweight PostgreSQL is, I see no real point in using SQLite for testing. Use PostgreSQL!

</comment><comment><USER25> On the project I work on, we face a similar problem. We use H2 for an in memory test database, but now we're frequently running into the problem where we'd love to use a specific postgres feature (say, json support) that isn't supported by H2.

That, and occasionally we find syntax differences that cause a headache when doing a database setup/teardown. A single minor SQL difference requires us to create separate H2/Postgres flyway configurations.

I think a better option than H2 or SQLite, that we're currently investigating, is using Docker to bring up a local postgres instance for testing.

(All of that assumes a certain dedication to using Postgres. If you want to be database agnostic, then you may in fact be better off not using Postgres in dev/test just to force yourself to remain compatible with other DBs.)

</comment><comment><USER26> I agree. Bite the bullet and learn to work with Pg in your dev environment. The dev ergonomics aren't worth all the other stuff listed here. Think about all the time you'll spend reasoning about the differences between the two. This has nothing to do with your project.

<comment><USER27> In the age of containers this able thing is baffling to me. I have a couple of things that need postgres in production, and a single script which launches a two docker containers with tmux running postgres and apache with live scrolling logs, and which binds the postgres port to my local host.

I simply cannot understand where the friction on this is existing today. Even pre-docker its fairly easy to setup any of the big dbms in their own little environments (5 versions of mysql on the same server for a migration project).

<comment><USER23> Plus with a few tweaks to postgres relaxing ACID compliance (i.e.: no sync) and using an SSD or better a ramdisk for storage performance will be fantastic for unit tests.

</comment></comment></comment><comment><USER28> Starting Postgres locally for unit testing is quite easy and done with a few commands (e.g. Powershell)

[https://gist.github.com/tobiasviehweger/cbfd9a1a55bff0862f9e](https://gist.github.com/tobiasviehweger/cbfd9a1a55bff0862f9e)

<comment><USER15> When I work with PostgreSQL heavily, I don't ever take a server down if I don't have to. I just have test harnesses create fresh test databases from templates.

</comment></comment><comment><USER29> I've run Linux as my desktop for a long time, so I've always found it natural to set up my desktop as closely matched to the deployment server environment as possible. It's very simple to set up MySQL on Debian or Ubuntu, and only slightly more trouble on OSX.

Using SQLite would actually be more trouble and I've never seen a need to use it all for development. Any time I've tried to use SQLite, it's been pointless as some of my queries written to run on MySQL or Postgres fail due to lack of support for some feature or another. And I already have plenty of MySQL and pg running on my systems, so...

</comment><comment><USER30> We're using Vagrant for developers' environment (with mongodb/redis/rabbitmq/consul.io)

I can't recommend it enough. Maybe a local memory database could be faster... until your environment grows beyond just a db

</comment><comment><USER31> Extending his argument further. Strive to have a local environments that is as close to production as possible. Use Memcache in production? Use Memcache for dev/testing too! Use Elasticsearch in production? Use Elasticsearch in dev/testing!

This is all really simple to setup to. Think about how a new developer gets up to speed and starts coding in your company. Does it involve downloading and installing Postgres.app[0]? If it does it's no good. Starting a local environment should require a single command. `vagrant up` is one option if you use vagrant. Local environments should ideally use the same method of provisioning as production servers. It can however be simpler, one of our codebases has a bootstrap.sh file that sets everything up, it works surprisingly well. No version conflicts, no weird bugs due to slightly varying versions for different developers and no fake service such as SQLLite.

For the life of me I can't understand the test speed issues that people talk about. We have a pretty small codebase with some 2k test(94% coverage). That takes about 6-7 minutes to run inside a vagrant VM using all the same services as production. 6-7 minutes is a long time, but you shouldn't be running your whole test suite during development. During development only run the one or two tests that are relevant for the feature you are building or the bug you are fixing. These are typically really fast even with a proper database. The whole test suite should be ran before pushing and by CI. If your database is still too slow look at using a RAMdisk or tweaking the configuration like people have suggested in the comments

0: [http://postgresapp.com/](http://postgresapp.com/)

</comment><comment><USER32> While I agree testing well is crucial, running your tests on one RDBMS that's fast and running them less frequently (think "before merging into production") is a good compromise. PostgreSQL is slower here than SQLite and if your tests take 20 minutes to run, your developers won't test as often as you would like them to.

It also prevents you from doing things that only one RDBMS does (I was bitten by this because SQLite supports timestamps with timezone data and, at that time, the MySQL we used in production didn't) making your app more "robust" (you are using an ORM for a reason, right?).

Imagine you only test your app in PostgreSQL and, because of that, your app makes assumptions about the environment only PostgreSQL satisfies. You simply can't move to anything else without extensive rewriting. Now, when the workload changes, you can't just change your storage backend to one that suits your workload. You need to make PostgreSQL do whatever your new needs are. PostgreSQL is probably a good enough solution, but it's not the optimal solution for all problems.

<comment><USER33> Aside from a few seconds to spin up a new PostgreSQL instance, it should not be any slower than SQLite. We have a wrapper [1] (forked from [2]) that starts a new PostgreSQL instance from Java unit tests. We have the same for MySQL [3]. This allows every developer to automatically run tests against the target database without needing to set anything up.

(The common alternative in Java is to use H2 or Derby, which are similar in concept to SQLite)

1\. [https://github.com/airlift/testing-postgresql- server](https://github.com/airlift/testing-postgresql-server)

2\. [https://github.com/opentable/otj-pg- embedded](https://github.com/opentable/otj-pg-embedded)

3\. [https://github.com/airlift/testing-mysql- server](https://github.com/airlift/testing-mysql-server)

<comment><USER34> Hmm, I'm actually on PostgreSQL right now using H2, this might come useful. Thanks.

<comment><USER33> Just add the Maven dependency and see their own tests for an example:

[https://github.com/airlift/testing-postgresql- server/blob/ma...](https://github.com/airlift/testing-postgresql- server/blob/master/src/test/java/io/airlift/testing/postgresql/TestTestingPostgreSqlServer.java)

[https://github.com/airlift/testing-mysql- server/blob/master/...](https://github.com/airlift/testing-mysql- server/blob/master/src/test/java/io/airlift/testing/mysql/TestTestingMySqlServer.java)

Though you want to use @BeforeClass / @AfterClass or similar rather than creating one for each test.

</comment></comment></comment></comment><comment><USER35> No, I _will_ do this.

Because it's so much easier and it still lets me test 95% of my code. And the alternative is not testing at all because there is limited time for testing and setting up a proper database for this is so much more trouble.

The choices are not good test vs bad test. They are test-with-issues vs. no test.

(Obviously you have to do SOME testing with the real DB but this article is talking about unit tests (or related))

<comment><USER36> How is it so much trouble? Install postgres & any extensions you use on your dev/test boxes, this is a one-off cost that takes minutes.

Have your test bootstrapper run "createdb somethingunique" and then "export APP_DBCONN_STR='somethingunique'". Adding this to your bootstrapper will take minutes.

</comment></comment><comment><USER37> If you're writing unit tests to test the business logic of your app, you shouldn't need a database at all. You should write your business logic so that it isn't dependent on a database, so you can really test the business logic and you don't have to mock the database.

If you're talking integration tests, then of course you should use an environment as close to production as possible.

<comment><USER38> For some apps, business logic depends on database functionality. For example, I rely on Postgres to prevent duplicate records, or delete cascades.

In any case, using SQLite when doing TDD, and testing with postgres when you are done implementing is an acceptable trade-off for most use cases.

</comment></comment><comment><USER39> SQLite is awesome for rapid prototyping and proofs of concept work. But you should pretty much always move to a real RDBMS once you start nearing beta. There's some advantages to using SQLite early on when you're still figuring things out, but once you've nailed down the schema and queries and done some early validation testing, you pretty rapidly run out of advantages and it's just better to go with something like Postgres.

It doesn't really take a lot of discipline or work to switch over, and once you're entering beta candidate territory, that's when features and performance tuning start to take over and that's where something like Postgres starts to shine in comparison.

Even if you keep with the same schema and queries, just moving over to Postgres on a separate box, you'll probably start to see immediate performance improvement _and_ you'll get better scaling performance almost immediately.

</comment><comment><USER40> My two cents on this topic - as usual, the answer is neither black nor white. At the end of the day, an in-memory SQLite database works very nicely as a stub for most standard SQL queries as part of a unit test mocking system.

It allows you to create, populate, test, and teardown an entire relational DB in hundredths of a second, which makes it ideal for unit tests where you want to clean the slate between tests to ensure that you aren't accidentally creating silent dependencies on a database state created from a previous test.

On the other hand, when you're done doing your Red-Green-Refactor cycle for a new feature, you want to immediately run integration tests, which will exercise your program against not only your production model database, but the other APIs you had mocked out for regular unit testing.

Mocking is good for iterative development, and SQLite is a great 80% tool for mocking.

</comment><comment><USER41> He claims SQLite doesn't have CTE's but I believe it actually does.

<comment><USER42> Definitely seems to.

[https://www.sqlite.org/lang_with.html](https://www.sqlite.org/lang_with.html)

</comment></comment><comment><USER43> It would be nice if you could embed it and run in memory so it's as convienent.

And yes, you can do CTEs in SQLite but that's besides the point.

</comment><comment> Jean-Philipe I also started using SQLLite for testing (through an ORM), but at some point it became too painful to maintain and didn't find all of our bugs. It's not even any faster than Postgres.

</comment><comment><USER44> This depends on what the other options are. If you have

* test with SQLite

* test with Postgres

then using the same environment as production (Postgres) is of course better, but if the real options are

* test with SQLite

* don't test

SQLite is much better!

</comment><comment> ju-st My experience with testing with Sqlite and Mysql when the customer uses MS SQL is very bad. JDBC only theoretically abstracts the real DB...

<comment><USER45> Since when does JDBC abstract the real DB in theory? All JDBC does is provide a common interface to execute a statement and receive result sets.

</comment></comment><comment><USER46> What about if you're using an ORM, wouldn't that fix the issues mentioned?

<comment><USER47> No. It's perfectly possible to create queries via an ORM which work with one database engine but fail in another - whilst not SQLite and Postgres I've managed to do this several times with Entity Framework and Oracle trying to use CROSS APPLY thinking it is connecting to MS SQL Server.

<comment><USER48> Its perfectly possible to create queries that work with configuration of the same database and fail in the other.

</comment></comment></comment><comment><USER49> Can we all go through and s/SQLLite/SQLite? The inconsistency in the article and the comments is overwhelming.

<comment><USER50> Seriously. How is someone that does not even know the correct name of the software supposed to know enough about said software to know whether it is similar enough to be a good test replacement?

I know this is a bit too much against the person, but here that is directly relevant to the topic at hand.

Not that he is totally wrong, but he is wrong in the universality of his argument. It depends on what postgres-specific features the software is using and how the communication with the database is handled. If it is handwritten SQL, it is not a good idea regardless. If it is a ORM that maps the two very well and there is noting postgres-specific about the software, it is unlikely to be a problem.

</comment></comment><comment> ryan-allen Really??!!

</comment><comment><USER51> I reckon it's okay to do this in the right circumstances:

\- It's a relatively simple app \- You're using an ORM \- You aren't using any advanced SQL features \- It's only to make local development easier \- There's still a full CI test run with your production database

That said, if your test suite is large enough that database performance is an issue during testing then either your app is too complex for the above to apply, or you are probably doing something else wrong.

</comment><comment><USER45> So the alternative is to mock out every database call or use a full database to run the tests. Using an in-memory database is convenient, keeps your tests portable and most importantly it helps catch a lot of bugs that might of been missed with mocking. It might not be as good as using the real DB, but its better nothing.

<comment><USER4> PostgreSQL will be close enough to an in memory database if you turn off synchronous_commit. For most test ssuties I would suspect much more time will be spent plannign the queries (which can be improved with prepared staatments) than the time spent on disk IO if you just reduce the durability requirements of your test database.

</comment></comment><comment><USER52> Some comments on the arguments:

(1) SQLite did never claim to be as "complete" as other databases -- it is and will be a "lightweight" database.

(2) Everybody with marginal knowledge of different databases should know, that using different databases always puts you on risk and needs extra testing. You would also not recommend to develop your application on Linux, use a crosscompiler and ship the product on Windows untested. And with that said, most of the arguments can be deleted.

(3) When you are using an ORM, most of the arguments are obsolete, too.

<comment><USER53> > When you are using an ORM, most of the arguments are obsolete, too.

At the cost of pretty much everything you get out of using something that isn't SQLite.

</comment></comment><comment><USER54> This is way simplistic. Frequently testing with the real database wastes a tonne of time. I've worked with a team where running a single test with the true database took a minute, and there were 200 such tests.

Thankfully, the only guarantee they needed was that provided by a key-value store, so a ConcurrentHashMap was used on dev machines.

Then the true database was used by the CI server, and commits only occurred when all of the tests passed with the true db.

All of the OP's reasons would (in many cases) pale in comparison to 'My tests take hours to run'.

<comment><USER4> If every test takes a minute then the database is probably not the culprit. I would suspect the test suite does something really stupid which a faster database would not fix.

We have a slow, unoptimized test suite (it does some really stupid things) which hits the database in most test cases and it still manages to complete 6166 tests in 4 minutes on my laptop (this includes setting up and tearing down the database).</comment></comment>


How millions of trees brought a broken landscape back to life - <AUTHOR> https://www.theguardian.com/environment/2016/aug/07/national-forest-woodland-midlands-regeneration <comment><USER2> A similar transformation has been done in Eastern Germany since the wall came down. The GDR was heavily dependent on brown coal for its energy production, devastating large areas of countryside in northern Saxony (south of Berlin) with open pit mines. Today these pit mines are flooded and have been turned into lakes. The difference when traveling though this area in the mid-90's couldn't be greater. Huge deep dirt holes with rusting machinery have been replaced with blue lakes with white sailing yachts amidst green forest and heathlands.

Here's a 2010 article (one of the few in english I found): [http://www.spiegel.de/international/germany/extreme- makeover...](http://www.spiegel.de/international/germany/extreme-makeover-the- watery-future-of-east-germany-s-coal-mines-a-717855.html)

</comment><comment><USER3> Overall the situation of forests in Europe has been improving since the 90s [0].

In Germany wolves are back [1], elks are beginning to come back [2] and occasionally even a bear visits [3].

Of course this is only partly intended. Many effects - like the German Green Belt [4] - are just a consequence of the fall of the Soviet Union or - like in the article - dying industries. Still I find it very uplifting how fast nature can recover.

[0]: [http://data.worldbank.org/indicator/AG.LND.FRST.ZS](http://data.worldbank.org/indicator/AG.LND.FRST.ZS)

[1]: [http://www.telegraph.co.uk/news/worldnews/europe/germany/113...](http://www.telegraph.co.uk/news/worldnews/europe/germany/11384912/Wild- wolves-westward-spread-continues-across-Europe-as-pack-spotted-in- Germany.html)

(2): [http://www.spiegel.de/international/germany/wild-elks- return...](http://www.spiegel.de/international/germany/wild-elks-return-to- germany-a-853581.html)

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

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

</comment><comment><USER4> One thing makes me curious. Here in Carpathians, if you leave unmaintained plot of land, it will turn into forest by itself in 20 years. First it gets grown over by blackberries, wild roses and other thorny bushes (birds excrement the seeds everywhere). Few years later, between the bushes trees (like maple) will grow from seeds brought in by wind. You can't plant trees directly into the grass, they don't compete well with it and prefer growing between the bushes instead. Why apparently noone in the UK realized that there's easier more natural way?

<comment><USER5> I've seen the same phenomenon in New England. If you stop mowing a field for five years, within twenty you'll have a young wood lot. Clear-cut forest grows back even faster - as you said, two-three years of blackberries, then hardwood whips will come back from the seed dormant on the ground or the old stumps, and grow up into harvestable timber again in short order. Unless the logging companies are trying to grow a piece back with something that wouldn't naturally grow, there's rarely a need to replant.

I would suppose that in this situation, the landscape is too devastated for the natural process to quickly recolonize the area. With so much open pit/strip mining, the old topsoil is stripped away,so all of that residual seed that would otherwise spring up no longer is present, and the soil present is far less welcoming to any wind-blown or animal-deposited seed.

</comment></comment><comment><USER6> I'd love to see the ecological models or decision making rules that were applied to decide where to plant the trees, what kind and how many to plant, and any other imporant factors that a lay person like myself might not think of. Open sourcing the decision making process could spread these techniques to many more locations.

</comment><comment><USER7> The UK is completely strong enough to invest in areas of need around the world AND in the landscape/enviroment in the UK also.

It's a matter of priorities and political will (both by the UK and Indian government), not ability nor lack of need by those aid is aimed at.

</comment><comment><USER8> a really nice short movie about this subject: [https://www.youtube.com/watch?v=KTvYh8ar3tc](https://www.youtube.com/watch?v=KTvYh8ar3tc)

</comment><comment><USER9> > _" Why would you not do this? It has cost just £2.5m a year..."_

This is is a real feel-good success story and all for 2.5 GBP a year. The frustrating side of this is that the UK Government gives hundreds of millions of GBP in aid _per year_ to nations like India, who have their own space program. Just imagine how this money could be used to transform the landscape and environment in the UK itself.

<comment><USER10> In hn of all places, I'd expect people to appreciate the benefits of a space program. Are you saying that should not be a priority because they recieve aid?

I mean, there is valid criticism of any aid program, and you pick _that_?

<comment><USER11> His point is that if India can afford their space program, UK should not be sending them aid.

Ie just like if your cousin decides to buy a Ferrari, you probably should not have to to support him financially.

<comment><USER10> And I disagree with that point. India is a large country. I believe having a space program is a sensible long term investment.

A space program is not a luxury.

<comment><USER11> I guess the point is that _some_ benchmark should be used to determine whether a country is rich enough to take care of it s citizens. You and the commenter above disagree whether _space program_ can be considered such metric.</comment></comment></comment></comment></comment>


HOWTO: Get into grad school for science, engineering, math and computer science - <AUTHOR> http://matt.might.net/articles/how-to-apply-and-get-in-to-graduate-school-in-science-mathematics-engineering-or-computer-science/ <comment><USER2> Excellent tip on asking for a STRONG letter of recommendation when approaching faculty, this probably would have saved me some heartache in the past.</comment>


How important is the architecture / topology of distributed systems? - <AUTHOR> http://blog.couchbase.com/topology-architecture-distributed-systems

<comment><USER2> Compares Apache Hbase and Apache Cassandra. Also compares MongoDB with Couchbase. I know essentially nothing about any of these and I think it makes a good point. (I do have a certificate in GIS, which is database stuff, and also worked had a job that involved accessing multiple databases, so not entirely alien. But I don't code these things.)

Edit: Oh, and, not surprisingly, they are singing the praises of their product. I don't have an issue with that. I kind of expected it. But, hey, believe in your product or do something else, you know?</comment>


Debian Linux Release (16.08.1993), tomorrow is the 20th birthday - <AUTHOR> http://groups.google.com/group/comp.os.linux.development/msg/a32d4e2ef3bcdcc6

<comment><AUTHOR> Slackware, FreeBSD and NetBSD have already celebrated their 20-th birthday this year. Red Hat Linux will be 20 in november 2014.</comment>


Reddit user bgog explains why the US Internet traffic is so slow right now - <AUTHOR> http://www.reddit.com/r/AskReddit/comments/of0lu/wtf_is_going_on_with_the_internet/c3gqvi2

<comment><USER2> It doesn't do that, it's just a generic explanation of routing.

</comment><comment><USER3> Well, it's a generic description, we don't really know how many routers and hubs are really down. There's a better post downthread listing actual issues, but none of them look major.

</comment><comment><USER4> The site with the bad statistics is likely bad.

This <http://www.internetpulse.net/> is a much better site to see what is actually happening.

</comment><comment><USER5> How is this the first we're hearing of this?

This seems to be an extraordinary issue, how is this not covered in any form of media?

<comment><USER2> Because it's not true...</comment></comment>


Handbrake 0.9.2 arrives - <AUTHOR> http://handbrake.fr/

<comment><USER2> I don't think this belongs on YC.

<comment><USER3> why? It may not be startup related, but this seems like very cool software. I haven't seen the code, but from the list of features and my own experience using it, its very useful.</comment></comment>


Self-serve Linode Resizes - <AUTHOR> http://blog.linode.com/2009/09/09/self-serve-linode-resizes/

<comment><AUTHOR> My favorite VPS host just got _favoriter_. There is nothing in my credit card statement that I am more satisfied with than my linode subscription.</comment>


Ask HN: What does a region/city need to encourage startups? - <AUTHOR> What do you think the key drivers are that encourage start ups - particularly technology based to form and grow. I.E if you were developing a strategy to encourage a startup community in your city what would you do?
I think one of the key factors is the availability of funding.
What Else? <comment><USER2> Good question! Lots of cities all over the world are trying to find an answer to that. And it is much more complicated than it looks at the first glance - there are many different problems that need to be solved for startups to grow.

Surely, funding is very important and existing startup ecosystem (meetups, incubators etc) is crucial as well. But since we at Teleport are helping smart people move, we are also hearing from them what are the most important issues for them. This is the top4 and it has some surprising elements:

1\. Low pollution 2\. Low living costs 3\. Low crime 4\. Tolerance

While low costs and crime are very understandable, pollution and tolerance could be a bit surprising. But that shows that startups want to grow in cities where their employees can live a good life - it's safe, it's green and the level of tolerance is high. So focus needs to be much wider than just the capital.

Different cities have very different challenges, here is the comparison of London and Berlin: [https://teleport.org/compare/berlin-and- london](https://teleport.org/compare/berlin-and-london)

While the level of startups and capital is surely higher in London (the best in Europe), the environment and living cost are better in Berlin - every city must find their own marketing story.

<comment><AUTHOR> Thanks! I live in a western country so 2 or 3 of the following are covered. The more people I talk to the more I find that funding is the biggest risk - that and people will not risk their current secure job for a venture that will not be backed by investors without showing strong traction.

</comment></comment><comment><USER3> It's not just the availability of funding, it's the type of investors and their expectations. Outside of Silicon Valley, local investor communities tend to be focused on consistent performance across the companies in their portfolio. In Silicon Valley, investors seek companies with the potential for wide variation because that's what the unicorns are [sure they'd like everything to be a unicorn, but they know that it won't be].

The reason this works in Silicon Valley there is a critical mass of companies (and hence deals) financially structured to "go big or go bust." Hence a portfolio can be diversified. It is unlikely that a random city will have sufficient companies built this way to support an investor community optimized for startup investing.

<comment><AUTHOR> Thanks, I think this really hits the nail on the head - and it's exactly what my country and city struggle with.</comment></comment>


Netflix's US Catalog Has Shrunk by More Than 2,500 Titles in Less Than 2.5 Years - <AUTHOR> https://www.allflicks.net/netflixs-us-catalog-has-shrunk-by-more-than-2500-titles-in-less-than-2-5-years/ <comment><USER2> This has been apparent as a Netflix subscriber and basically has sent me back into buying my videos rather than believing I'll be able to stream them. And oddly that works in the cable company's favor as their extortionate price becomes less than the aggregate price of all the streaming services which would be required to replicate their "catalog."

The most interesting model is the mixed own/stream model at Amazon. Amazon continues to have movies for purchase which it doesn't stream as part of Prime, and those movies are "permanent"[1] when you buy them so you can go back later and re-watch them. Not true for Netflix even with some of their obscure "B" titles.

I expect it will continue to get weird before it gets better.

[1] Well as permanent as anything Amazon does, which is to say they could revoke access at any time for any reason.

<comment><USER3> Netflix disc subscriptions are still a thing [1], I use it enough to definitely make it cheaper than buying and most months use it enough to make it cheaper than online rentals. Obviously it lacks instant gratification but it nicely augments streaming options. Sadly it has degraded somewhat, they stopped processing discs on Saturdays, many more studios issue "rental only" discs that lack the special features, and it's common for there to be a "blackout" period of a few months between when a disc is released for purchase and when it's available for rental.

I have almost no interest in buying movies or TV shows, there are very few I'll want to watch again and I won't know in advance which ones I will want to re-watch. Hell, even after seeing a movie I may not know if I'll want to re- watch it, even if I thought it was very good.

[1] [http://dvd.netflix.com/](http://dvd.netflix.com/)

</comment></comment><comment><USER4> Eh, without knowing the quality of the titles that have been removed, it's impossible to say if this is good, bad, or neutral, nor is it possible to make any conclusions regarding the cause.

For all I know, they've just been culling the truly massive collection of low- budget garbage that's infected the service since its inception.

<comment><USER5> you can look at the quality of the titles they currently have to see it's mostly B-movies, odd-docs and a precious few 'A-level' of either. While they're dumping lots of cash into their own films, shows, etc... they certainly aren't looking to get any more 'big name' movies...

<comment><USER4> I don't know that that's true. For every piece of B-rated schlock that arrives, they're also bringing on AAA content. Is it every major new release? No. But it's not trivial.

And I should point out I'm speaking as a Canadian... which might mean my bar is a lot lower. :/

<comment><USER6> > I should point out I'm speaking as a Canadian... which might mean my bar is > a lot lower.

How unpatriotic (grin). My experience has been that Canadian film is high quality. Less hollywood car chases and explosions. I think this is due to the funding from the national film board.

<comment><USER4> Ha ha! No, no, my point is that the selection on Canadian Netflix is but a pale shadow of it's American counterpart. :)

</comment></comment></comment></comment></comment><comment><USER7> The selection on Netflix started out bad years ago and declined from there. I've started using VidAngel for almost all of my movie streaming lately. They've got a great selection of movies/shows including new releases (e.g., The Martian, The Big Short, The Good Dinosaur, etc.) that I can stream for $1 (or keep if I prefer). The filtering is a nice bonus (no more JarJar Binks). They even have a "Not on Netflix" section.

I realize that the above sounds like an advertisement. It's not meant to, I truly use it daily.

[http://www.vidangel.com](http://www.vidangel.com) (naked link) or [https://www.vidangel.com?vip=c5smk9fr71](https://www.vidangel.com?vip=c5smk9fr71) (referral link)</comment>


Mobile Apps: HTML5 vs Native - <AUTHOR> http://www.ericsink.com/entries/html5_vs_native_apps.html

<comment><USER2> Native apps are better, sure. But as a developer, do you really like porting apps and maintaining duplicate code? I'd rather invest my efforts in CSS styling HTML 5 to get a very nice looking interface than maintaining one app with 4 different code bases.

But you have a point. People never liked Java desktop apps. But part of it was that you had to install the Java runtime and they didn't have the familiar .exe extension.

With HTML 5 you can just plug it into an embedded browser and let users download that. Then you can add a hybrid approach where you add some native features such as notifications and camera support while the main content is HTML. Plus, designers can work a lot better with developers on the web paradigm.

</comment><comment><USER3> I think we need to look at each app on a case by case basis. You can't blanket say 'native is better' or 'web is better'.

If you're creating a mobile app that will mostly be used over 3G, your user experience is going to be different than an app used only/mostly with WiFi.</comment>


Ask HN: Direct-to-consumer genome sequencing - <AUTHOR> Hi HN,
There was a thread yesterday[0] around the inaccuracy of DNA tests from likes Ancestry & 23andMe that was intriguing and I'm hoping to get opinions on the subject.
I'm a co-founder in a genome sequencing lab where we work only on research projects for clinicians, pharmas, etc. We currently don't do direct-to-consumer. However, we're big believers in having access to service and data that tell you more about YOU with no strings attached.
The thread from yesterday sparked an idea: what if we offered targeted genome sequencing direct to consumers?
The value props:
- We provide targeted gene sequencing on certain focus areas (cancer, inherited diseases, etc.) targeting 100's of genes at a time
- We do true genome sequencing instead of genotyping. So instead of just going for certain SNPs, we do the full gene
- We provide deep coverage (eg. 200x) so that you get quality data
- We destroy your data once you confirm you receive it and never resell it or use it in aggregates (with a way to validate & verify this to consumers)
- Price point would likely be around $100-$150 per test with around 1 month turnaround time
- You would get the raw data but no analysis
What I'm curious about is whether or not this would be something people would be interested in. In essence, we'd be giving you raw data for you to interpret on your own and do what you please with some light support/direction from us on how to visualize the data. Our theory is that folks are generally curious about themselves and would learn of ways to explore their true genetic data and develop communities to do so.
What do you think? Thanks for the feedback! [0] https://news.ycombinator.com/item?id=18938750 <comment><USER2> The problem that seemed to be largely missed in the discussion yesterday, is that it isn't the lab work that is sloppy (granted, they aren't doing whole genome sequencing, but there is nothing to indicate that their actual lab work is shoddy--edit: particularly when part of their business model is selling their database to pharma). The ambiguity comes in from the analysis and the size of the reference samples and the extrapolation of what we can actually tell from that (a lot less than is commonly assumed). You're not solving the problem by avoiding that part of the equation altogether since that part is the problem. Raw data is largely useless to the vast majority of consumers.

Edit: There is also a reason why the sort of data that you are proposing to provide is usually accompanied by genetic counselling. You might want to consult a bioethicist about your proposal if you decide there is enough interest in the service.

<comment><AUTHOR> That's a good point and appreciate the critical feedback. This is the debate we've been having is that we don't want to get close to the "diagnostic" or "insights" world due to regulations.

Part of us believes that there are enough people who just want the data with some suggestions on tools to explore the data for their own curiosity. Almost like a hobby (similar to what genealogy use to be). Perhaps this is false but need more proof points.

There is the option of a sort of marketplace/forum/app place that we explored. Effectively, you'd get your data and then have a handful of options that we'd offer up as next steps. Instead of keeping that all in house, we'd act more as a platform to bring together the right services and software so that people can explore at their own will.

</comment></comment><comment><USER3> I'd certainly buy your services!

How would it be in practice? I tell you which genes I want sequenced and pay, you send me the vial for a cheek swab, then a month later you mail me an encrypted file?

If you had been on the market last year, I'd already have asked you to do 2 genes!

<comment><AUTHOR> It would likely be very similar to our existing service. We send a swab kit, you send back, we group it with other consumers, sequence, then send data back through some encrypted way.

We'd likely offer 3 kits out of the gate that are specific to certain areas of interest (cancer, inherited disease, etc.). Over time, we could expand this but I'd do this as just sort of a proof point.

In theory, we could create a custom targeted kit for any gene(s) but it's usually cost prohibitive since you generally order in batches of 24 samples.

The hardest part would be getting enough samples from different consumers to make the runs cost effective. We'd likely need at least 20-30 samples before we could run, so need to think through the logistics there.

<comment><USER3> I am less likely to need a specific gene you sell (cf your list: cancer, inherited disease -uh thanks but no thanks) vs a few genes of interest that may not interest other people. You may want to adjust the price and the service accordingly, for "one shots".

Actually, if you can start selling service soon, get in touch. There are 2 phenotype genes we'd still want sequenced this year.

We just want the raw sequence of the maternal and paternal alleles. No nonense, no counseling or whatever - just the full raw data.

It's the perfect opportunity to get your first customers and open minded guinea pigs :-)</comment></comment></comment>


Technology is now destroying more jobs than it creates - <AUTHOR> http://www.businessinsider.com/technology-is-destroying-jobs-and-it-could-spur-a-global-crisis-2015-6

<comment><USER2> I believe that history disproves the idea presented. Ever since the start of the industrial revolution there are have been luddites thinking that mass unemployment are around the corner because of technology. Once 90% of the country (England) was involved in agriculture. Today it is down to around 10% but we do not have 90% unemployment. Those workers have been released to do other work.

So far there is no end in sight for human wants and needs and so there is no sign that demand will stop at a point that creates the mass unemployment envisioned. Income inequality is the big issues.

<comment><USER3> > there is no end in sight for human wants

This is exactly the point.

There will probably be markets that don't support more growth, like agriculture, so lesser people will work there.

But if a company suddenly can produce the same with 50% of the workforce and the marked still has place to grow, they will simply produce 200% and keep their employees.

</comment></comment><comment><USER4> I'm pretty sure that steam shovels destroyed more jobs than they created, too. Samuel Butler, a century ago contemplated that change and also foresaw that this would eventually happen to jobs requiring more brain work, as well.

But the real problem is, what happens when the vast majority of people can't offer any kind of labor or service that a machine can't do quicker and better. Will we need a second economy? (As the medieval church once was.) Will we prepare for this eventuality or just blunder into it?

<comment><AUTHOR> We will definitely need to change to a different type of economy, new problems will be:

How do we set a value to things and services, since some resources will still be limited? For example we won't all be able to travel as much as we want.

Some jobs will still exists and will take a long time before they can be replaced by robots. Some will be desirable, we can share those more so people don't have to work as much, but some won't. How are we going to chose who does those jobs?

<comment><USER5> If a job is undesirable and can't be automated, you would expect it the command a much higher level of compensation.

<comment><AUTHOR> Yes, we're back to the problem of value...

If there is not enough work for everybody, and a lot of tasks are covered by robot, we end up in a sharing economy. How do you assign value in a sharing economy?</comment></comment></comment></comment>


Ask HN: How do app's like TextFree get phone numbers to give out? - <AUTHOR>

As an app developer how can I acquire phone numbers that I can pass along to my users and hook those phone numbers into my app as part of the service? Whether it's for voice, fax or texting? Are there companies that provide this kind of service are these solutions custom built in-house telephony stacks? <comment><USER2> I believe Twilio allows you to do this.

For example: <http://www.twilio.com/docs/quickstart/sms/hello-monkey>

I'm not sure if everyone gets access to this or just the main person who signs up with Twilio.

<comment><AUTHOR> looks like Twilo gives your app a phone number but I couldn't find any info on generating phone numbers for the app's users, let me know if I missed something in their docs.</comment></comment>


Playdar - music content resolver service - <AUTHOR> http://www.playdar.org/

<comment><AUTHOR> Some more info:

This is from Last.fm developers, esp. RJ (Richard Jones), mxcl (Max Howell; the guy behind Homebrew) and others.

The current source is written in Erlang. <https://github.com/RJ/playdar-core>

There is some old abandoned source written in C++: <https://github.com/RJ/playdar>

I found this while searching for the Boffin source code. Something about Boffin:

* [http://blog.last.fm/2009/03/11/introducing-boffin-lastfms-mu...](http://blog.last.fm/2009/03/11/introducing-boffin-lastfms-music-knowledge-meets-your-mp3-collection)

* [http://www.last.fm/group/Audioscrobbler+Beta/forum/30705/_/5...](http://www.last.fm/group/Audioscrobbler+Beta/forum/30705/_/510180)

And in the abandoned C++ repo, there is something about Boffin (haven't really looked much into it yet): <https://github.com/RJ/playdar/tree/master/resolvers/boffin></comment>


AMD Ryzen V1000 Single Board Computer PROFIVE NUCV - <AUTHOR> https://www.eepd.de/en/boards/single-board-computer/sbc-profiver-nucv-x86/ <comment><USER2> Welcome to the world of neat single board computers that are not available on the consumer market.

If someone wanted to negotiate the purchase of a large number of these and sell them retail there might be a market. Otherwise expect insane prices for single digit quantities.

</comment><comment><USER3> With all those photos, you'd think they'd have one of the bottom. Where is the CPU?

</comment><comment><USER4> I've been watching the udoo bolt in this type of space (small form factor ryzen based pc for a possible homelab) but their lede time is quite far out:

[https://www.mouser.com/Search/Refine?Ntk=P_MarCom&Ntt=135138...](https://www.mouser.com/Search/Refine?Ntk=P_MarCom&Ntt=135138089)

Good sign that more of these are coming to market.

</comment><comment><USER5> I'm also very interested in this for a home lab / home business VM host. Looking for prices if anyone has them!

<comment><USER6> Have you looked into Intel NUCs? I had a 6i7kyk for a while and it was just unbelievable.

<comment><USER7> The Ryzen explosion on HN as of late is because the AMD chips have not fallen victim to MDS, and I think people have been looking for alternatives to the Intel monopoly.

</comment></comment></comment><comment><USER8> Definitely cool, will probably be quite a bit better option than the Atom and other x86 Intel options in this space. Pricing, availability and ordering would be desired info.

If these are available in the $50-250 range, I think they'll sell incredibly well.

<comment><USER9> ~480 EUR for the top model currently, at bulk, about 100 euro more expensive than the Bolt but it also operates at higher clocks.

</comment></comment><comment><USER10> No pricing information included. Maybe it's not targeted for hobbyist use?

<comment><USER11> It says industrial and automotive all over the page and mentions how wide an input voltage it takes and that an extended temp range will be available later.

Definitely not targeting hobbyists.

</comment></comment><comment><USER12> If you're looking for a non-Intel non-Chinese board, there is APU:

[https://pcengines.ch/apu2.htm](https://pcengines.ch/apu2.htm)

* AMD Embedded G series, 1 GHz CPU

* 2 or 4 GB RAM

* 2 to 4 NICs

* coreboot BIOS

* ~150 EUR

I'm using a predecessor for quite some time as a firewall and DNS/DHCP server.

</comment><comment><USER13> I'll never understand companies who can't be bothered to put a price on their product page. Do they think hiding information behind an email request form will help them sell products?

</comment><comment><USER14> How do I buy this?

</comment><comment><USER15> Price???</comment>


Search Startup Bans Content Farms, But is That What People Really Want? - <AUTHOR> http://www.readwriteweb.com/archives/are_these_the_top_20_content_farms_on_the_web.php

<comment><USER2> It would be great to be able to use my Google account to flag sites that I want excluded from search results. Don't want to see eHow? Click. Don't want SO clones? Click.

Google could then use this data to help identify sites that "spam", much like how their gmail spam filter works. I'd be happy to have google guess what sites I don't want to see based on people with similar "spam flag fingerprints".

They could even show me a list of the sites considered spam and I could check the blacklist for false hits.

Perhaps Blekko or DDG offer such functions? If so, do tell!</comment>


Show HN: Partsie, a new minimalist video rating service [need beta users!] - <AUTHOR> http://partsie.com/

<comment><AUTHOR> We called this service Partsie because when we think of video clips/songs, we usually remember the more interesting parts of it. Remember when someone begins a conversation with "Did you watch that clip, I liked the part where..."?</comment>


ICOs have raised $11B so far in 2018 - <AUTHOR> https://offthechain.substack.com/p/crypto-news-august-10-2018#comments <comment><USER2> I click the link. There's no article waiting for me. The FAQ tells me that I need to pay to read their journalism because "good things in life aren't free ;)".

No, I think the free headline is sufficient.</comment>


AWS Lambda Makes Serverless Applications a Reality - <AUTHOR> http://techcrunch.com/2015/11/24/aws-lamda-makes-serverless-applications-a-reality/?ncid=rss#.iqrhs1:mzPV <comment><USER2> It's funny we tested lambda + Amazon gateway api this week at work.

It's awesome!.. Until you have to deal with the cold start issue. Our first call takes about 1.5 seconds; and then all other calls take about 50-80ms.

Your container stays in cache about 5-10 minutes unless it is called back, there are no guarantees.

This micro service is not called often and for us 1.5 seconds is never acceptable.

<comment><USER3> You could use a scheduled cron task in Lambda to make requests to keep your API hot.

<comment><USER2> Yeah we thought about that, but is it reliable? We were really not sure we could always get rid of the cold start issue.

<comment><USER4> AWS Lambda function schedules are driven off the same fault-tolerant, highly available service that powers SWF. (So...yes, they're reliable :)

<comment><USER5> Is keeping it hot with a cron job reliable though?

</comment></comment></comment></comment></comment><comment><USER6> Take a look at the JAWS stack which makes heavy use of Lambdas:

[https://github.com/jaws-framework/JAWS](https://github.com/jaws- framework/JAWS)

Previous JAWS HN post ~4 months ago:

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

</comment><comment><USER7> Has anyone using Lambda gotten Amazon to substantially increase the limits on concurrent jobs? We asked for 10k and they gave us 1k. The article posted in this thread and other sites use words like "limitless" and "massive," but 1k concurrent requests is ... tiny. We're hesitant to keep building around this architecture because of the limit.

</comment><comment><USER8> How does one version control the scripts and easily deploy them? How does one test them on one's own computer when developing them? Must the scripts be uploaded into AWS after every change if testing is to be done?

<comment><USER9> It's very easy to test scripts locally - here's my quick and dirty SNS->lambda tester script - [https://gist.github.com/alexbilbie/cd1a1309bd7267d860b0](https://gist.github.com/alexbilbie/cd1a1309bd7267d860b0)

Deployment is easy too; I've got a two line bash script that zips the code then uploads it using the AWS CLI.

Versioning documentation can be found here - [http://docs.aws.amazon.com/lambda/latest/dg/versioning- alias...](http://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html)

</comment></comment><comment><USER10> I just stumbled onto this Lambda example project today, looks pretty interesting: [https://github.com/awslabs/simplebeerservice](https://github.com/awslabs/simplebeerservice)

</comment><comment><USER11> If Lambda is able to expand the /tmp disk space from 500MB to a few GB I think that will further make the adopter better on my end. I have a requirement in which Lambda is a perfect solution except the disk space is not enough. Of course I can further divide the work into smaller chunks. If you have use distributed task library like Celery, just think of that no longer tie to your application, and you can run on event based (S3, SNS, email notification via SNS). It's quite awesome. You can probably build a public API using Lambda and API Gateway.

However, once you start using Lambda, like distributed system, testing becomes a challenge if you are used to testing everything you own in one or two monolithic codebase. I wish someone could come up with a mock version of AWS :-)

<comment><USER4> Appreciate the feedback/suggestions! We'll take a look at expanding the disk space, probably as part of the "power level" adjustment that already affects memory, CPU power, etc.

<comment><USER12> One minor feature request would be to allow Scheduled Events every minute. My current solution is EC2 -> S3 file every minute, but it's a kludge.

<comment><USER11> There is : [http://www.slideshare.net/AmazonWebServices/cmp407-lambda- as...](http://www.slideshare.net/AmazonWebServices/cmp407-lambda-as-cron- scheduling-invocations-in-aws-lambda) but I kinda dislike the whole complexity). This is a new feature.

</comment></comment></comment></comment><comment><USER13> My contribution to the Lambda application construction party:

[https://github.com/exratione/lambda- complex](https://github.com/exratione/lambda-complex)

Lambda Complex is a Node.js framework for applications that run entirely within Lambda, SQS, and other high abstraction layer AWS services. It is well suited to non-realtime content generation and other types of application driven by message queues and which require enforced concurrency limits. Examples include high volume generation of static content from data or other types of workflow initiated in response to messages placed into SQS queues.

</comment><comment><USER14> We're considering using API Gateway and Lambda for our upcoming API service. Would love to hear feedback from anyone who's tried it. From the linked article, I got one gist [1] which wasn't very favorable for the API Gateway + Lambda setup.

[1] [https://gist.githubusercontent.com/mpdehaan/d979252b9c69cfd1...](https://gist.githubusercontent.com/mpdehaan/d979252b9c69cfd1f6ef/raw/9186cb3e0652e592801c58b7440c9fb819e8d240/Arbitrary%2520thoughts%2520on%2520AWS%2520Lambda%2520+%2520API%2520Gateway)

<comment><USER15> I'm so glad you asked this! I _just_ built a service on API Gateway + Lambda in the past two weeks. Here's my unstructured thoughts -

* I love that I don't have to provision any resources. The fact it will scale to volume automatically is a huge win.

* Lambda was a treat to work with. We used it with Python. Both the web console and API interface worked great for us.

* I was able to get Lambda development working end-to-end with a Makefile and the AWS CLI.

* API Gateway was a bear to work with. The concepts are unintuitive, the interface sucks, and the logging is lackluster. I found it difficult to go through the develop/test/deploy cycle on because of these issues.

* API Gateway is brand new. Brand new AWS services have bugs. We hit bugs.

* API Gateway documentation is awful.

* API Gateway had a bug where it stopped logging. If it doesn't log, it is literally impossible to debug. This hard-stopped development for 5 days while they worked on a fix.

* There's an invisible error case where your API doesn't have permissions to invoke the Lambda command. It's easy to hit and annoying.

* API Gateway doesn't support POST requests in the way you would expect. This leads to over-complicated setups for simple use cases.

* I really don't prefer the way mapping templates work in API Gateway.

Overall, our setup is humming along nicely, but it's just 2 routes. I just reviewed the Gist and I agree with many of the concerns expressed in it.

<comment><USER16> Have you reported any of your issues with the API Gateway to us? Please feel free to send them to me via the contact address in my HN profile and I will share them with the team ASAP!

<comment><USER15> I went through official support channels with my blocking issues. They have since been resolved.

</comment></comment></comment></comment><comment><USER17> Serverless = using someone elses servers?

<comment><USER18> I like this explanation: [https://www.quora.com/What-is-Serverless- Computing](https://www.quora.com/What-is-Serverless-Computing)

Quote - Serverless doesn't mean servers are no longer involved. It simply means that developers no longer have to think "that much" about them. Computing resources get used as services without having to manage around physical capacities or limits.

<comment><USER19> I actually think people end up thinking more about it.

Sometimes you have several "devops" people in a small team dealing with orchestrating these "serverless" deployments so as to reduce latency etc.

</comment></comment></comment><comment><USER20> Been having fun playing with Lambda to power various Amazon Echo skills[1]. Definitely easier than having to deploy with something like Elastic Beanstalk, or even App Engine.

We're also using this at mParticle Inc. to allow anybody to add themselves as an integration[2]. The point being that Lambda is a super-easy way to write _some_ server logic, even if it only serves as a proxy to something more complex.

[1] [https://developer.amazon.com/public/solutions/alexa/alexa- sk...](https://developer.amazon.com/public/solutions/alexa/alexa-skills- kit/docs/developing-an-alexa-skill-as-a-lambda-function)

[2] [https://github.com/mParticle/mparticle-sdk- java](https://github.com/mParticle/mparticle-sdk-java)

</comment><comment><USER21> I just ended up using Heroku for an API instead. I was able to use the latest language version and microframework of my choice and still not worry about servers. Setup was way more intuitive than AWS. Testing locally was a known thing and easy. I found wrapping my head around testing API gateway to lambda to aws services a mess. Also all the IAM rules got confusing. I'll probably have another look after it has matured.

I've never used Heroku before and got a production ready API out the door in no time.

<comment><USER22> Heroku is more like Elastic Beanstalk than Amazon API Gateway. API Gateway is more of a Backend As A Service as I understand it, like Parse.

<comment><USER23> API Gateway doesn't really encompass Parse's scope, either. It's more of a router-as-a-service that allows you to forward HTTP requests to other AWS services, Lambdas, or your custom backend (+ do some stuff with IAM and auth, etc)

</comment></comment></comment><comment><USER24> Related submission about unikernels from a few days ago: [https://news.ycombinator.com/item?id=10603915](https://news.ycombinator.com/item?id=10603915)

</comment><comment><USER25> Sounds like an AD for AWS. I wonder which clueless CIO will gobble this up.</comment>


Fast Google Reader alternative written in Clojure - <AUTHOR> http://rssminer.net/ Open sourced as well: https://github.com/shenfeng/rssminer<p>I also think it is the most look-alike Google reader replacement out there and that's a good thing! (for me). <comment><AUTHOR> Open sourced as well: <https://github.com/shenfeng/rssminer>

I also think this is the most similar looking Google reader replacement out there and that's a good thing! (for me). I just want a non-opinionated rss reader. No messing with content or discovery/recommendation. Just good ol rss reader for many feeds.</comment>


Search at every amazon website (.com .it, ...) at once - <AUTHOR> http://yasse.eu This search engine enables you to search a product in every amazon website (for every country) and tells you where you can find the best prices! <comment><USER2> very useful, thanks :)</comment>


ORWL: A physically secure computer - <AUTHOR> http://www.design-shift.com/ <comment><USER2> I'd love to own one, but 800$ is too steep for me.

At first thought it's expensive for basically an (hardened) Intel NUC but then I realized it was the price of a medium range MAC mini.

I guess I need to find a better paying job.</comment>


Offer HN: A better "HN Whose Hiring Process" - <AUTHOR>

HN whose hiring seems like a very inefficient process and I think that two of the products I have created (setatimetotalk.com and cvchk.com) could really improve this process.
I see it working like this
Employer
1) drag and drop resume of ideal candidate
2) view similar candidates
3) pick which to speak to
4) set a time to talk to them
5) get phone call when its time for meeting
subscribe to get email updates of new candidates
Employee
1) drag and drop your resume
2) view jobs you are qualified for
3) pick jobs you like
4) set a time to talk to them
5) get phone call when its time for meeting
subscribe to get email updates of new jobs
The employee part is quite ambitious but I am very proud of the progress I have made.
1) User upload resume
2) I use NLP to map resume items to properties of agent model example: 4 years RoR
3) I then evolve the agent into the ideal candidate for matching jobs (matching == ts vector right now but i will improve)
4) measure the distance that the agent (applicant) needed to evolve to become "ideal" example: ideal = 6y RoR
5) rank and classify based on distance of evolution required
First I want to do jobs then later on doctor -><- patient and lawyer -><- client matches I will have these things ready by the 1st when its time for "HN whose hiring" and will offer for free all I ask is that you help me to make this process better. <comment><USER2> I think the whole point of HN Who's Hiring is that it's on HN using the message format as the rest of the site. That's like saying that Twitter is very inefficient for news publishing because we should be using Delicious instead... well it's efficient for people on Twitter.

</comment><comment><USER3> NLP is used extensively in resume screening at the moment and no-one has managed to perfect it. I'd be interested in seeing the results/accuracy of a search against a large (500+) cross section of resumes uploaded.

<comment><AUTHOR> I think I have had slightly better results than average because I am using ABMs that learn and have social media as precepts. There is a "training" period for each agent where it is trained based on LinkedIn data etc... but I 100% agree with you, I am also interested to see how it works; currently I have not tested more than 100 at a time.

<comment><USER3> I worry that you may be underestimating the competition. bondadapt.com are a prime example. Recruitment companies pay seven figures annually for their system and they've invested an insane amount of time and money into improving their NLP system and, speaking as someone who's used it extensively in the past, its results are relatively poor when you are dealing with a database of tens of thousands of resumes.

Please don't get me wrong, I'd love to see you crack it and if you manage it be sure to share the results!</comment></comment></comment>


How powerful was the Kaiser? - <AUTHOR> http://www.lrb.co.uk/v37/n08/christopher-clark/how-powerful-was-the-kaiser <comment><USER2> If you can find it, the BBC's Fall of Eagles[1] documentary series is one of the best I've seen on depicting the Kaiser and the other 19th Century Monarchs of Central Europe and their downfall. It also has a very young Patrick Steward portraying Vladimir Lenin and his rise to power.

Fall of Eagles depicts the Kaiser as being rather childish, whimsical and always having something to prove. The later being at least partially attributed his self-conscienceness about one of his arms being noticeable shorter than the other (birth defect) as well as envy of British Naval/Colonial power (his mother was also one of Queen Victoria's Children). However, that's pretty much how the actual Kaiser Wilhelm II was during much of his reign. He had his positives though, instilled in him from his English Mother and progressive father, such as supporting worker's rights and funding for science and the arts. However, WWI pretty much overshadows anything else from his legacy.

[1] [http://en.wikipedia.org/wiki/Fall_of_Eagles](http://en.wikipedia.org/wiki/Fall_of_Eagles)

<comment><USER2> > I just saw the first episode of a similar series, royal Cousins at War

Haven't heard of it, but I want to see it. I love the history of that time period because so much of it influenced what happened the next 100 years, but rarely is it mentioned.

I think playing Imperialism[1] when I was a kid sort of drew me into wanting to know more about the late 19th century and the events that lead to The Great War. Any avid strategy gamers out there I recommend it or its more modern (spiritual) successor Victoria 2[3]. Each has some strategic combat, but they focus more on economics and out competing the other countries in resources + manufactured goods.

Thanks!

FYI vithlani, your account appears dead. Looks like it's related mostly to a single comment[2] you made sometime ago.

[1] [http://www.gog.com/game/imperialism](http://www.gog.com/game/imperialism)

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

[3] [http://store.steampowered.com/app/42960/](http://store.steampowered.com/app/42960/)

<comment><USER3> There's a cool youtube channel that covers WW1 and the events that lead up to it [1]. They are covering week by week the events of the war as it happened 100 years ago and it is all very well done and doesn't seem to biased towards any country (aka not too much propaganda).

[1] [https://www.youtube.com/user/TheGreatWar](https://www.youtube.com/user/TheGreatWar)

</comment></comment></comment><comment><USER4> One occasionally hears that hereditary monarchy is superior to democracy because the monarchs must consider the effects of their decisions on their descendents.

<comment><USER5> I have never heard that. It sounds like B.S. to me. I figure that all that power from birth would completely warp a mind, not to talk of the inbreeding.

<comment><USER6> Monarchs don't have all that power from birth. Usually they get it when their parent dies. Why would power warp a mind more than powerlessness, or two decades in a government operated school?

<comment><USER7> Do you actually know anything about monarchy and similar governments as they are practiced.

<comment><USER8> I think s/he has the British monarchy in mind. They either are fine people or they have awesome PR.

<comment><USER6> I said nothing about monarch's being 'fine people'. I just don't think it's obvious that their minds would be more 'warped' than a person chosen from the general population. I was simply asking for some explanation of this, rather than letting the assumption stand on its own.

</comment></comment></comment></comment></comment></comment><comment><USER9> Anyone interested in this, please read "The Sleepwalkers" by Christopher Clark. Its an in depth documentation of all the factors leading up to the war. Its absolutely enthralling, I can't put it down.

<comment><USER10> I'll have to add that to my list. I just got caught up through Dan Carlin's current `Hardcore History` multi-part podcast series on WW1, which is fantastic.

[http://www.dancarlin.com/product/hardcore- history-50-bluepri...](http://www.dancarlin.com/product/hardcore- history-50-blueprint-for-armageddon-i/)

As a former soldier WW1 has always fascinated me in a unique kind of way. WW2 was the largest war in history and likely one of the worst wars in which to be caught in behind the lines as a civilian, but I'm convinced WW1 was the worst war to be in on the front lines as a soldier.

</comment></comment><comment><USER11> I don't know how a person can write about the Kaiser and not even mention once Edwards the 7th. He was the Kaiser's uncle and one of the most manipulative forces upon him. I would say the Kaiser was one of those people who didn't have the chops to function properly in his position, and wasn't very powerful at all in the leadership sense of the word. What really gets me is that this is the backdrop for the entire mess we have found ourselves in since the beginning of the 20th century. Take note of such connections in the following text from Webster Tarpley's "King Edward VII of Great Britain: Evil Demiurge of the Triple Entente and World War 1"

"Edward's mastery of psychological and ideological manipulation is most evident in his relation with his pathetic and unstable nephew, Kaiser Wilhelm. Edward made a detailed study of Willy's psychological profile, which he knew to be pervaded by feelings of inferiority and incurable anglophilia. As Flourens noted: "Edward VII made an in-depth study of the defects of Wilhelm II. He counted them as his most precious allies." (Flourens, p. 58)

The British and Entente demonization of Wilhelm as the world's chief warmonger was always absurd. Wilhelm felt inferior to British royalty. Wilhelm's greatest secret desire was for acceptance by the British royals. Edward could modulate his own behavior to get the desired result from the Kaiser. If he wanted a public tantrum, he could get that. One British writer, Legge, reports that Edward punched the Kaiser and knocked him down in a meeting.

But if Edward needed to be friendly, he could do that too. During the Boer War, in November 1899, when Britain's diplomatic isolation was at its height, Edward was able to con the Kaiser into making a state visit to Britain. The Boxer Rebellion in China, with its overtone of white racial solidarity against the "yellow peril," was also made to order for duping the Kaiser. In Wilhelm's dockside harangue to the German contingent setting out for Peking, he urged his soldiers on to cruelty against the Chinese:

"Give no quarter! Take no prisoners! Kill him when he falls into your hands! Even as, a thousand years ago, the Huns under their King Attila made such a name for themselves as still resounds in terror through legend and fable, so may the name of Germans resound through Chinese history a thousand years from now." (Cowles, p. 177) This "Huns" speech has provided grist for the London propaganda mill for almost a century, from World War I to the Margaret Thatcher- Nicholas Ridley "Fourth Reich" hysteria of 1989. Not just once, but again and again, the Kaiser muffed opportunities to checkmate Edward's plans.

Edward also played on the Kaiser to sabotage the Berlin to Baghdad railway. At Windsor Castle in 1907, Edward demanded that the British keep control of a section of the railway between Baghdad and the Persian Gulf as a "gate," supposedly to block German troops going to India. The Kaiser was ready to grant such a gate. Otherwise, Edward demanded that all talks about the Baghdad railway should be four-way, with France, Russia, Britain, and Germany involved, so that German proposals would always be voted down 3 to 1.

When the war was finally over, and the Kaiser had lost his throne, the first thing he wanted in exile from the Dutch host was a cup of real English tea.

Edward joked with his French friends that while many prayed to an eternal father, he alone seemed to have an eternal mother. Queen Victoria finally died in 1901, and Edward began his drive to world war."

<comment><USER12> _Edward was related to nearly every other European monarch and came to be known as the "uncle of Europe".[37] Kaiser Wilhelm II was his nephew; Tsar Nicholas II was his nephew-by-marriage; Queen Victoria Eugenia of Spain, Crown Princess Margaret of Sweden, Crown Princess Marie of Romania, Crown Princess Sophia of Greece, and Empress Alexandra of Russia were his nieces; Haakon VII of Norway was both his nephew by marriage and his son-in-law; Frederick VIII of Denmark and George I of Greece were his brothers-in-law; Albert I of Belgium, Ferdinand of Bulgaria, and Charles I and Manuel II of Portugal were his second cousins. Edward doted on his grandchildren, and indulged them, to the consternation of their governesses.[82] However, there was one relation whom Edward did not like: Wilhelm II. Edward's difficult relationship with his nephew exacerbated the tensions between Germany and Britain._

[http://en.wikipedia.org/wiki/Edward_VII](http://en.wikipedia.org/wiki/Edward_VII)

The WWI, in some ways, was a proxy of a family conflict.

[http://www.dailymail.co.uk/femail/article-2552270/Royal- Cous...](http://www.dailymail.co.uk/femail/article-2552270/Royal-Cousins-War- tells-family-rift-saw-George-V-Tsar-Nicholas-against-German-cousin.html)

</comment></comment><comment><USER13> Fascinating question. In my opinion, it is because the Kaiser was so inconsistent that such a drama could unfold - his never ending blathering facilitated the rise of hawkish people in his entourage (and the german empire at the time was full of those), in turn increasing the risk of a full scale conflict which eventually broke out in the summer of 1914. It is only insofar that Germany can be deemed as "more" responsible for the outbreak of the first world war. Anyways, the absence of proper check and balances apart from the Kaiser made the downfall of the regime inevitable on the long run.

<comment><USER14> > insofar that Germany can be deemed as "more" responsible for the outbreak of > the first world war

Russia started it. They mobilized on the German border and refused to demobilize. The tsar and friends never got to share the blame because by the end of the war they were all dead.

<comment><USER3> You can't forget the Austo-Hungarian Empire using the assassination of Franz Ferdinand as a pretext to invade Serbia.

<comment><USER15> Please don't forget that that assassination was planned, coordinated and paid for by the Serbian government via Serbian military intelligence chief, Dragutin Dimitrijevic. Serbia was aided in this by the Russian military attache in Belgrade (Viktor Artamonov). Russian radio intelligence was able to read Austro-Hungarian diplomatic cables so they probably were aware of what Vienna's reaction to the assassination they were sponsoring would be.

</comment></comment></comment></comment><comment><USER16> According to Gordon Craig's history of Germany 1866-1945, Wilhelm II complained during the war that none of the generals would tell him anything, except for the one in charge of railways, to whom he was very grateful for the favor. The recent history _The Sleepwalkers_ depicts him as a bit panicked by the approach of the war.

</comment><comment><USER14> The article seems to guffaw a bit about the Kaiser's concerns over the French invading through Belgium. They absolutely were planning to do that! And much of the French leadership was still thirsting for vengeance over 1870. If the Belgian king found a discussion about the subject shocking then he was an idiot.

<comment><USER15> Not to mention Belgian colonialism.

</comment></comment><comment><USER17> I think a better question is, how come everybody wanna keep it like the kaiser?</comment>


Show HN: Beta – Office 365 Desktop Email Client - <AUTHOR> https://www.hiri.com/

<comment><AUTHOR> Hi, I'm Laura, CPO at Hiri. We are a Dublin based, email startup. Hiri is a desktop email client, built to eliminate the email overload and stresses inherent in work email.

Hiri works for those who use Office 365, with Outlook or OWA. Mac and Windows versions are available for download from our website for anyone who is interested. We would be delighted to get your feedback...from bad, to worse, to really ugly.

Or if you have any comments or questions please ask.

</comment><comment><USER2> Curious: Why did you decide to build this off of Office 365? Was that a technical decision (is there something great in their API that you loved) or a strategic one? I can easily imagine the latter, but would love to know if the former also applies.

I really wished you didn't make me fill out a form to download your software. Since I didn't have an Office365 email address, I was hit with this:

[http://cl.ly/image/3k1q2f1A3Q20](http://cl.ly/image/3k1q2f1A3Q20)

It would have been nice if you offered me a link to sign up for an email on 365 then. Ideally, you'd just let me download the software and get all this information later.

Definitely repeat your call to action (download) at the bottom of the page. I know it's fixed at the top, but usually users read with their cursor and so my mouse was near the bottom of the page when I got through everything. Use Fitts's law to your advantage and put a delicious call to action there rather than making me hunt / find what you want me to do at the top. Do this for both Home and Product pages. I would actually consider combining product and home page together.

The copy about your features is pretty good, but this copy I didn't love:

[http://cl.ly/image/0b3S2r2Y0v1K](http://cl.ly/image/0b3S2r2Y0v1K)

It's too generic mission statement for me. This page needs to get me to do one thing: download the software. I'm not sure this copy efficiently does that. If it were me, I'd replace it with this section:

[http://cl.ly/image/3r1B0L3O2U3A](http://cl.ly/image/3r1B0L3O2U3A)

It's not perfect, but these are things I'm more likely to say to someone else when talking about your product. Something I'm more likely to remember.

One question that did come to me when looking at the features: Does the delegate feature only work if other people also have office 365 email addresses?

The weakest part of the site is the video. It made me cringe a little—maybe a lot. It feels very generic and you took a super long time to tell and show me what exactly you were making. In situations where people are making decisions quickly and have lots of choices to choose from…I prefer messages to lead with what over why.

I know it's tempting to lead with why because the passion for this startup and product is rooted in that reason, but you don't get that kind of luxury, time or attention from users trying to solve a quick problem. Usually people are trying to answer two questions very quickly on a site: What is this? Is this right for me? I'm not so sure leading with this video accomplishes that efficiently.

My honest advice is to cut the video. I know you probably spent a lot of time on the video, but don't fall victim to sunk-cost fallacy. If this wasn't a Show HN, I would have probably left the page 10 seconds into that video.

Anyway, I'm going to create a 365 email now to actually try the app. Thanks for sharing and good luck!

<comment><AUTHOR> Hi Kevin, Thanks so much for your thoughtful comments!

1) Curious re. O365: Yes it was a strategic decision for two reasons. Firstly we also have an Exchange 2010 version. Hiri is for work email, an alternative to Outlook - Microsoft have the lions share of the enterprise market. Secondly, installation for Exchange requires a little more configuration as companies can have unique setups. Office 365 users can download directly and just have to enter email/username and password to try it. We really want users and feedback and this is a good route to that. On the technical side, it hasn't been a walk in the park!

2) Regarding your comments on the site/messaging: Thank you! This needs love and attention. I won't list all the things you have said again…because essentially I just agree with them. The one thing I will say is that we do get a good reaction to our video (although it makes me cringe every time because that's me doing the fist pump at the end!)…but yeah, it's probably not the clearest message to grab attention. Changes will happen very soon! What about the idea of putting the signup and download section at the top?

3) Delegate: This works to all email addresses.

We also have a walkthrough video here to give you a better feel for the product - [https://vimeo.com/122338477](https://vimeo.com/122338477)

Thanks again, delighted to hear that you will give it a try - here is my email for any questions: firstname.lastname@example.com</comment></comment>


Show HN: Business Consulting Powered by Chatbots - <AUTHOR> https://parrily.com <comment><AUTHOR> Brand new platform - chatbots and programmed by industry experts and business consultants and can be accessed for free or a low monthly subscription cost. In beta so looking for interested business consultants.</comment>


Ask HN: Best website performance optimization resources? - <AUTHOR> What are the best resources for learning website performance optimization techniques + best practices?<p>eg: https://developers.google.com/web/fundamentals/performance/why-performance-matters/ <comment><USER2> It's tricky because there's backend performance tuning and front end tuning, backend is of course super dependant on your stack whereas the front end is based on standards at least. Is your website static (I.e not an app, not authenticated and not refreshing very often)? Then a (not proud) shortcut to start with is to put a CDN in front of it and then just optimise your front end (css, JS, HTML) and you can google for that (a good start is to try using the Google Pagespeed insights tool - it'll scan your page and tell you what it thinks you need to optimise).

</comment><comment><AUTHOR> web.dev appears to repackage google's website optimization content in a more "narrative" format: [https://web.dev/learn](https://web.dev/learn)</comment>