Show HN: Using 3D Convolutional Neural Networks for Speaker Verification - <AUTHOR> https://github.com/astorfi/3D-convolutional-speaker-recognition <comment><AUTHOR> We leveraged 3D convolutional architecture for creating the speaker model in order to simultaneously capturing the speech-related and temporal information from the speakers' utterances.

</comment><comment><USER2> Have you compared your system to state of the art results on NIST Speaker Recognition Evaluations? I'm asking because the datasets released for these evaluations every two years or so are what have been driving progress in the field for close to two decades, and your dataset is completely unknown in the speaker recognition literature. Not trying to discredit your work, but that's THE obvious data you would use to evaluate anything speaker recognition related and not doing that just raises some flags.

<comment><AUTHOR> Thank you so much for your feedback ... You are absolutely correct ... Usually, for publishing, people use any dataset, for example in Google they usually use their own huge dataset for the speaker-dependent scenario and not the NIST. But I accept the comparison using NIST dataset could showcase the work in a better way. Unfortunately, I am not working on that project anymore so I have no time for doing that but I am open to collaboration for this effort if anyone is interested to continue.

</comment></comment><comment><USER3> Any hints about future improvements for open set speaker diarization?

<comment><AUTHOR> Deep learning is going into that but when? That's obviously another question. Lol!</comment></comment>


Broken Lotteries | Wired Science - <AUTHOR> http://www.wired.com/wiredscience/2011/07/broken-lotteries/ <comment><USER2> "Lottery is a tax on people who are bad at math" just got more literal.

<comment><USER3> In these cases, yes. Of course there's also the more direct saying that lotteries are a tax on stupid people. But I don't see it that way. It's supposed to be a contract between a lot of poor people allowing one or more of them a chance at a "rich" life. If anything, it's a tax on desperate people.

<comment><USER2> Yes, (a (non-broken) lottery might be a rational choice even for someone understanding the math behind it.

If you only have $20k and need $0.5M for an urgent life saving operation, then the expected payoff for not playing is -$20k (death) and it's -$20k+(some non- negative value representing the win) for spending all of your money on tickets.

<comment><USER4> It doesn't even need to be that desperate. I understand the math, and I play the lottery every once in a while for the same reason that perfectly rational people visit casinos: it's fun and carries a non-zero chance of a payoff that is more life-changing than the money I spend on it. Being stupid is not a requirement.

We spend our money on plenty of things that offer negative monetary returns in exchange for pleasure, comfort, and entertainment. Premium beer, in my case.

Besides, it's not constructive to consider only the straight monetary expectations of lotteries when discussing their socioeconomic implications. Poor people are generally not buying tickets because they think it's the mathematically correct move.

</comment></comment></comment></comment><comment><USER5> Looked more into Cash WinFall, looks like they are trying to fix the lottery and are blocking gamblers from buying more than $5000 of tickets per day per terminal: <http://www.masslottery.com/about/news.html>

<comment><USER4> The article from the old discussion mentioned that lottery merchants were violating a number of rules by letting these high-rolling customers run the ticket machines, etc. I wonder how they'll enforce this new rule if they had trouble enforcing the rest of them.

<http://news.ycombinator.com/item?id=2828122>

</comment></comment><comment><USER6> So Srivastava could determine a winning-vs-losing ticket by looking at it. _What lottery out there_ lets you examine and play with tickets before purchasing them? Are you allowed to return an unscratched ticket for a refund?

<comment><USER7> The articles linked to in the OP (both of which have been discussed on HN before) provide a lot more detail.

To answer your specific question, Srivastava called the provincial lottery agency (iirc - it was Canadian) and asked 1) Would they send him a large number of tickets to use for a promotion / fundraiser, and 2) Would they "buy back" at face value any unused tickets. They said they would gladly do both - meaning he could examine before scratching, return unscratched, and also avoid lining up at the drug store to buy 10,000 tic-tac-toe tickets at once!

Edit: Previous discussions

Srivastava - <http://news.ycombinator.com/item?id=2166555> Cash WinFall - <http://news.ycombinator.com/item?id=2828122>

<comment><USER6> And it wasn't suspicious when the lottery got back a large number of unsold tickets broken off the reel?

I give Srivastava credit for finding and exploiting the loophole, but they also seem to be easily closable. So the scratchoff is vulnerable. Future ones might be as well. A little common sense and better security could avoid another mishap.

</comment></comment></comment><comment><USER8> I thought the winning tickets would be decided first, _then_ filled with winning/losing numbers and symbols, specifically to avoid situations like this.

<comment><USER9> No, that's exactly what lead to these situations. If you choose the winning tickets first, the player may have access to observed numbers of winners or your potential filler algorithm. That information must be accounted for by the design.</comment></comment>


DGraph – Scalable, Distributed, Low-Latency, High-Throughput Graph Database - <AUTHOR> http://dgraph.io/ <comment><USER2> Wikidata did a comprehensive analysis of Graph DBs [0], and settled on BlazeGraph with TitanDB coming a close second.

Notably, there are quite a few omissions. DGraph and Cayley [1] being two of those. Interestingly, both are developed by Googlers. Cayley is used by Kythe.io [2], a Google project that kind of competes with srclib [3] by SourceGraph.

Cayley has native JavaScript interface, which makes it an interesting choice for Node JS based apps.

At work, we settled on TitanDB, primarily because it supports DynamoDB/Cassandra for storage and ElasticSearch. Most of the graph DBs rely on some storage engine or the other underneath-- Cayley supports LevelDB, for instance; whereas TitanDB supports BerkeleyDB apart from aforementioned DyanmoDB and Cassandra.

