A look inside Facebook's data center - <AUTHOR> https://techcrunch.com/gallery/a-look-inside-facebooks-data-center/ <comment><USER2> I truly hate this way of laying things out. A set of slides you have to click through is a terrible user experience. An article you can scroll vertically through is so much better. Why would you do this? Is it to force the advertisements on people?

<comment><USER3> On mobile, the layout is vertical. And for some reason, only the first as actually loaded. The rest were blank placeholders. Bonus ;)

</comment></comment><comment><USER4> I wonder if an attack vector could be spinning up all the cold storage servers at once. Seems like they aren't cooled for all of them to be doing IO at once.

</comment><comment><USER5> I found there mobile testing lab to be interesting.</comment>


Karplus-Strong Guitar Synthesizer - <AUTHOR> http://lab.andre-michelle.com/karplus-strong-guitar

<comment><USER2> Readers in the US should be aware that by running this piece of software they are violating a patent that might still be valid.

Karplus-Strong is a really interesting example for the effect of software patents. It is a very efficient and powerful algorithm (3 voice polyphony on a Z80), but it has never been used in any successful instrument. IIRC only one commercial synthesizer manufacturer licensed the patent, but only as a defnsive measure without actually using it in a product. Just imagine all the musuc that might have been without this patent.

<comment><USER3> One effect of software patents is for people to say "wow that's a great idea! how can we invent around it?" In the prospecting theory, if one guy finds a gold mine, other people try digging around his "claims". But I don't know if that actually happened here.

PS: the patents, from 1986 and 87 would have expired by now - they're linked from the bottom of the wiki entry: <http://en.wikipedia.org/wiki/Karplus- Strong_string_synthesis>

