Ask HN: Chairs for programmers - <AUTHOR>

What office/work chair do you use? A Leap? An Aeron? A Freedom?
Are you tall? Have you found one to fit you? My hip-knee (femur) measurement is 22", but almost all chair-makers stick with the standard 19". Have any tall programmers out there found anything with a longer seat depth?
I've tried a lot of chairs over the years, with the main exception of the Aeron, and am still looking for the perfect one. Any ideas out there? <comment><USER2> I have chronic back problems (lumbar) and I've tried dozens of chairs over the past few years from periods between a few hours and a few weeks and I've only found 2 which haven't caused me problems:

Herman Miller Aeron (which I currently use) Steelcase Leap Char (which I used at my previous 2 jobs)

The price for these chairs are high. But given I'm relatively healthy and productive with them, its well worth it.

</comment><comment><USER3> At work I have a Leap. It's pretty good (lots of knobs to adjust), but at home I use the Herman Miller Embody. Personally I feel it's more comfortable than the Leap, but chairs are very subjective.

You may like it because the seat "pan" isn't actually moving the seat. It extends the front of the seat further out. That way you don't feel like you're sitting off the back end of the seat.

Have you had a chair fitted, or read the instructions on fitting? If you haven't I highly recommend it. The Steelcase vendor was in my work the other day explaining proper posture on the chairs. You're not supposed to sit up, but rather recline at a slight angle.

</comment><comment><USER4> I am 6'4", and I recently bought a Zody, review here: [http://www.geek.com/articles/gadgets/review-haworth-zody- cha...](http://www.geek.com/articles/gadgets/review-haworth-zody- chair-20080326/)

I actually prefer this to the Aeron chair that I use at my office. I like it so much that I bought a second one for my girlfriend.

</comment><comment><AUTHOR> I'm 6"2. I've used the Leap with not too much success—too short in the seat pan, and the Amia which actually worked fairly well for a while, despite having the same length seat pan (19"). I'd really like to try the Aeron, but no one in town deals them.

</comment><comment><USER5> Unfortunately I often have problems with my lower back. Thing that helped me the most was plain exercise (pilates) ball. It forces you to sit correctly and keep your back straight. It can be hard at the beginning but when you get used to it :)

</comment><comment><USER6> I have one of these: <http://igoergo.com/> (I think it's an older model not listed on the site.) They're not beautiful but are very customizable including bigger or smaller seats.

</comment><comment><USER7> I have a chronic neck issue. I've tried a bunch of high end chairs, and had the best luck with a Steelcase Think. It's very possibly too small for me (I'm 6'1"), but everything else I've tried flairs my neck in bad ways.

</comment><comment><USER8> Humanscale Freedom Task Chair: [http://humanscale.com/products/product_detail.cfm?group=Free...](http://humanscale.com/products/product_detail.cfm?group=FreedomTaskChairWithHeadrest)

</comment><comment><USER9> I had a lot of problems with chairs, I couldn't seem to find the right one. That is when I realized there wouldn't be a right chair. I converted to a standing desk, haven't looked back since.

</comment><comment><USER10> I'm 6'4" and have dealt with posture issues. Lately, I've found that the low- back Eames management chair in combination with a forced effort to maintain good posture yields pretty good results(takes a while to get used to but it's worth it in the long run).</comment>


Why internet ads pay less than other media ads - daniel-cussen

My (very uninformed, but somewhat plausible) take:
It's because you can measure the results.  With TV, it's hard to determine the ROI of a marketing campaign.  In a Steven Levitt interview, he said the ROI for big-corp marketing departments is usually about 30 cents on the dollar [1].  The question is, why don't they shrink their budget until they have a minimalist campaign that gets a rational ROI?
My guess is that there's a conflict of interest between the marketing department and the shareholders.  The marketing VP (or the CMO or whatever it says on the door of his office) is interested in furthering his career.  I would guess he isn't judged by employers based on the ROI he produced, but on the size of the budget he managed and how many famous (i.e. expensive) campaigns he headed.  So he wants to spend as much as possible, particularly on high-profile campaigns that get him a lot of PR.
However, with internet advertising, it's much easier to know what the ROI is, because all the stats are there.  The CEO will not put up with bullshit if the stats are staring him in the face.  If the only way to get marketihg data for TV campaigns is paying consulting firms 400,000 for a one-time analysis, the marketer can put a spin on things.  On the internet, you get real-time data on everything.  It's blatantly obvious if your marketing campaign sucks.
The marketing VPs can't play the game with internet advertising, so they don't, and leave web 2.0 companies wondering why they can't get as much for an ad as Fox does.
My hypothesis is based on a lot of guesses, a little knowledge of internet advertising, and a Steven Levitt podcast where he talks about some pretty weird (as in irrational) business decisions:
http://www.chicagogsb.edu/news/2006-07-14_xpkickoff.aspx?modeset=audio <comment><AUTHOR> There are two quick flaws with this argument.

1) It assumes you can't track ROI on 'traditional' marketing. You can. There are a myriad of ways: Using advertising-specific numbers with call forwarding; Statistics modeling; asking the customer, &c. People generally don't spend millions unless they know it's going to matter, and traditional advertising has defended itself more than once.

2) It assumes the purpose of advertising is 'click-through'. Most advertisement is building name recognition: not everyone needs an ACME Widget right now, but I want to make sure they know to go ACME when they need it.

3) It forgets you're competing in a shared environment. If Pepsi shrinks its ad budget, Coke wins. "Many manufacturers secretly question whether advertising really sells their product, but are vaguely afraid that their competitors might steal a march on them if they stopped."

<comment> daniel-cussen I agree with most of what you're saying, but would like to point a few things out:

1) Yes, you can track ROIs of that nature, and many people do. But as Steven Levitt says, it seems to not be a part of corporate culture to do so. And according to him, they often do waste millions. It's not the marketer's money, after all. They'll often say things like, "It's my job to spend the budget" when Levitt points out their losses.

2) There's more to online ads than clickthrough, I agree. I didn't say there wasn't. My point was that the stats are easier to come by, and they'll be harder to weasel up.

3) That is a legitimate concern, I agree. However, being in a marketing arms race should already have been factored into the ROI, IRR, or whatever all- inclusive metric or set of metrics you are basing the budget decisions on. I don't mean Pepsi should give up, or that its marketing budget is bloated, but that even in an arms-race you can go too far.

</comment></comment><comment><USER2> Good analysis, but there's still room to fudge internet numbers, especially when you're getting high priced CPM banner/skyscraper ads for "branding" purposes.

<comment><USER3> Exactly branding was our marketing department go-to excuse for ROI negative campaigns.

We ended up trying to measure the branding by tracking users who came to our site directly by typing the url into the address bar, or who googled our website by name, so we can estimate how strong the branding was.

The only problem is you can't really do this on a per campaign basis, but if you geo target your campaigns and check the brand strength stats on the same geo targets you can get a rough estimate.

<comment> daniel-cussen Just out of curiosity, how would these events unfold?

1) They do the campaign and 2) rationalize [what I presume is] a failure, or 1) Rationalize a bad campaign and 2) get it going?

Also, how valuable was branding? Were the bad ROI's justified after all?

</comment></comment></comment><comment><USER4> You may be very spot on there. There's an old adage in advertising, something like "Half of money spent on ads is wasted, but you can't tell which half." Online, you can, so you have to make smarter investments to maintain the appearance of being a good marketer.

</comment><comment><USER5> I think you have some good points, I have friends in (offline) marketing - these people are the greatest bullshitters of all time...

But I think that there is another simpler explanation: supply and demand. Since everyone has a blog with banners, and one on five people runs a website with ads the supply is enormous, and this naturally drives prices down.

<comment> daniel-cussen The supply of banners might be huge, but companies don't buy the banners as much as the eyeballs that see them. It's the same with TV; marketers buy a spot for its viewers; the price of an ad depends on the show's ratings.

<comment><USER5> That is not true. A marketing campaign is based on a media-mix, where it is decided what ratio of money will be spent on what. For instance 25% print, 25% outdoor, 25%television and 25% web.

You reach different demographics in different ways with each channel. Marketers know this.

</comment></comment></comment><comment><USER2> I'm not sure that internet ads truly pay that much less... is it cheaper to deliver a 15 second video ad to 250,000 untargeted people on the internet or on TV?</comment>


Tools are not the Answer - <AUTHOR> http://blog.cleancoder.com/uncle-bob/2017/10/04/CodeIsNotTheAnswer.html <comment><USER2> The dirty little secret: tools are much more fun to build that actually solving the problem. Tools that can be used to build tools are even more fun. Done right, toolmaking can supplant having to do the grotty work of problem solution.</comment>


Graduate programs at startups? - <AUTHOR>

