Silicon Valley talks a good game on 'basic income', but its words are empty - <AUTHOR> http://www.theguardian.com/commentisfree/2016/feb/28/silicon-valley-basic-income <comment><USER2> The reason I left academia and didn't pursue a post doc was because the prospects of making $32k in New York while trying to pay off a student loan, to maybe get an assistant professor position one day, wasn't appealing. I invested over 10-years of my life up to that point, but I certainly wasn't entitled to a job and believe me, a PhD is often a huge Liability when you're looking for a job. If you're making 20 pounds a day working for Uber then turn off the meter and go do something else.

</comment><comment><USER3> other articles by this author:

"Silicon Valley exploits time and space to extend the frontiers of capitalism" [0]

"Why growing old the Silicon Valley way is a prescription for loneliness" [1]

SV certainly has problems, but let's not escalate the debate to hysterical levels. There's a bit too much blanket generalization and hyperbole here for my liking.

[0] [http://www.theguardian.com/commentisfree/2015/nov/29/silicon...](http://www.theguardian.com/commentisfree/2015/nov/29/silicon- valley-exploits-space-evgeny-morozov)

[1] [http://www.theguardian.com/commentisfree/2015/oct/24/growing...](http://www.theguardian.com/commentisfree/2015/oct/24/growing- old-silicon-valley-prescription-for-misery)

</comment><comment><USER4> a trite and inaccurate article that equates all of silicon valley to data exploiters and tax evaders.

<comment><USER2> To be fair, there could be more done on the tax issue but the article was a hit job. And "United Square Ventures"? Seriously? Hard to have street cred writing when your butchering the name of one of the most well known VC forms.

</comment></comment><comment><USER5> It mentions Y Combinator and Albert Wenger as Silicon Valley supporters of basic income. I suspect that means... 2 or 3 people? The article lists more radical Italian economists.

It's completely valid to create a simplified model to understand certain social effects, but when you're looking at such a tiny number of people, grouping them into some sort of blob seems more likely to be an attempt to distort than to understand.

</comment><comment><USER6> There's a community of people online who like squashing logical fallacies. Thing is, articles like this represent a more subtle and high-level form of disinformation than the simply fallacies such people are trained to spot.

One aspect of this disinformation is treating "Silicon Valley" throughout as one big blob, an organisation or organised movement, rather than a group of diverse individuals and companies, each with independent opinions and objectives.

"YC is funding research on basic income - but Uber mines your data so how can these Silicon Valley elites be trusted?!!11"

Why do this? Because he wants to paint Silicon Valley as a _power bloc_. Remember that this is the writing of a public intellectual, and a well- connected member of the liberal establishment, in a major liberal newspaper, basically declaring that tech is a) too wealthy and powerful and needs to be cut down to size and b) their advocacy of basic income (libertarian socialism) is unsatisfactory, and only full-blown socialism will be deemed sufficient.

"Basic income, therefore, is often seen as the Trojan horse that would allow tech companies to position themselves as progressive, even caring – the good cop to Wall Street's bad cop – while eliminating the hurdles that stand in the way of further expansion."

In other words, "don't trust techies who claim to be good capitalists, there are no good capitalists".

Note that when an industry expands (which Morozov implies is _bad_ ) they sell more useful products and services to more people. When the welfare state expands and "flourishes" (which Morozov says is good), it forces more people to pay more money to other people.

\---

Near the end there's some illuminating new economic theory, which makes his thought process clearer:

"First, it is a way to compensate workers for the work they do while not technically working [...] Think of Uber drivers who are generating useful data, which helps Uber in making resource allocation decisions."

The data generated by one driver is of little value - probably no more than cents per trip.

"Second, because much of our labour today is collective – do you know by how much your individual search improves Google's search index? Or how much a line of code you contribute to a free software project enhances the overall product? – it is often impossible to determine the share of individual contribution in the final product."

The essential point stands for any complicated enterprise - how much does one line of code contribute to a _commercial_ project? As it's impossible to measure, there's only one way to settle the issue - worker and employer mutually agree on the value of worker's labour.

Evgeny's solution, remember, is to hand out more money to everyone. This would only be a fair system if the value of everyone's work was equal.

Note again the assumption that because many companies constantly mine data from everyone, and this data has some value, this means that everyone is creating value, all the time. The only value Uber and Google get from your data is the ability to better target services to you, so Evgeny's point is that companies should pay you for the ability to sell you stuff.

(I should point out that I think data mining is a shitty activity, and companies probably overvalue its benefit - on an unspoken "it's dubious so it must be useful" premise).

"First, that the welfare state, in a somewhat reformed form, must survive and flourish – it is a key social institution that, with its generous investments in health and education, gives us the freedom to be creative."

More freedom for those who get money, less freedom for those forced to pay for it.</comment>


Why bad games could be everything you hoped for - <AUTHOR> http://venturebeat.com/2013/04/27/dont-buy-that-game-they-said-you-wont-like-it-they-said/

<comment><USER2> The title of this article doesn't make sense. He mentions Sonic, Zelda, and Red Dead Redemption as if they were universally considered to be "Bad" games just because he didn't play them when they were first released.</comment>


Brush up your COBOL: Why is a 60 year old language suddenly in demand? - <AUTHOR> https://stackoverflow.blog/2020/04/20/brush-up-your-cobol-why-is-a-60-year-old-language-suddenly-in-demand/ <comment><USER2> For anyone criticizing COBOL for inducing alleged brain damage: yes, it is an old language, but it's a domain-specific language.

The use case was processing of record-based inputs in an administrative context, based on a technology millions of times less powerful than current hardware, yet still able to sustain a massive administration (old-school banking, anyone?)

No, you will not write a compiler or a kernel module in COBOL, just like you won't write it in SQL, APL or Matlab. But for the purpose it was built for, you'll be a lot more comfortable than in most alternatives.

<comment><USER3> > you'll be a lot more comfortable than in most alternatives.

That certainly wasn't on display here. The equivalent Java program (to use everyone's favorite punching bag) would be a tenth the length.

The value of SQL is easily demonstrated in a blog entry of less than 500 words. Now that I've had this introduction, I can't imagine ever thinking "oh this would be a great place to use COBOL!"

Fantastic and educational article, however.

