Wages Are Finally Rising, 10 Years After the Recession - <AUTHOR> https://www.nytimes.com/2019/05/02/business/economy/wage-growth-economy.html <comment><USER2> Is there any value to citing wages as opposed to real wages? It even says "Not adjusted for inflation" in the chart showing the increase in average hourly earnings.

Real wages have increased +1.5% March 2018 - March 2019, which the article would do well to point out. Citing that growth has topped 3% for nine months is almost in some ways misleading if it turns out that growth doesn't confer a similar increase in purchasing power.

The BLS tracks real wages which is where I got my 1.5% figure. To further put things in perspective, from March 2018 through March 2019 average paychecks increased by about $30 a week. At the same time, real average weekly earnings only increased by about $5.

I don't get why they would avoid (edit: less so "avoid" more like "miss/omit") this subject completely.

<comment><USER3> Yeah, the chart is pretty strange. It is the yearly increase rate for wages not adjusted for inflation. Even if this is somehow a reasonable proxy for increases in real median wages, it seems unnecessary given that you could just have a chart of real median wages instead.

I suspect a factor is that actual changes in income have been quite small and it's nicer to have an image that shows something dramatic instead of the marginal blip that we've actually seen.

<comment><USER4> Possibly. But "inflation" is a slippery concept. It is often published as a single number but it is not. Prices do not rise in the same way for all people. Relative costs and prices across the things money is used for. A poor family is buying different things from a middle class one.

Nominal wages matter a lot. And these days prices are not moving much and it is recognised that it is very important that they go up, a lot, for those at the bottom.

<comment><USER5> Nominal wages are almost completely irrelevant, that is why real wages exist as a concept.

Inflation is slippery but arguing that nominal wages matter is pushing it too far. The official inflation rate is a polite fabrication in the sense that strictly speaking there aren't a lot of people who experience the official inflation rate in a year. But it is measuring an all too real effect that needs to be factored in to everything to have a serious debate about what is happening in the real world. I'm not even sure how to rebut the idea because I don't know any arguments in favour of using nominal wages over real that aren't straw man arguments.

> And these days prices are not moving much and it is recognised that it is > very important that they go up, a lot, for those at the bottom.

I'm not totally sure I'm reading this right, but I assume you mean nominal prices for people who are poor. If so, this is a horrible idea. Nobody but nobody should want to raise the real or even nominal cost of living for poor people. It is obviously a brutal thing to do, and as a social group they don't command enough money to get a worthwhile effect from squeezing them.

<comment><USER6> > But it is measuring an all too real effect that needs to be factored in to > everything to have a serious debate about what is happening in the real > world.

Well, sort of. The major thing this doesn't apply to is borrowed money. If both prices and wages increased by 10% then adjusting for inflation you would say there has been no gain, but tell that to the person with a mortgage or student loans who is now paying back the same nominal principal amount while earning more nominal dollars.

<comment><USER7> Correct, if the interest rate is fixed. Otherwise the same market forces captured by the inflation rate is also pressuring the interest rate paid on loans.

Put simply, if tomorrow's money is worth less than today's money, interest rates must increase correspondingly.

<comment><USER6> That's assuming interest rates are set by the market rather than the Fed. In the latter case it's often the opposite which is true -- the Fed sets a low interest rate which in principle causes inflation and wage growth as people borrow money and spend it.

Moreover, the bank doesn't care that much that you're paying back the loan in less valuable money because they never actually had the money they loaned you to begin with. Having money in a bank account is you loaning the bank money, taking out a loan is the bank loaning you money, so as long as the money they loaned you is still in somebody's bank account they just cancel out. It's the person holding the cash in their account, not the bank, who is eating the currency devaluation.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> It's no secret; tight labor markets produce higher wages. The deleterious effects of labor gluts are felt most profoundly at the bottom: the greater the number of people seeking unskilled labor, the lower the wages for "those who need it most".

Hence, the solution to low wages is to stop importing poor foreigners who undercut American wages. Couple that with the elimination of corporate taxes, and there will be no incentive for offshoring or inverting. Become the world's biggest tax haven, and incomes will skyrocket.

The laws of economics cannot be wished away, and the lesson is clear: cut taxes, close the borders, and prosperity will result. If we could, now, substantially cut social spending – with all these people working, it should be possible to seriously reduce handouts – then we could afford to cut taxes AND pay for the sort of infrastructure program (exclusively projects of national importance) while reducing the deficit.

<comment><USER9> This is a completely reasonable comment. Why would you downvote it without a response?

<comment><USER10> The comment was probably poorly received because it presents a lot of things as economic fact, when in reality the evidence is much less conclusive. Many studies have shown the the labor market is far from a simple supply/demand system, and predicting the impact of many policies - looser immigration, minimum wage - is difficult, and quite often runs contrary to the simpler models.

</comment></comment></comment><comment><USER11> the article suggests a simple explanation:

> "Perhaps the job market wasn't as good as the unemployment rate made it > look."

so basically, the politically expedient version of unemployment, u3, doesn't have explanatory power in the economy. instead we should use u6, which includes the underemployed and the discouraged [0].

so the slack of the un-/under- employed has now been eaten up and competition in the labor force is driving up prices.

