One Medical S-1 - <AUTHOR> https://www.sec.gov/Archives/edgar/data/1404123/000119312520001429/d806726ds1.htm <comment><USER2> Medicine comes down to human-to-human interactions (doctor and patient) and those are really hard to scale. One Medical is basically a novelty offering nice offices and predictable visit times. It takes some of the most common complaints you have about your doctor and removes them. In my experience, the quality of doctor was incredibly low, however, the quality of doctor will not be super important to you if you are 25-40 years old because you're probably pretty healthy on average, especially the young working professionals likely to be One Medical clients.

If you actually want good medical care, over your lifetime, your best bet is to build a strong relationship with a good doctor. If you also want to never wait, concierge medicine is where you ultimately need to be (doctor is trading off a higher volume of patients for a fee to a small number of patients).

<comment><USER3> > In my experience, the quality of doctor was incredibly low,

Hmmm... never would have guessed that. In my experience, the One Medical doctor that my wife and child see is excellent. I've met him and think he is great. A colleague is also extremely pleased with her One Medical doctor.

Maybe you just had bad luck with your doctor selection? I don't mean to invalidate your experience, but it certainly varies from my experience.

<comment><USER4> I'm always really curious what people mean when they say a doctor is "great". Is this just biases about smiling and seemingly having it together, or are there medical aspects to the greatness which set them apart as doctors? How does an average person know if your doctor is, in fact, doing a good job?

<comment><USER5> A good doctor is one who pays attention. I've met my fair share of bad doctors who are overworked and just are not paying attention to what they are doing. Then they end up making mistakes, such as misdiagnosing a condition, prescribing the wrong medication, etc.

It's hard for the average person to know if their doctor is doing a good job until something goes wrong and it's too late.

My doctor now is excellent, he's excellent because he actually listens to what I'm saying. That doesn't mean he always agrees with me, I would hope he doesn't! But at least he is paying attention. Many other doctors seem to go into a _keyword search_ mode when listening to patients. It's the difference between reading a page thoroughly and skim reading it.

<comment><USER6> Same. I have a GP who takes 40-60 minutes per patient, and gets into detail of what's going on. I felt he truly cared. Compare that to the ~5-10 minutes of my previous GP

</comment></comment></comment></comment></comment><comment><USER7> Interesting snippets from the footnotes:

" For the year ended December 31, 2017 and 2018 and the nine months ended September 30, 2018 and 2019 (unaudited), the Company had customers that individually exceeded 10% or more of the Company's net revenue...For the nine months ended September 30, 2018 (unaudited), individual customers accounted for 15% (Customer A), 12% (Customer B), 10% (Customer C) and 10% (Customer E) of the Company's net revenue. For the nine months ended September 30, 2019 (unaudited), individual customers accounted for 14% (Customer A), 12% (Customer F), and 10% (Customer E) of the Company's net revenue."

"Certain of the Company's investors are also customers of the Company. The Company recognized revenue under contractual obligations from such customers of $2,112 and $22,273 for the years ended December 31, 2017 and 2018, respectively, and $15,984 and $19,801 for the nine months ended September 30, 2018 and 2019 (unaudited)"

Sounds like they're beholden to a handful of entities for the next year or two as they scale out.

<comment><USER8> What happened to customer A and B?

Edit: My question is what caused these corporate customers to churn? Did they maintain spend levels with One Medical while the other customers grew spend? Did they decrease spend below reporting thresholds? Did they stop using (or sponsoring) these services entirely?

<comment><USER9> It sounds like "customer" here is defined as "corporation paying for a bunch of its employees", and not "one poor person who had lots of doctors visits".

Elsewhere in the S-1:

"In 2017, 2018 and the nine months ended September 30, 2019, our top customers accounted for 42%, 37% and 36% of our net revenue, respectively. These customers included Google Inc., which accounted for 10% of our net revenue for 2018 and the nine months ended September 30, 2019."

(Disclaimer: I work at Google, and they do pay for my One Medical membership.)

<comment><USER10> Correct, CMd+F for enterprise and they outline a LOT of information about their sales to larger organizations.

</comment></comment></comment></comment><comment><USER11> I love one medical and will not bother with anything else in the US if I can help it. They accept insurance, appointments start on time, it's a paperless experience, I can get same day appointments. What else can one want? The doctors have great table side manners and are always professional. I have had 0 bad experiences and I hope they have a great stock market debut!

</comment><comment><USER12> I like One Medical a lot, I hope they find some way to be profitable. Their doctors are far less rushed than any other GP doctor office I've been to, and their app is well done too.

I've been confused how they're able to do this and not charge more than they do (only $200 a year).

<comment><USER13> Long-time customer here and totally agree -- they are awesome on timing. I think they do this _by virtue of having a system._ They seem to have a systematic effort thru the entire office of abiding by schedule appt times. Some of that is systematic scheduling to prevent overbookings, etc.

I one time showed up 2min late and they sent me back home, that is when I knew they were the real deal. I'm so glad they did, because 1. I was never late again, and 2. I know they wouldn't be late for me in the future.

I think many times when doctors are late, it is often because

0\. They have a cascade of latenesses with really just a single early appt that is actually late causing the domino of late starts and hence ends.

1\. They have a patient come in late or w/o appt, cater to them or "squeeze them in"

One thing OMG has going for them is the generally professional clientele -- many of the clients dont want to arrive/leave later either, so that is good for everyone.

<comment><USER14> I look forward to reading what you say after they are late for you in the future.

<comment><USER13> I dont think they are perfect and dont expect them to be. I think the difference is --

For most primary care practices i've used, lateness is expected and there is no design or system.

For OMG, lateness is unexpected and designed out of the system.

</comment></comment></comment></comment><comment><USER15> Losing money per quarter like other tech companies, but I could see a bunch of knobs they can turn to make the unit economics profitable.

Curious how this will all play out.

<comment><USER16> Guessing it'll be a phenomenal avenue for selling insurance or further medical services.

</comment></comment><comment><USER17> Why do people use One Medical vs just having a doctor?

Been thinking about my current medical care and wondering the advantages

<comment><USER18> My answer is "Why doesn't everyone use One Medical _and_ have a doctor?"

To laser-focus on the peninsula/south-bay in the bay area; going to PAMF or Stanford Medical typically results in a 2-3 day wait to see a Dr.

If you're sick, you want to see a Dr asap. I have a doctor at PAMF, a doctor at Stanford Medical, and One Medical. If I am sick, I simply book an appointment at One Medical usually 30-min ahead of time, see them, get whatever treatment I need and go back home and be sick.

When something is truly wrong I start at One Medical for temporary help, and immediately book either at PAMF or Stanford depending on who is available sooner.

<comment><USER19> PAMF has several walk in urgent care clinics. You can also often call in and schedule a same day appointment with a primary care doctor (although perhaps not your regular PCP).

<comment><USER18> I should add a caveat that One Medical is basically always the same price.

I've had _really_ bad experiences with anything labeling itself an "urgent care clinic," and pricing.

</comment></comment></comment></comment><comment><USER20> The two times I used One Medical, me and the doctor just ended up googling my symptoms together. Don't have a lot of confidence in their staff. It's a nice idea though, although concierge care like this probably pushes health care costs even higher.

<comment><USER21> Direct primary care is (generally) much cheaper for better quality/more holistic care. I think DPC is particularly attractive if you're a low utilizer on an HDHP and never hit your deductible.

<comment><USER20> Much cheaper than what? I also can get direct primary care through Sutter, and although the experience is probably worse (less time during appt, longer wait time) it's probably cheaper than the concierge model of One Medical. At the very least it allows a doctor to scale to more patients.

<comment><USER22> Presumably they mean cheaper than using a fee-for-service PCP, but I don't really see how (especially in the low utilization car they mentioned... DPC makes more sense in high utilization cases, since the overhead cost is fixed)

</comment></comment></comment></comment><comment><USER23> They highly cater to the corporate benefits market:

> Historically, our revenue has been concentrated among a small number of > customers. In 2017, 2018 and the nine months ended September 30, 2019, our > top customers accounted for 42%, 37% and 36% of our net revenue, > respectively. These customers included Google Inc., which accounted for 10% > of our net revenue for 2018 and the nine months ended September 30, 2019.

</comment><comment><USER24> I love One Medical as a "walk in" option when visiting SFBA, Seattle, NYC, etc. For the discounted annual membership fee (available through various programs), it's even easier, even if I only use them once a year on average.