<comment><USER2> > The equivalent Java program (to use everyone's favorite punching bag) would > be a tenth the length.

Not if you started dealing with real-life record format specifications, including fixed-precision numbers for currency, dates etc.

<comment><USER3> Yes, really. Every one of the dozen languages I've worked in professionally has support for fixed precision numbers. Processing structured records of data is a thoroughly solved problem.

<comment><USER2> We can debate and dispute this, but I'd rather propose: take a closer look at how this is handled in COBOL, and you'll re-evaluate.

In shortest words: variable declaration is also used as I/O format specification. Pretty much all of IO is just reading into a buffer, and the values are automatically mapped for your use. Sure you can use the same method in pretty much every general-purpose language (mapping C structs etc), but here it comes just natural.

<comment><USER3> How about an example? Present a short COBOL program that is actually more concise than a (say) Java program? The example presented in this blog article seems a likely candidate, and yet would be _much_ shorter in modern languages.

If you want to make the case that COBOL is still a good DSL for its niche (report generation?), it seems like there should be some straightforward examples. This is super easy to do with the aforementioned SQL or Matlab.

<comment><USER2> Wrong measure. COBOL is verbose (and I hate this), but the fit-for-purpose should not be measured in LOC. It's how natural it is to perform the work, and how easy it's for your successor to maintain your program.

</comment></comment></comment></comment></comment></comment></comment><comment><USER4> I'm not sure if I should feel bad about it, but I have no sympathy for any institution still using this dead language.

Our field evolves quickly. Cast aspersions on the issues of our field today all you want - fragmentation and trend-chasing are big problems, but the argument, "well it was built to last, and look, it's still running," doesn't excuse the horrible waste that comes from trying to maintain this ancient stack instead of taking a level-headed approach and investing appropriately in modern, stable technologies.

</comment><comment><USER5> Brushing up COBOL skills. Once there were lots of projects which lots of IT companies took, to migrate from COBOL to JAVA, some were successful and some went back. COBOL is verbose, feels like writing English essay. Programs are huge todo, Java can reduce 25%-50% of code sometimes, python can reduce 90%(pythonic). What stands out, newer versions of COBOL will be upgraded and that old code will still work. New version is COBOL 6 : [https://www.ibm.com/support/pages/cobol-v61-was-announced- wh...](https://www.ibm.com/support/pages/cobol-v61-was-announced-whats-new)

I won't be surprised as IBM has bought redhat, now you can execute python programs in mainframe. Why not do all that machine learning ans be close to data instead of migrating to Hadoop.

</comment><comment><USER6> Amazing these "dead" languages I first sorta-learned in the 80 - before being guided to Basic and C (and Foxpro). It's similar now to how folks need me to maintain their "ancient" Perl or PHP apps they just cannot find time to rebuild.

<comment><USER7> A parable I recall sometimes.

In Europe the grandfather has worked all his life to build a house, which will last for generations. The father has worked all his life to buy a car, which will last for generations. And the son is working with the aim to buy a yacht.

But in Japan each generation is working all life to re-build a house, which lasts only one generation.

</comment></comment><comment><USER8> There wasn't much coverage on how to make big bucks with COBOL :/</comment>


"Why I had to flee my $2,600 Bay Area rental for Seattle's 'cheaper' pastures" - <AUTHOR> http://www.seattletimes.com/business/real-estate/bay-area-transplant-worries-about-seattle-housing-following-san-franciscos-path/ <comment><USER2> Where would they move to next? Austin?</comment>


Amex for Developers - <AUTHOR> https://developer.americanexpress.com/home <comment><USER2> Wow, talk about too little too late. This kind of late to the party strategy is why startups will always be needed to lead innovation.

The irony is the highest ranking person at AmEx who really understands this is probably a pretty smart guy who had to fight and lobby for years to rally enough support to make this happen.

edit: Its worse than I thought. A quick search shows they brought in high level talent from Google, Amazon, etc. I'm willing to bet these guys pitched some cool ideas before leaving frustrated after their short tenures.

<comment><USER3> I've heard how Amex can be from a friend who has them as a client. They refuse to let her host their instance of her product on AWS because Amex's security team supposedly hasn't vetted AWS yet. This despite the kinds of customers Amazon already hosts on AWS (the CIA comes to mind). Not to mention that she has several other very large banks as clients that don't have a problem at all being hosted on AWS. Or that exactly zero of the data she deals with is in any way related to sensitive customer data because the product is used by Amex's marketing department.

As an Amex customer I'm glad to know they have strict requirements but the fact is, they're shunning a massive cloud infrastructure service like AWS over a piddly little local co-locted hosting company.

<comment><USER4> This is the story of many "enterprise" companies sadly. Some I work for, and while they are slowly changing, I would not say their own data centers (yes, read: data centers) are "little co-located hosting" companies. Usually they are entire departments, with entire budgets and multiple facilities, with many peoples jobs within that.

So while for the developer, moving things to AWS is a no-brainer, a time- saver, and a money-saver to the company, the amount of politics, and change, is so large these behemoths of companies are the last to consider it.

Security is a valid piece, but also a political move to keep the money from changing hands too rapidly.

<comment><USER5> Also not necessary a no-brainer on cost:

[http://www.prweb.com/releases/2016/10/prweb13764156.htm](http://www.prweb.com/releases/2016/10/prweb13764156.htm)

"But where labor efficiency is greater than [400 VMs per engineer], OpenStack becomes more financially attractive. In fact, past this tipping point, all private cloud options are cheaper than both public cloud and managed private cloud options."

This study does ignore the services supplied on top of basic compute, however.

<comment><USER6> Disregarding cost (haha) is OpenStack actually attractive to use? I was under the impression it was a bit of a bear to deploy and operate (my previous employer gave up, though I strongly suspect the project was never resourced properly in the first place).

<comment><USER7> Depends on what you mean by "attractive"...

Are any cloud providers UIs good? OpenStack provides decent APIs, and a usable UI. and I much prefer the CLIs OpenStack has to AWSs.

</comment></comment></comment></comment></comment></comment><comment><USER8> Imagine this potential future with me.

At first, it's just Amex. Then, to remain competitive, other major card vendors do something similar. Most of us (developers) still use something like Stripe for simplicity, but libraries start popping up that abstract away the vendor-specific APIs and make it easy to use them.

Long term, though, as more and more payments are handled electronically and online, this opens the door for a more competitive credit card market. Now, to compete with Visa or Mastercard, all I need is to get my API into those popular libraries and merchants can accept my card just as easily as theirs-- except I charge a lower rate.

You'll start seeing cards that are virtual only--allowing them to cut fees below what companies handling physical cards can do. With the payment process being decentralized, now even requiring a card number is unnecessary. Users specify the ways they'd like to pay for things in their payment client (browser? phone?) and this is negotiated behind the scenes with the payment types the merchant will accept.

Users and merchants can directly decide between more traditional payment means (centralized / fiat currency) and upcoming ones (decentralized / cryptocurrency). The limiting factor is no longer what the PoS (point of service) machine will accept, but what the popular payment processing libraries support (and the merchant has configured them to allow).

I don't expect we'll see Visa or Mastercard do this, but this could be a key first step toward a more competitive payment processing market (which has had the same entrenched players for decades).

<comment> joe-stanton Visa/Mastercard may well be forced to try something like this in order to survive. Banks are opening up their own API's for P2P payments (at least within the EU due to legislation). This could completely negate the need for intermediate "payment networks" (except the following).

However - I don't think you'll see a proliferation of new payment methods. The biggest problem here would be fraud mitigation, so it'd need to be a payment provider the merchant deems trustworthy enough.

Interesting times ahead. Amex are just doing the bare minimum to keep up here.

</comment></comment><comment><USER9> I'll play devils advocate. If your Netflix and this direct Amex integration saves you 1/2 percent per transaction that makes a <strike>huge</strike> difference to your bottom line.

Netflix current subscribers 83 million and average revenue per subscriber per month is $10.32.

        $83M * $10.32 = $857M total revenue per month.
        Assume 10% of transactions are Amex. $857M * .10 = $86M per month.
        Finally 1/2 percent of $86M is a savings $430,000 per month.

<comment><USER9> UPDATE: I originally thought it was a savings of $430,000 a year, but it is actually a savings of $430,000 a month.

ORIGINAL: I think I just talked myself out of my own argument. That $430,000 savings is basically the cost of one Netflix engineer. The technical debt to maintain separate Amex billing easily would exceed $430,000 a year.

<comment><USER10> why does the "cost of an engineer" continue to keep going massively up whenever these comparisons are made?

$430k? are netflix engineers that special?

glassdoor shows _sr_ engineers around $200k - i can't tell if they're including stock/bonus in that or not. Range start in $120k range. Yes, taxes, yes benefits, but... $430k?

<comment> ryan-c Salary + health care + payroll taxes + equipment + space + other overhead, etc.

<comment><USER11> As a general rule of thumb a full time employee costs a company twice their salary.

<comment> ryan-c I've heard that as well, but didn't want to dig up a citation.

</comment></comment></comment></comment></comment></comment><comment><USER12> Hmm. For the typical card-not-present (online) use case, stripe.com and paypal do a pretty darn good job of processing AMEX payment cards, as well as the others.

Tokenization is vital in this age of cybermiscreants. Ya don't want customer payment card data in your dbms.

The stripe.com API offers tokenization, and it offers the ability to send and validate data like zip/postcode, cvv and street address to cut fraud. They have an api for chargeback disputes, too. (The business I serve doesn't use it, instead we use the forms on their web site. We have dozens of disputes per decade, not worth programming.)

Squareup.com (Square) does a good job with card-present transactions.

And these service providers offer predictable processing fees.

I wonder what's special about the AMEX APIs? Maybe somebody from AMEX can explain? Some of us are always looking for better ways to serve customers and handle payments efficiently.

<comment><USER13> _offers tokenization_

s/tokenization/lockin/ # devil's advocate

<comment><USER14> Not sure why this is downvoted, but it's a fair point. I know of a small business with a lot of subscriptions and this became a big issue for them when provider quality declined.

</comment></comment></comment><comment><USER15> It's tempting to think this ship has already sailed and they're late to the party, but I'm actually more concerned.

Recently, we saw MasterCard announcing APIs; ultimately the card issuers are the real gatekeepers of their own data and their own integrations, and as more of them move to gain the control back that they ceded with their lack of public developer engagement, the role of payment processors becomes less clear.

Sure, for the near future, a payment processor can continue to abstract away from the actual card issuer; but as richer APIs surface, those may siphon away marketshare from payment processors.

<comment><USER16> Developers are still more likely to implement the one API that provides n payment methods than implement n APIs to get n payment methods.

That is, a payment processor like Stripe that provides AMEX, MC, Bitcoin or what ever is often more valuable than by being able to reduce complexity in the integration of services.

<comment><USER17> Right, it's not a choice of picking MasterCard's one API vs. Stripe (as an example)

It's Stripe vs. implementing 10ish card or payment APIs. The choice is easy and will continue to be for most consumer facing scenarios.

</comment></comment></comment><comment><USER18> Less than 10% of our customers pay with Amex. Can someone shed some light on why a developer would implement this for Amex payments vs just using Stripe, Auth.net or another payment gateway that supports Amex?

I am trying to understand the value here and how this will benefit the developer and/or consumer.

<comment><USER19> It's probably cheaper. If it saves you 1/2% it may be worth it if you're doing >$1mil.

(Note that I have no idea how much cheaper it is because they don't seem to have prices anywhere. Which makes me irrationally angry and looking forward to their all-but-inevitable demise over the next decade).

<comment><USER20> I would bet it's more expensive than Stripe. AmEX is known for being much more expensive than Visa and MC, and I wouldn't be surprised if Stripe loses money on every AmEx transaction (but makes it up on other cards).

<comment><USER21> Stripe used to charge a higher fee for AmEx cards, until August of this year. (Or at least, they did in Australia.)

</comment></comment></comment></comment><comment><USER22> On the landing page you may see a computer screen with PHP code, but they just offer JAVA and .NET SDK right now, fun fact!

<comment><USER23> To be honest, that code is pretty bad anyway. "If an arbitrary attribute table doesn't exist, ignore this row and process the next one", no exceptions thrown, no attempt to rectify the situation, no logging, no state change, just ignore it. I can't really think of a situation where you both don't care and don't want to know if your transaction completes.

That aside, this actually looks like it might even contain a SQL injection vulnerability. I'm no Drupal 7 expert (which this code seems to be) but having looked in to the code being ran here, db_table_exists seems to call down to `$this->connection->queryRange("SELECT 1 FROM {" . $table . "}", 0, 1);` in `DatabaseSchema_mysql::tableExists`, which contains an unescaped PDO query. I feel like anyone running this code is going to have a very bad day and it makes me untrusting of the rest of the work they're putting out.

<comment><USER24> I LOVE going around to websites and seeing their stock images for code. It's usually insanely unrelated, e.g. hadoop vendors with some random HTML/CSS pictures.

</comment></comment></comment><comment><USER25> AMEX in Australia: Maybe 1 in 10 merchants even accept it, for that 1 you pay a much higher surcharge.

<comment><USER26> IDK, I've used Amex in Australia for >50% of my credit card spend. All major supermarkets, department stores, most petrol stations and fast food chains accept it. I assume outside of those categories it really depends where you are though - the cafe across the road from my office accepts Amex with no surcharge and no minimum, but I'm in CBR in the heart of public service territory, so...

<comment><USER25> I goto the supermarket once a week so yeah, thats the only time I use it. I've given up asking otherwise.

<comment><USER27> Most merchants that also accept AMEX have a little sticker in their window. There are actually a lot more businesses that allow you to use an AMEX without a surcharge than there used to be: [https://maps.americanexpress.com/aushopsmall#/](https://maps.americanexpress.com/aushopsmall#/)

<comment><USER21> If you get time to watch the cycle of logos on the Paypass terminal while you're waiting, it will usually display whether it accepts Amex or not (and also logos now for Apple Pay & Android Pay too).

</comment></comment></comment></comment></comment><comment><USER28> It's interesting for sure, but as a consumer rather than a business, is there a use case for this?

<comment><USER29> Checking out on Delta via my Delta AmEx allows me to simply login to my AmEx account (saved via a password manager) and checkout without entering my actual card info. The convenience factor there is definitely nice.

</comment></comment><comment><USER30> Gotta try and make those lost Costco bucks somehow.

</comment><comment><USER31> API Standard Practices

Generally, our public APIs follow a standard set of best practices:

\- All APIs follow REST principles.

\- JSON is the standard payload. Some APIs may include additional formats such as XML and in such cases media type headers are used to specify your preference.

\- Due to the sensitive nature of most data that is exchanged with American Express, you will commonly find HTTP POST methods used where you may expect to find either GET or DELETE methods used. The primary purpose is to prevent sensitive search criteria from being used in the Query string, moving it instead to the Body.

\</comment><comment></comment><comment>----

So they claim to be RESTful yet not support GET or DELETE calls. Do they even realize what they are saying?

</comment><comment><USER32> This seems neat but not what I was expecting. I am writing a small django app to track my finances. This is just an app I am writing for myself to use personally. I would love to be able to get transactions directly from a credit card, I know it is possible there are other services (like mint.com) that can do it. Can anyone point me the right direction? If could get my Amex transactions as json or xml that would be great. As a personal project I wouldn't be willing to spend much money to get access to an API like what I am describing (if fees are associated with it).

</comment><comment><USER17> "Data Intelligence" is an ATM locator. This is not my idea of Data Intelligence.

Perhaps a better heading is called for there.

</comment><comment><USER33>
        > passionate American Express developers who are adding new code regularly.

"adding new code"

</comment><comment><USER34> This is interesting, but if you need card present payments and EMV, something like CardFlight's SDK [https://cardflight.com/sdk/](https://cardflight.com/sdk/) is going to be a better fit.

Disclaimer: My friend works there and has told me all about it.

</comment><comment><USER35> So can someone explain to me why one would use amex over stripe or braintree? Or why would one use mastercard's API or Visa's? They all have similar APIs right?

<comment><USER36> The biggest reason would be price. I don't know the amex payment pricing or how it differs from stripe/braintree, but cutting out the middle man has got to be cheaper.

I run a small business using stripe and cc processing fees are a big hit. The service and support is amazing and it's so easy to use, but it's not cheap. They charge the same for every card type when the card providers charge in- person merchants much different (and lower) rates.

<comment><USER37> Are you doing card-not-present? That's going to be a fee hit over card-present regardless of processor.

If you're doing card-present, look into traditional acquirers and also chip- and-PIN. You'll pay considerably more up front, but less over time due to the fee difference, and you'll also no longer need to sweat being on the wrong end of the EMV liability shift.

</comment></comment></comment><comment><USER38> Slightly off-topic, but what a strong week for PHP -- the code in the Mac image is PHP code

</comment><comment><USER39> This is hilarious. 20 years late? Nothing to see here, move along.

WhitneyLand is correct.</comment>


Is my NODE_ENV correct? - <AUTHOR> https://nodeenv.com <comment><USER2> Is this an advertisement for create-react-app and create-react-native-app?

<comment><AUTHOR> I didn't think about that actually. I originally didn't have them but I needed something that could say Yes.</comment></comment>


The Algorithm And The Crowd - <AUTHOR> http://howtosplitanatom.com/news/the-algorithm-and-the-crowd/

<comment><USER2> The separation is generally not so clear as the article suggests: take Google search as an example. A powerful algorithm is used to rank the search results by relevance. But relevance is to a large degree determined how often pages are referenced - so it is based on the opinion of the crowd.

</comment><comment><USER3> Pretty abstract. I don't know if it really even matters. Just make cool stuff.</comment>


1950's "Space Explorers" Sci-Fi Series Rediscovered - <AUTHOR> http://www.dailygalaxy.com/my_weblog/2009/05/1950s-space-explorers-scifi-series-rediscovered-.html <comment><USER2> The article is interesting, but the website, which the article mentions but doesn't link to, is better. <http://www.thespaceexplorers.com/></comment>


Did Twitter Just Kill TweetUp Minutes After Its Launch? - <AUTHOR> http://techcrunch.com/2010/05/24/did-twitter-just-kill-tweetup-minutes-after-its-launch/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+Techcrunch+(TechCrunch)

<comment><AUTHOR> so they kill ads, what's next?

<comment><USER2> ASCII porn :)

Seriously, I wouldn't be surprised if they started filtering links to adult content, as they already to do avoid being a malware vector.</comment></comment>


How to buy a $35,000 brand-new electric car for under $14,000 - <AUTHOR> http://www.marketwatch.com/story/how-to-buy-a-35000-brand-new-electric-car-for-under-14000-2016-11-02 <comment><USER2> All you have to do is live in Colorado, make sure all the confusing tax credits apply to your income tax situation, and then qualify for a confusing dealer financing scheme.

Sounds applicable to all of ~20 people...</comment>


Ask HN: What tools/add-ons/sites do you use to get most out of Hacker News? - <AUTHOR>

I use hckrnews.com along with chrome extension to get 'Top stories' and also to catch up with days when I don't have access to internet. I'm curious what other add-ons other members use? I also noticed people reference old threads in discussions. How do you keep track of them? <comment><USER2> I love the weekly-newsletter format, so i very much appreciate Kale Davis' hacker newsletter: [http://www.hackernewsletter.com](http://www.hackernewsletter.com)

Other than that i use MiniHack on iOS ([https://itunes.apple.com/be/app/minihack-for-hacker- news/id6...](https://itunes.apple.com/be/app/minihack-for-hacker- news/id631108846?mt=8))... I rarely use the website

</comment><comment><USER3> I use RSS for nearly everything. RSS allows you to avoid the fear of missing great stories or content due to timing, groupthink flagging, etc. You can also follow individual user comments with RSS with some quick mods.

An added bonus is that RSS preserves [dead] stories. Once a story is [dead], it won't show up in hn.algolia.com search results, even though it still shows up on HN.

<comment><USER4> _You can also follow individual user comments with RSS with some quick mods_

Can you elaborate on how the mod works?

<comment><USER3> I fed the custom hn.algolia.com search to something that made it into an RSS feed. So if I wanted to get an RSS feed of all of pg's comments, you could use this as the source link:

[http://hn.algolia.com/#!/story/sort_by_date/prefix/0/author%...](http://hn.algolia.com/#!/story/sort_by_date/prefix/0/author%3APG)

Then I made a custom yahoo pipe to create an RSS feed, taking a username as a parameter:

[http://pipes.yahoo.com/pipes/pipe.run?_id=b5d191396ff8e04acd...](http://pipes.yahoo.com/pipes/pipe.run?_id=b5d191396ff8e04acddcaedebc2d176d&_render=rss&username=pg)

<comment><USER5> I had the same need, but didn't want to use Yahoo! pipes, so I submitted a small patch:

[https://github.com/algolia/hn-search/pull/27](https://github.com/algolia/hn- search/pull/27)

<comment><USER6> Taking that one step further, you can convert RSS to NNTP via [http://gwene.org/](http://gwene.org/)

<comment><USER5> This is awesome and brought a big smile to my face! Some questions:

\- Is trn still the most awesome news reader? It's been a while since I've used NNTP.

\- Does gwene.org still update? Every feed I found in the search results was last updated in March 2014 :(

\- Apart from RSS->NNTP being cool, is there any real situation in which I'd want to use this?

</comment></comment></comment></comment></comment></comment><comment><USER7> I'm constantly doing one of the following:

[https://duckduckgo.com/?q=site%3Anews.ycombinator.com+someth...](https://duckduckgo.com/?q=site%3Anews.ycombinator.com+something)

[https://www.google.com/?q=site:news.ycombinator.com+somethin...](https://www.google.com/?q=site:news.ycombinator.com+something)

[Aside: I really like the DDG mission, but am finding myself more frequently (and unfortunately) returning to Google for technical searches, and switched back to it as my default. I'm finding more relevant results at the top of Google's SERPs. Both DDG and Google diminished IMO when they tried to become "smarter."]

<comment><USER8> How that compares to [https://hn.algolia.com/](https://hn.algolia.com/) ?

</comment></comment><comment><USER9> I use [http://www.tophackernews.net](http://www.tophackernews.net) by a friend, which captures only news that hit front page top 3. Mainly follow @TopHackerNewsHQ to read on Twitter.

</comment><comment><USER10> I almost exclusively read from:

[http://www.daemonology.net/hn-daily/](http://www.daemonology.net/hn-daily/)

</comment><comment><USER11> Just HN Enhancement Suite, which does a whole heap of things like collapsible comments, an (arguably) nicer site design / layout, as well as a bunch more.

[https://chrome.google.com/webstore/detail/hacker-news- enhanc...](https://chrome.google.com/webstore/detail/hacker-news- enhancement-s/bappiabcodbpphnojdiaddhnilfnjmpm)

</comment><comment><USER12> I use HN RSS feed with [https://www.feedsapi.org/](https://www.feedsapi.org/) to get all the stories in full length forwarded to my email inbox and read them in full length in theoldreader reader. I now and then use [http://www.ihackernews.com](http://www.ihackernews.com) on the go (on my smartphone).

</comment><comment><USER13> [http://codecondo.com/hacker-news-web-apps/](http://codecondo.com/hacker-news- web-apps/)

</comment><comment><USER8> Old thread with suggestions [https://news.ycombinator.com/item?id=4474078](https://news.ycombinator.com/item?id=4474078). Personally I feel the strong desire to have collapsible comment threads, but still haven't invested any time into finding proper solution.

<comment><USER14> I use 'hckr news' extension for Chrome which has collapsible threads (and also highlights new comments):

[https://chrome.google.com/webstore/detail/hckr- news/mnlaodle...](https://chrome.google.com/webstore/detail/hckr- news/mnlaodleonmmfkdhfofamacceeikgecp)

</comment></comment><comment><USER15> I usually only check "Ask HN" and read the top stories posted by Hacker News on Twitter.

</comment><comment><USER16> I use HackerNode to read HN on my iPhone.

</comment><comment><USER17> Minihack is the best for iPad

</comment><comment><USER18> FireFox</comment>


"Openntpd is not vulnerable." - <AUTHOR> http://article.gmane.org/gmane.os.openbsd.tech/40107/ <comment><USER2> _Around 10 years ago it was written by Henning, at my request because the ntpd source code scared the hell out of us_

And this is what I like about the OpenBSD community.

<comment><USER3> Another bit I find interesting

>At the time communications with the ntp team showed they had little interest in removing unused functionality from the ntp.org code, or any help with our form of source code audit.

Am I the only one who enjoys removing unused code? My favorite commits are the ones with negative net lines. This might be a liberal usage of the word "unused" though...

<comment><USER4> When I evaluate programmers I give effectively three times as much credit for removing a line of code than adding one. Sort of .5 for adding a line, 1.0 for changing a line, and 1.5 for reducing by a line. The principle being that well understood code should converge on the simplest correct solution over time.

</comment></comment></comment><comment><USER5> _Because it was a rewrite, the major benefit in openntpd is that it priviledge seperated. If problems like these were found, they would not be realistically exploitable. Furthermore openntpd is a modern piece of code <5000 lines long written using best known practices of the time,_

And it very probably has zero memory safety bugs (pretty easy in 4,000 lines of code, as measured in a tarball I just downloaded), and privsep provides further defense at the cost of adding a lot of complication to the code... but I'm getting bored of this approach to security. For new code - I know openntpd is not new code, but I don't think this approach is popular in general yet - why not switch to Go or (when it's stable) Rust, or even JavaScript or Lua, and end up with essentially zero chance of such bugs being possible, regardless of how carefully or not the code was written, without the need for any privilege separation code? For something like NTP or SSH or most of the other daemons written in C people have sitting around, with the possible exception of high performance HTTP servers, the CPU overhead of any those languages is very unlikely to be noticeable (and privsep has overhead anyway).

(Admittedly, this would not help with non-memory-safety attacks such as NTP amplification...)

In particular, I'm going to make a bold claim: for OpenBSD to continue to release new daemons written in C, as it does, is irresponsible for a security- focused distribution. As much as they like the language - I do too -, as much as the whole expertise and design of the project is based on C, such that there is a naturally huge disincentive to switch languages, and as much as OpenBSD is able to minimize (but not eliminate) security advisories of this type, memory corruption is _so_ dangerous that building a truly secure system requires making as much code as possible immune to the possibility of it.

(Hmm, I guess running AddressSanitizer in production would be nearly as good.)

<comment><USER6> OpenBSD has none of those languages in the base OS; given they won't update gcc or switch to clang, Lua is the only one that they could support (NetBSD has it in base) but there is not a lot of system software written in Lua (alas). It doesn't have a depth of libraries that Go does. JavaScript would probably never pass review, so Rust is possibly a future option, unless a system programming community springs up around Lua.

<comment><USER5> FWIW, the default Go compiler doesn't depend on GCC or Clang, and doesn't do as many optimizations which could be dangerous or buggy, which I gather is the main problem with adopting LLVM?

(I don't have much experience with Go, though.)

<comment><USER7> AFAIK neither Rust nor Go supports all the platforms that OpenBSD runs on.

</comment></comment></comment></comment><comment><USER8> For those interested about the srand comment I believe he was referring to arc4random [https://www.youtube.com/watch?v=aWmLWx8ut20](https://www.youtube.com/watch?v=aWmLWx8ut20)

<comment><USER9> It's probably the fact that using time() for seeding a PRNG is a really poor choice.

<comment><USER10> It isn't a problem if all you need is a deterministic sequence of numbers that are pseudo-random like what rand() provides. Not every use of a PRNG involves cryptographic security or potentially dangerous exposures of internal state.

<comment><USER9> There are concerns with using time() as a seed other than security. Besides, consider what you are typically trying to express: initialize my PRNG with a random seed. Almost never are you trying to express: initialize my PRNG so that all runs in the same second will behave identically.

<comment><USER10> If you're generating random test case input on a single machine, time() is a perfectly reasonable way to seed a PRNG. A super-robust entropy source isn't a necessity when you just want something nominally random between intermittent runs.

<comment><USER11> _...nominally random between intermittent runs._

That's a lot of caveats. Suppose you want to run multiple times in one second. Suppose you want statistically uniform random numbers to ensure even coverage of test cases.

<comment><USER12> Also if your clock resets on boot for some reason, and boot time is predictable.

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> Too bad openntpd isn't standards compliant.

Fortunately, phk is already fixing ntpd. [http://phk.freebsd.dk/time/index.html](http://phk.freebsd.dk/time/index.html)

<comment><USER7> "isn't standards compliant" how?

<comment><USER14> I believe gonzo meant "isn't portable", as OpenNTPD uses OpenBSD-only APIs. See this cousin thread: [https://news.ycombinator.com/item?id=8778577](https://news.ycombinator.com/item?id=8778577) .

<comment><USER13> Yes, this non-portability is part of the openbsd playbook and strategy. There is a "non-portable" version of libressl, too.

<comment><USER7> There's a non-portable version of OpenSSH too. This strategy produces high- quality software while making developers' lives easier. (All in my highly- biased opinion)

<comment><USER13> It would be no more difficult for OpenBSD to produce one version, but that wouldn't fit with the strategy.

<comment><USER14> I don't see why the OpenBSD developers would want to avoid their strategy of producing secure code.

</comment></comment></comment></comment></comment></comment></comment><comment><USER15> I thought Linux distributions stopped using ntpd a couple of years ago.

On Fedora, which powers the computer I'm writing this from, Chrony is in use, not ntpd, so I guess my PC is immune from whatever is floating out there.

<comment><USER16> Ubuntu has ntpd.

<comment><USER15> You can remove it and install Chrony.

</comment></comment></comment><comment><USER17> Code has bugs. The less code you write, the less bugs you have. It's pretty simple really. OpenBSD has always done this well and taken a lot of criticism for it.

</comment><comment><USER18> Excerpt from our several year old netbsd build scripts with annotations:

        install_openntpd() {
          install_from_source net/openntpd ### via pkgsrc
          cp /usr/pkg/share/examples/rc.d/openntpd /etc/rc.d/
          replace_service 'ntpd' 'openntpd' ### idempotently edits rc.conf to ensure ntpd=NO and openntpd=YES
        }

The openntpd default pool.ntp.org is a sane default that also doesn't leak host OS information as do most NTPd-based default confs.

</comment><comment><USER19> "The portable version is outdated and in need of a maintainer." \- [http://www.openntpd.org/](http://www.openntpd.org/)

The most recent version for OpenBSD is 4.6 while the "portable" one is 3.9 .

<comment><USER20> The OpenBSD 5.6 release notes [http://www.openbsd.org/plus56.html](http://www.openbsd.org/plus56.html) show changes, so the non-portable version is being updated. You will see changes in previous releases.

<comment><USER15> > The OpenBSD 5.6 release notes > [http://www.openbsd.org/plus56.html](http://www.openbsd.org/plus56.html) > show changes

I don't see anything about openntpd on that page. Are you makign stuff up?

<comment><USER20> > I don't see anything about openntpd on that page. Are you makign stuff up?

The ntpd they mention is OpenNTPD see [http://www.openbsd.org/faq/faq6.html#OpenNTPD](http://www.openbsd.org/faq/faq6.html#OpenNTPD)

So, no, I am not "makign stuff up".

</comment></comment></comment></comment><comment><USER21> Dudes... I don't really care... I just want a way to synchronize my VPS clock with that of other, established, secure clocks... because DigitalOcean (okay, go ahead and downvote me) is not quite synched, and neither is Linode, and my server!!! Oh good Lord my server don't know the time at all! Dudes... just agree on something that I can install SIMPLY... 'cuz the infighting between ntp and openntp ain't nothing that I care to be involved with... JUST MAKE IT EASY!!!!

<comment><USER22> What are you whining about? What DO, Linode, etc. Have to do with anything????

OpenNTPd is extremely easy to configure. The problem is that it's not the default choice while, apparently, it should be. Same goes with almost all OBSD-derivates (OpenSMTPd, OpenSSHd, OpenNTPd, etc.).

Here is the first guide at google: [https://wiki.archlinux.org/index.php/OpenNTPD](https://wiki.archlinux.org/index.php/OpenNTPD)

Feel free to ask, if you feel that there's something exotic that needs to be done before getting OpenNTPd to work.

<comment><USER23> > What are you whining about? What DO, Linode, etc. Have to do with > anything????

Well, there's a good argument to be made that your VPS provider should be running an accurate time daemon (whatever that might be), and you should just have paravirtualized access to the current time, instead of every VM being expected to run some form of ntpd on its own, and the hypervisor track scores of virtual clocks.

There's even a good argument to be made that running the NTP algorithm in a VM doesn't work: [https://www.usenix.org/legacy/event/osdi10/tech/full_papers/...](https://www.usenix.org/legacy/event/osdi10/tech/full_papers/Broomhead.pdf)

<comment><USER22> Oh I see. I didn't knew that, I just connected the NTPd daemons either to the default NTP server or to the ISPs/Provider's NTPd server. Hm, didn't knew that VM had such issues with time servers.

</comment></comment></comment></comment><comment><USER24> You can also use timedated, an optional daemon packaged with systemd. Works really well for me, I just turned it on and it hasn't complained since.

The command you'll want to run is: # timedatectl set-ntp true

And it'll have you within a deep fraction of a second from a decent timeserver in about ten seconds, and keep you there indefinitely.

NOTE: For the person who downvoted this because they don't like systemd, seriously, you need to find a better hobby.

<comment><USER25> You're being downvoted because this article is about the security of NTP implementations, yet your basis for recommending systemd-timesyncd is that it "works really well" for you. Well, ntpd worked well for me too but that didn't make it secure. You offer no basis for thinking systemd-timesyncd is secure, and yet there are many indications that it might be insecure: 1.) it's new, 2.) it wasn't designed with security in mind (unlike openntpd), and 3.) systemd's other reimplementation of a complex, hard-to-secure, UDP-based protocol (DNS) was discovered to lack even the most basic security protections[1].

Even someone who likes systemd's init system functionality should think really hard before using systemd's DNS and NTP appendages. This kind of stuff needs the attention of security experts. It can't just be reimplemented as an afterthought and be secure.

[1] [http://seclists.org/oss-sec/2014/q4/592](http://seclists.org/oss- sec/2014/q4/592)

<comment><USER26> It being a simple NTP client and not a server means that it has a vastly reduced attack surface. That's good. But that doesn't mean we shouldn't wait and see how buggy it actually is.

<comment><USER27> And their named DNS daemon was to be a stub resolver. Then it grew a cache. And now it seems to have developed a insecurity that most other DNS daemons out there dealt with a decade ago...</comment></comment></comment></comment>


Show HN: Small Clojure Interpreter - <AUTHOR> https://github.com/borkdude/sci <comment><AUTHOR> This "small" Clojure interpreter can be used from Clojure on the JVM and GraalVM and JavaScript/ClojureScript. It implements a subset of Clojure. The main goal is be able to execute snippets of Clojure in environments where you normally don't get to use Clojure's "eval" or where it isn't safe to do so.

Its main use is being the interpreter for [https://github.com/borkdude/babashka](https://github.com/borkdude/babashka), a native Clojure scripting tool which can be used to alleviate your bash pains, but it could potentially be interesting for other use cases too.

Malli ([https://github.com/metosin/malli](https://github.com/metosin/malli)), a Clojure schema library, is using it for letting users express in code what they cannot do using the normal configuration language.

Closh is investigating if sci can be used to compile closh to native code using GraalVM: [https://github.com/dundalek/closh/tree/feature/sci](https://github.com/dundalek/closh/tree/feature/sci).

Undocumented features (still figuring out the best API):

\- Explicit allowing and denying of certain symbols.

\- Limit evaluation of infinite sequences.

A pure Java API is certainly possible if this is useful to anyone.

<comment><USER2> It would be really nice if you could expose the parser to Javascript as well. I could use this to integrate with some Javascript tooling in my CLJS frontend (e.g. purgecss extractors).

<comment><AUTHOR> There is a parser lib which was extracted from sci: [https://github.com/borkdude/edamame](https://github.com/borkdude/edamame). I guess that could have a JS interface, but I'm not sure what it would look like to make it useful for you. Hit me up on Clojurians Slack or Twitter so we can discuss your needs.

</comment></comment></comment><comment><USER3> While we are all talking about self crafted Clojure runtimes. Here is mine.

Me and a friend wrote a small VM to run Clojure. We designed a costum bytecode based on LuaJit [1] for it and a compiler in Clojure to compile Clojure to that Bytecode.

We had to versions of the VM originally in pre-1.0 Rust but that was always breaking. Then we wrote it in C [3].

For those interested in the GC, we use the OpenSource 'Memory Pool System' [2] originally designed for Dylan.

Its very nice incremental GC system. It fairly simply use, you basically just implement a couple functions related to parsing your objects and the MPS gives you a neat incremental GC for free. Lots of other neat features that are easy to use out of box.

Originally I wanted to write a simple JIT for it but I never actually did it.

[1] [https://github.com/clojit/clojit- doc/blob/master/Bytecode%20...](https://github.com/clojit/clojit- doc/blob/master/Bytecode%20Spec.md)

[2] [https://www.ravenbrook.com/project/mps/](https://www.ravenbrook.com/project/mps/)

[3] [https://github.com/clojit/clojit-cvm](https://github.com/clojit/clojit- cvm)

<comment><USER4> Nice! I hope you will consider moving back to Rust when things have stabilised. Cross-platform compilation is much easier in Rust than in C. I think it's one of the big factors driving developers to it along with memory safety.

<comment><USER3> I would but I not really working on this anymore. There are some issues with MPS and Rust that we never fully figured out. MPS relies on scanning stack points and scaning the registers, some of those default function might not totally work with Rust.

We never figured out what the right approch was.

But there are defently very nice things you can do with Rust. The Servo team has to solve some of the same issues with and they have some interesting blogposts about memory managment.

</comment></comment></comment><comment><USER5> I am constantly impressed by how prolific Borkdude, feels like every couple of months a whole new conceptual library is released...

</comment><comment><USER6> This is cool stuff, but submitting it twice 24 hours apart is not that cool: [https://news.ycombinator.com/item?id=21167211](https://news.ycombinator.com/item?id=21167211)

<comment><AUTHOR> Sorry about that. Some time after I posted that I realized "Show HN" would be the better format to show this project, but couldn't rename the title. If I'm violating any HN code of conduct, feel free to delete this post.</comment></comment>


Redis data model and eventual consistency  - <AUTHOR> http://antirez.com/news/36 <comment><USER2> This is a very interesting thought experiment. The consistent nature of Redis cluster has significant advantages and disadvantages, and an eventually- consistent solution might be better for many applications.

> * Sets are merged performing the set union of all the conflicting versions.

That's an interesting approach. Dealing with compound types is very tricky in this kind of system, because it's not clear which of the options are what you want. Perhaps I am not following your approach correctly, but this seems to have a high probability of causing deleted items to reappear in a set when nodes come back online (or partitions heal). Obviously intersection isn't the right operation either, because that will cause similar consistency problems with added items.

It seems like a quorum-based approach to handling sets would give a much better consistency experience for most applications, potentially at the cost of doing more reads. I wonder if antirez considered that approach.

> The Dynamo design partially rely on the idea that writes don't modify > values, but rewrite an entirely new value. In the Redis data model instead > most operations modify existing values.

This is something that Rich Hickey touches on in his 'value of values' talk (<http://www.infoq.com/presentations/Value-Values>). Making values immutable and copying them on writes simplifies many of the complexities of merging, especially if techniques like vector clocks are used to provide ordering information.

<comment><USER3> > but this seems to have a high probability of causing deleted items to > reappear in a set when nodes come back online.

Basically there is no right way to do this, it depends on what the application goal is. For instance Dynamo queries the application in this case, so the application can merge things if needed, intersect things otherwise, and so forth.

For Sets the union was picked in order to guarantee safety. For instance if you model a shopping cart this way, and there is a net split where a client gets into a minority partition and writes a new item (as the user put a new item in the shopping cart during the partition), if you do union on merge the user will still have the item.

In other applications of course the side effect of this (resurrection of deleted items) is not a good idea, but there are different ways to deal with it. For instance in the case of the shopping cart, this can be made more resistent by adding special items that mark old items as deleted, letting the application displaying only the right thing.

<comment><USER4> How about providing the ability to set merge handlers in Lua for different data types / keys?

Or if there are 3 different and well known strategies, somehow let users pick one and set it as a default. If not let users run Lua scripts that will be executed to resolve conflicts in a custom way.

I do this for CouchDB, it has a very convenient changes feed that can also stream conflicts when they appear. So there is a custom (and separate) conflict resolver process that resolves conflicts in an application specific way.

For consistency though you'd need a way to run those synchronously somehow as soon as you detect the conflict.</comment></comment></comment>


Please Stop "Geeking Out", help others understand and help simplify - <AUTHOR> http://www.daedtech.com/please-stop-geeking-out/ <comment><USER2> I don't really agree with this. We do people a dis-service if our goal is to simplify things rather than help equip people with the knowledge and skills they need to truly understand a subject.

Things can only _be_ simplified and abstracted when there are people who are willing to get into the weeds and 'geek out' about the hard to understand and hard to explain stuff. A lot of that knowledge is hard earned, through great perseverance and personal discipline. There is joy in that which many people miss out on. I wish _more_ people indulged in geeking out.</comment>


Show HN: Underscore.js for Objective-C - robert-boehnke http://underscorem.org

<comment><AUTHOR> This brings to mind google's warning re: the use of functional idioms in Java: [http://code.google.com/p/guava- libraries/wiki/FunctionalExpl...](http://code.google.com/p/guava- libraries/wiki/FunctionalExplained) Objective-C blocks make things smoother than Java, but it still feels to me like the language _wants_ you to have a bunch of small objects sending message to each other. (rather than doing function composition)

That said, I use underscore.js in nearly all of my browser and node.js code, so I'll certainly consider this when the iPhone train comes back around.

</comment><comment><USER2> If you embrace the Smalltalk roots of Objective-C, you'll be a lot happier, and "all those braces" are completely comprehensible.

<comment><USER3> No, you need to embrace how Objective-C is written today because blocks (and all those braces) are a fundamental part.

<comment><USER2> I think that's what I was trying to say, but apparently didn't make it clear.

</comment></comment></comment><comment><USER4> There are also ports of _Underscore.js_ to Perl & Lua:

* <http://vti.github.com/underscore-perl/>

* <http://mirven.github.com/underscore.lua/>

<comment><USER5> And AS3, if you're into that sort of thing (self-plug): <https://github.com/amacdougall/underscore.as>

</comment></comment><comment><USER6> Interesting if you're already used to underscore.js.

The more Objective-C way to do this, without the dot syntax and the need for wrapping, is to add categories (sets of extra methods) to the NSArray and NSDictionary classes.

The square brackets don't impair chaining in any way - you can still [[[myDict allKeys] filter:filterMethod] invoke: invokeMethod]

<comment> robert-boehnke I've tried that, but once you pass in blocks as arguments, the whole thing becomes a lot harder to read. I have no clue how to indent

        [[array filter:^BOOL (id obj) {
                return [obj passesTest];
            }]
            map:^id (id obj) {
                return [obj transformedObject]
            }];

Edit: Also, it's good practice to prefix your categories methods so they don't clash with other category's, so you'd have something like us_map:, us_filter:, reducing readability even further.

<comment><USER7> It should be a category on NSObject so it supports anything that supports fast enumeration which could be anything. And the indentation in the above is correct. The way you've implemented it is "anti-conventional" and bad form, imho.

<comment><USER8> Objective-C is a superset of C, functions can be just that - a function. Especially for higher-order functions like map and filter. Not everything needs to be glued to an object.

<comment><USER7> No shit sherlock.

That's not what he's doing, he's exposing blocks as properties because he couldn't wrap his head around indentation which is the wrong motivation. Maybe read the source before condescending next time.

<comment><USER8> Uh, I did read it. Yes, it's a bad idea. So is adding random things to NSObject for protocols that it does not conform to. That's actually worse, I'd argue, since you suddenly have -[UIColor map:]. What does that do? Pass RGBA NSNumbers to the block and return a new color? Throw an exception? Silently disregard the message and return nil? At least this approach has type checking.

Just declare a normal function, which can correctly throw a compiler warning if you try to pass anything that does not conform to NSFastEnumeration to it.

</comment></comment></comment></comment></comment></comment><comment><USER8> What's the advantage of implementing map/filter as property accessors of a wrapper object instead of just doing:

        NSArray* map(id<NSFastEnumeration> enumerable, id(^)(id object) block);

?

Obviously, you'd still want to have a prefix of some sort for namespacing.

<comment> robert-boehnke In the case of NSDictionary, Underscore.m's map iterates over objects and keys. Fast Enumeration only iterates over the dictionary's keys, when you probably want the value or both.

But I agree, supporting any class that implements NSFastEnumeration would be nice to have.

<comment><USER9> You may already know this, but you can also enumerate over NSDictionary entries using enumerateKeysAndObjectsUsingBlock: [1] and enumerateKeysAndObjectsWithOptions:usingBlock: [2].

The latter giving you the ability to enumerate in reverse order or spread the enumeration across multiple cores using Grand Central Dispatch.

[1] [https://developer.apple.com/library/mac/documentation/Cocoa/...](https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/nsdictionary_Class/Reference/Reference.html#//apple_ref/occ/instm/NSDictionary/enumerateKeysAndObjectsUsingBlock): [2] [https://developer.apple.com/library/mac/documentation/Cocoa/...](https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/nsdictionary_Class/Reference/Reference.html#//apple_ref/occ/instm/NSDictionary/enumerateKeysAndObjectsWithOptions:usingBlock):

<comment> robert-boehnke It's exactly what's used internally :)

</comment></comment></comment></comment><comment><USER10> It's cool that we have an Underscore for Obj-C now, but I'm really excited about this because of the project's opinion that bracket syntax sucks.

It's always been a curiosity that a company like Apple, who prides themselves on making great user interfaces can't even get it together to make a programming language that's nice to look at. They seem to care about everyone BUT their own kind these days...

<comment><USER11> I just spent the last month learning about iOS (and Obj-C). I didn't find the square brackets that terrible. Explicit is better than implicit after all. It seems like dot notation is best used for properties, but I will reserve judgement until I have more than just a month of casual experience.

<comment><USER12> Indeed. Plus I think well-designed Objective-C is some of the prettiest code out there. Though I've been using it for a few years now almost exclusively (for the most part) so maybe I am a bit biased.</comment></comment></comment>


American TV Neglected the Saddest Story in the Olympics - <AUTHOR> http://1045theteam.com/american-tv-neglected-the-saddest-story-in-the-olympics/ <comment><AUTHOR> I have no doubt that many HN readers will wonder why I've posted this. It's not specific to hackers, I know. It's only tangentially related to technology, and it certainly doesn't seem to have anything to do with startups.

But there are questions to ask, and lessons to be learned for startups, and for entrepreneurs in general. Here are some of the questions raised for me. Perhaps you can think of more:

What processes do you do by hand that could be automated? The timing was done by hand - a notoriously error-prone process. relentless automation can systematically weed out systematic errors, provided they are properly monitored and tested. Then you can forget them, and let them do their job.

Do you have the right people doing the right jobs? The report is that the time-keeper was an inappropriately chosen volunteer. It's notoriously easy to leave a job in the hands of someone who may not get it right when it's important. And just when isn't it important? (actually, sometimes)

Do you have the right error reporting processes in place? The team lodged an appeal, and clearly that didn't go anywhere. Why not? The entire bout could surely have been replayed and the timing checked. The result, in truth, should never have been in doubt, and could easily have been overturned.

Do you have the right corrective measures in place? After reviewing the bout, surely it should be straight-forward to correct the result. When you have a mistake reported, can you roll-back and make it right?

And finally (for me - perhaps you have more points to make), always, always consider the individual. This poor woman was left distraught on the piste, unable to leave, in full view of the audience, in tears, her lifetime's work hanging in the balance, out of her control.

So let me ask - how well do _you_ look after your users?

<comment><USER3> I believe just the starting of the timing is done by hand. The stopping is done when a contact is automatically detected.

I am on the "fence" about this article. It seems within the capabilities of a 15 year old to press a button when a referee shouts a word. The responsibility is great when the controversy hits, however.

<comment> T-R > I believe just the starting of the timing is done by hand. The stopping is > done when a contact is automatically detected.

That's exactly the issue, though - there are a handful of mechanisms in place to ensure that the clock stops and points are awarded properly - <USER2> equipment is used, buttons on the tips of the Epees are tested with a 750g weight, fencers test on eachother's masks before each match, testing kits are used to check wiring, etc., and the judges are there to watch movements to account for possible disputes. The task of starting the clock has been significantly overlooked compared to the task of stopping it.

Aside from this, the rules and the scheduling of matches are done with the assumption that there will be no major disputes, which needlessly compounds the damage from any dispute that happens.

<comment><USER3> I imagine the complexity of the system above is not primarily about stopping the clock, but to accurately detect whether a hit was placed.

To have this level of precision I imagine the judge's "allez" would have to be replaced with a racetrack style countdown and green. Otherwise attempting to detect when a specific spoken word has been said (either predicting it just started, or detecting that it has finished) sounds like a complex problem.

</comment></comment></comment></comment><comment><USER4> Fencer here. There are several questions on HN, so I'll explain the rules that led to this.

A normal bout goes for nine minutes or until someone scores 15 touches. In this case, time expired with a score of 5-5.

In the event of a tie, one fencer is _randomly_ selected to have "priority" and the bout resumes in sudden death for one minute. Whoever scores in that minute wins. However, if time expires again, then the fencer with priority is declared the winner by default.

The reason for priority is to force one competitor to be the attacker. Epee fencing in particular favors defense, which is why the score is routinely so low. The priority rule is a way of preventing passivity in overtime.

For this bout, the Korean fencer was given priority. The clock ran down to one second and the two fencers "doubled", meaning they hit simultaneously. In overtime, a double touch is annulled; nobody scores. The clock had one second remaining, so the bout resumed. The fencers doubled again.

But oddly enough the clock _still_ had one second listed! So the fencers had to try it again. They immediately doubled. At this point, it looked like the clock had run to zero, and it really isn't clear what was actually happening with the time keeper. Eventually, the referee reset the clock back to one second!

Finally, the German fencer scored a single touch and was declared the victor. The appeal from the Korean team is that the clock should never have been reset to one second; the numerous double touches beforehand had been more than a second long.

The committee that overseas the referee (the Directoire Technique) refused to overrule. From personal experience, the DT never overrules.

At any rate, the entire fencing community is really upset about this. Many of us were routing for Korea today in the team women's epee event because of this.

<comment><USER5> For reference: the rules (<http://www.fie.ch/download/rules/fr/RTECHN.pdf>) do allow the referee to adjust the clock. Section 32 (page 10), about the duration of combat, states:

"En cas de défaillance du chronomètre ou de faute du chronométreur, l'arbitre devra évaluer lui- même le temps restant à tirer."

In English:

"In case of failure of the chronometer or of error by the chronometer, the arbiter can, all by himself, decide the time remaining."

So, I can see a reason why the arbiter was not overruled, especially since he, apparently (<http://news.ycombinator.com/item?id=4339668>), informed both parties that he adjusted the clock. If they had changed the result, surely the other party would appeal to that.

</comment></comment><comment><USER6> > Unfortunately for Shin, the clock never started after the referee signaled > to restart the match, giving Heidemann more than one second to land the > winning touch.

> the timekeeper for the event was a 15 year old British volunteer

Wow, this is just absurd. Does anyone know on what basis the decision not to award the Korean fencer the victory was made? This isn't even a situation in which a do-over would have been necessary - the correct result was obvious.

And I can't help but feel that if this had happened to an American fencer, the decision would have been very different.

<comment><USER7> > Unfortunately for Shin, the clock never started after the referee signaled > to restart the match, giving Heidemann more than one second to land the > winning touch.

If I recall correctly, this is wrong. If there is less than a whole second left for this 're-start' of the match, the clock is reset to a whole second. In the German broadcast of the event, viewers were told that Heidemann landed her hit 0.8 seconds after the clock was officially started again, so it counted.

Now what's left to discuss is whether it's possible that the clock was started those 200ms late by whoever was keeping the time. However it's probably not regulated down to the split-second at which point or at which hand or mouth movement by the referee the clock is to be started again.

<comment><AUTHOR> The real technical question concerning the judgement made is:

        Just how late was the restart of the clock.

If it was more than 200ms then the hit should not be allowed to stand. Was it more than 200ms late in being restarted? The video should make that clear - there should be sufficient logging to know for sure.

But the question shouldn't arise - the processes involved should not allow the clock to be restarted at a time other than when the official says "Allez"

Secondly, the contestant should _never_ be treated like that

<comment><USER7> Yes, the real failure in this case is not technical, but social. Especially that they forced her to stay on scene during the entire decision process.

</comment></comment></comment></comment><comment><USER8> Fencing used to be scored entirely manually. This was a disaster (see anecdotes below) and the problems were solved with slightly-expensive but relatively simple electronic touch-detection technology, i.e. those crazy lights that you see flashing green, red, and white.

I predict this will happen again. Perhaps the referee will get a little box that, when a button is pressed, simultaneously shouts "Allez" in an authentic French accent and starts the clock. If the clock doesn't start, the referee will stop the bout, debug the technology, and reset the clock. (Welcome to fencing, where one's kit of electronics parts is almost as important as one's weapon. ;)

Now for anecdotes:

I fenced saber ( _terribly_ ) back when saber wasn't electrified at the NCAA level - which is to say: there was no electric circuit to detect contact between Fencer A's saber and Fencer B's target area.

(Saber got electric scoring last, I suspect, because the head and arms are part of the target area and you need conductive gloves and masks, which cost money, particularly because it's harder to share gloves and masks between fencers than it is to share a simple mesh vest.)

Moreover, at a regular-season NCAA fencing match, there's no budget for _five_ impartial judges per bout, and no spare unaffilated fencers sitting around. So the rule was that we had to make touch/no touch calls _in matches involving our own teammates_. This was, to say the least, a no-win situation for a beginner. I quickly learned to pretend I was half-blind and clueless – which, alas, did not require much acting talent – and round off all non-obvious calls in favor of my teammate. To do otherwise was to earn the undying enmity of one's own team.

The stress drove me crazy. In retrospect, I should have demanded to be switched to foil or epee – epee, in particular, with its electronic scoring and lack of right-of-way rules, was a gloriously straightforward sport; though I would still have been a lousy fencer at least I would have lost for clear reasons – but instead I fled after one season.

If there's a moral to this story, it's this: There is _no way_ that this incident is the most unfair thing that has happened in the history of Olympic fencing. ;) They must have been really, _really_ good sports back in the old days.

<comment><USER9> Do you enjoy watching those matches? Looks like an enjoyable sport to _practice_ , but as an layman watching on TV, it gets very boring, because I can't see when someone touched, when someone defended, etc.

At least if the swords where painted in bright colors...

<comment><USER8> Frankly, back in the old days when Olympic fencing never turned up on TV, I used to wish I could watch it. But then it appeared, on streaming video. And I've tried to watch it every four years. And I always turn it off after a couple of minutes, because it is the most boring spectator sport I can think of.

Even bowling, which is far emptier of visible strategy than fencing, is perhaps more fun to watch, because it makes pleasant sounds and has a soothing rhythm and you can immediately see the difference between a good frame and a bad frame. And I actually spent more time watching _archery_ last week, which is really boring as a spectator, but again it has a hypnotic rhythm, and at least you can see where the arrows land.

In fencing, most of the time the participants are hovering looking for openings and baiting each other, and then something happens that you barely see, and half the time that's a no-action anyway because they didn't hit the target, or they moved past each other, or the equipment broke.

I see, from our more-informed commenters, that this controversial match seems to have involved a tie, three tiebreakers, two dubious judgement calls and a denouement that happened too fast to see and that may have been a glitch. I wish this were atypical of my experience with fencing, but that pretty much sums up what it all looks like to me. ;)

So, not surprisingly, it turns out that a lot of sports are more fun to do, or read about, than to watch.

Maybe it would be different if I _really_ understood fencing, rather than knowing some but not all of the rules.

</comment></comment></comment><comment><USER10> The saddest story of the Olympics is still the 1972 Munich murder of the Israeli team, which is hopefully never surpassed.

I agree this was a really bad referee call, though.

<comment><USER11> The article specifically qualifies it as a saddest 'on field' moment.

<comment><USER10> I think on-field in the context of the article meant live vs tape delayed or written about afterward. (It was immediately after complaining about NBC not covering it for Americans).

</comment></comment></comment><comment><USER7> > Lam led with one second left on the clock

That's also not strictly speaking true. The match was even at this point. Lam had previously been selected by /lottery/ to win in the case of an even standing at the end of the one-minute-long extension to the match. So, she would have won had that second passed, but she was not leading.

<comment><AUTHOR> This is your second comment that has details I've been unable to find elsewhere. I'm interested in trying to track down what actually happened here, and your sources seem better than mine, unless I'm just missing something.

Can you provide some links for me to check out?

Thanks in advance.

<comment><USER7> I'll see if I can dig up any German media write-ups with details. If so, I'll reply (also with a rough translation)

<comment><USER7> [http://www.abendblatt.de/sport/article2355249/Eklat-um- die-l...](http://www.abendblatt.de/sport/article2355249/Eklat-um-die-letzte- Sekunde-Heidemann-holt-Silber.html)

> Csar ging zur Planche, befragte beide Fechterinnen, ob sie damit > einverstanden seien, die Uhr nochmals auf 00:01 zurückzusetzen und das > Gefecht ein letztes Mal freizugeben. Heidemann und Shin A Lam stimmten zu. > Csar gab das Startsignal. Heidemann attackierte - und traf nach 0,84 > Sekunden. Die Uhr zeigte 00:00.

Rough translation: Csar walked up to the planche and asked both fencers whether they would agree to reset the clock to 00:01 and re-start the match one last time. Heidemann and Shin A Lam agreed. Csar gave the start signal. Heidemann attacked - and hit after 0.84 seconds. The clock showed 00:00.

If you search for "lam 0,8 sekunden" on the German Google News, you can find similar articles. However, they usually are an exact copy of the article mentioned above. The real source of the above claim is probably the "Sport- Informations-Dienst (sid)", a German sports news agency that provides content to those publications. I haven't yet found any other primary sources with the exact time.

<comment><AUTHOR> That's brilliant - thanks. It doesn't seem conclusive, because if the clock didn't get started, and the touch happened at 0.84, then the question is whether the delay was more than 0.16s, and further, why did the clock on the video still show 0:01, while the claim there is that the clock showed 00:00.

And if the clock showed 00:00, wasn't the touch out of time?

Completely unclear, but it's useful to have the extra information. Thanks again.

<comment><USER7> No problem. My guess is that they round the displayed clock up instead of down, so 00:00 automatically means the end of the match, and any split second left shows 00:01 to let everyone know that it's not over yet.

<comment><USER12> More importantly, why doesn't the clock just show milliseconds too?

This is an Olympic combat event... one second is a long time.

</comment></comment></comment></comment></comment></comment></comment><comment><AUTHOR> Added as a note ...

Clearly this item has been heavily flagged. There are currently 20 items above it on the front page, and of them, 10 are older _and_ have fewer points. The ranking algorithm says those items should rank lower. The fact that they don't indicates that this item has been flagged.

It would seem there are those on HN who consider this inappropriate. Enough that they don't simply ignore it, but that they take the effort to flag it (although one click is hardly much of an effort)

But the lessons to learn from this are there to be seen by those who would take the time. That's why I wrote my extensive commentary, and that's why a few people also commented in support.

Perhaps I should have written this up as a blog post so that I could have:

* controlled the title (since the moderators are now so aggressive on this)

* made the commentary the first thing to read, rather than the story.

Perhaps a lesson to take away from the story of the submission (rather than the story of the fencer) is that there is a vocal minority on HN who will flag things regardless of whether there are lessons to be learned.

I'm disappointed by that, although not really surprised.

</comment><comment><USER13> More images (including video of the incident ) here:

[http://www.buzzfeed.com/ktlincoln/an-olympic-fencer- refuses-...](http://www.buzzfeed.com/ktlincoln/an-olympic-fencer-refuses-to- leave-the-floor-after)

</comment><comment><USER14> American TV also removed the 7/7 London bombings memorial in the opening ceremony, for that matter.

</comment><comment><USER15> Assuming the video here ([http://www.buzzfeed.com/ktlincoln/an-olympic-fencer- refuses-...](http://www.buzzfeed.com/ktlincoln/an-olympic-fencer-refuses-to- leave-the-floor-after)) is accurate, I make it 28 frames, in a 30 fps video, from the start of the "Allez" to the beep of the hit, so I reluctantly have to agree with the judges.

<comment><USER16> Why "reluctantly" if the judges were correct in the first place? Anyway, the real crime is the ridiculous random sudden-death coin flip. Whose idea was that?

<comment><USER17> I get that, if that was not the case, both contendants would stay too much on defense. OTOH if one is declared winner 'by default' in case of a tie, the other is more inclined to attack.

</comment></comment></comment><comment><USER18> The criticism of NBC is tiresome and probably inaccurate. Fact is, the vast, vast majority of US tv watchers, including on both coasts: 1) prefer to watch US athletes, 2) like the biographical segments and 3) like to watch marquee events in prime time. The vocal minority are media and tech elites (and wannabes).

<comment><AUTHOR>
        The criticism of NBC is tiresome and probably inaccurate.

And the reason I submitted this isn't because of the lack of coverage. The reason I submitted it is because of the many, many lessons that entrepreneurs can learn from the incident itself.

Here are just some of them highlighted, to help you see why I submitted this: <http://news.ycombinator.com/item?id=4339300>

<comment><USER18> Good points (except I think premature automation is not always or even usually wise; and, see "Knight Capital Group").

I guess I was responding to the post itself (or its need/decision to highlight "American TV's" neglect. And also a good many responders taking an opportunity to bash NBC.

</comment></comment></comment><comment><USER19> I used to fence a bit and watched this match live on BBC's iPlayer on Wednesday night. For those of us who're honorarily British for the Olympics, here's the link:

<http://www.bbc.co.uk/sport/olympics/2012/live-video/p00w2wzb> (segment #3)

If you don't have access to it, the salient points of the match are:

48:25, the "sudden death" round is started due to non-combativity or timeouts on the previous rounds. Shin is given "priority" based on the toss of a coin, which means at the end of a minute if no single hits have been scored, she'll win. Shin has been playing much more defensively or tactically all match, so this maintains the tempo up to this point.

49:02, a double-touch happens with 24s left on the clock. Double-touches (ones that occur within 1/25th of a second of each other) are not scoring, so play resumes.

49:27, another double-touch with 15s on the clock. Shin plays very defensively and scores the majority of her points by evasion and counter-attack, but uses up a lot of the piste (the area the fencers are permitted in), so the referees check that she didn't overstep it.

50:09, another double-touch with 9s left on the clock.

50:24, another double-touch with 5s left on the clock. Heidemann isn't scoring a single-touch with her attack, but she's driving Shin toward the back line where she'll lose if she oversteps.

50:48, another double-touch, 4s left on the clock.

51:03, another double-touch happens with 1s on the clock.

51:18, Heidemann immediately attacks the moment the beep occurs for another double-touch with 1s left on the clock. The commentators are bemused that this takes less than a second but to my eye it's pretty reasonable.

51:20, Heidemann and Shin go en guard, with Heidemann repeatedly being warned by the referee not to take a position too close to Shin (the call of "distance" from the ref).

51:39, another double-touch, again with 1s left on the clock. The commentators are wondering about a technical malfunction at this point, but as Heinemann takes her position the clock actually clicks down to 0s. The referee notifies Shin and Heidemann that the clock will be set to a full one second. The Korean coach comes out to argue but is overruled.

52:56, Heidemann scores the single-touch she needs to advance.

Resetting the clock to 1s is actually unusual, if I remember right, and probably shouldn't have happened - I suspect that this was the mistake by the timekeeper (which shouldn't be held against them, Olympic timekeeping is not a "best-effort" thing). It's hard to say who "should have won" the match - Heidemann certainly played a more aggressive and interesting game but Shin's conversion so many of these into double-touches or even points for her are exemplary. As another poster points out, I suppose the real answer is to voice recognition software start the clock on "allez".

Lastly, I just wanted to salute Shin's courage and dignity in coming on to play the bronze match, even though she must have known she had no chance to win the medal. Even having rewatched the match in slow-motion half a dozen times, I have a hard time feeling convinced that the right decision was made - from her perspective she must have felt absolutely robbed.

</comment><comment><USER20> My wife and I are both disgusted with the coverage. Sure, we like to see kids from our country win, BUT, we all live on the same planet, and nationalism belongs in a previous century. The human interest stories are not bad per se until you realize how much broad international is bumped.

For the OP story: if that young woman's worst possible result if the error had not occurred was a bronze, it would have been good if the international Olympic committee could have firmly pulled their heads out of their asses and given her a bronze medal. It would hurt no one if two bronze medals were awarded.

</comment><comment><USER21> It isn't just that the players weren't american, it's the sport as well. When I was in fencing school in the US, the coach had to order the tapes of the fencing bouts of the olympics, because they weren't even shown on TV in the US.

</comment><comment><USER7> To round this up, we Germans just got evened out ;)

In the men's team semi final, Peter Joppich fought the final match against Yūki Ōta. In the extended time, Joppich scored a single hit which was apparently not counted because Joppich obscured his vest with his mask. Another double hit which to me and the commentator seemed like an attack by Joppich then (after a few minutes of discussion between the referees) was counted for Ōta, leading to sudden victory for Japan.

So, cheers to karma!

</comment><comment><USER22> "giving Heidemann more than one second to land the winning touch"

This seems the crucial point, and without having it specified it is hard to tell if this is a very serious oversight or very minor aspect. If Heidemann had 1.01 seconds instead of 1.0 to land a hit, this would be very minor. Whereas if Heidemann had a full minute of extra time, this would be major.

I'm not doing any extra research since this isn't too important to me -- but some crucial context is very clearly missing here.

</comment><comment><USER23> I was trying to find a clear description of what happened, with supporting evidence at the right times, and it was surprisingly hard (many arm-chair fencers).

This is the best I could find: [http://shinalamandtheinfinitesadness.blogspot.com/2012/08/sh...](http://shinalamandtheinfinitesadness.blogspot.com/2012/08/shin- lam-and-infinite-sadness.html)

</comment><comment><USER24> This story has nothing to do with Michael Phelps, Kobe Bryant, or the Brazilian beach volleyball team. Therefore it is not interesting.

</comment><comment><USER25> This story is interesting and notable without the completely unnecessary narrative about American TV.</comment>


Randomly Promoting People is More Efficient Than Using Merit - <AUTHOR> http://arxiv.org/abs/0907.0455

<comment><AUTHOR> I should add that this won the Ig Prize this year in the management category.</comment>


Ask HN: please rate my startup idea - <AUTHOR>

The concept is live at http://karsa.co.uk
I've built a working prototype, it is a Flash video player which video publishers can use to monitise their videos.
The idea is like Megavideo for anyone.
This app and widget allows publishers to input a few details about where their content is and their paypal email and the widget then cuts off viewers after a set time (which they can adjust per video), it sends them to Paypal, which pays directly into their own accounts then back to the video where they can continue watching for the duration they sign up for (so they have 4 choices, 1 day, 1 week, 3 months, 1 year).
I'm not interested in design related points, like the site looks naff etc. I'm interested in what you think of the general idea and if you think it could be successful.
Here's the problem. Since announcing the idea to a few people and sending it some traffic love from my highly popular documentary site, it has had very little interest. I have some potential customers who have asked I develop extra features which I have about half completed but the problem I get is it just hasn't gotten the reception or enough feedback to tell me this is a real pain and there are enough end users out there for it.
The main problem I foresee is that publishers would have a fair bit of set up time to implement it, they would have to change all the Flash player widgets they currently use (though I don't think this should be a big deal?).
So I need to do another month or so development to get it finished and I'm asking for your input on the idea to tell me if you think it's a worthy project and if you think it can be successful. <comment><USER2> the content is going to have to be extremely compelling to compete against youtube/vimeo offerings. For premium content I have a real desire or need to see (concerts, something for work/school/etc) I might pay, but possibly still would look elsewhere. I think the idea is _interesting_ , but you'll need to find the specific publishers that think they have the content worth paying for.

Are you timing the playtime, or putting in 'pay wall' at a specific timer in the video?

Also, going to a separate website is way too jarring - I think the experience would have to be in-player for it to be workable. I might be proved wrong, but that's my gut feeling.

Good luck!

<comment><AUTHOR> The payment part is clean, its a few clicks and your done, it happens in another window and you go back and continue watching from where you left off.

It works by looking at how much content they has watched then after a set time (which the publisher decides) they get paused and asked to pay, so only once they are hooked on it are they asked to pay.

I use the system with great success on my doc site :<http://www.documentary- film.net/> and before implementing the concept there the site was always in trouble as the bandwidth costs were so high and if I placed the content behind a pay wall sales went to zero. As soon as I introduced this concept the sales went up by 90%, so I know the system works.

The problem is I thought it was a great idea but so far the response has been pretty light and I'm just thinking is it worth continuing to push along or should I just try something else?

<comment><USER2> fwiw, the 'going to another page' is pretty jarring. Having a paywall _inside_ the player would make it far more understandable.

</comment></comment></comment><comment><USER3> Clickable: <http://karsa.co.uk></comment>


Feedback Wanted - PadIntel, a faster way to apartment search? - <AUTHOR> http://padintel.com

<comment><USER2> Right off the bat: you apparently only search DC, which is fine, but the dropdown box defaulted to Chicago. It seems to have found Chicago results, so which is it?

Other features might be good: central air/heat, in-unit washer/dryer, security gates and/or guest buzzer system.

Do non-nerds know what FIOS is?

<comment><USER3> Some features are probably overkill/region specific (like FIOS). I added it though, since I live in the DC area and use it for my searches.

I also only search DC and Chicago (for now) to try and stay under craiglists radar, and until the idea has proven useful for other people. I updated that text.

Thanks for the comments.

</comment></comment><comment><USER4> Might be useful, but I don't know if competition is more so.

Add pets.

Be more "opinionated" a la 37signals.

Have more fun (random search items)

Don't make everything in each column (does anybody HATE food that bad?)

</comment><comment><AUTHOR> Hey guys

Would you find this useful? Do you like the idea? Looking for thoughts and comments of all shapes and sizes.

Thanks!</comment>


Show HN: PitchGrub – an elevator pitch generator for startups - <AUTHOR> http://pitchgrub.com/

<comment><AUTHOR> Hi guys,

Shant here, one of the founders of PitchGrub. We had a little hackathon over the weekend and launched the mvp last night. I woke up this morning to discover that it somehow landed on the frontpage of Product Hunt which was awesome to see.

I'd love to see what HN thinks of the app, all feedback is welcome :-)</comment>


Ask HN: What are some 100x gifts? - <AUTHOR> I saw a couple of Twitter posts about holiday presents that can give 100x value for your close ones. They mentioned a Raspberry Pi 4, Adobe Creative Cloud access etc.<p>What are yours 100x gifts? <comment><USER2> Leatherman multi-tool. Ages 5+. A lifetime of competence.

<comment><USER3> I would have suggested a Swiss Army knife, but I cut my finger good when I was 6.

<comment><USER2> Adult supervision is recommended.

</comment></comment></comment><comment><USER4> This post is two days old now, so, I'll answer... a Peloton.

<comment><USER5> I chuckled at that :)

</comment></comment><comment><USER6> An instrument: A guitar or a piano. Even if somebody is not trained, an instrument can inspire. A good guitar can last decades.

</comment><comment><USER7> Swimming lessons.</comment>


Ask HN: Should Microsoft be broken up? - <AUTHOR>

We used to ask this question 10 years ago with the government in mind; today, looking at articles such as the one in the NY Times today (http://www.nytimes.com/2009/10/18/business/18msft.html) it seems like a question worth asking from the standpoint of shareholders, Windows/Office users, etc.  Would love to hear the HN community's perspectives on pros and cons, and what a division would look like. <comment><AUTHOR> Here is how I would break up Microsoft:

      - Office: all productivity software, including Exchange and SQL Server
      - Microsoft: operating systems and platforms - server, client, mobile,
       Xbox, developer programs
      - MSN: all internet properties + Internet Explorer, along with all
       home/etc apps

... Can't think of what else there is in the Microsoft portfolio; I am sure I have left out a ton of their product offerings, but there's a few companies in the split-up I'd like to see happen. I think there'd be a ton of innovation that such a move could unlock.

<comment><USER2> MSN as a separate entity probably couldn't survive. I cant see that it has the solid revenue stream / secure market that the other 2 portions have.

Arguably even the Office segment would struggle too (possibly depends how well online office does).

<comment><AUTHOR> MSN needs a fundamental rethink of its business. No better way to encourage that than to force it to take care of its own P&L. It's really no different than Scripps' spinoff of its newspaper business.</comment></comment></comment>