Do programmers need a union? - <AUTHOR> http://stackoverflow.com/questions/9773/do-programmers-need-a-union

<comment><USER2> I think it's reasonable to distinguish "union" (collective bargaining) and "professional association" (which is what I understand the SO poster is talking about).

It's pointless for programmers to do collective bargaining - our skills are simply too diverse. But to have a professional association that can create standard contracts, assist it's members in negotiating out of stupid IP clauses, perhaps create some certifications etc. isn't a bad idea.

<comment><USER3> I think there are some companies at which a "company union" (something traditional labor activism doesn't like) could be useful. Essentially, all the employees in some particular class at a particular company (say, all the electrical engineers) negotiate some subset of employment terms as a group. It helps to level the playing field, because when you're one person negotiating individually against a corporation whose managers/staff are acting collectively on the other side, you're at a bit of a disadvantage--- it's very hard to negotiate away stuff that's embedded in corporate policy (say, noncompetes) just as an individual trying to get your own contract modified. Much easier if a large group of people together threaten to leave _en masse_ if the terms aren't changed. This can sometimes be done without a formal union though; sometimes informal employee organizations can wield enough "soft power" to get objectionable things changed, especially if it's at an employer who's sensitive to morale and image.

It's a bit less of a problem if you're at a company, usually a smaller one, where you can actually negotiate one-on-one with a manager or boss who has individual authority to negotiate a wide range of terms. Then you might be able to get objectionable terms removed, if the manager's reasonable and you're willing to compromise on other things (say, accept lower pay for more favorable terms). But if the manager's highly constrained by higher-ups and policy, you don't have a real negotiation.

<comment><USER4> _But if the manager's highly constrained by higher-ups and policy, you don't have a real negotiation._

Negotiation begins with shopping around. Any _particular_ company may be unwilling to negotiate with you. That doesn't mean you can't negotiate, it just means you need to move on.

Incidentally, big companies do respond to these issues. When people start leaving in droves, hiring policies are reviewed, and changes are made (or the company dies).

</comment></comment></comment><comment><USER5> No. More granularity in capitalism. A lot of dysfunction gets perpetuated because it's hidden in the bowels of big, bureaucratic institutions. Sunlight is the best disinfectant.

<comment><USER6> Not sure I follow. Couldn't you just as well argue that unions bring bad employer practices to light?

<comment><USER5> Who brings bad union practices to light? Commerce exposes this sort of stuff. The more commerce is used, as opposed to invisible, internal mechanisms, the less unions have to do. Not all unions are bad, but not everything they do acts to increase transparency.

</comment></comment></comment><comment><USER7> Yes, certain types do. Game programmers come to mind. Not sure everyone else needs them though, but there are likely others who do.

Additionally, less onerous IP terms for employment, standard non-competes and a reduction of the idea of absurd overtime being the norm are all good things.

California can thank their non-compete/IP laws for part of Silicon Valley's success.

<comment><USER4> Why do game programmers need a union?

As for IP terms/noncompetes/overtime, I'm not sure why you need a union. Why not just negotiate for that yourself?

<comment><USER7> >As for IP terms/noncompetes/overtime, I'm not sure why you need a union. Why not just negotiate for that yourself?

Because certain portions of our field have jobs that people are willing to be whipped and beaten for if they can get the jobs (entry level game programming, I'm looking at you).

There isn't anything about programming that makes it reasonable to require unpaid overtime exemptions, etc, unlike most other fields have. It's merely poor management demanding it.

Game programming, especially, would be nice, as there is no reason to make games come out faster, they're _pure entertainment_ without just recompense for hours worked. A heavy preponderance of unions would deescalate the field, making everyone do less over a given period of time (or pay people much better than they do for the overtime they demand).

<comment><USER4> Game programmers are presumably compensated with fun.

There is nothing preventing a game programmer from quitting to work at a bank, a rails shop or google. If a game programmer stays, it's because he/she enjoys game programming so much that it's worth the long hours and poor pay.

I'm not sure why you consider unions reducing productivity to be a good thing.

<comment><USER7> Are you aware of the fact that if we had 1992's productivity, there would be full employment in the US right now? You know when your boss lays off 1/3 the team, then expects you to do the same work: That's productivity!

Productivity is not god. Productivity does not trump the health of the people who work there. Programming jobs currently do horrible things to the health of IT's practitioners, especially ones with stupidly long hours, including game programming.

Saner hours would employ more people (or the games would do less). No one can say "games are essential enough to damage people's health over" but guess what: their development largely damages their health of their programmers.

<comment><USER4> Are you aware of the fact that if we had 1992's productivity, we would all be 30% poorer (and living 2.8 years less) than we are today?

<comment><USER7> I don't see your numbers: [http://en.wikipedia.org/wiki/File:United_States_Income_Distr...](http://en.wikipedia.org/wiki/File:United_States_Income_Distribution_1967-2003.svg)

And productivity doesn't drive medical research, so:

>(and living 2.8 years less)

is unlikely

<comment><USER4> [http://www.google.com/publicdata?ds=wb- wdi&met=ny_gdp_mk...](http://www.google.com/publicdata?ds=wb- wdi&met=ny_gdp_mktp_cd&idim=country:USA&dl=en&hl=en&q=gdp+usa)

You can do the inflation calculation yourself. Income is a poor measure since it excludes non-wage compensation (e.g., medical spending) which have gone up significantly relative to income.

I'm not sure why you conclude life expectancy went up due to medical research. Wealth increases life expectancy, but not due to medical spending.

<comment><USER7> Your graph doesn't show anything about actual wages, or wages with the excluded non-wage compensation you're speaking of.

GDP growth is not related to income growth of normal people. For the last 20 years, something like 85% of the growth has gone to the very very rich. It was only really in the postwar period did the middle class ever really grow large (in that period of time we had the only factories in the world), and income growth has been pretty stagnant since the 80's.

According to the US Census Bureau, the median is "considerably lower than the average, and provides a more accurate representation."

"While the median household income has increased 30% since 1990, it has increased only slightly when considering inflation. In 1990, the median household income was $30,056 or $44,603 in 2003 dollars. "

Sources: <http://www.demographia.com/db-stateinc2000.htm>

I bring you to the censuses conclusions about our largely stagnant american wages (which peaked in 1999): <http://www.census.gov/prod/2004pubs/p60-226.pdf>

Most of that GDP is going to very very rich people.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> While I find a lot of the author's ideas useful, there's quite a bit of emphasis on certification. I think certification of programmers tends to be a mistake in that I've never heard of a credential (CS degrees included) that actually serves as substantial evidence that a person can produce usable code on demand. I find the comparison of programming to writing[0] useful here: passing a grammar test is not evidence that someone can write articles, essays or novels. When hiring a writer, one should examine samples of that person's writing.

[0]This is not my idea, but I can't find the original source to cite it.

</comment><comment><USER6> I would join a union that lobbied against, say, overreaching non-compete agreements and against age discrimination (a big problem in this industry).

But the life of a programmer is typically not so bad to start with.

<comment><USER9> I would agree with you on the potential benefit of a lightweight union that existed only for specific purposes, e.g. negotiating health care or lobbying on my behalf. A traditional labor union would, IMO, entail too much bureaucratic inertia to be of much utility to anyone in the field.

Besides that, I have to ask how long this collective experience of programmers enjoying happy lives will last. My general observation is that the accepted value of that labor is cheapening rapidly, whether from scarcity of jobs, glut of available talent, or the general difficulties in remaining competitive when the skillset is often globally portable.

My friend who basically left his engineering field to make more money cleaning pools strikes me as a demonstrative example.

</comment></comment><comment><USER10> This has to be one of the worst ideas I've ever heard. Unions breed laziness and rob its members of motivation to work because the union will always protect them to the most dizzying degree.

Simply look at this flowchart to see the steps required to fire a New York City teacher. It is outrageous. <http://commongood.org/assets/attachments/firing_chart.pdf>

Unions have so much leverage over a company that they negotiate themselves out of a job. There is a reason GM went bankrupt, there is a reason the public school system is failing. Why the hell would I want to join a programmer's union?

<comment><USER11> Totally agree with you. Unions are useful for those who want to put in their '20' years and then live off of pensions, work boring jobs, or need safety guarantees.

From my experiences, programmers are dynamic, inventive, independent, and the type of people who would be willing to stay up two days straight to get done what they need to be done. Would you really want a union around to tell you how many hours a week you could work? Could you imagine a start-up hiring unionized programmers?

<comment><USER12> When a programmer is willing to stay up two days straight to get done what they need to be done, that's one thing. When the programmer's company expects and demands that the programmer work 80-100 hours per week for six months at the 40 hour per week payrate because the management doesn't understand or care about estimation, scheduling, and sustainable productivity, that's another.

I don't want a union that tells me I can't work more than 40 hours a week, but I wouldn't mind a union that forces my company to pay me for overtime when it's necessary. In the case of a start-up, that payment can be in the form of something deferred, like partial ownership of the company. As a start-up programmer I'm willing to take on some of the risk that the owners do, and contribute my time and effort towards making the start-up a success. But I expect to be rewarded for that too.

The other thing I'd like a union for, and maybe this is more of a professional organization with some teeth, is to enforce some basic standard practices. I'm a mechanical engineer by training, and I find it appalling how seldom basic engineering practices are followed in the software development world. There's a wide variety of tools, practices, and processes in software development so I wouldn't want anything specific to be required, but some things are generic:

\- Use version control

\- Have and use a requirements definition process

\- Have and use an estimation process

\- Have and use a scheduling process that tries to keep a sustainable level of productivity

\- Provide developers with opportunities to improve their skills (as simple as a book budget and company time to study, up to in-house or out-of-house training)

\- Provide a career path, including both management and non-management tracks. (Programmers who don't want to manage shouldn't be stuck in dead-end positions.)

A "professional organization with teeth" could be an organization that developers can join, which could audit employers work practices at the employers request. A positive audit could lead to a certification of that employer, which could make it easier for the employer to hire better developers from among the ranks of the organization. The organization could also provide training and certification to the developers for basic software engineering practices, relevant legal practices, etc, making them more appealing to the employers.

<comment><USER13> > I wouldn't mind a union that forces my company to pay me for overtime when > it's necessary. In the case of a start-up, that payment can be in the form > of something deferred, like partial ownership of the company.

You don't need a union to force your company to pay you overtime. You just the willingness to walk when you don't like the terms.

Note that "willingness to walk" is all that the company has.

> Provide a career path, including both management and non-management tracks. > (Programmers who don't want to manage shouldn't be stuck in dead-end > positions.)

Ah yes - the geek director job, handed out as patronage.

People make it to real higher positions by providing the relevant value, not by coming from a particular background. Mandating folks with a background just leads to a "make work" position.

</comment></comment></comment></comment><comment><USER14> Union's are only a good idea in situations where collective bargaining is valuable.

I believe that programmers already have such a unique skill, that is extremely un-commoditized, that it seems unnecessary.

</comment><comment><USER15> It's been a few years since the last time (pre-HN, even), but this idea keeps coming up over and over for major discussion in the programming world. Every time, there's a big discussion but the unionists never seem to get enough traction or have enough backbone to get it going.

I can't see it happening, because most programmers are savvy enough to negotiate their own terms with employers on an individual basis if they care enough. Programmers, as a group, aren't usually as ignorant as groups who are protected by unions.

</comment><comment><USER16> A professional association that includes legal assistance in the event that a programmer is sued for patent infringement would be a great thing.

There is something similar in the home school community: An organization that in addition to providing general support, coordination, recommendations, etc., also has professional attorneys specializing in that field, and who will defend their members in court when necessary.

</comment><comment><USER17> So long as employers are free to fire anybody for any reasons unless it is written in a contract specifying what reasons they can get fired. So long as people have the ability to work without being employed by a union.

If people wants to form a union, fine with me, but don't drag me into it.

</comment><comment><USER18> HN'ers would derive more benefit from an agent

</comment><comment><USER19> No

</comment><comment><USER20> No. Unions are pure evil.

<comment><USER21> You have unions to thank for this thing called 'The Weekend'. Pure evil right there. Let's not get out of hand.

<comment><USER20> No I don't, if I don't want to work on the weekend, I don't.

It looks like possibly the Unions had something to do with weekends in the US, so perhaps you're thanking them for that. I think globally the practice of resting on the sabbath goes slightly further back.

Everyone has a choice. Either they decide to take a job or they don't. Unions are all about blackmail and holding employers to ransom.

Unions are sort of a fun idea, but they end up as a 'them' vs 'us' mentality which quickly escalates to strikes and blackmail.

<comment><USER7> You have to look at the history of unions in the UK as well then if you think it's only in the US they've done good: <http://www.unionhistory.info/timeline/timeline.php>

Strikes hurt the strikers far more than the negotiations they are an alternative to. No one wants strikes.

<comment><USER20> I absolutely do not believe Unions to be a good thing. They're about bullying and mob mentality. Sorry, you won't convince me otherwise :/

If you decide to strike, you should be sacked. Simple. You've broken your side of a contract to work.

Funny how the site there kinda glosses over the disastrous Union woes of the 70s, how the country was brought to its knees.

Of course I'm not a Labour Party supporter at all, which is perhaps another reason I dislike Unions. The two go hand in hand. The Labour party is after all, bankrolled, and totally controlled by Unions. I disagree completely with the philosophies of both of them. They're about waste. Unfairness. etc etc

<comment><USER7> What did the chartist movement come from? What motivated them? What did Lords, factory owners and government officials do to workers before eventually succeeded?

Do you know the answers to the above? Until you do, you're missing out on important parts of British history.

I do not think unions are an unadulterated good, and I think many times the law goes silly trying to make it hard for companies to weasel out of their agreements (which is where many of the laws benefiting unions come from), but to act like they don't ever do good things, you really have to have not looked at what Great Brittan was like before they came about.

You're looking at something without the perspective of history when you look at the state of modern labour without looking at it's history and thereby missing 90% of their reasons for doing what they do the way they do it. Lots of the structures and behaviors are there to combat the shenanigans of the companies employed against the workers in the past.</comment></comment></comment></comment></comment></comment>


Practices for writing high-performance Go - <AUTHOR> https://github.com/dgryski/go-perfbook <comment><USER2> Thanks for this, I just started getting into and writing Go code.

I have a question that I don't remember being answered in any tutorial I've done so far. I've written a lot of C code and I typically make memory managed lists, so if I need a new common object I grab one from the list to avoid free/malloc as much as possible. Does Go do this automatically, or should I still do this on my own? I'm writing a long-running server, not a utility or something short lived.

<comment><USER3> The Go authors have steadfastly refused to offer users any means of writing a CPU-local freelist, even though the utility of such things is obvious and evidenced by the fact that they use such things all over the runtime package. They just think that _you_ are too stupid to be allowed to do such a thing. Honestly with the attitude that the Go authors treat their users I don't know why anyone tries to write high performing code in that language. C++ is there, after all.

<comment><USER4> _Honestly with the attitude that the Go authors treat their users I don 't know why anyone tries to write high performing code in that language. C++ is there, after all._

I work in C++. I'm sometimes surprised at the way C++ treats its users. There seems to be a culture of pre-optimization. It's hard to write the most abstract application code without constantly thinking about performance under the surface. That's baked right in. Concepts which are used everyday by programmers can barely be cleanly summarized in a paragraph, even by well respected luminaries of the field. Trivia you "just have to remember," impinges on almost every single function or method you write.

That said, there's also a lot of awesome things in C++. It just represents a particular set of cost/benefit dials. Golang represents another.

<comment><USER5> C++ is unique in that it aims to be feature-rich, while preserving at much as possible the property of _if you don 't use it, you don't pay for it_.

It breaks its own rule occasionally -- RTTI, exceptions, [0] standard library machinery with always-on thread safety -- but the C++ folks go to extreme lengths in the name of performance.

There's no small irony in the way embedded folks write off C++ as too heavyweight, given that C++ tortures itself in the name of not forcing bloat upon the programmer.

[0] [https://llvm.org/docs/CodingStandards.html#do-not-use- rtti-o...](https://llvm.org/docs/CodingStandards.html#do-not-use-rtti-or- exceptions)

<comment> Const-me > it aims to be feature-rich

Visual basic had a Replace() function back in 1998, to replace substrings. C++ now has many amazingly advanced high-level features, but still no built-in way to replace a substring. I don't think I needed to write my own string replacing function in any other language I used (I've been programming for living since 2000).

I like C++ and use it a lot. But these seemingly small issues with its standard library escalate quickly. String handling, IO, localization, date & time, multithreading before C++ 11, many standard collections, and other parts are just not good enough. I pretty much stopped writing complete apps in C++, nowadays I'm using C++ for dll/so components I consume from higher-level languages like C#, Python or golang. And when I do, I often choose to ignore large parts of the standard library in favor of alternatives from atl, eastl, or my own ones.

<comment><USER6> String operations of C look so much cleaner and complete than those "algorithmic and templating" ones of C++. And C++ can quickly become difficult to read after overloading various operators on classes or after using fancier less-known features. I personally find C++ too complex and confusing. I know Google dictates some reasonable subset of C++ for Fuchia and that is good. Btw also the dependency management is sometimes really pain with C/C++ - then they had to use crazy compilation tools like GN or Basel to get it compile in various environments and platforms... Programming in go/c# allows to quickly focus to get the work done.

<comment> Const-me > so much cleaner and complete than those "algorithmic and templating" ones of > C++

That's C++ strings, too: [https://docs.microsoft.com/en-us/cpp/atl-mfc- shared/referenc...](https://docs.microsoft.com/en-us/cpp/atl-mfc- shared/reference/cstringt-class?view=vs-2019)

Not only they have better API (replace, tokenize, implicit cast to const pointers), these strings are often faster. That particular class is Windows- only, but nothing prevented C++ standard folks to come up with conceptually similar cross-platform stuff. BTW, that CString class predates C++ standard library by many years.

> And C++ can quickly become difficult to read after overloading various > operators on classes or after using fancier less-known features.

Yes, and I saw quite a lot of code like that.

But in other cases these features help with readability. I often code math- heavy stuff in C++ processing vectors, matrices, quaternions, complex numbers, etc. The ability to implement custom math operators on these structures IMO helps with readability.

What doesn't help is the ability to abuse them, like C++ iostreams do with `operator <<` everywhere.

Not just operators, it's generally too easy to abuse features of the languages, writing code that's very hard to work with. Unfortunately, not doing that requires lots of experience with the language.

I'm not planning to switch due to the good parts. First-party SIMD intrinsics support. Trivial interop with C and C++ libraries: hard requirements like OS kernel APIs and GPU APIs, industry standards like libpng, or just very nice to have like Eigen. Very small runtime allows to build dynamic libraries, consume them from anywhere, and not worry about binary size or runtime dependencies. Also tools like debuggers and profilers are very good.

But when performance is less critical, I'm more productive using other, higher-level languages.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> Almost none of this is about Go. 80% down they mention some basic stuff about GC, but nothing very specific about the Go GC. Then after that it is back to very basic language-agnostic optimization ideas.

I was hoping for more insights about Go specifically.

<comment><USER8> I've done a Go course a while ago; interestingly enough, at least the first day, it wasn't about Go at all. The trainer basically stated that if you know any curly braces language, you can write Go.

And I think that's the point. The language doesn't get in your way, and it's not any specific language feature that will make your code go fast or slow - unless you abuse it, or use it when you don't need to.

I mean if you're happy with C then by all means; Go isn't claiming to be faster than other languages, not this close to the metal. It's mainly aimed to take away some of the mental overhead you get with C and similar languages. And compile times.

</comment></comment><comment><USER9> The "How to Optimize" section is worth reading even if you don't write any Go.

</comment><comment><USER10> This looks very useful, I'd definitely buy a book on the subject. Does anyone know about more Go-specific performance book/articles out there? Please share!

<comment><USER11> This draft: [https://github.com/dgryski/go- perfbook/blob/master/TODO](https://github.com/dgryski/go- perfbook/blob/master/TODO) This short list: [https://github.com/enocom/gopher- reading-list#performance](https://github.com/enocom/gopher-reading- list#performance) This article: [https://medium.com/@val_deleplace/go-code- refactoring-the-23...](https://medium.com/@val_deleplace/go-code-refactoring- the-23x-performance-hunt-156746b522f7)

</comment></comment><comment><USER12> any thoughts on whether to use values or pointers to large structs?

in practice I haven't seen any major performance overhead when passing values about.

<comment><USER13> You should use pointers if you need to mutate the content of the struct, and values otherwise.

Almost all types that could hold a lot of data have reference semantics, so if you have a struct with a large slice, or a large map, all of the actual data is going to be on the heap, and not affect copy performance.

The only time you might want to consider using a pointer to improve copy performance is if you have lots of non-heap-allocated data in your struct, and in practice the only way that happens is via large arrays. That is, e.g. `[8192]string`, and _not_ simply `[]string` (which is an efficient slice). But you should never do it preemptively, you should always benchmark both styles and only switch to pointers once you have proof it's meaningfully affecting performance.</comment></comment>


Ask HN: Wondering if you guys need something like this - <AUTHOR> http://linkletter.co/ <comment><AUTHOR> We read articles online, and like us, many others do the same. We want to build a platform to find what others are reading, every day.

My friend and I want to build this. Any kind of feedback on the idea would be super appreciated.</comment>


Google Workers Lost a Leader, but the Fight Will Continue - <AUTHOR> https://medium.com/s/story/google-workers-lost-a-leader-but-the-fight-will-continue-c487aa5fd2ba <comment><USER2> A great article (unfortunately I think medium screwed it up with the title).

I love working with people who "give a sh*t" ^TM. Sadly, I observed they almost always seem to end up disillusioned and leave large companies. Over the long term these companies seem to be dominated by non-people (those that just go with the flow never having much opinion either way). It could be argued that people who are idealistic are too difficult to work with/ are over demanding of those around them. But I think it's a question of short-term-ism over long-term-ism. Ironic given what's written in this article that now would be the perfect time to have a properly-differentiated trust based competitor product to Facebook. Perhaps Google would have been better served by taking it's time to get g+ right rather than a growth-hacked bet-the-company moment.

I remember the early days of Google when everyone looked on with awe/reverence as they announced "don't be evil" and how they were going to be different. Ultimately the stock market system means role of executives is judged by quarterly earnings and it would be hard for any individual to stand up to that over the long-term. But just as Google's culture was a reaction to perceived failures at other companies I hope some great people launch a company that takes the learnings from Google into an even better culture.

I will watch out for liz ends up next and judge the company positively based on that.

<comment><USER3> I'm at honeycomb.io now! Come check us out if you're interested in making your systems easier to debug and understand!

<comment><USER2> Next time I'm building out observability again I will definitely do that :)

</comment></comment></comment><comment><USER4> Besides the ego trip it's a pretty eye opening article. I didn't think Google had such internal issues.

<comment><USER5> Definitely read the leaked messages from the time of Damore's firing. You wouldn't believe the kinds of things going on.

</comment></comment><comment><USER5> In case you missed it, Fong wrote that headline herself. SMH

<comment><USER3> I actually did not, that was Medium's editorial staff.

<comment><USER5> Ha. Well, I'd be annoyed.

<comment><USER3> Some hills are worth dying on, and some aren't :)

</comment></comment></comment></comment><comment><USER5> Story is pay-walled.</comment>


Pdf-tools: Emacs support library for PDF files - <AUTHOR> https://github.com/politza/pdf-tools

<comment><USER2> If SyncTeX really works out-of-the-box, that would make Emacs an even more powerful LaTeX IDE than it already is!

Right now I use it with Evince and SynTeX works forward (I can jump to the position in the PDF in Evince where my cursor is in Emacs) but not backward (I can't jump in Emacs to the LaTeX source corresponding to where I am in the PDF in Evince). I never managed to get it to work.

</comment><comment><USER3> The syncing with LaTeX sounds nice. What's imagemagick for? If you can copy text I guess it doesn't convert to png like emacs does now?

</comment><comment><USER4> Interesting. A very different kind of tool than doc-view.

</comment><comment><USER5> Interesting! Are there screenshots available?

<comment><USER6> /u/tuhdo made a gif screencast [http://www.reddit.com/r/emacs/comments/2ixp7m/pdf_tools/cl6n...](http://www.reddit.com/r/emacs/comments/2ixp7m/pdf_tools/cl6n3v8)

other comments may be useful to build [http://www.reddit.com/r/emacs/comments/2ixp7m/pdf_tools/](http://www.reddit.com/r/emacs/comments/2ixp7m/pdf_tools/)</comment></comment>


Making calls to WebAssembly fast and implementing anyref - <AUTHOR> https://blog.benj.me/2018/07/04/mozilla-2018-faster-calls-and-anyref/ <comment><USER2> Still waiting for direct DOM/HTML5 API access. Then you could use any language that compiles to WASM as a front-end language. Until then, WASM is of limited interest to me.

EDIT: I mean, why wouldn't that be one of the first items on the agenda of WASM? I was surprised when I found out that this seemingly isn't high on the list of priorities. If WASM is meant exclusively for high performance sections of code, it makes more sense, but that's a bit dull if you ask me. The ability to use any compiled language as a front-end language is far more interesting.

</comment><comment><USER3> This is great. I've been tracking down performance issues in libraries porting to wasm due to what appears to be Emscripten having to do JS calls every time a function pointer is used for the equivalent wasm dynamic call.

On that issue i've spent the last month having to also go through and remake tooling for wasm because Emscripten is still stuck in the asm.js ages and isn't at all flexibly modifiable.

</comment><comment><USER4> I am curious to know if this also makes calls from WASM into JS faster. One of the issues with WASM is that you need the JS DOM API, it is essentially your OS abstraction layer, so faster that is, the better WASM will be.

<comment><USER5> We've had optimizations to make wasm -> JS calls fast for a long time, and they became even slightly faster (around 10 or 15%) last year. There is a proposal to add DOM integration within wasm, so one could import DOM functions in wasm and call them directly (from wasm to C++, without a "trampoline" in JS).

</comment></comment><comment><USER6> Is there documentation on what Chrome/v8 currently does here? Could a similar optimization be ported over?</comment>


Show HN: coined.com, BTC Arbitrage Rates with Semantic UI and socket.io - <AUTHOR> http://www.coined.com/

<comment><AUTHOR> Hey everyone, we are huge bitcoin fans and have been watching bitcoin since it was under $0.10 a coin. It's been crazy to see how big the price differences are between exchanges, so we built this service to keep an eye on things. It uses the order book depth of each exchange to give you an idea of how the arbitrage rates are affected based on the number of coins you are trading. Let us know any feedback you have so we can make the site better!

</comment><comment><USER2> nice one!

interface is great, nice and clean. also particularly like the donations-for- features idea...

it still kind of amazes me anybody has anything invested in gox...</comment>


New Orleans ends its relationship with tech firm Palantir - <AUTHOR> http://www.nola.com/crime/index.ssf/2018/03/palantir_new_orleans_gang_case.html <comment><USER2> I wonder if all they did was parallel reconstruction . None of what was in the article was doable or feasible. Predicting crime like they said they could is just probably another form of profiling but just automated instead . Figuring out influencers in a social network is hard from my experience as an undergraduate researcher and community detection can be done but to predict people's behavior is quite another. I wonder if any other customers of Palantir will have more fallout if people find out what they are doing ?

[http://leitang.net/presentation/Community%20Detection%20in%2...](http://leitang.net/presentation/Community%20Detection%20in%20Social%20Networks.pdf)

[https://www.researchgate.net/publication/260598010_PREDICTIN...](https://www.researchgate.net/publication/260598010_PREDICTING_INFLUENCE_IN_SOCIAL_NETWORKS)

<comment><USER3> First, it's "parallel construction", not "parallel reconstruction".

Second, that term refers to the use of SIGINT (or, more likely, aggregates) collected by intelligence agencies to inform law enforcement but not add to evidence available to prosecutors.

Despite the scary name, Palantir is not in fact a signals intelligence agency.

There is a lot to be concerned about with police department gang member databases, but police departments predict crime routinely. It's a core part of what it means to run a large city police department. You don't allocate patrols uniformly across the city; that makes no sense.

<comment><USER4> Seems to me the major ethical problem with "parallel construction" isn't whether or not the information used to identify and detain the suspect comes from a signals intelligence agency, it's the intentional deception by law enforcement investigators and prosecutors of how and why they acquired and discovered evidence.

If the NSA illegally (or "legally" as they'd no doubt claim) intercepts private communications, and tells local traffic cops to find a pretext to pull over a particular car and search it - telling the defence and the court that the drugs were discovered in a routine traffic stop is parallel construction.

If the tip off comes from Palantir instead of the NSA, and the investigators and prosecutors deceive the court and defence about that involvement - I'd argue it's still parallel construction.

<comment><USER3> No, the problem with parallel construction is that it involves the introduction of tainted evidence into the law enforcement process. The fundamental protection we have against the abuse of surveillance and searches is the Exclusionary Rule, which dictates that the entire chain of evidence that begins with unconstitutional search is off-limits in prosecution. Parallel construction sidesteps that by avoiding the introduction of tainted evidence into cases at all, while still taking advantage of it during investigation.

But Palantir is a mechanism for collecting and analyzing evidence, not generating new evidence. It's database software. Policing has been predictive for decades; without Palantir, the police just use even dumber predictive methods.

<comment><USER5> Your argument assumes absolutely none of the information that Palantir uses is tainted. That's a surprisingly difficult thing to demonstrate, and based on the amount of data analyzed highly unlikely.

Thus, the impetus to use parallel construction to sidestep these issues.

<comment><USER3> This is a little like saying that a police department's use of Postgres might be a sign that there's parallel construction happening.

<comment><USER6> We know that parallel construction has, at various times and in various places, been heavily used by some law enforcement elements. We don't need to know anything about the software used by law enforcement to know that, and to suspect that this may be happening now. Systems such as those provided by Palantir are just a more sophisticated way that tainted evidence could be used.

It seems reasonable that, given a reasonable suspicion that such evidence is used, that we should fear and want to prevent more widespread and systematic use of that illegal evidence.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> This article suggests that the Palantir software, regardless of method, was in fact instrumental in identifying a gang leader who was subsequently sentenced to 100 years in prison.

And that the reason that it was cancelled was largely due to the public's discomfort with the program, as raised by a previous Verge article, that laid out the potential for civil liberties violations and potential macro ineffectiveness of Palantir's identification methodology.

With that in mind it seems like Palantir's largest risk forward is running afoul of due-process for their criminality / policing divisions, not that municipalities won't fall over themselves to hand them billions in fees in the name of efficiency.

<comment><USER8> The article suggests the opposite: The prosecutor contends that Palantir was a non-factor in the conviction, hence its lack of inclusion in material disclosed to the defense. The reason for the contract getting cancelled was also not confirmed or commented on by the city, the article only mentioned "some" that were "leery" of its use because it could be used to connect gang members to others. This is a very vague wording of any concerns about use of Palantir. The article was very light on content here, using words that indicate trepidation but not connected those loaded terms to any explanation.

From prior stories about Palantir's lack of efficacy outside of well-resources intelligence and military venue, my guess is that lack of efficacy was the cause for the contract going belly up.

<comment><USER4> > The prosecutor contends that Palantir was a non-factor in the conviction

Parallel construction as a Service.

I bet with the right co-founder you'd be rolling in investment capital for that...

<comment><USER8> I don't see parallel construction here. There's no reason to think that any information in Palantir was inappropriately obtained without a warrant when one should have been required. Without that breach, then Palantir helped generate leads, it didn't result in parallel construction. That's not even what the defense contends in the criminal issue cited in the article: There, they simply maintain that a Brady violation occurred by not disclosing that Palantir was used, or that Palantir showed negative evidence that was favorable to the defendant. I really don't understand where any issue or suspicion of parallel construction arises from the use of Palantir. It's basically a mashup of a social network and CRM with predictive modeling on top.

<comment><USER9> > There's no reason to think ...

There's no reason to think it happened either way. But I think there's reasonable suspicion that Palantir might have been involved.

> information in Palantir was inappropriately obtained without a warrant when > one should have been required

That's not the only issue, or even the main one. Government investigating and collecting information on private citizens en masse, rather than individuals for cause, is very dangerous. Doing it based on decisions made by Palantir's software developers, seems even worse.

> It's basically a mashup of a social network and CRM with predictive modeling > on top.

How do you know how it functions? And wouldn't that describe any government system used for surveilling (and sometimes oppressing) its citizens? The Stasi had the same thing, just with far less powerful tech. Using banal buzzwords doesn't make Palantir or government surveillance any more banal.

<comment><USER8> These are all reasonable concerns about palantir, but none of them are parallel construction. And I know how palantir functions because there's plenty of information available on it. Heck call their sales team and chat them up about a use case if you want to learn more (it's what i did, about 10 years ago) my point is their gotham product isn't top secret, at one point they even had some sort of demo client.

I'm sure their tech, like any other, can be misused. But parallel construction isnt even hinted at here, its the potential Brady violation that is the issue.

</comment></comment></comment></comment></comment></comment><comment><USER10> It's amazing how companies can get so big predicting the future. The process is a glorified dart throw, especially in social systems. The variables are always changing, and the effect of reacting to a prediction (like increasing police presence) changes the expected outcome, so predictions become elusive even if initially correct.

Also, when the variables like homicides are relatively low numbers, there are huge percentage swings that happen naturally.

Macro indicators like weather and per capita income have long been known to be correlated with crime, but trying to predict and proactively reduce it is much harder.

The promise of AI and predictive analytics is huge, but it misses the mark in non-closed systems.

<comment><USER11> All of those things are true x10 in the stock market, but people still seem to be able to consistently make money. I think you're overstating the difficulty of the problem a bit. There's a lot you can do with simple models to predict crime - they're not perfect, but as long as their users understand that, that's fine.

<comment><USER12> Nobody is more confident than a hedge fund trying to get your cash. It's still a zero sum game and not really an applicable metaphor here.

<comment><USER13> > _It's still a zero sum game_

Stock markets aren't a zero sum game.

<comment><USER12> They are if the transaction does not involve the company. If the value of hedge funds is in IPOs, i've veen missold!

I am not an economist, but I would love it if you could correct me if I am wrong :)

</comment></comment></comment></comment></comment><comment><USER14> _Of particular concern to some was the use of Palantir as a tool that could aid investigators both in connecting suspected gang members to others in the community, and in identifying people deemed at high risk of either committing gun violence or being the victim of it._

??? Isn't that precisely what the tool is meant to do?

</comment><comment><USER15> I'd imagine they got the data they needed anyway

</comment><comment><USER16> and mr palantir got up from his desk, steaming envelopes, and walked down the street, into the future. "ill be a postman" he thought. "wont have to spy on anybody".

</comment><comment><USER17> Since we are talking about a technology that basically speculates about people, it's kind of funny that according to the article the "New Orleans Police Department's Director of Analytics" is called Ben Horwitz. Hmm...

<comment><USER18> What are you implying?</comment></comment>


Process email in your web app without polling - <AUTHOR> http://blog.teambox.com/handling-incoming-email/ Handle incoming email for your application with the power of Webhooks. Instead of setting up an email server and polling every minute, you can set up easy (and free) ping notifications for email. <comment><USER2> Great how-to! I didn't know about sendgrid. It looks like a nice service.</comment>


Amazon earnings more than double – stock at near record highs - <AUTHOR> https://www.marketwatch.com/story/amazon-earnings-more-than-double-sending-stock-toward-record-highs-2018-04-26 <comment><USER2> Bezos is finally taking off the breaks. Amazon is finally becoming the profit machine that people where hoping it would become.</comment>


New gfy-cat polymer web component - <AUTHOR> http://mattbow.com/gfy-cat/

<comment><USER2> If this does what it says it does, this could be VERY useful!</comment>


Identity Check API - <AUTHOR> https://onfido.com/ <comment><USER2> I think it's safe to say that taking a picture of your ID and uploading it _anywhere_ on the net is the last thing you should do.

<comment><AUTHOR> True. Also e-mailing it around to everyone who requests it is a nightmare. We should be looking to the Estonian model of managing ID (e-estonia). I've also seen id done on the basis of your bank account (cf. miicard.com) which is a bit bowel-loosening.

</comment></comment><comment><AUTHOR> Looks fine but I've no idea what it costs.

<comment><USER3> I was looking for cost too but no luck</comment></comment>


Things my new commute has taught me #1: not all seats are equal - <AUTHOR> http://meish.org/2007/05/22/things-my-new-commute-has-taught-me-1/

<comment><USER2> In the article, the image is cropped so you can't see "Position 1". Here's the full image: [http://meish.org/wp- content/uploads/2007/08/tubecarriage4.pn...](http://meish.org/wp- content/uploads/2007/08/tubecarriage4.png)

<comment><USER3> I thought I was going insane reading the comments. "What are these people talking about? THERE IS NO 5!"

</comment></comment><comment><USER4> This made me laugh. It is also true on public transport in China. The older people have really figured out this hierarchy and it is funny to watch them eyeing improved seating positions as a stop approaches. Then, the doors open, seats vacate and there is a rush of senior citizens trying to improve their position however marginally. Quite funny to watch once you realize what is going on (also a good way for the inexperienced to quickly find out which seats are best).

</comment><comment><USER5> Brings to mind the airline version: <http://www.seatguru.com/>

</comment><comment><USER6> I used to this same commute myself for 2 years, fortunately London Transport are upgrading to open plan carriages and fewer seats, see the video at the bottom of the page: [http://www.tfl.gov.uk/corporate/projectsandschemes/10127.asp...](http://www.tfl.gov.uk/corporate/projectsandschemes/10127.aspx)

Maybe the writer should start planning for the new layouts?

</comment><comment><USER7> The best bit is that people tend to also optimize for maximum distance apart as well as a good position

</comment><comment><USER8> I commuted on the subway in NYC for a few months last summer, but I never noticed a hierarchy beyond "sitting > standing" -- probably just because I wasn't paying enough attention and wasn't there long enough. I'm going to watch for this when I go back.

<comment><USER9> I definitely felt a hierarchy. The R68-type[1] trains always had some seats fill faster than others.

For instance, the three seats lining the wall (see diagram), with the two seats perpendicular to the direction of travel always had the seat 3 fill faster than others (It's next to a window, has guaranteed leg space and you can put your feet on the radiator; it's pretty awesome). Seat 4 gets filled later since you have more leg space and can avoid person in seat 3 more effectively if you don't know them. Seats 0-2 have the potential to be squeezed awfully close to a stranger. Even closer if the train is operating is moving unpredictably.

      [0][1][2]..[3].
      ...........[4].

The pairs of seats on the edges of the train are nice if you have a bike or with 1 or 3 friends since you can take up that section of the train, be separated from everyone else, or lean on the wall to nap or rest.

Also, the side of the train that was closer to the side with majority of stations tended to be more popular.

And this post just went into _way_ more detail than it had to.

[1] [http://upload.wikimedia.org/wikipedia/en/9/98/R68_Interior.j...](http://upload.wikimedia.org/wikipedia/en/9/98/R68_Interior.jpeg)

</comment></comment><comment><USER10> Having ridden the Tube for years, this article is _spot on_. This is exactly the way that I think when trying to grab a seat.

</comment><comment><USER11> An application of this we can all relate to:

"Not all stalls (bathroom) are created equal"

</comment><comment><USER12> This guy is autistic.</comment>


Working with Strings in Rust - <AUTHOR> https://fasterthanli.me/blog/2020/working-with-strings-in-rust/ <comment><USER2> The first half was a surprisingly ok intro to unicode and utf encodings in C. Super clearly illustrated a handful of pitfalls of trying to roll your own utf8 handling code in C.

But it irks me when rust blogs misrepresent C to show that Rust is better:

        How nice. We even use const in all
        the right places! I think! Except
        maybe argv! Who knows? The compiler
        sure doesn't seem to care much. I
        guess casting non-const to const is
        pretty harmless. Fair enough, GCC,
        fair enough.

        Lucky toupper has no way to return
        an error and just returns 0 for 0,
        right? Or maybe 0 is what it returns
        on error? Who knows! It's a C API!
        Anything is possible.

Both of these have defined answers written into the C standard itself.

Also you can have const memory in C that will crash if you cast it to non- const and write to it. You can call out to the OS to mark a chunk of memory it as read only. The reason it's not as built into C as it is for Rust is that C was in part designed for and currently runs on hardware where there isn't read-only-memory outside of a physical ROM chip.

        So the problem here is that… we
        allocate enough room for "DOG\0",
        but we end up converting "doggo
        override\0" to uppercase, so we end
        up writing past the area that malloc
        allocated for us.  I believe the
        technical term is a fucky wucky
        buffer overflow.

Something about this sentence screams Rust programmer but I can't put my finger on why.

<comment><USER3> > Both of these have defined answers written into the C standard itself.

I think the point wasn't that they're unknowable, but that the tooling doesn't give you any help in knowing - much less enforcing - the answers. Really basic things are left up to convention, which especially when it comes to third- party code, forces you to be distrustful of what you're working with and maybe even have your code do extra work (eager cloning for example), just in case an interface behaves in a way you hope it doesn't.

<comment><USER2> I did miss that until I read your post, looking up behavior that your program relies in a language standard seems easy to me to because I _have_ to as a C programmer, a lot, for the reasons you and the post mentioned. I totally agree with you, and nearly all of the C footguns in the article.

That being said I'm still doubling down on my post:

"who knows" if argv is const? Me, because I program for a standard of C that guarantees that that it's not const and that it's pointers and the strings it pointers to are both modifiable.

And "who knows" if toupper returns an error because "It's a C API! Anything is possible!"

Also me, because I program for a standard of C where toupper returns what you gave it, or it gives you a single character back that _might_be_different_ based on the host computer's language.

Not defending toupper and towupper, but it is explicitly unreliable in the C standard I program to.

If I naively wrote a case-insensitive file manager in Rust, wchar_t C, or C with ICU, could operations on the following files be reliable on a German computer and on a English computer? If they are reliable, then is it correct to the point where either person wouldn't overwrite a file on accident? If the Rust one overwrites files, is it a smaller fuckywuky since Rust programers value "safety, correctness, and performance"?

        ẞ.txt
        β.txt
        阝.txt
        ß.txt
        ẞ.txt
        SS.txt
        ss.txt</comment></comment></comment>


Why So Many Entrepreneurs Hoard Secret Stashes of Domain Names - <AUTHOR> https://marker.medium.com/why-so-many-entrepreneurs-hoard-secret-stashes-of-domain-names-c834885c4ba4 <comment><USER2> I've bought plenty of video games I haven't played or books I haven't read so I'm not least bit of surprised that someone does the same with domain names. In this case, however, the supply of the product is not infinite. So if you happen to own a great domain name and you don't have time and energy to develope it, consider letting that little bird fly away. Maybe it'll have a great life with someone else.</comment>


JavaScript is Not a Joke - <AUTHOR> https://www.alexkras.com/javascript-is-not-a-joke/ <comment><USER2> > The bundle size is large – true, it is a big overkill for a simple stop > watch. Hundred megabytes size, however, is very reasonable for complex > applications.

I dunno about this. That means with a complex app, you still have 100MB of VM. It makes me think of oh so many Java apps that all packaged their own version of the JRE. Anyone one dev could have 10 ~ 15 JREs or full JDKs on their machine at any one time, because everyone wants the stability of their tested JRE and not rely on the system one.

I just looked at the Slack executable on my Linux box. It's 61MB. The entire /usr/lib64/slack directory is 145MB (including the libnode.so which is 18MB by itself).

I know we have tons of disk space today, but we still should be concerned about these massive file sizes for such simple applications. Why does everything needs to be a web app, packaged for the desktop? How did we get to this point?

<comment><AUTHOR> Speed of development</comment></comment>


My Dated Predictions - <AUTHOR> http://rodneybrooks.com/my-dated-predictions/ <comment><USER2> I don't understand why so many people are hung up on flying cars. It's a huge increase in the energy it takes to get from point A to point B, and for what reason? What do they hope to gain by wasting so much more fuel?

<comment><USER3> Flying cars are a terrible idea. People can't be trusted to not drive into things or run out of gas while driving _on land_. I wouldn't want the average person flying their car anywhere near me or my property.

The only conceivable way I could see flying cars being a 'thing' is if we carved out 'air roads' for them that didn't cross over buildings or other cars. At that point, what's the benefit?

<comment><USER4> Maybe a big part of the solution is self-driving flying cars? Of course they would use Tesla batteries. And let's not forget to use Fuschia, while we're at it.

</comment></comment></comment><comment><USER5> Since he brings up a number of Elon Musk initiatives, it seems to relate in part to the public conversation that Elon has been having about AI.

For those who don't know Rodney Brooks, he was faculty at MIT for years, co- founded iRobot and Rethink Robotics, where he is working on collaborative robotics (robots that can work with humans without maiming them.)

<comment><USER6> It kind of gives you a sense of the sort of messaging that Dr. Brooks doesn't have a lot of respect for. I have big fan of Brooks' work from his MIT days on, it is very practical robotics which has done things that others haven't (Ghengis, the walking robot, really was a revolution in terms of mobility[1]).

But hype cycle or not, it would have been interesting to see where he had placed reusable rocketry in 2007. Would it have been 'by 2020 it will be common' or would it have been 'won't happen, the existing rockets work quite well and there isn't enough gain to justify the additional work.'

While Brooks picks on Elon a lot, the core of his essay is what makes it 'easy' to predict something will happen versus what makes it 'hard'. And I think he doesn't give enough credit to the fact that even if something is possible it needs a catalyst to get it to precipitate out of the realm of possibility into the realm of reality.

I think Dr. Brooks has a blind spot on space challenges, but I enjoyed his AI predictions. Of course it is entirely possible I just want easy access to space more than he does :-)

[1] I'm guessing @animats will disagree with that assessment :-) But he and Dr. Brooks approached the problem of inverse kinematics very differently and both got good results.

<comment><USER5> > he and Dr. Brooks approached the problem of inverse kinematics very > differently

Could you expand on this? Thanks.

I like this essay, it seems to condense a lot of his thinking over some time.

</comment></comment></comment><comment><USER7> I want to humbly add my 2020 predictions from 2017: [https://medium.com/the- naked-founder/2020-predictions-from-2...](https://medium.com/the-naked- founder/2020-predictions-from-2017-617893fffdda)

Happy to hear comments about it.

<comment><USER8> The only one of those with even the remotest chance of happening is the Cryptocurrency one.

A Robocop by 2020? If you had a Robocop by 2090 I'd be shocked. (A remotely controlled Robocop is not a Robocop, you said helped by AI, and that's the part I'm focusing on.)

Just try to talking to one of those assistants like Google Home, and you'll realize just how far away we are from AI.

> [Driverless cars] Today, in 2017, I believe that at least 19 out of 20 > people would agree.

Nope, not happening. Driverless cars (except in dedicated lanes) are not going to happen for 20 or 30 years if not longer.

What I do agree will happen is dedicated instrumented lanes for them on freeways (little point in doing it in cities). Kind of like train rails.

But your vision of them transforming cities is not going to happen for decades, if ever.

<comment><USER9> Personally, I think many of your time estimates are wildly pessimistic. Humanity is on an improvement graph that almost seems exponential - I don't think it would be crazy to see driverless cars in the next 5-10 years, considering how many people continue to get in to this space. There may be strict legislation around it, but that's a different discussion. Similarly, look how far we've come in "assistants" in the last 6 years since Siri was released... 2090 definitely seems like a stretch.

<comment><USER10> _look how far we 've come in "assistants" in the last 6 years since Siri was released_

Not far at all. I still struggle to do basic tasks with my Apple Watch 3 (like sending a text to one of my contacts, or automatically start/stop Run app when I start/stop running).

<comment><USER11> To be fair, _look how far we 've come in "assistants" in the last 6 years since Siri was released_ can be read as "look how much Siri has been surpassed in quality by other assistants since it was introduced" rather than "look how far Siri has advanced since it was introduced".

</comment></comment></comment></comment></comment><comment><AUTHOR> Predictions start here: [http://rodneybrooks.com/my-dated- predictions/#tablepress-1](http://rodneybrooks.com/my-dated- predictions/#tablepress-1)

Abbreviations are:

* NIML meaning "Not In My Lifetime", i.e., not until after January 1st, 2050

* NET some date, meaning "No Earlier Than" that date.

* BY some date, meaning "By" that date.

<comment><USER12> Yann Lecun has a nice comment on Deep Learning vs Supervised learning being the Heat Engine vs Steam Engine example, although they both seem to agree on hype.

I wonder if the 'Spam in a can' problem for underground transport can be resolved with VR or simply human absorption into BYOD.

<comment><USER13> I'm not so sure. A significant portion of the population will find the "Spam in a can" problem a claustrophobia trigger. There are people that would just never get into one. Like my wife -- who lasted about 5 minutes into a tour of a WW II submarine that was sitting on the surface with the hatches open. Which means we would never travel as a family in Spam can.

Of course there are ways of dealing with that. It will require thoughtful industrial design and human factors design, and certain minimum volume. A VR headset will itself become a claustrophobia trigger enhancer in a triggering environment. The human factors problem should not be trivialized.

</comment></comment></comment><comment><USER14> What is the value to predicting things other than stroking ones own ego?

<comment><USER15> Accurate speculation, which prediction is, is a skill that can be practiced and improved. This has benefits as it makes one better at estimating outcomes. Posting it online also helps keep people accountable. Yeah, there might be some promotion going on as well, but that can be true for anything one posts on line. If you find someone's post valuable, great. If not, that's fine, too.

<comment><USER16> I agree here and would underscore this point: in the hands of public experts, media talking heads, and many types of charlatan, predictions can be immensely powerful and have tremendous influence over public policy and social behavior. So I consider assessing them for accuracy and holding prediction-makers accountable a public good.

For a compelling book-length treatment of this question, see Philip Tetlock's Superforecasting:

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

This project was spun off from the book and is my favorite online forecasting site:

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


Human Pose Estimation with Deep Learning - <AUTHOR> https://blog.nanonets.com/human-pose-estimation-2d-guide/ <comment><USER2> Thanks for posting this. Around 2 months back I was trying my hands on something alike - I think this one will help me take some steps further on it.

I was working on an ad-blocker for live TV, specially news channels. Annoyed by the amount of ad sequences they have on news channels, I wanted to build a dashboard that would show me color coded state of news channels, {green -> news content | red -> ads | yellow -> not sure}. So that I instantly know which channel to switch to.

I used pose detection as one of the heuristic to figure out if there is an anchor on the screen. Used openpose with golang, worked pretty well to start with but later felt it was bit limited. (I have no ML background)

</comment><comment><USER3> Browsing through the abstracts and papers using this continuously updated overview, is more interesting (to me): [https://paperswithcode.com/task/pose- estimation](https://paperswithcode.com/task/pose-estimation)

</comment><comment><USER4> How fast are the algorithms? does anyone of them work in real time?

<comment><USER5> They showed an app like this running on a phone in laggy but real time at I/O yesterday

<comment><USER4> Interesting, wonder what their use case was?

<comment><USER6> I can think of a couple of use cases, none of them particularly useful though. Imagine you had the pose data for the image and the pose data of someone else, even an imaginary someone else thanks to GaNs.

</comment></comment></comment></comment><comment><USER7> Hey guys! Author of the article here. Let me know if you have any questions wrt implementation, SOTA, usability etc.</comment>


Christopher Alexander: An Introduction for Object-Oriented Designers - <AUTHOR> http://www.patternlanguage.com/bios/douglea.htm <comment><USER2> When creating, there are two (main) vectors: original and compelling. Imagine "Compelling" on the y axis, and "Original/Unique" on the x axis.

We've found a lot of patterns that make things compelling. Next time you watch a movie, set a timer on your watch. At almost _exactly_ ten minutes into the film the exposition and character build up finishes and the plot begins. Why? Because that's been found to be a compelling amount of time to do that. Take more time, and you bore the audience, less and you risk losing them because they don't identify with the characters enough.

But notice I said "most movies". Because it's compelling, it's used often and that makes it unoriginal. Pop songs are all around three minutes and the hook comes at a certain time into the song, every time. So when you make something compelling, you are usually taking away from its originality. If you go for originality, you risk that people won't like it as much.

Genius is when you can make something both unique and compelling. It's rare. And then it's copied to the point where it soon becomes unoriginal. But that moment, when it's beautiful and you've never seen anything like it - that's a wonderful moment.

What Alexander is bringing up is that, while Hollywood films and pop music favors compelling over original, architects usually favor creating something original at the expense of it being compelling. And he is saying that quality without a name is the creation of artifacts that people actually like.

If I remember right, Kent Beck introduced Erich Gamma to Alexander's ideas with the notion of letting users create their experience in software. Erich took it in a different direction obviously, but I can't help but think that Kent had the stronger instinct of what Alexander was trying to say.

We have to remember when creating that startup: It has to be original or everyone will have done it already, but it's additionally about creating something that people will want. And there's the rub. First because that's extraordinarily difficult. But also because the original part is such an extension of your individuality -- it's _you_ \-- that then to modify it to adjust it to reflect what to people will like, means taking yourself out of that very personal work.

<comment><USER3> Really good analysis.

One thought though: is it really just genius, and the only way to get to that top right compelling and unique state by just jumping there?

Feels like it would be more of a combination: someone tries a unique idea and it's not compelling. Someone else sees this idea, but changes something about it, so it's now unique and slightly compelling. This gets repeated until you end up with something unique and compelling. This new idea now gets copied exactly, and it slowly moves from the top right to the bottom right - compelling but non-unique.

ie. Is this not a continuous process curve innate in all invention? The only real effect might be the speed of movement along the curve - someone (a genius) may be able to iterate across the curve by himself by building on his own ideas?

If this is true, then genius is not really required - all that we require is constant iteration of bad unique ideas until they become something good. Seems to hold up in reality - the more people involved in something, the quicker it gets somewhere good, as there are more iterations happening.

<comment><USER4> Emacs is often talked about as a structure that does have some kind of quality without a name. But it doesn't make sense to attribute that to any individual genius. The essence of Emacs is its openness.

I think there's some important thing to say about the arbitrariness of distinctions like compile-time/run-time, and the architectural implications of "open source," etc, but I don't have time to think it through...

<comment><AUTHOR> Another example is Blender (3D). Created with and by the people who are using it (<http://wiki.blender.org/index.php/Dev:Source/Architecture>). I think it's one of the best software programs I've ever seen. Both compelling and Original/Unique.

</comment></comment></comment></comment><comment><USER5> I find Christopher Alexander to be a much more opinionated architect than Alexander-pattern advocates are about software, at least in A Pattern Language.

For example, one of Alexander's patterns is to make buildings not more than four stories tall. He presents compelling evidence that living in tall buildings increases rates of mental illness and stunts physical and intellectual growth of children, and explains why the 5th floor is one too many. He is not saying, "maybe you should use the four floors pattern here," he is saying, "buildings should not be this tall!"

Another example is that homes on a street should somewhat cluster together and their doors should face each other. What is the equivalent in software of shaping a street to create a few small communities this way, not as an option but simply as the better way to make a street?

I know we don't wish to be dogmatic about things like REST, but the power of Alexander's ideas come from the superiority of his specific patterns over other ideas, not just his power to organize the practice of a profession into patterns.

<comment><USER6> I've only read Alexander's Synthesis of Form once, and it was a few years ago. Thoughtful reading, no doubt.

I think you may be confusing design requirements with patterns. His "no more than four stories" was a requirement for healthy human development, not a pattern. His 'patterns' were reusable chunks that fit a situation's requirements.

Patterns in programming only add value to the developers and architects.

Edit - and architects.

<comment><USER7> The process described in _Notes on the Synthesis of Form_ is 180 degrees from that advocated in his later work. It is top down and all at once. His later work advocates many hands working incrementally from the bottom up.

I would also suggest that his work is about the user interface of buildings and thus has implications for the design of analogous interfaces for software.

<comment><USER6> Sounds like I have a bit more reading to do. Thanks

</comment></comment></comment></comment><comment><USER8> This sounds a lot different than the way patterns have been used in software:

" _Notes_ includes presentation of a semiformal algorithmic method that helps automate good partitioning under various assumptions. To use it, one first prepares an exhaustive list of functional and structural constraints...The algorithm takes as input a boolean matrix indicating whether any given pair of constraints interact...The method results in indications of groupings that minimize total requirements interaction and resulting complexity. This statistical clustering algorithm arrives at subsystems by minimizing the interaction of problem requirements that each one deals with."

</comment><comment><USER9> Something straight from the horse's mouth: Christopher Alexander himself, the keynote address at 1996 ACM OOPSLA. A good read and a taste of how much of Alexander's work you are missing if you stop at the GoF book:

<http://www.patternlanguage.com/archive/ieee/ieeetext.htm>

</comment><comment><USER10> Two things:

1\. What? — An FP coder

2\. Patterns mean "I have run out of language." — Rich Hickey

<comment><AUTHOR> _Patterns mean "I have run out of language."_

That's why he called it a pattern language. It's the language of patterns found in life ;)

<comment><USER10> I was mostly huh'ing at the mapping of dissimilar disciplines in a confused attempt to promulgate OOP cargo cult.

<comment><USER11> Are you suggesting patterns don't exist in other programming paradigms?

We just saw a top level post on lessons from Haskell, for example, that while not using the pattern form, expressed a variety of idomatic, reusable solutions to contextualized problems.

Secondly, I think you are misusing the term Cargo Cult. Someone like Doug Lea (the OP) has a lot of experience with good software design - his concurrency libraries, in particular. Suggesting that OOP as a whole is a cargo cult is the height of ignorance.</comment></comment></comment></comment>


Some Lesser Known Machine Learning Libraries - <AUTHOR> http://blog.paralleldots.com/technology/machine-learning/lesser-known-machine-learning-libraries-part-ii/ <comment><USER3> Pymanopt is a Python version of the Matlab code Manopt by Nicolas Boumal. It adds some features like automatic differentiation. I can't speak highly enough about both of these packages. A lot of people don't realize how useful manifold optimization is. The academic community has been aware of it for a while now, but it seems to have remained a bit of a secret.

It can be used to perform SVD, phase retrieval, global registration of point clouds, and low rank modeling.

I'm (very slowly) writing a Julia port of the code, so if someone wants to take over, feel free.

<comment><USER4> Yes. We love PyManOpt here at ParallelDots (the startup which wrote the blog).

</comment></comment><comment><USER5> My first reaction to this, "there must be a reason that they are not known", I click the link and "Error establishing a database connection" :D

<comment><AUTHOR> We have fixed it now... We were not expecting so much traffic :)

<comment><USER6> SKOPT link is also broke.

<comment><AUTHOR> We have fixed the link and added some more libraries.

</comment></comment></comment></comment><comment><USER7> Another fantastic library for the list - <USER2> [https://github.com/nickgillian/grt](https://github.com/nickgillian/grt)

Really great lightweight c++ gesture recognition with DTW, HMM's and SVM's

<comment><USER4> This looks like a good addition. Will suggest to add it.

</comment></comment><comment><USER8> What about mlpy, shark, mlpack, shogun, orange, elki, HLearn, etc.? There is very much the list doesn't cover (no offense to the list authors---just, there is a lot out there).

<comment><USER9> Also probabilistic programming stuff: PyMC, Stan, Dimple, Church. Not sure if these are 'lesser known', PyMC is mentioned often, still much less hype nowadays than neural networks.

<comment><USER4> Thanks for the suggestions. I don't think PyMC3 and Stan are less known, hence did not suggest to add them in the list. Dimple and Church look good additions. Will get them appended.

</comment></comment></comment><comment><USER10> Maybe the libraries are less known because they're lesser libraries?

\---

"Less known libraries" would be libraries that fewer people know. "Lesser known libraries" would be libraries of a lower quality.

[source]([http://english.stackexchange.com/questions/24719/difference-...](http://english.stackexchange.com/questions/24719/difference- between-less-and-lesser))

<comment><USER11> You could hyphenate to clarify: lesser-known libraries.

But come on, the English language is ambiguous. We can figure out the meaning from the context. I'm usually a nit when it comes to vocabulary and grammar, but this one...

Actually, maybe the title should explain more of the purpose: Machine learning libraries that should be more popular.

</comment></comment><comment><USER12> I will try scikit-plot, I usually waste time on plotting "by hand". I hope it works with Keras using wrappers.

</comment><comment><USER13> Snap [http://snap.stanford.edu/snappy/index.html](http://snap.stanford.edu/snappy/index.html), this library is also good and lot of work has been and best part is this runs in parallel mode.

</comment><comment><USER14> If (unlikely outside High-Energy Physics) one is using ROOT, TMVA is a good option.

</comment><comment><USER15> I wonder if we'll ever be liberated from libraries written using python-like syntax or python in general

<comment><USER16> I like coding in Python, so hopefully not any time soon.

</comment></comment><comment><USER17> If I was going to try machine learning I would code up from scratch rather than relying on black boxes.

<comment><USER18> Please don't spread bad advice. There is a reason we teach Python and not ia64 Assembly to beginners.

<comment><USER17> > There is a reason we teach Python and not ia64 Assembly to beginners.

Fashion is a reason, but it's not a good reason.

<comment><USER19> Relevance and accessibility are others.</comment></comment></comment></comment>


Solar Panel Waste - <AUTHOR> https://www.forbes.com/sites/michaelshellenberger/2018/05/23/if-solar-panels-are-so-clean-why-do-they-produce-so-much-toxic-waste/ <comment><AUTHOR> After reading this, I looked around at some home solar panel companies and none of them talk about the life expectancy of their panels (that I could find.)

<comment><USER2> Do you mean that you looked at home solar panel _installation_ companies or at _manufacturers_? It's the manufacturers who provide module life expectancy estimates/assurance.

You want to look at the product warranty and the power warranty for modules: [https://www.solar-estimate.org/solar-panels-101/how-to- under...](https://www.solar-estimate.org/solar-panels-101/how-to-understand- and-compare-solar-panel-warranties)

These values are typically disclosed in the module data sheet:

[https://www.lg.com/us/business/download/resources/BT00002151...](https://www.lg.com/us/business/download/resources/BT00002151/BT00002151_2830.pdf)

LG, SunPower, Panasonic, and perhaps some other premium manufacturers are offering 25 year combined product-and-power warranties. It's becoming more common as durability improves.

More typical at present is a 10 year product warranty with a 25 year power warranty, like this module from REC offers:

[https://www.recgroup.com/sites/default/files/documents/ds_re...](https://www.recgroup.com/sites/default/files/documents/ds_rec_twinpeak_2_series_ul_rev_f_eng.pdf)

<comment><AUTHOR> nice, I was looking at installation companies.</comment></comment></comment>


test projects to outsource - <AUTHOR>

i'm starting a social venture to outsource work to africa (kenya and ghana). i need test projects to give my developers there -- right now, all we have are some fb apps. does anyone have any other work they'd like to get done for free, while we're testing the concept? <comment><USER2> This sounds a little too good to be true - I would be a little careful in pursuing something like this.

Especially with no link to a website about the project, no details whatsoever, lookout for a "they will do this whole project for you, you just need to send them 2000$ to buy a server"

</comment><comment><USER3> Great, I hope this works out for you.

I'm curious, how did your developers get their development skills? I don't know anything about professional education in Africa.

</comment><comment><USER4> hi leila+c > this may be a little off topic. But why/how did you pick Kenya? The reason I ask is because I grew up there and I am curious how Kenya factored into your decision to outsource..

Having said that - good luck with the project. I know Kenya has a great entrepreneurial spirit & I am sure the developers will be a great asset to your startup.'

</comment><comment><USER5> we would love to discuss this with you.

drop me a line at:

joe dot guilmette at gmail dot com</comment>


Best of Vim Tips - <AUTHOR> http://rayninfo.co.uk/vimtips.html

<comment><USER2> I find that terse resources like this (and for example Code Like a Pythonista: Idiomatic Python[1]) are the best learning resources. A true goldmine.

[1]: [http://python.net/~goodger/projects/pycon/2007/idiomatic/han...](http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html)

<comment><USER3> Agreed. But this page could certainly make use of some whitespace, to be more readable.

<comment><USER4> The PDF linked at the bottom is a little more palatable.

<http://gav.brokentrain.net/projects/vimtips/vimtips.pdf>

</comment></comment></comment><comment><USER5> This has been my primary means of learning vim.

Most of the web resources I've learnt from have been verbose and gradually introduced new ideas (i.e. the advanced bash scripting guide, or any of Steve's rants).

I've been hooked on OP for it's terseness and challenging obscurity; which I guess suits the subject matter.

<comment><USER6> An awesome way to learn new tricks is to hack with another vim user

<comment><USER7> Or vim golf if there are no users nearby.

</comment></comment></comment><comment><USER8> I believe this is the worst Vim Tips compilation I have ever seen. Utterly complicated commands with no real life examples. Also doesn't explain the difference between commands, motion commands and selectors. Which are crucial to the starter Vim user.

If you are an experienced Vim user, this might be a handy cheat sheet. If you're new to Vim, go look somewhere else.

<comment><USER9> Can you provide a link to something better? As a novice VIM user I can't get enough of these resources.

<comment><USER10> A bunch of things I like, in no particular order.

Vimcasts: <http://vimcasts.org/> (And keep your eye out for Drew's forthcoming book: _Practical Vim_.)

Vim University: <http://vimuniversity.com/>

Coming Home To Vim: <http://stevelosh.com/blog/2010/09/coming-home-to-vim/>

Efficient Editing With Vim: <http://robertames.com/files/vim-editing.html>

Why, oh WHY, do those #?@! nutheads use vi?: <http://www.viemu.com/a-why-vi- vim.html>

Your problem with Vim is that you don't grok vi: <http://stackoverflow.com/a/1220118/26702>

Vim anti-patterns: <http://blog.sanctum.geek.nz/tag/anti-patterns/>

</comment></comment></comment><comment><USER11> This is something to skim and spot bits you didn't know, leading you to the relevant bit of the fine manual. It has errors though, e.g.

        /\<\d\d\d\d\>   : Search for exactly 4 digit numbers
        /\D\d\d\d\d\D   : Search for exactly 4 digit numbers
        /\<\d\{4}\>     : same thing

The middle one is not the same as the other two since \D has to match something unlike the zero-width assertions of \< and \> for beginning and end of word.

</comment><comment><USER12> The only thing I have hated about learning vim, is the god awful styling of every resource related to it. Every article or piece of documentation is a big wall o' text with no effort put into styling or separating content. This has surprised me since I don't believe that the set of competent designers and vim users are mutually exclusive.

<comment><USER13> Maybe you haven't seen this:

[http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial...](http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html)

<comment><USER14> This cheat sheet is horrible. Subjectively and objectively:

* Bold fonts everywhere without enough vertical space: bold is for important stuff, not for copy text and the lack of vertical spacing makes the whole thing hard to parse.

* Keychars centered vertically instead of placed on a common baseline.

* Meanings of keys centered horizontally: considered very hard to read since forever.

* No explanation for `WORD`: is it for uppercase words? (yes, I know the answer)

* Instead of being logically grouped, the commands and motions are tied to the spatial location of their key: the logic and grammar behind most of Vim is hidden in profit of an opaque, maximalist and almost unreadable mess.

* Focus is put on raw memory instead of intelligence and acquiring instant exhaustive knowledge instead of learning naturally.

* QWERTY is only one of many keyboard layout standards: a lot of the keys represented here are located elsewhere in french AZERTY or other layouts. This has one important consequence: the physical location of the keys bound to each command/motion is not linked at all to the name of the command or its mnemonic or to anything relevant. Because `A` can be anywhere, learning the physical location of "Append at eol" on this specific keyboard layout or on any other makes no sense at all.

But we obviously don't all learn the same way.

<comment><USER15> This cheat sheet is not "objectively" horrible. If it were, that would mean there can't be any debate about it being horrible. However, there is a debate, which anyone can prove by providing a single counterexample, such as this one: I personally believe the cheat sheet is not horrible. Yay, it's not objectively horrible, QED.

I don't mean to single you out. It's just that I find it really frustrating when people state their views as objective fact (and I'm often guilty of this too as I can be very opinionated, but I try to avoid it when I notice), so the above is just my request for us to isolate actual objective fact from opinion and to discuss our opinions using constructive language instead of destructive language. "I don't actually like that because of reasons x, y, and z" does a lot more to foster an exchange of ideas and possibly change someone's view than "Your idea is horrible. Here's why... ."

As for the actual cheat sheet, I don't know much about typesetting, but I think the author put the meanings of the keys to the right of the key symbols to make room for the section below the keyboard. Since I use a QWERTY layout, I have no need to scan the key symbols, so this horizontal arrangement of key symbols and then meanings doesn't hinder my ability to visually scan the image for content. I can imagine you're right that this cheat sheet is of less use to non-QWERTY users, but that isn't applicable to me.

What's great about this cheat sheet is its division of commands that can be combined with motions and text objects (it calls these commands "operators") and those that don't, also indicating which ones change the mode from normal to insert and which ones don't. It doesn't have an explanation for "WORD" because this isn't a tutorial. This is a cheat sheet. It's great for people who've already taken a tutorial on Vim and are working on developing the muscle memory needed to use Vim proficiently. One quick glance and you now know it was `w' and `W' that went forward a word, and either you remember how each defined word or you look it up in Vim's help. But you know what to look up now. You don't have to leaf through hundreds of lines of text in a tutorial. You look at this cheat sheet for 10 seconds and you realize your tutorial never taught you f and t. You look them up and you're now 10% more efficient with Vim.

This cheat sheet shines in its use as a reference (as a "cheat sheet") for refreshing your memory on things that you learned just slightly too long ago to recall easily, and it's also great for filling in the gaps and making sure you learned most of the important Vim keybindings. The cheat sheet doesn't go into text objects, but the same author addresses them here <[http://www.viemu.com/a-why-vi-vim.html>](http://www.viemu.com/a-why-vi- vim.html>).

</comment></comment></comment></comment><comment><USER16> I don't know how many times I've hit this link from random googling.

Just like this sed one liners: <http://www.eng.cam.ac.uk/help/tpl/unix/sed.html>

</comment><comment><USER17> very nice, what I particularly liked was :

d/fred/ :delete until fred

y/fred/ :yank until fred

c/fred/e : change untill fred

I actually prefer this over ctf, dtf as it scales better</comment>


One day I'll give all the project managers a GCSE maths paper to complete - <AUTHOR> https://threadreaderapp.com/thread/1060150649298579456.html <comment><USER2> Actual source: [https://twitter.com/tobyontour/status/1060150649298579456](https://twitter.com/tobyontour/status/1060150649298579456)

twitter displays this thread OK. the linked page provides no extra value and removes the responses and spin-off threads.

<comment><USER3> > the linked page provides no extra value and removes the responses and spin- > off threads

To some of us, that _is_ the extra value.

Personally, if someone's going to write prose, I'd like to read it as such, instead of as a series of text messages.

</comment></comment><comment><USER4> Don't forget to fire anyone who can actually complete the tasks given; they'll be the ones your boss will hire to replace you.</comment>


Show HN: An Idea: Hitchhikr. Uberkiller? - <AUTHOR> I have an idea, and not much time to execute (just hired as network engineer). This idea response came from https://news.ycombinator.com/item?id=12758113 , and I was going to post a comment about it. Instead, I figure that it's probably more appropriate as an "Ask/Tell HN", and see if the hordes of uber-intelligent (lol, I made a funny, uber) peoples here can run with it.
I'm releasing this. There's no patent, copyright, trademark, or kitchen sink. I created it a half-hour ago. If you want to get me something if you use it, I'd like a good bottle of 12+ year scotch :)
Site/App: Hitchhiker (probably Hitchhikr.$something)
Reason: Uber-like, but drivers set price or offer free "hitchhikr"
Monetization: Skim % off of paid trips.
Idea: Hitchhiking was cool years ago, but fell by the wayside due to bad actors. The problem is 2-fold: "who are you picking up?", "and who's picking you up?" . Fb, LinkedIn, Twitter solve this. The second problem is "Do you get compensated?" You choose, and we do the hard part.
Details: Website and apps are portal to your account. Uses OAuth to Facebook, Google, Twitter, LinkedIN for identity. Personal Security is paramount, and is why we require established ident. Some rides can be free, and others may be paid. This is worked out during "acceptance".
There's 2 lists: People offering rides from-to at time (with a cost), OR people needing a ride from-to (and if they're willing to pay,and how much). We can sync bus routes as well, so people always know of slower, more expensive ways back (think of it as fail-safe).
Before a ride but after accepting, idents are shared between all parties. During the ride, GPS coords on a realtime map are published. Anyone with that link can view realtime where you are at, increasing personal security and making a timedata-based map log.
Freeloaders will be encouraged to pay by a system that keeps track of miles, similar to the way "Magic: The Gathering" cards are traded on Pucatrade. <comment><USER2> "I'm releasing this". You speak like if your idea was worth a million, then you say you didn't even do your homework.

This idea is nice and all that, but you can never beat the network effect without a lot of money or a new strategy -- which would be the true new insight.

<comment><AUTHOR> ?? I priced it as "free", and if it worked a bottle of scotch would be nice.

Yeah, its an idea. If you like it, do it. If you don't, there's 30 articles on the front page. I'm done with the negativity :/

<comment><USER2> So you only want feedback if it is good?

I've released my comments on your idea for free and you're being negative about them, blablablah.

</comment></comment></comment><comment><USER3> This sounds awfully like other ridesharing sites, like - just to pick a random one - flinc or roadsharing.com.

<comment><AUTHOR> Oh, I certainly didn't do my homework about existing companies/websites in that market. I just couldn't think of one on top of my head (Uber, Lyft). I've also never heard of those 2 sites before.

Just an idea. :)</comment></comment>


Awesome Papervision + Webcam Effect - <AUTHOR> http://interactive.digitalpictures.com.au/

<comment><USER2> This is such a compelling demo because it's based on common technology available to millions of people. Doing it with Flash and a webcam was a stroke of genius.

When stuff is in a lab it's less compelling. I saw one of the Microsoft multi- touch tables recently. My first thought? "Oh, it's just a giant iPhone" Apple's made multi-touch everyday, that was the hard problem.

</comment><comment><AUTHOR> According to my brother (and one of the commenters), this type of thing was already done with a Yu Gi Oh game. I feel like I'm behind the times here -- are there other examples of this effect in the wild? This is the coolest thing I've seen in a while :)

<comment><USER3> Something like this was already available as a commercial package in Japan.

Some of the features included a cube-shaped pedestal with which the virtual character interacted, as well as several other "symbols" which could have been used to reward, punish or "pleasure" the virtual character.

<comment><AUTHOR> Nice... a reasonable next step for this prototype would be to recognize finger tips (via some kind of glove) so you can start interacting with the virtual scene (I remember seeing something like this elsewhere...) -- my first instinct was to try to smush that green monster :)

</comment></comment></comment><comment><USER4> I actually saw a demo of this at a conference last week. At a cocktail hour afterward a guy had this working with his cellphone and his business card.

They're using it for some really cool alternate reality interactive events.

</comment><comment><USER5> Ah yes, fiducial markers are excellent. HIT lab in New Zealand have been doing great stuff with them for years...

</comment><comment><USER6> Kills my browser (Chrome and Firefox), which seems to happen often now that I upgraded to Flash 10.

Note to self: Never upgrade to the next version of Flash plugin before it has been available for a while.

</comment><comment><USER7> Very impressive. 20fps from Flash is pretty cool.

I printed out the template and it worked as sold! Hopefully they will make the source available.</comment>


Show HN: Cook – A Modern Build System - <AUTHOR> https://getcook.org <comment><USER2> A quick look at the documentation and it seems like this might hit a sweet spot in replacing Make, is that the intended goal?

Also what other builtins are planned?

<comment><AUTHOR> Yes, the original motivation for me was because I did not want to mess with Make or similar build systems every time I create a new project or make a big change. It is more similar to systems like Bazel or CMake, where you define tasks in a high-level way.

I internally already have rules for Android APKs (including NDK), embedding other build systems (CMake, etc), Git and JavaScript. Once they are ready, I would like to make them builtin as well. I'm also open to contributions. (:</comment></comment>


Pastor Cancels Koran Burning and Plans to Meet Imam - <AUTHOR> http://www.nytimes.com/2010/09/10/us/10obama.html <comment><USER2> And thus ends yet another well-orchestrated publicity stunt.</comment>


Show HN: MyCA – An easy way to get paid in Crypto - <AUTHOR> https://myca.is/ <comment><AUTHOR> Hey guys/gals, I just created an easy way to receive donations in crypto for Free.

I've been working on a crypto related side project for the past 2-3 weeks. It's called MyCA(myCryptoAddress.me).

The core idea is to allow users to get a crypto profile where they can list all their addresses.

The problem is that most blogposts in the crypto space end with: "I you'd like to donate: BTC: akjdlawjdlildwajdalwkjalkajdwljadwladwijdawlidawij ETH: 0xlasdjwalidjdalijdawlijwaladwjldiawjadwliaw LTC: ajdkjwkaldjdwaliwawadadlkjwlkd …"

With MyCA you get a profile like this:

[https://myca.is/patrekur](https://myca.is/patrekur) and you can add all the coins you want and get a shortlink to add to your blog or send to your friends.

No more fugly looking public keys! I'm still working on it, I would love some feedback on this guys/gals!

</comment><comment><USER2> Looks good!</comment>


Firefox and Chrome Plugins for Rackspace Cloud Servers (Alpha) - <AUTHOR> https://github.com/rackspace/groundcontrol

<comment><USER2> can also be found at <http://groundcontrol.rackspace.com></comment>