</comment><comment><USER25> The title seems almost incomprehensible. Is it meant to be "1Life Healthcare, Inc. Form S-1", and somehow the number-removal algorithm mangled it?

<comment><USER26> > The title seems almost incomprehensible. Is it meant to be "1Life > Healthcare, Inc. Form S-1", and somehow the number-removal algorithm mangled > it?

One Medical is the name that most people know the clinic by, because that's how they present themselves to patients.

</comment></comment><comment><USER27> The way one medical records all phone calls creeps me out

</comment><comment><USER28> A one Medical doctor "prescribed" me homeopathic medicine for my sore throat. I didn't realize what it was until I looked it up later. Other than that being a member was a nice experience.

<comment><USER29> Had a similar experience with a one medical PA.

</comment></comment><comment><USER30> Was anyone who works at One Medical actually told about this? lol

<comment><USER31> Announcements about IPOs are regulated; employees may have a general sense that an IPO is impending but generally get confirmation at the same time as the public.

</comment></comment><comment><USER32> How much of their revenue can be attributed to their totally optional and very shady """annual fee""" they push on customers?

<comment><USER33> It's required, not optional last I checked. Similar to the Costco membership.

<comment><USER34> They offer financial assistance as well as a limited access model which removes access to their mobile offerings and other value-add items.

