Ask HN: As a startup CEO, if your HR is screwing up, do you want to know? - <AUTHOR>

After reading the Oct hiring post and having gone through the process myself, there are some egregious offenders of the golden rule in HR.  I'm not even talking about the "I applied and never heard anything!" (which isn't good).  I'm talking about interviewer no call no show for phone screen, rescheduled to do the same thing 2 more times, then the job was filled by the time the phone screen actually took place (that was with a direct referral).
For some positions, it's a employers market.  But, HR is the first point of contact for potential employees, many of whom won't get the job, which is the nature of the beast.  But, when the process is abnormally disrespectful to the applicant, because HR doesn't think it's important enough to do the non-fun part of their job, your brand suffers.  That candidate will tell everyone who will listen about their terrible experience and that'll hurt your future recruitment efforts.
Many thought leaders believe that a critical part of a startup CEO's job is to recruit.  If this is happening at your startup, do you want to know?
If you have had a terrible experience (above and beyond submitting a resume and not hearing anything back), tell me about it below.  If you are feeling bold, name the company so others know who to be weary of. <comment><USER2> Well, if you are a small startup (>20 people) I would say that recruiting is probably a job you should take over yourself, much less want to know.

You need to know that type of thing. As a startup, word of mouth is a huge factor in your success. If you have disgruntled people who were mistreated, you're going to be in trouble.