BTW: I remember physical simulation synthesisers were available roughly 20 years ago (I don't know if they took off or not - one had a saxophone mouthpiece, and it sounded unbelievably realistic). There's usually more than one way to do it.

</comment></comment><comment><AUTHOR> A really interesting piece of audio software engineering. An incredible sounding guitar synthesizer!</comment>


Mystery list appears of where people met, personal info, of tens of millions - <AUTHOR> https://www.independent.co.uk/life-style/gadgets-and-tech/news/data-dump-personal-information-breach-crm-a9515931.html <comment><USER2> Previous discussion: [https://news.ycombinator.com/item?id=23190026](https://news.ycombinator.com/item?id=23190026)

</comment><comment><USER3> Old article... The breach was already linked to Covve, and they released a statement about it: [https://covve.com/opinion/security- incident/](https://covve.com/opinion/security-incident/)

<comment><USER4> That page says "Data belonging to approximately 90,000 users..."

But Firefox warns me that the number is actually 20 million.

<comment><USER3> From what I saw in the original forum where it was leaked the vast majority of the records were duplicates</comment></comment></comment>


5 Systemd Tools You Should Start Using Now - <AUTHOR> https://www.linux.com/learn/5-systemd-tools-you-should-start-using-now <comment><USER2> systemd-nspawn containers are fun also. You can use them to run Ubuntu 16.10 processes on Ubuntu 16.04, among many other things.</comment>


Basic accounting - what do you use to keep track of expenses? - <AUTHOR> http://www.startupping.com/forums/showthread.php?t=455 <comment><AUTHOR> Since I'm going to be doing things on my own, this too is something I need to take care of. I won't have a lot of money coming in or out at the beginning, so I can start simple. I could probably even just use a spreadsheet, but I thought I'd ask around a bit first. The big requirement is that it needs to run on Linux.</comment>


Stack Overflow Makes Slow Pages 100x Faster By Simple SQL Tuning  - <AUTHOR> http://highscalability.com/blog/2011/5/2/stack-overflow-makes-slow-pages-100x-faster-by-simple-sql-tu.html <comment><USER2> Remember 10 years ago when this was a solved problem? There were only two rules: "always use stored procedures" and "never build dynamic SQL". Doing stuff on relational databases was fast.

Granted, you often had to actually write Stored Procedures by hand back then. But then if you look at the LINQ in the article, you'll notice that it's pretty much exactly the SQL you'd stick into your stored procedure, just backwards. Had they not bothered introducing LINQ in the first place, they'd have had their 100x performance boost from the get go.

Naturally, SP's are not some magic 100x'ing cure-all. They're just a non- generated version of your SQL, which means that you're guaranteed never to have your ORM go nuts and build some monstrosity like the one outlined in the article.

You still need to tune your SQL by hand, but at least you can tune _the SQL_ rather than some not-particularly-helpful abstraction on top of it.

<comment><USER3> This is the old Microsoft Misinformation. Stored Procedures are not faster.

SQLBooksOnline actually has this information clear as day, but MS Evangelists like Rob Howard (went on to create Teligent) would go around spouting the "sprocs are faster!" line and no one would ever think to point out the discrepancy. It just became religion for the masses of MS platform Developers.

ADO.NET (and whatever it's called these days) executes all _Parameterized_ queries through (see if I can get the casing right) the sp_execsql procedure. This means that the Query Plan for _every query_ run on ADO.NET is cached. IIRC the only additional step Stored Procedures avoided was Parsing. Execution for either would come up with the same, cached plans, but sprocs wouldn't have to parse each time.

Who's willing to bet that the SQL Parser, with decades of optimization work, can parse 100% of your queries in a few hundred nano-seconds?

In practice then, that savings doesn't matter. In side-by-side tests I did a few years ago (that anyone with a few minutes can replicate), there was effectively _no_ performance difference between the two. So the parsing savings were swallowed up as noise in the actual network-latency/query- execution formula.

At the end of the day then, sprocs are not the solution. The solution is to avoid dynamic SQL, and use _Parameterized_ queries. Generated queries that aren't _Parameterized_ do not cache their query plans (last I knew, but it's been years, so maybe that's changed) and won't perform as well as sprocs.

The problem isn't LINQ then. If you know how the gears underneath it all fit together, you can easily avoid sprocs with no negative performance repercussions.

<comment><USER4> Ah.. but stored procs _are_ faster if you are executing business logic in them, because you can avoid round trips.

I think it's a terrible idea, but I've seen multiple places where there is a very blurred boundary between stored-proc-for-data-access and stored-proc-for- data-access-after-a-bit-of-business-processing

</comment></comment></comment><comment><USER5> The linked article from Sam's blog: [http://samsaffron.com/archive/2011/05/02/A+day+in+the+life+o...](http://samsaffron.com/archive/2011/05/02/A+day+in+the+life+of+a+slow+page+at+Stack+Overflow#)

I found it to be much more interesting and a cool look at how he went about actually finding the slowdown and the steps he took to fix it.

<comment><USER6> Thanks. I always find this articles more entertaining/educational.

</comment></comment><comment><USER7> If you are building anything more complex than a blog site and expect to take a decent amount of traffic, to the point that you may in fact care about optimizing at all, going with an ORM that writes sql for you is a really really bad idea. I really don't understand the fascination with ORMs today. Some sort of sql-to-object translation layer is no doubt a great thing, but any time you write "sql" in a non-sql language like python or ruby you are letting go of any ability to optimize your queries. For reasonably complicated and trafficked websites that's a disaster simply waiting to happen. This isn't just blind speculation on my part, I've heard a great many stories where very significant resources had to be dedicated to removing ORM from the architecture, and the twitter example should familiar to most.

I would go so far as to say that sql writing ORMs are a deeply misguided engineering idea in and of itself, not just badly implemented in its current incarnations. You can't possibly write data access logic entirely in your front end and expect some system to magically create and query a data store for you in the best or even close to the best way.

I think the real reason people use ORMs is because they don't have someone at the company that can actually competently operate a sql database, and at any company of a decent size traffic-wise that's simply a fatal mistake. Unless you are going 100% nosql, at which point this discussion is irrelevant.

<comment><USER8> I disagree.

ORM's aren't a problem at all as long as you have the ability to override problematic queries with named queries, etc.

ORM's can provide very real advantages when it comes to caching, development time, etc., as long as you review what the ORM is doing and notice when it's doing it wrong.

I've just spent 2 years architecting a high transaction global video game system using an ORM, and it worked well. In our case, the ORM provided acceptable SQL for about 85% of the queries, and we overrode the rest.

The ability to quickly and easily allow the developers to write their own SQL, to be reviewed later by a DBA, was a life saver. Combine that with our stress and load testing, it was easy to see where the hot spots were and deal with them effectively.

The problem comes from people who rely on the ORM to do everything for them without truly understanding how it works.

ORM's, like anything, are a tool, and there is a time and place for them.

<comment><USER7> Wrapping both caching logic and database access in an ORM like system is no doubt the right thing to do. Letting front end developers write queries to be converted by an orm and reviewed by a DBA later - in my opinion that's not the most efficient method of development. I probably would have invested in an extra DB person or two to help write the data access logic. But hey, I can't argue with results - if it worked for you that's great. But as a general statement I think that sort development methodology is highly conducive to errors and systematic problems that would not become evident until later, and at that point take a great deal of effort to fix.

<comment><USER8> The two big systems I architected where I made the decision to go with ORM's were the online EA Sports system (all EA Sports games on all platforms, currently running in a 7 node Oracle cluster), and most recently, the Need For Speed World Online system. We launched the EA Sports system with Madden, and went from 50 to 11 million users hitting the DB in less than an hour. Then we rolled out the other EA Sports games. Needless to say, both systems were slightly bigger than a simple blogging site.

In both cases, we had a large number of smart developers who we empowered with the use of an ORM; they understood the domain model, and they didn't have to worry about waiting for a "DB type" to write stored procedures, or develop a data model, etc. As a matter of fact, in both cases, I was the only DBA on the project, and it was a predominately part-time role. We'd meet, ensure we were all on the same page with the object/data model, and then they'd go and build it. The developers were able to immediately build and run and test and integrate something that was functional and operational, when they needed it. This was HUGE, and something that most people don't properly appreciate. Timelines were already insane enough as it was, the last thing we needed to do was artificially constrain ourselves by waiting for other (db) devs before work could go on. Especially when requirements had the potential to change from one day to the next.

In both situations, we took advantage of very, very sophisticated testing procedures that would happen nightly, both functional and stress/load, and it pointed us at the bottlenecks of each nightly build that would require tuning and investigation. We intentionally set up our testing to be able to monitor and test the effectiveness of the ORM, and to point it out when it didn't work efficiently. The devs would do the majority of the heavy lifting with the initial data model, and the results would be tested, reviewed, and then modified if required. The performance modifications were not a lot of effort to fix, either. Usually it was a very slight data model change, or using a named query to take advantage of a database-specific features. And CLOBS. Every database seems to handle them differently, so we had to hack some solutions.

Having done large scale database development for almost 25 years, using the classic stored procedure approach and the ORM approach, I'll say again that ORM's are a great solution for certain projects with the right staff, and aren't a crutch or some lazy choice if used properly.

<comment><USER7> My experience is from writing a bunch of middle tier code at MySpace in the 06-07 time frame, the myspace hey days when they were pushing more traffic than google (true story). Anyway, the user facing product might have sucked, but we did scale (that's why friendster was friendster and we were myspace :). In an environment with 450+ million users, we had extensive caching systems and still had to use every sql trick in the book to get our systems to scale well. I know because my job was working with the DBAs to bridge the sql and front end worlds together. I can say with great certainty that front end developers who did not know sql and were simply following a logical object model would not have produced code that scaled in our environment, there were way too many things that were done that were extremely non-obvious. Since myspace i've been working at a python/postgres start up where we've been applying the same principles pretty successfully, at a much different scale of course. If nothing else, i think the no orm approach will at least give you more bang for your buck.

Separating your data access code out of the application logic also allows you to change it much more easily as data conditions change, including on the fly, without an application deployment. That's often extremely useful.

MySpace scale may be at an extreme end of the spectrum, but we had formidable hardware to throw at it too (although x86, so nothing TOO crazy). So I think the ratio of hardware to scale at other sites is comparable, and so I think the same lessons apply. I have no experience working with oracle, but would you say that a 7 node oracle cluster is some pretty serious hardware? I myself really don't know, but it is a question I have :).

EDIT: I'm not discounting your experience, i just want to point out that i've experienced conditions where I think the orm approach would have broken down. If others have had different experiences, the more data points the better, but i think the scale/complexity/cost(hw) ratios play into the debate as well.

EDIT #2: Oh and I forgot to mention that the automated test suite you had is an incredible asset, and no doubt made it easier to discover problems early and deal with them effectively. But you do have to invest resources in creating one, and something like that is no small cost at a start up.

<comment><USER8> The point of my post was to say that if you take a serious look at the ORM you want to use, fully understand the issues you may have with it, design/adapt your development process to help mitigate the issues you may run into, there are huge advantages to using it.

I was just pointing out that ORM's are indeed quite effective in online systems that are more complex than a blogging site.

If you're going to say "no, don't use it", based on a development situation that is very much an outlier (MySpace), and use that experience to discount it for any but trivial use, then I'm not sure what to say.

They can and do offer real-world advantages with minimal downside if you treat them like any other tool, and not use them blindly, in reasonably complex and large systems, as I've tried to demonstrate.

As to your environment, the data requirements were quite different than ours. Our systems were more like online banking systems; very much an even split of fast writes and reads, transactionally bound to third party systems (in-game payment, in-game "real time" use of consumables, etc), real-time analytics for fraud detection, etc. We were very much high IO, and our caching opportunitites were few and far between.

And in our environment, we HAD to have sophisticated testing. I ensured that the stress and load testing was done so that we could directly simulate the load of our expected user base, with realistic profiles, in order to better engineer our databases and disk IO. It also allowed us to measure the impacts of feature additions, etc. If it failed in Production, it made the news, and we had millions of gamer-freaks bitching everywhere.

In my case, the middle-tier was not an issue... we enabled minimal caching on a per-box basis, and other than that, they were stateless, and we could add/remove them at will; the application WAS the database.

And you can still abstract various parts of the database while using an ORM. We did write a few special stored procedures, and used some forced query plans, views, etc., to tweak the performance.

And yes, Oracle can scale out quite well. Cache Fusion, high speed and low latency interconnects, and shared block access provides incredible scaling without having to do anything special in the middle tier.

<comment><USER7> It's interesting to hear that has worked well, obviously this wasn't a small project. Your point about knowing how to use your tool definitely rings true. Also interesting that you had a use case where data loss and integrity actually mattered and in real time, unlike a social network or most start ups operating today. Going with a heavy oracle system instead of trying to roll your own creative distributed architecture definitely seems to make sense in that scenario. Just out curiosity, was this Java/Hibernate?

<comment><USER8> On one system we used Java/Oracle/Hibernate and went with the big single cluster. The other system was a .NET stack, using NHibernate and a large number of SQLServer instances. We also worked with Microsoft on integrating their latest (at the time beta) caching servers. We did indeed have to roll our own distributed architecture in that case, but it's not like we had to drop ORM to do it.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> The term "NoSQLite" shouldn't be used, or at the very least it should be hyphenated "NoSQL-ite." The existence of a little database engine called SQLite makes this term more than a little confusing.

<comment><USER10> .NET programmer probably isn't aware SQLite exists.

<comment><USER11> That's hard to justify these days, however. They even use SQLite on the Airbus A350 flight software!

<comment><USER10> How many .NET programmers work on Airbus A350 flight software?!

</comment></comment></comment></comment><comment><USER12> This seems like a fairly common issue with frameworks that convert things to SQL behind the scenes. If you aren't paying attention, it will run a query for each object, instead of one for the whole page.

<comment> mike-cardwell SQL is quick and easy to write. I never understood why people decided it would be a good idea to add another layer of abstraction on top in various web frameworks.

I don't think it saves dev time at all. It just makes it more difficult to know what queries you're running by looking at the code.

<comment><USER13> In my experience, it saves a lot of dev time, using my current ORM (Linq with Entity Framework 4.0) I can get probably-fast-enough CRUD against a new entity in just a few minutes without writing any SQL at all.

When it's not fast enough (high volume, specific complex queries, whatever) I can write specifically tuned SQL.

Performance tuning on anything that isn't an actual bottleneck is waste.

<comment><USER2> Realistically, you should never be writing your own CRUD, whether you use an ORM or not.

CRUD stored procedures can be generated directly from the database schema, wrapped in C# objects using the same code generator, and compiled into your project whenever you make a schema change. That gives you all the advantages of an ORM, without any magic runtime SQL generation.

<comment><USER13> Serious question: Why is having stored procedures generated at design time better than having dynamic SQL generated at run time? It's not like there has been a meaningful performance benefit for the last several years.

<comment><USER14> I'd also like to hear a reasonable answer to that question.

For me, the only advantages of stored Procs over straight SQL (generate or hand coded) are:

* Security - you can revoke rights to directly access / change the tables from the app layer, making all access be through procs. However, in general you can probably create a similar security setup using views.

* Many SQL calls that need to be run as a set to give a single answer - this avoids the round trip latency of firing many SQL calls from the application.

I'd am genuinely interested to hear of more advantages.

</comment></comment></comment></comment></comment></comment><comment><USER15> Think of it the other way around, their engineers didn't optimize any queries and they don't have a dba watching for table scans or nested loop joins. To the amateur crowd it looks like "wow optimization" but if you've been developing seriously for your career this should look like "you have a lot to learn".

<comment><USER16> Yes, but StackOverflow does have a DBA, and very good one at that: <http://www.brentozar.com/>

I guess he doesn't deal w/ this level of optimization, or it never hit his radar.

</comment></comment><comment><USER17> I don't think Stack Overflow's case is a case of "see, you can scale SQL databases". I think it's more of a case of "they've forced themselves to HAVE to scale SQL databases by tying themselves to .Net and MS SQL Server".

There's nothing wrong with relational databases, it's just that many of the NoSQL databases are newer, encourage denormalization, and implement things like intelligent sharding and mapreduce out of the box.

Which one you prefer seems to depend on whether you're more systems-oriented or code-oriented (if you have someone dedicated to tuning your database, why not just let them worry about it?), or whether you're just forced to use one by virtue of the platform you're using.

<comment><USER18> I think it's more a case of "boring but tried and tested" or "new but potentially unreliable". Would you risk your business just to say you use _latest tech buzzword_?

Things like NoSQL are neat to play with in your spare time, but I'd think long and hard before I'd use them in actual production code. I seem to remember hearing about Cassandra causing woes in the past, for example.

<comment><USER17> If you're putting your database on your feature page, you probably have other problems than scaling.

It's not about "latest tech buzzword", it's about using the tool that is most appropriate to the job. Cassandra worked up to a point, but it ultimately was not the right tool for the job at _Twitter and Facebook scale_. Is that cause to be dismissive of _all_ NoSQL databases?

I agree that you should give careful consideration to your technology stack before putting it into production, but to me that means considering all of the options available, not just the old stuff.

<comment><USER19> This is true, but it should be pointed out that Facebook scales very poorly. Messages disappear/reappear, friends are suddenly missing and suddenly back, your own posts suddenly vanish.

That points to poor caching and poor scalability.

<comment><USER20> I think Facebook does a pretty decent job considering that they have hundreds of millions of users, with many of them hitting the site many times a day. They've got an absolutely _tremendous_ amount of traffic.

</comment></comment></comment></comment></comment><comment><USER21> They turned on indexing on the table and went to a JOIN type query. Boy. Trouble believing steps 1 - 5 were necessary to come to such a rudimentary fix.

</comment><comment><USER22> _The N+1 problem was fixed by changing the ViewModel to use a left join which pulled all the records in one query._

This is a classic ORM problem. The usual solution: apply a Declarative Batch Query. I've even written one of those things! The reason why you might want to code a Declarative Batch Query option for your Object Relational framework? You can then apply it to similar problem queries in a few minutes total and one line of code.

The first operation I optimized went from 2500 SQL calls to just 40, which is an over 50X speedup. And yes, the entire declarative mechanism was written in about a week to satisfy a routine "Change Request," and yes, it ran in production on a heavily used trading application at a major multinational.

</comment><comment><USER23> I see 10x speedup was given by an index. A while back I was helping a customer with some serious performance issues, and I pulled together a few procs that look at e.g. indexes, most-locked-objects/whatever over the whole DB. I've seen this below trick referenced many times but the source article seems to be here:

[http://blogs.msdn.com/b/bartd/archive/2007/07/19/are-you- usi...](http://blogs.msdn.com/b/bartd/archive/2007/07/19/are-you-using-sql-s- missing-index-dmvs.aspx)

It gives an indication of the highest-impact indexes that are missing. Obviously there's room for experts to tweak, but for most it's an excellent quick tool. Don't create every index it suggests, obviously, just use it as a guide to look for hotspots. It's nice because often it'll surprise you with areas you had no idea were an issue. And it takes a few seconds to run.

</comment><comment><USER24> "__A NoSQLite might counter that this is what key-value database is for. All that data could have been retrieved in one get, no tuning, problem solved. The counter is then you lose all the benefits of a relational database and it can be shown that the original was fast enough and could be made very fast through a simple turning process, so there is no reason to go NoSQL.__"

Moral of Story: Relational database should be used in most cases. NoSQL is overated & extra-hyped.

</comment><comment><USER25> There were a number of tools involved in the analysis, including code examination.

Can this loop be closed and automated? Why do we all keep having to do this manually?

<comment><USER26> Arguably, this particular failure case is what has been automated. It isn't actually necessary to have an ORM that all-but-requires N+1 select problems. I wrote one once that could join across an arbitrary number of tables in on shot. Alas, it is now gone in an acquisition. But I know it's possible.

Part of the problem is that I think most ORM authors know OO but don't necessarily grok SQL, so you get the same failure cases over and over again. It's not easy to write an ORM that can do arbitrary joins and it's borderline impossible to retrofit one that didn't have it built in from day one. The other big failure that you get is a failure to support group queries or arbitrary selects.

</comment></comment><comment><USER27> Imagine an ORM causing a speed issue.

 _Performing a code review the code uses a LINQ-2-SQL multi join. LINQ-2-SQL takes a high level ORM description and generates SQL code from it. The generated code was slow and cost a 10x slowdown in production._

</comment><comment><USER28> Wait, it took them how many years to think of doing a sql query analysis?

<comment><USER29> Until it was a problem worth noticing. Opportunity costs.

<comment><USER28> How is query analysis hard to do on any significant website?

All queries are typically passed through a standard function.

Part of the function logs the queries and times them.

Append them to the bottom of a page or in hidden html comments when special cookie is present.

<comment><USER30> I believe they are using SQL server, which keeps statistics on the most longest total runing, and longest per-run queries. It's a good idea to monitor this list and take a very close look at every execution plan that comes up. Many times you end up doing RID lookups due to non-clustered indexes that don't cover the requested data.

<comment><USER31> MSSQL is easier to optimize at last for me than say Sybase and Oracle, which I also supported.

People can bash MS as much as they want but their products are dirt simple to use and for the most part efficient. MSSQL comes with some query plan analysis so you can look at hit and miss ratios. From this info you can make some decisions as to add additional clustered or non-clustered indexes or use stored procedure which are saved (preprocessed) for faster execution. I forgot which of the several books I used to do this. But I was pleasantly surprised at the performance increase with my occasional tweaking.

Performance was not a priority for us that is why it was done occasionally. Not my call. My main job was make sure replications happened effectively, maintain good restores and security, and create stored procedures and triggers.

I hated the ORM in Rails. I do not want magic when I know how to do it more efficiently. For example there are certain times it is better to use DISTINCT versus GROUP BY for unique values.

I miss MSSQL. I use MySQL and it is ok but not like my sweetie and, thank you, not like the ugly gorilla Oracle.

In smaller apps I use sqlite or flat files.

</comment></comment></comment></comment></comment><comment><USER32> This thread and the tips are great, but that page should be cached anyway

Awesome that SE have come so far generating every pageview

</comment><comment><USER33> They looked at SQL and added an index to their DB?

When I read this I actually cringed, because they changed their SQL query in production without looking at the query plan first. Apparently it's the blind leading the blind over at stack overflow, not that it seems to be hurting them.

<comment><USER34> "In production this query was taking too long, so the next step was to look at the query plan, which showed a table scan was being used instead of an index. A new index was created which cut the page load time by a factor of 10."

I read it as: 1) noticed that's slow in production, 2) look at query plan (prod or dev, not clear) 3) add index (not clear if they did that in dev first and then prod)

<comment><USER35> my dev box runs a clone of production, I do all my tuning on dev then deploy to staging, confirm it is still good there and finally ship it to production

</comment></comment></comment><comment><USER36> Imagine how great StackOverflow would be if all the experts critiquing it here had built it.</comment>


Ask HN: What techniques do you use to keep your current users engaged? - <AUTHOR> While working on my side-project (https://booknshelf.com) I've been thinking a lot about the ways of keeping my current users engaged. One way of doing this is via notification channels. Any other ideas you would like to share? Thank you! <comment><USER2> Being useful.

Yes you can use many tricks, and they work. But in the end of the day you are not different that a czsino, a drug dealer or a tabloid magazin when you use them.

It is more economically efficient to trick the user into staying in the short run. But in the long run, we are using google and stack overflow because they are the most useful, not for tricks.

Among tricks, some useful ones are also often badly implemented and become armful.

Ex: notifications are only useful if it result in more productivity than distraction. I hate most notifications, they disturb my flow, but I like being request them for specific cases to save me time.

A light gamification can be fun, but if it's at the price of my main usage of the site I'll leave.

Basically give me want I want, quickly and in a useful way, and I'll stay. Save me time and energy and i may even pay.

Unfortunately, hn readers are not a good sample for user behavior. We all have ad blockers, we boycott sites with behavior we dislike and we know how to by pass stupid tech decisions.

But if you manage to engage hn users with the same content and design than regular user, your model has a good base to be sustainable because it has credibility.

Credibility is harder to build than addiction. It's not quickly as rewarding, but it more reliable. And more satisfying for you.

<comment><USER3> is this a poem? or at least a less rhymy rap song, rhymy is not a word probably

<comment><USER2> It's a typoem, a new type of poem where you convey meaning using typos.

I wrote it on a phone to use auto correct and poor keywords as my muses.

<comment><USER4> I like to call them _tapographical_ errors.

</comment></comment></comment></comment><comment><USER5> Think about what valid, useful reasons people have to return to the app. E.g in a game, they might want to see the progress in their crops. In a book collecting app, it might be to find out what new books appeal to them, or to enter their review when they've finished reading a book, or when a new book by an author they've read is available, or when their friend has reviewed or added a book, etc..

Figure out how the app can trigger or remind them of these moments. Notifications are the obvious one, but you want to be careful not to train the user to tune out your app if you send too many notifs or notifs they are uninterested in. The best triggers are ones the user has asked for themselves.

For example, when they get a new book you can prompt them to set a goal to finish reading it in a week or two, or whatever is comfortable, and then ask them if they want you to check up on them (notification) when that time is up. If they set the goal, they will probably welcome it.

Additionally, you want to try and build habits that help the user improve his or her life. So if you build a habit of recording their daily reading log, and reward the user for reading every day without missing one, then they are happy because they are reading more books and they are also connecting their new reading habit with the action of opening and using your app.

</comment><comment><USER6> I am in the same situation with my side project. Currently working on version 2.

I would say look at what Facebook does, they are like digital crack.

Your site should be very useful to users and you should try to gamify things a little bit as others have said.

I would recommend building out a segmented newsletter for people. Say for instance, you get a bunch of HN users that signup. If they are interested in startups, you have a weekly or monthly email that goes out that lists books on startups, customer development, lean startups etc.

You give a small summary on each book in the newsletter and the link brings them back to the site.

I have also seen email notifications for responses to forum posts that have worked really well.

One other thing, I tried your site on a Nexus 5, and the images of the books are a little shifted and oversized. I would suggest tweaking this a little as the majority of people browse the web on their phones these days.

<comment><AUTHOR> Such good points that made me think. Thank you!

<comment><USER6> Anytime, keep in touch, see my profile. I would like to hear how things progress.

</comment></comment></comment><comment><USER7> I am the only user of my app so far - but due to me knowing that I suffer from procrastination - I've added messages based on usage and light questions I feel I should answer.

For example, if I use the app for X minutes in a day, the next day I will get a summary as a notification.

It also adds light questions, to give an example it takes a random word and asks something like "how do you pronounce this?" or "what does X mean?". Tapping it takes you to the answer. They are made to require as little actual app interaction as possible, kind of making the learning (or rather, retention) almost passive to a degree.

I found the success of this minor so far, but I think it can work fairly well. It just needs a good balance.

</comment><comment><USER8> I will refer the techniques mentioned by _Nir Eyal_ in his book "Hooked: How to Build Habit-Forming Products". The

* Trigger

* Actions

* Rewards (variable rewards)

Ref book on Amazon: [http://amzn.to/2ngLIuz](http://amzn.to/2ngLIuz)

<comment><AUTHOR> Listened to the audiobook and loved it. I try to always keep this in mind, so helpful.

</comment></comment><comment><USER9> You keep them engaged by communicating with them on a regular basis. But here is the catch: dont just rely on email blasts. dont try to scale it. instead email each one of them 1 by 1 and develop a relationship with them.</comment>


Giant leap for nuclear fusion as scientists get more energy out than fuel put in - <AUTHOR> http://arstechnica.com/science/2014/02/giant-leap-for-nuclear-fusion-as-scientists-get-more-energy-out-than-fuel-put-in/

<comment><USER2> Can anybody with access to the paper tell whether we are talking about a factor of 1.0000000000000001 or about one of 9.9999? "ten times what we had before, when we didn't have more than 1" leaves a lot of room for variation.

Also, repeatable is good, but is that repeatable as in "two or three times and, frankly, we didn't expect the thing to work that third time" or as in "every minute for an hour, and we didn't see much real damage afterwards"?

</comment><comment><USER3> [https://news.ycombinator.com/item?id=7227028](https://news.ycombinator.com/item?id=7227028)</comment>


How programmers get rich (Article from 1982) - <AUTHOR> http://www.time.com/time/magazine/article/0,9171,923148-1,00.html

<comment><USER2> >and he recently bought himself a new $18,000 Datsun Turbo 280-ZX sports car.

lol</comment>


Empirical data on TDD: What went wrong? - <AUTHOR> http://www.elfsternberg.com/2010/02/09/wrong-job-sept09oct09/

<comment><USER2> It looks like the author is a glass-half-empty kinda guy. The sentence immediately preceding that justifying the conclusion that something "went wrong" is:

> The results of the case studies indicate that the pre-release defect density > of the four products decreased between 40% and 90% relative to similar > projects that did not use the TDD practice.

Sounds like a net win to me - possibly 35% more effort, for a possibly 90% "better" product. 90%relativetosimilarprojectsthatdidnotusetheTDDpractice"</comment>


Backdoored images downloaded 5M times finally removed from Docker Hub - <AUTHOR> https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/ <comment><USER2> I would treat _every_ image on Docker Hub as though it is backdoored, mines crypto and sends each and every bit that goes through it to the NSA. Call me paranoid but unless the image was created by a trusted party (a party that _you_ trust, not that someone else trusts) then there is no reason to assume that it friendly.

<comment><USER3> Are you a kernel developer? If not then you have to trust whoever wrote your kernel and how are you supposed to determine whether to do that or not?

All we have are some general heuristics here. "Trust" is too strong a word for the relationship we have with the people writing and manufacturing our software and hardware and for the chain of custody between them and us.

<comment><USER2> There is a large difference between trusting the developers of a kernel who have earned that trust over many years versus trusting someone who threw together a random binary and distributes it through a poorly curated service.

That's akin to installing randomly downloaded software from warezRus.com and running it as root.

<comment><USER3> >That's akin to installing randomly downloaded software from warezRus.com

All right, then say that. Say that you view Docker Hub like warezRus.com or a site that opens in Chrome like this [https://www.google.com/search?q=chrome+red+warning&tbm=isch](https://www.google.com/search?q=chrome+red+warning&tbm=isch)

Don't say that "unless the image was created by a trusted party (a party that _you_ trust, not that someone else trusts) then there is no reason to assume that it friendly." That is going too far.

It's a continuum, but the "Okay, I'll run it" end of the continuum shouldn't be something you "trust". It should be something you're willing to run. Like everyone else, I'm typing this on a device that I shouldn't "trust". You should replace your idea of parties you should "trust" with parties you are willing to run something from. If Docker Images isn't one such party, then say that.

<comment><USER2> You are conflating 'Docker Images' as one party and Joe Random user who uploads his image to 'Docker Images'. They are not the same entity at all.

Assuming Docker Images has reasonable security and that someone who I trust would upload a (signed by them) docker image to Docker Images then you could download that image and use it _if_ you trust the uploader and their signature.

<comment><USER3> you're saying something useful, but I just think the word "trust" at the end is too strong.

How about instead of:

* you could download that image and use it _if_ you trust the uploader and their signature.

(your phrasing), what if instead you wrote:

* you could download that image and use it _if_ the developer seems technically competent and benevolent, or seems like they wouldn't be playing shenanigans, and you're sure that the developer is who they it is (their reputations aren't being coopted by someone else with a similar or fake name).

(perhaps what you mean). or:

* you could download that image and use it _if_ it is put up by some huge development team with a big brand to protect.

(if that's what you mean).

Basically there must be some more precise way to say what you mean. I just don't think you're expressing the concept very precisely.

</comment></comment></comment></comment></comment></comment><comment><USER4> At least the first image they talk about that references [https://github.com/docker/hub- feedback/issues/1121](https://github.com/docker/hub-feedback/issues/1121) is not "backdoored". As the title even says, it's a malicious image that mines a cryptocurrency.

A backdoored image would be something like a 'nginx' or 'minecraft' image that starts the server but also mines in the background.

It seems ars added the "backdoor" bit when they should have kept it as just "malicious"

</comment><comment><USER5> Also discussed here [1]

[1] - [https://news.ycombinator.com/item?id=17303570](https://news.ycombinator.com/item?id=17303570)

</comment><comment><USER6> > Last July and August one or more people used the Docker Hub account > docker123321 to upload three publicly available images that contained > surreptitious code for mining cryptocurrencies

> By the time Docker Hub removed the images, they had received 5 million > "pulls." A wallet address included in many of the submissions showed it had > mined almost 545 Monero digital coins, worth almost $90,000

Not ethical, but I'm not sure it reaches the "malicious" level as I'm sure in most cases the image was just using unused resources. It doesn't look like there was a virus or any "backdoor", just a separate thread mining Monero.

<comment><USER2> Theft of resources is malicious.

<comment><USER7> It's wrong, and possibly other things, but not malicious.

Malice: desire to inflict injury, harm, or suffering on another, either because of a hostile impulse or out of deep-seated meanness.

[http://www.dictionary.com/browse/malice](http://www.dictionary.com/browse/malice)</comment></comment></comment>


Exercises for those learning Python - happy-go-lucky https://github.com/srigalibe/pynotes/tree/master/Exercises <comment><AUTHOR> Thanks!! This is pretty awesome. Would recommend just adding something with linkedlist, graphs, and trees.

</comment><comment><USER2> These would make good interview questions too... the problems are pretty unique so it's unlikely someone can come prepared.</comment>


Buying lattes is not keeping you from being rich - <AUTHOR> https://www.nytimes.com/2019/07/12/business/buying-lattes-rich-financial-advice.html <comment><USER2> From a glance, it's dumb.

Tracking every transaction (with e.g. gnucash), minimizing expenses, setting a maximum liquid and investing everything above that on a month per month basis is the basics.

But this silly book suggests budgeting (and spending these budgets whether needed or not), which is not how to do personal finances.

Be frugal, track everything, and invest. That's the gist of it. Being frugal starts with _not_ buying the book.

<comment><USER3> Budgeting means looking forward, and being deliberate (if not frugal).

Tracking means looking back, and doing the accounting.

[With zero data backup] most do neither; some track; but those who track with a budget have better outcomes.

Then one gets into relationships, and finding that harmonious blending of skill/maturity with these concepts.

I just don't spend anything, and the Hausdrachen[1] manages all the YNAB data

[1] [https://dict.leo.org/german- english/Hausdrachen](https://dict.leo.org/german-english/Hausdrachen)

<comment><USER2> >Budgeting means looking forward, and being deliberate (if not frugal).

I do agree. But here's one sentence from that article:

>That would leave 20 to 35 percent to spend guilt-free.

The quality of their "budgeting" is self-explanatory.

</comment></comment></comment><comment><USER4> One thing I like about the HN crowd is that they're typically data people, who can probably add up in their heads how much a $4 latte a day for 10 years equals, and what that same return would look like if invested in the S&P 500.

Most people won't come to the conclusion to invest $4 a day in an index, but might instead buy a nice espresso machine to make the drink at home because they know exactly when the payoff date is. A successful person probably won't stop drinking lattes, but they'll change their habits, which is often very hard in practice.

Being successful in finances is about being disciplined, not necessarily about living a spartan lifestyle. Often times that means trading comfort and convenience for something else (money) and I'd wager that mental trade is a winnowing fork for people who will have very different life outcomes.

<comment><USER5> It's an old joke, but relevant to the discussion:

Woman: Do you drink beer?

Man: Yes

Woman: How many beers a day?

Man: Usually about 3

Woman: How much do you pay per beer?

Man: $5.00, including tip

Woman: And how long have you been drinking?

Man: About 20 years, I suppose.

Woman: So a beer costs $5 and you have 3 beers a day, which puts your spending each month at $450, or $5400 annually. Not accounting for inflation, you have spent $108,000 in the last 20 years! That money could've been put into an investment account and, after accounting for compound interest for the past 20 years, you would now have enough money to buy a Ferrari.

Man: Do you drink beer?

Woman: No

Man: Where's your Ferrari?

<comment><USER6> In my backyard o-O

</comment></comment></comment><comment><USER7> Or so some random bloke says on a book.

Real life is more complex.

While buying lattes might not keep someone from being rich (as an expense), buying frivolous things, using too much credit (they can't back) and not investing their money on things with a ROI (not just in actual investments: also in self-education, better work tools, and so on) can and does keep many people from getting richer (where richer != rich).

<comment><USER8> well said! Is it a symptom of a bigger problem, or a well-deserved joy as you live life how you want.

</comment></comment><comment><USER9> I know writers don't generally write headlines but did this editor even read the article in question? Buying l daily lattes is pretty much the opposite of the conscious spending that the book's author advocates for.

<comment><USER10> Guessing the editor went with a "latte factor" headline because it's evergreen bait. Nytimes has seemingly been putting out similar content / taglines to cnbc lately.

\- David Bach evangelized it in the mid-2000's.

\- Ramit was using those lines at least back in 2010 "I'll show you how to earn more, too. Let others worry about saving $3 on lattes. I hope you'll be earning hundreds more -- or more -- each month." is a line from one of his emails.

\- Whoever is creating Suze Orman content keeps using it: [https://twitter.com/CNBC/status/1137464817738952704](https://twitter.com/CNBC/status/1137464817738952704)

I've seen it used as a headline for at least two decades (first time on some business school poster at UTexas), a bit after when starbucks late 90's expansion. Arguably since then coffee shops have had more 'business value' for some as laptop ownership became more common.

</comment></comment><comment><USER11> Ahhhhhhhh... Other than making more money, nothing beats the sweet math that is compound interest.

Saving 1M for retirement by 65 is within the reach of many Americans.

For the worst case scenario, the median wage for a worker with no high school diploma is 30k. Putting away 5k per year in a Roth IRA, every year, until age 65 would leave them with ~1.1M, assuming a 6% (1.1% lower than historical) return. While this is a high savings rate -- ~15%, it is not impossible to hit in most places. This is ignoring catch up contributions, taxes, employer match, Social Security (rip) etc, but it's safe to say this is totally doable in most locales.

Given that the median salary for someone with a college degree is about ~65k, it is well within the grasp of median Americans to save 1M+ for retirement.

However, things like predatory lending, bullshit money gurus, and plain old ignorance stop most Americans from realizing this dream. It's possible, but there is simply no substitute for compounding growth.

<comment><USER12> You are so right.

Time is the most important factor. Saving a percentage of income, invested for growth, executed over decades is a well-proven scheme.

Finanacial education is a rare and precious resource.

<comment><USER13> I'd add something on to this. The simplest way to build wealth is also by far the most boring. The ones that can handle that boredom are typically the ones that get there in my experience.

In my opinion, every financial literacy book/seminar/podcast should be renamed to "Shut up and wait" by law.

</comment></comment></comment><comment><USER14> Recently, I realized something. One of my relative who was healthy got the brain cancer and whole world around him is flipped.

I was thinking we just have only this present moment only and we do not know what will happen in future.

We should sure prepare for future but enjoy the every moment. Buy latte if you need it and you want to enjoy that moment than sure buy it. You do not know you will be able to spend that $5 again or not or enjoy that again.

<comment><USER15> This is such a slippery slope argument that gets repurposed for other situations. But it's always fundamentally that uncertainty means we should discount the future.

Well guess what? Our default condition as human beings born into the world is deprivation, uncertainty, insecurity and suffering. If everyone of the past used the "live in the moment" argument to discount saving or having children, we'd never see society advance.

</comment></comment><comment><USER16> Based on a sampling of my friends in their 20s-40s in the SF Bay Area who are not in tech, it's pretty rare to think one could ever afford a house, or to be able to save a double-digit percentage of one's paycheck for retirement, or to spend anything "guilt-free."

That aside, this book apparently says pretty much the same thing as every other popular book on the subject.

<comment><USER17> They can't afford to buy a house, or they can't afford to buy a house in SF, which has one of the highest cost of living in the world, and actually you're not getting that much if you're a non-tech person?

</comment></comment><comment><USER12> Yes it is!

It's a mindset. Visit Bogleheads.org, where scads of people will explain first-hand how they lived below their means (for a few decades), invested for growth, and now have prospered.

It's a proven methodology. It absolutely works. And yes, a daily latte is not going to be on the must-have list for most of the proven accumulators.

</comment><comment><USER18> If the advice is not

 _Write a self-help book telling people they can get in the path of being rich in 6 weeks_

then it's BS.</comment>


Harry Huskey has died - <AUTHOR> https://www.nytimes.com/2017/04/20/us/harry-huskey-dead-computer-pioneer.html <comment><USER2> His accomplishments are enormous. Thank you for brining this up nytimes!

* Dr. Huskey worked with Mr. Turing at the British National Physical Laboratory and was chief of machine development at the Institute for Numerical Analysis, part of the United States Bureau of Standards.

* He taught from 1954 to 1967 at the University of California, Berkeley, where he led research into computer language.

* In 1967 he joined the founding faculty of the computer and information science program at the University of California, Santa Cruz.

RIP, Dr. Huskey.

<comment><USER3> Dr. Huskey was also instrumental in setting up of Computer Center at IIT Kanpur as part of Kanpur Indo-American Programme. The bullock cart being used to transport the IBM 1620 computer[1] is part of IITK folklore now. [1] [https://www.cse.iitk.ac.in/users/amit/books/subbarao-2008-ey...](https://www.cse.iitk.ac.in/users/amit/books/subbarao-2008-eye- for-excellence.html)

<comment><USER4> Amazing picture, thank you.

</comment></comment></comment><comment><USER4> [https://en.wikipedia.org/wiki/Harry_Huskey](https://en.wikipedia.org/wiki/Harry_Huskey)

<comment><USER5> [http://www.theymadethat.com/people/xp89en/harry- huskey](http://www.theymadethat.com/people/xp89en/harry-huskey)

</comment></comment><comment><USER6> His office at UCSC was just a couple of doors down from that of Glen Langdon (my advisor) during my tenure there. I only got to listen/talk to him a couple of times. A loss and an interesting guy.

Husked Langdon Huffman

UCSC had some interesting founding individuals.

</comment><comment><USER7> "Harry basically lived through and participated in the entire span of the history of electronic computing."

black bar, guys?

<comment><USER8> seconded.

<comment><USER9> agreed

</comment></comment></comment><comment><USER10> "Harry Huskey, Pioneering Computer Scientist, Is Dead at 101"

Only 5 years old? Yeesh that's young.</comment>


Ask HN: Deep learning algorithms to aggregate technology topics from the web - <AUTHOR> A friend and I were talking about putting together a project that crowdsources cool technology topics that leveraged the latest algorithms.
I'm assuming that we should use something like Pytorch and possibly leverage the great work done by Yan Lecun.
What deep learning algorithms are recommended for this project?  If you can specify a technical paper or library with sample code, that would be awesome. <comment><USER2> I did something similar for another language. I crawled millions of articles first and build word2vec on the plain text. To compute the embedding of a topic, I summed the vectors of its main keywords - 3-4 well chosen words are enough. The embedding of an article was obtained by summing (or averaging) the vectors of its words. I skipped the stop words (also tried tf-idf) to reduce the noise. The final step was to compute the similarity score of an article related to a topic. This is extremely easy and fast - a dot product between the vectors. Scores over 0.3 (or 0.5) indicate similarity. The main advantage of this method is that it only requires a topic vector, not a whole dataset of training examples. But if you have such a dataset, then you can average the most central keywords per topic, and get topic vectors.

If you have hundreds of classes and a training dataset with about 500+ examples per class, you can also try fastText, Vowpal Wabbit or even Naive Bayes. If you want to use neural nets, there are some 1D CNNs floating around on GitHub, but they don't work all that well compared to simpler classifiers or simple dot product between vectors. Hundreds of classes usually make classifiers sluggish and accuracy is not so great compared to the binary case (spam/not spam). I wouldn't try to do that to predict the best subreddit for an article for example, because there are too many subreddits, but with vectors it's still OK.

</comment><comment><USER2> Take a look here as well: [https://hackernoon.com/the-unreasonable- ineffectiveness-of-d...](https://hackernoon.com/the-unreasonable- ineffectiveness-of-deep-learning-in-nlu-e4b4ce3a0da0)

Exactly about news classification with DL.</comment>


Feynman, Waldo and the Wickedest Man in the World (2010) - <AUTHOR> http://www.softmachines.org/wordpress/?p=958 <comment><USER2> There's a recent history book out called "Astounding" by Alec Nevala-Lee if people are interested in how the the science fiction scene in the 1930s and 1940s brought together scientists and mystics, including Jack Parsons, the JPL rocket scientist who also was into the occult, the science fiction writer Heinlein, and the chemist/writer Isaac Asimov.

</comment><comment><USER3> Even if every word about prior art is true and Feynman was aware of all of it, he deserves scientific priority for recognizing the value of the concept and popularizing it within the discipline.</comment>


Who Invented the Computer Virus? - <AUTHOR> http://priceonomics.com/who-invented-the-computer-virus/ <comment><USER2> better title: "Who first distributed personal computer viruses?" Still informative and entertaining.

I would credit the original virus to John von Neuman and Bob Thomas.

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

</comment><comment><USER3> I grew up in Lahore, Pakistan and knew Basit Alvi - he is a super smart guy who ran a modem-based ISP (BrainNET) long before we had high-speed Internet. He's a hacker at heart.

<comment><USER4> Who does he now work for?

<comment><USER3> As the article mentioned, he runs one of the largest ISPs in Pakistan called BrainNET. At least that's what I remember.</comment></comment></comment>


Urinotron – Power from Waste - <AUTHOR> https://www.scienceweek.net.au/urinotron/ <comment><AUTHOR> A science week exhibition to get schoolkids here interested in STEM, replete with a gross-out factor for queasy parents!</comment>


Giving options in European startups - <AUTHOR> http://kaljundi.com/2012/10/07/giving-options-in-european-startups/ <comment><USER4> I joined a promising startup 18 months ago as the 3rd developer, employee #6, and was promised vast riches in the very near future. I was promised a decent amount of preferred stock options which 'would make me rich', and joined on a salary about £15k less than I could have earned at an established company down the road.

Over the next few months, while the company size went from 6 to 20, and the board were organising the stock options scheme, I was still highly motivated by the favourable options which had yet to be sorted out. A year in, and I was given a very very small fraction of the 11% option pool, which would amount to less than 0.1% of the total shares, which was also subject to dilution. At this point I had all of the speculation previously made by my superiors denied, my importance to the company was downgraded, and I struggled to negotiate a raise in salary that would bring me up to what I'd call an average salary.

This whole procedure was very demoralising, I would have been happy with no options and a decent salary to start with, and all of the speculation of how many billions the company would get acquired for in a years' time would not have bothered me in the slightest. After all, we had no customers, had not launched a product, and I was a key developer. Needless to say I left shortly after to start my own company.

When I left, they offered to 'do something' about the options and give me the raise I wanted, but at that point for me the damage had been done, and I no longer had the ambition to work there. I didn't execute any of the options that had already vested, and used this £300 to start my business.

From my own experience and speaking with a lot of other startup employees in the UK, I believe we care more about the starting salary, and absolutely have to treat options as a bonus. Not only because of the dampened IPO/acquisition outlook in Europe, which i think many startup employees are unaware of, but because startups are a smaller part of our economy. In London for example, 'Tech City' is right next to THE city, where my friends work. You've got guys earning nothing at a startup, working and meeting for drinks, and living with friends who work at banks down the road. I would imagine the US startup scene feels much more like a microcosm, and because we are yet to have that level of separation in culture and circles we socialise in, the difference in lifestyle a salary gives you is a lot more noticeable.

I regret not adapting this mentality from the start, and when we hire our first employee, I will certainly make sure the reason they are taking the job is not the millions they are guaranteed to make in a few years' time.

<comment><USER5> A simple rule I have for dealing with this sort of situation: I'm either a freelancer or a cofounder.

Strangely enough, saying that one line _has_ changed a conversation from "Hey, wanna work for my startup?" to "Hey, wanna be CTO/cofounder at my startup?"

<comment><USER6> So how many times were you a cofounder to date?

<comment><USER7> Even if his answer answer were zero, that wouldn't make the rule invalid - <USER2> fact, it sounds down right sensible to me.

</comment></comment></comment></comment><comment><USER8> Perceived stock worth for employees is highly correlated with liquidity - <USER3> there is almost no liquidity for most of european startup stocks.

Even in the great local success stories IPO's are not the goal, and the employee-stock of a successful company is practically useless, as you can't really sell it when you want to (no buyers unless the company itself is sold) and there will be no dividends in the foreseeable future, as all profits are reinvested in growth.

0.1% in a billion-worth company should be a life-changing financial event, winning the "startup lottery" by working your ass off to build a great product from nothing. But what good is it if you can't use it to buy a car or a house? It's just paper.

<comment><USER5> I keep saying this on HN, but I'll say it again: Equity is not tasty.

Now freelancing for startups, that's a whole different ball game. All of the realistic benefits, none of the risk.

<comment><USER9> It is an interesting point: startups are a market target. Providing services for startups can be an excellent source of income.

My company was selling primarly to startups until the 2007 crisis, it was no intentional but very profitable: we were benefited by companies which changed their products a million times without any profit. After the crisis,in 2009/2010 we ended up having established companies as cutsomers. One of the reason is that less outsourcing and less investments are made by startups.

</comment></comment></comment><comment><USER10> This article completely omits the question of laws. As far as I know, they get quite convoluted in this regard in some of the countries. I remember that once my father's company got the idea to give out some stock, they found out that doing that legally was pretty hard. What they finally did was selling the stock at what they perceived market value, giving at the same time cash bonus equal to that value. If it's going to be that complicated in your case, you'd better be pretty sure that people are really interested in the stock...

<comment><USER6> From what I've been told the European laws made establishing anything but the SARL/Gmbh (LLC equivalients) a fairly complicated deal up until recently. And this sort of company restricts share sales only to family (?), but not to the employees and not in a staright-forward fashion. In recent years though the laws has changed, and so setting up SA (Inc equivalents) is much simpler now.

<comment><USER11> > From what I've been told the European laws made establishing anything but > the SARL/Gmbh (LLC equivalients) a fairly complicated deal up until recently

That's still plenty complicated in many countries - Italy, for instance, although we did manage to improve things just a little tiny bit:

[http://www.governo.it/Notizie/Presidenza/dettaglio.asp?d=690...](http://www.governo.it/Notizie/Presidenza/dettaglio.asp?d=69038)

</comment></comment></comment><comment><USER12> Employment agreements, in terms of how risks are shared, differ in that employees and the state expect the employer to take a higher risk over the ups and downs of the business in Europe than, say, in California. It has an effect over the meaning of share options.

Employers do not have any incentive to share a positive future when (they perceive that) the employees do not share a negative present.

<comment><USER13> I'm not sure I understand what you mean. Usually, stock options would be accompanied with a lower salary. That is surely a negative present?

<comment><USER12> Yes, but that would be assuming that salaries have a market value.

In Spain salaries are often raised by collective bargaining. I don't know how much an effect it has on software developers, but the law is intended to raise the minimum salary for junior developers thus reducing the possibilities for a consensual agreement on a low salary.

<http://en.wikipedia.org/wiki/Collective_bargaining>

Similar for holidays, working hours, etc.

<comment><USER13> OK. So you mean that compensation (The whole package, including social benefits, long vacations etc.) is greater in Europe, than it would in the states? I don't really believe that. Not if we're talking software engineers at least. A country like Spain would probably have average wages on the range of half what it would be in the states. And even in some of the better faring European countries, salaries still seems to be slightly less than what they are in the valley.

<comment><USER12> Of course I didn't say that.

I said that compensation is affected by other forces than supply and demand (market value), so that the minimum compensation is higher than it would be at market value _in that country_ , not that it is higher than _in the US_.

Related to that, the southern European countries don't have individual control over the currency, so prices are higher than they would be if they were in control of the Euro. Salaries have been raised by law (civil service, collective bargaining, state pensions) in order to match prices. As a consequence, those salaries do not correspond to productivity, so employees are expensive, which pushes unemployment up.

If you employ people in Italy a main problem will be that your employees have to pay European prices for food and clothing. In order to prevent what many consider abuse, there are laws protecting the minimum compensation you have to offer to them. The workaround for that is not share options, but the black market.

</comment></comment></comment></comment></comment><comment><USER14> "When will people get the message about grey text on light backgrounds?"</comment>


DIY Tile/Trackr - Getting started with iBeacons and BLE - <AUTHOR> https://www.cloudcity.io/blog/2016/10/07/working-with-ibeacons-on-ios---zero-to-ble-bonus/ <comment><AUTHOR> Disclaimer: I am not Evan Stone but I really want to thank him for writing such a complete walkthrough on iBeacons and BLE. As a side question: does anyone have experience with Estimote Long Range Location Beacons? It is advertised to have a max range of 200 meters, but I wonder if iPhone's bluetooth range can reach that far.</comment>


Skylon: A British dream of space - <AUTHOR> http://www.bbc.co.uk/news/science-environment-17851603

<comment><USER2> I've always been skeptical of these liquid-air cycles, but this scheme strikes me as especially problematic in that an ejector ramjet would be mechanically simpler and have the same top speed. For the curious, an ejector-ramjet (or ram-rocket or air-augmented rocket or any of a number of other names) is just a ramjet with a small rocket motor behind the center body of the diffuser. The exhaust plume entrains the inlet air, boosting the combustion chamber pressure by cooling the rocket exhaust plume. (It also acts as a fairly, err, robust flameholder.) If you're wed to LH2 as a coolant, just bleed it in along the walls of the rocket combustion chamber, and it will mix with the main mass flow and combust. Et voila! The cooling system is the fuel injection system for the ramjet mode.

Now you just spend all the compressor and heat-exchanger machinery weight that you saved by not going with the Skylon engine by having dedicated thrusters elsewhere on the vehicle for the pure rocket mode.

As someone somewhere else said, Skylon strikes me as a characteristically British solution to the problem, just due to it's sheer over-reliance on plumbing.

</comment><comment><USER3> >Every space launch for the past 60 years has involved blasting off vertically and jettisoning separate stages once the fuel they carry is exhausted.

This isn't quite correct, right? There has been at least one LEO launch systems which utilized a horizontal take-off. The Pedasus rocket from Orbital:

> The Pegasus rocket is a winged space launch vehicle capable of carrying > small, unmanned payloads (443 kilograms (980 lb)) into low Earth orbit. It > is air-launched, as part of an expendable launch system developed by Orbital > Sciences Corporation (Orbital). The Pegasus is carried aloft below a carrier > aircraft and launched at approximately 40,000 ft (12,000 m). It flies as a > rocket-powered aircraft before leaving the atmosphere.

<http://en.wikipedia.org/wiki/Pegasus_(rocket)>

The author probably meant the Skylon is special because it would be the first single-body craft to takeoff like a plane and get to LEO.

<comment><USER4> Also two flights by the X-15 to space:

<http://en.wikipedia.org/wiki/North_American_X-15>

<comment><USER5> The X-15 is only suborbital, however.

</comment></comment></comment><comment><USER6> The trick is using a conventional jet engine (as opposed to a (sc)ramjet), but cooled with the cryogenic rocket fuel. In effect, this is using the fuel as a heat sink, then expelling the fuel in the jet or rocket exhaust.

<comment><USER7> No, it sounds like they're using liquid helium to cool it. But your idea sounds like it's worth trying.

<comment><USER8> The helium is just a recirculating coolant.

In the test rig, it's being cooled by boil-off of LN2. In a flight configuration, using cryogenic propellants as a heat dump seems logical.

</comment></comment></comment><comment><USER7> How do they prevent icing when they cool the air?

<comment><USER9> Well, this is their secret sauce, which they claim will make the SABRE engine work where other scramjets have failed.

The tests they're currently running are of the pre-coolers, which have a proprietary design to prevent icing. If it works, they will have overcome the biggest hurdle to building a hybrid scramjet/rocket engine.

<comment><USER7> Hmm so no one knows. What are known strategies for combatting icing? Maybe ultrasound? Microwaves? Chemicals?

</comment></comment></comment><comment><USER7> I'm also confused when they switch to rocket mode do they have a way to "close" the jet engine intakes?

<comment><USER10> "Beyond Mach 5.5, the air would still be unusably hot despite the cooling, so the air inlet closes and the engine relies solely on on-board liquid oxygen and hydrogen fuel as in a normal rocket." that's straight from the wiki page.

</comment></comment><comment><USER11> Related, another British dream of space: <http://en.wikipedia.org/wiki/Ministry_of_Space>

<comment><USER12> Don't forget <http://en.wikipedia.org/wiki/Thunderbirds_%28TV_series%29>

The 21st century used to be way cooler than it is now.

</comment></comment><comment><USER12> I don't think the Skylon will ever be practical, but it's easy to imagine a multi-reusable-stage launch system combining air-breathing jet engines and wings to take you to 60,000 ft, a second one with Sabre-derived designs and tiny wings to add a couple Mach and getting to the upper stratosphere and a third one that can get to orbit.

The SpaceX folks should talk to these guys.

</comment><comment><USER13> What I never understand when reading about Skylon, is why the project try to do single stage to orbit _directly_? A reusable first stage would in itself be valuable and neither cost so much to develop, nor be risky by walking the edge of weight gain etc. ssto could be version 2.

(I'm not that knowledgeable on the subject, flame me if your day has been bad, just add information. :-) )

Edit: Symmetry, SpaceX is itself trying for reusable stages. As far as I can tell, it should be the sweet spot?

<comment><USER14> Single Stage to Orbit (or any type of reusable launch system) invariably adds complexity and weight, which in turn eats up any gains by being able to reuse stages. It just isn't worth it to add complexity unless you go whole hog and make the entire thing SSO.

</comment></comment><comment><USER15> Why are they complaining so much? If it works DARPA, SpaceX, VirginGalactic, ESA and NASA will pay more than you can ever spend. When they didn't get the attention of these guys so far, there is probably a mayor catch.

Edit:

What i mean is this part:

> To succeed, it needs to capture a healthy slice of the market for satellite > launches. That's the biggest potential earner. But to do that, it must prove > viable.

The story from the garage and share of satellite launches, that doesn't sound like a plan. That sounds like someone who want's to be like NASA, there was nothing in the article about reducing costs and LEO or anything business related.

> He intervenes. "Not 'could'," he says. "It's not 'Skylon could make space > travel easier'. It's 'Skylon will make space travel easier'."

Skylon, makes space travel easier. Now on Kickstarter.

<comment><USER14> Because their financial projections are bunk and are ridiculously understated. Every piece of technology on the vehicle is custom made. Even if you accept all their projections you still have to assume that they develop it in time and that it works as intended. Any weight overruns will literally make the vehicle unusable.

<comment><USER15> If they have a revolutionary technology and they can really show that these billions will provide the most competitive way of Space travel. There are a dozen companies and well funded government agencies who have the money and could provide most of the infrastructure they need.

Why is nobody interested? If there are big reservations, why do they start with satellite launches? Why not start by making more powerful engines than Rolls Royce, and sell these to all the candidates who are interested.

I have a concept for a better Operating System, i need a big chunk of OS sales. I need Billions to have something comparable to Microsoft. Btw it's a British operating system, the government should give me the money.

<comment><USER9> They _are_ starting with engines. The rest of their ideas are simply concepts at this stage. It's a small company.

The problem is that plenty of people have tried and failed to produce a successful air-breathing rocket engine. Nobody wants to invest any money in Reaction Engines until they can prove that the core concept that the company is built on works. And proving this costs a certain amount of cash. Some of this is being financed by the ESA, in very much the same way that NASA is financing new commercial spaceflight efforts.

In the next year or two we're either going to see them succeed and garner lots of investment, or fail and fade into obscurity.</comment></comment></comment></comment>


The Justice System That Lets Executives Escape Their Crimes - <AUTHOR> https://www.buzzfeed.com/chrishamby/super-court?utm_term=.qummYdw9L#.wrvWJzd93 <comment><USER3> Some early article about ISDS:

[http://www.economist.com/news/finance-and- economics/21623756...](http://www.economist.com/news/finance-and- economics/21623756-governments-are-souring-treaties-protect-foreign-investors- arbitration)

Which points countries that don't sign treaties with ISDS.

Anyone can also gather more information in [http://investmentpolicyhub.unctad.org/ISDS](http://investmentpolicyhub.unctad.org/ISDS)

</comment><comment><USER4> Global commerce is ugly, nasty business. It's basically lawless frontier. Only fools and the unscrupulous dare tread there. You can bet that in any given deal, human trafficking is going to be involved at some point, everybody involved does their best to look the other way or justify it. Systems of justice are easily perverted to suit personal schemes. Slavery may not exist anymore in the sense of humans being bought and sold on the open market, but instruments of sovereignty are regularly bought and sold on semi-open markets.

Trade deals like TPP are attempts by the governments of the world to regularize this world and bring it to heel, like a sheriff to a frontier town. They can be politically controversial, because you can't build a system of international law without infringing on the ability of people to pass their own laws. But it's either trade deals or the Wild West. Goods and capital are going to move around the world no matter what, all we can do is try to regulate it the best we can.

<comment><USER5> I disagree. Actually, I kind-of like what the US is doing - it's creating laws that have international reach (e.g. you can't launder drug money, and you can't bribe foreign officials), and then they apply it to (i) domestic companies doing business abroad, and (ii) foreign companies wanting to do business in the US.

So, each country could very easily create, and enforce, its own set of laws that would prohibit all of the crimes you mention. Companies would do business where they could, and if two countries would have incompatible laws (e.g. in country A, women can't work; companies from country B need to have 50% women employees in every region), there would be no trade between them. Unless they synchronize laws or create exceptions, of course.

In the end, you'd arrive to something similar to what we have today (global trade), except that it would be created democratically, bottom-up, as opposed to what we have now, which is top-down and inherently undemocratic.

<comment><USER6> You better hope the laws (and those who make them) in the strongest economic coalition agree with your moral judgement.

The idea that one culture can decide the laws of another or else the weaker capitulates its economic will is a very tricky concept. It works when the one doing the deciding is 'right'. It's tough to have 'wrong' laws be imposed on you by a foreign power. The idea your proposing is very clearly economic cultural imperialism. Just as in moral philosophy it's very difficult to extract just and good laws from their cultural context.

'Doing business' in another country, as the US currently interprets it, includes the entire supply chain. If you make widget X, that's used in Y, that's used in Z, that's used in a gadget in a car sold in the US, you are 'doing business' in the US and are liable to spend time in US federal prison if the cultural business practices of your nation are not compatible with current US law, even if you have never set foot in the US nor sold any product to US customers. That's scary.

One country's 'anti-competitive behavior' is another's 'human sociability'. Or one country's 'artistic right to profit' is another's 'crime against society'. Could not those acts which could be justified as being a 'fiduciary duty to profit above all else' be otherwise seen as 'immoral business practices' in a different cultural context? Is tracking foreign users a violation of legal privacy? Which of the above behaviors would land you in federal prison in your country? And which would get you charged and extradited to another country's federal prison?

Does economic might make cultural right?

<comment><USER5> What you're describing now is essentially ISDS, not what I'm proposing.

First, the only way the US (or any other country) can "imprison" foreign individuals is if other countries agree to enforce its laws - something I don't support, but accept that it will inevitably happen because of military or economic alliances - and is in any case completely democratic. The US can directly only enforce its laws against companies that do business in the US - and the worse possible penalties are either confiscation of the company's assets, or prohibition of doing business in the country - so companies can individually decide whether to abide by US laws and do business in the US, or neither.

Second, "economic imperialism" is exactly what ISDS/trade agreements are - <USER2> countries' laws can be overruled by arbitrary international courts that have no relationship with the people of said countries. Instead, I'm proposing that countries would freely choose whether to collaborate with other countries or not, and there are many different choices - e.g. UK could choose not to do business with SA, because they discriminate against women, or they could choose to do business with SA, because they have common military goals, or they could say "we don't care" because they decide that they support international trade despite different value systems.

<comment><USER6> Interesting. It's unclear to me if it's even possible outside of very rare circumstances that a country would want to cease trade with another country because their laws didn't align well. What would the incentive be to stop illicit or otherwise mutually beneficial trade when one party was conducting part of their trade unfairly?

It does seem that the previously mentioned economic imperialism _is_ what the ISDS/trade agreements are, but it's not entirely clear how a more voluntary system would, in the end, be much different.

Maybe that kind of homogenization is inevitable if you have well-ruled trade between sovereign entities.

</comment></comment></comment></comment></comment><comment><USER7> > "It works," said Charles Brower, a longtime ISDS arbitrator. "Like any > system of law, there will be disappointments; you're dealing with human > systems. But this system fundamentally produces as good justice as the > federal courts of the United States."

Is that supposed to be a ringing endorsement? A lot of people regard the US justice system as "the best justice money can buy", with victory going to whoever can afford to put up the biggest fight.

</comment><comment><USER8> I find it distasteful, but unfortunately unsurprising, that the financial royalty can force these one-sided trade agreements in 'democracies'. Perhaps western democracies are not as democratic as people think.

<comment><USER9> It's not so much that "democracies are not as democratic as people think" — but that they're more democratic than non-democracies.

Classic example might be Ancient Greece, were the percentage of the population that actually participated in the government was 10%. Given most political topics of major concern are usually closely divided, this means that it would not have been uncommon for 6% of the population to actually decide the fate of a given issue. Of that 6%, it's like a singular person (or small group of people) actually was the key to the outcome of the vote.

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

</comment></comment><comment><USER10> Here is a good, much shorter, article on the subject:

[http://www.economist.com/news/finance-and- economics/21623756...](http://www.economist.com/news/finance-and- economics/21623756-governments-are-souring-treaties-protect-foreign-investors- arbitration)

</comment><comment><USER5> Is this thread experiencing a downvote/flag brigade?

Many of the comments are downvoted (without good reason), and the thread itself is at the bottom of the first page, despite being much "better" (70 points, 21 comments in 2 hours) than some of the top threads (granted, I can't see the flags)!

<comment><USER7> I wouldn't be shocked if people were flagging it for the headline being sensationalized/clickbait (as "letting executive escape their crimes" is just one aspect of a much bigger story). Or just flagging it because it's BuzzFeed.

<comment><USER11> The question is about _comments /replies_ being downvoted, something I too noticed. Those downvoting could at least leave a comment as to why - when as in these cases it isn't obvious at all and looks like trolling.

</comment></comment></comment><comment><USER12> Who enforces these ISDS rulings? What happens if the government doesn't pay up?

<comment><USER3> Perhaps WTO, since it's an agreement. Or the market, as not fulfilling an agreement is similar on defaulting bonds (lack of trust in the country).

Also found UNCTAD: [http://unctad.org/en/Pages/aboutus.aspx](http://unctad.org/en/Pages/aboutus.aspx).

</comment></comment><comment><USER13> The other side of the argument, submitted without endorsement, and, for simplicity's sake in writing a comment that is slightly researched but still just an HN comment, with an unapologetic focus on the US:

* ISDS isn't a "secret court", but rather an instrument used in treaties, the way a venue or severability clause is used in normal civil contracts. Different investment treaties have different ISDS clauses with different rules. ISDS clauses are a big part of what make investment treaties "investment treaties": they're the enforcement part of the agreement.

* ISDS clauses don't preempt or even involve criminal law. In what appear to be literally all cases, they're handled by arbitrators with no formal judicial powers. Those arbitration panels are empowered exclusively to award damages, payable by the host state, to investors. If you look at who the arbitrators are in ISDS cases, they're random industry and academic people. None of them have any ability to "wipe sentences away".

* The US is undefeated in ISDS claims by foreign investors ( _only_ foreign investors have recourse to ISDS; a US investor cannot use the ISDS against the US). No person anywhere has ever won an award of money from the US through ISDS. Obviously, nobody has escaped a US criminal sentence through ISDS, because ISDS can't be used to do that, but even if it could, nobody has, because nobody has won an ISDS claim against the US.

* The reason that nobody wins ISDS claims against the US is that ISDS --- as the argument goes --- is primarily designed to bake into treaty language the norms of US and Western European civil law, particularly with regards to private property and contract enforceability. US investors have a slightly better than 50/50 average in winning ISDS cases, and make up about 20% of all such cases, which is proportional to the amount of foreign investing we do.

* Cases decided under ISDS, at least those with US jurisdiction, are appealable to US courts. You'll find some of those when you go look for ISDS cases.

(End argument that I am repeating without endorsing, begin poorly-informed commentary).

The most important ISDS clause pertaining to the US and the one under which every case against the US has been made is NAFTA. You can read the NAFTA ISDS clause here; it's pretty straightforward:

[https://www.nafta-sec-alena.org/Home/Legal-Texts/North- Ameri...](https://www.nafta-sec-alena.org/Home/Legal-Texts/North-American- Free-Trade-Agreement?mvid=1&secid=539c50ef-51c1-489b-808b-9e20c9872d25)

Skip forward to "Article 1122: Consent to Arbitration" and read downward. The investor gets to appoint an arbitrator, the state gets to appoint its own, and then both parties agree on a third presiding arbitrator. If the two parties can't agree on a presiding arbitrator, the secretary-general of (I think?) the OECD picks them.

At least with respect to NAFTA, there appears to be legal precedent that ISDS cannot be used to challenge environmental protection laws: that taxes, zoning, and regulation pertaining to environmental controls cannot be challenged as unfair takings from investors. I have no idea how forceful that precedent is.

I spent 30 minutes clicking around the UN's UNCTAD ISDS tracker site, which will make this shadowy world court controlling everything in the world with its shadowy clutches seem real, real boring _toute suite_ :

[http://investmentpolicyhub.unctad.org/ISDS](http://investmentpolicyhub.unctad.org/ISDS)

For instance, I went looking for the case in which Buzzfeed claims a Trump partner got their criminal sentence in Egypt vacated by an ISDS tribunal:

[http://investmentpolicyhub.unctad.org/ISDS/CountryCases/62?p...](http://investmentpolicyhub.unctad.org/ISDS/CountryCases/62?partyRole=2)

Maybe you can find it?

* Egypt would have to be the respondent state

* The case would presumably have to be decided in favor of the investor (there aren't many of those)

* You'd think the case would make mention of criminal law somewhere in the decision (there's only one of those, and it pertains to a fine, not a custodial sentence)

* Some principal of that case would somehow be associated with Donald Trump (no principal of any case I can find associated with Egypt has principals who show up in Google searches along with Trump).

Not that Trump matters here; his is a name clearly added by Buzzfeed to juice up the story.

I don't know whether ISDS is a bad thing, or is instead one of those sort of common-sense things that happen to be deployed in the middle of (often legitimate) controversies; like, most large-scale foreign fraud or environmental damage cases are going to involve some nominal form of "investment", so the investment dispute processes of our treaties are always going to be at play, and so on.

What I do feel comfortable saying is that Buzzfeed --- which has often acquitted itself pretty well in reporting controversies over the last few years --- is hyping this issue up _way_ past the point where people are getting an accurate picture from their reporting.

<comment><USER14> _> Maybe you can find it?_

It's this one concerning Hussain Sajwani:

[http://investmentpolicyhub.unctad.org/ISDS/Details/419](http://investmentpolicyhub.unctad.org/ISDS/Details/419)

It seems Sajwani agreed to drop the case as part of a settlement with Egypt [1] [2]

[1] [http://www.reuters.com/article/egypt-damac- idUSL6N0DW4PL2013...](http://www.reuters.com/article/egypt-damac- idUSL6N0DW4PL20130515)

[2] [http://www.constructionweekonline.com/article-22767-egypt- su...](http://www.constructionweekonline.com/article-22767-egypt-suspends- sentence-against-damacs-chairman/)

<comment><USER13> That'll show me to start Googling before reading like 1/3 of the article. :)

</comment></comment></comment><comment><USER15> []

<comment><USER16> The European Union tries to accomplish the same thing with a parliamentary legislature and intergovernmental council, backed up by a relatively transparent permanent court system and a framework of laws based on human rights. But then it gets accused of lacking transparency and accountability and the U.K. decides to leave and replace it with a bunch of bilateral agreements which will likely be subject to ISDS arbitration.

</comment></comment><comment><USER17> The thing that lets executives escape their crimes is called incorporation, or limited liability.

<comment><USER5> You're misinformed, malicious or stupid.

(1) limited liability doesn't protect executives, but investors.

(2) limited liability only limits _financial_ liability, not criminal liability.</comment></comment>


Serverless fax from the 21st century - <AUTHOR> https://tomasz.janczuk.org/2017/04/serverless-fax-from-21st-century.html <comment><USER2> ... [http://phaxio.com](http://phaxio.com) has been offering an API for faxes for years now.</comment>