Yesterday we launched a pilot event of an idea me an a friend had to introduce university students to startups (and vice versa) in Cape Town, with the intention of sending them on internships. We were amazed at how much of an eye-opener this was for the students, not realising such companies existed locally. It was also just as much an eye-opener for the companies, who previously struggled to get in touch with local students and now got a chance to see how good the local talent pool is. Most of the talent would in the past either a) go overseas, b) change field, or c) work for a big evil corporate.<p>My question for HN: Have their been similar things happening elsewhere that we can get some ideas from? We have in mind to (in the distance) trial an exchange program between Cape Town and Silicon Valley or somewhere else. We really have some top-notch companies that we believe people over there would be excited to work for, e.g. Nimbula, ThoughtExpress, Quirk, Praekelt and Motribe were the ones we had yesterday and all are awesome. <comment><USER2> Something that seems similar is hackNY (<http://hackny.org>) in New York.</comment>


Medium and GitHub Took Down a Post Containing LinkedIn Profiles of ICE Employees - <AUTHOR> https://www.buzzfeed.com/carolineodonovan/heres-why-medium-and-github-just-took-down-a-post <comment><USER2> The Twitter status the article is referring to is also missing.

It's interesting how all those services just shrug about someone harassing normal people, but providing compilation of public information of literal modern Gestapo is suddenly not okay and removed in blink of an eye.

<comment><USER3> >...literal modern Gestapo is suddenly not okay and removed in blink of an eye.

This comparison isn't helpful, at all. Invoking the Gestapo seems needlessly inflammatory, and is quite obviously untrue.

<comment><USER4> Really brave of you to police comments like this. Not all heroes wear capes.</comment></comment></comment>


Ask YC meetup/marketing on HN - <AUTHOR>

I like a lot of the content on HN, but sometimes I see things like
Looking for Karate studio in SF area
Medical Marijuana in SF area
Party in SF area, etc.
I'm sorry? I thought this was a news site? I think many of us are not in the SF area and don't care. There are sites designed for organizing meetups.
Also don't post things trying to sell your product. If it's not news (site off beta, product stable, new features) and you are just saying look at what I have to sell... that's spam. Pure and simple.
what do people think? <comment><USER2> >I think many of us are not in the SF area and don't care. There are sites designed for organizing meetups.

Startup School is this weekend, so this is the highest density period for meetups of the year. It'll calm down next week.

<comment><AUTHOR> I can see that. Maybe we should add a meetup area?

</comment></comment><comment><USER3> As someone who (relatively) frequently says things aren't hacker news, I think the most important distinction is with things that are actively harmful, such as politics, and often economics. They get people into heated discussions about something that isn't really relevant. Off topic things like "SF meetup" are a bit noisy, sure, but if done in moderation don't really hurt anyone.

We've always encouraged people to post about what they're doing, if they're looking for feedback. You should be proud of the work you've done, and not afraid to share it in appropriate situations.

<comment><AUTHOR> I find a difference between what you are doing, and pushing a product. Asking for opinions is not 'would someone like to buy X'.

<comment><USER3> Do you have an example of what you feel is inappropriate? I don't think anyone here has much tolerance for outright spam.

<comment><AUTHOR> <http://news.ycombinator.com/item?id=167032>

initially that. although it is starting to look more legit (post submit explanations).

But it's got me a bit hot under the collar, about what should and should not be on hacker news.

<comment><USER3> Hehe... oh that... Yeah, that's come up before. I just ignore rms when he gets going about Kratom, and let PG deal with it, as he alone has the power to nuke stories. rms seems like a bright guy and has contributed a lot to this site, but he does have that peculiarity that comes out now and again.

<comment><USER4> There are ~30 secret editors, btw.

</comment></comment></comment></comment></comment></comment><comment><USER4> It is a networking site for hackers/entrepreneurs. Look at it this way and these posts make more sense.</comment>


No More Harvard Debt - <AUTHOR> http://nomoreharvarddebt.com/

<comment><USER2> Very cool. For anyone interested, there are a bunch of subreddits around this topic:

<http://www.reddit.com/r/frugal>

Start there, and check the extensive list of subreddits on the right for more.</comment>


What degree do I need for a career in bioinformatics? - <AUTHOR> http://www.bioinformaticscareerguide.com/2020/07/what-type-of-degree-should-i-get.html <comment><AUTHOR> This question comes up over and over again in r/bioinformatics, so I put together a short guide that I hope will be helpful for those considering getting into the field.</comment>


The Transcension Hypothesis: What comes after the singularity? - <AUTHOR> http://www.youtube.com/watch?v=nQOyJUDTKdM

<comment><USER2> Jason Silva has lots of great videos: <https://vimeo.com/jasonsilva></comment>


Ask HN: What types of companies care about application security? - <AUTHOR> <comment><USER2> Companies that run a bug bounty / disclosure program are a good start: [http://bugsheet.com/directory](http://bugsheet.com/directory)

</comment><comment><USER3> what's the context of "application security"?</comment>


PG's On Lisp missing figures scanned - <AUTHOR> http://www.zerobeat.in/wiki/doku.php?id=onlisp_missing_figures

<comment><USER2> <http://www.paulgraham.com/onlisp.html>

<comment><USER3> <http://www.paulgraham.com/onlisptext.html>

From the text:

"This is identical to the printed version, except that nine diagrams are missing. If you see a blank figure, that's what happened. These unfortunately seem to be lost."

<comment><AUTHOR> yeah, those nine figures are the ones that have been scanned. It will be great if someone can create those diagrams from these pages and send it back to PG or Chip Coldwell so that they can cut a new PS/PDF of the book for download.

</comment></comment></comment><comment><USER4> Damn, I should have had those before I got it printed at lulu...</comment>


The Ultimate List of Ultimate Marketing Lists - <AUTHOR> http://www.pagewiz.com/blog/online-marketing/ultimate-list-marketing

<comment><AUTHOR> The new "Ultimate List" of Ultimate Marketing Lists features six groups of marketing resources that cover the major components of what you need to know to build a foundation of online marketing knowledge and create solutions for marketing problems.</comment>


Recipe - Pad Thai - <AUTHOR> http://www.nytimes.com/2010/04/22/dining/21minirex.html?src=me&ref=general <comment><AUTHOR> So, for the longest time my bookmark landed on YC homepage. And PicWing started with this one picture with an empty noodle bowl and my mind automatically has been assuming it was probably Pad Thai for the founders livin' on ramen. So, there you go HN'ers, take out 25 minutes out of your hacking to make some decent noodles for once :-)</comment>


Swiss Watchmaker Disses New Apple Watch - <AUTHOR> http://www.businessinsider.com/jean-claude-biver-apple-watch-2014-9?utm_content=buffereb916&utm_medium=social&utm_source=facebook.com&utm_campaign=buffer

<comment><USER2> BREAKING: Buggy whip maker laughs off newly launched automobile saying "it doesn't hurt horses enough to make them run faster"</comment>


Why is a bag of weed always $10 (man)? - <AUTHOR> http://timharford.com/2010/09/why-is-a-bag-of-weed-always-10-man/

<comment><USER2> This doesn't make sense because it's not true.

I was an avid pot smoker in my college days (long time ago, now) and even over the relatively small span of a 3 year time period I paid everything for a quarter-ounce (~7 grams) from $10 ("ditch weed") to $400 (REALLY good stuff from Cali or Colorado). So I'm not sure what he's talking about with the $10/gram thing being some benchmark that's lasted decades.

I know that's anecdotal evidence, but it's the shared experience of every smoker or ex-smoker I've ever known. And considering the wide variations of produce quality, I think it's odd to suggest that prices are tied to any sort of specific weight.

It's like saying, "Fish always costs $x per pound. (man) Why?" The answer is simply, "No it doesn't."

<comment><USER3> I think he's referring to buying by the gram, not looking at bulk costs.

<comment><USER4> It's too cheap by the gram, or too expensive, depending on the variety. The cheap (low quality) stuff is like $3 by the gram, at most, and the expensive stuff is more like $20 a gram, at most.

</comment></comment></comment><comment><USER5> There is a huge variation in the price of pot, depending on the type of pot (again, a large variation), where you are, what time of year it is, and who you are buying it from.

What the $10 is referring to are the bags you can buy on street corners in some cities. It is the same with crack and heroin, a standard and simple price, with standard terminology (a bag, a dime, etc.) all to make the street- based transaction easier and less conspicuous.

It has no bearing on the real value of pot, which can vary from a few dollars a gram through to $50+ a gram. What changes is the type and amount of pot you get in a $10 bag.

</comment><comment><USER6> This is ridiculous ... not that I'm an expert or anything but $20 is the cost of a gram. How is this guy going to claim to have research without trying to buy it himself? This article is completely bunk. Compelling title since people love to discuss the economics of drugs but the premise is way off.

Also as someone who used to know the economics of weed, there are nickel, dime, and dub ($20) bags. This is for people like high school kids and street drug dealers that sell at this level though. I would add that you can probably buy dime bags from the hippies in Golden Gate Park SF, but that feels much more like a crack deal than some legitimate transaction.

You can also grab a quarter (1/4 of an ounce) but it's not going to cost you $25 ... it will cost you more than $100.

I love how this was good enough to be published in the Financial times even though it was wrong. There's a reason that the Freakonomics guys went and lived with the crack dealers: they wanted actual research, not second hand rumors.

<comment><USER7> Except that you're also wrong. Pricing varies from region to region, and I've heard from a friend that $10 is a gram here, and a quarter is much less than $100. Lookn up online discussions about the price of weed. You'll see a good variety of answers. Quality also matters in pricing, which adds another element to it.

<comment><USER6> you are in the US?

<comment><USER8> Yea, I was surprised to see your first comment anywhere but at the top. $10 will buy a g of dirt. $20 beasters/kb. $25+ for true dank (east coast).

</comment></comment></comment></comment><comment><USER9> The answer is actually in the question. The questioner is accustomed to paying $10 for one gram. There was a time when the traditional "dime bag" was 1/10th ounce, or nearly three grams.

The $10 price point has "stuck," but the grocery shrink ray strikes all products. Remember when a $1 candy bar was twice today's size?

<comment><USER10> Your age is showing.

There was a time when a dime bag was 1/4th of an ounce.

And I'm sure somebody even older than me is going to chime in with a recollection of an even more outrageous price.

<comment><USER11> Old men used to bemoan the price of gas and the morning paper.

Times have changed!

</comment></comment></comment><comment><USER12> $10 is how much a bag costs, how much a bag contains is the variable I would think. Kind of the opposite of gasoline.

<comment><USER13> The article doesn't talk about how much a bag costs. It talks about the price per gramme staying at $10.

<comment><USER14> This is an example of a bad misleading title.

</comment></comment></comment><comment><USER15> Currently a gram of medical grade marijuana (or any 'good quality' pot) is around $20.

The author says that a gram costs, and always has costed, $10. This can certainly be true today if he's buying relatively low quality marijuana. If he's been smoking for many decades, he'd notice the quality of pot has gone up significantly, but so has the price. The kind of stuff my generation's parents smoked in the 70s is now what people are selling for $10 a gram, and apparently what the author is still buying.

<comment><USER16> If you can get the same quality stuff for $10 you bought in the 80's for $10, that would still be phenomenal.

</comment></comment><comment><USER17> I don't get why the response claims that the fixed price makes weed a stable currency. In principle, it just pegs weed to the dollar, right?

<comment><USER18> Yes, and a point that isn't mentioned in the article is that the price of weed might be dropping at roughly the same rate the American dollar is being inflated. So what we could be looking at is a coincidental equilibrium. As more US states decriminalize marijuana the costs (risk and otherwise) of production and distribution decrease. I'm in Denver, CO and just the other day walked past a small police station with a cannabis dispensary right next to it.

The times they are a-changin'.

* Edit: Made my initial point less ambiguous.

<comment><USER19> I assume you mean as more states decriminalize "medical" marijuana...right? I haven't heard of any that have decriminalized it.

<comment><USER20> Actually, about 12 states have decriminalized MJ. See: [http://en.wikipedia.org/wiki/Decriminalization_of_non- medica...](http://en.wikipedia.org/wiki/Decriminalization_of_non- medical_cannabis_in_the_United_States).

</comment></comment></comment></comment><comment><USER21> Perhaps it's just convenient to pass a $10 note. No change required.

</comment><comment><USER22> It's really simple.

The increase in potency strongly correlates with the increase in inflation.

He is probably holding quality as a fixed constant, so the real price goes down as the products relative inferiority increases, and the increase in nominal price due to inflation cancels it out.

edit: (man)

</comment><comment><USER21> Good question. The answer to that should be related to the answer to why things change in price.

Reasons for a smaller dollar amount: inflation, cheaper production, too few buyers, too many sellers (thus more competition)

Reasons for a bigger dollar amount: more expensive production, too many buyers, too few sellers (thus less competition)

I'm no economist but I suppose the reason should be a combination of the above. However, my intuition would expect weed gets cheaper over the years due to inflation and competition. So there is probably another reason: It might have to do with weed culture itself, which is highly ritualistic I think. The ritual (of consumption) probably doesn't change and the price doesn't change either.

<comment><USER23> Actually, inflation would raise prices. Given the figures cited in the article, $10 in 1980 should give something like $20-25 now based on the US CPI. Thats precisely why it's interesting - the real (vs nominal) price has actually _fallen_ since 1980.

And then you're right, basic supply and demand theory would suggest that supply growth has outpaced demand growth over the same period (and by a rate about the same as the inflation rate to keep nominal prices constant). But why? loosening regulation/enforcement is mostly on the demand side, I would say. It's probably getting easier to grow higher quality pot (more information readily accessible, better equipment, mobility, economies of scale, etc). The overall market likely behaves perfectly competitively (its a commodity, no single dealer could charge more per unit of 'high' without losing business). So, perfect competition with supply growth = lower real prices.

</comment></comment><comment><USER24> IANAPothead, though I do pick up once or twice a year for concerts and to be a good host.

By far the mode price I've encountered for 1/8 oz (3.5g) is $25; $30 if something very special (though this is in Southern Ontario and British Columbia, and I've apparently been spoiled for quality). Seeing this hold so exactly when I moved from Toronto to Vancouver was my delightful first real encounter with communication-without-intent through large-scale dynamic systems.

      ---

Epilogue: somehow, I keep ending up being very good friends with small-time drug dealers, and Apple employees.

</comment><comment><USER25> Based on what I see in the local paper, in the medical marijuana dispensaries here in Boulder, regular prices range from around $12 to $16 per gram for high grade medical marijuana. There are a variety of specials that bring it down to around $10, but that price seems low as a regular price. I suspect price varies a fair amount by location. I have heard in CA the prices are closer to $20 per gram in the dispensaries there.

Interestingly enough, the price at the dispensaries seems to be about what street prices were before the medical marijuana dispensaries became so prevalent, maybe even a tad lower.

</comment><comment><USER3> I'd grant that, while not always $10, the price of a gram (usually the smallest unit sold, other than guys selling individual joints here and there) - the reason you don't see a lot of price fluctuation is becuase this is a bottom-end price. The markup is already huge - there is lots of market fluctuation for the people buying from growers and buying quarter-pounds and whatnot, depending on quality, quantity, market, etc..... but at some point, it's weed man. It's not worth someone's time to do a transaction for less than $10 (or similar) - even if they're buying at a much lower price.

</comment><comment><USER26> Yeah that was my first thought - supply has kept up with demand enough to offset inflation.

Tobacco, coffee, gold are better currencies alternatives to weed due to their stable legality. Weed's stable demand in relatively illegal times may change drastically if it becomes completely legal. But if that happens, it may be more stable a currency than tobacco since most people on it feel that it does no harm and therefore don't feel incentivized to quit.

</comment><comment><USER27> Tim Harford is always an excellent read/listen. I highly reccomend his Radio 4 programme, "More or Less": [http://news.bbc.co.uk/1/hi/programmes/more_or_less/default.s...](http://news.bbc.co.uk/1/hi/programmes/more_or_less/default.stm)

</comment><comment><USER28> Well, that struck me as a pretty pompous answer from the economics dude. If he could have been bothered, he could have found official price stats for various drugs and then written something factual.

</comment><comment><USER29> Glad to see comments being posted where nobody has any true expertise. Proof: The conversation should have turned to "grade" from "quantity" and hasn't.

Good on all of you. Don't rearrange your own 1's and 0's.

I'm no expert either, thankfully. Although the medical benefits do seem to be real (i.e. pain reduction, appetite stimulation, etc.)

</comment><comment><USER30> Did any of you actually read the text? The Economist's answer is hilarious.

<comment><USER31> That was pretty funny. Put weed on a modern commodities market and you can be sure stability vanishes.

</comment></comment><comment><USER32> Because the math is easier for suppliers who don't want make change.

</comment><comment><USER33> 12,5 grams is 60 liras (~$45) in Turkey.

</comment><comment><USER34> In my experience, if you are going to buy a gram of good weed in anywhere but northern california or colorado, $20 is about the going rate.

</comment><comment><USER35> I was curious enough about this to ask a pothead friend about this, his statement is that buying in such small quantities he expects to pay $20-$25 per gram for "high grade" plant material at the pot stores^W^Wmedical marijuana dispensaries in SF. "$10 is what suburban tourists pay for a gram of twigs, seeds, and brown mexiweed on haight street". was his direct quote.

<comment><USER4> He's correct, this "$10 a gram" question doesn't make much sense. Fortunately, I've studied this topic and can share some knowledge.

There are basically two qualities of marijuana on the market in the US: low grade Mexican imports, and high grade domestic/canadian. You could add a third, a 'midgrade', which would be really good mexican or low grade canadian (mass imported BC bud, aka 'beesters'). (Interestingly, in the UK and Europe, the Mexican equivalent is 'African').

The Mexican stuff sells for $200-$1200 a lb, depending on your proximity to the border. For instance, it might be $250 a lb in Las Cruces, NM, $500 in Albuquerque, and $600 in Denver. This equates to a price of $25-80 an ounce retail varying similarly by location. It is not very fresh, may be chemically adulterated (splashed with gasoline to hide the smell, for instance), is compressed into bricks. Your average teenager or blue collar worker smokes this. . Potency by weight is probably 2-6% active cannabinoids. Smell ranges from hay-like, to mildy sweet and herbal, to old and musty. It's the Budweiser of pot.

The other type is the high grade, aka 'kind bud', 'headdies', 'nugs', or so on. This is typically produced in hydroponic farms in the US, from seeds of Californian or Dutch varieties that have been the result of intensive breeding for quality. As such, it is much more fresh and potent. Sometimes the Canadian material is compressed a bit, but never into 'bricks' like the Mexican. Potency by weight is probably 5-25% active cannabinoids. This is preferred by connoisseur smokers, upscale customers, people concerned about their health and medical patients. That's the type you'll find at the medical dispensaries in California or Colorado, for instance - locally grown, high quality. Smell is fresh and herbal, showing a wide range of floral scents typical to the plant. A beer comparison would be a tasty craft brew from a brew pub or a regional microbrew. I guess the Canadian stuff would be the equivalent of Sam Adams. The prices range from $250 to $450 an ounce, showing little regional variation. My friend has a license to produce for dispensaries in Colorado, and he said the prices there are $175 to $350 an ounce, similar to the old prices on the black market. The price for this type is usually, as noted, $20-25 a gram. More typical is a 1/8 ounce (3.5 g) for $50-60, and a quarter ounce for $80-100. So, it actually works out to about $14 a gram.

And, there HAS been inflation in the price of this in the past 20 years, invalidating this article's viewpoint, but it goes in spurts. The price for a quarter ounce of this higher quality type was about $60-80 in the early 90s, and then became $80-100 in the later half of the decade. It's stayed remarkably stable at that price, and $350-400 an ounce, since then.

<comment><USER36> A small correction: "kine bud", not "kind bud".

<comment><USER4> Yeah, I've heard it both ways - I don't know what the original origin of that term is.

<comment><USER37> From urban dictionary...

Kine is a hawaiian words that translates to "the one". It is used to express like or show praise towards something or someone. The term has been popularized in the continental United States in reference to potent Cannabis.

<comment><USER4> Seems reasonable. I don't think the neo-hippies I heard this from 5-15 years ago were thinking anything about Hawaii, though. They thought 'kind bud' or 'the kind' and either didn't think about it, or assumed that meant something that was 'nice' to them.</comment></comment></comment></comment></comment></comment>


Live coding (music) with Emacs Live - <AUTHOR> https://github.com/overtone/emacs-live

<comment><USER2> Anyone interested in this should also check out ChucK: <http://en.wikipedia.org/wiki/ChucK>

<comment><USER3> Thanks for this! Did not know about ChucK.

Since we're plugging stuff we like, ChucK co-author Perry Cook's book, here: [http://www.amazon.com/Real-Sound-Synthesis-Interactive- Appli...](http://www.amazon.com/Real-Sound-Synthesis-Interactive- Applications/dp/1568811683) is an excellent intro to DSP and synthesis techniques.

</comment></comment><comment><USER4> I actually thought the screenshots are quite interesting with their scanline glitz, but apparently that's from postprocessing.

<comment><USER5> Not sure if you can get that specific effect, but Cathode for Mac has lots of options:

<http://www.secretgeometry.com/apps/cathode/>

<comment><USER4> The author talked to the Cathode developer and even opened a feature request for iTerm2[1]. There seems to be some interest in this. Cathode is mostly about emulating old, slow hardware, this would be about the opposite (code wouldn't look too differently, though). A "movie hacker" terminal or editor for live coding would be pretty interesting. Hmm, maybe in addition to Xt/Gtk/OSX one could add an OpenGL interface to Emacs for maximum scriptability.

1: <https://vimeo.com/22798433>

</comment></comment></comment><comment><USER6> Sam Aaron, the guy who has done a bunch of screencasts with Overtone (and his emacs/dvtm config), and used it to create this emacs config setup, has used the same effect on pretty much everything. It really does add an element of coolness to the mix.

I've been using emacs live for a bit. It's great. It bundles some nice plugins and has sane defaults. The cyberpunk colour scheme is cool. It has some nice personal touches on the scratch buffer.

The downside is that the structure puts far more emphasis on maintaining the structure than adapting your config. If you want to keep it solid you can't use package manager without some changes, or (configure-group).

You might get the odd issue with the bundled plugins (auto-complete loved lisp and file system traversal but hated other languages), but for a "I want to live code and I want it to WORK" config, it's bloody good.

</comment><comment><USER7> Another similar project, SuperCollider: <http://supercollider.sourceforge.net>

And if you're on a Mac, Impromptu: <http://impromptu.moso.com.au>

<comment><USER8> Emacs Live uses Overtone which is a Clojure layer over SuperCollider.

</comment></comment><comment><USER9> oh i like, how does this compare to pd and max/msp, apart from the fact that those are visual.

it seems that the overtone guys want to add a visual display in the future. but most comparisions of supercollider and max/msp are mainly focused on the frontend.

is there anything i can do with max that i can't with sc besides looking pretty? (although i do prefer a nice editor to a visual thingie)

</comment><comment><USER10> Where can one get information about how to actually code with this? The videos sure are fancy, but don't offer much information.

</comment><comment><USER11> It's worth noting you can also use vimclojure as a live Overtone environment. (or other slime-y vim methods)</comment>


Microsoft to infuse office software with AI - <AUTHOR> http://blogs.wsj.com/cio/2016/08/23/the-morning-download-microsoft-to-infuse-office-software-with-ai/ <comment><USER2> Their first attempt at this was an annoying animated paperclip named Clippit, fondly known as "Clippy" to millions of MS Office users. See [https://en.wikipedia.org/wiki/Office_Assistant](https://en.wikipedia.org/wiki/Office_Assistant).

</comment><comment><USER3> Right, because Bob and Clippy were so well received...

</comment><comment><USER4> To make it easier to invade your privacy.</comment>


The Case Against Micropayments - <AUTHOR> http://www.openp2p.com/pub/a/p2p/2000/12/19/micropayments.html <comment><USER2> I would argue that when it comes to certain specific structures and sectors, micropayments can and are useful, specifically in regards to capturing impulse buyers who are engaging in entertainment-type activities. Above a certain cost threshold, many consumers will think harder about a buy and thus decide against an impulse purchase, but if the cost is low enough, they will just buy it, particularly if they are engaging in entertainment already.

itunes is one great example, as well as Xbox Live and Second Life. Limiting the context to leisure activities and creating a situation where the micropayment right then and there is the most convenient form of acquiring the product makes these successful.</comment>


Germany adopts first ethics standards for autonomous driving systems - <AUTHOR> https://360.here.com/autonomous-cars-get-a-lesson-in-ethics <comment><USER2> In the 1960's and 1970's there were many efforts to professionalize software development and bring it line with other engineering practices. This would include things like license boards, a code of ethics, etc. Obviously at first blush this sounds ridiculous, but like Wikipedia it seems to not work in theory but when it comes to the real world work just fine (as the other engineering disciplines have shown). This is actually where the term "software engineer" dates from, it was partly a marketing / professionalization attempt.

One thing this would lead to (could be good or bad) is people being "stripped" of their license to practice software engineering. After the 1981 Hyatt Regency disaster in Kansas City, where over 200 people were killed, this is exactly what happened to the engineers involved in building the walkway. They forgot the software equivalent of a line-ending semicolon when they eliminated a single-support bolt for the catwalk accidentally during design review. It collapsed during a holiday party, killing those above and those below. Perhaps as we start seeing more "building computers", sometimes called "architectural robotics" (a super fascinating subject if you have a chance to look it up, there are already prototypes out there), a software engineer causing a similar amount of destruction might not be so farfetched.

<comment><USER3> > They forgot the software equivalent of a line-ending semicolon when they > eliminated a single-support bolt for the catwalk accidentally during design > review.

Absolutely not. Their original design supported only 60% of the minimum load specified by the Kansas City building code. However, that's not why they changed it. A supplier pointed out that the design was impractical to assemble, and suggested an alternative. The engineers in charge accepted that alternative without doing any calculations about its effect on the load- bearing capacity of the walkways. Had they done so, they would have seen that the new design could support a mere 30% of the minimum load required by the building code. Their engineering process was flawed from start to finish. If I had to make an analogy to software, it would be a company that regularly did development on the production box.

Engineering is not about never making mistakes. Forgetting a semi-colon is common, and any software engineering process that depends on people never forgetting something that trivial is fatally flawed. When you make a mistake in vehicle control software, there should be many layers of failsafes to catch it, such as: the compiler, automated unit tests, automated acceptance tests, code review, manual feature testing (with a simulator), manual release testing (with a simulator), integration testing on a vehicle that has been immobilized, integration testing on a closed track, and production environment trials.

Keep a few mistakes between yourself and disaster. One mistake is a very slim margin.

<comment><USER4> A better analogy would be promoting a service to production with the unit tests failing (or not having an automated CI process that ran the unit tests ... or not having unit tests).

There are different degrees of software engineering. If you work for a company that makes pacemakers, there are very strict software testing requirements. The same goes for the developers of real time avionics systems for air craft, ECUs for cars and autonomous train systems in places like Singapore or London.

If you're writing software that tracks inventory and ships out shoes, mistakes aren't life threatening and you might have faster processes to get things into production. If you reuse that software for shipping out medical equipment for people with diabetes or sleep apnea, you could run into life treating problems if the testing process is not updated to match the seriousness of the problem you're trying to solve.

<comment><USER3> > There are different degrees of software engineering.

That's true, but at some point it's no longer engineering. To practice engineering in my jurisdiction, it's required that you hold a professional license and work for a company with a permit to practice.

I am a professional software engineer (P.Eng.), but many employers for non- critical software do not have a permit to practice. They have no need for it.

I need to file my Continuing Professional Development hours every year. One category of hours is just "practicing engineering". However, if I am working for a company that does not have a permit to practice, it would be quite a problem if I claimed I was practicing engineering.

Practically speaking, that means software engineering is just the development of software which could be dangerous (at least where I live). It's distinguished from general software development mostly by the need for rigour.

<comment><USER5> Fascinating! Which country is that?

<comment><USER3> Canada.

I should also note that anyone can assist an engineer, so it's not like Computer Scientists are cut out of the field. Many disciplines have technicians and other specialists who are just as technically capable as the engineers in their domain (often more so).

The lead engineer signs off of on releases, and they're the main person held responsible if there's a safety incident traced back to sloppy work. That was the only real difference between the engineers and non-engineers I worked with. It basically just meant, "the buck stops here."

</comment></comment></comment></comment></comment></comment><comment><USER6> "While vehicles may react autonomously in the event of emergency situations, humans shall regain control during more morally ambiguous events."

That's not going to end well. As we saw in the AZ crash, when there's a situation at hand, it's hard to transition the attention properly quickly over to a human who has been not paying attention because while the car was handling everything just fine. It's unrealistic to think that's possible in anything less than at least 10 seconds.

<comment><USER7> Control could mean ahead of time. So basically the driver gets ahead of time a couple of gutwrenching morality questions like:"Would you rather crash into: 2 Kids on a bicycle or a woman with a stroller?"

That's what I call an intense first-time-setup session.

<comment><USER8> Two months later two kids cross the road in front of you; the system misidentifies an overflowing bin as woman and stroller and proceeds to plough right through the children.

As this was a technical fault you suffer no legal repercussions, but carry the mental despair over whether you answered the setup question correctly to an early grave.

</comment></comment></comment><comment><USER9> In the US regulation is reactive, but you can sue for damages. In the EU regulation tries to be proactive, but it is much harder to sue for damages.

So from the perspective of a startup trying to get in this market, this sort of environment might prove superior, because your business risk is much reduced. You know what sort of standards you must follow and as long as you follow those standards you do not have to worry about being blamed for negligent murder by the family of every accident victim.

<comment><USER10> Yes but complying with that regulation is a larger up front cost, which raises the barrier to entry.

</comment></comment><comment><USER11> best part: "Drivers retain sole ownership over whether or not their vehicle data is forwarded or used by third parties."

I like it how it shows that data your device generates is your data, and only yours. It's like stating the obvious.

<comment><USER12> It doesn't say that there must be means for you to access your data, though.

And, you'll likely have to sign a waiver granting the manufacturer access to your data or they won't sell you the car.

<comment><USER13> European courts may take a rather dim view on that. If consent is required to be given freely, they might determine that this sort of forced consent isn't valid. There are also limitations on what you can put in the fine print, and "fine print" is often defined rather broadly, to the point where putting it on another form requiring a separate signature may not save you.

</comment></comment></comment><comment><USER14> I like these, but I think that this one is too evasive: "In any driving situation, the party responsible, whether human or computer, must be clearly regulated and apparent." In reality, who is responsible for what is going to be the main problem that is faced on a day to day basis, and not attempting to define exactly how that works takes a lot of meaning out the standard. Other than that, it's largely stating what I would think most people would have assumed anyway. Which is a good thing and I'm glad they are doing it.

<comment><USER15> Maybe the cars could actually say specifically whose in control at the moment? Like a little sign that either says 'human' (when under human control) or 'AI' (when under computer control). Perhaps in the same place you'd put a taxi sign on that kind of vehicle.

Maybe then with a built in logging system that says every time control changes, and deletes the record when irrelevant (like three changes back). Then just take the data whenever there's a car crash, and hey Bob's your uncle.

<comment><USER14> I think the more difficult problems are if the car crashes while under computer control, who is at fault. Also, when a car crashes under human control, why didn't the software take over to prevent that, are car companies liable for that?

<comment><USER15> Well then it'd require an investigation after the fact. If the computer has been modified, it's the driver or garage's fault. If it hasn't been modified, then it's the company's fault.

So in most cases, the likes of Tesla or Uber or whoever pay the other party's insurance. If it can be proven that a certain programmer or team screwed up, then they're personally held liable and sent to prison if necessary.

That'd certain encourage decent standards here. Do your job poorly and have it tied to your actions, and you go down for 20 years.

<comment><USER14> That sounds like a really bad idea. Pay the insurance, fine. That's a good idea actually. Instead of paying your insurance company, you pay the company that built the software for insurance. Then the software/insurance company pays for any damages caused by the car. The best software could offer the cheapest insurance.

But put developers in prison for 20 years because the car crashed, that's untenable. You wouldn't have decent standards, you just wouldn't have anything at all. What kind of developer would put themselves in that position? Everyone makes mistakes. All complicated software has bugs. You would only have software made by fools, and marketed by fools, that was much more dangerous.

If someone makes software that reduces accidents from 10% of drivers per year to 0.1%, they still cause 100,000 accidents a year in the USA, maybe a few thousand fatalities. Give them the electric chair right?

If you are going to punish them for the mistakes, will you reward them commensurately for success? For every life they save, can you give them a life?

</comment></comment></comment></comment></comment><comment><USER16> This actually happened in August 2017 ([http://www.bmvi.de/SharedDocs/EN/PressRelease/2017/128-dobri...](http://www.bmvi.de/SharedDocs/EN/PressRelease/2017/128-dobrindt- federal-government-action-plan-automated-driving.html)).

I'm curious how this blog post by HERE (9 months later) differs from the earlier official statements.

<comment><USER17> It's a company blog from here maps, they just run out of topics I guess. By the way, Dobrindt is not even a Minister anymore. The new Federal Minister of Transport and Digital Infrastructure is Christian Schmidt.

<comment><USER18> The Federal Minister of Transport and Digital Infrastructure actually is Andreas Scheuer. Christian Schmidt was only interim.

<comment><USER17> Gee, they go so faaaast :) Thanks for the correction!

</comment></comment></comment></comment><comment><USER19> I swore I was going to try to _not_ post on HN today (it's Mother's Day), and this is a little off-topic, a little.

I was watching car accident videos on youtube yesterday (I got sucked in and couldn't look away. I lost two hours.)

Almost all of them were due to someone doing something obviously stupid or wrong: turning without checking for oncoming traffic; passing unsafely; over- correcting and then losing control; mis-judging clearance with stationary obstacles; tailgating; etc...

It occurred to me, what if we program the robot cars (and can we _please_ call them _" auto-autos"_!?) just so that they won't engage in dangerous behaviour? The basic idea is, if the way is not clear, slow down.

What I mean is, it may just be Too Hard to make a robot drive a car like a car; but it should be already possible to make a _safety_ vehicle that prevents human error.

</comment><comment><USER12> > Autonomous driving systems become an ethical imperative if the systems cause > fewer accidents than human drivers.

This makes a certain kind of sense if viewed totally in a vacuum, apart from any other considerations. But life is not all about the car. Is human choice unimportant? What about freedom to travel where I want and when I want? Is curtailment of those and other freedoms to be sacrificed based on statistics? Whose statistics? How will these statistics be gathered? Who will interpret them? Through what lens?

This sounds like the kind of reasoning that made it illegal in many jurisdictions to let your kids play outside on their own.

<comment><USER20> I suggest you read the actual report, rather than the soundbytes. They put a lot of importance on the question of personal freedom: [http://www.bmvi.de/SharedDocs/EN/publications/report- ethics-...](http://www.bmvi.de/SharedDocs/EN/publications/report-ethics- commission.pdf?__blob=publicationFile)

</comment></comment><comment><USER21> This reminds me of I, Robot:

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

</comment><comment><USER22> I want this rule: software updates, however small, shall not be installed without X hours of testing by a government institution.

<comment><USER23> That sounds extremely expensive, why would you want that?

<comment><USER22> I foresee companies pushing quick and dirty updates, sweeping critical problems, or problems with their internal software development cycle under the carpet. I want transparency in how companies deal with problems and software updates.

Expensive is a feature in this case. It ensures that stuff gets tested well before companies even consider having it double-tested by the govt.

<comment><USER13> That's a great way to make sure software doesn't get updated at all unless it's completely unavoidable.

</comment></comment></comment></comment><comment><USER24> Will Germany be applying the same enforcement to these standards that they applied to VW and emissions?

<comment><USER25> Probably, yeah. Our car industry is a driving factor of our economy, so politics doesn't punish them as hard as they punish other parties.

<comment><USER26> After a quick google I get two results that disagree:

* wikipedia claims ongoing investigations against 37 people involved

* Politicians are working on the Musterfeststellungsklage, a class action equivalent for the German justice system. Explicitly so that buyers have better odds suing VW.

<comment><USER25> Which in my perception is still not nearly as hard as other industries would have been punished for similar crimes. I did not claim that they don't get punished at all.

</comment></comment></comment></comment><comment><USER27> I wonder what the solution to a trolley problem would be for autonomous vehicles. Would a trolley problem situation exist if all cars are autonomous?

<comment><USER28> The trolley problem has and continues to be a stupid distraction for blogs and would-be pundits to insert some kind of false ethical puzzle into what is a very clear set rules of the road.

There is no trolley problem. When vehicles are on the road and operating according to the rules of the road, there is no choice about whether to swerve to avoid something at the expense of another. Cars are not being commanded to leave the road to avoid crashing into something on the road. You stay on the road, stay in your lane, and don't get involved with people on the sidewalk, etc.

If there's a bicyclist, motorcyclist, etc, they are just as much a vehicle as you are, occupying their position in another lane, or in front/behind you. You stop in your lane, change lanes if safe, and that's it.

There's no, "sacrifice 1 to save 3" kind of argument.

<comment><USER29> Trolley problem situations absolutely can arise; whether the system is programmed to recognise and consider them is entirely beside the point. All that matters is how the system actually behaves when tested.

But I do agree that I don't see such scenarios ever occurring in reality because computer controlled cars are not going to get themselves anywhere near a trolley situation. They'll put the brakes on long before a human would ever recognise the situation as catastrophic. Almost all unexpected emergency situations are straightforward: the correct response will be to brake hard; the consequences are not ethical but rather dictated by physics.

Swerving onto the footpath is an absurd option for countless reasons and cars shouldn't be allowed even if the algorithm is fairly sure the footpath is clear.

The closest plausible scenario to the _trolley problem_ I can imagine actually occurring: "An unidentified object has fallen onto the road meters in front of me, and I am boxed in with cars to my immediate left right and rear so I can't swerve. Do I break hard and probably get rear ended or do I break soft and definitely crash into the unidentified object?"

<comment><USER30> Even then, the chances that the car behind has automatic braking get higher every year. And if they're so close that they can't brake before hitting you, that's _their_ fault, not yours. Brake, every time.

<comment><USER31> "Fault" doesn't matter that much in an accident, saving lifes matters. "My wife and child died. But doesn't matter, it was someone elses fault" said no one ever

<comment><USER30> Not quite the point of what I was trying to convey.

My point was more that your responsibility should be to avoid crashing into things. In the posted scenario, you're probably better off slowing down and being rear-ended than smashing into whatever and then _also_ being rear-ended.

On a slightly different point, if someone's following me so closely that I'm properly worried about their stopping distance, I _will_ slow down and let them pass. Better that the idiot is in front where I can see them properly and they can't crash into me, and then I don't have to worry about the car behind me if I need to brake suddenly.</comment></comment></comment></comment></comment></comment>


The world's fastest VP9 decoder: ffvp9 - <AUTHOR> http://blogs.gnome.org/rbultje/2014/02/22/the-worlds-fastest-vp9-decoder-ffvp9/ <comment><USER2> I've been experimenting with x265 via ffmpeg, encoding some TV episodes in HEVC. My experience is that it takes 3.5-7 seconds of CPU time to encode 1 second of video. (These are things like 576x432 resolution at roughly 700 kbps, or 704x528 resolution at 530 kbps.)

As for decoding performance, VLC appears to use 30-50% CPU when playing these videos back. (Haven't tried one at uber-high resolution yet.) As far as I'm concerned, if it's fast enough to never stutter, then that's the biggest goal it needs to hit, and beyond that, reducing power consumption is desirable but not too important.

</comment><comment><USER3> I believe YouTube's VP9 videos are all tiled, so its a shame to not see data for that type of file.

I was looking the other day and was pleasantly surprised by the amount of VP9 content (does it really take them a day to encode a minute of VP9?). The article's numbers also confirm my impression that the VP9 decodes where not much harder on the CPU than the H.264 ones.

I believe Chrome switched to ffvp8 for VP8 decode. I wonder if they'll do it again for ffvp9.

<comment><USER4> >I was looking the other day and was pleasantly surprised by the amount of VP9 content

How do you know that you recieve VP9 and not VP8, is there some download script for this?

>does it really take them a day to encode a minute of VP9?

I've done lots of encoding tests and it is indeed slow, also the encoder (vpxenc) currently only uses one core, of course you can run several encodings simultaneously to make use of all your cores, but it's certainly a limitation, particularly given how slow the encoder is.

On the brighter side the quality has been improving steadily during my testing over the last 8 or so months, it's certainly beating x264 in many of my tests, however with the huge speed difference in favour of x264, vp9 (and x265) are not yet near competitive in terms of 'practical' encoding in my opinion.

>I believe Chrome switched to ffvp8 for VP8 decode. I wonder if they'll do it again for ffvp9

As long as there aren't any compability issues I can't see why not, that said when playing some of my vp9 test encodings in VLC (which I believe uses ffvp9) I sometimes get decoding errors causing huge macro-blocks etc, when playing through Chrome or if I decode the vp9 stream to another format they play perfectly.

Oh, and I unfortunately missed and downvoted you instead of upvoting you (curse those small arrows!), I apologize and blame the crappy cold I'm currently down with which is making me drowsy.

<comment><USER5> But VP9 is supposed to beat H.264. It should be significantly better.

Because at the end of the day it is competing with H.265.

<comment><USER4> Well it will be interesting when x265 (which is the only HEVC encoder I'm interested in as it seems poised to become the x264 equivalent) has had more time to improve, in the last tests I did (which were more than a month ago) it was worse than x264 (and consequently VP9) due to losing a lot of detail, but as stated the encoder is very young and also under heavy development, chances are I would already get very different results if I redid the tests today (currently keeping an eye out for some major improvements before I start testing again).

<comment><USER6> I was comparing 8-bit x265 against 10-bit x264 a couple weeks back, and was quite impressed - x265 managed to preserve quite a bit more detail than x264 in many places (the previous time I had tested x265 it didn't manage to do even that). However, there were two pretty glaring issues. For one, x265 sucks at dealing with gradients, resulting in horrible banding. Two, as pointed out in the OP post, x265 is _slow_ \- I was pitting preset veryslow against preset veryslow (used CRF with x265, bitrate-matched with 2-pass x264), and 8-bit x265 was 5-6 times slower compared to 10-bit x264. Working 10-bit x265 could potentially fix the banding issue, but the speed issue would likely be even worse. There's still quite a few ways to go before using these new formats will be actually practical.

</comment></comment></comment></comment></comment><comment><USER7> HEVC decoder libde265 works well with even 4k Videos. There is a gstreamer plugin for easy test [http://www.libde265.org/blog/2014/02/22/gstreamer-4k-h265-he...](http://www.libde265.org/blog/2014/02/22/gstreamer-4k-h265-hevc- plugin/)

</comment><comment><USER8> [http://x264dev.multimedia.cx/archives/360](http://x264dev.multimedia.cx/archives/360) comes to mind.</comment>


Why We Use OCaml - <AUTHOR> http://tech.esper.com/2014/07/15/why-we-use-ocaml/ <comment><AUTHOR> Hey HNers, I'm the CEO of Esper - there's been a lot of questions regarding the business case for OCaml and I think it'd be helpful to write here:

1) It's practical - for our team, we had developed in it before and had deployed a large system in it - we could get to where we wanted quickly.

2) we think it's a competitive advantage (see OP and PG's Beating the Averages essay) - additionally, since we deal with large amounts of data, OCaml was particularly helpful in that regard too

3) OCaml is a good filter - the thing that matters more to us is a person's elasticity of learning - their ability to learn new things. We use the right tool for the right job, so we also use javascript, java, objective-C, etc. OCaml is a pretty good filter and test for elasticity of learning.

Lastly, not a primary reason, but an advantage - languages get popular because the companies that use them are popular (i.e. gain market traction and can pay developers). That doesn't mean it's the most efficient way to get things done. We'd like to be part of the group that helps make the industry more efficient.

<comment><USER2> How do you feel about the fact that OCaml has no capacity for "real" multithreading? It seems that such capability will only become more important in the future.

<comment><USER3> Is it obvious that you need threads instead of CSP ?

</comment></comment></comment><comment><USER4> > OCaml includes many features that are not available in the more mainstream > programming languages ... and we believe this gives us a competitive > advantage. ... The purpose of this post is to explain the benefits of OCaml > and compare it to other languages. We hope to convince readers, especially > other developers, to consider adopting OCaml for their projects as well.

The authors did a great job explaining the benefits of OCaml and why I as a developer should think about using the language. I actually want to play around with it now in a side project.

As a start-up manager though, I think the business case is strongly against them and don't believe there is any "competitive advantage" from using OCaml... in fact, I think the opposite. Here's why:

* There is not a strong community behind OCaml. You can't take advantage of the numerous libraries and references created by the community like you can with Ruby, Python, Javascript, Java, or any of the other mainstream languages. * OCaml is hard (and so are most functional programming languages). You will always need exceptionally talented developers to work on your code base and that will get expensive. * OCaml is not popular. You will have to pay an additional premium for OCaml developers due to the lack of experienced talent. * OCaml is a risk. If you're starting a consumer-oriented service, you need to prove there is a market for it. Will OCaml help you get to market faster? I don't know. Will Ruby-on-Rails? Yes. I'd pick RoR any day just to eliminate the risk of getting to market late.

<comment><USER5> While your mileage will vary depending on the nature of your startup, I can point you to a paper we wrote summarising our experiences using OCaml to build the XenServer toolstack in a startup environment [1].

You should bear in mind that OCaml represents almost _twenty_ years of continuous development (see the history chapter in Real World OCaml [2]), with a community steeped in some of the most cutting edge technology in modern programming languages (e.g. the Coq theorem prover or the CompCert certified C compiler).

I was the startup manager at XenSource that took the risk, and all of your points were not true for us:

\- by joining the Caml Consortium (very cheap), we got access to the core developers and a yearly face-to-face. We're talking about Xavier Leroy and Damien Doligez here. Do you get that with Java?

\- the compiler and runtime are utterly rock solid and engineered for a modern Unix environment. We found more serious gcc bugs (5+) than OCaml bugs (one, to do with compiling functions with >32 arguments, and was already fixed in trunk and a backport available inside a day).

\- Hiring OCaml developers gave us the cream of the crop even for entry level jobs, and I work with several of the original team that we assembled to this day. See the paper [1] for details on several of the responses from within the company and how we responded.

\- The OCaml community is very pragmatic, since the language is used in quite a few large codebases like Coq, CompCert, Why3, XenServer, Pfff (Facebook) as well as closed-source codebases such as Jane Street and Lexifi's. Most language evolution discussions are evaluated against these large users. I consider OCaml rather unique in that, despite being a small community, the ones that do use it do so seriously and often at scale.

I find it amusing that so-called "risk-averse" startup managers discount a 20-year old language with legendary stability in favour of relatively new languages. Nothing beats having developers that deeply understand their language and libraries, and that's only imparted with age and stability.

I would also note that being based in Cambridge, it's quite easy to grads that know ML (and the same is true in many US universities that teach OCaml, like Cornell, Harvard, Princeton and Yale).

[1] [http://anil.recoil.org/papers/2010-icfp- xen.pdf](http://anil.recoil.org/papers/2010-icfp-xen.pdf)

[2] [https://realworldocaml.org/v1/en/html/prologue.html#a-brief-...](https://realworldocaml.org/v1/en/html/prologue.html#a-brief- history-from-the-1960s)

<comment><USER6> > I find it amusing that so-called "risk-averse" startup managers discount a > 20-year old language with legendary stability in favour of relatively new > languages.

While I mostly agree with your post, the four languages mentioned as opposed to OCaml in the grandparent post (Ruby, Python, Javascript, and Java) are all older than OCaml (which is 18 years old) -- Java, JavaScript, and Ruby are all 19 years old, and Python is 23 -- so they aren't "relatively new languages" compared to OCaml.

<comment><USER7> 20 years for language X do not bring the same amount of benefits as 20 years for language Y, as can be clearly seen if we compare Javascript and OCaml.

<comment><USER8> Not sure which language looks better here... I'd say that even with its greater popularity, JavaScript is worse in pretty much every aspect than OCaml.

<comment><USER7> Yes, I meant OCaml looks better, in light of all the javascript traps.

</comment></comment></comment></comment></comment></comment><comment><USER9> From the "About" page: "We want to see a world where everyone gets the mental luxury of an assistant, including the assistant. We are making this future happen. [...] Oh, did we mention every team member gets an assistant?"

So ... there's some kind of cycle of assistants, where X is my assistant, Y is X's assistant, and I'm Y's assistant? Esper currently employs infinity people? Assistants are employees but not, you know, _team members_?

<comment><USER10> The assistants mentioned in the About page are electronic, not real persons, and I suppose that it's the product Esper is building. I'm not affiliated with them in any way but I like the concept.

</comment></comment><comment><USER11> Good read. I really liked how the author concretely defined the things they use in OCaml, instead of just saying "functional programming" and waving their hands.

<comment><USER12> "Algebraic data types!" [waves hands vigorously]. Seriously though, I agree. It's a very solid run-down of all the main ways OCaml is cool. I'll probably link people here if they ask my about why they should bother with OCaml.

</comment></comment><comment><USER13> Interesting list. I'm curious if the author has looked at Rust and how they think it stacks up. Rust is obviously still pre-1.0, and it doesn't have an identical feature list, but it seems to me to perhaps be a lot more practical for a lot of work than OCaml (largely because Rust can basically be used anywhere C++ can be, and it has good support for C FFI).

<comment><USER14> I think that, having used both of them, Rust is going to feel a lot lower level than OCaml. The single biggest thing is that it's pretty hard (slash near impossible) to write Rust code without thinking about memory allocation, which adds non-trivial mental overhead to the work. That isn't to put down Rust - I think they are the first language that actually has a static, type- checkable story about memory allocation, and that's phenomenal, _but_, the reason for this is to be able to write soft-realtime code (for example, browser engines, games, etc). Web code, at least in the early stages, probably usually has lower performance requirements, and most people would probably trade some performance (and I don't mean to say that OCaml is slow, anymore than Go is slow, etc) for not having to even think about that stuff.

<comment><USER13> Eh, I don't see that as a downside. And actually, I'm not sure that's even true. It's already apparent that a lot of people are using a lot of completely unnecessary allocation in Rust, precisely because they aren't thinking about what they're doing (and so are doing things like using heap-allocated String objects when they really just need &str slices, or using Box unnecessarily; this was one of the reason cited for moving away from the ~ sigil, as it was considered to "hide" allocation too much).

And speaking personally, I almost never have to consciously think about allocation, unless I'm doing really performance-sensitive work. The straightforward approach is usually correct.

</comment></comment></comment><comment><USER15> For a more in-depth list of reasons to use OCaml, I recommend "OCaml: What You Gain" at [http://roscidus.com/blog/blog/2014/02/13/ocaml-what-you- gain...](http://roscidus.com/blog/blog/2014/02/13/ocaml-what-you-gain/).

It is part of the series of posts linked in "Python to OCaml: Retrospective" at [http://roscidus.com/blog/blog/2014/06/06/python-to-ocaml- ret...](http://roscidus.com/blog/blog/2014/06/06/python-to-ocaml- retrospective/) (HN story: [https://news.ycombinator.com/item?id=7858276](https://news.ycombinator.com/item?id=7858276)). I learned a lot about OCaml from that series of posts.

For more comparisons between OCaml and other langages, see the first two posts in the series. In the first post, [http://roscidus.com/blog/blog/2013/06/09/choosing-a- python-r...](http://roscidus.com/blog/blog/2013/06/09/choosing-a-python- replacement-for-0install/), the author compares OCaml to many languages, including Python, Go, and Haskell. The second post [http://roscidus.com/blog/blog/2013/06/20/replacing-python- ro...](http://roscidus.com/blog/blog/2013/06/20/replacing-python-round-2/) summarizes his conclusions about the languages – he decided that either Haskell or OCaml would meet his needs best. (He chose OCaml after that, obviously.)

</comment><comment><USER16> A bit surprised F# was not even mentioned. I guess they are hardcore meta- programming users?

<comment><USER17> F# is an ML without any of the things which make ML good (modularity). It's a breath of fresh air if you're on a Microsoft platform, but if you can use OCaml, it is superior.

<comment><USER18> Hey Jon, being an F# user who is not very familiar with OCAML, I'd love to know a little more about what specifically F# lacks that makes OCAML superior. I want to know what I'm missing out on.

<comment><USER19> _Where Ocaml is better_ :

\- Single Core Speed (Ocaml is fast)

\- native compilation without requiring some installed runtime

\- Polymorphic Variants (Last I read, to be used only when regular variants are not sufficient)

\- Modules and Functors (there's a proof of principle for F# supporting these)

\- GADTs (allow for richer more expressive types, much more flexibility than regular algebraic data types)

\- camlp4

\- more pervasive structural typing, higher kinded types...type system is not weighted down by a foreign runtime

 _Where F# is better_ :

\- better support for not-sequential programming in all its forms: actors with lightweight threads, parallel, async, gpu (many production ready choices), reducers (and Go style channels if they accept joinads)

\- Active Patterns are a dark horse

\- Type Providers are curious. They seem like dumbed down metaprogramming at first but it's one of those cases where constraints benefit creativity. Although you could certainly do what they provide (and more easily at times) with metaprogramming, I've never seen metaprogramming used that way before. And especially with the proliferation of APIs, stuff like json inference makes going to a language without them like going from 3 monitors to one.

\- Units of Measure

\- More libraries and Better cross platform support via Xamarin and unity3d

\- #light. F# syntax is a tiny bit cleaner and surprisingly close to Python at times.

\- Computation expressions/do notation are not quite monads and can be more flexible. Tomas Petricek argues the case here: [http://tomasp.net/blog/2013/computation-zoo- padl/](http://tomasp.net/blog/2013/computation-zoo-padl/)

Why the above do not matter: The MLs tend to be more pragmatically focused than other functional languages and espouse using as little fancy code as possible. The core of both languages are the same, so much of the time and ignoring library choices, you won't be seeing many differences between F# and OCaml. It's more like Portuguese vs Spanish than English vs German.

<comment><USER20> I'm surprised you mention camlp4 as an advantage over F#. It is being removed from the official distribution due to the problems that it causes[1], to be replaced with extension points[2].

We use camlp4 a bit at Red Lizard Software and we are eagerly looking to move to extension points as soon as they are released.

[1]: [https://blogs.janestreet.com/ocaml-4-02-everything- else/](https://blogs.janestreet.com/ocaml-4-02-everything-else/) [2]: [https://blogs.janestreet.com/extension-points-or-how- ocaml-i...](https://blogs.janestreet.com/extension-points-or-how-ocaml-is- becoming-more-like-lisp/)

</comment></comment></comment></comment></comment><comment><USER21> What are some advantages of OCaml over Haskell?

<comment><USER22> I've used Haskell to build JavaScript tools and analyses[0], among other things[1], and have been using OCaml for the past nine months to develop a software-defined networking controller called frenetic[2]. Off the top of my head, here are a few areas where OCaml has an edge on Haskell:

1\. The module system. OCaml's module system is a language in and of itself. It not only allows you to define modules that export certain identifiers and types, it also allows you to write functors, which are essentially functions in the module language that can take a module as an argument and produce a new module as a result. This is a great way of reusing code in a project as well as defining external APIs in a general but natural way. OCaml's module system the closest I've seen to realizing the dream of building software by taking some modules from here or there and composing them together.

2\. Mutation. Unlike Haskell, OCaml allows mutation. Specifically, OCaml allows value mutation in certain contexts, while both Haskell and OCaml do not allow variable mutation. What this means is that in both languages, if you have an identifier, you cannot change the value that the identifier points to; you can only shadow the identifier with a new binding. But in OCaml, you can declare certain fields of your types to be mutable. You can also wrap values in a "box" which allows you get the same feel that you would out of variable mutation. While in general it's a good idea to limit your use of mutation, sometimes you know it's ok and you just want to do it. OCaml lets you do that, but it requires you to be explicit about it rather than just letting you do it willy-nilly.

3\. gdb-able. If you know how to use gdb (and even valgrind I believe), you can use it to debug your OCaml programs. If you try and use these tools with Haskell, you will get nothing but nonsense until you learn how to read the matrix. This fact by itself for some people will make OCaml a candidate for systems programming over Haskell.

4\. Subtyping. Certain features of OCaml's type system allow you to do subtyping, complete with type variable annotations to indicate covariance or contravariance. This is a feature that Haskell's type system does not have, so in a sense this is a strength of OCaml. However in my experience, this feature of the type system is hard to use and reason about, and I've seen little (maybe no?) code in the wild that takes advantage of it, with the exception of some simple inference the type system can do in this respect related to polymorphic variants[3].

All that being said, Haskell's still my hobby language of choice. But for building real systems, I'm warming to idea of OCaml as a viable candidate language.

[0]: [http://www.cs.brown.edu/research/plt/dl/adsafety/v1/](http://www.cs.brown.edu/research/plt/dl/adsafety/v1/)

[1]: [https://github.com/seliopou/typo](https://github.com/seliopou/typo)

[2]: [https://github.com/frenetic-lang/frenetic](https://github.com/frenetic- lang/frenetic)

[3]: [https://realworldocaml.org/v1/en/html/variants.html#polymorp...](https://realworldocaml.org/v1/en/html/variants.html#polymorphic- variants)

<comment><USER23> Neat reply, thanks.

In regards to #2, this sounds like the ST monad, are they comparable at all?

What makes OCaml easier to debug with GDB opposed to haskell specifically? I don't have experience doing either, but that's a curious statement, I would have assumed they were similar (both native code w/ some sort of GC...)

<comment><USER24> OCaml allows you to use mutation pervasively without marking your type. Haskell requires you mark your type with `IO`, `ST`, `State`. You can see Haskell as advantageous because it means that if you have a type without one of those markers you can be certain there is no observable mutation occurring. You can also see Haskell as disadvantageous because those markers are a little annoying.

The ST monad lets you transition from regions which allow mutation to pure regions and then back again.

<comment><USER25> Basically, all OCaml code runs in IO. You can still only modify things that you've marked as modifiable (analogous to an IORef), but there is no constraint on where you can modify them from.

(In case it's unclear, I'm agreeing with tel and rephrasing.)

<comment><USER26> One advantage that gives you, is that you can easily define a monad on top of that and not worry about monad transformers. Jane Streets async library does that in its Deferred module [https://ocaml.janestreet.com/ocaml- core/111.17.00/doc/async/...](https://ocaml.janestreet.com/ocaml- core/111.17.00/doc/async/#Std.Deferred)

<comment><USER24> But I _like_ transformers... a lot!

</comment></comment></comment></comment></comment></comment></comment><comment><USER27> I think the HTML example in the blog post is _excellent_. It's a real, recognizable problem, and the solution is simple and concise.

Many FP blog posts get too fundamental/abstract at this stuff, but here it really shows how static typing and pattern matching makes something very simple that is much more involved in e.g. Python or C#.

</comment><comment><USER28> Could someone comment on what instances you would typically apply lambdas and closures in real-world code?

I figure that they are at least more convenient than callbacks with a *userData parameter like in C.

<comment><USER29> the "with-" pattern (originally from lisp, i believe, but ruby did a lot to bring it to the masses), where something like a filehandle manages its own lifecycle, and calls your closure in between. so rather than the C-like

        let f = open-file-for-writing(filename);
        for line in array {
          write-line-to-file(f, line);
        }
        close-file(f);

you can do

        with-open-file-for-writing(filename) {|f|
          for line in array {
            write-line-to-file(f, line);
          }
        }

where the definition of with-open-file-for-writing() would look like

        def with-open-file-for-writing(filename, closure) {
          let f = open-file-for-writing(filename);
          call-closure(closure, f);
          close-file(f);
        }

the benefit of having this be a closure rather than just a function pointer can be seen in the write array to file example above, where the "array" variable is in the scope of the calling function, but when with-open-file-for- writing calls your closure it can make full use of its own local variables.

<comment><USER25> Of course, you can build your own closure:

        void do_stuff_with_file(struct relevant_data *, FILE *);

        ...

        {
            struct relevant_data data = { ... }
            with_open_file_for_writing(do_stuff_with_file, data, filename);

        }

IMO, the _biggest_ downside there being how far it typically pushes the definition of that function from the call site. Small functions - a good practice anyway - ameliorates that a bit.

<comment><USER29> you can, but it's sufficiently clunky that it simply doesn't feel like a natural thing to do in the language. good language design is a lot more about the things it makes easy and natural than the things it makes possible.

<comment><USER25> _" you can, but it's sufficiently clunky that it simply doesn't feel like a natural thing to do in the language."_

It does to me, but I've done enough functional programming that I easily reach for concepts from that space.

 _" good language design is a lot more about the things it makes easy and natural than the things it makes possible."_

Of course. I don't know where you got the idea I was saying closures aren't a good thing to have language support for. I said precisely the opposite.

</comment></comment></comment></comment></comment><comment><USER30> They mention they use Ocaml for server-side tasks. Is there a popular solution in OCaml for writing web pages or rest apis?

<comment><USER31> You can have a look at

[http://github.com/MLstate/opalang](http://github.com/MLstate/opalang)

</comment></comment><comment><USER32> Cool tech, but ...

I went to the About-Page and I got the following message out of it:

"We all want to spend our time dooing meaningful things so we ... bla bla ... have to make an app for that".

Come on, I think this is just bullshit. Yes, the premise is correct, people are working too much on stuff they don't like (and we have to fix that), but solving this problem via some time-managment-assistant-whatever-app (oh, there are surely some contrived ML problems to solve here) is just hilarious.</comment>


Ask HN: Recommendations for awesome podcasts - <AUTHOR>

Interest are startups, tech, code, and hardware hacking related. Prefer those that include technical details over weekly opinion pieces if those exists. Thanks <comment><USER2> [http://DRT.fm](http://DRT.fm) is a good one.</comment>


IRS Followed Bitcoin Transactions to Take Down Largest Child Exploitation Site - <AUTHOR> https://www.forbes.com/sites/kellyphillipserb/2019/10/16/irs-followed-bitcoin-transactions-resulting-in-takedown-of-the-largest-child-exploitation-site-on-the-web/#17daeb651ed0 <comment><AUTHOR> > By analyzing the blockchain and de-anonymizing bitcoin transactions, the > agency was able to identify hundreds of predators around the world - <USER2> > though those users thought that they could remain anonymous.

Who would've guessed the blockchain would help the government catch criminals!</comment>


Thousands of Mobile Apps Leak Data from Firebase Databases - <AUTHOR> https://www.securityweek.com/thousands-mobile-apps-leak-data-firebase-databases <comment><USER2> >The security issue, which the security firm refers to as the Firebase vulnerability

IMO, calling the vulnerability the "Firebase vulnerability" makes it seem like it's a problem on Firebase's side. But is it really their problem? At what point do we start blaming the developers instead of the service?

<comment><USER3> If the following quote from the article is true, it seems like Firebase is not making security easy for developers: "One of the most popular backend database technologies for mobile apps, Firebase does not secure user data by default. It does not warn developers when data is not secure and does not provide third-party encryption tools either. To ensure data is secure, app builders need to specifically implement user authentication on all database tables and rows, but that rarely happens,"

<comment><USER4> Google shouts at you, about 500 times, to secure your Firebase instance. Tutorials are thrown at developers left and right, and the docs mention it again and again.

And the security system is super simple to implement. If the built in language is too hard, a simplified templating language is also provided.

The plaintext password thing just confuses me. One of Firebase's big draws is integration with their auth system. Why in the world is anyone storing passwords in Firebase? Unencrypted?

<comment><USER5> How many times do we need to go through issues like this before people realize that just yelling louder has no effect? Services like this should simply not function at all until basic things like a password are put in place.

<comment><USER4> > Services like this should simply not function at all until basic things like > a password are put in place.

New Firebase instances starts off locked down by default, not allowing global reads or writes.

<comment><USER5> The fact that this was not the default since the inception of the service is inexcusable. Sadly, too many other projects still take the approach of yelling at people in some document somewhere instead of forcing security by default.

</comment></comment></comment></comment></comment></comment><comment><USER6> This reminds me of the old MongoDB 'issue' where MongoDB was accused of being insecure because developers failed to secure their database instances properly.

Aside from that, Firebase has learned from their pre-aquisition time and now sets all new DB instances to locked.</comment>


Facts No One Really Checks (2012) - <AUTHOR> https://rjlipton.wordpress.com/2012/07/25/facts-no-one-really-checks/ <comment><USER2> What a strange statement/article. I had to check all three of those as an undergrad, associativity of matrix multiplication was definitely first year linear algebra, and I think elliptic curve product was first year number theory.

(and it still is, theorem 3.4 in these first year notes [https://wwwf.imperial.ac.uk/~kb514/M1GLA.pdf](https://wwwf.imperial.ac.uk/~kb514/M1GLA.pdf))

"It is that they are felt too tedious or technical to prove in a course or even a textbook." Was my degree unusually tedious?

<comment><USER3> Nope, my lame state school made us check these as well.

</comment></comment><comment><USER4> A lot of matrix concepts sound a lot more natural to me if I first think of what they mean in terms of vector spaces.

For example, I think one can derive associativity of matrix multiplication less tediously from the observation that every matrix corresponds to a linear transform from a vector space to another, multiplication corresponds to function composition, and function composition is associative.</comment>