[https://www.onemedical.com/faq/membership-fee- alternatives/](https://www.onemedical.com/faq/membership-fee-alternatives/)

<comment><USER35> I would argue that the predominant reason to choose One Medical for primary care would be the value added services included with the $199/yr fee.</comment></comment></comment></comment>


The Startup Story of LegalZoom.com - <AUTHOR> http://primitus.com/blog/the-startup-story-of-legalzoom-scaling-legal-services/ <comment><USER2> I love start-up stories!!!</comment>


Interactive tools to view and download realtime fullresolution satellite imagery - <AUTHOR> https://www.nesdis.noaa.gov/content/imagery-and-data <comment><USER2> The actual title at the page is "NEW! Use these interactive tools to view and download real-time, full-resolution satellite imagery."

Of course, this is for weather satellite pictures, not surveillance.</comment>


Show HN: Pathlab is pathlib for archives, images, etc. - <AUTHOR> `pathlib.Path` is Python's object-oriented interface to local filesystem paths, but it was invented too late to be used in modules like `tarfile` and `zipfile`. It also does a lot of magic that makes it hard to extend.
I wrote this package to help others write their own subclasses of `pathlib.Path` for any sort of embedded/remote filesystem. I've included built-in support for `zip`, `tar` and `iso` files (inc. SUSP+RR but exc. Joliet+UDF) and JFrog Artifactory. Hopefully it's helpful to someone.
Source: https://github.com/barneygale/pathlab
Docs: https://pathlab.readthedocs.io
Cheers <comment><USER2> Clickable links:

Source: [https://github.com/barneygale/pathlab](https://github.com/barneygale/pathlab)

Docs: [https://pathlab.readthedocs.io](https://pathlab.readthedocs.io)</comment>


How to live without Google? - <AUTHOR> https://medium.com/@alexewerlof/how-to-live-without-google-c0f1630ead6 <comment><USER2> Post is little more than a list of all Google services the author uses. If you're looking for insights on how to leave Google yourself, you won't find them here.

The author even concludes:

> Sorry to disappoint you but I don't have the magic bullet.

They also mention:

> It is possible to leave Google but in the end, does it worth it? I mean the > company has "don't be evil" as its motto!

Which is frankly laughable. Google has pretty conclusively demonstrated over the years that motto means nothing. The only thing I think about whenever I read that is the Doonesbury cartoon: [http://doonesbury.washingtonpost.com/strip/archive/2014/06/0...](http://doonesbury.washingtonpost.com/strip/archive/2014/06/01)</comment>


Show HN: 33 line React - <AUTHOR> https://leontrolski.github.io/33-line-react.html <comment><USER2> Nice article, short and to the point.

If anyone wants to take this idea to another level, I wrote a post showing how to do the same but in 10 times more lines of code: [https://pomb.us/build- your-own-react/](https://pomb.us/build-your-own-react/)

<comment><USER3> Love the format with "live-coding". Is it git-based? Did you open source it?

<comment><USER2> the blog source: [https://github.com/pomber/site](https://github.com/pomber/site)

the post source: [https://github.com/pomber/site/blob/master/posts/build- your-...](https://github.com/pomber/site/blob/master/posts/build-your-own- react/index.mdx)

<comment><USER4> Very cool, thanks for sharing that! Now all that's missing is a "eval" button that runs the result and drops you in a repl to experiment with the results.

<comment><USER5> Hey, that's what Flems is for. Check out [https://github.com/porsager/flems](https://github.com/porsager/flems) \- a single include embeddable sandbox (coincidentally written in mithril as the original post references). It's also used for [https://flems.io](https://flems.io)

<comment><USER4> Hm, you seem a little to eager to promote your own stuff. This thread was about the "live-coding" aspect where the code updates on the left as you scroll down the post, so you can follow along with how the code is being built. I fail to see how your project does that. Yours seem like the standard code playground, so very different from what was linked earlier in the thread.

Or I misunderstand or simply missed where the "live-coding together with text" comes in.

<comment><USER5> Hehe, you're probably right about that, but you could script the live part with the api, and then get the eval part to update as you mentioned, and allow the user to play around at the same time. I'm sorry you didn't find it related.

<comment><USER4> No harm done, just a few bytes stored on HNs servers somewhere so no worries :)

Yeah, I guess using the implementation linked before + your solution would create what I wanted, so thanks anyways for sharing. Never know when someone might find it useful.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> This library isn't meant to have full parity with React, but it's a great example that illustrates how simple a naive VDOM diff/patch is to implement.

That said, this is missing a lot of essential optimizations that libraries like React make. For example, key and type matching, batching updates, scheduling updates, and other stuff that isn't immediately apparent without reading the code.

<comment><AUTHOR> I'm not sure if any of their content is still relevant, but mithril makes some bold claims for >React performance: [https://mithril.js.org/framework- comparison.html#react](https://mithril.js.org/framework-comparison.html#react)

"Generally speaking, React's approach to performance is to engineer relatively complex solutions.

Mithril follows the less-is-more school of thought. It has a substantially smaller, aggressively optimized codebase. The rationale is that a small codebase is easier to audit and optimize, and ultimately results in less code being run."

(Obviously, I'm not claiming the same for this toy example - just that batching updates etc, may not be necessary for performance).

<comment><USER7> I wondered what happened to .prop() which looked like it had a lot of potential. Looks like that potential was (at least partially?) realized as it evolved into a "stream" library [1], which basically acts like cells in a spreadsheet. This seems like a really useful concept which could be used to create more kinds of UI frameworks than just declarative React style ones.

[1]: [https://mithril.js.org/stream.html](https://mithril.js.org/stream.html)

<comment><USER8> [https://cycle.js.org/](https://cycle.js.org/)

<comment><USER9> +1 for cyclejs! Strange to me that it hasn't caught on more

<comment><USER7> I just looked over their website for 10 minutes and still can't figure out how it handles more complex nested components with complex state. Is it like Elm and Redux where it has a giant tree and you have to update the root with a bunch of events, creating intermediate adaptor events from the deepest nodes all the way to the top? Does it have anything like React's Contexts? I really like the examples I saw on the landing page, but I would rather like some comparisons of how to do the exact real-world things React can do. Mithril's website did this pretty well. Maybe this is hurting adoption? Or maybe it's just me.

</comment></comment></comment></comment></comment></comment><comment><AUTHOR> Author here, nice to see this got some interest! As a very small benchmark (uh-oh!), in a console on the linked page, I tried to make/recreate 10,000 divs:

      const root = document.getElementById('noughts')
      m.render(root, {children: [...Array(10000)].map(_=>m('', {class: ['hi']}, 'hi'))})
      m.render(root, {children: [...Array(10000)].map(_=>m('', {class: ['bye']}, 'bye'))})

wrapped with:

      console.time('a');  ... console.timeEnd('a')

On my laptop (admittedly a fairly new macbook), I got (approx):

      130ms to make divs from scratch
      80ms to switch from 'hi'->'bye'
      50ms to re-render with no changes

I'd be super interested as to what comparable figures would be for React. There's a fair bit of interesting discussion below surrounding performance, but with no datapoints.

<comment><USER10> There are some fairly standard vdom benchmarks you could implement instead.

[https://github.com/krausest/js-framework- benchmark](https://github.com/krausest/js-framework-benchmark) [https://localvoid.github.io/uibench/](https://localvoid.github.io/uibench/)

Or even just something following mithril's own benchmark suite: [https://github.com/MithrilJS/mithril.js/blob/next/performanc...](https://github.com/MithrilJS/mithril.js/blob/next/performance/test- perf.js)

<comment><AUTHOR> thanks!

</comment></comment></comment><comment><USER11> What I really like about this is it removes some of the feeling of magic around react and similar frameworks. Yes there's a lot more going on in real react, but the core idea is simple and you can build your own and really learn what's going on at the same time. Well done! Bookmarked!

</comment><comment><AUTHOR> Author here, this was written as a way for me to explore the core idea of react in a minimal setting. Things it's missing

\- jsx

\- routing

\- performance (maybe?)

\- component state management stuff

What else would you include?

<comment><USER12> Exclude JSX and routing. You'll need some state. Routing != rendering and JSX is an abomination.

For optimal performance, look into differential dataflow: [https://github.com/TimelyDataflow/differential- dataflow/issu...](https://github.com/TimelyDataflow/differential- dataflow/issues)

<comment><USER13> This looks interesting! Not a working replacement for React, right? I would probably add that for optimal performance, don't use functional differential rendering at all. Keep state and use direct DOM manipulation of only elements that change, right? The very idea of re-rendering by throwing a whole new page up and letting the system diff and update is guaranteed not to be optimal performance, it's always doing more work than necessary. The tradeoff is that the optimally performant solutions are imperative and stateful and involve all the difficult and bug-prone techniques everyone's trying to avoid. Engineering for functionality is a solved problem. Engineering for performance is not.

</comment></comment></comment><comment><USER14> Very nicely done. For a similar idea that can be used in production as a React replacement, check out the Meiosis pattern:

[http://meiosis.js.org/](http://meiosis.js.org/)

It has most of React's benefits, while being extremely lightweight and fully grokkable (no hidden parts, no magic, no framework logic) to any developer.

<comment><USER15> With none of the community support or third-party components that the React ecosystem has?

<comment><USER16> Why use _any_ new & upcoming tool when an older, more popular tool inevitably has more community support and third-party components?

</comment></comment></comment><comment><USER17> Looks like mithril (the m object and m.render almost the same) ?

[https://mithril.js.org/](https://mithril.js.org/)

<comment><AUTHOR> Yeah, it's _very_ mithril influenced (I love that library) - I namecheck them in the article at the top.

<comment><USER17> Oh I completely skipped that line. I like mithril a lot as well but haven't been able too use it in a real project.

</comment></comment></comment><comment><USER18> > const move = (value, i, j){...}

> This function makes a move in the game, it takes 'x' or 'o' along with 2 > integer coordinates. It will mutate all the state variables to reflect the > new state of the game. After that, it calls renderNoughts(), this is a call > to rerender the game - but we'll come back to that.

Dear programmers, not related to the actual article but, when you have to describe your function with a paragraph of text, please consider improving the naming of your function and its parameters.

<comment><USER19> It seems perfectly well named to me! I love when code bases have more lines of comments than actual code.

<comment><USER20> Sometimes the comments are _only_ required because the code is confusing.

In this case the function both mutates the state, and renders the app. If using a framework like React/Vue etc it might make perfect sense to call this function `move`, but here it has a lot more responsibility and would need a more representative name like update/setState/renderApp/etc. But I think it's pointless to debate as it breaks the single-responsibility principle and you're unlikely to find something like this in a large scale app anyway.

<comment><USER19> It could also be because the code is terse. In that case it makes sense to explain what's going on.

</comment></comment></comment></comment><comment><USER21> I'm guessing diffing and updating the DOM is really inefficient if there's a lot of DOM elements and a few frequently updating part of your UI?

e.g. if you added a clock to the game in the article that updates every few fractions of a section to show something like "14.3 seconds taken so far".

The solution to this would be to make the clock into its own tiny self- contained component and to make diffing smarter so that only the DOM parts that belong to the clock need to be diffed/checked each clock update?

<comment><USER22> You would think that diffing is inefficient, but apparently modifying the DOM is significantly more inefficient. Mithril -- the framework that inspired this example -- has an interesting take: [https://mithril.js.org/vnodes.html](https://mithril.js.org/vnodes.html)

<comment><USER23> I think he means that this snippet of code doesn't account for diffing like React does and would fail if scaled out. I think the OP is aware of that though.

<comment><USER24> As a 33 line implementation "just for fun" exercise, no need to guess: this was not meant to be _actual_ React in fewer lines of code =)

</comment></comment></comment></comment><comment><USER25> Nice project! I've also recently made a React clone in <1KB, with JSX syntax and Hooks - [https://github.com/zserge/o](https://github.com/zserge/o)

</comment><comment><USER26> If you came to this comments section looking for an actual lightweight standalone version of react, preact+htm works wonders.

<comment><USER27> I searched for "preact" in the thread, since I'm a big fan. Its small size and compatibility with React API make it suitable for use in "embedded widget" type situations, where a dependency on React would be too heavy. It's also perfectly suited for building full apps, or static sites. I've been using Preact on various projects for years, I love it.

</comment></comment><comment><USER28> Nice experiment.

I've also "re-created React" multiple times before it was actually created.

Diffing somehow always ended up being thr most natural way tondo things in the end.

My selling point in the end were the components

<comment><AUTHOR> My feeling is that if html and js had _syntactically_ shared data structures at their conception, we wouldn't have quite so much frontend mess as we do now and declarative UI would have been the norm for a while. Having said that, I'm not sure how much precedent this has in UI frameworks outside of the web.

<comment><USER28> You think so?

What would be different if

        Document.createElement('a')

Would look like

        <a/>

?

The rest would still be imperative code.

<comment><USER29> I don't interpret "html and js had syntactically shared data structures" to mean what you wrote, unless you also replace all other JS data structures (arrays and dicts and ...) with <> syntax. You've made it more concise but it's still distinct.

For an example of a system where the programming language and document generator share data structures, look at Hiccup (and Reagent). One of their very first examples is putting a loop inside a list. There's no special API for the attributes -- it's just an ordinary map. There's no special API for the children -- it's just an ordinary vector.

</comment></comment></comment></comment><comment><USER30> Nice! Explorations like this are truly useful for understanding and maybe even for innovation. You might figure out new ways of expressing things that are unlike react, but solve particular problems better.

As a next step I'd recommend trying to add component-local state connected to the component's lifetime. This is essential when building larger applications out of abstract building blocks that hide inner workings. I expect this to be a nontrivial addition, but I might be wrong!

<comment><AUTHOR> I'm not sure I can quite express what I'm thinking, but do you think this could be achieved orthoganally to the rendering library itself? (Just by "normal" js).

</comment></comment><comment><USER31> This is probably a naive question, coming from someone who has written very little JavaScript:

Why do we need React? Why can't the browser do the same job? Instead of passing a virtual dom to react, and letting it 'diff/patch' the real dom, why can't code regenerate the dom directly, in a similar way? This would seem to save both time, memory and effort, since the browser can do the diff/patch itself, much more efficiently?

<comment><USER32> I've been saying this for years.

If reactive data and data binding were solved at the browser level we'd save so many kBs and CPU cycles.

<comment><USER33> If my cat was a cow, she'd give me milk. The hard part is turning my cat into a cow.

<comment><USER34> I'm not sure this is a great argument. Web standards and browser implementations evolve partly through absorbing ideas that lots of people are using anyway. A decade ago, no-one was using CSS variables or HTML media elements, but lots of people were using CSS preprocessors and Flash video players.

<comment><USER33> But most people are -still- using CSS preprocessors today...

</comment></comment></comment></comment></comment><comment><USER35> It seems like `m.update` function queries the current DOM state.

I'm interested in the performance implications of this. From what I know, other vdom libraries maintain the current DOM state in-memory for efficient computation of what should be updated.

No doubt that this is much simpler and ought to be at least more efficient than re-drawing everything. How much performance do you lose due to querying the DOM state?

</comment><comment><USER36> In the source code to perform el.classList = v.classes the author uses:

      for (const name of v.classes)
        if (!el.classList.contains(name)) el.classList.add(name)
      for (const name of el.classList)
        if (!v.classes.includes(name)) el.classList.remove(name)

Why the standard decided to make classList read-only?

Could ele.className=(v.classes).join(" ") be a valid and performant solution?, perhaps is to avoid the string to token traslation for performance reasons?, then why don't they include a classList.set method?

<comment><AUTHOR> Agreed, let me know if you find a better way! I feel if the browser APIs were slightly more declaratively inclined, this article could be "10 line React".

<comment><USER36> to merge the properties of two objects you could use

      let merged = {...obj1, ...obj2};  See (1) which has 2808 votes.

(1) [https://stackoverflow.com/questions/171251/how-can-i- merge-p...](https://stackoverflow.com/questions/171251/how-can-i-merge- properties-of-two-javascript-objects-dynamically)

</comment></comment></comment><comment><USER37> I just had a look at the dom implementation and it similar to what I have done in typescript. There is only so many ways you can skin a cat.

If you are wishing to do something similar yourself it is worth looking at hyperscript source code:

[https://github.com/hyperhype/hyperscript](https://github.com/hyperhype/hyperscript)

</comment><comment><USER38> This reminds my of Cash[0], a lightweight jQuery alternative for working with the DOM in a more accessible way

[0] [https://github.com/kenwheeler/cash](https://github.com/kenwheeler/cash)

<comment><USER39> Cash has some api incompatibilities with jQuery.

[https://umbrellajs.com/](https://umbrellajs.com/) is both smaller and better.

</comment></comment><comment><USER40> Weirdly triggered by the function arrows lacking spaces around them. Good work though

</comment><comment><USER41> Anyone who likes the idea of a minimal virtual DOM (like this) will probably appreciate MaquetteJS: [https://maquettejs.org/](https://maquettejs.org/)

</comment><comment><AUTHOR> Further musings here - [https://news.ycombinator.com/item?id=22791473](https://news.ycombinator.com/item?id=22791473)

</comment><comment><USER42> I like this, it illustrates the concept nicely

</comment><comment><USER43> The <marquee> tag is a throwback! Love it (in a toy project like this)

</comment><comment><USER44> Code like this is interesting to me whenever I see it:

const g = [['', '', ''], ['', '', ''], ['', '', '']] // grid

Why not just be descriptive and call it `const grid`? It's like we're all playing some game to be as terse and obscure as possible with variable names in all languages.

<comment><AUTHOR> Author here - I did put a warning in guys :-)

      Lots of the code looks pretty code-golfy - I promise I don't do stuff like this at work, neither should you

Happy to s/g/grid/ \- writing the whole exercise felt a bit golfy TBH.

<comment><USER45> >> if you change the state, it runs the function again, this returns a new virtual DOM

What do you mean by "change the state"? How do you do that? By calling some function, or perhaps by assigning a value to some property of a state-object? OR by calling the function again with a different state-object?

Thanks

</comment></comment></comment><comment><USER46> Really not React in 33 lines at all.

<comment><USER12> [https://github.com/leontrolski/leontrolski.github.io/blob/ma...](https://github.com/leontrolski/leontrolski.github.io/blob/master/33-line- react.js) captures the spirit of React.

The "diff & patch" pattern is super common, e.g. Git and Incremental by Jane Street: [https://github.com/janestreet/incremental](https://github.com/janestreet/incremental)

<comment><USER47> And curses!

> _The programmer sets up the desired appearance of each window, then tells > the curses package to update the screen. The library determines a minimal > set of changes that are needed to update the display and then executes these > using the terminal 's specific capabilities and control sequences._

[https://en.wikipedia.org/wiki/Curses_(programming_library)](https://en.wikipedia.org/wiki/Curses_\(programming_library\))

</comment></comment></comment><comment><USER48> This also doesn't mix pseudo-HTML (JSX?) with JS code, so that's cool.

As someone who has sort of lost contact with the front-end world, it's nice to see a coding TL;DR.

<comment> frosted-flakes Why is it good? JSX is just a declarative syntax for creating DOM elements (usually), and in practice it works really well.

</comment></comment><comment><USER49> OT this is the first time I've seen the arrow function syntax in ES6. My god it is horrible.

        const Cell = (value, i, j)=>m('button.cell',
            {onclick: ()=>move(value, i, j)}, value
        )

I can see why people are using things like clojurescript instead.

<comment><USER24> We all hate new syntax that we feel isn't "samey" enough to what we already know. That doesn't mean it's gross, it just means you learned something about your own preconceptions of what you thought JS was supposed to look and feel like.

Thankfully, most of the time we learn that's just us, and move past that. Arrow functions have been around for nearly five years now: they're fine. You learn that they're just part of JS, and you see them everywhere in modern code, just with normal indentation and sensible white spacing to keep them perfectly readable (because minification will solve the "the code as written is too verbose" part of the dev cycle).

The important thing is what they _do_ : bind declaration context as execution context, so `this` keeps meaning the same thing, which drastically simplifies a lot code.

In this case, there is simply no reason to use arrow functions at all, because we don't need to preserve the declaration context (there is no `this` that needs to be preserved), so if this were real code you'd probably use a normal function, and your comment should probably be "why not this?"

       function makeCell(value, i, j) {
         function onclick() {
           playMove(value, i, j);
         }

         return build('button.cell', { onclick }, value);
       }

Or even, "actually, why not this?"

       /**
        * ...
        */
       function clickCell(evt) {
         const t = evt.target,
               d = t.dataset;

         playMove(t.textContent, d.i, d.j);
       }

       /**
        * ...
        */
       function makeCell(value, i, j) {
         const e = build('button.cell', value);

         e.setData({ i, j });
         e.click(clickCell);

         return e;
       }

To which the answer of course is "this isn't production code, arrow functions are fine. I mean come on, it's just a fun little JS exercise, stop trying to turn fun into work".

<comment><USER49> I don't use javascript regularly so I have no notice of "samey". But I've been exposed to enough of a variety of programming languages from APL to C to Rust to Scala that I have a pretty good idea when some construct looks awkward or unergonomic. ES6 looks like a nightmare. Even compared to the nightmare that is Scala. And remember, Javascript's roots are scheme.

Here's the same thing in clojurescript. Tighter, balanced and no chaining of symbols.

        (defn Cell [value i j]
          (m 'button.cell' {:onclick #(move value, i, j)}))

<comment><USER24> I've never used clojurescript (but have used perl, php, java, prolog, oocaml, js, python, ...), so to me that: looks like a clusterfuck.

But of course, if I had a need where clojurescript was the best fit, and I had to use it daily for an appreciable amount of time, I'd acclimatize to it and consider this perfectly fine syntax. The same goes for ES6: it's objectively just syntax. If you think it's a nightmare, that's because you're the one doing the judging. Not because it is.</comment></comment></comment></comment>


Open source natural language processing? - <AUTHOR>

I'm new to natural language processing and was wondering if anyone knows of a good place to start. <comment><USER2> What specifically are you trying to do and what language are you using?

For Python, I like NLTK at <http://nltk.sourceforge.net>

Java has something similar, though I've not used it, at <http://opennlp.sourceforge.net/>

There are tons of other Java libs around, per usual.

I know of a few Lisp and C/C++ libs, but I've never used Ruby or PHP, etc.

As far as reference books, I mainly just use online documentation and references (Google it.) I also like an older Lisp book by Mellish, but it doesn't use the latest techniques or anything.

<comment><AUTHOR> Thanks for your response! I'm trying to: (1) parse questions into the "opening" such as "What is the", and "subject" like "capital of Burkina Faso"? (2) also looking for similarities between things like "going running" and "going for a jog" I'm not sure if both of these fall under natural processing... mostly I use python so your first suggestion sounds like a good starting place.</comment></comment>


Roguelike Celebration – SF Meetup of Developers and Players - <AUTHOR> https://www.eventbrite.com/e/roguelike-celebration-tickets-26125753833 <comment><AUTHOR> I was clued into this from this[1] post, which mentions:

 _And I'm not just going as a spectator--I'll be giving a talk alongside a great cast of other speakers, including devs from Dwarf Fortress, DCSS, Brogue, Caves of Qud, and… the original Rogue :P_

I imagine that's of interest to a few people here. :)

1: [http://www.gridsagegames.com/blog/2016/07/roguelike- celebrat...](http://www.gridsagegames.com/blog/2016/07/roguelike-celebration/)</comment>


Google planning changes to Chrome that could break ad blockers - <AUTHOR> https://arstechnica.com/gadgets/2019/01/google-planning-changes-to-chrome-that-could-break-ad-blockers/ <comment><USER2> What bothers me (comparing it to Safari on Mac) is a lack of "reader mode", where I just see the content. Now if they push back ad blockers as well, I never need to open Chrome.</comment>


Women of Color in Tech: How do we encourage them? - <AUTHOR> http://tcrn.ch/hTN8le

<comment><USER3> This is an incredibly awkward title. And they're wondering why more women aren't in our industry?

<comment><USER4> Which part is awkward? Not challenging, just curious.

<comment><USER5> There exists a spectrum of opinion on whether "we" as a discursive device meaning "us white and Asian guys, you know, the tech industry" is a win in this circumstance. Ditto on the appropriateness and efficacy of describing black/Hispanic female participation in tech as a function of "our" actions. (A sketch of the argument: every story purportedly written about black women on Techcrunch is really written about white men.)

</comment></comment></comment><comment><USER6> "Never quit the problem, but don't worry about quitting the product. Some entrepreneurs are afraid of pivoting if something isn't working. It becomes more about protecting their own egos and being portrayed as quitters, than about solving the problem. Focus on the problem you're solving and everything will fall into place." - <USER2>

</comment><comment><USER7> Not sure, my cofounder is a bit of a fashionista so she's always wearing something colorful. I do my part to encourage her by dying my hair blue and not wearing so many ugly conference T-shirts.</comment>


Show HN: My (Refactored) Tech Aggregator - <AUTHOR> http://alltech.io

<comment><USER2> Impressive design. It's obvious you spent a lot of time on the usability. While impressive, I don't see myself coming back to this. For me personally, there's a lot of stuff going on in the page, and it feels a bit overwhelming. What's the use case you had in mind?</comment>


Save net neutrality in the US - <AUTHOR> https://github.com/save-net-neutrality <comment><USER2> If they vote away Net Neutrality, in theory the biggest sites on the internet could easily bring it back:

"Sorry, you can only reach this site with a certified internet connection, please contact your service provider and request full internet access."

Seems, if Facebook, Netflix, and Google did this, it would be enough to force internet providers to open up the connection.

Although getting rid of net Neutrality is a win for Facebook, since people would just buy a Facebook package, and be even more walled into that garden.

<comment><USER3> I'm more concerned about small blogs like my own[0] who will never pay an ISP to be in the fast lane.

My blog doesn't get huge amounts of traffic now but I could imagine that it could get blocked by ISPs unless you have the Wild Wild West package that lets you visit any website, not just the big names.

We can't treat websites like cable channels because cable channels are separate streams. But websites are all linked.

[0]: [https://www.ceriously.com/blog](https://www.ceriously.com/blog)

</comment></comment><comment><USER4> The walled internet people are proposing would break so much shit lol

<comment><USER5> More jobs and work for us?</comment></comment>


An Ode to Excel: 34 Years of Magic - <AUTHOR> https://blog.stephsmith.io/history-of-excel/ <comment><USER2> Excel is great, it is still Microsoft's best product, (in contrast to Word which is an abomination). However I am very disappointed with Microsoft's lack of investment in Excel, over the past 10 years it has hardly improved. eg the VBA code editor is appalling, like a relic from the 1980's (constrast VS Code). I use tables extensively (they are quite nice) problem is they require extensive use of Index/Match which becomes tedious to set up and is very slow, so manual update soon becomes obligatory. MS should incorporate some of the Power BI linking (think Foreign Keys) capability to overcome this big problem. Would be nice if they added SQL,instead of always making up their own query language language (eg M). Sumifs Countifs functions offer powerful and essential capability that could also be better done with SQL syntax. Excel is very error prone so Unique row constraints on tables or sheets would be handy. The formula editor is also archaic and could be easily improved dramatically. Yes - Excel is Fun - what an awesome YouTube channel, that guy's enthusiasm for Excel is extraordinary.

<comment><USER3> It's not as poweful as SQL, but the new array functions bring some fresh air

[https://blog-insider.office.com/2019/06/13/dynamic-arrays- an...](https://blog-insider.office.com/2019/06/13/dynamic-arrays-and-new- functions-in-excel/)

</comment></comment><comment><USER4> I had so much fun writing this so it was super nice to run into it while browsing HN.

I think there's a lot we can all learn from the history of Excel (arguably the most bulletproof software of the past few decades), particularly in the age of crazy valuations and unicorns.

Curious to know what more recent software people think will hold up to the test of time, like Excel has?

<comment><USER5> Good question!

I'd nominate: Postgres

<comment><USER6> Postgres isn't recent at all.

I would say HashiCorp Terraform and Vault

<comment><USER5> Fair enough. I didn't catch the recent requirement. Well Postgres keeps on evolving with recent features, every major version brings something new and great.

No disagreementa with nominating Terraform :).

</comment></comment></comment></comment><comment><USER7> A lot of the backwards compatability is jaw-dropping. Some things that were intended to be deprecated what feels like forever ago still work. [1] I also regularly uncover brilliant bits of spreadsheet design looking at documents made one or more decades ago. Even some old school tricks in those sheets still help me do new things. For example the (internet explorer exclusive) right click to export to excel is still among the most reliable ways to extract data that otherwise won't play nice.

However I wish speed was higher on the priority list. For big sheets with lots of calculations Excel 2016 was SLOW. Slower than 2013 by a fair margin, and actually slower than binary based sheets on 2003 by A LOT. [2] [3] [4] Excel was my default calculator on my computer for years. But it just starts too slow now. Foreign language support is weird in that regard. [5]. And on a personal note, I'm still bitter about the ribbon.

[1] Though some dissapear, you will be kinda missed, default Powerview

[2] [https://social.technet.microsoft.com/Forums/en- US/8b2a498c-a...](https://social.technet.microsoft.com/Forums/en- US/8b2a498c-ac63-40b1-937e-a9e5952ae5d9/massive-performance-decline-since- excel-2003-any-suggestions?forum=excel)

[3] [http://dailydoseofexcel.com/archives/2015/04/07/excel-2013-v...](http://dailydoseofexcel.com/archives/2015/04/07/excel-2013-vba- unreasonably-slow/)

[4] My own experience, for what it's worth.

[5] [https://professor-excel.com/performance-excel-study/](https://professor- excel.com/performance-excel-study/)

</comment><comment><USER8> Microsoft did 3 very smart things that elevated Excel from 0% to 100% market share:

1) Early versions were (or felt) Windows-native. Due to the Mac roots, Excel felt integrated with Windows 3 and GUI right when people and companies were switching from MS-DOS to Windows. Lotus 123 never really got that feel right, its early Windows versions just seemed inferior to the old DOS versions, it just felt out of place on Windows.

2) 1-2-3 compatible keystrokes. Made it easy for people to switch.

3) Bundling with Office. In the 80s you bought WordPerfect, and 1-2-3, and maybe FoxPro or something for simple databases. Office gave you everything in one inexpensive box. In fact, Word vs WordPerfect was even a bigger contrast than Excel vs 1-2-3, since Word had a WYSIWYG interface that simply blew WordPerfect out of the water.

</comment><comment><USER9> I've always despised spreadsheets... the confusion between input data, methods of calculation, and output is absolutely foul.

I hung on to Lotus Improv as long as I could, and then opted for Quantrix Modeller, and now do most of my stuff in a combination of locally hosted SQL and Mathematica.

What kind of broken paradigm allows for an errant keystroke to break the flow of a calculation? Or allowing data to go stale, only to break the calculation when you refresh and get back more rows than you previously had?

<comment><USER10> Right tool for the job.

Sometimes it absolutely makes sense to have input/calc/output on the same "sheet" or set of "sheets."

Unfortunately, most people don't know how to set up a spreadsheet in a way that makes this work (clearly delineating the input/calc/output sections with data validation, formatting, protection etc).

Of course, if you were to make a solution that "forced" these choices on the user they'll cry about losing their freedom.

So we are stuck with spreadsheets in many cases.

And then there are the cases where using a spreadsheet makes no sense. I'd say it's about 50/50: Half the stuff currently done in spreadsheets makes sense, half of it would be better done elsewhere.

I've managed to move more than half of our previous spreadsheet workload out of spreadsheets and into more appropriate software systems.

</comment></comment><comment><USER11> One question - wasn't Lotus-123 the first spreadsheet application or was it made at same time?

Edit: I should the article more carefully.

<comment><USER4> The chronological order was VisiCalc, then Lotus123, then Excel. Microsoft had a spreadsheet tool called Multiplan during the era of Lotus123, but it didn't get much traction.

<comment><USER11> An excellent article you wrote. Great with all the details.

<comment><USER4> Thank you!</comment></comment></comment></comment>


Trump issues executive orders against ByteDance and WeChat - <AUTHOR> https://www.washingtonpost.com/technology/2020/08/06/trump-tiktok-executive-order/ <comment><USER2> This is really scary to me. I don't like the idea that some apps might be dangerous but I like even less the idea that the government gets to choose for me what apps I can and can't run. It's not just that. It's also arguably going to escalate.

I be much happier with technical solutions I think. Better app sandboxes. Better permission models. I don't know all the things a corp profile can set on iOS or Android but if they wanted a pass-list (apps your allowed to run) or a ban-list (app you're not allowed to run) or even by publisher or permissions your not allowed to give that seems like a much better solution to me.

For example: Based on corp settings, disallow users from giving any app that's not been pre-approved, access to low-level networking or bluetooth or NFC.

Also the OSes IMO should implement strong network permissions where an app can ask for full network access OR the can ask for say only http/https to *.domain.com. with the latter being pushes as the norm and the full access being rare, marked as "danger" and blockable by a corp profile.

Maybe I don't understand all the issues.</comment>


Ask HN: Ideas for a prosthesis for sense substitution? - <AUTHOR>

I'd love to become a cyborg (though prosthetic knowledge already makes me one). What new sense could I gain?
For sense substitution you usually need:
- a portable sensor (If possible something that moves with your body, this direct feedback makes learning much easier and might be key to a intuitive sense-like feeling. e.g. an IR-thermometer attached to a finger.)
- an interface / feedback (translating what the sensor senses to human sense. e.g. the thermometer reading to vibration)
feel free to submit known experiments also, I know there are quite a few. Yet I find it surprising, that most sensors that are portable and somewhat useful are already covered by the human body. <comment><AUTHOR> What I know of (but am to lazy to find the links):

\- Compass to vibration: a belt that vibrates to north (not really useful, though it reminds me of the aborigines that only have cardinal directions, no relative ones like left or right)

\- IR vision to vision: before cool night vision goggles there where experiments with feeding soldiers some modified proteins or something so their vision would shift towards infrared

\- remote temperature to audio: [http://hackaday.com/2014/03/20/modular- arduino-based-infrare...](http://hackaday.com/2014/03/20/modular-arduino- based-infrared-thermometer/)

less useful in everyday life but very possible (also both not directed enough. Moving 3 meters to see a change is not direct enough for a feedback loop):

\- wifi-noise to audio

\- geiger counter to audio

.

for people that are missing senses:

\- color vision to audio (the guy who I know of using this, fights for the rights of cyborgs)

\- vision to tactile sense (low-res grey scale image to braille like "image" on your back)

\- sound to nerve stimulation (cochlea implant)

\- camera to nerve stimulation (some eye prosthesis, currently low res, but relatively new still)</comment>


The Apollo 11 Moon Landing: Spacecraft Design Then and Now - <AUTHOR> https://www.mathworks.com/company/newsletters/articles/the-apollo-11-moon-landing-spacecraft-design-then-and-now.html <comment><USER2> I recently read a book about the design of the LIM. It amazes me how young many of the people were. The guy in charge of the LIM design, IIRC, was late 20's. Just a little older than the guy in this article.

<comment><USER3> In 1962 when Grumman was awarded the contract for the Lunar Excursion Module (LEM), Thomas Kelly was promoted to be the lead engineer. He was 32 or 33.

He was 40 when Apollo 11 landed on the moon.

There's an episode of "From the Earth to the Moon" called "Spider" that focuses on Thomas Kelly. Highly recommended.

<comment><USER4> The "From the Earth to the Moon" series is by far my favorite series/movie/documentary about the moon missions.

<comment><USER5> I can also recommend the BBC podcast "13 Minutes to the Moon", great listening for the commute

</comment></comment></comment></comment><comment><USER6> There's a bunch of "preliminary" apollo drawings at [https://apollopreliminarydrawings.com/](https://apollopreliminarydrawings.com/) They show the apollo command module designs that North American Aviation came up with before they were approved for a contract.</comment>


40% of U.S. food wasted - <AUTHOR> http://news.blogs.cnn.com/2012/08/22/40-of-u-s-food-wasted-report-says

<comment><USER2> I'm sorry to send a very dissenting opinion there, but it's not about a broken window fallacy, the economy, the environment, obesity or anything else - it is just morally wrong.

I know we make enough food to feed anyone on the planet, but it doesn't mean throwing away food is morally acceptable.

Call it a taboo or whatever - I still remember when as I kid I was invited to a friend birthday and we ended the party by running a burger-thowing contest. It felt wrong then, and it still does now.

Even if we make far more food than we could possibly consume, food like water and oxygen is something special - something we humans _require_ to exist. We can survive without shelter and medicines. We can't without food, something which certainly helped giving it a "special place" in our list of taboos.

Considering it as something just like any other good does not resonate with my values - even as a hacker who would otherwise consider that a non-issue if applied to say mice and keyboards.

We are the most spoiled 1% of the humanity and we act like we don't care - that might be acceptable depending on one's philosophy, but _NOT_ for the crucial things mere survival depends upon.

Sorry, but it's just plain wrong.

<comment><USER3> So, you're saying we are the 1%?

Actually i was thinking about this issue the other day with regard to that 99% movement not too long back. We really do have more than we could ever need in the US, and should honestly try to be responsible with it

<comment><USER2> I do. We are the 1% - from which we can try to separate another 1%, but there's no point unless one's only drive is jealousy, because somebody will always have more.

The problem is when a 1% behaves in a way that tries to hold back the others, does not scale - or even just conflicts with the moral values of the 99%.

Like in throwing away food.

</comment></comment></comment><comment><USER4> Recently, one of my in-laws told my kid that she ought to eat everything on her plate. I responded "If she's full, the food is wasted whether she eats it or it goes in the trash."

I'll bet that pushes the percentage up to ~60%, since the article only talks about food thrown in the trash.

<comment><USER5> Why would you throw uneaten food in the trash? Just put it in the fridge and eat it later.

<comment><USER6> Not everything is good as leftovers. A fair amount of Chinese food, salads, and cooked vegetables don't reheat well or don't make good leftovers.

<comment><USER7> Isn't that the kind of not-valuing-food mentality the article talks about? Your reheated vegetables are going to be overcooked and your fried-and-sauced Chinese will get soggy, but they're still edible. They still provide sustenance.

I love fine food, but not every meal has to be amazingly delicious. In the end, it's about putting energy into your body, so why not lower your standards a bit and eat last night's soggy orange chicken for lunch?

As an aside, you can improve your leftovers with proper preparation. For example, yaks_hairbrush above claims that chicken strips and fries don't reheat well, but I reheat fried foods in the oven regularly, and they're perfectly edible.

<comment><USER8> >>They still provide sustenance.

People who have luxury don't really worry about sustenance.

</comment></comment></comment></comment></comment><comment><USER9> _"Food is simply too good to waste," the report says. "Given all the resources demanded for food production, it is critical to make sure that the least amount possible is needlessly squandered on its journey to our plates."_

Is this some kind of religion I haven't heard of?

<comment><USER10> The article goes on to say:

" _Food production accounts for 80% of the country's fresh water consumption, but the waste of food means 25% of the fresh water is actually wasted._ "

This provides a solid support for the claim you highlighted. It is likely going to become more and more difficult to deny that access to clean fresh water is a high-priority problem.

<comment><USER11> Why is it a high-priority problem?

edit: I am genuinely curious. All I can come up with is increasing population which doesn't seem like much of a problem since demand for food will also increase, food prices will rise and waste will diminish.

<comment><USER12> Are you going all Socratic on us, or are you just particularly dense?

<comment><USER11> It's the first time I hear someone claim this regarding the US so I'm genuinely curious. Perhaps I'm dense.

<comment><USER12> Fair enough, I assumed you were trolling. Apologies. WiseWeasel has your answer.

</comment></comment></comment></comment></comment></comment><comment><USER13> The next obvious question is "what percent to other countries waste?". Not addressed in the story, other than an off the cuff "10 times as much as Southeast Asia".

<comment><USER14> Well, I know India wastes a vast amount through a combination of subsidies and corruption.

[http://www.msnbc.msn.com/id/48039343/ns/world_news- south_and...](http://www.msnbc.msn.com/id/48039343/ns/world_news- south_and_central_asia/t/indias-kids-starve-billion-worth-grain-rots/)

</comment></comment><comment><USER15> If you had 100% of produced food being eaten, wouldn't that be very, very risky? What if there's a small drought?

<comment><USER16> Households could approach 0% waste just by caring enough to preserve food. But, as the article says, food is so cheap that most people just don't care.

In other words, it's not risky because food preservation is so embedded in our society from the production process to the cheap appliances in our households. Your worry makes more sense if our food lasted just days. Instead, it can last years.

<comment><USER17> Agreed, "not wasting" does not always equate "eating." Preservation is something, when I spent a lot of time in my childhood in rural areas, that was baked into every family. It was a way of smoothing out the seasonal fluctuations in food availability.

Now, having lived in the city for quite some time - food preservation is a "niche hobby." I posit this is because fresh produce importing from other parts of the world have really smoothed out the availability. But, we won't eat much of the fruit from other countries - largely because we find it wasteful (transportation) and of suspicious quality (both taste and health).

</comment></comment></comment><comment><USER18> Every time I see an article like this I want to encourage people to support the good work that City Harvest do in NYC. They save 115,000 pounds of food daily that then goes to the needy.

It's a shame that there aren't similar programs across the country.

[1] <http://www.cityharvest.org/>

</comment><comment><USER19> Maybe if we didn't heavily subsidize all food production we'd value it more.

</comment><comment><USER20> This is not confined to food. In my house probably 40% of cheap imports end up in the trash in a year or two. During WWII, fully half the U.S. economy was devoted to the war effort. Nobody starved, they just drove on bald tires and stayed in the same house. We need a carbon tax (or a consumption tax, for the climate change deniers) and this sort of thing would disappear.

</comment><comment><USER21> I'm a little late to this party, but most of the conversation here has centered our not cleaning your plate, but that is hardly the crux of the problem. Most of the waste happens through the supply chain, from farmers not bring "ugly" produce to the distributors, to food spoilage during transportation, to prepared foods that don't get purchased at the store.

My friend wrote a great book about this last year:

<http://www.americanwastelandbook.com/>

Since reading this book and Barbara Kingsolvers "Animal Vegetable Miracle" my family gets our food almost exclusively from the farmers market or directly from a farm via a farmshare.

</comment><comment><USER22> It doesn't make sense to count food waste in kilograms, you should count it in USD. With USD in pocket you can always simply farm more food. Or just import food from abroad poor countries, helping their people.

One big waste is buying expensive food like in restaurants or organic. You can eat healthily for less than 2 USD / day if you prepare meal yourself from mass produced ingredients.

Buying and eating one 20$ restaurant meal is much worse than wasting 10kg of potatoes. Ask the people who really have problems with lack of food if wasting 20$ (restaurant) is better than wasting 2$ (potatoes).

</comment><comment><USER23> I don't understand water alarmists, due to two simple and obvious facts:

1\. Fresh water is a _renewable_ resource. We get more whenever it rains.

2\. We have a huge reserve in the oceans.

If more fresh water is needed, the free market will come to the rescue. Its price will go up until it becomes profitable to allocate energy resources to desalination of seawater and transportation of the products to where they're needed.

<comment><USER5> Desalination is massively energy intensive, and if you hadn't noticed, energy itself is not exactly a solved problem.

<comment><USER23> > energy itself is not exactly a solved problem

Yes, it is. We have solar panel technology. It works. It's just too expensive. Which means that right now it's just more efficient to keep using gas and oil.

If the price of water keeps going up due to steadily increasing demand, eventually it becomes profitable to burn oil to power desalination. If we use enough oil to make a dent in _its_ supply, then the price of oil will go up too, until oil-based power sources are more expensive than solar panels, at which point people will start building solar panels to power desalination plants. Since solar panels are mostly made of silicon (the second most common element on Earth) we're probably not going to run out of them anytime in the next few hundred years, at which point we'll probably be mining asteroids and switching to cold fusion power. Problem solved.

On a forum whose main topics include entrepreneurship, it's somewhat amazing to see how all understanding of basic economics often evaporates if its logical conclusions disagree with a person's political position.

<comment><USER24> Solar panels use rare earth elements (indium, specifically). That's going to be a scarce resource pretty quickly at the rate it's going into land fill via LCD panels. The energy required to refine silicon to semiconductor purity isn't small, either. I'm not sure the economics are as simple as you seem to think.

<comment><USER16> I think that's his point, though: No matter how rare indium is, it isn't going to suddenly run out on a Thursday. In fact, the price of indium is at its 2-year low and 5-year median with a negative year-long slope.

We can afford to incessantly & wastefully shed indium, food, and Macbooks into landfills until we can't afford to anymore. At which point it becomes cheaper to not be so wasteful, indium prices gradually rise, and the system adapts as it always does.

<comment><USER24> That smooth adaptation only works while there are alternatives, and while market speculation doesn't apply - ie. while there's slack in the system, and no gaming.

For example, [http://minerals.usgs.gov/minerals/pubs/commodity/indium/mcs-...](http://minerals.usgs.gov/minerals/pubs/commodity/indium/mcs-2011-indiu.pdf) makes interesting reading - particularly the part about finding alternatives and reducing consumption because indium is so volatile.

Clearly there are alternatives and better processes in this case, but I wonder what essential resources could end up having no viable alternatives in a lifetime?

<comment><USER23> > I wonder what essential resources could end up having no viable alternatives > in a lifetime?

Not many. Most rare resources are durable, i.e. used in applications where they aren't destroyed. So if indium reserves in the ground run out, then as the prices rise, (1) the prices of new devices that need indium will rise, discouraging their adoption and (2) the scrap prices of old devices that have indium will rise, until it becomes profitable to recycle them to create a new supply.

At a fundamental physical level, if you have a rare substance made of common elements (e.g. many fuels and plastics are just H, C and O in various arrangements) there's usually a chemical process you can use to create them with basically only energy as input.

If you have a rare substance that is partly or entirely made of one or more rare elements, you can generally create them by refining the products of nuclear reactions (e.g. this is where plutonium comes from).

Where lack of a particular material becomes an obvious bottleneck, money will flow into R&D which will unlock more alternatives over time (we've known oil is a bottleneck since the oil shocks of the '70s if not earlier, think of all the billions that have flowed into alternate energy R&D between then and now, and how many new things we have like wind, solar, geothermal, hybrids, biofuels, synfuels, etc., or energy-efficient CPU's with dynamic frequency scaling and market competition on performance-per-watt metrics. These do work and can substitute for oil in many applications.)

Eventually asteroid mining will probably become a very profitable way to produce certain key materials (rare earth elements do come to mind) because it will turn out to be more a cost-effective way to produce some materials than chemical or nuclear reactions. Especially if we can figure out ways to utilize them that don't involve shuttling things into and out of Earth's gravity well so we can use extremely energy-efficient ion drives that can cross the solar system on a few pounds of fuel instead of rockets that use tons of chemical propellants. Perhaps self-sufficient space factories, entirely robotic, which build computers on asteroids using local materials, which when finished are powered and linked to the Internet by solar or nuclear power, rented as a new EC2 instance by the hour at dirt-cheap prices (but still a profitable business since the manufacturer doesn't have to bid high to win some of Earth's dwindling local supply of rare earths, the power plant doesn't have to worry about where to dump its nuclear waste since it's a million miles from the nearest human, and the R&D costs can be amortized over a thousand-asteroid deployment).

</comment></comment></comment></comment></comment></comment></comment><comment><USER25> Source: <http://www.nrdc.org/food/files/wasted-food-IP.pdf>

</comment><comment><USER26> The issue is with portions. There is no need to give a human being 5 meals in one dish in one meal. You are just asking for them to a) get fat b) waste it.

Other countries, no doubt, have lower waste percentages because their portions are smaller.

<comment><USER27> That's a big oversimplification. The waste is at all levels of the food supply chain, from producer to consumer.

There was an excellent special on Food Network called "The Big Waste" that looked into this, by way of a cooking competition. Here's the description:

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

First class chefs Bobby Flay, Michael Symon, Anne Burrell and Alex Guarnaschelli tackle one of the most massive problems in food today - waste! Divided into two teams, with only 48 hours on the clock, they are challenged to create a multi course gourmet banquet worthy of their great reputations, but with a big twist; they can only use food that is on its way to the trash. The chefs' hunt takes them from grocery aisles to produce farms, and orchard lines to garbage piles, as they attempt to source enough ingredients to feed a gathering crowd. Bobby and Michael square off against Anne and Alex, as they challenge their views of food waste and how and why it is created.

\</comment><comment>--

Some examples of things I remember them finding and using (I may not be remembering these completely accurately, so if someone else watched it, please jump in with corrections):

• Fruit at an orchard that was sized or shaped wrong and so was missed by the automated harvesting machines

• Fish at a fish market that was bruised or damaged.

• Cuts of meat that weren't used in any of the items in a restaurant that did its own butchering.

• Produce from markets that was old enough to have lost some color. It's still fine culinarily, especially for any dish where it isn't important for the presentation, but it doesn't sell well compared to the colorful stuff so the markets clear it out to make room. (I believe this was the food that the blurb is talking about from garbage piles--although the chefs did not actually get it from garbage piles. They got it from the market employees who were carrying it out to dump it on the garbage pile).

It was quite revealing. The chefs produced meals that would have been quite at home on the menus at any top fine dining restaurant, all with food that was considered waste before it ever reached a consumer.

</comment><comment><USER28> I'd hate to see what the figure is for buffet's only

</comment><comment><USER29> In other news the traditional American diet contains serving sizes 40% too large.

<comment><USER30> If you are implying most of the waste is too large serving sizes, then they are closer 67% too large.

</comment></comment><comment><USER31> I am always skeptical of headlines calling for making something more "efficient".

Waste is a funny concept.

Consider what eliminating it would do:

* reduced consumer spending

* loss of jobs (farming/warehousing/transportation/retail)

* less money "perishing" (literally) -> inflation

Waste, for lack of a better word, is good.

<comment><USER32> That analysis is contrary to a mainstream understanding of economics in a way that is a little like violating the second law of thermodynamics.

Because all transactions incur a transfer of wealth from one party to another there is no implicit creation of value unless the purchaser ultimately derives more utility from the product than the producer expended in effort and resources in order to produce it.

Because the definition of waste is the purchaser not getting any utility from the product, the economy has a net loss in wealth equivalent to what the producer expended in making the unused product. If there were a magical way to convert consumers into people who only get what they want, the max price they'd pay for a satisfying meal wouldn't decrease, because they wouldn't be receiving any less utility. The farmers on the other hand would have a lower minimum price for providing a satisfying meal, because they'd have to spend fewer hours and less water producing it.

The larger difference between the min selling price and max purchasing price is made up of producer surplus and consumer surplus.

Efficient conversion of inputs into outputs really is one of the primary concerns of the economy, and this is not a velocity of money issue.

However, any plan intended to minimize this waste is likely to create more problems than it solves, but that is because it is difficult and expensive to attempt to control people's behavior.

<comment><USER31> You wrote: "Because the definition of waste is the purchaser not getting any utility from the product, the economy has a net loss in wealth equivalent to what the producer expended in making the unused product."

Would you consider unused cell phone minutes (that don't roll over) waste?

What about any other monthly-commit-type product or service, where network/CPU/storage capacity is provisioned (expended by the provider), purchased by the customer, but unused - is that waste by your definition?

<comment><USER32> If you'd get something out of talking on the phone more, then you are forgoing utility that you've already paid for. However, if you place a call to a recording to a recording just to insure that you "use" all of your minutes, you get no more utility, but the phone company uses more electricity and a little more of its infrastructure is used up.

Ultimately, if everyone did this, prices would increase to cover the greater expenditure of resources and labor required to supply the growth in the service being used. There is nothing wrong with that if customers are getting something out of the greater consumption, but it is a deadweight loss on the economy if they aren't. In fact, if they gain enough pleasure out of being spiteful, that is a justifiable reason, I merely suspect that they wouldn't actually enjoy it that much.

As for monthly commit services, providers choose them over usage billing because it smooths out their capacity projection needs. If you're writing random numbers to /dev/null you probably don't get much out of it. On the other hand if you process bitcoins with unused capacity maybe you are better off, though providers may decide to drop you. Or, if you donate cpu cycles to folding@home you may (or may not) contribute more to the public good than the harm of the extra electricity consumption.</comment></comment></comment></comment>


Ask HN: Help me pick out a weekend project. - <AUTHOR> I would like to build a web app as a weekend project, and I would like for it to be useful to others, too. Is there any product you wish existed, but doesn't?
Here are some ideas I'm thinking of: 1) A hosted email service to email a list of people, but without any of the fancy formatting features. Plain text with maybe a few visual sprinkles. 2) A super-simple scheduling tool. Select a date, and the email and/or phone number of participating members. The day of, the tool would send reminders to people. If anything changes, the leader can send an update to the group.
Any other ideas? Suggestions? I'd love to talk shop! <comment><USER2> Here's a project for you: Let me input a list of small companies' career pages. Send me a daily email when a new job is added to one of those pages.

<comment><USER3> The other side also has a dearth of no-BS talent sourcing tools.

There's [https://sourcing.io](https://sourcing.io), but it's rather neglected.

Recently, I was running a hiring campaign to grow our team. It sucked. Most of my workflow to identify talent and to manage outreach could have been automated. I also did research on competitors and other companies to figure out how to position our job ads.

What I really needed was:

      1. A central, searchable database that aggregated as much data as possible about the talent out there;
      2. a central, searchable database that aggregated as much data as possible about other positions out there;
      3. a tool that used the aforementioned databases to automatically identify and suggest fixes to my weaknesses;
      4. finally, a tool that automated outreach.

On #1 and #2, tell me who's out there. Tell me who has interesting profiles. Tell me who I am within N-degrees of. Based on who gets hired, tell me who is hot. Tell me who's looking for work via Hacker News. I don't mind searching for this myself, but I need a crap tonne of data points to filter on. I did this manually (repurposing our database at Walter) to yank out ~20 outbounds that made the most sense.

For #3, tell me how to improve my job ad based on what works. I had to rely on my intuition, and the feedback of my peers. It generated a lot of inbounds (~50 per position), but it also took a lot of time. Help me find relevant job boards.

For #4, give me a central place to manage 80% of my outreach. Post to the variety of job boards. When I fill the position, help me fan out let downs and schedule calls, and cancel the job ads.

Most importantly, do all the above without turning it into a enterprisey nightmare. That's the hardest part.

Oh, and don't take inspiration from AngelList's offerings. They suck. If they spent another 12 months working on data, they would eliminate a lot of the noise.

/rant

I could go on and on about all the crazy pains I dealt with. I hated it. I budgeted ~2 weeks (knowing I had intense focus). It took about ~4 weeks. 5 if you count closing. It should be at most 14 days to closing.

<comment><AUTHOR> Hey, thanks for the thorough reply! I just signed up for a sourcing.io trial. I've never used a sourcing tool of any sort--any chance you can elaborate how sourcing.io is neglected?

</comment></comment></comment><comment><USER4> Both of your ideas exist.

Pretty much every mailing service will let you send plain text emails.

Google calendar allows email notification on events. You can also do Facebook group email notifications. There are many other services that have that.

Here's a free idea for you:

Deleted Wikipedia. Show me the stuff that got deleted (as in edited out) from a given article.

<comment><AUTHOR> That's true; they both exist. I just think it could be fun to build a better mousetrap. Are there any other product ideas you'd find personally useful?

<comment><USER5> a variation on 2 could be integration with various messengers.

</comment></comment></comment><comment><USER6> An app to remember any longtime bet : I bet à dîner in a French restaurant than in 2020 the Russian team will have more golds medals than Usa . Then on august 2020 an email reminder is sent to the participant

</comment><comment><USER7> How about a basic CRUD application to manage virtual domains, virtual users, and virtual aliases for Dovecot/Postfix in a MySQL|PostgreSQL database? I could use something like this. :)

<comment><USER8> I think Ajenti or Webmin might suit your needs perfectly.

</comment></comment><comment><USER9> A CLI to manage Apache VirtualHosts inside Vagrant. I would use it.

</comment><comment><USER10> An online hex editor. Probably could do this fully in the browser.

</comment><comment><USER11> Drag and drop BaaS</comment>