[0] [https://docs.google.com/a/wikimedia.org/spreadsheets/d/1MXik...](https://docs.google.com/a/wikimedia.org/spreadsheets/d/1MXikljoSUVP77w7JKf9EXN40OB- ZkMqT8Y5b2NYVKbU/edit#gid=0)

[1] [https://github.com/google/cayley](https://github.com/google/cayley)

[2] [https://kythe.io](https://kythe.io)

[3] [https://srclib.org](https://srclib.org)

<comment><USER3> Both Cayley and TitanDB aren't native graph databases. In fact, Cayley supports many storage engines, including MongoDB etc. This is because both are graph layers, and the data maintenance is done via the real database underneath. This has benefits in the sense that it's easier to build, but also doesn't perform as well when it comes to query latency.

DGraph, OTOH, is a native graph database. We do use RocksDB, but the data distribution and maintenance is done by us. It's optimized for decreasing the number of network calls, to keep them linear to the complexity of the query, not the number of results. This is of incredible value when you're running real time queries, serving results directly to end user. The query latency hence, isn't too affected by high fan out of intermediate results and should remain low; while providing high throughput.

In fact, the entire HN traffic is being served by one GCE n1-standard-4 instance right now, using all 4 cores really well :-).

<comment><USER4> For me the demo doesn't work, CORS violation while trying to access [http://dgraph.xyz/query](http://dgraph.xyz/query). (EDIT: manually accessing it sends me in a cloudflare(?) captcha, that might mess with the query?)

<comment><USER5> Cloudflare does that when you are hitting it from a suspicious VPN IP address. There may be other reasons why it doesn't like your IP.

</comment></comment></comment></comment><comment><USER6> This is really exciting. I've been hoping for a robust, distributed open source Graph database ever since I first played with Freebase (which clearly had some amazing secret sauce, long-since purchased by Google). The engineer behind DGraph has worked on Google Knowledge Graph, the spiritual successor to Freebase, and obviously understands the space incredibly well: [https://twitter.com/manishrjain](https://twitter.com/manishrjain)

</comment><comment><USER7> This looks excellent!

Some questions because I need something like this:

What does "distributed" mean in this context? Can the graph size be larger than the storage on a single node? If so, how is it partitioned (I think Titan was randomly partitioned)?

Has any thought been given to in-graph processing (PageRank etc)?

<comment><USER3> The data gets sharded, and can be served by different servers; all talking to each other to respond to queries. This is how v0.2 works, which is what the demo is running right now.

A typical RDF data is (subject, predicate, object). We shard the data based on predicates. So, all the RDFs corresponding to one predicate are on one server. This allows us to find, say lists of friends of X really quickly; with a single lookup.

I think PageRank should be relatively straightforward for DGraph, provided we have edges in the right direction. We don't automatically generate a reverse edge, it has to be provided, if needed for queries.

<comment><USER8> "We don't automatically generate a reverse edge"

Wait, then you don't actually have relationships as first class citizens? Does every "thing" know what is connected to it? I mean, where do you draw the line between graph databases and an object database with one way links?

<comment><USER3> The problem with automatically generating reverse edges is that it causes data explosions and duplications -- for e.g., if you're adding facts like X -- IS_A --> Human; then automatically generating the reverse would cause a Human -- Reverse(IS_A) --> X; which would list all the humans on the planet. Whichever machine serves this list would immediately run into memory issues, not to mention, any query using such a relationship is going to be very slow.

DGraph uses type schema to understand the relationships an entity can have. So, you can have an entity of type A, where A has relationships R1, R2, and R3. So, you can then deduce that A has relationships R1, R2, and R3. Of course, each entity can be of multiple types (for e.g. Tom Hanks is an actor and a director).

This approach is very scalable, because it avoids unnecessary scans over the distributed database to find all the relationships an entity can have. Rather, utilizing a schema to deduce such information; and then hitting the right servers to get the data.

<comment><USER8> Wait, I don't understand. If I create a relationship "User 1" -[:LIKES]->"Chocolate Ice Cream". Does the "Chocolate Ice Cream" know which users liked it or not?

<comment><USER9> My takeaway is that "Chocolate Ice Cream" would not know about "User 1" unless an explicit relationship "Chocolate Ice Cream" -[:liked_by]->"User 1" is created

</comment></comment></comment></comment></comment></comment><comment><USER10> All the graph database traversals I've seen are fairly simple (Friend of a friend, Movies starring X).

Are they a good choice for turn-by-turn navigation, and answering questions (given a traffic dataset) like: "What has been the quickest route between A and P, departing at 8am on a Monday morning?"

<comment><USER3> We've examples of some pretty deep Graph queries (8 levels), for e.g. the last query here: [https://github.com/dgraph-io/dgraph/wiki/Test- Queries](https://github.com/dgraph-io/dgraph/wiki/Test-Queries)

Finding the shortest route between A and B is on the roadmap. This would mean adding a weight to the edge. Navigation adds yet another interesting factor, which means we need to store multiple weights per edge, depending upon time of the day, day of the week, or day of the year etc. This would be an interesting challenge to solve; probably by v1.0.

</comment></comment><comment><USER11> Your landing page is missing any kind of "evidence" that it is scaleable, low- latency or high throughput.

Also if you are sharing on predicate you will end up in big trouble. Predicates in most RDF datasets are not at all evenly distributed, tending more towards extreme value distributions. e.g. in UniProt the most common predicate has 2,419,000,171 occurrences, the least 1!

Also if you are going to benchmark can I suggest the rather good LDBC ones[1]. Even if for marketing reasons you don't want them public they are good to show where you can improve.

[1][http://www.ldbcouncil.org/](http://www.ldbcouncil.org/)

<comment><USER3> The way data is sharded across machines, is done via predicate. So, in this case, the 2.4 billion occurrences only leads to a data of 2.4G * 8 bytes (uint64 id) ~ 20GB of data for us, on one machine; which is pretty manageable. Furthermore, each predicate could be further sharded to fit on multiple machines; such would be the case with say the friend predicate in Facebook.

It's hard to "prove" on a landing page, without going into design details, that you truly are those things. We do have a demo, with 21 million RDFs from real world data from Freebase, so you could play with the database, and get a feel for it.

We'll look into LDBC. Thanks for the pointer.

</comment></comment><comment><USER12> Is a Graph DB suitable for use cases like products/homes/cars etc where users mostly do "and" queries to narrow down the results set? If so, is it faster than traditional SQL DB?

<comment><USER3> Graph DBs are great for intersection queries (AND queries). In fact, DGraph is designed to do those really fast; and supporting that via GraphQL is in our roadmap.

[https://github.com/dgraph-io/dgraph/issues/1](https://github.com/dgraph- io/dgraph/issues/1)

In general Graph DBs are great when you have many "kinds" of things, which would require many many tables in traditional databases, and lots of interlinking. Those scenarios are ideal for Graphs, because many different kinds of things can be interrelated to each other easily, and be queried seamlessly. In other words, the schema for graphs is very fluid.

<comment><USER13> Maybe this exists already and I just haven't found it but I would love to find a tool that visually/graphically helps me visualize and test build data structures for a graph database. For example modeling the relationship from a host to VM to OS to app to network etc.

<comment><USER14> My company offers a tool to search, edit and visualize graph data: [http://linkurio.us/](http://linkurio.us/)

You should try it out :)

<comment><USER13> I actually have you guys open on a tab somewhere. I'll check it out at some point.

</comment></comment></comment></comment></comment><comment><USER15> This looks very promising!

Are you planning to add filtering, supported by indexes? Seems a bit useless for production use if you can't filter a query by predicate, or even sort/limit. You could layer something like Elasticsearch on top of it, but then you lose all the graph support.

Any thoughts on enforcing schemas?

<comment><USER3> Yes, here's the roadmap: [https://github.com/dgraph- io/dgraph/issues/1](https://github.com/dgraph-io/dgraph/issues/1)

We do filter by predicates, and have plans to do sort and limit, including count. DGraph is designed to accommodate all these use cases really well.

The idea is that you shouldn't need much on top of DGraph, because the query latency should be low; maybe Memcached. But, in the graph world, a single edge change can affect many queries, and so we've designed DGraph to provide low latency for arbitrarily complex queries.

The schemas would be enforced via GraphQL, i.e. the query language, not via the storage mechanism. This allows you to change the definition of types of entities, without changing the corresponding data. This is incredible for both backwards compatibility, and quick iterations.

<comment><USER15> Thanks. I didn't see any examples of predicates in the GraphQL, other than basic graph edge traversal. Do you have any?

Does DGraph use indexes to back the predicates? If so, do indexes have to be pre-declared? To explain, we layer ElasticSearch on top of our current document store because we don't want to manage an "index schema" manually; we have tons of different apps on top of the same document store, and they have all sorts of ad-hoc queries where it would simply be easier to (like ES does) index everything rather than require the app to declare a schema.

Not sure I understand your schema explanation. We're talking about schemas for validating document data, yes?

<comment><USER3> We don't yet have intersection, which is what you're looking for. But, it's in the roadmap, and as I mentioned, the design is built around efficient intersections (all posting lists are sorted lists of uint64s).

So, DGraph supports arbitrary complexity, so we try to not optimize for any particular query. Hence, you don't need to specify indices. We automatically generate posting lists, which store all the objects for a given (subject, predicate). For e.g., all the friends of X is stored in a single value, which is a sorted list of UIDs (uint64).

When we do sorting, we'll provide a way to specify which predicates to sort by. That'd be something that the user would have to provide; that we can't automatically deduce. For e.g., movie sorting by year of release etc.

Re: schema, have a look at GraphQL type system: [https://facebook.github.io/graphql/#sec-Type- System](https://facebook.github.io/graphql/#sec-Type-System) This explains how types can be specified, and enforced while inputting data; and retrieving data.

<comment><USER15> I think I see what you mean — sorry, I don't really think in triplets and to me a predicate is usually an algebraic term, not a data model term.

Without value indexes, how would your data model optimize for queries like (year >= 1975) or (title like "%thing%)?

If I understand you correctly, the client would pass a schema along with each mutation? It's something we considered and quickly discarded for our own data layer, because it's not a good data model. Every client now has to know how to express its current schema, which puts too much of a burden on the client.

For example, we have a lot of microservices that all share the same data and schema, and to avoid boilerplate we'd have to build client glue (in 3 different languages) to let them share a schema.

<comment><USER3> So, for filters like year >= 1975, that'd be part of our sorting feature push, which would also help with this sort of filter. Also, string matching / name search, is in our roadmap as well.

The clients don't need to pass the schema on every mutation. DGraph could be provided the "schema" part of GraphQL when run, so all the servers have a common knowledge of what's the schema -- and the clients can assume that knowledge, without having to be repetitive.

So, no your clients in different languages wouldn't have to share any schema.

<comment><USER15> Sounds good, thanks!

</comment></comment></comment></comment></comment></comment></comment><comment><USER16> It has been a while since I've seen so many buzzwords in one HN topic.</comment>


The bomb-testing problem in quantum mechanics - <AUTHOR> http://en.wikipedia.org/wiki/Elitzur-Vaidman_bomb-testing_problem

<comment><USER2> I wish I were smart enough to understand that.

<comment><USER3> If you really want to understand, read the second chapter of this book:

[http://www.amazon.com/Fabric-Reality-Parallel-Universes- Impl...](http://www.amazon.com/Fabric-Reality-Parallel-Universes- Implications/dp/014027541X/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1201139580&sr=8-1)

Just the second chapter isn't too long, and should help tremendously.

<comment><USER4> Quantum bomb testing is pretty cool. Considering you can become arbitrarily close to probability 1 of detecting which are bombs, this is really cool.

The link at the bottom of the page also explored other areas at the end of their essay, <http://nonlocal.com/quantum-d/v2/kbowden_03-15-97.html> like computers 'bomb testing' humans, and alternatively 'bomb testing' computers running calculations that are seeded with a random quantum generator. In this way, it sounds like you could potentially run every possible input of a test program (you are still limited to the number of computations from the potential length of time you are testing that machine's quantum state), and bomb testing different programs you could find which will complete in the time tested on all inputs. Heck, if I'm reading/understanding that right it might be possible to 'bomb test' a polynomial verifier on randomly chosen subsets for linear time to the maximal input length and check if it validates/completes, i.e. a summing of a randomly chosen subset of elements of a larger set to see if they add to 0 in testing time the length it would take to sum all elements ;)

Either that or, more likely, I'm totally confused by this quantum madness. I'll have to ask my physicist friend :(</comment></comment></comment>


Using Apple Watch to Track a Geek's Heartrate Response While Watching WWDC - <AUTHOR> http://cardiogr.am/c/wwdc <comment><USER2> Not the OP but I'm the "geek" mentioned in the title.

This is updating live during the keynote.

Let me know if anybody out there has questions!

<comment><USER3> When will I be able to do anything similar?

I enjoy using Cardiogram but there doesn't seem to be any good way to export or view my data outside the app, unless I missed it. Additionally, I can't store or view any data unless I'm connected to the internet.

<comment><USER2> If you have thoughts on what you'd like to do in the ideal case, feel free to send them to email@example.com. We whipped this up over the weekend.

</comment></comment></comment><comment><USER4> Should have watched my heart rate this morning (CEST) when I tried to sign an app for enterprise deployment. Nothing was working. Many Apple servers were in maintenance work until before the keynote.

<comment><USER2> Stress makes a big difference in my experience! It's actually the most common driver of heart rate increases in our data set. And it's potentially predictive of heart attacks, see the comment about "sympathetic surges" here: [https://ssl.www8.hp.com/hpmatter/issue- no-3-winter-2015/hear...](https://ssl.www8.hp.com/hpmatter/issue- no-3-winter-2015/heart-big-data-largest-heart-disease-study-date)

</comment></comment><comment><USER5> This is the most meta thing I've seen in a long time.

</comment><comment><USER6> Very cool in concept - this seems to be a null result though, since the variability is extremely small (only a few bpm). I would be surprised if the noted events corresponded to statistically significant deviations, but obviously can't be sure by inspection.

<comment><USER7> Or possibly the increase could come from applauding when the announcements were made.

</comment></comment><comment> apple-fann And they say the Apple Watch is a useless trinket!

<comment><USER2> I actually think the watch will have huge impact on heart disease (and am working on making that happen). The resolution of data you can get on the watch is just amazing, but we'll need some basic research to translate that into real medical gains. I'd expect to see impact in the next year or two though.

<comment><USER8> I've been wondering how good the continuous readings were on it. I'm actively considering the best device to track my really complex heart rate issues (I have postural tachycardia).

But I don't use an iPhone, so Watch might be off the table for the near future.

<comment><USER2> My personal experience is that the Apple Watch's heart rate readings are usually within 5 minutes of my AliveCor. Unfortunately, none of the Android watches currently on the market have a sensor that's particularly reliable. For now, I'd say a Garmin device or an AliveCor are the best bet for non- iPhone users.

</comment></comment></comment></comment><comment><USER9> Man, stuff like WWDC and in a wider sense, Apple, is really becoming a religion. Some of those hearty reactions on Twitter were so euphoric, that for me it cannot be explained by regular, adult, technological excitement anymore. It's not like they announced cold fusion or life on mars.

But anyways, a cordial +1 for being a nerd with all your heart! :)

</comment><comment><USER10> Heart rate variability is what's interesting... not BPM. BPM alone tells little to none of the story. Does the watch report RR-Intervals? I thought it did not.

</comment><comment><USER11> So the most exciting thing at the WWDC was the new Notes app?

<comment><USER12> Personally I think being able to designate your own watch faces is a game changer.

</comment></comment><comment><USER13> Isn't 88 high when sitting down?

<comment><USER14> 88 is pretty high yeah - few factors come in to play like how recently you were standing and moving around, but generally speaking, if your BPM is over 70-75 at rest, you're either really unhealthy or have a very naturally fast heartbeat, which can be a sign of heart issues.

<comment><USER15> Behold the online doctor syndrome.

</comment></comment></comment><comment><USER16> which device you have used to track this ?

</comment><comment><USER17> Notes, eh?

</comment><comment><USER18> Well, I guess someone found a use for the Apple Watch.

</comment><comment><USER19> do geeks watch WWDC? appleheads, sure, but not real geeks...

<comment><USER20> That's like saying only real geeks read comics from one publisher rather than another. These are operating systems that are getting updates and there is a presentation about that. What does a "real" geek do?</comment></comment>


Ask HN: How many years of programming experience do you have? - <AUTHOR>

I'm curious to know how much programming experience (personal and professional) most fellow HN'ers have if you're willing to share? <comment><AUTHOR> I myself have been programming for about 25 years, 15 of them professional. Started out on the Timex Sinclair that plugged into a regular TV!

</comment><comment><USER2> Started with Applesoft BASIC and IntegerBASIC about 28 years ago personally, started getting paid professionally 21 years ago.

</comment><comment><USER3> I have been programming personally for around 10 years and professionally for 2.

</comment><comment><USER4> Started about 17 years ago, 12 professionally.</comment>


Measuring SMTP STARTTLS Deployment Quality - <AUTHOR> https://yahoo-security.tumblr.com/post/141495385400/measuring-smtp-starttls-deployment-quality <comment><USER2> I know everyone uses and understands SMTP but is there any kind of effort towards an SMTP/2 like with HTTP/2?

Something much more efficient, encrypted by default, less verbose with fewer round trips?

Sure it's harder to get millions if servers moved, but you'd probably cover more than half of worldwide email volume with the top 100 email providers?

<comment><USER3> I'm trying to create an improvement [1], but I'm on early stages, and obviously don't command any big deployment.

Didn't do anything about verbosity, but I'm reducing the round-trips to one (after the connection is established), making it encrypted by default, and increasing the use cases of SMTP for replacing things like calendaring and contact systems.

[1] [https://sealgram.com/](https://sealgram.com/)

</comment></comment><comment><USER4> > [scanner] did not support deprecated/insecure ciphers and DHE cipher suites, > nor does it have SSLv3 client side support.

The equivalent of rose colored glasses for SSL/TLS scanning. This is really unfortunate, the data would have been much more interesting if it helped paint a picture of the good and the bad.

<comment><USER5> Indeed. I manage mail systems that serve thousands of users and can attest that there are a _LOT_ of mail systems out there still dependent upon SSLv3, for example.</comment></comment>


NASDAQ may make a hostile takeover bid for the NYSE/Euronext tomorrow - <AUTHOR>

CNBC is reporting that NASDAQ may make a hostile takeover bid for NYSE/Euronext (http://www.google.com/finance?q=NYX) tomorrow.  There is an existing agreement for NYSE/Euronext to merge with Deutsche Börse.  If true, it may lead to a bidding war between NASDAQ vs Deutsche Börse to gobble up NYSE/Euronext.  If NASDAQ buys NYSE, that would mean a single company owns all three major markets in the US.<p>[edit: http://www.cnbc.com/id/42075635] <comment><USER2> As someone who doesn't have his thumb on the pulse of financial news, what repercussions would this have on the every day shareholder?

</comment><comment><USER3> Clickable link: <http://www.cnbc.com/id/42075635></comment>


Ask HN: What do you do to hire a UX designer on dribbble or behance - <AUTHOR>

The reason I ask this question is because I have found about 20 designers who have potential to work on my project, and would like to contact them. Should I send them a survey to get an idea about their interest before I start email conversation with them?<p>Thanks for your feedback! <comment><USER2> Good UX and UI designers require a period of acclimation to a certain industry. Be prepared to educate them so that they can best optimize for your product domain. It's unlikely that you will find many within specific niches, so you will definitely go through a period of education.

</comment><comment><USER3> I found a designer on Dribbble by just emailing them with a brief explanation of what I need, what my budget was and asked if they were interested. Make sure you only ask people who's work you actually like and you shouldn't have any problems.

<comment><AUTHOR> Did you hire UX or UI designer? If it's UI, I can understand. But it is harder to hire UX designer without knowing what kind of product category they familiarize.

</comment></comment><comment><USER4> Freelance designers get paid to design, so money talks. What would you be surveying them about?

<comment><AUTHOR> I need UX designer. Other than survey, how could I know if our team want to work with them and they have a good sense of UX for our product category.</comment></comment>


Ask HN: What's the next big advance in AI you're looking forward to most? - <AUTHOR> <comment><USER2> I'm a medical resident. I see a patient in clinic, do a history and physical, sit down at a computer, and write a note describing _what I just did._ That's medical documentation, and it's a burdensome, growing problem.

The solution would be some combination of video or audio that records the clinical encounter and automatically generates a note based on what was discussed and performed. It falls under Paul Graham's "Schlep Task" ([http://www.paulgraham.com/schlep.html);](http://www.paulgraham.com/schlep.html\);) you'd have to work with individual clinicians, get their (and the patient's!) approval to record the encounter, record it from multiple angles, build tech into dumb devices (e.g. stethoscope, Dopplers for pulses, O2 saturations, and somehow use machine learning to integrate all that sensor data into a plain- text note.

It's probably the #1 problem from a provider's viewpoint right now, especially on the primary care side. Any individual provider will see 10-20 patients per day and write just as many notes.

Edit: I'd add that you'd _also_ have to have access to existing notes because progress notes typically summarize the patient's prior visits.

<comment><USER3> What an interesting idea. Would the final output be raw text, a sort of English summary of what was said?

Or, to be useful, would the final output be structured data? (example: pre- filling in a form with set number of fields and data types).

<comment><USER4> Most clinical documentation in EHRs is template based with lots of boilerplate into which key words and phrases are dropped. And some template sections are free text, enabling highly customizable final documentation.

</comment></comment></comment><comment><USER5> It runs on my laptop and phone and doesn't phone home. Example: I download a trained network, it runs locally (maybe on some special purpose hw), discovers remote resources (example train, metro, bus timetables) and tells me the shortest route to destination without any company knowing where I'm going to.

This is a silly example because we don't need an AI for that but it's late here and I should've given the idea. No centralized architecture, no spying, no tracking. I'll pay for that.

<comment><USER6> There's a research paper published recently (ironically, by Google) on this topic, which additionally describes how you could improve the model locally on the device _without revealing the training data to the model 's owner_.

[https://research.googleblog.com/2017/04/federated- learning-c...](https://research.googleblog.com/2017/04/federated-learning- collaborative.html)

Previous HN discussion: [https://news.ycombinator.com/item?id=14055655](https://news.ycombinator.com/item?id=14055655)

IMHO this is gonna be huge, but probably not gonna be huge for a decade. The technical challenges seem large and it'll take a lot of experimentation by entrepreneurs before they find a use-case where people are not currently willing to use some big corp's solution.

<comment><USER7> I listened to a talk about this, and it seemed, that you can recover a lot of data by looking at the "diffs". You could probably even train autoencoder-like architecture to decode these deltas for you.

<comment><USER8> Very true, the paper calls out that there are no formal privacy guarantees on this style of learning. The diffs that are sent ostensibly provide more privacy than just the raw data, but it's hard to quantify how much "more" privacy that really is, and where it applies/doesn't apply. I do applaud the step in the right direction, however.

</comment></comment></comment></comment><comment><USER9> Currently, we are focusing on very narrow field of Artificial Intelligence. Not that it is a bad thing, but we should not call it "AI". We are mostly solving the problem of Data Analysis at Scale, which again, for businesses is the most logical thing to do. I do not doubt that in the future, data analysis will be an important jigsaw part in a true AI system.

Currently, I look forward to/want to see more research/movement in other ideas/fields/methods which peep into AGI. Maybe Probabilistic (Quantum? or Neuromorphic?) Computing? Maybe Artificial Life? Maybe Cognitive Architectures? Recap into Symbolic?

PS: This is not a popular opinion, but I do want to share it with fellow HNers. We do most of the computing to solve the hard problems in our society and trade, and that is surely very noble. Having said that, When I was growing up, I used to see/feel a lot of developments in Computers happened for the sake of Computing. It felt like hacking was all together different field; Linux, the all the Free Software movement, Windows NT, Doom, Quake, Huge advances in Compilers, the whole culture around it etc.

Today I mostly see computing that works to advance and solve real world business problems like better advertisements or helping with other noble fields like astrophysics and genetics. I consider it as an advancement of our tech society, but as immature as I am, I miss that time.

Anyway, I would love to see AI for the sake of AI.

</comment><comment><USER10> AI that looks at all the medical research in the world, and helps people get the most accurate medical diagnosis and treatment.

Ah, and at the same time, why not create machines that automatically,creatively and cheaply do biomedical r&d ? Or AI that accelerates innovation around technologies that has an health impact ?

<comment><USER11> Isn't IBM's Watson trying to do the same

<comment><USER12> And it's failing at it. Hard.

<comment><USER13> Source?

</comment></comment></comment></comment><comment><USER14> I want to see much better human in the loop systems in general. A simple example is systems that will allow users to tweak the output of creative/generative systems. E.g. Neural style transfer methods that allow the user to easily adjust the output with human centric feedback. I want to say "good start, but make the background more like Caravaggio would than it is now, and lighten up the foreground to be more playful" and have the algorithm adjust the output accordingly.

We aren't impossibly far off from this, but not that close yet either.

</comment><comment><USER15> As with everything in computing, what I want is more capability that runs on my own devices—my own compute servers, my workstation, my laptop, or my mobile device. Every application or service that has to interact with third-party servers ("the cloud") to provide its functionality is, to my mind, defective or at least deficient of the ideal.

AI is no exception. I have swarms of CPU cores in my life, the totality of which could easily accomplish all of the "AI" functions of any value that I've observed in my life and far more. Today's AI that works for me (rather than against me) provides things like voice recognition, calendar management, reminders, to-do list management, and route planning. None of these functions requires even a small fraction of my personal CPU core armada, which are idle for 99% of their clock cycles.

Today's all-too-popular refrain of leveraging the cloud to provide sufficient compute capacity for these tasks is disingenuous and is too often accepted as truth when it's just cover for data exfiltration.

<comment><USER16> What does this have to do with the "next big advance in AI"?

<comment><USER17> Everything. But to rephrase GP's point in terms of the main question: the next big advance in AI they - and I - are looking for is _AI being local_ , and not in the cloud.

<comment><USER18> I too am longing for local AI. That way the AIs I interact with can truly begin to learn. From me. For me. Not the same bot learned from all the aggregated Big Data for everyone. Personalized local AI. Also: Making AI local opens the doors for privacy protection once again, I hope... I want my bot to protect my data, not feed it to the big coorperations

</comment></comment></comment></comment><comment><USER19> I can't wait for the people building and deploying AI / Machine Learning tools on a large scale to become aware of the broad societal implications of what they are helping to do. Or, if they are, impress that knowledge loudly and clearly onto their peers.

Not change, or stop nessesarily. Just be aware. This is going to be one of the enablers for the biggest "behind the scenes" changes in how we work as a society in our generation. As Devs, we should take some responsibility for how we act in that regard. I don't see enough of that attitude at the moment.

</comment><comment><USER20> Maybe not the next big advance, but I'll be truly impressed when an AI system with no game-specific prior knowledge is able to complete a game of Pokémon Yellow within a reasonable amount of game time.

It requires:

\- Natural language understanding (choosing the right dialog options)

\- Interpretation of visual cues (navigating terrain and buildings)

\- Hierarchical planning (training certain Pokémon to relatively high levels rather than a scattershot approach)

\- Puzzle solving (for gym access)

and quite a bit more.

<comment><USER21> Technically many of these are not really necessary IMO. The path that is most likely result in a solution to this problem is some scaled up version of Deep Reinforcement Learning (with a novelty reward) without any explicit natural language understanding; though planning will probably be involved in scaling it up and understanding visual cues is already trivial.

I think when thinking about these tasks, the right question to ask is "what's the dumbest way this could be solved?" rather than "what high level knowledge would I use to solve this?", otherwise you will be disappointed when the task is solved but the methods do not look what you would like them to.

<comment><USER22> You would be surprised how bad actual AI is at games. All kinds of, but especially ones where the goal is far away and you don't readily know you're succeeding. (Definition of a sparse reward game.)

Part of promising system is providing more understanding of output instead of being blind and deaf, but indeed the main decision structure has to handle it at all.

<comment><USER21> I think the Intrinsic Motivation is pretty important to solve this, and DeepMind has shown it to work well for games, since it makes the reward far less sparse, in a way that is very similar to our own way of playing games - which IMO is somewhat important since we are the intended consumers.

Maybe making generic novelty metrics will turn out to be harder than anything else anyway, but it has some intuitive appeal.

So I guess we're on the same page, we do need to understand the game output, but IMO understanding it well enough to know when things are novel & interesting vs when things are not is probably enough to get quite far.

</comment></comment></comment></comment><comment><USER23> I want robust, packaged setups (docker, AWS, whatever) to be cheap/free, accessible, and work out of the box with no end-user setup.

I am getting into DL myself and very excited about the potential, but I have spent literally 5 hours on setup (python and DL-specific AWS Ubunut instance) and have gotten exactly nowhere. Version conflicts, iPython not working in venv, dependency mismatches where many people built demos I want to use on python 2.7 that don't work with my 3.5 setup, can't get matplotlib to display graphs over X11/remote ssh, etc, etc, etc. So frustrating.

I want programmers to be able to one-button setup a DL machine so they can start tinkering and not wasting time on setup/dependencies/bugs.

<comment><USER24> DevOps is indeed a huge bottleneck in deep learning. Provisioning machines, installing drivers and packages and managing their dependency hell distracts focus from the core deep learning. At FloydHub (I'm a co-founder), we're building a zero-setup deep learning platform.

Spinning up a Jupyter notebook with Pytorch 0.2 is as simple as `floyd run --env pytorch-0.2 --mode jupyter`. All the steps you mention in your comment are automated.

DevOps hassles is, of course, just the first of many hurdles to doing effective deep learning. Experiment management, version control, reproducibility, sharing & collaboration, etc. are also other important problems.

</comment></comment><comment><AUTHOR> Personally I'd love to talk to a bot that's mastered and memorized many books and all of philosophy and science and is also researching philosophy. Imagine getting his/her/their opinion on all the subtle questions life throws at you.

<comment><USER25> An "AI tutor," of any sort, would be incredible. One-on-one instruction, directly from expert to novice, is leaps and bounds ahead of every other way we commonly learn. It can be so frustrating to research a topic online and find that all the resources are lacking in some way.

</comment></comment><comment><USER26> With the research directions and methodology that dominate AI now, I don't look forward to anything significantly new or better.

To me, the core technology of my startup looks better than anything I've seen in AI, but my technology is from some of my original research in applied math based on some advanced pure/applied math prerequisites. I'm not calling my work AI, but maybe some AI people would.

E.g., my work does well with the _meaning_ of content. Just how my applied math does that has nothing to do with anything I've seen in current AI.

My view is that the current directions of AI are essentially out of gas -- there will continue to be new applications of the existing techniques, but new techniques are not promising.

IMHO, for new techniques for AI we need to do much better with (A) applied math and/or (B) implementations of relatively direct borrowing from natural intelligence, e.g., at the level of a kitty cat and working up from there.

E.g., for the math, stochastic optimal control can look brilliant, even prescient, and has had the basics on the shelves of the research libraries for decades.

</comment><comment><USER17> My dream: AI applied to _scientific research_.

For years now, if not decades, we've been creating science - as measured in publications - _much_ faster than any human being, or group of humans, can keep up with. Granted, lots of those papers are probably bogus, but then you don't know which is which until you actually sit down and read it...

I believe we're missing _tons_ of insights and discoveries that we have all the necessary components for making, and it would only take a smart person to read the _right_ three papers to connect the dots. Alas, chances that any human will do that are fast approaching zero. I think the only way to tackle this is to employ computation.

What I would love to see, therefore, is an AI system that would a) filter out bogus/bullshit papers and mark shoddy research that probably needs to be redone, and b) mine the remaining ones for connections, correlations, discovering which research supports which and which research contradicts each other.

<comment><USER22> We're very, very far from a good discovery AI. Currently world is at a stage of "not get trapped in a local minimum when optimizing known decisions", which is very far from actually generating decisions. Latest research in sparse reward games is a good step forward, as research is generally one.

</comment></comment><comment><USER27> ML that helps me learn faster as a human. Let's be honest, watching videos online is suboptimal. The middle-ages method of listening to a professor in a large room is suboptimal.

Can you personalize what I learn? Can you find the exact best explanation for my current level by looking at my facial expression?

</comment><comment><USER28> Not needing millions of examples and being resilient to adversarial examples

</comment><comment><USER29> AI-NET. Specific AI that can communicate with other specialized AIs using a simple protocol to solve specific problems in their field with the help of others.

AIs don't need to know everything but they must know where everything is and must know how to get that info. Sort of a DNS for intelligent repos and APIs to access them. Wolphram Alpha would be one but we need more, like medicine silos, agriculture silos, wikipedia, facebook, etc should have their own silos with AI interfaces.

Then Google AI would help us search for silos of interest.

</comment><comment><USER30> An AI that can watch videos:

\- automated security guard, especially in sensitive areas like public restrooms

\- watching and editing hours of stock footage for a good summary, or the highlights

\- automated refereeing in sports

</comment><comment><USER31> I'm excited for self-driving cars and ML/AI tools that help professionals (e.g., drug discovery, treatment).

The Keras lead developer wrote a post called "The future of deep learning"[1]. The podcast Partially Derivative has a good summary of it[2].

On the implementation side, I'm looking forward to distribution. Computers are all around us, sitting by idly – how can we put them to use? How can we make them secure? We're starting to see integration of ML models into mobile systems (with Apple's .mlmodel and ARKit).

[1]:[https://blog.keras.io/the-future-of-deep- learning.html](https://blog.keras.io/the-future-of-deep-learning.html)

[2]:[http://partiallyderivative.com/podcast/2017/07/25/the_future...](http://partiallyderivative.com/podcast/2017/07/25/the_future_of_deep_learning)

[3]:[http://papers.nips.cc/paper/4390-hogwild-a-lock-free- approac...](http://papers.nips.cc/paper/4390-hogwild-a-lock-free-approach-to- parallelizing-stochastic-gradient-descent)

</comment><comment><USER32> A conversational bot. One where you can not determine if you are talking to a human or not. This could disrupt the huge call center business.

<comment><USER22> Come on, they're using a lot of automation already. Do you really want more failure on top of that?

</comment></comment><comment><USER33> Stronger incorporation of hard constraints / rule or program learning in models for control and sequential decision making.

<comment><USER16> Can you give an example?

<comment><USER33> [https://arxiv.org/abs/1703.07469](https://arxiv.org/abs/1703.07469)

</comment></comment></comment><comment><USER34> \- Dumbing down the implementation ... Most tools like tf, keras, pytorch are heading that way .. but still there is a bit of expectation from engineer to understand insides.. the future of AI depends on ability of every engineer to use the techniques without the learning curve that is right now.

Please don't suggest - use of APIs they ain't cost effective and the future lies in ability to tweak things on your own.

\- Also availability of DL libraries across different languages and stacks. Yes there are methods but they need an extra effort to get working. At this moment to learn AI you first need to either learn python, R or matlab.

The future of AI lies in its applications. And it can only happen through experimentation. If you come across a possible application, it shouldn't take you an year to really start experimenting.

</comment><comment> d--b AI toolbox for manipulating real life objects. Can't wait to make a robot that slices tomatoes for me!

</comment><comment><USER35> Given the same algorithm implemented in any languages, the AI should be able to compile(translate) every program to the same highly optimized machine code or at least the same performance, learning only from sources of other programs and their resulting compiled code.

<comment><USER22> And what you would do with the result? It is worthless to just run it.

You're competing against optimizing compilers there.

</comment></comment><comment><USER36> I'm looking forward to seeing the movement of software from our computers to the third dimension in our daily lives, especially with robots in the workplace. Computer Vision used to be the limiting factor, and now it's not. Especially for things like science (eg. opentrons), the concept of brute force and massively parallel experimentation & data collection will be a huge game changer for discovery. There are areas in chemistry and materials science alone where modest improvements to existing processes would have such massive impacts to our society, we probably couldn't even estimate the resulting benefits to their fullest extent.

</comment><comment><USER37> Question to VCs on HN: Is AI declining? Not that it is dying down but my feeling is that the general investment activity in AI slowed down but maybe I am wrong.

1\. Do you get still that much AI deals in your inbox?

2\. Do you close this quarter as much deals as one year ago?

<comment><USER38> The head of Facebook AI said something a few years ago that AI has "died 4 times in 5 decades due to overpromising".

AI in general is not a bubble, and progress will continue, but I imagine most entrepreneurs are vastly overpromising, after all they only have more to gain by doing this, and they might lose by not doing it if others are doing it (so like a prisoners dilemma situation).

I should also say back in 1995 and 1996 a lot of people were saying we were in a "tech bubble", and they were technically right, but they underestimated just how sustaining the euphoria was. They looked like idiots 2 years later when stocks they decided against were quintupling in value, but less so 4 years later when the stocks were worth nothing. So the main lesson is there are really 3 bubbles, the actual bubble, the bubble where the elites and those in- the-know finally can't believe it anymore and bail out, shortly followed by the bubble where all the others bail out (which triggers the most dramatic decline).

</comment></comment><comment><USER39> GAN improvements that lead towards finding global minima for any given distribution mapping. GANs are versatile but still suffer from mode collapse and instability, drastically reducing their utility.

</comment><comment><USER40> Regulation.

</comment><comment><USER41> To be honest - games. AI that could write a story by itself and characters that would interact based on AI and not some state machines would be amazing experience.

</comment><comment><USER42> AI writing AI.

</comment><comment><USER43> Big advance? AI than can learn conditional logic.

DL tops out as mapping vector spaces to less complicated vectors. Incredibly powerful, but incredibly limited in what problems it can emulate.

</comment><comment><USER44> Distributed and decentralized AI a la things like Synapse [https://synapse.ai/](https://synapse.ai/)

</comment><comment><USER45> I want to see an "open models" community where trained models have been validated with high accuracy that anyone can use and share.

</comment><comment><USER46> Neural network controllers for bipedal robots that grant them adaptability, efficiency and elegance of movemeny.

</comment><comment><USER47> I want an AI assistant that can do my taxes.

</comment><comment><USER48> I'm looking forward to AI that can recognize ads visually, and can perfectly extract ASCII text from an article.

</comment><comment><USER49> Not sure if it will happen, but I'd love to see life after back propagation (1). In particular, I'd love to see advances in unsupervised learning, since the amount of labeled data is a huge limit on what AI can currently do.

[https://www.axios.com/ai-pioneer-advocates-starting- over-248...](https://www.axios.com/ai-pioneer-advocates-starting- over-2485537027.html)

</comment><comment><USER50> AI to help software engineers, since that would impact me the most in my daily job.

<comment><USER51> Specifically I would love an AI tool that looks at the context of the expression I'm editing and finds suggestions that satisfy type checks.

<comment><USER50> Sure. Static analysis, scaffolding, a little bit of a conversation where the AI is trained (by the developer themselves possibly) on the style. An AI doesn't need to replace the developer, just let them think at a higher level and the AI would deal with the lower level details, just like a compiler. There's so much possibilities here, but alas, software development itself is not exactly the most amenable to be addressable with machinery since it is at the crux of both creativity and engineering when even the silliest things can be uncomputable.

</comment></comment></comment><comment><USER52> Self awareness.. Intellegence only exists where there is self awareness

</comment><comment><USER53> People will realize how silly privacy is and start sharing their data with AI for the benefit of everyone.

</comment><comment><USER54> Natural language generation.

</comment><comment><USER55> Developing a sense of humor

</comment><comment><USER56> advances in general intelligence</comment>


House votes to end country limits for skilled workers seeking green cards - <AUTHOR> http://www.washingtonpost.com/politics/federal-government/house-bill-ends-country-limits-for-skilled-workers-seeking-visas/2011/11/29/gIQA7BQ99N_story.html <comment><USER2> I'm Canadian and a year ago I left the U.S. for Australia (my wife is Australian) primarily because I did not consider it worth it to stay in a lousy job for at least another two years for the possibility of getting a green card. This vote changes nothing about the logic of my decision (in fact it would likely have made my wait longer because I'm not Indian or Chinese).

The primary problem with the U.S. green card system for skilled workers is that you are at the mercy of your employer, and the whole application process restarts if for whatever reason you change employers. This vote does nothing to change that.

Even more ironic, now that I am no longer in the U.S. on a work visa, I have more freedom to start a business targeting U.S. customers.

<comment><USER3> If I read it correctly, only 140,000 "green cards" are handed out each year. That's less than Australia takes and we have ~15x less population.

<comment><USER4> That's also less than what France takes in. But I'm willing to bet there's illegal immigration to the US as well, and it's a sizeable quantity.

<comment><USER5> There's plenty of illegal immigration here, but the skilled workers among that population are far outnumbered by the laborers.

</comment></comment></comment></comment><comment><USER6> > Still, because there will be no increase in visas issued, there will be > losers. Hosin "David" Lee, president of the Korean-American Scientists and > Engineers Association, said the bill would force engineers from South Korea > to wait an additional two years in their immigration process to get green > cards.

Didn't expect that.

<comment><USER7> Yeah, basically Indians and Chinese gain but everyone else loses.

<comment><USER8> ..their unfair advantage.

<comment><USER9> Calling something fair or not is applying your morals to the situation. This change means that each _person_ gets treated fairly (in the mathematical sense) but each _group_ does not.

It is sort of like how in the US House is representation by population but in the Senate is equal senators per state.

Wether that is good or bad is up to us as a society. It will certainly reduce the diversity of the types of people getting visas as more populous countries crowd out less populous ones.

<comment><USER10> >This change means that each person gets treated fairly (in the mathematical sense) but each group does not.

So, without this change, each group was getting treated fairly? Care to explain how multidecade wait times for the two biggest groups while the rest get visas in a matter of years is fairness?

How is first-in first-out not more fair compared to discriminating on national origin?

> It will certainly reduce the diversity of the types of people getting visas > as more populous countries crowd out less populous ones.

Not really. Employment based visas are a small fraction of the number of visas awarded each year. Diversity doesn't make much sense for employment based visas because companies hire based on need and employee talent, not race or language.

Not to mention that India is so diverse with race, languages and culture that it's called a sub-continent. Lumping them into one 'group' like you did doesn't make much sense. Countries don't directly map one to one to diversity.

<comment><USER9> >So, without this change, each group was getting treated fairly? Care to explain how multidecade wait times for the two biggest groups while the rest get visas in a matter of years is fairness?

Yes, from the perspective of the individual countries, the old policy is more fair. If you gave all of the countries of the world one vote each and had them vote, that's what you would get. However, if you gave all of the _people_ of the world one vote, that is not what you would get as the people in the more populous countries would want their country to send more people.

As I explained, it is fair to the group not to the individual. All countries were capped at 7% of the total so large groups (and here we group by countries) would not crowd out small groups. You obviously don't like that policy.

As for the diversity argument, I am not stating wether it is better or worse. I explicitly said that it is up to society to decide that and our legislators have chosen to go with the less diversity option, so there you go. I think the fact that it will cause a reduction of diversity - diversity in the sense of what country immigrants come from, _not_ cultural diversity - in applicants is indisputable. It is important to understand the consequences of our choices and this is one of them.

Also, _I_ didn't lump all of India's diverse cultures into one group, India (and I guess the British and French) did. The grouping is done by country because that's how immigration laws and treaties work. I am fully aware of the cultural diversity in India.

<comment><USER11> >Yes, from the perspective of the individual countries, the old policy is more fair. If you gave all of the countries of the world one vote each and had them vote, that's what you would get. However, if you gave all of the people of the world one vote, that is not what you would get as the people in the more populous countries would want their country to send more people.

That may make sense for voting(to prevent tyranny of the majority), but makes no sense for employment based visas. Countries don't really send people in any sense. It's people that are hired by companies and what has that got to do with countries really?

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> A GC grants economic freedom to indentured servants (H1B visa holders is the politically correct term). The longer freedom is denied the more profitable it is for the corporate masters. One of the tricks of this modern day slave trade is to lobby Congress to set a quota (about 30% of the demand) on the number of people who are set free each year. For the groups with the largest numbers of indentured servants, additional quotas are lobbied for. As long as the dollar was strong and life was shit in the third world hells these people came from, this system worked. The corporate masters recognize that the game is now up.

The usual argument given for the lack of freedom for H1B visa holders is that the bureaucrats need to ensure that a H1B doesn't cause a job loss for a citizen. A pencil pusher doesn't even know what it takes to make the pencil [1] he is pushing, and yet somehow he can ensure that a citizen doesn't lose a job! The H1B visa is indentured servitude by the back door, plain and simple.

Anyone who has given some thought to the idea of protecting jobs knows it is an exercise in futility (For a start, Congress must pass an Amish decree [2]: ban all technology invented since 1830, and declare Thomas Edison as the worst job destroyer [3] the world has ever seen. Also it will have to order the arrest and lock up of all entrepreneurs aka wannabe job killers, which is most HN readers). Therefore, I suggest to do away with all the current H1B bullshit, and adopt a _point based immigration system where every qualified applicant is given full economic freedom from day one!_

[1] I, pencil. <http://www.econlib.org/library/Essays/rdPncl1.html>

Milton Friedman on "I, pencil" <http://www.youtube.com/watch?v=R5Gppi-O3a8>

I recall Milton Friedman calling the H1B program as just another subsidy for big corporations, but can't locate a reliable source with the full context.

[2] Family Guy 10/7 "Amish Guy" (one of those increasingly rare insightful jokes): [http://www.hulu.com/watch/303946/family-guy-amish- guy#s-p1-s...](http://www.hulu.com/watch/303946/family-guy-amish- guy#s-p1-so-i0)

[3] Bastiat's famous "Candlestick makers' petition": <http://bastiat.org/en/petition.html>

Also worth reading in this context is Bastiat "What Is Seen and What Is Not Seen": <http://www.econlib.org/library/Bastiat/basEss1.html> or (for another translation): <http://bastiat.org/en/twisatwins.html>

<comment><USER13> _...indentured servants (H1B visa holders is the politically correct term)...modern day slave trade..._

You are deliberately and dishonestly misusing these terms.

Slavery is a real problem in the world today. H1B visa holders are not slaves. They are free to quit and work elsewhere whenever they like. Slaves are not.

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

[http://www.nytimes.com/2011/11/17/opinion/kristof-the- face-o...](http://www.nytimes.com/2011/11/17/opinion/kristof-the-face-of- modern- slavery.html?_r=1&ref=nicholasdkristof&gwh=F32F376979F042B42FD58A22B8F495BD)

[http://www.nytimes.com/2011/11/13/opinion/sunday/kristof- fig...](http://www.nytimes.com/2011/11/13/opinion/sunday/kristof-fighting- back-one-brothel-raid-at-a- time.html?ref=nicholasdkristof&gwh=9B9263F0F80F1325A742D2A070FBF9F7)

<comment><USER14> "H1B visa holders are not slaves. They are free to quit and work elsewhere whenever they like."

I would not equate the H1B to slavery, but saying H1B holders are free to quit and work elsewhere whenever they like is akin to saying anyone is free to make a million dollars any time they want..Its true in theory, but not so straight forward in reality. For starters many employers will NOT hire an H1B holder, so that narrows your options right off the bat. The companies that do hire H1Bs will often only do that for certain positions, so your career plans had better be exactly in line with those positions..

<comment><USER13> _For starters many employers will NOT hire an H1B holder, so that narrows your options right off the bat._

For starters many slave owners will torture and/or murder a slave if they try to escape, or don't do their work properly, so that narrows your options right off the bat.

In contrast, in the worst case, an employee on an H1B will be flown to India/China/Australia/wherever, where he is free to live his life.

See the distinction?

If you want to argue that we should replace a temporary work visa not intended to be part of a path to citizenship (the H1B) with another type of visa, go ahead. But don't do it with hyperbole that trivializes slavery.

<comment><USER14> I'm not sure why you see the need to make a distinction, when the first thing I said was that I would not equate the H1B to slavery. What you did not clarify, was your statement that H1Bs were free to get another job any time they wanted

</comment></comment></comment></comment></comment><comment><USER15> Thumbs down.

When will the US realize that it is already far from its peak and that today there are (possibly) better alternatives elsewhere?

Get a point based system - now - or watch Chile, China and the rest of the world ROLFStomp you to death.

</comment><comment><USER16> While I think this is a plus, it's still very depressing for the US. Are American schools really so bad that a country of 300 million can't churn out enough tech/science employees?

I'm a freshly minted American (from Canada) and in my 20 person office there is one other American developer (who is also a co-founder).

I've lived in Canada and Europe and the US is by far my preferred place to live, I'm not sure how long it will last though there are generations of Americans that lack the proper skills to compete in the modern economy.

<comment><USER17> From the viewpoint of a country, this makes perfect sense, short term.

Why would one invest educating one's population if other countries are willing to do that for free?

Long-term, a problem is that, if local education drops too far, you need a huge import of 'human capital' to keep average levels of education constant.

</comment></comment><comment><USER18> Sadly the H1 process is better now than during the dot com era. At the time it was as close as we have come to institutionalized servitude since the 13th Amendment was ratified. I am not saying it is great now, far from it. Rather I get a little nervous any time our Congress starts talking about this.

</comment><comment><USER19> The article ends with "U.S. employers are prohibited under law from hiring foreign workers unless they show there are not sufficient U.S. workers willing and able to take the jobs."

I am fairly sure that is not what the law says though, although I am aware it is often claimed (I suspect falsely) there is such a law.

Actual requirements are here. They don't have to show anything, they just have to attest that in their belief the hiring won't "adversely affect" the "working conditions" of american workers "similarly employed", that there is not currently a strike going on when they bring in the new people, and that they have posted conspicuously a notice of intent at their place of business.

[http://www.foreignlaborcert.doleta.gov/faqsanswers.cfm#lcare...](http://www.foreignlaborcert.doleta.gov/faqsanswers.cfm#lcarequirements1)

<comment><USER20> Actually, it's more farcical than you're thinking. Suppose I have a foreign employee that graduated in the US, and has worked for my company (on a valid OPT, followed by an H1B) for several years. In order to progress to the Green Card stage, I must prove that there are no other Americans that are suitably qualified, and willing to do the job. Thus, I have to put up an advert for the job, and interview applicants. That's why you'll see very narrowly defined job criteria advertised in newspapers : They're designed to prevent anyone but the current employee (who, after all, is the one that currently has the job) from getting the job.

But then there's a matter of 'prevailing wage' : Whereby one has to define the job to be as menial as possible (so that the employee doesn't suddenly expect a much higher wage bracket), while still making it demanding enough that all their qualifications are 'essential'.

And once the initial paperwork is filed, they're then bound to you for _years_ while waiting in line, since if they lose their job (or have a change in job title), they have to restart the whole process.

Large numbers of people are trapped in bizarre employment situations, waiting on unbelievable bureaucracy - never able to complain on the offchance that the person they're talking to might be having a bad day and send all the documents back (and restart the process)...

<comment><USER21> An interesting test would be if there was a way to expedite the processes. Say pay more and it gets rushed and wait time is now only one or two years. Would employers do that or not? Otherwise aren't they actually interested in prolonging the process artificially ("Oh yeah our lawyers are working on it, get back with us in 5 years..." kind of attitude).

<comment><USER20> For H1B visas there certainly was an expedited process - a couple of times our firm paid ~$1000 to get the response within 2 weeks, rather than 'several months'. Reducing uncertainty was valuable to us, since otherwise we might have been mentoring an excellent employee who could be plucked out of the workplace by the INS on any random day : and due to the whole bureaucracy thing, any 'appeal' would be a huge, huge waste of time (and life).

</comment></comment></comment></comment><comment><USER22> To realize how conflicted Indians and Rest Of The World(ROW) are with this bill, have a look at this thread in an immigration forum I used to frequent before I got my g.c. [http://www.trackitt.com/usa-discussion- forums/i485-eb/862139...](http://www.trackitt.com/usa-discussion- forums/i485-eb/862139499/eb-3-rowers-please-take-heart/page/last_page)

</comment><comment><USER23> Not to be pedantic, but I would have appreciated the title giving an indication of the House of which country made this vote.

<comment><AUTHOR> I think it's pretty obvious from keywords such as "green cards" and washingtonpost.com.

</comment></comment><comment><USER24> congratulations to everybody on abolishing of one more instance of legal discrimination on ethnic grounds.

While it may seem like a zero sum game (as number of visas is still the same) and thus i have no idea how, yet still lets hope that like in other cases of abolished discrimination everybody ultimately wins.

</comment><comment><USER25> I am trying to understand the implication here. Does this bill mean Indians and Chinese ppl will have to wait 3-4 years only now? Also, I am not sure how its detrimental to Koreans (Some OP here seemed to imply that) ?

<comment><USER10> It makes it into a first-come first-served system. Indians and Chinese applying now might still have to wait a couple of decades. This primarily helps the people who applied in 2002 and the following few years and are still waiting.

<comment><USER20> And it's fair, in the sense that applicants from the UK might now also have to wait a couple of decades.

In my case (as a UK citizen working in NYC), it's a good job that the E-2 Investor Visa (which only exists for countries that the INS deems 'worthy') can be renewed indefinitely.

The flip side of this (and where it starts to get comical) is that as part of the E-2 approval process one has to "intend to leave" once the business is finished - which means that one cannot intend to embark on the Green Card path prior to getting the E-2 visa. It also means that all my (mandatory) payments for unemployment insurance are strictly throw-away money - since I could never claim unemployment in the US anyway. Ho Hum.

</comment></comment></comment><comment><USER26> Translation: Skilled worker wages to continue their freefall in the US.</comment>


As Apple Payments Strategy Takes Shape, Google and Square Respond - <AUTHOR> https://www.theinformation.com/articles/As-Apple-Payment-Strategy-Takes-Shape-Google-and-Square-Respond <comment><USER2> I think this is the key sentence: "Apple, in contrast, uses a different technology and generates a small profit from Apple Pay transactions."</comment>


Show HN: Tiny C runtime Linux (rt0), HelloWorld 0.6k (i386), sbrk example added - <AUTHOR> https://github.com/lpsantil/rt0/blob/65b4d966409ee24ddae0d4915368542537035c81/STATS.md <comment><AUTHOR> Original HN announcement/discussion [[https://news.ycombinator.com/item?id=8974024](https://news.ycombinator.com/item?id=8974024)]. CFLAGS additions produce smaller binaries. HelloWorld in 608 bytes (i386) and 792 bytes (x86_64). An example of sbrk/brk provided in the test folder.

</comment><comment><USER2> What is sbrk even used for anymore? Surely most heap allocators use mmap/mprotect directly these days. There's no downside.

EDIT: Not trying to rain on anyone's parade, I think the syscall mentioned is beside the point of the post. :)

<comment><USER3> sbrk competes with mmap, not mprotect.

And yes, I would expect mmap to be used in most modern systems. OS X, for instance, just emulates sbrk with a large static buffer, and it has no actual effect on the page tables.

<comment><AUTHOR> 4MB buffer to be exact [0].

[0] [https://books.google.com/books?id=K8vUkpOXhN4C&pg=PA950&lpg=...](https://books.google.com/books?id=K8vUkpOXhN4C&pg=PA950&lpg=PA950&dq=osx+srbk+4mb&source=bl&ots=OLljV- UpVu&sig=n0NaVzZMEBKMk6FPZAsoOPF6JLo&hl=en&sa=X&ved=0CCgQ6AEwAWoVChMIxJOc7Yy- yAIVzlqICh0v-gov#v=onepage&q=osx%20srbk%204mb&f=false)</comment></comment></comment>


Ubiquitous XMPP encryption in force today, all Google IM contacts now 'offline' - <AUTHOR> https://github.com/stpeter/manifesto/blob/master/manifesto.txt

<comment><AUTHOR> Slightly more info: a wide range of XMPP stakeholders (over 70 of them) initiated ubiquitous XMPP encryption today after months of planning. As Google doesn't support server-to-server TLS, they are now out of the XMPP loop until they do.

More info at 'El Reg': [http://www.theregister.co.uk/2014/05/20/im_upgrade_locks_out...](http://www.theregister.co.uk/2014/05/20/im_upgrade_locks_out_lazy_eavesdroppers/)

<comment><AUTHOR> Future reference: they caught up within 24 hours, now they're part of the XMPP eco-system again, just about.</comment></comment>


Rip Off the Filters – We Need a Naked Instagram - <AUTHOR> http://www.wired.com/rawfile/2012/10/opinion-filter-free-photography-democratization

<comment><USER2> But Instagram without filters is just a camera.</comment>


Show HN: JSON CMS - <AUTHOR>

Hey all,
some time ago I already presented my idea on HN with a landing page. Your feedback has been great and very valuable, we continued iterating on the product with customers and now have our first public version online.
StorageRoom is a cloud-based CMS built specifically for Mobile Apps. If you have your own mobile app or if you are an agency or freelancer developing apps for others you can use it to create apps faster and to combine the advantages of native mobile applications with the ease of maintenance of websites.
http://storageroomapp.com
What do you think? Do you see other use cases for this?
Any feedback about the service and the idea is highly appreciated... thanks! <comment><USER2> I see two potential target groups here. One focuses on the developer and tries to solve the data storage and synchronization procedure. In that field, I'm not sure what the benefits of your solution are. Could you elaborate on how it is different to CouchDB[1] or even Amazon's storage service[2]?

The other market I'm seing targets users of the CMS system, i.e. the people who actually maintain the data. In most data centric projects I've been working on, you could be sure that the client will at some stage ask, how (not whether) he can change the existing data and add datasets after development has finished. This usually involved creating a CRUD user interface, which was tedious and in almost all cases, was never used.

Your front page focuses a lot on the former target group (create general datastructures, update and query them) whereas I think you might be offering more value in the latter group ("see how simple it is to add another recipe into your cooking app"). If you could combine the client's desire to control his money and time investment while making the solution easy to integrate for the developer, that might be good enough.

[1] CouchDB for iOS devices - <http://news.ycombinator.com/item?id=2310863>

[2] Amazon S3 for iOS: <http://aws.amazon.com/sdkforios/faqs/>

[3] Earlier discussion on StorageRoom: <http://news.ycombinator.com/item?id=1847115>

<comment><AUTHOR> Our solution helps developers to quickly integrate managed content into their mobile applications. The managed content is created and edited by editors in our CMS, and the developers can then query the CMS with our RESTful JSON API.

CouchDB is useful for storing content like high scores into a central database from your mobile app, but you cannot use it to easily provide a nice interface for editors to manage news stories or points of interests (maybe you have a google map in your app that shows store locations). This is what we focus on, a flexible CMS for mobile apps with a nice interface for editors and not only a nice API for developers.

S3 on the other hand is useful to store files. You can also upload static JSON or XML files there, but how do your editors manage those? They cannot edit them manually and static files don't provide search capabilities from the app (e.g. only give me store locations around the user's current location).

</comment></comment><comment><USER3> This is a nice idea.

We build a lot of mobile apps, and we use a combination of the Django admin, and django-tastypie. This gets a JSON API up and running with authentication in very short order, but a product in this space would be very welcome, especially as it allows the data model to be built with a GUI. Our programmers spend a lot of time on model development and being able to delegate that to less technical staff would be a big benefit.

White-label would obviously be a very strong requirement.

<comment><AUTHOR> This is what we used to do with Rails. But the backends were never a priority and ended up being hackish and hard to use for editors, so in the end the devs were editing the content... _urg_.

Hosting and maintaining those backends hasn't been fun either, in our opinion mobile devs are better off using our service. They get a better solution faster.

<comment><USER3> "But the backends were never a priority and ended up being hackish and hard to use for editors"

This is our main problem, too. I don't have any data from our clients, but I have a feeling that being able to provide a clean, user-friendly, branded back-end would increase participation in content creation quite considerably.

</comment></comment></comment><comment><USER4> I think this will be useful for a lot of developers of iPhone/Adroid apps. Many don't have the know how (or time) to develop, run and maintain backend systems and it pushes the development cost way way up for clients and complicates our own applications.

We just integrated a purpose built CMS with a bunch of iPhone apps for a client and it was not a lot of fun so I'll give your product a try for sure.

As for feedback - the one thing with the UI is that having three different types of save buttons is a bit confusing at first but I'm not sure if there is a more efficient way to do it. Also, a big win would be if you added an etag along with the JSON with the location of the images to download. I do like very much that collections can be attached to multiple applications.

If your are ever in the Bay Area come by our weekly iPhone Meetup Monday nights in SF. (search iPhone in sf on meetup.com - our logo bleeds six colors...) or shoot me an email (profile)

<comment><AUTHOR> Thanks for your feedback!

The iPhone Meetup is on the list for the next Bay area visit.

<comment><USER4> No Problem, I'll mention your stuff at the next meetup and let you know if I get a project done with your service. I have something in mind.

</comment></comment></comment><comment><USER5> I'm a little confused about why this is targeted specifically to mobile. I've been looking for a back-end only CMS for years now. Originally, I didn't mind just having my front-end share a database with my CMS, but it would be even better if it used a RESTful API like you've got here.

Maybe I'm missing something? The closest thing I've found to what I'm looking for is: <http://www.pureedit.com/> and storageroomapp.com seems very similar (although much better) judging by the Introduction Video.

<comment><AUTHOR> We currently focus our marketing efforts on mobile apps, as this is the most obvious use case for us currently.

But actually you can of course use the CMS from wherever you want to. We already have some websites that pull content via the RESTful API. You can even use JSON-P to load content in the browser dynamically from Javascript across domains (think of widgets).

I can also imagine that our system is useful for desktop apps or games.

Please give it a try and report back if it fulfills your requirements.

</comment></comment><comment><USER6> I definitely dig on the core concept of making it easier to get content to mobile devices. However, having done this exact type of work for an agency in the past, more often than not content was shared between web and mobile platforms. Do you have a plan to support importing content from popular CMSes or some other way of sharing data between CMSes?

<comment><AUTHOR> We are looking into an import function. Currently you can use the Ruby Gem to import data with a small script. This is not perfect but should help in the meantime.

You can also directly use the RESTful API from your server, query content and serve websites in HTML.

</comment></comment><comment><USER7> Seems to be a good idea. You'll have to market this a lot to agencies building mobile apps (I would think). Easy tutorial etc.

<comment><AUTHOR> This is our plan. We are also already looking into creating a white label solution for agencies (cms.myagency.com), so that they can resell it to their customers without our branding.

</comment></comment><comment><USER8> I love this idea. Fantastic job. I'm going to give it a shot myself for an app I'm prototyping.

<comment><AUTHOR> Thanks. We would love to get some feedback from you on how it is going.

</comment></comment><comment><AUTHOR> Clickable: <http://storageroomapp.com>

<comment><USER9> The tour page is not usable on an iPhone. Love the concept but since you're targeting mobile it would be good to present your site well on mobile.

<http://storageroomapp.com/tour>

</comment></comment><comment><USER10> I like the idea, but I want have a lot more than 20GB available. I think it would be more inclined to buy this as traditional software (instead of SaaS).

<comment><AUTHOR> What kind of content do you have that is this large? Please send me an email at sascha at thriventures dot com and we can talk about your custom requirements.

</comment></comment><comment><USER11> I feel it can be very useful. How does it differentiate with MongoDB, CouchDB etc?

<comment><AUTHOR> We use MongoDB in the backend ourselves. But neither MongoDB nor CouchDB provide a nice interface for editors.

You cannot ask non-technical content editors to edit JSON manually and they don't want to edit content in a technical phpMyAdmin-like interface (believe me, we tried!).

We provide an easy way for an administrator/developer to set up collections for different content types. They can choose between many different basic (strings, integers, ...) and advanced (attachment, image, location) fields and configure how editors can enter the content into the fields (including validations, so that an URL field really contains a valid URL).

Developers can then query the content from their mobile applications on different platforms. In the future we will also provide open-source libraries for iOS/Android to make the integration even easier.

<comment><USER11> Got it. Thank you for the explanation.</comment></comment></comment>


Screwdriver: Yahoo's Continuous Delivery Build System for Dynamic Infrastructure - <AUTHOR> https://yahooeng.tumblr.com/post/155765242061/open-sourcing-screwdriver-yahoos-continuous <comment><USER2> For the confused: CD = Continuous Delivery, not Compact Disc.

Mods: Perhaps edit the title?

<comment><USER3> I felt like the CD = continuous delivery was obvious. But perhaps I've spent to much time on Dev Ops. Maybe simply saying CI/CD would be sufficient.

<comment><USER4> CI yes, CD no - in my mind CD is pretty much fixed to compact disc for eternity.

When I first read the title I thought "oh, Yahoo must have had some cool automatic system to burn CDs that is probably so old and pointless that they are opensourcing it now as part of their mothballing". I was fairly disappointed to see it's Yet Another CI Tool.

<comment><USER5> Haha, I had exactly this...

</comment></comment></comment></comment><comment><USER6> I was gonna put up something full of sarcasm. Then I realize engineers are the least responsible for enterprise business failure. This could happen to any of us. Company goes under water and job security fades away. Thanks for contributing to the open source world. And best of luck to all of those brother and sister engineers.

<comment><USER7> I think it's extremely unlikely that the higher ups who ran Yahoo into the ground had any idea of the talent they wasted. Nor do I think they would care then, or now even if they did. After all, apparently working from home was verboten at some stage during MM's reign...

</comment></comment><comment><USER8> Although Yahoo doesn't seem to be doing very well recently, they've done lots of great engineering. I recently looked through the organization's Github [0] and discovered a few nice packages.

I'd happily pay for a good managed CD build system capable of handling projects / products with multiple dependencies.

Right now I use CircleCI along with a bunch of scripts, and it works, but it's not great. One problem with existing CI tools that I've used is they only handle a single git repo, so extra automation has to be done ad-hoc. It's not terribly difficult, but it's tedious and it doesn't give you any kind of safety guarantees.

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

<comment><USER9> Fwiw [https://gocd.io/](https://gocd.io/) handles pipelines (or graphs of multiple piplines) with several git repos just fine. That's on-premise, but not hard to run on your own.

There's Snap CI, which is by ThoughtWorks (just as Go CD), and that's in the cloud. I don't know if they use the same code base, but it might be worth investigating if they can deal with multiple repos in a sensible way.

<comment><USER10> We just switched to GoCD. And here I thought Jenkins sucked.

I've never missed simple shell scripts, builds triggered by commits, tailing logs so much. Being closer to the metal. Back then, I had no idea the obvious solution was called "continuous integration".

GoCD has a pretty dash board though. So I guess that's progress.

<comment><USER11> You should try concourse.ci then. I tried Circle gitlab go and concourse and concourse is the best so far.

</comment></comment></comment></comment><comment><USER12> The screenshot looks a bit like Chef's Automate. The config example looks like Concourse's config ([http://docs.screwdriver.cd/user- guide/configuration/index#ya...](http://docs.screwdriver.cd/user- guide/configuration/index#yaml-configuration)), but it doesn't look like they have task files.

They should write up a comparison to GoCD, Teamcity, Concourse, Jenkins, Chef Automate, etc. It can be pretty hard to evaluate these things without losing a month.

<comment><USER13> Chef cannot rollback. Chef is mainly for deployment but I think screwdriver focuses on CI. CD is not his business.

<comment><USER12> I mean, Chef Automate doesn't support rollback after all the usual toe dipping ([https://docs.chef.io/workflow.html](https://docs.chef.io/workflow.html)), but that isn't terrible. Automatic rollback generally comes with a fat "but not the database" asterisk, and if you are building something general, it's a pretty reasonable decision.

Screwdrivers docs all seem to mention CD, not sure why you'd say that.

</comment></comment></comment><comment><USER14> Just spent the last 15minutes on it and my first impression is that documentation is still too poor to use it professionally. Even though, after a couple of tries, it looks like an awesome start and I'll follow this up with great attention.

Good job to the team for building an open-source tool for CD!

</comment><comment><USER15> Anyone know of a tool that can create those nice diagrams?

</comment><comment><USER16> Honestly the yahoo engineers are doing a fantastic job. First the NSFW open source model, now this, easy to use (got started in 3 minutes on my servers). A whole lotta love from Germany guys and gals <3

</comment><comment><USER17> I just tried running the docker image from the readme, it doesnt exist? docker.io/screwdrivercd/api

<comment><USER18> Oh, thanks! PR submitted: [https://github.com/screwdriver- cd/screwdriver/pull/428](https://github.com/screwdriver- cd/screwdriver/pull/428)

</comment></comment><comment><USER19> So if I'm already using gitlab or something similar is there a reason I should consider switching?

Edit: I also read this as compact disk at first.

</comment><comment><USER20> "A peek under the purple rug!" sounds awfully suggestive. I hope that's as obvious to everyone else.

<comment><USER21> I think that's just you, buddy. The only thing it suggests to me is the need for a more engaging tagline.

(But maybe it's just a matter of perspective. I once knew a redheaded woman who'd replaced a specific subset of her body hair with a brightly colored flame tattoo, which against the very pale skin typical of redheads produced an effect both immediately striking, and quite memorable at what is now a considerable distance of time. Had she instead dyed that hair purple, perhaps I'd be more likely to see this matter in the same way you seem to.)</comment></comment>