[0] [https://en.wikipedia.org/wiki/Unemployment#cite_ref-47](https://en.wikipedia.org/wiki/Unemployment#cite_ref-47)

<comment><USER12> U1 through U6 all move in absolute lock step with each other.

[https://upload.wikimedia.org/wikipedia/commons/thumb/9/9b/US...](https://upload.wikimedia.org/wikipedia/commons/thumb/9/9b/US_Unemployment_measures.svg/220px- US_Unemployment_measures.svg.png)

<comment><USER13> Perhaps there's a magic number which is the unemployment rate in a healthy economy[0], and when you get close to that magic number then competition has a much greater effect. If you think the magic number is very small, say 2%, then the choice between U1, U3, and U6 obviously affects whether you've hit it or not.

[0] perhaps mean_time_to_find_job / (mean_time_to_find_job + mean_job_duration + mean_time_not_working), or something

<comment><USER12> It's a well-studied area of economics. The term is "Full Employment"

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

</comment></comment></comment></comment><comment><USER14> Why is the focus always on "closing the border" or other actions taken on the immigrants themselves and not on cracking down - hard - on the companies that illegally employee and abuse them?

Trying to stop or even slow down immigration without addressing the incentives that drive them to leave home and come to the US seems like a doomed and inefficient game of whack a mole...

<comment><USER15> Politically expediency. Neither the democrats nor the republicans want to go after the elites. So naturally they take turns attacking illegal immigrants. But it's all lipservice. Neither the republicans nor democrats want to stop illegal immigration. They want to use it to get votes.

Stopping immigration isn't an inefficient game of whack a mole. It's been done before through american history. And it's been done in most countries around the world. If the political and business elites wanted to end illegal immigration today, we'd end it easily. It's really not difficult to stop illegal immigration if we wanted to.

</comment></comment><comment><USER16> "a result of a tightening labor market that is forcing employers to raise pay even for workers at the bottom of the earnings ladder."

I.e. Supply & Demand

(It's the law!)

</comment><comment><USER17> >It appears as if that is exactly what is happening. In recent months, more than 70 percent of people getting jobs had not been counted as unemployed the previous month. That is well above historical levels, and a sign that the strong labor market is drawing people off the sidelines.

Interesting. If you run the numbers you will basically see that if someone isn't counted as looking for jobs and then gets a job they barely shift the unemployment figures at all compared to someone who declares himself as unemployed but is counted as looking for jobs.

The idealized scenario with a 10% unemployment rate and 100 workers would look like this. 90/100 -> 1 worker who "seeks job" gets a job -> 91/100 -> unemployment down to 9% (-1% change)

But reality looks closer to this. 90/100 -> 1 worker who "stopped looking for jobs" gets a job -> 91/101 -> unemployment down to 9.9% (-0.1% change)

In other words you have to be insane to base any political decisions on this number.

</comment><comment><USER18> Wages are rising, unemployment is low, the stock market is near an all-time high.

It's probably smart to consider the broad economic landscape and make appropriate moves in the personal finance arena. In a while we'll probably consider these to be very good times, economically. (But they won't last forever.)

</comment><comment><USER19> 10 Yrs back, a can of coke was 1, now the same is 2.50.

</comment><comment><USER20> I guess Trump is getting 4 more years.

<comment><USER21> > The faster growth at the bottom is probably being fueled in part by recent > minimum-wage increases in cities and states across the country ... wages for > low-wage workers rose 13 percent in states that raised their minimum wages, > compared with 8.4 percent in states that did not

"Blue states" saw a much bigger bump

<comment><USER22> Setting the price does not set demand. The only thing that makes min wage bumps sustainable is a strong economy.

Additionally, it's easy to increase the average by eliminating people on the lower end.

If a min wage increase results in a 50% loss of jobs in that range, it's still an average wage increase for the workers that survived. There's just a higher unemployed pool that isn't counted in the average.

<comment><USER23> Luckily, all the evidence is that minimum wage increases don't cause any job losses.

<comment><USER16> McDonald's has eliminated a number of jobs, replacing them with kiosks. When I visit the hardware store, and others, there are noticeably fewer employees there.

<comment><USER24> They were doing this well before minimum wage increases.

<comment><USER25> Yes, but a higher minimum wage (effectively a carbon tax on labor) isn't helping.

</comment></comment></comment></comment></comment></comment></comment><comment><USER26> But for who.

<comment><USER27> whom.

</comment></comment><comment><USER28> It only took a bunch of billionaires to earn multi-billions for a few years and sabotage the debt situation to FINALLY trickle the wealth down.

</comment><comment><USER29> Is this because minimum wage increases are finally kicking in in the blue states?

I read something recently like 70% of all jobs added were in California. And the vast majority of the rest was all in solid blue territory.

The real question is where is Texas on this? It's pretty much the only "red" state that ever posts job growth.

<comment><USER30> I'd like to see where that 70% of job growth being from California comes from. Not that I'm trying to be argumentative, but seems to be wildly unlikely.

The top "growth" in terms of average number of employed increase doesn't seem to back that up:

[https://www.governing.com/topics/mgmt/gov-states- strongest-j...](https://www.governing.com/topics/mgmt/gov-states-strongest- job-growth-in-2018.html)

In terms of raw job additions it looks like it goes: Washington, California, Texas with all similar raw numbers.

[https://www.deptofnumbers.com/employment/states/](https://www.deptofnumbers.com/employment/states/)</comment></comment>


SIMD Instructions Considered Harmful (2017) - <AUTHOR> https://www.sigarch.org/simd-instructions-considered-harmful/ <comment><USER2> This argument is less effective given that SIMD is not always a straightforward substitute for vector processing. Sometimes we _want_ 128, 256 or 512 bits of processing as a unit and will follow it up with something different, not a repeated instance of that same process.

We had numerous different examples of this in the Hyperscan project and I broke out something similar on my blog: [https://branchfree.org/2018/05/30/smh-the-swiss-army- chainsa...](https://branchfree.org/2018/05/30/smh-the-swiss-army-chainsaw-of- shuffle-based-matching-sequences/)

We also used SIMD quite extensively as a 'wider GPR' \- not doing stuff over tons of input characters but instead using the superior size of SIMD registers to implement things like bitwise string and NFA matchers.

A SIMD instruction can be a reasonable proxy for a wide vector processor but the reverse is not true - a specialized vector architecture is unlikely to be very helpful for this kind of 'mixed' SIMD processing. Almost any "argument from DAXPY" fails for the much richer uses of SIMD processing among active practitioners using modern SIMD.

<comment><USER3> I agree. It seems like this strategy makes only the most braindead applications of SIMD better (simple loops that can be vectorized by an arbitrary factor), but doesn't really do anything to help the meatier SIMD workloads. Most SIMD code isn't as simple as this, and the code that is usually isn't a significant factor in either developer experience or runtime.

<comment><USER2> Seriously. A lot of these proposals go veering off into second-order considerations ("Easier to decode!" "A few picojoules less energy") as I'd be very surprised if the bottlenecks are going to be from SIMD vs vector architecture ISA issues - as compared to, say, memory bandwidth or multiply- add bandwidth.

<comment><USER4> A few years ago I tried to buy a liquid cooled overclocked server for trading. Enabling AVX cost extra due to the concentrated heat output from the MMU and each core's vector unit.

It was along the lines of being able to get a server that was tested stable at 5GHz without AVX vs 4.5 GHz with AVX for the same price.

So at least on Intel, these vector units are apparently limiting clock speeds and yields due to power consumption.

<comment><USER5> Yes, but not due to instruction decode costs, which is really all this article is talking about.

The real heat comes from actually doing the work, not decoding what work to do.

</comment></comment></comment></comment></comment><comment><USER6> In some recent work from my group [1], we reduce the complexity of keeping up with new SIMD ISAs by retargeting code between generations. For example, a compiler pass can take code written to target SSE2 (with intrinsics) and emit AVX-512 - it auto-vectorizes hand-vectorized code. With a more capable compiler, if the ISA grows in complexity, programmers and users of libraries get speedups without rewriting their code or relying on scalar auto- vectorization. However, the x86 ISA growth certainly pushed some complexity on us as compiler writers - we had to write a pass to retarget instructions!

[1] [https://www.nextgenvec.org/#revec](https://www.nextgenvec.org/#revec)

<comment><USER7> Recently a patch was contributed to gcc that converts mmx intrinsics to sse. Also the gcc power target supports x86 vector intrinsics, converting them to the power equivalents.

It's not as ambitious as your approach though, more like a 1:1 translation and thus cannot take advantage of wider vectors.

<comment><USER2> That patch primarily is there to avoid the pitfalls of MMX on modern architectures; it is gradually becoming deprecated. On SKX, operations that are available on both ports 0 and 1 for SSE or AVX are only available on port 0 for MMX. So code that uses MMX is getting half the throughput (which may or may not matter, but still).

<comment><USER7> Thanks for the explanation, I wasn't aware of the reasoning behind it. I would guess by now all actively maintained performance-critical code has been rewritten in something more modern, so it certainly makes sense for Intel to minimize the number of gates they dedicate to MMX.

</comment></comment></comment></comment><comment><USER8> There is probably a lot of merit in the advantages of vectors but it weakens the article to set them up as against SIMD when the presented facts are dubious at best:

> An architect partitions the existing 64-bit registers

> The IA-32 instruction set has grown from 80 to around 1400 instructions > since 1978, largely fueled by SIMD.

Wait, what. IA-32 started in 1985 not 1978. It didn't have any existing 64 bit registers. It was called IA-32 because of the 32 bit registers, like EAX and EBX. And then looking at the 1986 reference manual [https://css.csail.mit.edu/6.858/2014/readings/i386.pdf](https://css.csail.mit.edu/6.858/2014/readings/i386.pdf) I count 96 instructions under 126.96.36.199. The IA-32 instruction set didn't grow much all these years, IA-64 did to the best my knowledge but please let me know if I am wrong here. As for IA-64, I looked at [https://www.intel.com/content/dam/www/public/us/en/documents...](https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures- software-developer-instruction-set-reference-manual-325383.pdf) and it's hard to get an accurate count because some instructions are grouped together, it's either 627 or 996 (and I may have made a counting mistake given I started from a PDF, but it should be close) which is indeed very high but even our best attempt only finds a tenfold growth (and perhaps only a 6.5) instead of the 17.5 the article suggested.

<comment><USER9> Small nit. IA-64 refers to Itanium. I think you meant Intel 64.

[https://en.wikipedia.org/wiki/IA-64](https://en.wikipedia.org/wiki/IA-64)

<comment><USER8> You are correct.

</comment></comment></comment><comment><USER10> Roll my eyes every time I see a "Considered Harmful" headline.

As for SIMD, it's a huge benefit when used in the right context. I applied it image processing and video compression algorithms in the past, with significant performance gains.

<comment><USER11> > Roll my eyes every time I see a "Considered Harmful" headline.

Me too.

> As for SIMD, it's a huge benefit when used in the right context.

Sure, but as the article points out, that benefit could be even huger when used on a "proper" vector architecture with veeeery wide vector registers that do not also double as not-very-wide scalar registers. "The SIMD instructions execute 10 to 20 times more instructions than RV32V because each SIMD loop does only 2 or 4 elements instead of 64 in the vector case."

I think adding SIMD instructions to x86 was a good trade-off at the time, but I also think the authors are correct that new ISAs designed now are better off with a vector architecture like they propose. In the end it's apples vs. oranges because the two contexts are not comparable.

<comment><USER12> I feel like even though full vector architecture might perform a lot better, the use cases may be much narrower than SIMD, especially on typical desktop or server (web applications etc, not scientific computing, deep learning or image processing -- many of which are already vectorised on GPUs) workloads. As others have mentioned, SIMD allows you to do a little bit of vectorisation in an otherwise non-vector workload, or use it for the wider registers or whatever. I don't know enough about it personally to be able to judge either way, though. I just know that I've attempted to vectorise some hobby game code for fun a few times and typically found it much harder to achieve than it first seemed, even though the data _seemed_ trivially vectorisable at first. Perhaps that's just lack of experience.

</comment></comment></comment><comment><USER13> So, if I understand it correctly, the text argues in favor of the GPU approach of pipelining independant vector operations instead of the current SIMD approach.

I see how this could be beneficial, specially when writing codes, as it's way closer to just a normal loop.

Then again, why not combine both ideas and pipeline chunks of SIMD type? Say we have 4 execution stages and 32bit SIMD types (unrealistic, I know) and want to process 8-bit numbers. Wouldn't we be able to process 16 of them at the same time? Actually, isn't that kind of what GPUs already do?

I'm sure smarter people than I have reasoned about this, maybe someone can link a good article. I only know of this one [1] and one about GPGPU that I just can't find any more (but which was also very interesting)

[1] [http://www.lighterra.com/papers/modernmicroprocessors/](http://www.lighterra.com/papers/modernmicroprocessors/)

<comment><USER14> By coincidence I started a new blog a few days ago and my first article is about the SIMD Instructions Considered Harmful post from a power efficiency perspective... maybe I should post it separately on HN? :)

[https://massivebottleneck.com/2019/02/17/vector-vs-simd- dyna...](https://massivebottleneck.com/2019/02/17/vector-vs-simd-dynamic- power-efficiency/)

I think I'm kinda explaining how it's similar (and different) to what modern GPUs do but I'm not sure I understand what you mean by "wouldn't we be able to process 16 of them at the same time" \- do you mean a throughput of 16/clock, or just that 16 are "in flight" through the pipeline with a throughput of 4/clock?

I'm not sure I'm clear enough about it for those without a GPU HW background. If it's not clear I'm happy to write down a more detailed explanation here!

</comment></comment><comment><USER15> Maybe CPU architectures should just have data-parallel loop support of arbitrary width. The CPU can implement it in microcode however it feels like, or perhaps a kernel can trap it and send it off to a GPU transparently.

Strikes me as much cleaner design-wise than stuff like CUDA or openCL or SIMD of today.

<comment><USER16> This sounds quite optimistic. How would microcode deal with allocating registers, or nested data parallelism? You are describing transformations that usually happen fairly early in compiler optimization pipelines, and pushing that down to microcode would bring huge complexity.

<comment><USER17> IIRC the Mill CPU handles this by performing a translation at install time.

For Mill CPU variants with wide vector units the CPU could execute certain instructions in one go, while for variants with narrow units it might have to issue multiple instructions.

Their idea is to handle this by basically doing ahead of time compilation of a generic program image, turning it into a specialized version for the installed CPU.

Sounds neat, proof is in the pudding.

<comment><USER18> This sounds like the claims that Intel made for the Itanium and its EPIC instruction set when Itanium did not yet exist. The rest is history.

All of the following quotes taken from

> Their idea is to handle this by basically doing ahead of time compilation of > a generic program image, turning it into a specialized version for the > installed CPU.

To quote [https://en.wikipedia.org/w/index.php?title=Itanium&oldid=884...](https://en.wikipedia.org/w/index.php?title=Itanium&oldid=884142590):

"EPIC implements a form of very long instruction word (VLIW) architecture, in which a single instruction word contains multiple instructions. With EPIC, the compiler determines in advance which instructions can be executed at the same time, so the microprocessor simply executes the instructions and does not need elaborate mechanisms to determine which instructions to execute in parallel."

The problem with all the approaches that depend on AOT compilation is that no such "magic" compiler exists. And no, machine learning or AI is not the solution. ;-)

<comment><USER17> As I understood it, and as far as I can remember, the Mill AOT compiler has an easier job than that. The generic image already contains the parallelized instructions, the AOT just has to split those who are too wide for the given CPU.

Been a while since I saw the AOT talk tho. And as mentioned, so far it's all talk anyway.

<comment><USER18> > As I understood it, and as far as I can remember, the Mill AOT compiler has > an easier job than that. The generic image already contains the parallelized > instructions, the AOT just has to split those who are too wide for the given > CPU.

In my opinion, this just moves the problem on a meta level. For the EPIC instructions of Itanium, one could encode multiple (parallel) instructions into one VLIW instruction. It was a huge problem to parallelize existing, say, C or C++ code so that this capability could be used. The fact that such a "smart compiler" turned out so hard to write was one of the things that broke Itanium's neck.

I openly have no idea by what magic a "sufficiently smart compiler" that can create such a "generic image [that] already contains the parallelized instructions" suddenly appears. How is it possible that compilers can suddenly parallelize the program, which turned out to be nigh impossible for the Itanium?!

<comment><USER17> It's been too long since I watched the videos, so unfortunately I don't remember the specifics. For reference, here's[1] the relevant one on the compiler aspect.

I do seem to recall that they seemingly had studied the failures of Itanium, and supposedly designed their architecture to not fall into the same pitfalls as with the EPIC/Itanium.

One aspect I recall is that while they have VLIW, different operations within the (compound) instruction are issued in such a way that lets them be interdependent. Like, a single VLIW instruction could have an add and a multiply, where the result of the add is used as input for the multiplication. So while the operations are grouped in a single instruction, they're not executed strictly in parallel. There's a lot of other aspects too, that's just the one I remember.

But yeah, really curious to know how that pudding will turn out.

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

</comment></comment></comment></comment></comment></comment></comment><comment><USER19> The discussion in the comments beneath the article was more interesting than the article itself.

</comment><comment><USER20> And yet the current RISC-V approach is not as good as MXP:

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

It's an entirely different approach than what the RISC-V folks are pushing for. It's great that this guy is working with them on the vector instructions, but I'm afraid it's too soon to claim a "right" way to go.

It's also not fair to compare instructions executed between SIMD and some huge vector register implementation. Most common RISC-V CPUs are likely to have smaller vector register from 256 to 512 bits wide.

<comment><USER7> > And yet the current RISC-V approach is not as good as MXP

I watched that presentation a while ago, and while the figures that are shown look nice, I suspect the crux is that I'm not sure whether MXP is practically implementable? I'm not at all an expert on this topic, so take this with a large grain of salt. Anyway:

1) With MXP instead of a vector register file you have a scratchpad memory, i.e. a chunk of byte-addressable memory in the CPU. Now, if you want multiple vector ALU's (lanes), that scratchpad then needs to be multi-ported, which quickly starts to eat up a lot of area and power. In contrast, a vector regfile can be split into single-ported per lane chunks, saving power and area.

2) MXP seems to be dependent on these shuffling engines to align the data and feed to the ALU's. What's the overhead of these? Seems far from trivial?

As for other potential models, I have to admit I'm not entirely convinced by their dismissal of the SIMT style model. Sure, it needs a bit more micro- architectural state, a program counter per vector lane, basically. But there's also a certain simplicity in the model, no need for separate vector instructions, for the really basic stuff you need only the fork/join type instructions to switch from scalar execution to SIMT and back. And there's no denying that SIMT has been an extremely successful programming model in the GPU world.

> It's also not fair to compare instructions executed between SIMD and some > huge vector register implementation. Most common RISC-V CPUs are likely to > have smaller vector register from 256 to 512 bits wide.

True; the more interesting parts is the overhead stuff. Does your ISA require vector load/stores to be aligned one a vector-size boundary? Well, then when vectorizing a loop you need a scalar pre-loop to handle the first elements until you hit the right alignment and can use the vectorized stuff. Similarly, how do you handle the tail of the loop if the number of elements is not a multiple of the vector length? If you don't have a vector length register or such you need a separate tail loop. Or is the data in memory contiguous? Without scatter-gather and strided load/store you have to choose between not vectorizing or packing the data.

That bloats the code and is one of the reasons why autovectorizing for SIMD ISA's is difficult for compilers, as often the compiler doesn't know how many iterations a loop will be executed, and due to the above a large number of iterations are necessary to amortize the overhead. With a "proper" vector ISA the overhead is very small and it's profitable to vectorize all loops the compiler is able to.

</comment></comment><comment><USER21> Comparing dynamic instructions between a SIMD architecture with a 32 byte vector width versus a vector architecture with 8*64=512 byte vectors is laughably misleading. Of course you can use fewer instructions if you're willing to throw hugely more transistors at the problem and carry around so much more architectural state.

There are reasons to prefer SIMD or vectors machines or, put another way, packed or unpacked vectors. But this is a very one-sided presentation. Also, some SIMD ISAs like Arm's SVE can handle different widths pretty nicely.

<comment><USER7> I'd guess in the classification of the authors, SVE would qualify as a "real" vector ISA. SVE resembles the risc-v vector extension quite a lot.

</comment></comment><comment><USER22> Prediction: In order to be performance-competitive with other ISAs for software written for SIMD, RISC-V will get a SIMD extension. However, because it wasn't there from thw start, Linux distros will not compile their packages with SIMD enabled and the result will be sad like NEON on 32-bit ARM.

</comment><comment><USER23> > While a simple vector processor might execute one vector element at a time, > element operations are independent by definition, and so a processor could > theoretically compute all of them simultaneously. The widest data for RISC-V > is 64 bits, and today's vector processors typically execute two, four, or > eight 64-bit elements per clock cycle.

So does this argument boil down to an inversion of control which in turn removes unnecessary instructions? It certainly sounds more elegant to my naive ISA understanding.

Can I ask, someone with hands on SIMD experience: does relinquishing control over exactly what and how many "vector" operations occur in a single clock make any real world difference?

</comment><comment><USER9> Why doesn't this comparison include ARMv8 and ARMv8 NEON? ARMv8 NEON does support double precision and that can help DAXPY. I believe this has been the case since 2011 when AArch64 was announced (well, at least 2015).

[http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc....](http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0024a/CEGDJGGC.html)

<comment><USER24> Well, there is also no AVX512 mentioned.

</comment></comment><comment><USER25> I've been saying this for nearly 20 years. My first experience with it was Altivec on PowerPC:

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

I have a computer engineering degree from UIUC and my very first thought upon seeing MMX/SSE/Altivec/etc was "why didn't they make this arbitrarily scalable?" I was excited to be able to perform multiple computations at once, but the implementation seemed really bizarre to me (hardcoding various arithmetic operations in 128 bits or whatnot).

If it had been up to me, I would have probably added an instruction that executed a certain number of other instructions as a single block and let the runtime or CPU/cluster divvy them up to its cores/registers in microcode internally.

It turns out that something like this is conceptually what happens in vector languages like MATLAB (and Octave, Scilab, etc), which I first used around 2005. It's implementation is not terribly optimized, but in practice it doesn't need to be, because all personal computers since the mid 1990s are limited by memory bandwidth, not processing power.

For what it's worth, we're seeing similar ideas in things like graphics shaders, where the user writes a loop that appears to be serial and synchronous, but is parallelized by the runtime. I'm saddened that they had to evolve via graphics cards with their unfortunate memory segmentation (inspired by DOS?) but IMHO the future of programming will look like general-purpose shaders that abstract away caching so that eventually CPU memory, GPU memory, mass storage, networks, even the whole internet looks like a software- transactional memory or content-addressable memory.

We'll also ditch frictional abstractions like asynchronous promises in favor of something like the Actor model from Erlang/Go or a data graph that is lazily evaluated as each dependency is satisfied so it can be treated as a single synchronous serial computation. I've never found a satisfactory name for that last abstraction, so if someone knows what it's called, please let us know thanks!

P.S. the point of all this is to provide an efficient transform between functional programming and imperative programming so we can begin dealing in abstractions and stop prematurely optimizing our programs (which limits them to running on specific operating systems or hardware configurations).

</comment><comment><USER26> > IA-32 instruction set has grown from 80 to around 1400 instructions since > 1978, largely fueled by SIMD.

Holy quack! I didn't even know there were 80 (feels too much already, I barely used a tiny portion when exercising in assembly), 1400 sounds really insane.

<comment><USER27> We're past the time that a human needs to understand assembly instructions.

In the future, instructions will be designed by machine, for example by considering millions of permutations of possible instruction "combined add with shift with multiply by 8 and set the 6th bit", "double indirect program counter jump with offset 63", etc.

Each permutation will be added to various compilers and simulated by running benchmarks on complete architecture simulators to find out which new instruction adds the most to the power to die area to performance to code size tradeoff.

I predict there will be many more future instructions with 'fuzzy' effects which don't affect correctness, only performance. Eg. 'Set the branch predictor state to favor the next branch for the number of times in register EAX', or 'go start executing the following code speculatively, because you'll jump to it in a few hundred clock cycles and it would be handy to have it all pre-executed'.

<comment><USER28> "We're past the time that a human needs to understand assembly instructions."

Until you're debugging broken compiler/JIT output, which I've had to do multiple times in the last year while using .NET Core.

<comment><USER29> And how did you fix it? Did you patch the compiler?

</comment></comment></comment></comment><comment><USER30> Isn't the whole point of SIMD being as similar to original x86 instructions as possible? reusing as much the existing cpu as possible? Otherwise you would have something like the ps3?

<comment><USER31> It was primarily the memory architecture that made the PS3 unique.

<comment><USER4> If you care about latency, a modern 8-or-more core x86 with its L1/L2 cache segmentation and penalized-but-shared L3 cache is almost as complex. It becomes even more complex if you use the CPU topology to make inferences hyperthreading shared caches or need to deal with the shared FPU on older AMD processors.

My understanding is that the largest difference is that some of the Cell cores had different opcodes that meant you could schedule some threads on some cores but not any thread on any core.

<comment><USER31> I have written quite a bit of SPE code. The primary issue is that the SPE processor could only read/write to 256kB localized memory (without doing a DMA). So literally object orientated code doesnt even work (because of VTables). The c/c++ model is not designed for this type of architecture. Yes there were also limitations like vector only registers and memory alignment but the biggest issue was the local memory.

<comment><USER32> Yep the SPU you end up spending so much time managing memory.

No cache they are just dumb processors. I find it funny they thought they can take ps2 vu0/vu1 and make it a processor.

</comment></comment></comment></comment></comment><comment><USER33> I feel if you have a strong need for vectors then you should consider running (part of) your code on the GPU.

<comment><USER34> Too far away and requires huge thread counts to make up for its overheads. A good vector unit should work well even for very short vectors (e.g., any size of memcpy).

</comment></comment><comment><USER35> Considered Harmful Clickbait Considered Harmful (2019)</comment>


VS Code Can Do That? - <AUTHOR> https://vscodecandothat.com/? <comment><USER2> Previously discussed (270 comments): [https://news.ycombinator.com/item?id=16891784](https://news.ycombinator.com/item?id=16891784)

<comment><AUTHOR> Thanks for sharing. The page is updated every week, so there's a bunch of new stuff in it

</comment></comment><comment><USER3> Can it do...

\- Multiple Windows?

\- Telemetry opt-in?

\- Consume less than 50MB with no document open?

\- Require < 5 different processes?

<comment><USER4> It supports multiple windows.

Telemetry is opt-out. I personally don't care but I understand the concern.

Why would 50mb or even 500mb be a problem? So many people are concerned about memory and I don't understand. I never have memory issues and I seriously abuse my conputers, but RAM is cheap anyway. I'd much rather see development efforts be focused on great features than memory optimization. Features that will save much more time than a RAM upgrade costs.

I can't even begin to imagine why number of processes would matter to anyone.

<comment><USER5> I think it's important to appreciate that while RAM itself is cheap, the same is not always true for upgrading it. A lot of people these days use laptops where RAM is soldered on, and is not upgradeable after purchase. And they may not have had a choice if the machine was provided by the workplace.

Trying to keep RAM usage low doesn't hurt anyone.

What I personally care more about is CPU usage, because it affects the battery life of my laptops. Why is VS Code using 10-20% CPU when I have it open in the background? This behavior seems to come and go with each VS Code update, even without additional extensions installed.

<comment><USER4> Those are great points.

 _Trying to keep RAM usage low doesn 't hurt anyone._

It depends on the degree. It's one thing to be cognizant of RAM usage throughout development but it's another to trade time that could otherwise be spent on features, usability, security, or more impactful optimizations, like CPU.

The bulk of a modern app's footprint, RAM included, often comes from outside dependencies. Abstraction overhead. It's the norm to trade app performance for dev performance and I believe it's good for progress.</comment></comment></comment></comment>


What the hell is going on with Star Citizen? - <AUTHOR> http://www.polygon.com/features/2015/8/31/9211969/what-the-hell-is-going-on-with-star-citizen

<comment><USER2> I'll disclaim that I am strictly in the get-it-done right camp, and that none of the delays surprise me. The article's title is 83% more click-baity than the content, so it's likely worth a read if you're into Star Citizen. It basically goes over the fact that it's a huge Kickstarter project that's running late, and some people don't like that.

It's a fairly common theme we see around here, and I think Star Citizen is going to be an interesting case study in how huge croud funding campaigns finish. SC is _huge_ \- easily in the AAA game category in scope, detail, and functionality. But it also has AAA funding. But unlike a normal studio, this had to ramped up from Indie to AAA in logistics, staffing, and more. My suspicion is that we're going to see that a lot of delay came from the complexity of the screaming ramp up from small to huge.

That, and, well, I've been served well by patience in the past, and nothing I see about SC looks like it's going to be vaporware. It's certainly never going to be an 'unmitigated disaster', since the game is certainly starting to exist and is pretty gorgeous; at the least, it's going to be a _mitigated_ disaster, which beats a couple Kickstarters for me :)

(Final disclaimer: All that said, all I have for my ship is a bit of wallpaper art; I'd really like to be able to even see my ship, but ... it's going to be a while, and I'd really like to just see it _right_.)

<comment><USER3> I think you're right. I havent been actively monitoring it, but it seems to me they got even more money than they thought they would get, and their timescale was for the budget they thought they would get. They've been pushing out modules and demos left and right, very consistent updates, and the only concerns I ever really hear voiced that seem to have any real backing are "there's no way it could be as good as they hype" which I think is completely reasonable. If it even comes close to some of the hype surrounding it; it will cure cancer and cause world peace.

In reality, I'd be happy if it was just freespace meets eve, but it looks so much better than that. As you said, I think it will either show that crowd- sourcing AAA is something that works well, or that it doesn't.

<comment><USER2> You nailed how I feel exactly; I'm going to use "Freespace meets EvE" as my go-to description now. Because all I ever wanted was to walk around in my EvE ships and scan down wormholes.</comment></comment></comment>


An OSS scalable distributed message queue with automatic failover. It kicks ass - <AUTHOR> http://code.google.com/p/pymq/

<comment><USER2> this recent mq hype is really about the unification of a directory server, a wire protocol and a reliable (or not) message transfer scheme just like the good old smtp. once one sets up a proper directory solution (ldap) and uses thrift for serialization, the need for a messaging daemon goes away -- every publisher can keep an (optionally) persistent queue however they want.. so the mq becomes just a library.

it seems to me that imatix guys have been there, done that and saw that mq-as- library was the way to go for a more efficient and reliable distributed transaction processing system. <http://www.zeromq.org/whitepapers:brokerless> is an interesting read in this regard.

<comment><USER3> I am going to read this avidly. ZeroMQ's broker-less approach seemed like more work for me. This is an opportunity to reconsider my position.

We use an AMQP stack and the complexity seems somewhat unjustified. On the other hand, it's good to have a standard, even if it's not perfect. Django+celery is pretty kick-ass, and I would have to give it up if I moved away from AMQP.

<comment><AUTHOR> Celery is pretty cool in it's own way. It is like the appengine Task Queues rather than message queues in general.

</comment></comment></comment><comment><USER4> From the clustering page of the Wiki:

"The pymq cluster is not designed to survive a master crash. If the master is to crash, all bets are off. However, clients that are already connected to the individual nodes can continue to operate normally. It's just that automatic failover and queue discovery won't work (which is basically what the master does)."

This is not fail-safe, unlike most enterprise messaging systems. Though you could stick the master on a VMware cluster with FT enabled and survive hardware failures, there is nothing preventing data loss from software or networking failures.

<comment><AUTHOR> The assumption is that the master isn't flaky. You can achieve this in multiple ways. One of them you mention.

If the software is bad, you can't help it.

As far as network failures are concerned, I think those are handled. If your network fails, you basically won't be able to send a message or won't get confirmation of it being sent. Either ways, if the queuing system works in at least once mode, you are guaranteed message delivery. If there is an error, the library reports an error and the application must re-try.

</comment></comment><comment><USER5> how does this compare with Beanstalk ?

<comment><AUTHOR> Beanstalkd is a workqueue service not a message queue service. It's use case is some what more in tune with CRON rather than pymq.</comment></comment>


Ask HN: As an engineer what art forms should I learn - <AUTHOR> I am a highly analytical person and a software engineer. I like to believe I am creative because I create software and convert my ideas into products. However, I wonder if this creativity transfers to other art forms where I can conceive an idea and deliver a finished art product. What should I start with? I am considering sketching, sculpting or wood work. Would love to hear what other engineers have enjoyed the most! <comment><USER2> Why not give expressive dance a try?

Something like "Ausdruckstanz" would be interesting. You could fuse this with modern dance styles such as body popping. You could also fold in some programming references mid dance and shout stuff out like 'Null pointer!' , 'statically typed!'

</comment><comment><USER3> Try a bunch of different art practices, and see which one sticks.

Painting, working with clay, and sculpture (wood, metal, found materials, etc) are what I enjoy.

You'll know you find what you enjoy when you hit the "flow state", which is very similar to hitting a stride programming.

</comment><comment><USER4> I vote woodworking. It uses both your body and mind. It teaches you to quintuple check your work before cutting. In programming, mistakes are cheap. In woodworking, mistakes are best avoided. It also gets you on your feet handling large/heavy pieces of wood which does wonders for improving core strength and ...gracefulness. It also gives confidence and the ability to shape the world around you.

Some downsides are the learning curve, startup costs, time you will have to spend setting up your shop, and sharp spinning blades. No matter how good you get there's always a chance for a mistake. If I were rich I'd using nothing but sawstop or at the very least kregjig stuff.

</comment><comment><USER5> I've recently taken up weaving and it's a lot of fun. You can start simple with a frame loom and do more tapestry stuff. I picked up a rigid heddle loom and have done a few fun projects on it. Soon I'm going to build a 4 shaft loom.

Weaving has a lot of patterning and strikes, for me, the perfect balance between "I need to pay attention to what I'm doing" and hit a rhythm and zone out. Plus the Jacquard loom was had a lot of influnce on Babbage's Analytical Engine!

</comment><comment><USER6> I would suggest origami. Origami is probably the art form that's been studied by mathematicians and computer scientists more than any others, e.g., flat- foldable origami crease patterns obey some simple mathematical theorems [1]. There has also been considerable research into finding an origami crease pattern for a particular target shape, and software such as TreeMaker helps one do that [2].

[1]: [https://en.wikipedia.org/wiki/Mathematics_of_paper_folding#F...](https://en.wikipedia.org/wiki/Mathematics_of_paper_folding#Flat_folding)

[2]: [https://langorigami.com/article/treemaker/](https://langorigami.com/article/treemaker/)

</comment><comment><USER7> I really enjoy baking as a creative outlet because:

\- Projects are always short, ranging from ~30 minutes for really simple cookies to ~2 days when ingredients need to rest at an intermediate state for extended periods.

\- You have to work within constraints (whatever you consider delicious), but you can incorporate basically anything edible into a project, so there's a lot of room for creative expression.

\- Coworkers, neighbors, and casual acquaintances react really positively when you bake too much and give away the overage.

</comment><comment><USER8> Sketching is great because it adds another dimension to your ability to communicate. Even a crappy sketch can convey an idea more effectively or quickly than thousands of words, sometimes.

</comment><comment><USER9> Pixel art, animation, game design (even game theory). These are the obvious ones that synergize with high technical skill.

Writing too. I like to just rewrite notes from things I read or compare notes between books and fields. I actually like using tropes as building blocks for other kinds of writing.

Not so much creative output, but martial arts and running are interesting as an art form.

</comment><comment><USER10> This is probably not what you want to hear, but...whichever one you'll actually do. Forget whether you're any good or if you're progressing. What will you noodle at every day and find your life enriched? That varies from person to person.

Writing a novel was pure therapy for me when I wasn't sure what continent I was going to be living on in a few months. Short stories ([http://madhadron.com/fiction.html](http://madhadron.com/fiction.html)) have been an ongoing source of pleasure, as I giggle my way through my imagination.

Music was rather more than a hobby for many years, but even now I love noodling at it. Today I arranged Lachrimae for solo violin, while I'll play at an open mic night at work in a few weeks...followed by Cohen's Hallelujah accompanied on the ukelele. Did I enjoy the couple hours I spent building the ukelele part? Absolutely.

On the other hand, drawing never did anything for me. I have a couple of sketches in my files that I'm quite proud of as accomplishments, but the impulses that make it enriching seem to come to me only once every few years as opposed to as part of my daily life. Similarly, I learned woodworking from my father and have built a number of lovely things for our home, but unlike my father, it's not something that I particularly like to go down and noodle at.

I have enjoyed the community from various kinds of dancing, occasionally do a little choreography, and really got into historic dance reconstruction years ago, but outside of such settings I do the equivalent of humming to myself around the house rather than really engaging with it. I have spent more time noodling with dance education than with dance itself. It's a crying shame how much time people waste when trying to learn things like waltz...

Try some things. See what sticks.

> I am a highly analytical person and a software engineer. I like to believe I > am creative...

I have found most self identity involving being creative to be more limiting and damaging than its worth. You start questioning whether you are overly influenced by something, or if it's original enough, or if you're squandering your creativity by writing a poem about defecating in the woods, or if you're not being true to yourself by creating within constraints that let you get paid. All of which are a complete waste of your time and are more likely to reduce the incidence of behavior that creates things.

The serious artists that I have known are generally highly analytical. The whole "I'm expressing my pure, authentic self" I think is mostly a form of pickup line.

</comment><comment><USER11> Try music programming: [https://github.com/ciconia/awesome-music#music- programming](https://github.com/ciconia/awesome-music#music-programming)

Or you can start learning making music the classical way, I suggest Melodics.

</comment><comment><USER12> Guitar playing (justinguitar.com)! Swing dancing (or other types, look up classes in your area)! Writing (journal, or essays, look up writing nights on meetup)! Weightlifting (r/fitness FAQ beginner routine).

</comment><comment><USER13> Filmmaking is the hardest art form I've tried.

Drawing was my first love.

I still enjoy writing, but now mainly nonfiction.

I am not much of a musician. I can play the drums a bit. But I have heard that music is highly mathematical. So it might appeal to analytical people more than they might first guess.

</comment><comment><USER14> As a fellow analytical person, I really like abstract art, doing splatter paintings / acrylic pour paintings. It doesn't involve high level thinking beyond basic color theory, it's very free form.

</comment><comment><USER15> "The best form of exercise is the one you will actually do."

Which form of art do you most enjoy or appreciate? Which form of art has output that will motivate you to keep practicing?

</comment><comment><USER16> I do pottery - it can be a lot of things for a lot of people; all the way from just playing with mud to complex glaze and clay chemistry

</comment><comment><USER17> music composition, teaches you to be creative within boundaries :)

</comment><comment><USER18> Music hands down. Learn to play en instrument.

<comment><USER2> I don't think you can play a lot of instruments with your hands down.

<comment><USER18> Keyboard and lap steel guitar :)</comment></comment></comment>


The "4% of people are a**holes" theory – or: why I dislike equality discussions - <AUTHOR> http://voss.world/diversity-in-a-team-or-why-i-dislike-equality-discussions/ <comment><AUTHOR> hey, I left you a reply o nthe blog :-)

</comment><comment><USER2> > Where is my logical mistake then?

Your logical mistake is in understanding "discrimination" as happening mostly on a personal level, and pretty much disregarding that there is systemic discrimination through which, while everyone is being pleasant to each other, an outcome is achieved that still promotes inequality.

So while you not willing to believe this...

> This means that almost EVERY hiring manager in almost EVERY company across > Germany is discriminating women. I decided for myself that this is really > unlikely and that I am not willing to believe it.

...it's probably true. Not in the sense that every hiring manager is a terrible chauvinist, but there is a bias in the system which is skewed against women. The most basic example:

A hypothetical hiring manager when faced with the choice of hiring a woman, has it somewhere in their head that in humans women are the sex which can get pregnant, and they'd have to hire a temp, possibly continue paying her, and then deal with maybe even a part-time employee when they wanted a full-time one. That's simply something that a male candidate doesn't have to deal with.

This doesn't happen because someone is being particularly mean, it just happens.

Consider that this phenomenon of women's liberation is a relatively recent one, through our culture we have ingrained in us millennia of womens' oppression. Consider that women, in the American context - even just white women, haven't had the right to vote for even a hundred years.

We've come a long way, but we're not "finished", and these forces are still there - sometimes stronger, sometimes weaker. You even see it yourself, when you write:

> Very quickly it was clear to me that the boys were much more aggressive in > asking for money than the girls. The ladies were mostly shy.

Have you given some thought as to _why_ women were shyer than men ? I would put it to you that they're being taught, from childhood, that to be a girl means to be a bit more on the quiet side, and to be a boy means to be a bit more on the loud and more demanding side. And no-one means the girls or the boys any harm in doing it, it's probably not even all that conscious of an effort. That's the link between "gender" and "personality" you were missing in :

> Hence I started to believe that lower salaries have nothing to do with > gender but with personality.

The end result of it is, that _you_ in the team that _you_ manage, pay the women less. Which is clearly unfair.

I think if I were in that situation as your female employee, I would be a pretty loud obnoxious asshole about it.

You're doing yourself a dis-favor by just calling the people who loudly attack you, "assholes". The progress we've made in gender equality has depended to a large extent on women being unpleasant and loud.

Maybe instead of just dismissing them, try to actually imagine what life looks like from these people's perspective. Because while I am sure there is lot's of anger that get's released in an over-the-top way, that doesn't mean there isn't some truth in there that might well justify being angry.</comment>


Breakthrough in sewing needles - <AUTHOR> http://bitsandpieces.us/2010/03/16/breakthrough-in-sewing-needles/

<comment><USER2> There is a reason that this wasn't invented 50 years ago -- most people who regularly thread needles have been doing it for so many years, that this is a non-issue.

That being said, I asked my wife (who makes her living with needles and fibers) what she thought, and she said that she has seen similar designs before, and thinks they look great, but just never tried them.

This is actually a great product design insight -- what looks like an amazing product isn't solving the problems that the serious "users" actually encounter. It is solving the problem that the casual or new users encounter.

Which shouldn't diminish the fact that it is a great idea. It just probably will have a long ramp-up before it "takes over the world."

<comment><AUTHOR> I think that is a good way to look at it.

Give her one show at Oprah though and she will definitely "take over the world"

</comment></comment><comment><USER3> Hi guys, I am the inventor of the Spiral Eye side threading needle. Your conversation is very interesting to me. It is from a very different view point than what I usually hear. My needle is new, but I have been selling them for over two years, on line, in some stores and at state fairs and events. There is a huge market for them. A needle is the most ubiquious of tool in the world. It is used in surgery, to mending, crafts, to fishing. The design I came up with has a very precarious geometry to keep the thread inside and not snag the material you are sewing. The technology to make it did not exist fifty years ago. I also have just been written up in a newspaper in Denmark and my website sales have gone through the roof. Maybe the Danes sew more than the Americans.

</comment><comment><USER4> The last line in the article sums it best: "Why wasn't this inventer 50 years ago?"

Exactly my thought, this is a bit like inventing a better cd/dvd case now.

<comment><USER5> I was wondering, what do you personally do when shirt buttons come off?

<comment><USER4> Good point. I'll answer with a question - what do you personally do, when your shoe need repair?

<comment><USER6> Two-part epoxy.

<comment><USER7> I've gotten away using a tube of silicone sealant and a hammer (don't ask)

</comment></comment></comment></comment></comment><comment><USER8> I imagine this might have an unplanned benefit to sewers -- you can use a smaller needle for the thickness of thread you're sewing with. Even using a threader requires you to pull the string through doubled. However, it looks like the eye of the needle is thicker than other needles of the same size. I can't be sure, because I can't tell how big the needle in the picture is.

</comment><comment><USER9> This goes to show that innovation exists for even the most mundane things.

I didn't even see the problem until this article came up (much less the possible solution). I'd always assumed that there would be children on-hand to thread needles for their parents, the way I was when I was younger.

In retrospect - really dumb of me.

</comment><comment><USER10> Yes, it looks fantastic.

Still, needles are not _that_ hard to thread. It's not like there's a great nationwide backlog of sewing that can finally recommence because people can finally thread their needles again.

<comment><USER11> Needles _are_ hard to thread, if you've got no binocular vision (like me). In fact, they're friggin' _impossible_.

(I have a hell's brew of retinopathy (it's dormant, but I've only got half the visual field in my right eye), a fovea in the left eye that's held in place by a clip (say goodbye to fine detail!), myopia, astigmatism, _and_ now a forty- something's presbyopia. My vision for close-up detail work is terrible, I have to rely on paralax for judging distances when driving (guess who doesn't drive at night?) and threading a needle has been impossible for me since I was 25. Even the diamond-wire needle threaders barely help. This is the first thing I've seen that might actually work!)

<comment><USER12> Actually binocular vision doesn't help - I almost always close one eye when threading needles. I need to wear reading glasses now though, getting too old to see small stuff clearly enough. (I cheat - I got some extra strong reading glasses for close work like threading needles and removing splinters (3 diopter, normally use 1.0 to 1.5 for reading) - they are a big help.)

</comment></comment></comment><comment><AUTHOR> It's quite extraordinary that this hasn't been done before.

I guess most people have thought about it but probably thought, there probably is a reason for this.

Just goes to show, never assume things can't change.

<comment><USER13> They though of this: [http://blog.craftzine.com/archive/2007/06/self_threading_nee...](http://blog.craftzine.com/archive/2007/06/self_threading_needles_by_clov.html)

<comment><USER14> Moreover, the first comment on that page points out that the self-threading needle is ill-suited for typical sewing because the eye is so big. And the side-threading needle in the article seems to have an even larger eye.

</comment></comment></comment><comment><USER15> It reminds me of surgical needles, which actually is still continuously innovated until today!</comment>


Show HN: Horcrux, a Mac app to back up or move your IMAP emails - <AUTHOR> http://thehorcrux.com/?hn Hi,
Creator here. I'm sort of reposting the same thing from about 208 days ago. The first version kinda sucked. I guess this is my first lean not-really-a startup experience.
The new version is much better. http://thehorcrux.com/why-i-built-horcrux-app/
Let me know what you think,
Here are some promo codes: 97HNR6HW4EPH K9R7KTWPTJJ6 WPM3MK4WXNHY 3P7N9RNPF4M4 3N49NP9P7TR6
Cheers, Suhas Sharma <comment><USER2> The people here who use the likes of Mutt and Alpine are also rather comfortable with IMAP backups obviously.

For a more gmail focused crowd there is the excellent Gmvault to consider: <http://gmvault.org/>

I'm not sure who are the people who can't use the above solutions and yet understand what IMAP is and that backups are desirable AND be willing to spend $15 for a Mac App Store app. Food for thought.

<comment><USER3> I tried gmvault and found it lacking.

I switched to CloudPull ($10) from <http://goldenhillsoftware.com> and it's by far the best Google backup tool I've found.

It supports Gmail, Google Contacts, Google Calendar, Google Drive/Docs, and Google Reader. The app backs up a max of 10 accounts in the background and all the data is available in standard file formats.

<comment><USER4> Thank you for mentioning this; I just bought it, it seems to work wonderfully, and I like that they save the data in standard formats.

</comment></comment></comment><comment><AUTHOR> Hi,

Creator here. I'm sort of reposting the same thing from about 208 days ago. The first version kinda sucked. I guess this is my first lean _not-really-a_ startup experience. The new version is much better. <http://thehorcrux.com/why-i-built-horcrux-app/>

Let me know what you think,

Here are some promo codes (Mac App Store):

97HNR6HW4EPH K9R7KTWPTJJ6 WPM3MK4WXNHY 3P7N9RNPF4M4 3N49NP9P7TR6

Also, I haven't done any marketing really. If you want to blog about it and need promo codes be sure to mail me at suhas AT thehorcrux

Cheers,

Suhas Sharma

<comment><USER5> Hi Suhas,

First off, I was lucky enough to use one of the promo codes, thanks! This exactly what I've been looking for. I'm trying my best to leave gmail, but all my emails are stuck on big G's servers. Thus, causing me login just to search old messages.

My only problem so far was the fact that I use Two-Factor Auth. Once I remembered this, there was no problem, haha. I just went and generated a new app specific password. But, I forgot, and failed three or four times trying to use my regular password. So no problem with the app. Maybe just adding a reminder to your support docs, or display a tip in the app after several failed attempts to help forgetful users like me. =)

<comment><AUTHOR> Thanks,

Updated: <http://thehorcrux.com/frequently-asked-questions/>

</comment></comment></comment><comment><USER6> Great web site. It's very clear about what your software does.

At first I thought "but Time Machine already backs up my email, and Mail.app can already copy email to a new account." But then I realized there's a niche for everything: not everyone uses Mail.app; not everyone uses Time Machine.

There's a good lesson there: just because a problem is solved doesn't mean there isn't still a niche market still available.

<comment><USER7> Plus, Mail.app has a bug that corrupts E-mails with attachments. Just google for it, you'll find dozens of reports going back several years. This means that your local Mail.app storage is not a reliable backup.

</comment></comment><comment><USER8> Shameless Plug: you can continuously backup all your Google email to Dropbox, Google Drive, Box, SugarSync, or SkyDrive via cloudHQ (<http://cloudHQ.net>). We support txt, html, or eml export. You can also just backup certain types of attachments. And backup is continuous and in real time - as soon as a new email is added it will be transfered and backed up to your Dropbox/Box/Google Drive folder.

Here is a short video on how to setup this: <http://vimeo.com/65168186>

</comment><comment><USER9> This is similar to a product I've been thinking about recently. Is there anything I can use to take emails from a server I trust (my company server say) encrypt them and move them to a server I don't necessarily trust (gmail for instance) and have the emails decrypt with the standard gnupg extensions that are available for most email clients?

<comment><USER10> If you don't trust the server and you need to use IMAP, remember the headers won't be encrypted, so from+to+subject+date lines (+ approximate message size) would "leak", at the very least.

</comment></comment><comment><USER11> Isn't the name "Horcrux" trademarked by JK Rowling? Seems like a bad idea to name your app after that.

<comment><USER12> Yes, even if it's not a registered trademark, it is trading on someone else's work. Even if it's not in a industry (in terms of legal trademark enforcement), it's unfair to those who worked hard to put it in the mind of the public.

<comment><USER13> Well, on the other hand, there are loads of products named after pop culture references.

</comment></comment></comment><comment><USER14> Horcrux is also the name of an excellent backup utility that's convenient for backing data up to multiple locations [1].

[1] <http://chrispoole.com/project/horcrux/>

</comment><comment><AUTHOR> Update: Just got ycomibinated. Returning timeouts. Google Cache: [http://webcache.googleusercontent.com/search?q=cache%3Atheho...](http://webcache.googleusercontent.com/search?q=cache%3Athehorcrux.com&aq=f&oq=cache%3Athehorcrux.com&aqs=chrome.0.57j58.1507j0&sourceid=chrome&ie=UTF-8)</comment>


Ask HN: What do you think about cloning startups? - <AUTHOR>

Let's say a startup company is offering a service to other companies in U.S. and becomes succesful. I want to do the same work they do in U.S. in France.<p>Both in legal and ethical terms do you think this is a good thing to do? <comment><USER2> Ethical? Not a business term... juste forget it if you want to succeed... ;)

Legal? Well... it's all about (international) patents. Is the business of the startup patented? Or even patentable? Seem not realistic (but some folks patented the "one-click-buy button")... Will you copy the tools or methods (that are more easily patentable... but need to be patented "worldwide"... ;) )? Or can you try something more "french" ?

All in all, your problem will be to move faster and be better for your market than teh startup you're copying. Because they will come if they succeed, sooner or later. Good luck :)</comment>


Dolphins blowing bubble rings, and playing with them [video] - <AUTHOR> http://www.metacafe.com/watch/1041454/dolphin_play_bubble_rings/

<comment><AUTHOR> I realize that this is hardly traditional HN fair, but watching amazed me. I had no idea that bubble rings could exist, or that dolphins would play with them like this.

<comment><USER2> I'm more amazed by the fact that dolphins mastered the technique of creating bubble rings. And if the description in this video is to be believed, they also pass on this technique to other dolphins.

<comment> a-priori Individuals of many species are capable of copying the behaviour of another individuals (usually of the same species) by observation. The other primates are the most well-known mimics ("monkey see, monkey do"), but most mammals and birds do this. We like to think we're special in this respect, but we're really not.

Birds, for example, learn features of their songs from other songs they hear. Over time, these features accumulate in a bird's repertoire, and even develop into a dialect for an area. See <http://en.wikipedia.org/wiki/Bird_song#Learning>

Another example in birds is the behaviour of crows in Japan, who have learned to crack nuts by leaving them in traffic at intersections, waiting for the cross signal, then retrieving them. See <http://www.youtube.com/watch?v=BGPGknpq3e0>

This is the first example I've heard of a "play" behaviour being learned, but what can I say? The life of a captive dolphin would be boring; a new way to pass the time would be a useful thing to know.

</comment></comment></comment><comment><USER3> Inventor's machines make bubble rings:

<http://www.deepocean.net/deepocean/index.php?science09.php>

</comment><comment><USER2> Amazing; For a moment, I thought it's a hoax. A quick googling has thrown up all the details including the physics behind it though.

</comment><comment><USER4> could someone postulate on the physics of this? What causes them to remain stable... I've never seen a bubble not float upward...

<comment><USER5> The physics of dolphin bubble rings and how to make them yourself:

<http://www.deepocean.net/deepocean/index.php?science09.php>

<comment><USER6> Wow! This is worth diving for!</comment></comment></comment>


Bloog, open-source homepage/blog app for Google AppEngine - <AUTHOR> http://bloog.billkatz.com

<comment><USER2> If some actively develops it, we all can get free hosting!</comment>


Herbal remedies embraced by naturopaths, alt med widely linked to liver cancers - <AUTHOR> https://arstechnica.com/science/2017/10/herbal-remedies-embraced-by-naturopaths-alt-med-widely-linked-to-liver-cancers/ <comment><USER2> Related, there was an amazing article, from Buzzfeed, of all places that did a deep dive into one of these supplements. [https://www.buzzfeed.com/stephaniemlee/apricot-seeds- cancer?...](https://www.buzzfeed.com/stephaniemlee/apricot-seeds- cancer?utm_term=.ldBBM2RWj#.jkQ6j1YBl)

</comment><comment><USER3> Remember folks - correlation does not imply causation.

"linked to" != "caused"

<comment><USER4> True. The article does mention one thing that concerns me more: the lack of standards in the formulations of traditional medicines: _[M]any AA-containing herbs may be hidden in traditional formulations, mislabeled, or not clearly labeled. Studies done on products found to contain AAs show that their levels are extremely variable and can sometimes be very high._</comment></comment>


Jason Calacanis On How To Get PR For Your Startup: Fire Your PR Company - <AUTHOR> http://www.alleyinsider.com/2008/8/jason-calacanis-on-how-to-get-pr-for-your-startup-fire-your-pr-company

<comment><USER2> If there's one thing Calacanis knows how to do, its PR. I don't wanna be mean, but honestly, how else does something like Mahalo get that much funding and coverage?

<comment><USER3> It pains me to admit this, but Mahalo is doing well by any quantitative measurement.

<comment><USER4> How are you measuring it?

AFAICT, Mahalo is Yahoo circa 1997. Perhaps the market has made this old business model relevant again, but I don't see how.

Mahalo never comes up in my Google results. Where is their traffic coming from?

<comment><USER5> I've had Mahalo pop up for several recent news topics.

I suppose its a bit hit and miss right now.

</comment></comment></comment></comment><comment><USER6> But that's stuff that people like Calacanis and Loic Lemeur HAVE TO DO.

They aren't engineers, or designers, so spreading the word on the product, and establishing contacts, it's pretty much the best they can do to help their startup instead of sitting around all day watching others work.

Nonetheless, social skills, or the simple ability to stand out fast, do play as much as big a factor in the success of an endeavour as engineering.

<comment><USER7> more importantly

He points out an easy way to get people to like you. Buy them food. It has worked for me (though I haven't tried it on the scale he speaks of.)

</comment></comment><comment><USER8> I don't normally agree with a lot of things Jason says, but I am 100% behind him on this one. From day one, I've tried to talk/walk/eat/sleep/breathe the way he describes a CEO should be. Not because of him, but because it seemed like the right thing to do if you're passionate about something.

They say the proof is in the pudding? When we started 8 months ago, I didn't know a single person in this industry or any journalists or anything about how startups worked. When we launched last week, we were on every bigtech blog, BBC, Reuters etc. How? Perserverance and creativity. That's really all it takes, and I'll gladly share all my tips/trials/failures on my blog. Or e-mail me if you have questions.

Whatever you do, don't hire a PR agency.

<comment><USER9> Congrats! I have read your blog post on <http://blog.newscred.com/> , but if you have more tips they would certainly be welcome.

<comment><USER8> Thanks man. Will certainly post more details. Drop me a note if you have any specific questions.

</comment></comment></comment><comment><USER10> I have to say, this seems like really good advice, it's in line with most of what I have experienced, except for John Markoff responded to my first email.

<comment><USER11> It's great advice.

</comment></comment><comment><USER12> Calacanis gives good advice. However, many technically-focused founders may find it hard or distracting/distasteful to pursue the hyper-social, big- swagger style he advocates.

So take solace in PG's ViaWeb experience: "Our startup spent its entire marketing budget on PR: at a time when we were assembling our own computers to save money, we were paying a PR firm $16,000 a month. And they were worth it." [1]

Times have changed with blogs and other incremental, low-cash-outlay ways to build buzz. But you can always hire talent to help where you're weak.

[1] <http://www.paulgraham.com/submarine.html>

<comment><USER13> Times haven't changed that much for people whose startup is not aimed at the tech-savvy crowd. Ours being primarily sports-related, blogs are simply not where our potential userbase are reading.

</comment></comment><comment><USER14> Anyone heard of Nathan Barley?</comment>


Announcing HTTP/2 support for all Azure CDN customers - <AUTHOR> https://azure.microsoft.com/en-us/blog/announcing-http-2-support-for-all-azure-cdn-customers/ <comment><USER2> Azure has 3 CDN products from what I can tell. They have semi-overlapping feature sets, though I guess now HTTP/2 is taken care of. We were using one of them and experienced frequent timeouts. Switching to another fixed it. They don't explain why they have these different products in the first place, either.

<comment><USER3> That's what I really don't like about Azure. They seem to have multiple differently named services that seem to basically do the same thing (Azure Service Bus/Azure Storage Queues is one example that comes to my mind)

Also, the Azure Portal is ridiculously bad and slow.

<comment><USER4> Azure storage queues are basically "queues lite" while the service bus is more full featured, think rabbitmq.

And the portal does indeed suck. The cli, on the other hand, is top notch.

<comment><USER3> Yup, but this took me way too long to figure out.

Sadly this goes for a lot of Azure services and all the enterprise-buzzword laden documentation doesn't make that easier

<comment><USER4> You should look at the various official blogs around Azure, they're much more down-to-earth and buzzword free than the formal docs.

</comment></comment></comment></comment></comment><comment><USER5> When Verizon enabled this they forgot to test with Firefox ESR. So they disabled enough ciphers that Firefox ESR could no longer connect to their servers. We reported it to them and they rolled back and disabled HTTP2 the next day. Guess they finished testing now.

</comment><comment><USER6> No mention of HTTPS, but don't all the current browsers, iirc require HTTPS for HTTP/2 support? Which would be the bigger boost, if they allocated certs (similar to letsencrypt) for the azure cdn. Or do they just require a cert setup for http2 support?

<comment><USER7> HTTP/2 doesn't work without HTTPS.

The standard technically allows non-TLS HTTP/2, but most clients, and I'm guessing, servers, don't support non-TLS HTTP/2\. nginx, for example, doesn't support non-TLS HTTP/2.

<comment><USER8> Nginx certainly supports unencrypted HTTP/2\. I'm using it for my personal website to have Haproxy as a separate TLS terminator. Mainly so that my cert renewal scripts still work if there isn't an old cert available.

<comment><USER7> I tried this a couple of days ago as I set up a new server, and when I enabled HTTP/2 on non TLS server blocks, my clients would just try to download a binary blob instead of showing the page I expected.

I fixed it after reading the following: [http://serverfault.com/a/792857](http://serverfault.com/a/792857).

I admit I didn't look into it any further. Apologies if I spread wrong information.

<comment><USER8> That's a client issue, not an Nginx issue. Try accessing it through an stunnel tunnel, for example.

That said, AFAIK, the protocol negotiation works at the TLS level, so non-TLS servers need to listen on different ports for 1.1 and 2 if you want both.

</comment></comment></comment></comment></comment><comment><USER9> How does this compare to other CDNs, and to Amazon, Google's offering? I thought HTTP/2 support became standard quite a while back.

<comment><USER10> Amazon added it only recently for some properties – CloudFront was the latest, last September [1]

And Google has had it since forever [2]

That said, while HTTP/2 is now out, IPv6 is still a sad story, especially with AWS.

        ________

[1] "New – HTTP/2 Support for Amazon CloudFront" [https://aws.amazon.com/blogs/aws/new-http2-support-for- cloud...](https://aws.amazon.com/blogs/aws/new-http2-support-for-cloudfront/)

[2] "Full Speed Ahead with HTTP/2 on Google Cloud Platform", [https://cloudplatform.googleblog.com/2015/10/Full-Speed- Ahea...](https://cloudplatform.googleblog.com/2015/10/Full-Speed-Ahead-with- HTTP2-on-Google-Cloud-Platform.html)

We're not breaking any news here, because Google Cloud Platform support for SPDY has been enabled for many years, and support for its successor (HTTP/2) was enabled earlier this year.

<comment><USER11> > That said, while HTTP/2 is now out, IPv6 is still a sad story, especially > with AWS.

The problem I see with IPv6 is that it very much encourages a unique, even static address for each device on your network, which is a privacy and security hole that NAT addresses for IPv4. So I'm not exactly dying to use it if I can avoid it.

<comment><USER12> > The problem I see with IPv6 is that it very much encourages a unique, even > static address for each device on your network

this is what ipv6 privacy addresses[1] are for! they are on by default on Windows, for Linux you need change a sysctl

[1]: [https://en.wikipedia.org/wiki/IPv6#Privacy](https://en.wikipedia.org/wiki/IPv6#Privacy)

<comment><USER13> They're the default on OS X as well for recent versions

</comment></comment></comment></comment></comment><comment><USER14> It's interesting that http2 server push is not supported. Any reason why? Server push is a weird feature but very useful and popular.

<comment><USER15> Probably because it requires sockets to be kept open. Makes it a lot easier to DDOS the server (because you need to maintain HTTP + TCP state), especially at CDN traffic levels.

Too bad IPV4 NAT has made open ports on client machines nearly impossible, otherwise maintaining this connection would not be required.

<comment><USER16> > Probably because it requires sockets to be kept open.

HTTP2 requires kept-open sockets, not server push. HTTP1.1 already supports keep-alive sockets btw, and CDNs have survived that DDoS attack :)

</comment></comment></comment><comment><USER17> Does HTTP/2 support client side certificates?

<comment><USER18> I think that's handled separately during the connection phase.

</comment></comment><comment><USER19> Totally unrelated, but when is Microsoft going to rename Azure into something else. The range of pronunciations, even in the U.S., is so broad.</comment>


How to slice your code into continuations - <AUTHOR> https://dpiponi.github.io/cont.html <comment><USER2> The code snippet doesn't make sense to me:

        a = 1/(1+7)
        b = 2*a+sqrt(a)
        c = atan(b)/(1+c)
        return c+2*d

Note that the assignment to 'c' depends on it already having a value?

<comment><USER3> I suspect the 2nd "c" is "b" if you look a bit further the continuation. But as for the first "d" in return, no idea.</comment></comment>


Pathod: A pathological HTTP daemon for testing and torturing client software - <AUTHOR> http://cortesi.github.com/pathod/

<comment><USER3> Drat - this story is just a tad premature. A brand new release of pathod will be out next week, including a publicly accessible pathod instance, pathoc (pathod's evil client-side equivalent), and a huge range of other improvements and bugfixes.

<comment><AUTHOR> apols

<comment><USER3> No, thanks for posting! Just upvote again when you see the release notice next week. :)

</comment></comment></comment><comment><USER4> This is a similar tool as <http://httpbin.org/> which was written by Kenneth Reitz to test python request <http://python-requests.org/>. I like that this is written in tornado thanks for sharing.

<comment><USER3> One difference is that pathod (and pathoc, the client-side equivalent) works hard to make it possible to violate the HTTP protocol specs at will, in pretty much arbitrary ways. The next version of pathod also moves away from Tornado to let it take more direct control of comms.

<comment><USER4> Ok the client sounds really interesting to me. I am goung to play with it a bit.

</comment></comment></comment><comment><USER5> bane is a similar tool that pathod-interested users might be interested in.

<https://github.com/danielwellman/bane>

From the readme: "If you are building an application, you may depend on third- party servers or web services for your data. Most of the time these services are reliable, but at some point they will behave in an unusual manner - <USER2> as connecting but never respond, sending data very slowly, or sending an unexpected response. To ensure your application survives these scenarios, you should test your application against these bad behaviors. Bane helps you recreate these scenarios by standing in for your third-party servers and responding in several nefarious ways."

</comment><comment><USER6> Really cool!

A year or two ago, I was working on some automated deployment tools that basically called a bunch of Rest APIs. As I discovered how unreliable the API calls could be at times, I ended up writing something kind of similar (although very application-specific to this) to be used as part of my unit tests for it - it helped immensely.

One thing that would be nice is if I could pre-define reactions to certain requests - ie, some sort of way to specify that when you get a POST at uri /add with a content-type of application/json, I want a 500 error (or maybe I want a 500 error 5% of the time) - rather than having to specify what I want in the actual request. Is this something your client library will make possible?

<comment><USER3> This is already covered. Have a look at the anchor feature for pathod. For instance, starting pathod like this:

pathod -a /foo=200:b@100

Will result in an HTTP 200 response with an body of 100 random bytes if you hit the path /foo.

</comment></comment><comment><USER7> I like the idea, but does the syntax have to be that terse? It's quite expressive but less readable than code (or JSON/YAML), and I'm not sure why that's useful in this context.

<comment><USER3> Yes, this is something I've pondered too. The language is ugly for a number of reasons - not least the constraint of avoiding syntactically significant characters for both URLs (because of pathod) and shells (because of pathoc).

At the moment, my stance is that the syntax needs to be as terse as possible so that it can comfortably be specified in a URL, or in a snippet in a unit test. In the current master, there's a variant syntax that lets you use newlines (or arbitrary whitespace) wherever the more compact syntax uses colons. In time, I could see an argument for also expanding the single-letter abbreviations in this mode to make a more verbose syntax. There's also no reason why we couldn't add a way of describing requests by manipulating an object, which then compiles down to the request language.

Anyway, this is all still evolving - if you have ideas for keeping the language compact but making it less like line-noise, drop me a line.

</comment></comment><comment><USER8> What's the practical usage scenario for this? Would it be only used by http client library developers, or is there a broader audience?

<comment><USER3> I started work on pathod to improve the testing of mitmproxy (<http://mitmproxy.org>). It's since become a very capable Swiss army knife with many creative uses. I now routinely use it in pen tests (it's great for exploit delivery), and pathoc has become quite a capable tool for simple fuzzing and stress testing. I'm working on the next release docs as we speak, and I'll try to document a range of different use cases there.</comment></comment>


Another Day in the Life of a Netflix Engineer - <AUTHOR> https://www.youtube.com/watch?v=aWgtRKfrtMY <comment><AUTHOR> Netflix runs way more than 100K EC2 instances and more than 80,000 CPU cores. They use both predictive and reactive autoscaling, aiming for not too much or too little, just the right amount. Of those 100K+ instances they will autoscale up and down 20% of that capacity everyday. More than 50Gbps ELB traffic per region. More than 25Ggps is telemetry data from devices sending back customer experience data. At peak Netflix is responsible over 37% of Internet traffic. The monthly billing file for Netflix is hundreds of megabytes with over 800 million lines of information. There's a hadoop cluster at Amazon whose only purpose is to load Netflix's bill. Netflix considers speed of innovation to be a strategic advantage. About 4K code changes are put into production per day. At peak over 125 million hours of video were streamed in a day. Support for 130 countries was added in one day. That last one is the kicker. Reading about Netflix over all these years you may have got the idea Netflix was over engineered, but going global in one day was what it was all about. (via high scalability link excerpt)

</comment><comment><USER2> Thanks for posting this. For those who are interested in other #awsreinvent sessions, here is a compiled gist from stevenringo - [https://gist.github.com/stevenringo/5f0f9cc7b329dbaa76f495a6...](https://gist.github.com/stevenringo/5f0f9cc7b329dbaa76f495a6af8241e9)</comment>


Bloat Does Not Explain the Rising Cost of Education - <AUTHOR> https://marginalrevolution.com/marginalrevolution/2019/05/bloat-does-not-explain-the-rising-cost-of-education.html <comment><USER2> Seems like there's a parallel with the rising cost of US healthcare. In both cases the consumer (student/patient) is insulated from the cost (easy and prevalent student loans + general belief that college is a smart investment/health insurance) of the good (college education/healthcare).

I remain pretty surprised by how many American families are willing to pay twice as much for not-bad smaller private colleges over not-bad huge public universities based on vague ideas of fit and feel. I think you have to get pretty far up the rankings to get to a point where a private college honestly makes more sense than the honors program at your flagship state school.</comment>


Ryan Dahl: "Node.js Roadmap" (48 min.) - <AUTHOR> http://www.yuiblog.com/blog/2010/11/30/video-yuiconf2010-dahl <comment><USER2> Is there a text summary of the node.js roadmap anywhere?</comment>