I make sure I answer every email (we're ultra small at 2 people). For partner companies I even brainstorm some ideas to help them/make their life easier. It at least shows I care about them. You have to be really involved so...yeah, you should want to know!

</comment><comment><USER3> If someone in your company is screwing up, you always want to know. Now whether you want to take action or not, may vary depending on the situation.

Sometimes it's a difference of opinion - if you are getting lots of applications, should the HR person waste time responding to failed candidates, instead of sourcing more candidates? Maybe you think they should - and it's not a waste of time, but rather common courtesy - if so, point it out to them.

I think as a CEO, it's important you set certain policies where you think the industry standard may not be aligned with your company standards. Then make sure you communicate these policies to your staff.

<comment><USER4> _should the HR person waste time responding to failed candidates, instead of sourcing more candidates?_

It isn't so difficult to BCC a big list of failed candidates a form letter to say thanks but no thanks. It's a little impersonal but I'd much rather _know_ than sit around wondering if anything will ever come of it - and given some stories I've heard about 2-3 month response times for successful applicants, that's a lot of fingernails you can save.

</comment></comment><comment><USER5> I would want to know what's going on if I were the CEO. And regardless of how many applicants, I believe in common courtesy and being upfront with people. I'm probably going to be very involved in the hiring process until the company gets so big that we'd need a HR department.

I really can't stand all the problems/complaints about the whole tedious job search process right now and that's why I'm going to build my startup to fix some of these problems. It's nice to know that my startup is in the job search industry and how much flaws and complaints there are, so I know I'm on the right track to doing something good for a lot of people.

</comment><comment><USER6> I once interviewed at a small startup for a software engineering contract, and when time came for salary negotiations, the CEO said "so you're looking for $15 an hour for data entry?" I explained that I was not at all interested in that, and wondered why they wanted someone who knew Grails, Javascript, etc. for data entry. The CEO apologized, and said that they posted the same job description under different titles and salary ranges, just to see if someone would slip up. Needless to say, I passed.

</comment><comment><USER7> Just wanted to chime in and say that, as a job-seeker myself, I'm absolutely with you. Not getting a job sucks, but I can deal with that. Complete silence in the face of effort, however, is just offensive. Doubly so in the form of broken engagements and lead-ons that were never intended to be followed up on.

</comment><comment><USER8> Of course I would like to know!

Gathering a team of stars in critical to me and my Startup, so if the processes aren't optimized in order for us to get the talent, something is wrong and my job as a CEO has not been done.

</comment><comment><USER9> Oh, let's just start naming names! It would be more fun that way.

</comment><comment><USER10> Complete silence after wasting a day interviewing.

</comment><comment><USER11> Why wouldn't you want to know?

<comment><AUTHOR> I'm sure in a public facing forum, no CEO would say, "I don't want to know about HR destroying our brand in the eyes of potential hires." But, for practicality purposes, the CEO has finite time and an abundance of things to do.

I could see sending your interview process horror story to a startup CEO and them not even read the email or it not being so bad that it makes the list of action items worth addressing. On any given day, where you are trying to meet operational goals, keep morale high, balance board / adviser obligations, raise that next round, give face-time to existing customers / while spending time closing new customers, making nice with the press, speaking at that conference and so forth...there's always 20 other things that need to be addressed today. After all, that is what you have a head of HR for, right?

How many CEOs have gotten that type of negative feedback and gotten directly involved? That's probably a better question to ask.</comment></comment>


My experience porting an iOS app to Android - <AUTHOR> http://ryanharter.com/blog/2014/08/21/bringing-an-app-to-android/ I just launched a new Android app, Fragment, and here I talk about the process of porting the app and how things went. <comment><USER2> Nice writing. It is good to see more and more apps trying to do the right thing and really port an app, and not just make an idiotic 1:1 copy of the iOS version.</comment>


What it means to be a Postgres extension - <AUTHOR> https://www.citusdata.com/blog/2017/10/25/what-it-means-to-be-a-postgresql-extension/?hn <comment><USER2> This seems like a VERY shallow analysis of the benefits.

Forking an industrial-grade tool means the entire lifespan of the entire product becomes _your_ responsibility to your client. Tracking the major upgrade changes might be a pain in the arse but they're nothing compared to tracking every security and data-loss fix that bubbles around the Postgres community.

It's not just developer time that's the cost here. They had to compile the whole Postgres+Citus database, for every platform they support, in a timely manner, test it and distribute packages. Think of all the CPU cycles and bandwidth they're saving by only having to compile as an extension against public headers.

Functioning as an extension means Postgres and its distributors (eg Ubuntu) are the people responsible for keeping Postgres alive and secure. Citus only have to support their thing.

Why aren't they talking about how much this move is saving them in day-to-day? There's no shame in being efficient.

<comment><USER3> Being an extension also makes you entirely dependent on somebody else's platform, and makes it possible that your work will simply be subsumed by the platform if they think it's important enough. It's a very weak business position to be in and you have to have incredible future looking planning and brand buy-in to make sure you succeed like this.

<comment><USER2> You're already dependent. Upstream can turn around tomorrow and provide everything your fork/extension does for free. They can alter their entire codebase to cause you weeks of work to keep up. It can be a hard slog being downstream, no doubt about it. That's why downstreams tend to "get involved" upstream. Sponsorship, sit on technical advisory boards, etc.

But what you're saying —which wasn't immediately obvious, and correct me if I'm wrong— is your users are using _your_ database product, not Postgres, so you can hold them back as long as you like when they're using a forked product. They won't be carried away by an automatic update and it's much harder for them to jump ship.

And while there is some truth to that, it comes with a karmic cost. People picked you because you were based on their favourite, industry tested database. If you slip behind in features, or (more importantly) can't backport security fixes _instantly_ , you're dead.

</comment></comment></comment><comment><USER4> They were surprised that maintaining a postgres fork was a pain in the ass?

<comment><USER5> I think it was more that forks just get ignored. Customers want to run PostgreSQL, not something almost but not quite like PostgreSQL maintained by a company that may or may not employ PostgreSQL core contributors. And we certainly don't want to talk to your sales team about why it is a better fit for our use case.

The stuff Citus has been landing in PostgreSQL is fantastic.

<comment><USER6> > _I think it was more that forks just get ignored_

They call out a number of forks that do quite nicely. I work for Pivotal, which sponsors Greenplum. Companies pay handsomely for the capabilities it brings to the table.

But they are right that rebasing is a nightmare. My understanding (possibly wrong) is that the broad selection of APIs that make an extension-only approach did not appear in PostgreSQL until more recent versions -- anyone who forked earlier (such as Greenplum) have to first catch up and then migrate.

I _do_ know that the Greenplum team have decided to catch up until they are working against mainline. It is, as you might imagine, a slow process: rebasing millions of lines of code a release at a time is not the easiest task on earth. But maintaining a fork will, in the long run, be harder.

</comment></comment></comment><comment><USER7> Citus is my favorite website when it comes to Postgres content. Their blog posts are usually very informative and useful.

<comment><USER8> I couldn't agree more, I'm amazed by every single one of their post. They are doing a great job at communicating and giving rich insights on Postgres.

</comment></comment><comment><USER9> Can anyone shed some light on how the supposed new cluster features of Postgres 10 compare to something like Citus?

In other words. Does Postgres 10 offer the same features in terms of clustering as Citus does?

<comment><USER10> No. Postgresql is a single-node database. It supports replication and failover to other nodes and foreign-data-wrapper extensions that let it query other datasources, but it does not have any support for natively working as a distributed database across several nodes.

Citus is an extension that takes several database nodes and makes them appear as a single logical database server (at the table level, by automatically sharding them based on a column).

</comment></comment><comment><USER11> Since we are talking about postgres, please let me go a little OT

Is there any interests in a RDS as a Service? So basically setting up and running a completely fault aware postgres cluster in any infrastructure, either public or private?

<comment><USER12> Yes, but the trick with it is pricing it so that I have a reason to use it instead of just using RDS.

If I could get something like that on Digital Ocean I'd be all over it.

<comment><USER10> You already have options:

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

[https://www.databaselabs.io/](https://www.databaselabs.io/)</comment></comment></comment>


Bing Begins 'Street View' Photography - <AUTHOR> http://www.seroundtable.com/photos/bing-street-view-car-18210.html

<comment><USER2> Whatever happened to MapJack ([http://mapjack.com/](http://mapjack.com/))? I remember they came out pretty early and had a commodity solution that delivered better quality photos initially with a low cost solution.

</comment><comment><USER3> I would assumed this is covered by patents from Google.

<comment><USER4> Immersive Media was the first company to do street view, before Google.</comment></comment>


Zethos – Speed reading tool in 1 kb - <AUTHOR> http://www.zolmeister.com/2014/03/zethos-35-million-in-1kb.html

<comment><USER2> I love you made something and open sourced it, however your multiple mentions of $3.5 million ignores a _lot_ of what goes into software development:

\- Most of Spritz's work went into the R&D, not the actual code. Anyone can copy the end result.

\- Zethos ignores a lot of the science that makes Spritz work so well.

\- Spritz does localization, not just best-guess-English.

\- Usability (as in, how do I even run Zethos on, say, a book?) is important.

\- Spritz has an SDK for Android, iOS, JavaScript and more. They support Google Glass, watches, etc. Ubiquity is important.

\- Marketing, bizdev, support, design, QA, legal, HR.

\- Money raised is a horrible metric for code. Even revenue wouldn't work here.

Think about it this way: a ton of people cloned Flappy Birds in HTML when it came out, but none of them are worth anything. I could do a decent rendition of Facebook in a few hours, but that doesn't make me Mark Zuckerberg.

<comment><USER3> > \- Most of Spritz's work went into the R&D, not the actual code. Anyone can > copy the end result.

conveniently ignoring the fact that most of it was not actually spritz' research. the only "extension" if you so will is that colored cursor. acereader[1] for example has been around for 10 years(or almost 10 years). go to google scholar, and search for saccadic eye movement. for example here is a paper from 1992! [2]. here's another one from 2006 [3]

> Rapid serial visual presentation (RSVP) of text has been reported to foster > higher reading rates than presentation in a continuous text (CT) format, > possibly because scanning eye movements are minimized. We investigated how > this might be relevant for persons with congenital nystagmus (CN).

the fact that spritz may even get credited with this is the very problem of our buzz society. i refuse to believe that creating a crossplatform sdk or "researching" the fact that using a fixed cursor to reduce said saccadic eye movement even further requires 3 million usd. don't get me wrong i'm a little happy that they created enough buzz for this to become popular. but if we really need that much money to do basic tasks, god help us.

> \- Zethos ignores a lot of the science that makes Spritz work so well.

:D like what?

> \- Usability (as in, how do I even run Zethos on, say, a book?) is > important.

how do you run spritz? spritz is an SDK(!). it's not an ebook reader, it's not a website reader it's an sdk. it's up to you to integrate it in your app.

EDIT: this was written before parent appended SDK information to his post

> \- Money raised is a horrible metric for code. Even revenue wouldn't work > here.

> Think about it this way: a ton of people cloned Flappy Birds in HTML when it > came out, but none of them are worth anything. I could do a decent rendition > of Facebook in a few hours, but that doesn't make me Mark Zuckerberg.

your analogy is completely faulty. first of all mark zuckerberg didn't "make" facebook contrary to popular belief. second, flappy bird itself was already a clone that got popular, similar to spritz. third, no, you can't just roll your own facebook in a few hours. you can create something that looks like it, being far from functionally the same. spritz is different. create a spritz clone though? see below:

[https://github.com/OnlyInAmerica/OpenSpritz- Android](https://github.com/OnlyInAmerica/OpenSpritz-Android)

the difference? it's not a library. meaning noone can really reuse the code provided in here. i doubt spritz is going to be that easy to integrate with academic pdf's. though i have a feeling that that's what they might be using their couple million funding on. i have a todo list that's at least 5 years old with a speed reader for pdf's in the list. but is it worth investing time in? sure, if you give me 3 million(i'm not actually being fully serious here, so spare me logical inconsistency analysis of my post)

[1] [http://www.acereader.com/](http://www.acereader.com/)

[2] [http://www.citeulike.org/group/6810/article/3309870](http://www.citeulike.org/group/6810/article/3309870)

[3] [http://www.ncbi.nlm.nih.gov/pubmed/16909075](http://www.ncbi.nlm.nih.gov/pubmed/16909075)

EDIT: there have already been a few rsvp browser extensions for both firefox, and chrome over the last couple of years, but there never was any buzz around any of them.

[http://www.ilovefreesoftware.com/11/windows/internet/reasy-r...](http://www.ilovefreesoftware.com/11/windows/internet/reasy- reader.html)

[http://youtu.be/MuszcoVL3lA](http://youtu.be/MuszcoVL3lA)

<comment><USER4> The major missing feature appears to be intelligent hyphenation. Long words should be broken up by syllable, not raw character count. it's missing the little hash mark at the focus letter as well, but that's an easy fix. intelligent hyphenation likely requires some real NLP work, or at least importing a real dictionary of some kind

</comment></comment></comment><comment><USER5> Is it just me, or other people are also not able to get the content of the text while testing these method? Reading is highly non-linear and it is necessary to spend more time on some parts of the sentence than the others. Streaming the words linearly just does not work for me at all.

<comment><USER6> These tools are not to _read_. They're to _quickly scan_ texts and get the general meaning. You would never, never want to read a novel using this.

<comment><USER7> If I want to quickly scan an article, I start by a few opening sentences, then go directly to the conclusion, and if it is not enough I will quickly scan the opening of some paragraphs to look for the most compelling arguments/experiments. I don't see how using something like Spritz I could be more efficient. The point is that you don't need to read every single word, even very quickly, to grasp the author's ideas. Maybe I am missing something ?

</comment></comment></comment><comment><USER8> For those who haven't had great success with Zethos/Spritz, can give magicscroll.net a try. Another reading tool but very different technology. I've found it quite easy to read books with it for some reason (unfortunately it does not work with PDF or general text content.)

Like try this (click the play button at bottom right to start):

[http://www.magicscroll.net/#reader;md5=597e52af574ea413a5886...](http://www.magicscroll.net/#reader;md5=597e52af574ea413a5886342baaaa9ed)

</comment><comment><USER9> Nice concept, It would be wicked if this could work with something [http://store.neurosky.com/products/mindwave-1](http://store.neurosky.com/products/mindwave-1) (an attention detector basically) and speed up when your attention raise! Also the thing can detect your eye blink, and you basically want to stop a bit the reader when this occurs ;-) I assume google glass already have thought about that.

Future here we go!

</comment><comment><USER5> I believe these speed-reading tools are missing the concept of meaning. While the idea to fix the eyes allows to deliver more data to the retina, the linear speed does not work well. It would be great to combine these methods with some text processing algorithms that are able to extract the key words from a sentence. While I am not expert in text processing I am convinced that methods able to compress text into meaningful keywords must have been proposed in the literature already. If not, it would be very interesting research. Those keywords should be then presented longer to the reader, while the less important words should be skipped.

</comment><comment><USER10> I made a library that does the same a week ago: [https://github.com/luisivan/spritzer](https://github.com/luisivan/spritzer)

</comment><comment><USER11> If someone were to make a Spritz-esque bookmarklet that added more to the basic idea we've seen online, what would you consider to be useful additions? I think that letting users select text and do a run of the highlighted area would be great, or letting them click "pause" to jump the page down to the currently displayed word would be cool too.

<comment><USER12> I made one with those features(except that pause doesn't jump to that word)

[http://www.davidhampgonsalves.com/spritz-like-rsvp-reader- bo...](http://www.davidhampgonsalves.com/spritz-like-rsvp-reader-bookmarklet/)

</comment></comment><comment><USER13> I'd like to use this for PDF-papers. Rough benchmark that would be cool: Read an entire conference paper (usually in the 6-8 pages range, bibliography can probably be excluded for starters) in the time it currently takes me to read the abstract :D

[if you build this you can probably sell it to one of the reference management software vendors]

</comment><comment><USER14> Nice proof of concept (the concept being that sometimes the whole funding thing is a bit difficult to properly understand). Now, a call to programmers: why the heck there's still no readability-like chrome extension? After I saw the spritz demo I thought that it would have been immediately consequential...

<comment><USER2> There's this (a bookmarklet):

[https://gun.io/blog/openspritz-a-free-speed-reading- bookmark...](https://gun.io/blog/openspritz-a-free-speed-reading-bookmarklet/)

However, it no longer works due to him going over the Readability API limit.

<comment><USER12> I made one too that has key bindings as well: [http://www.davidhampgonsalves.com/spritz-like-rsvp-reader- bo...](http://www.davidhampgonsalves.com/spritz-like-rsvp-reader-bookmarklet/)

</comment></comment></comment><comment><USER15> Hello,

It looks looks, however Spritz went a little further, the sweet spot of the human eye is a little to the left of the center, that is where the "red" character should be. On your example you see the larger words do jump around a bit and it is not as efficient.

</comment><comment><USER16> Another Spritz-like implementation: [http://lively- web.org/users/robertkrahn/speedread.html](http://lively- web.org/users/robertkrahn/speedread.html)

<comment><USER17> As a Smalltalk enthusiast, I am really glad to see lively-web in actual use.

</comment></comment><comment><USER12> I wrote one of these things(bookmarklet) but I never really use it. Reading in this fashion while faster just isn't that enjoyable in my experience.

</comment><comment><USER18> How do I install and use it?</comment>


Zillow Launches Home-Flipping Program in Phoenix and Las Vegas - <AUTHOR> https://www.bloomberg.com/news/articles/2018-04-12/zillow-launches-home-flipping-program-in-phoenix-and-las-vegas <comment><USER2> This is copying the Opendoor business model. Keith Rabois, an Opendoor founder / investor, claims this is vaporware and implies this is trying to block an ongoing funding round: [https://twitter.com/rabois/status/984544209188237314](https://twitter.com/rabois/status/984544209188237314)

</comment><comment><USER3> It's not fully clear what Zillow is offering here, but my reading is that Zillow is buying homes, quickly fixing them up, and selling them. If this is what they are doing, I can see a lot of value in these "Zillow Approved" flipped houses.

I've read a lot of online horror stories where people buy flipped homes only to realize they bought a lemon. Houses with shoddy construction work, code violations, and the new owners are stuck with tens of thousands of $ in repairs.

Home inspections help, but they don't catch everything. Anything inside the walls, such as poor plumbing/electric work, are unlikely to be flagged.

I'd be happy to pay a 0.5% to 1% premium on the sales price to be assured the people who renovated this house followed local housing code, used proper construction procedures, and used decent materials.

<comment><USER4> _the new owners are stuck with tens of thousands of $ in repairs._

Don't sellers have any responsibilities for what they are selling in the US? Certainly in Sweden it is the sellers responsibility to disclose any known problems to the buyer and they're financially responsible for any problems they fail to disclose.

<comment><USER5> No. A seller is only responsible for what you can negotiate after inspection. Which is why it is critically important to have a good inspector.

The only homes to have any sort of clawback are new constructions. Which are warrantied for about a year.

<comment><USER6> 10 years (by law) for structural issues.

<comment><USER7> It's the same in France, 10 years for structural issues and 1 year for the basic stuff.

</comment></comment></comment></comment></comment><comment><USER8> Doesn't this create a big conflict of interest in their Zestimate algorithm that's core to their business?

If they provide lowball Zestimates, that allows them to buy homes for cheap. Or if they own the home, they can increase the value prior to sale.

Hard to trust when they could easily use this estimation system to their other business model's advantage.

<comment><USER9> I doubt zestimates are really a core of their business.

Try to use a zestimate to negotiate the price on your next home. Watch how quick the experts laugh you out if the room.

The zestimate is just a nice quick way to get a ballpark value of a home. But I don't think they are playing any significant role in affecting market prices.

<comment><USER10> I find zestimates are most accurate on the day a real estate transaction is recorded. It would be interesting to see an error histogram of zestimate-day- before-transaction.

<comment><USER11> Anecdotally, the zestimate on my home purchase (in 2016) was off by ~30% (the zestimate was too high).

<comment><USER12> It is chronically low in the Bay Area.

</comment></comment></comment></comment></comment><comment><USER13> What Zillow are doing is charging for certainty, buying a house is a huge financial decision - with potential risks.

As a seller, how much do I value a certain payout today? It's at least a few % points.

As a buyer, how much do I value a property which has been "Approved" and been fixed up? Again at least a few % points.

They can easily get a 5% margin, if not closer to 10% (especially if they do value-add improvements)

Then it is just about managing inventory, and not being overly exposed during a downturn - however depending on how their capital is structured are there is the opportunity to rent until it can be sold.

<comment><USER14> I question how much value Zillow would be adding. Inspectors should be playing the role of approvers. And most sellers value getting the biggest offer. If Zillow develops a reputation of offering you less than market value then people will stop taking that offer. Also, if the house is actually changing ownership to Zillow then in some states they would owe at least an excise tax on each sale.

<comment><USER15> What they're doing is an extremely common thing and proven business model.

There are lots of interesting things you can do to consistently buy "below" market value. Don't use a realtor, that's 3-6% savings. Buying in cash and guaranteeing a smooth closing is incentivizing to a lot of sellers, another couple % points. Etc.

</comment></comment></comment><comment><USER16> I was the first data scientist hired at Opendoor. We have a strong team of data scientists, engineers, designers and operators. We're ready and excited to take on this challenge.

</comment><comment><USER17> It's interesting that they're following the lead by Opendoor---the startup that pioneered the same.

What I don't like about this business is it's very capital intense with low ROI. Sort of like high frequency trading for homes.

Plus, transaction prices are all public. Sellers get pissed off when they see how much profit you made off of them. They assume they could've made that 10-20% themselves (in those rare cases), leaving the flipper with bad reviews on Yelp.

Does it make more sense to turn this into a fund, a long(ish) term investor in homes... say longer than 6 months or 1 yr? Essentially creating a medium-term hedge fund. Basically, capital needed to flip shouldn't be mixed up with firm's equity (else you constantly need to raise huge sums)?

Wonder what others think about that.

<comment><USER18> In markets like Vancouver and SF, the ROI is well over 10% per year. And banks are quite willing to offer extra leverage, so the capital costs remain reasonable.

</comment></comment><comment><USER19> Generally, things like this mark a top in the market. Zillow will get caught with a ton of inventory that they can't sell, and then take a huge loss trying to unload them for cash. It probably won't happen right away, but I can totally see it happening in the next year or so.

<comment><USER20> They are market makers, they will profit off of this.

<comment><USER21> If you're selling, you need buyers. If there is an economic downturn, there won't be buyers. There is no way around this.

<comment><USER20> But if you are constantly buying, a down market is actually good as it is followed by a bull run. If you have funds (and zillow would) each doen market is am opportunity to buy some houses for cheap. Put some make up, and eventually it will have buyers, in good markets.

Similar to accumulating stocks. Downturns are an opportunity to buy some stocks for cheap.

</comment></comment></comment></comment><comment><USER22> How will they hedge risks related to a national housing downturn?

<comment><USER23> Perhaps by trading Case-Shiller index futures on the CME?

[http://www.cmegroup.com/trading/real- estate/residential/Sand...](http://www.cmegroup.com/trading/real- estate/residential/SandP-case-shiller-home-price-index.html)

<comment><USER24> Like taking out puts and allowing them to expire?

</comment></comment></comment><comment><USER25> Homes are for living in, not investment vehicles. Housing is not a free market: supply will not rise to meet demand, and entry into the market is limited not by the ability to pay a mortgage, but the ability to pay a deposit, which limits participants to those with access to large amounts of cash.

Individuals doing so are increasingly punished for this behaviour as a way for governments to control anti-social investing (eg, in the UK) or increasingly prevented explicitly from doing so (in China).

I hope the same happens in the US: the alternate is house prices spiralling further out of reach of those without family wealth or very large incomes and those with family wealth or very large incomes growing increasingly wealthy.

</comment><comment><USER26> Home flipping in Phoenix and Las Vegas could be the sole unifying American obsession of the past 15 years.

</comment><comment><USER27> The article states the model is not to profit through appreciation. So where is the profit?

<comment><USER28> From the article:

> Unlike traditional home-flippers who bet they can make money on home > appreciation, Zillow plans to profit by charging sellers a fee in addition > to agent commissions.

<comment><USER27> So they plan to make offers on houses near market rate, invent a "fee" to account for the fact that they won't actually be paying market rate, and then turn around and sell the same house at market rate, pocketing the fee.

For this to work at scale a lot of people must be in a situation where they can't afford the holding costs associated with waiting for their house to sell for what it's worth. Or a lot of people's houses have appreciated sufficiently that Zillow's fee is a non-issue. If anyone knows if this is true, I guess Zillow would.

<comment><USER10> In almost every US housing market except the Bay Area, houses can sit on the market for quite some time waiting for the right buyer. I'm looking at apartments right now in nyc and we saw a very nice place that has been on the market for half a year. It's not exactly right for us at this time, and perhaps it is a little over priced, but it's not hard to picture this making the owner antsy.

<comment><USER27> Every situation is unique: maybe the sellers need a certain price for financial calculations that are wholly separate from the apartment they are selling.

My argument is that Zillow is always going to come in under-market. That's their whole model, and in order for it to work a lot of sellers need to be in a financial situation that allows them to say 'fuck it, I'll take the Zillow price and be done with this'.

</comment></comment></comment></comment></comment><comment><USER29> Is gonna be like stocks, you don't even need to see the product. Is just a number on screen now

<comment><USER3> REITs have existed for a while.

<comment><USER24> I'm surprised no one has mentioned this.</comment></comment></comment>


Redhat & Canonical: UEFI Secure Boot Impact on Linux - <AUTHOR> http://ozlabs.org/docs/uefi-secure-boot-impact-on-linux.pdf

<comment><USER2> Google Docs Viewer: [http://docs.google.com/gview?url=http%3A%2F%2Fozlabs.org%2Fd...](http://docs.google.com/gview?url=http%3A%2F%2Fozlabs.org%2Fdocs%2Fuefi- secure-boot-impact-on-linux.pdf)</comment>


Elixir in Depth – Reading and personal notes - rudi-c http://digitalfreepen.com/2017/08/16/elixir-in-depth-notes.html <comment><AUTHOR> The author doesn't talk a lot about preemptive scheduling, which is probably the best thing about the Erlang virtual machine. This video explains what preemptive scheduling is and why it is extremely useful: [https://www.youtube.com/watch?v=5SbWapbXhKo](https://www.youtube.com/watch?v=5SbWapbXhKo)

First, the speaker creates an application endpoint that runs into an infinite loop on invalid input. Then, he shows how that doesn't block the rest of the requests. Using native BEAM (EDIT: BEAM = EVM = Erlang Virtual Machine) tools, he looks for the misbehaving process (the one running the infinite loop), prints some debug information and kills it. It's pretty impressive.

Another great (and lighter) resource, is "Erlang the Movie" ([https://www.youtube.com/watch?v=xrIjfIjssLE](https://www.youtube.com/watch?v=xrIjfIjssLE)). It shows the power of concurrency through independent processes, the default debug tools, and the power of hot code reloading. Don't miss the twist at the end.

<comment><USER2> Preemptive scheduling is great, but there are some times when it is bad. For example, I was having problems in my Elixir code for live streaming that it was taking too many reductions to fully deserialize and process the incoming message (nothing major was in this code path, just a parsing the TCP packet and unwrapping the different layers). This ended up causing the process to get (what seems to be) overbalanced and I ended up at having delays transferring 5+mbps video through it.

I broke the deserialization up into 3 separate processes (1 for handling the I/O, 1 for packet deserialization, 1 for message deserialization) and while this fixed all the issues (presumably because it can balance the processes more effectively since no single process went over the reduction limit) it turned the effectively synchronous parsing process into a split async process and caused a lot of extra complexity around that.

I'm sure there's more to what caused the issue than just reduction limits but it also made me wary about the magic happening under the hood.

<comment><USER3> You may have been able to bump the process priority to give that process more scheduler time if it's a critical process in a hot path. Perhaps you tried that though. Definitely have to be careful with it, but always an option to keep in mind!

<comment><USER2> I haven't tried that, but I'd have to make sure that every inbound and outbound RTMP connection had high enough priority to correctly execute, and that seemed like a lot of tweaking that had to be done in order to maintain the constant flow of video throughout the app with low latency.

At least for my operation it looked very much like I would really need to become a BEAM vm expert to make sure things ran smoothly (not just with that but other potential issues I had in the back of my mind as well).

<comment><AUTHOR> > At least for my operation it looked very much like I would really need to > become a BEAM vm expert to make sure things ran smoothly

From someone with zero experience in building concurrent systems: isn't this true for every sufficiently complex system? If your system is complex enough, then no general framework will help much, right?

<comment><USER2> At some point sure, but I can get concurrent systems up and running pretty easily in Go, C# and Rust without going too deep into the underlying details of the asynchronous framework. Erlang's VM does a lot more than any of those frameworks or runtimes do though because of how it handles per process garbage collection yet globally shared binaries, the preemptive scheduler and how it balances process load, the hot-reload capabilities etc... It does a lot of things really well but there's a lot of magic behind it, and I seemed to brush against that much faster than I have in other languages.

</comment></comment></comment></comment></comment></comment><comment><USER4> The author says it's "hard to use Elixir with services like Heroku because your instances won't find each other by default (the way they're supposed to)".

I just wanted to mention [https://gigalixir.com](https://gigalixir.com) which is built to solve exactly this problem.

Disclaimer: I'm the founder.

<comment><USER5> We're considering to become your customer, but currently our backend isn't only Elixir but also a nodejs app that mostly prerenders our React app. How do you suggest people combine Gigalixir with non-elastic services or, say, databases?

<comment><USER4> For databases, you can provision one through Gigalixir, or you can provision one yourself with Google Cloud SQL in the us-central1 region.

For other apps, anything running in GCP us-central1 will be in the same high latency network, but some customers interop with AWS or Heroku just fine albeit with slightly higher latencies.

<comment><USER5> Thanks, clear! Any chance for a EU-based region soon? Most of our customers are in the EU and some are required to have their data inside the EU at all times for legal reasons.

<comment><USER4> I actually get requests for EU-based region quite a lot. I think I'll have to start working on that soon, but I can't make any promises.

</comment></comment></comment></comment></comment><comment><USER6> All of my pet projects are run on Elixir/Phoenix. If there is a language/framework to learn, this would be it. As approachable as Rails with the benefits of handling real time applications (chats are trivial with Channels) and faster runtimes than Rails (by orders of magnitude).

Happy to help anyone out if they're interested in learning!

<comment><USER7> Serious question, though I know it will sound negative... I _really_ don't like Rails and don't like Ruby or VB.NET, either (syntactically), which means Elixir is off-putting for me, at least in how it's been marketed. Do you know of anyone like me who has come to Elixir and liked it?

Note: I like Clojure, F#, and other functional languages, so that's not a hurdle.

<comment><USER8> I also come from Clojure and Erlang and, tbh, couldn't get into Elixir for various reasons (I've followed the development closely since its inception):

* Most of the Elixir community comes from the Rails world, so most of the libraries focus on the web.

* Coming from the Ruby world, a lot of these new developers tend to be ignorant of the underlying Erlang machinery, believing that Elixir is the magic that makes Erlang a "modern" and usable language, which is simply not true.

* The tendency to favor frameworks over libraries.

* I'm probably alone in this one, but I find the syntax off-putting. It adds lots of sigils and complexity to Erlang's very succinct syntax.

* In the end, I think Elixir adds very little besides the excellent tooling to the Erlang ecosystem.

<comment><USER7> You're definitely not alone in disliking the syntax.

I agree with most of your points, from what I've seen, except the last one.

One thing that Elixir seems to get right is a sane string implementation out of the box.

<comment> passer-by-123 Not only strings, but better error messages, the new breakpoint support, functions for working with collections, protocols, tasks, etc. It goes quite beyond tooling.

</comment></comment></comment></comment></comment><comment><USER9> I don't think the Gartner hype cycle applies to Elixir, and I think that is largely because it is built on top of a very mature, production-tested platform (Erlang OTP). I have been using it in production for almost two years without issue on [https://teller.io/](https://teller.io/), so if the GHC applies, it's very elongated!

<comment><USER10> So you use Elixir on your finance app? I was wanting to use Elixir on a payment processing app... any details with your experience running in production you care to share?

<comment><USER11> Seconded. I've been trying to find good write ups on production deployment best practices, especially people who have used it commercially for over a year.

</comment></comment></comment><comment><USER12> The only part of that article I'd clarify is around deployment and devops best practices.

You can deploy Elixir exactly the same as any other language. In some cases, it just means making a decision that you don't need some of the extra features that are available like hot reloading...which every project doesn't need.

You can still use immutable images and take advantage of the built in distributed databases by using mounted block storage if need be.

You can use everything out there. Early on figuring out some of the port mappings and how to handle things was more difficult but as far as I've seen, those problems have mature solutions all around now.

<comment><USER13> I'm less interested in what you _can_ do, and more interested in which techniques have emerged (or are emerging) as the best practices. For instance, if I want both hot reloading and deployment on AWS, what's the best way to configure and run this? Etc. Are you aware of any devops-for-Elixir focused resources?

<comment><USER12> The only reason I say that is that every project doesn't need hot-reloading. It's one of those things that is only recommended where you need it.

Just think of it in the same way that you don't need every available jar file for a Java project. The capabilities of the system are expansive, but not always called for.

Distillery is the main deployment related library out there for Elixir and reduces hot reloads to a an argument on the build.

[https://github.com/bitwalker/distillery/blob/master/docs/Wal...](https://github.com/bitwalker/distillery/blob/master/docs/Walkthrough.md#building- an-upgrade-release)

<comment><USER2> Hot reloading also adds a ton of hidden complexity to your projects, since you essentially have to be very careful about every module boundary (as my understanding is that every time code goes from one external module to another non-OTP module it uses the new version of that new module, and thus any non- backwards compatible signature change will crash the process). You can't really casually support hot reloading and need to fully commit to it, unless you don't care if things fail when you hot reload at which point you might as well just do a full reload and keep confidence in the system.

</comment></comment></comment></comment><comment><USER14> If someone is on the fence to make a jump to the elixir world I recommend elixir koans - [https://github.com/elixirkoans/elixir- koans](https://github.com/elixirkoans/elixir-koans)

I have not started looking into phoenix as I'm still exploring elixir, but I'm happy to have started learning elixir with koans along with official elixir guide.

</comment><comment><USER15> Great write up! Guys, if you're on the fence about learning Elixir - dive on in!

You won't be disappointed and you'll be surprised how many times you'll want to reach out to auxiliary services and find out "Oh I can just use ETS/OTP/GenServer/spawn".

</comment><comment><USER16> I don't like the debugging workflow described in the linked article "Debugging techniques in Elixir", it reminds me of DDD: a separate tool not integrated with my main development environment and requiring extra manual steps. I tested both the Jetbrains plugin and the vscode extension, both failed (unsupported versions, bugs, etc...). To elixir users: what do you think about the state of debugging tools? What is your workflow?

<comment><USER17> Well you have the basic IO.inspect/2 that you can use for "printf" debugging. It works really well with the pipe operator because it prints the structure and returns the structure itself not the string representation, so you can do stuff like:

some_function() |> IO.inspect |> some_other_function

Also with Elixir 1.5 (OTP 20) you can set breakpoints easily from within IEx.

There is also IEx.pry where you can set the "breakpoint" in the code itself.

There is the observer tool where you can inspect each process and see numerous information that can be useful. When in IEx just type :observer.start and try it out yourself.

I suggest reading Designing for Scalability with Erlang/OTP, particularly the chapter about Erlang/Elixir tracing facilities that can be really useful when debugging live production systems.

</comment></comment><comment><USER18> Yes Elixir handles concurrency better than Ruby. In terms of raw performance it's nowhere near Go, Java, C++ though. Rails/Django are fast enough for almost all apps, if you need the additional performance improvements of a faster language you'd probably end up with one of those 3. Wonder how much need there is for a language that takes the middle ground in terms of performance. Looks very sexy though, really want to build something with it :)

<comment><USER19> > _Rails /Django are fast enough for almost all apps..._

Absolutely not true for Rails. In an Elixir app with Phoenix my response times are anywhere from 0.2 to 12 ms while the Rails app _that uses the same database_ has response times anywhere from 300 to 2000 ms.

(Before you ask, I did went the extra mile to rewrite one of the small Ruby on Rails apps from my job to Elixir & Phoenix and maintain it as a feature- complete clone, just so I can have objective data.)

If we compare web app stacks, Elixir & Phoenix app is orders of magnitude faster than Rails in particular and this is not an exaggeration -- can't talk for vanilla Ruby though, I've had positive experiences with mid-sized Sinatra apps; but they still weren't capable of more than 20-30 requests/sec if you are looking for consistent throughput.

I truly like Go but to me it has always been a much better choice for highly performant microservices. I tried 3 separate web frameworks 12-16 months ago and I simply concluded Go isn't a good fit for a full web app -- at least compared to the conveniences and dozens of other advantages of an Elixir & Phoenix app. Go is definitely better in several other areas.

TL;DR -- Rails is very far from "fast enough". It's very okay for internal apps used only in business teams where the load won't ever be more than 20 requests _a minute_.

</comment></comment><comment><USER3> I think the discussion around deployment may have been unnecessarily tainted by their experience using edeliver - it's an automation layer for building and deploying releases, but as mentioned it is configured via shell scripts and because it does a lot, a lot can go wrong.

The basic unit of Elixir (and Erlang for that matter) deployments is the release. A release is just a tarball containing the bytecode of the application, configuration files, private data files, and some shell scripts for booting the application. Deployment is literally extracting the tarball to where you want the application deployed, and running `bin/myapp start` from the root of that folder which starts a daemon running the application. There is a `foreground` task as well which works well for running in containers.

My last Elixir gig prior to my current one used Docker + Kubernetes and almost all of our applications were Elixir, Erlang, or Go. It was extremely painless to use with releases, and our containers were tiny because the release package contained everything it needed to run, so the OS basically just needed a shell, and the shared libraries needed by the runtime (e.g. crypto).

My current job, we're deploying a release via RPM, and again, releases play really nicely with packaging in this way, particularly since the boot script which comes with the release takes care of the major tasks (start, stop, restart, upgrade/downgrade).

There are pain points with releases, but once you are aware of them (and they are pretty clearly documented), it's not really something which affects you. For example, if you bundle the Erlang runtime system (ERTS) in a release, you must deploy to the same OS/architecture as the machine you built the release on, and that machine needs to have all of the shared libraries installed which ERTS will need. If you don't bundle ERTS, but use one installed on the target machine, it must be the same version used to compile your application, because the compiled bytecode is shipped in the release. Those two issues can definitely catch you if you just wing a deployment, but they are documented clearly to help prevent that.

In short, if there was pain experienced, I think it may have been due to the particular tool they used - I don't think deployment in Elixir is difficult, outdated, or painful, but you do have to understand the tools you are using and how to take advantage of them, and I'm not sure that's different from any other language really.

Disclaimer: I'm the creator/maintainer of Distillery, the underlying release management tooling for Elixir, so I am obviously biased, but I also suspect I have more experience deploying Elixir applications than a lot of people, so hopefully it's a wash and I can be objective enough to chime in here.

<comment><USER19> Extremely valuable and informative text, made even better in the end by the fact that you're using the best (IMO) Elixir deployment solution!

Thank you!

</comment></comment><comment><USER20> I don't know why, because I don't think they are all that similar, but I'm often asked to defend my choice of using Elixir professionally vs. Go. From the article, this is one of the big reasons I chose Elixir over Go:

"Go's goroutines are neither memory-isolated nor are they guaranteed to yield after a certain amount of time. Certain types of library operations in Go (e.g. syscalls) will automatically yield the thread, but there are cases where a long-running computation could prevent yielding."

goroutines also take up about 10 times the memory.

<comment><USER21> It's true, but would very rarely come up in practice; it's an extremely simplified statement. Any function call(that isn't inlined) is an opportunity for the scheduler to preempt the goroutine. I has been described as partially preemptive.

I thought an erlang process takes up at least 309 words of memory? That would make it <4x on a 64 bit system?

</comment></comment><comment><USER10> This is a really good write up, thank you.

<comment><USER12> I'll second that. Extremely in depth.

<comment> rudi-c Thanks! Much appreciated.

</comment></comment></comment><comment><USER22> That was a nice article. Thanks.

I'm curious about the first table in the "Interop with other systems" part.

It seems to say that an Erlang deployment doesn't need Nginx or a HTTPServer, anybody knows how that works?

EDIT: I read the cited source ([https://rossta.net/blog/why-i-am-betting-on- elixir.html](https://rossta.net/blog/why-i-am-betting-on-elixir.html)) and it seems that is the case.

It looks too good to be true, yet. It would be nice, if somebody with Erlang deployment experience, could comment.

<comment><USER23> Wait a minute. In the graph in the article you shared, it says that instead of storing persistable data in Redis/MongoDb, you would use Erlang. Do people seriously not use a database in Erlang?

<comment><USER24> You have persistent processes which you can send and receive messages from which can be treated like a data structure store, as well as ETS if you need more advanced querying and Mnesia if you need embedded persistence.

I'm not sure how these compare to Redis in terms of performance/latency but Mongo is more of a "proper" database than any of these.

<comment><USER23> Ok. I've used Elixir and read Thomas' _Programming Elixir_ , and from the little exposure I got I knew it was normal to use it as a kv store but still use something like postgres for a traditional db. I did a double take when I saw Mongo in the table.

</comment></comment></comment></comment><comment><USER25> One thing I didn't see covered that I'm currently trying to understand with Elixir is the relationship between process state and disk-backed state. (For example fetched via Ecto.) Does the role of a traditional RDBMS change in an elixir system? What are the durability guarantees of process state? Etc. Any real world experience would be super helpful to hear about.

<comment><USER19> If you don't do a `kill -9 <your_app_pid>` then _any_ of your processes inside will be restarted with last-known good state which the Erlang VM (BEAM) keeps internally. It's not backed by disk state. It's a VM-wide guarantee, so to speak.

The official Elixir tutorial has an OTP chapter in which you are encouraged to actively kill processes and observe them being restarted with good state in real time:

[https://elixir-lang.org/getting-started/mix-otp/dynamic- supe...](https://elixir-lang.org/getting-started/mix-otp/dynamic- supervisor.html)

</comment></comment><comment><USER26> I can see why a person might choose Elixr over Ruby or vice versa. The tradeoffs between Elixr and Erlang are a lot less clear to me.</comment>


Turning Ethiopia's desert green - <AUTHOR> http://www.bbc.com/news/magazine-32348749 <comment><USER2> My girlfriend did her Msc. in agricultural economics by spending months in Ethiopia, touring villages in a Toyota SUV with a driver and two translators and evaluating the various development programs.

I joined her for the last 3 weeks, and so I got to know some of the guys that run these programs and the whole cultural UN/Worldbank etc. bubble. I came away impressed, the country itself is very under-developed, but these people (mostly) made a good impression. They try to do as much as possible on their own, and not relying too much on foreign expertise or leadership.

Its not exactly a democracy, and some programs are essentially forced labour, requiring villagers to work for free and build these terraces and irrigation etc., but it works and they have no money to do it any other way. Places where people used to starve are now food-secure.

It is also a great country to travel, violence is very rare and the food is really nice. It helped to eliminate lots of preconceptions I had.

<comment><USER3> > Its not exactly a democracy, and some programs are essentially forced > labour, requiring villagers to work for free and build these terraces and > irrigation etc

Well it's not as though a democracy is absolutely the best either; there are all kinds of undesirable features like losing 49/51 and getting basically no say for the next four years. But I digress.

In the case where very little money changes hands (subsistence farming) then compulsory labor is a more effective tax than requiring cash payments. Any percentage of nothing is still nothing. And at only 20 days out of a notional 250 work day year, it's less than a 10% tax which seems incredibly reasonable compared to what people in the developed world pay, generally between 20% and 70% (or more) depending on country, state and city.

<comment><USER4> >losing 49/51

Well contrast that with dictatorships where the side with 95% support still loses, and it feels a lot better. This to me is the main feature of democracy. The second best option will occasionally win against the best one. But at least the terrible option will lose.

<comment><USER3> I hear where you're coming from. And I generally agree. But I'm not 100% convinced that the terrible option always loses. In general it should. But it's not guaranteed by any means.

</comment></comment></comment></comment><comment><USER5> This is great news, how to use old technology when it's the best solution for the present problem. It would also have been great to have a schema of how the terraces actually work.

If you're curious like me, here are some pictures of the actual terraces: [https://www.google.com/search?q=Tigray+terracing](https://www.google.com/search?q=Tigray+terracing)

</comment><comment><USER6> It's kind of weird to refer to the Ethiopian famine of the mid-1980s without reference to the Derg, the Red Terror, and the economic and political violence that caused it to happen. [https://en.wikipedia.org/wiki/1983%E2%80%9385_famine_in_Ethi...](https://en.wikipedia.org/wiki/1983%E2%80%9385_famine_in_Ethiopia)

<comment><USER7> These evil Reds... But of course US-backed emperor Selassie had nothing to do with the disastrous economy despite ruling as an absolute monarch for 60 years. And the Ogaden War where US-backed Somalia attacked Ethopia also had nothing to do. And no talk about the White Terror either. It's so easy to simplify to justify one's political positions, isn't it?

<comment><USER8> Ethiopia and Iran are both great examples of the West propping up pretty terrible dictators, who were subsequently replaced by something much worse. That foreign involvement certainly doesn't release the Derg from blame for their predilection for torture and mass-murder though...

It's important to be a bit cognizant of the political situations, though. The willful ignorance of Ethiopia's political reality when Live Aid happened led to piles of charity dollars essentially going straight to the Derg, and thus into arms deals to continue the war with Eritrea.

</comment></comment></comment><comment><USER9> [http://m.youtube.com/watch?v=xzTHjlueqFI](http://m.youtube.com/watch?v=xzTHjlueqFI)

This video has been posted before, and permaculture has been as well, but it's extremely relevant. Terracing takes "a lot" of work which is a downside. There are other downsides as well, but it's a formidable strategy when dealing with steep hills. The hill in the picture from the article actually looks swale- able, which would be a much better approach (more overall water saturation).

<comment><USER10> "Green Gold" is another documentary that describes some projects of greening deserts in China, Ethiopia, & Jordan.

[https://www.youtube.com/watch?v=YBLZmwlPa8A](https://www.youtube.com/watch?v=YBLZmwlPa8A)

</comment></comment><comment><USER4> It's quite fascinating how they didn't have terraces until now. It really is an ancient technique, its around 7,000 years old. That's older than the plow.

</comment><comment><USER11> I wonder. Wouldn't it be better to move all these people to Montana or something, onto empty land that's got to be better than where they're at? Not like they're tied to the land; they are all refugees apparently. I wouldn't mind them as neighbors: "God helps those who help themselves" is pretty much how we operate around here too.

<comment><USER12> For one thing, it's _much_ colder in Montana than in Ethiopia.

Next, what would we do with these people's agricultural output? The US government pays current farmers not to use land to keep food prices up. US have 721k farmers; Ethiopia has 86M population.

<comment><USER11> The point was, they want to feed themselves. Profit is further down the road.

<comment><USER13> I think for the cost of moving 86m people halfway across the world you can probably develop Ethiopia instead (Israel produces 95% of its own food while being more arid than Ethiopia: [http://en.wikipedia.org/wiki/Agriculture_in_Israel](http://en.wikipedia.org/wiki/Agriculture_in_Israel))

<comment><USER11> Just to speculate on that:

Talking about Tigray, with a population of 4.3 millions. I wonder if the equipment to farm to feed those people would actually weigh less than the people? A few thousand boat trips would serve to move them all. In fact, once a fraction had been moved, pressure would be reduce in Tigray to house and feed the remainder.

Remember America took in 65 Million people over its history. Most of those came by steam ship. Today it would be faster and cheaper by far.

<comment><USER13>
        I wonder if the equipment to farm to feed those people
        would actually weigh less than the people

I would certainly think so, considering how advanced modern farming tech is (or even 50 years old farming tech). 4.3m people plus food/water/other stuff they need to survive a couple weeks on a ship (plus then transporting them overland to wherever) weighs A LOT, fuel & vessels to transport them are also not trivial.

The farm equipment also doesn't have to come from America, there are far closer manufacturers (Israel is ~3000km by ship from Eilat, Europe or India ~1000-2000 more).

Anyway hauling millions of people over to America sounds like a pretty ridiculous solution to me. You think the US government would accept millions of refugees with open arms? Why did the majority of Iraqi war refugees had to come to Europe instead?

<comment><USER11> Remember the farm equipment needs support too. Like that food and water, you need fuel, tires, parts, lubricants, expert mechanics...so from a sustainability viewpoint, its likely easier to move people where the technology is, than to try to transplant the technology to where the people are.

And the idea is more a speculative engineering question. What kind of solutions would be more efficient, IF ONLY politics didn't get in the way?

<comment><USER13> I don't know, but I would be really surprised if moving millions of people is more efficient than moving sufficient amount of agricultural equipment & some farmers to get them started on using them correctly (remember that a lot of these people are already farmers, just not using modern tools/fertilizers).

Not to mention it's at least slightly offensive & like treating people like cattle to move them around wholesale like that. Ultimately the problem is not the climate or soil it's the (mis)allocations of resources.

<comment><USER11> Ethiopia has periodic crippling drought. So it is the climate. Water is very precious there. That's the impetus behind the question which can be stated as "Move the people to water, or scavenge water where the people are".

Again, the 'offensive' argument is political. Trying to just compare outcomes, to know what to shoot for in the political realm. Remember, these are already refugees, there against their will.

<comment><USER13> And yet Israel has less hospitable climate and it's doing just fine, due to resources invested in water reclamation/desalination and high(er) tech agriculture[1].

I think you really overestimate how harsh the climate in Ethiopia is - it's not like trying to colonize Mars or Arrakis. It's hardly the Sahara either. The climate is in fact less harsh than fairly extensive parts of the US (particularly the West).

[1] Israel was also doing quite well even when it was a fairly poor country in the 50s/60s (although it was never as dirt poor as Ethiopia).

<comment><USER11> Tigray is classed as 'hot, semi-arid'. So only semi-desert I guess. Israel is pretty much the poster child for western technological development of arid land, with high education and no cap on the budget. Not fair.

To look at it another way, consider a village of 200 refugees. Instead of importing a tractor, mechanic, fuel supply route, parts, seed, education, engineering know-how etc.

Consider moving those 200 people to where the parts store is not 10,000 miles away. Arguably cheaper.

Most of America is uninhabited for instance. I heard once that everybody in China could fit in Montana easily. There're 100M acres in Montana, so maybe that's a stretch - 20 people supported by 1 acres is unlikely.

<comment><USER13> Yes, moving 200 people (and probably also 2,000 or even 20,000) is easier than building the required infrastructure to grow food for them. But after a certain point moving more people grows costs approximately linearly where as growing food via modern farming does not.

That's how modern rich countries like the USA can be net food exporters while employing less than 2% of the population (you will find similar figures in other developed countries). A village of 200 people in the middle of nowhere probably can't be fed by 4 farmers regardless of how much equipment they have.

<comment><USER11> Yet those people in Ethiopia were using hand labor and baskets to build dams. That doesn't look like scalable western farming. It looks a lot harder. So the argument "Move them to the West where modern farming techniques are available" now becomes very, very much more efficient that leaving them where they are.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER14> I'd love to see more genetic engineering talent put toward greening deserts.

</comment><comment><USER15> Electricity... don't they have some spare Sun there?</comment>


IOS layout helper - <AUTHOR> https://github.com/kirualex/KALayoutHelper

<comment><USER2> A useful concept. I wrote something like this myself couple of years back, but never published.

How does using blocks make things better? Seems more confusing that way to me.</comment>


Rendering the Earth via OpenGL - <AUTHOR> http://roberthodgin.com/world-economic-forum-w-zoe-keating/

<comment><USER2> That's quite an improvement over my ancient xscreensaver glplanet (IIRC i started with a 512x512 texture, and didn't use any exotic features.

You might want to hit up jwz to see if you can contribute the assets and rendering code to xscreensaver.</comment>


Ask HN: What to learn next - <AUTHOR> I picked up rails in 2010, right when rails 3 came out. I've been doing it ever since. I want to keep upskilling myself, however, I can't seem to pick which of the new techs is going to dominate in the future. What would be the best thing to add to a seasoned Rails dev skillset?
Would adding something like react, or one of the other js techs be good? Should I expand into django as it is relatively similar. Should I be leaning more about UI design? What extra skillsets makes a rails dev desirable to companies as a freelance/contract dev?
Most contracts I've been on have only slightly deviated from a rails/JS stack and I feel like I'm getting a bit stale!
I appreciate any help to send me in a new learning direction by those in the know! <comment><USER2> It's hard to know where it's going and concurrently learn the right pieces of that thing in the right time to not be late or early to the party...

So, learn the thing you can either learn the deepest or the fastest, or both... because nothing helps learning stick than being fascinated or having fun with it.

Sometimes you can learn on the side and sometimes it's healthy to bite off just a little more than you can chew if you are determined and learn some parts of it in real time.

Personally I think go, swift, javascript/react are going to be around for awhile and see many new projects in these. But I think this is on a rolling cycle; every 5 years seems like so many changes. Just seems like yesterday that rails was the coolest thing since sliced bread. Then there is java which just is everywhere. Rust is also very interesting, and seems to have a great community, job wise not many in comparison to either rails or js.

Finally however elixir seems cool. And slightly railsy. That might be next on my list.

</comment><comment><USER3> Three things to try:

1\. Move to close but related skill. You mention design, which is a good example, but could also be e.g. understanding HTTP on a much more basic level.

2\. Alternate solutions. E.g. Sinatra is a very different approach to building web applications.

3\. Get better at things you already know. Learn how to test rails better, or a new JS library you can use to write better code within same stack.

More detailed writeup: [https://codewithoutrules.com/2016/04/27/which- technology/](https://codewithoutrules.com/2016/04/27/which-technology/)

</comment><comment><USER4> Golang, React</comment>


Ask HN: can software be made "anti-fragile" (aka "better than just robust")? - <AUTHOR> Software ages too fast for my liking! After a few years in this game, every time a "substantial" idea gets me excited, my brain wanders quickly to this thought: "yeah, let's roll down this rabbit hole again. Spend over a year on something that soon won't matter, be outdated or erode into plain non-functioning state in around or under 5 years".
The tech world moves so fast, all we indie devs or "small teams" can reasonably attack are "toyish gigs". "Side projects." Hackathons, 24-hour/weekend projects... isitsunnyin.com/location etc. Or, participate early (as freelancers or contributors) in a new wave that may at least "sustain" us for perhaps a decade before expiry. 10 years ago .NET or PHP, 5 years ago mobile, today "big data" or Go. Well that's not too shabby... BUT -- I'm still wondering about this and I'm about to dive into this read:
http://en.wikipedia.org/wiki/Antifragile:_Things_That_Gain_from_Disorder
"Some things benefit from shocks; they thrive and grow when exposed to volatility, randomness, disorder, and stressors and love adventure, risk, and uncertainty. Yet, in spite of the ubiquity of the phenomenon, there is no word for the exact opposite of fragile. Let us call it antifragile. Antifragility is beyond resilience or robustness. The resilient resists shocks and stays the same; the antifragile gets better."
Just wondering if anyone ever developed some more in-depth thoughts of the possibilities of "anti-fragility by design" in the tech world (specifically software). Not as in "software that  lasts a lifetime" (COBOL mainframes anyone?) but building stuff that somehow "gets better".
Anyway, I'm off to some studying, looking forward to any insights from the fine crowds in this arena.. <comment><USER2> Yes. GNUemacs is an example. It avoids fragility by being so extensively configurable - entirely configurable some might argue because the source code is available. There are few other programs that have survived thirty years, let alone been among the leaders of their field that long.

Compare this to the fragility of an iPhone App. Apple can change the OS. They can change the TOS for their store. They can produce a new incompatible model, or one with additional features. A competitor can create a better combination of phone and marketplace. People can get tired of the limited thing an app is allowed to do.

</comment><comment><USER3> > Just wondering if anyone ever developed some more in-depth thoughts of the > possibilities of "anti-fragility by design" in the tech world (specifically > software). Not as in "software that lasts a lifetime" (COBOL mainframes > anyone?) but building stuff that somehow "gets better".

Software itself might be able to, though I suspect that's a hard problem, in the technical sense. Software considered in conjunction with the social system surrounding it which provides maintenance, etc., certainly can be, but that's a _social_ problem rather than a technical one (and, really, the solutions to it are pretty much the same as making the social system better even if the processes it was managing are not automated.)

<comment><USER4> Of course, software itself ought to do it. I don't know if that's a hard problem, but that's a meta-programming problem. Not something you can do easily if you don't use lisp.

<comment><USER3> > Of course, software itself ought to do it.

Antifragility for most real world software means that the quality has to improve over time even though requirements are changing. Unless the software is adapting _itself_ to new requirements (as well as maintaining itself), that means that the net outcome of development and maintenance efforts has to be an improvement in quality. While the design of the software can be a major factor here (making antifragility easier to achieve or harder), it still depends on the system outside of the software that is developing and maintaining it.

> I don't know if that's a hard problem, but that's a meta-programming > problem.

I'd suggest its a problem equivalent to solving strong AI.

> Not something you can do easily if you don't use lisp.

Lisps aren't the only class of languages that support easy metaprogramming, and language support for easy metaprogramming doesn't do much to get you closer to the goal here, anyway.

</comment></comment></comment><comment><USER5> [https://docs.google.com/file/d/0B_31K_MP92hURjZxTkxUTFZnMVk/...](https://docs.google.com/file/d/0B_31K_MP92hURjZxTkxUTFZnMVk/edit?pli=1)

For a more in depth treatment of anti-fragility. Read anti-fragility a couple of times. One of the one most important ideas of our time (IMO). Btw, your intuitive linking of "age degradation" is also pointed out by Taleb albeit in a different manner. His premise is that ideas that have persisted for a long time are anti-fragile. This is because they have been subjected to shocks, to ridicule, to experimentation and these ideas have become better. Age of existence is one of many indicators of anti-fragility.

<comment><AUTHOR> Much appreciated!

</comment></comment><comment><USER6> You might be interested in Inconsistency Robustness 2011 at <http://www.robust11.org/>

Cheers, Carl

</comment><comment><USER7> You're conflating two separate issues -- that of software fragility and software lifetime. Some software breaks too easily. Some software ages too quickly. Those are separate issues.

> Just wondering if anyone ever developed some more in-depth thoughts of the > possibilities of "anti-fragility by design" ...

But that's classic computer science. There's no debate about manual and automatic testing and intelligent error handling -- all software needs to have it.

> but building stuff that somehow "gets better".

To "get better" without human intervention would require a computer system so intelligent that it creates local violations of entropy, sort of like people, and that imitates evolution and natural selection.

We haven't remotely gotten to that point yet -- computers and computer languages would need to be much more powerful than they are. They will eventually be, but more time and energy will be required.

<comment><USER8> No, you are assuming that a software system includes just the program.

In a more holistic view, a software system includes the program and its developer community. In that sense, certain software such as Emacs and Linux has clearly proved itself antifragile, whereas most other software is clearly fragile.

The test for antifragility is this: Does the software improve with the presence of time and when faced with change?

If it does, it is antifragile. No need to add more conditions like "no developer changes are needed". Developers are part of the software system.

<comment><USER7> > Developers are part of the software system.

For that meaning, don't use the word "software". The word software has a well- understood meaning that a developer community surrounding a code base doesn't meet.

> The test for antifragility is this: Does the software improve with the > presence of time and when faced with change?

Software cannot do that on its own. Remember, we're using the word with its accepted meaning.</comment></comment></comment>


From Markdown to remote code execution in Atom - <AUTHOR> https://statuscode.ch/2017/11/from-markdown-to-rce-in-atom/ <comment><USER2> As soon as I saw the title I suspected the exploit was probably markdown related, as I had fixed pretty much the exact same issues in VS Code. Two things to keep in mind when developing electron apps:

\- The potential impact of an XSS or other security exploits is much higher. You can limit the impact of most of these with additional layers of security, such as running untrusted html in isolated environments with node integration disabled. However, also remember that...

\- Many security features are opt-in. Content security policies (CSP) are a good example. Pages without a CPS default to allowing anything, which sort of makes sense in browser world for backwards compatibility, but is not a good idea for desktop apps.

<comment><USER3> > _As soon as I saw the title I suspected the exploit was probably markdown > related_

The title literally says "from Markdown to remote code execution" what else were you expecting?!

<comment><USER4> The title was changed after the original post.

<comment><USER2> Yes, thank you. This was originally posted as: "An XSS in Atom Editor That Turned into RCE". XSS + Electron instantly made me think markdown

</comment></comment></comment></comment><comment><USER5> I've an idea. Let's write GUI apps using GUI libraries, like everyone used to, instead of writing them for a web browser.

Not only will this be more secure, it'll also be 10s or 100s of times more performant.

<comment><USER6> I understand the sentiment and dislike laggy UIs, but browsers have been running millions of apps securely on billions of computers for ages. No browser exploit has led to worldwide data compromise. In fact, being able to run untrusted code at this scale represents the pinnacle of security engineering feats.

There have also been plenty of exploits in applications written entirely with native code.

<comment><USER7> Browsers can barely open a simple web page without getting owned. They're probably the number one infection vector nowadays...

This has lead to some pretty bad hacks. I'm not sure what more you could want really, a vulnerability where people can be punched in the face over the internet?

<comment><USER8> > a vulnerability where people can be punched in the face over the internet?

That sounds like a mild form of swatting, which is already a thing.

</comment></comment></comment></comment><comment><USER9> I wish there was a dead-simple, you-cannot-get-it-wrong, step-by-step, nothing-left-out, no-knowledge-assumed, all-in-one-document, not-spread-out- over-various-pages, tutorial/checklist on how to ensure your Electron app is as secure as possible.

It shits me that it is a research task with all the attendant uncertainty about whether or not I did in fact make it secure.

I do appreciate that security is complex and even such a document would not guarantee security, or that you had not somehow created your own security hole, but I just want to do the very best possible effort at security and currently that is too hard with Electron.

UPDATE: this post has led me to attempt to redesign my application to not use Electron. I just can't afford some misconfiguration or coding error leading to user machines being cracked.

<comment><USER10> Security is never easy. It is always a battle. Maybe AI is the answer

<comment><USER11> AI is decidedly not the answer. Formal verification is the answer, and tooling around it.

<comment><USER12> My impression is that making everything formally verified is a lot of work and it would be very hard to make formally verified code as easy to write as non- verified code.

<comment><USER13> The central dilemma is that there are myriad ways to do it wrong for every one way to do it correctly.

</comment></comment></comment></comment></comment><comment><USER14> Electron makes things worse: it is not secure. Electron has many security vulnerabilities. The latest version is still based on old Chromium (58 & 59) so it inherits many of the security vulnerabilities published in Chromium 60, 61 and 62

<comment><USER15> As long as you don't load untrusted code or content... I guess many of the issues are moot if untrusted code can't get access to javascript and is only exposed to HTML parser (DOMParser).

The way I'm using electron for my pet projects is only passing untrusted HTML to DOMParser and then sanitizing with strict whitelist of attributes/html elements. Only then will any HTML code get interpreted by the browser engine.

Feels somewhat safe, but I haven't read the bug list. :)

Image format decoding and HTTP/TLS/request processing layer bugs may be other source of issues in any case. But hopefully that runs in some restricted environment.

<comment><USER16> "As long as you don't load untrusted code or content..."

Because end users are soooo good at that?

<comment><USER17> They're referring to the application developer.

If the developer uses Electron only to open the application's own html files and doesn't render user-provided HTML anywhere, then there won't be any XSS vulnerabilities.

</comment></comment></comment></comment><comment><USER18> Whilst it's very hard to write a secure C application because writing C is hard, it seems it's very hard to write a secure application in javascript because javascript is too easy. Maybe we should stop blaming language complexity and start blaming the complexity (or lack thereof) of the designs that fail us?

<comment><USER19> Neither of those is about "hard" versus "easy". C pre-dates a modern understanding of security boundaries and tries a little bit too hard to be "close to the machine" (so long as the machine looks a lot like a PDP-11). Javascript-the-language is not the problem, but _having the whole browser infrastructure present in order to render a document_ is the problem here in Electron.

The challenge in language design is to erect the right number of boundaries and barriers, in the right places. Too many, and you get people complaining that they can't write Rust because of the borrow checker. Too few, and you get people vaporising multi-million-dollar Etherum contracts by mistake.

<comment><USER18> I don't think you understand. I am not blaming languages, or indeed making a statement about how hard or simple they are to use. I'm just trying to point out that application design is hard - and in fact I do consider the fact that a text editor has pulled in the whole browser infrastructure to render a document a design error.

</comment></comment></comment><comment><USER20> This is why I don't run any Electron apps on my computers at all, ever.

That means I'm stuck with the web browser version of Slack, Skype, Signal (going away), and so forth, which is a shame. But it's better than the security nightmare that is Electron.

I wish developers wanting to make cross platform GUI applications would look instead at Qt. It's extremely easy to use, really fast, and generates great GUIs. It's been around for ages and continually sees updates. Usually people who see the Qt light are pretty satisfied. It can also be used from a wide variety of languages, in case you're not into writing C++.

I sort of suspect that Electron's popularity is due to it being accessible to the hordes of JavaScript developers who otherwise wouldn't have had any clue how to make desktop/native applications. However, do I really want to be running unsandboxed xss==>rce code written by clueless devs? No, no I do not. So, in the end, refusing to run Electron apps turns out to be a somewhat reasonable security posture.

<comment><USER21> Look, I love Qt; I worked with it a ton, I contributed back to it, I even still work on LXQt sometimes.

But the rise of web apps, and Electron along with it, have turned the Linux desktop from a "you need to dual boot or use wine" machine into one where all my tools and apps are Linux compatible and have feature parity with Windows and macOS.

I also wish Qt would see more use, I also wish more people would write desktop apps using desktop frameworks when it's meant to be a desktop app, and I really wish people would start writing tiny CLI apps in nodejs and include 70 dependencies. But truth be told, I'm happy to live in a world where I can do 100% of what I do on Linux without feeling like a second class citizen.

I think the "Web on desktop" paradigm is the future, even if it's currently a bleak one. Ten years ago, it was becoming pretty clear that Javascript would be the future, and at the time that was a bleak prospect -- but tooling improved and today, things like Typescript, React, the plethora of incredible development tooling and excellent cross-platform compatibility have turned what used to be bleak into an excellent environment.

There's a lot of improvements that can happen with Electron, if rather than fight it we actually embrace it. Running 10 different web browser engines for 10 different apps may be silly, but what if Electron was global to the desktop instead of included in every fat app?

You'll note that Google has been dipping their toe in that water for years with ChromeOS; Mozilla also tried their version of it with FirefoxOS, which failed for a plethora of reasons that don't undermine the concept at its core.

Basically, JS on the desktop is in the same uncanny valley as it was on the web a decade ago. It's ugly, slow, overwhelming and changing too fast. But there's an end goal there, which doesn't have to suck.

<comment><USER22> > "really wish people would start writing tiny CLI apps in nodejs and include > 70 dependencies"

did you mean /s/start/stop/ above?

<comment><USER21> Uh, yeah. People have definitely started.

</comment></comment></comment></comment><comment><USER23> > Bringing web security issues to desktop apps

Wonderful :)

</comment><comment><USER24> Why does anyone think that blacklisting things they know about makes html more secure?

I guess whitelisting only the things they are absolutely sure are harmless is way more work.

<comment><USER25> Even whitelisting is dangerous for web/html. Given any tag, there's probably a large number of things you can do with them that boggles the mind as in "whoa I didn't know you could do that..." including things that are not in the w3c specs but are coded into the interpreters.

Basically the experience of a web developer every day, no matter how experienced you are.

<comment><USER24> I you whitelist tags and then whitelist attributes and then whitelist attribute values and for attributes that have values with its own structure, like style whitelist allowed things in that structure, you should be fine.

But it's hard to restrain yourself from doing: allow any (possibly except some) at any stage of whitelisting.

Even to a point of not allowing string of any characters as attribute value.

</comment></comment></comment><comment><USER26> Is there a good reason to allow unsafe eval in the Content Security Policy?

<comment><USER2> Not really, except when you are first adding a CSP to an older site that relies on eval (probably in a some crazy old jquery library). The name 'unsafe-eval' and the fact that 'unsafe-eval' has to be explicitly enabled are strong hints that you should move off of it as soon as possible

</comment></comment><comment><USER27> This is horrifying. And they only applied a bandage as a fix.

</comment><comment><USER28> Unrelated: the article kept sending blurry low-res images and downloading the full version as I scrolled past them. I found this very annoying since I have a poor internet connection and had to wait for each image to load. I'd much rather prefer a slightly longer initial page load than waiting for each image.

</comment><comment><USER29> The author suggests a malicious attacker might typosquat common packages and embed the exploit in a readme.

But if the user is already downloading your package, why bother with an exploit? You've got all the permissions allocated to packages (which I imagine are most permissions). You can just execute the malicious code directly from the package.

Edit: nvm

<comment><USER30> from the article:

> _So a malicious attacker would just have to register a bunch of malicious > packages for every letter or offer a few packages with similar names to > existing ones. As soon as someone clicked on the name to see the full entry > (not installing it!), the malicious code would already be executed._

<comment><USER29> My bad, missed that part. Yikes.</comment></comment></comment>


William Stein on the struggle for open source funding in pure mathematics [pdf] - <AUTHOR> http://www.ams.org/journals/notices/201805/rnoti-p540.pdf <comment><USER2> I still can't believe that they decided that the best use of their money to fund "open source" was just to give everyone Magma licenses. I hope they reconsider that choice some day.

Also, what is Fateman's problem? His constant negativity is really grating. I used to experience it when I was more involved with Maxima. I don't know if he thinks his cynicism is helpful or not, but all it ever did was make me unhappy.

<comment><USER3> I'm an engineering student an I can say with property that, although I don't know much about Sage, a good symbolic math project (in particular Open Source) is sorely needed. It would be _far_ from a curiosity. Most students use Matlab/Octave where I study, and all it does is allow for numeric computation. We've had huge advances in computing and it's been long since numerical integration was our best aid! More math heavy engineering subjects will often encounter large symbolic manipulations needed to arrive at some result, and common sense is that there's no good tool to help with that. Common sense is there is some limited symbolic manipulation in some HP calculators, and Wolfram Alpha, although it often refuses to work once you start playing with larger expressions.

I also know that some fields like ANNs (AI) research rely heavily on automatic symbolic differentiation, although I'm not sure the tools they use.

<comment><USER4> Check out SymPy:

        >>> x, a, b, c = symbols('x a b c')
        >>> solve(a*x**2+b*x+c, x)     # solve(expr_eqal_to_zero, var)
        [ (-b + sqrt(-4*a*c + b**2))/(2*a),
          (-b - sqrt(-4*a*c + b**2))/(2*a)  ]

More info: [https://minireference.com/static/tutorials/sympy_tutorial.pd...](https://minireference.com/static/tutorials/sympy_tutorial.pdf)

<comment><USER3> I will, thank you vm :)

</comment></comment></comment></comment><comment><USER5> A personal anecdote, yesterday I was thinking about using Maxima versus R (using rstudio) for a three session of 1.5 hours (total 4.5 hours) to cover statistics and probability. Using dice = sample(1:6,100,rep=T) and table(dice) you hit a wall, there isn't an intuitive way to extract the counts, and you need something like as.data.frame(table(dice))$freq, which I don't like. Maxima use ":" for assignment, R can use "=" or "<-". I would like to see "<-" as a general symbol for assignment and using "=" in maxima and R for other uses like equations and default parameters. I prefer seq(1,10) or 1:10 to makelist(i,i,1,10). What I am trying to communicate is that all those open source projects use different syntaxes and that is not a good design for users. Mathematica wins in this field because it unifies the syntax. But Maxima and R are both inspired by Lisp, and Julia has also some macro capabilities. If someone is able to unify the syntax it would be great. We have data.frames and data.tables and non standard evaluation and a lot of concepts that to be useful must be framed in a common context, otherwise we are doomed to a babel tower, or in more practical terms, users are going to choose propietary software because it is designed to make them productive. Python with numpy and pandas is another option but for 4.5 hours I prefer the simplicity of lm(y ~ x) to create a linear model model to other options. I don't know if a smooth transition can be established between a simple language (rich context) and a general one.

</comment><comment><USER6> Bill Stein is a genius programmer, and Sage is quite the accomplishment. I wish he was more Chern, less Yau. I go to talks where people credit Sage where I know decades of Singular effort were responsible. (I coauthored a similar system; this is a life's work one is dismissing.) Sage was just the envelope, until he could replace the content, in this case unlikely to happen. I wish he was more interested in fixing this sort of user confusion. Draw your own conclusions.

<comment><USER7> Sounds like the old "linux isn't linux, it's gnu/linux/x/firefox" debate.

If people use sage to get the work done, they are using sage. I don't see intel wanting recognition for every scientific paper ever written on their chips.

<comment><USER8> The problem is that projects like Singular depend on listing papers that have been written with them to get funding and attract contributions. These represent a very significant amount of work. Sage doesn't handle a lot of stuff directly: anything more then basic arithmetic often goes to a specialized package.

<comment><USER9> It is not true anymore that "anything more than basic arithmetic goes to a specialized package" (it used to be true back in 2005). The Sage library itself is nearly a million lines of code and is very deep after contributions by over 500 people during 14 years--it's far more than "basic arithmetic".

</comment></comment></comment></comment><comment><USER9> This is mainly about my struggle for open source funding in pure mathematics.

<comment><USER10> Ok, since we have authorial authority for it, we'll put that in the title above.

</comment></comment><comment><USER11> The thing that open source lacks is a funding source. Is someone here in a position to know people who have money and want to change the world?

Consider the idea of "open source accounting". Here's the idea in more detail and how to facilitate it.

Open source needs the ability to apply for, receive, and manage grant funds. The management is key. With grant funds a lot of open source software can afford to devote more resources to higher quality output.

Find someone with money who wants to change the software world.

Form a non-profit organization to manage grant funds.

Set up an office with, say 3, accountants. With overhead, I estimate it at about 1/3 Million per accountant, so 1 million per year.

Get the money source to allocate, say 10 million, in "seed funding". This would be broken into 200 50k grants or even more smaller grants.

Contact open source firms, like Red Hat, Canonical (Ubuntu), the Open Source foundation, etc. Get them to advertise the grant organization and kick in some of the 10Mil funding. That way the "seed" funder does not have to actually show up with the full amount.

Sponsor a "Useless-S-Grant" conference where people who attend bring their projects, their grant applications, and report results. Set up a USG journal to record reports. Let conference attendies vote on which grants should be funded.

Require projects to have realistic criteria, such as a commitment to develop some coordinated work (e.g. a Jupyter interface), or a new facility (move their software to an app), reduce their bug list by half, etc. That is, grant funding needs a REALISTIC grant proposal with known criteria.

Require projects to have a github account. In fact, get Github to be one of the sponsoring organizations. Or sourceforge, or GNU.

Require projects to submit progress reports and give an end-of-grant year talk at the Useless conference.

Have companies give grants (aka pay for, with accounting) for fixing specific issues with an open source project. They might, for example, want the project port to their platform, include a specific feature, or fix a specific bug.

Limit, track, and require receipts for all funds in motion. Handle things like tax reporting. Limit grants to pay for conference attendence, travel, hardware, cloud costs, but NOT salary. But allocate "minimum grants" (e.g. $500 / $1000) to registered students (similar to Google's Summer of Code grants).

Put pressure on large companies (IBM uses Linux in its Z-series, for example) that use open source to support the Useless organization.

Find someone who understands the open source money landscape for advice. I recommend William Stein of the SAGE project. We have had several discussions about money. He left a University position to try to save his project once he could not get grants anymore.

The net effect is that open source software would have a well-known funding source. Projects with grants get publicity which means more people will want to associate with them. Real progress can be tracked and measured.

I am not connected to anyone who knows anything about accounting, setting up a non-profit, or anyone who knows anyone who could pony up 10 million dollars for the glory of it. You might.</comment>


Apple at Interspeech 2019 - <AUTHOR> https://machinelearning.apple.com/2019/09/15/interspeech.html <comment><USER2> I don't follow apple closely, but isn't this a new direction for them?

Publishing papers and sponsoring research conferences? My impression of apple research has always been to keep it inside and not really join the public discourse

<comment><USER3> Words from Apple News Circle were that Apple could not hire any talents in Machine Learning because Apple has rules and policy to disallow their employees publish anything ( even blog ) without approval. And that includes any research related technical documentation.

I guess in Machine Learning fields you will need these papers to prove your worth, not to mention the continuous improvement in ML across the whole industry. So after a few years Apple relented and allow them to publish these papers.

This slight changes of attitude has some effect on other department as well, including security research where now Apple at least participate in certain events.

</comment></comment><comment><USER4> Can someone at Apple solve multilingual users problems (especially when your small country is not one of 15 supported ones)?

Also wouldn't mind being able just use Google's assistant natively...

<comment><USER5> I can't imagine Apple and Google would work together to integrate Google Assistant in Apple's systems in a way that meets Apple's privacy standards.

I think if Siri got direct web answers working reliably (currently being tested in Spotlight search) then the two assistants would be comparably useful.

<comment><USER4> Well ideally there'd be a common protocol for all assistants.

What I really want tho is transcription for more languages. Google has an API for that, just let people use it...

</comment></comment></comment><comment><USER6> To anyone who might consider working at Apple: [http://worrydream.com/Apple/](http://worrydream.com/Apple/)</comment>


Running A startup? Try Running Two At Once - <AUTHOR> http://tech.li/2012/02/ceo-sundays-running-two-startups-is-more-than-a-possibility/

<comment><USER2> Thanks for the article. A lot of okay points but mostly common-sense. I'm actually one of the few who is running two startups at once right now.</comment>