Startups from Y Combinator's S19 Demo Day 1 - <AUTHOR> https://techcrunch.com/2019/08/19/all-84-startups-from-y-combinators-s19-demo-day-1/ <comment><USER2> > Epic Aerospace: Epic is manufacturing inexpensive space tugs to deliver > satellites into geostationary orbit. The 21-year-old founder has been > building rockets since he was 16, and is now managing a team of seven > aerospace engineers with Epic Aerospace. The founder describes propulsion as > one of the biggest problems for satellite companies, in that it can take up > to two years to qualify new satellite systems and can cost up to $30 > million. The problem they're solving is moving satellites from low Earth > orbit directly into geostationary orbit. Epic's tug is half the cost of the > competition and is reusable. They're currently working with Satellogic, and > chasing what the founder says is a $3.1 billion geostationary insertion > market.

So, uh... what's the big propulsion breakthrough? They have no website (well, they have this: [http://epic-aerospace.com/](http://epic-aerospace.com/)) and I can't find any search results. They don't list the founder's name, and the only person I can find or other mention other than the ycombinator article is this: [https://github.com/OmarBessa](https://github.com/OmarBessa)

I agree it's a big market, and it costs a lot more than $30 million to prove out a new propulsion system, especially one that can repeatedly take satellites from LEO to GEO.

If it's some reusable tug, I'm guessing it's able to be refueled in orbit? That'd be pretty epic indeed, because I'm not sure of anyone doing that these days. Though transferring fuel in zero g is a real interesting problem.

<comment><USER3> Probably is no breakthrough, other than solving a common problem with a reusable approach.

It is wasteful to have every satellite carry the weight of its own propellant and engines.

Having a single device that can deliver quite a few satellites to their orbit through clever planning and efficient fuel use could save significantly on weight, design, and launch, costs and complexity.

<comment><USER2> Well delivering multiple satellites could be a thing, it's still basically the same cost by mass, you're just splitting the monetary cost up among different customers. If you are delivering multiple GEO satellites, you also have to have them be the right place in their orbit, over their target, since they are stationary with respect to the earth (which is why you don't have to move your satellite TV dish). This means all your satellites for that bunch have to basically be near each other.

That also doesn't feel like it is reusable given this definition. I'd assume reusable means you can use it now, and then use it next month on a completely different mission. So let's explore that.

GEO satellites are also generally a lot bigger than your typical cubesat / nanosats that are all the rage in the bulk launcher configurations, because you need a big dish, and a lot of power to transmit and receive signals.

> It is wasteful to have every satellite carry the weight of its own > propellant and engines.

Even if a satellite was delivered to GEO without using an engine, satellites need engines to do stationkeeping and keep their orbit, which is the critical factor for the operational lifetime of a satellite.

It's more wasteful to have to have your orbiting tug do an orbital rendezvous with a satellite in LEO (takes fuel to rendezvous), go to GEO (the normal cost, but more expensive since you have to carry the fuel for the return trip), then come back from GEO to LEO (takes fuel).

Following this delta-v map, it looks like it takes about 4000m/s of delta-v to go from LEO to GEO, then the same the other way back down.

[https://external- preview.redd.it/U5iH7huE5qKth7ZFvipXt8vzaFO...](https://external- preview.redd.it/U5iH7huE5qKth7ZFvipXt8vzaFOO99qHFh9o9_SkLLk.png?auto=webp&s=d145ac9ae496abe35fae86fc11a584d62fe42592)

I don't know of any clever planning or efficient fuel use that can get over the raw amount of delta-v you'd need. Fuel use isn't really efficient, it's the engine that has to efficiently use the fuel, which is why I think there must be some breakthrough here.

Fuel also has to eventually be delivered up to the tug for refuel, so really it seems like all the mass savings is the dry mass of the 3rd stage.

<comment><USER4> I totally agree. You still need to get the fuel to space regardless of who is doing the propulsion work. Let's say that your tug is already on-orbit, how is the fuel going to be brought up? Would you not need to launch another spacecraft to bring you the fuel? How much would that spacecraft weigh?

Besides this, they would have to develop on-orbit refueling technology, as well as force the other spacecraft to use a bus that allows for rendez-vous and docking/proximity ops.

And also, how big is the market for satellite startups that are heading to GEO orbit? For now, it seems like it is just Astranis and GapSat.

<comment><USER5> We will be able to transport satellites up to 5000 lb in mass directly to GEO, which should be most of the market.

Almost every large GEO player is developing new, smaller satellites. We will also modify existing interfaces to allow for docking. Rendezvous and prox-ops is all on our side.

<comment><USER4> Who is "we"? Care to identify yourself? What existing interface are you talking about? Which GEO manufacturer is making 5000 lb spacecraft?

<comment><USER6> I can take a wild guess who "we" is, since Epic's young founder is Ignacio B. Montero and the nick is "ibmont".

<comment><USER5> "you got me"

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> _> Juno College of Technology: JCT is creating the technical university of the future. The startup operates a coding bootcamp, expected to do $3 million in revenue by the end of 2019. Similar to Lamda School, they offer income-share agreements, but "the similarities stops there," explained the founder. Juno says it places 87% of founders who complete their nine-week long program._

How is it different from Lambda School? It's not apparent from their website other than it's based in Canada and they have a physical campus in Toronto.

[https://junocollege.com/why-juno](https://junocollege.com/why-juno)

<comment><USER8> Lambda School is 6 months vs. 9 weeks with Juno.

<comment><USER9> Wait, so people actually pay 17% of their income over two years for a 9 week course? What on earth is the upside of this over picking up a few books/online courses and attending a couple of networking events?

<comment><USER10> One possible upside: Not all jobs are advertised and maybe Juno/Lambda have worked up agreements with recruiters.

Also,think about it from a recruiter point of view: Would you as recruiter rather pore through hundreds of resumes from people who have picked up courses online (and risk getting beat up by interviewers when a few of these don't perform well) or have a pre-screened/evaluated candidates? Worst case: you pass the buck on to Juno/Lambda. There is some incentive for a recruiter to look at Juno/Lambda candidates,no?

<comment><USER9> I get what you're saying but from an employee and personal development point of view, even the most intense 9 week course sounds guaranteed to lack the necessary substance and depth I'd want for a career start / change (which is what they're marketing this for, right?). The same argument would make me just as wary from a hiring standpoint, don't see much of a difference of qualification between 9 weeks of bootcamp versus a selection of relevant online courses there tbh. Worst case in my mind would be a $startupcollege candidate that was just trained on passing through interview processes, that's not sustainable for recruiter/employer relationship in the long term either.

That being said, my experience with letting recruiters filter candidates haven't been the best in the past and my exposure to bootcamp grads is limited since that's just not much of a thing in the German market overall (I guess because there's no real need since traditional university/apprenticeship education paths are far more affordable around here). Is hiring these candidates common in the US outside of the usual startup circles?

<comment><USER10> > Is hiring these candidates common in the US outside of the usual startup > circles?

I'm afraid I don't know :-). I'm from India this isn't common here. Yet.

</comment></comment></comment></comment></comment></comment><comment><USER10> > The startup operates a coding bootcamp, expected to do $3 million in revenue > by the end of 2019. Similar to Lamda School, they offer income-share > agreements, but "the similarities stops there,

I'm interested in learning how this can be VC scale. From what I understand, it is a very people-intensive business (look at the student:teacher ratio for one of their courses)[1]. How is it different from,say,a consulting firm in terms of scalability?

[1] [https://junocollege.com/course/web- development](https://junocollege.com/course/web-development)

<comment><USER11> Short answer is to build a business that's product-led and incentive-aligned. As long as operationally they're trying to use technology to reduce friction at every step (student experience, instructor experience, and curriculum) they'll be able to scale better than an organization that bills for time (and is incentivized to use always consume and bill for more time!)

</comment></comment><comment><USER12> I went through the list and these are the ones that intrigued me.

lumineye: I think this sort of technology can be very useful and I'm interested to see how it is used in the real world.

safely deposit: I like the simplicity, instant value to users, and the way it transitions physical documents to virtual ones. I think the price is a bit steep though.

puzzl: This seems like it erases a huge headache for its customers. I think about this one as provisioning people like VMs to be a physical presence. Why hire when you can rent on demand...

million marker: There are many people who are caring more and more about toxins in their environment, and this plays directly to their growing paranoia.

nomad: I personally don't use ride sharing, but this one seems like it could be competitive. It doesn't seem like there's much difference between the current options.

earth-ai: Of course! If they have a good solution then they may be able to find a lot of resources that we haven't fully exploited yet. This is the big one I think.

<comment><USER13> > Nomad: In a two-month illegal trial period, the company facilitated 5,700 > rides at Indiana University before the startup had to shut down, but they > say they're legal now and ready to try new markets.

Yes, this is a good look for a legitimate business.

<comment><USER14> Easier to ask for forgiveness than permission

</comment></comment></comment><comment><USER15> I've been wondering recently - why there are almost no security startups in the YC? Cybersecurity is one of the biggest problems in the 21st century, the market opportunity is huge and solutions require to solve hard engineering problems, yet there are no cybersecurity companies funded.

Does anyone have the same feeling? Why it would be this way?

<comment><USER16> Most security companies seem to fall in one of two categories: \- consulting \- appliances (aka blinky boxes)

Consulting seldom requires venture capital and cannot scale at the level VCs expect.

Blinky boxes can, but customers are slowly catching on to the fact that adding another blinky box to the network is really not improving their resilience all that much.

On top of that, it's not always easy to identify the real economic buyer in an organisation, and e.g. a CISO might not have the authority to decide on installing new appliances but needs to collaborate with e.g. IT. It all makes for convoluted and longer sales cycles.

<comment><USER17> While its not in YC - there are a few SAAS type security startups aimed at SME's - such as [https://intruder.io/](https://intruder.io/) who I am a very happy customer of. This to me looks to be high growth.

<comment><USER18> There are _dozens_ of these SaaS vulnerability scanning companies, with very little differentiation between them - they basically all run Nessus. It's difficult to see how they could make serious money, certainly not enough to interest VCs.

<comment><USER19> The only way is to make them free and build a marketplace of accredited and vetted pen testers who you charge to be on the platform. Still how the hell you vet these people is a huge issue.

<comment><USER16> I think that's what bug bounty companies are doing by changing the model from paying for time spent to paying for (accepted) findings.

Personally I don't think any serious pentester will spend considerable time in this model though.

That said, I also think that one of the main challenges for buyers of pentest services these days is to evaluate the quality of a report or of the work done. Thoughts on how to improve that are most welcome.

<comment><USER19> Mostly they are cookie cutter bullshit, right.

</comment></comment></comment></comment></comment></comment></comment><comment><USER20> Scared to comment in case I end up like the guy that slagged off DropBox.

Maybe I should do a separate comment for each startup saying "Great Idea! Guaranteed success!" so I can refer to it in five year's time and look really prescient.

</comment><comment><USER21> Only one crypto mention, and it's a company selling banks tech to detect crypto fraud.

 _TRM Labs: Banks are required to trace the source of their customers' money. TRM helps banks identify and trace cryptocurrency fraud. They charge $20K per user seat. Though they couldn't say the name, TRM says they recently signed a top-five global bank as a customer._

</comment><comment><USER22> Mighty is interesting, though I wonder if they do anything fancy to avoid being a trivial MIM proxy for your traffic? E.g. do they somehow prevent themselves from logging onto your VM / VPN?

</comment><comment><AUTHOR> How does [http://www.nomadmoments.com/](http://www.nomadmoments.com/) survive the massive war chest and tech advantage of Uber/lyft?

The $25 a month fee seems easy to get drivers to pay as they can pay that to uber/lyft everyday in commissions.

I suspect the subscription will not stay at that rate for long.

<comment><USER23> Sorry, this is kind of off topic, but why the hell is such a simple website 7MB? I instinctively dont trust companies that cant even deploy a simple website. The massive background image doesnt even look right on mobile, its scaled to fill.

<comment><USER24> It's way worse than that.

It's served 25.9MB to me.

They are using ginormous background images, and loading multiples.

8000x4000 jpgs. 32 fuckign megapixels. For a background image.

<comment><USER25> I had it even worse:

[https://imgur.com/XctFp8c.png](https://imgur.com/XctFp8c.png)

32.6 MB

And I have to agree with the OP, simple things like this instantly drive away my trust that they know what they're doing.

<comment><USER26> >>> simple things like this instantly drive away my trust that they know what they're doing

It inspires me with confidence that they are focused only on things that get them launched.

<comment><USER24> That works great until it doesn't?

What else have they ignored that is going to bite them in the ass?

</comment></comment></comment></comment></comment></comment><comment><USER27> Congrats to all the startups making it to the end! This was quite a diverse array of verticals: from rare earth mining to mail-in sperm tests ;)

Green Tiger. The "Robinhood of India". We hear a lot about how private wealth management is an untapped goldmine in Asia. To the tune of $100T+. And I'm wondering if the barriers aren't more customer development oriented than a lack of actual trustworthy services?

How Asia Can Protect It's Crazy Riches

[https://www.bloomberg.com/opinion/articles/2019-08-17/asia-m...](https://www.bloomberg.com/opinion/articles/2019-08-17/asia- must-protect-its-wealth-to-survive-the-next-financial-crisis)

<comment> zupa-hu $100T is an ambitious number. Whe World GDP is about $80T.

</comment></comment><comment><USER28> From a privacy and security standpoint, can some help make Mighty make sense? I just don't see it. Yes, Chrome does hog my RAM and CPU, but my browsing experience is simply not bad enough to just throw in the towel and give in to a MITM

<comment><USER29> I mean, I agree. It seems like a backwards-facing technology. Smartphones and netbooks are getting better and better processing power, that power should be harnessed, not just ignored.

Besides the obvious privacy and security issues, I can see how you could get customers in the short term with savvy sales and marketing, but trends in development and tech don't seem to support this being a sensical approach for the future.

I mean, one of the examples given is Slack. Slack is already web-based, if you run it as a browser tab, you don't use much extra CPU/memory. But many run it in the Electron "desktop" app. Why? Because it's more integrated with the operating system and more like a first-class citizen app.

That will be solved now with PWAs and the new Web APIs being worked on, it's just a matter of time imo. When all these electron-based apps can just re-use the already running Chrome browser's rendering engine, and still look like a standalone app, who cares how much CPU Chrome uses?

It'll be basically the only UI app running on the whole machine.

</comment></comment><comment><USER30> Nothing targeting climate change? Hopefully day 2...

Edit: mea culpa, Holy Grail is a play here of sorts.

<comment><USER31> Also Wren, which did a Launch HN: [https://news.ycombinator.com/item?id=20461577](https://news.ycombinator.com/item?id=20461577)

<comment><USER30> From a comment there about planting trees or preventing deforestation...isn't the problem now that climate extremes will make it harder to expand forests with droughts and fires? Seems like it may have worked 50 years ago but too late now.

I think we need to start investing in ideas that remediate actively and aggressively. Like "oh my god there's a killer asteroid about to hit us" level of motivation.

I mean the planet will do just fine without us, but if we want to stay the dominant species (and not jellyfish), we had best do as inventors/investors what politicians and governments cannot.

Like:

* Make totally off the grid solar easier and cheaper than PG&E (remarkably hard to do today)

* zero petroleum scalable ag

* zero petroleum mass consumer packaging

* recycling that actually recycles

* economically profitable global scale carbon capture that can work in deserts and fires and extreme cold

Etc

Edit: Because this: [https://news.ycombinator.com/item?id=20745486](https://news.ycombinator.com/item?id=20745486)

</comment></comment></comment><comment><USER32> Does anyone here feel the need for PopSQL?

I am asking this because I was building on a similar idea a couple years back as a side project. I lost track but got curious seeing PopSQL.

<comment><USER33> I got quite excited by that entry. My immediate reaction was 'oh, that's really cool'. But after thinking a little further, I can't think of an audience that both uses SQL frequently and also couldn't use a git repo. What kind of user demographic did you have in mind?

<comment><USER32> My target audience was basically every non-programmer in a team who wants to see/track any kind of data for their own product.

The SQL building would be for programmers to setup say a few initial queries. But anyone can change (there would be a changelog) and share new things to track.

<comment><USER33> Thanks; I've yet to meet any sql-wielding non-programmers in the wild.

Perhaps it's worth releasing after all?

<comment><USER34> Just an anecdote, but my dad learned SQL 10 years before retirement. It helped him do his work, which was not software development, without burdening the professional programmers.

Of course, there are plenty of free and slick GUIs offering the basics of Git. I'd like to see how this is better. Maybe customer service?

</comment></comment></comment></comment></comment><comment><USER9> Could somebody explain the thinking behind startups like yummy? This seems to be quite common in the last few years. Do these "robot barista" type installations really take in significantly more revenue than a traditional vending machine that justifies this level of engineering / cost?

[https://www.yummy-future.com/](https://www.yummy-future.com/)

<comment><USER35> Looks like Cafe X ([https://cafexapp.com/](https://cafexapp.com/))

Seems like a gimmick to me. But who knows, maybe their sales are great? Also the real question isn't the upfront (or potentially distributed) engineering cost - it's real estate. Can the robot justify the larger footprint of a typical coffee vending machine by increased sales? My guess is they're targeting the place between vending machines and Starbucks, which seems like a pretty big void in the coffee market. I still don't understand why a robot arm would do anything other than add to the novelty.

</comment></comment><comment><USER34> >Kern Systems: This startup wants to store information in DNA.

Just imagine the complicated algorithms necessary to prevent literal virus injection attacks.

</comment><comment><USER36> Some surprisingly interesting companies this round, including quite a few leveraging hardware and robotics in cool ways. That being said, two stuck out to me:

I can't see Lumineye as something other than military and police state tech pretending it's going to help first responders more than it will help special operations units kill people and police/FBI violate privacy even further. This should be disturbing, not cool.

I like what Well Principled is trying to do, but having worked in the consulting space for a long time, the disruptable segment of the management consulting market is not that big. _A lot_ of clients don't hire McKinsey for actual insights or results, they hire for the brand name, someone to point the finger at when things go wrong, and as trusted outsider confirmation of what executives wanted to do in the first place. I have a feeling this will pivot into the financial engineering segment of the market pretty quickly or get bought out by one of the big 4.

<comment><USER37> Regarding Lumineye, there is a market for elderly people at home, which are already monitored by bracelets or some other devices they are suppose to wear, that they usually forget, to detect fall, or other adverse events.

No one want to have a camera installed at home to be monitored 24/24\. However, something that could check your pulse or maybe if you have moved in the last 30 minutes remotely would be much more acceptable.

It is probably a much bigger market than law enforcement.

In more institutional places, it could probably be used in hospital, nursing home, psychic wards or prisons.

<comment><USER36> I'm not sure why you need to be able to track bodies through walls to accomplish that. A simple ultrasonic sensor array in a room with some software could accomplish the same thing without the dystopian potential. I just can't see this not getting horribly abused.

</comment></comment></comment><comment><USER38> > Gold Fig Labs: The startup is building a tool for version control on > settings pages. The founders come from Firebase, where they were both early > employees. The company has signed up 60 companies in the last five weeks, > including "multi-billion-dollar tech companies.

I've been setting up some pipelines at work. I was thinking recently, "huh, these pipelines aren't easily version controlled at all". Unless you use something that is completely configurable by text, which is pretty hard to accomplish, then it's basically impossible to get a snapshot of your services. It's even harder to roll stuff back. Or branch it off and test out a new configuration. I'd wager that a lot of issues in production are configuration related, simply because it's harder to introspect and code review versus code changes. Hopefully that can be fixed.

<comment><USER39> Maybe I don't understand what you're trying to achieve, but doesn't Gitlab CI fulfill that role? Your versioning system is essentially git. Branching is done trivially, rolling stuff back is running deploy pipeline from older branch or tag.

<comment><USER38> I'm talking about versioning infrastructure. So let's say you have a setup with a load balancer, three compute VMs and two database instances. You modify the config to make it three compute VMs and three database instances, but suddenly something goes wrong! Can you roll back your infrastructure easily?

<comment><USER40> This is a standard "infrastructure as code" task for devops/SREs/whatever , for ex using Terraform

</comment></comment></comment></comment><comment><USER37> Holy grail, sounds like a moon shot. It got AI, robots, if it wasn't vetted by YC I would think it is some sort of vaporware.

On the other hand, if they can pull off automatic research and experiments at scale, it seems to be a real game changer.

</comment><comment><USER41> > As privacy-conscious consumers speak up against the proliferation of facial > recognition tech (...) Traces is building computer vision tracking tech that > relies on cues other than facial structure

It seems that Traces has slightly misunderstood the concerns of privacy- conscious consumers, so I would like to publicly make the following clarifications:

1\. If your technology can track me as effectively as face recognition does, then it is not in any way "less invasive". You are still invading my privacy.

2\. STOP. FUCKING. TRACKING. ME!

</comment><comment><USER20> What I think would be cool would be a prediction market for each year's YC startups, limited to people with HN logins. Be interested to see how the cumulative wisdom of people here compares to reality.

</comment><comment><USER42> Every time I read one of these my heart freezes up at the possibility someone has beat me to market. Then I remember why I spent 3 years in R&D.

<comment><USER43> 3 years in r&d is called a masters. 5 years a PhD. Not trying to be glibe but get your business house in order.

<comment><USER42> I already sold 3 companies doing the agile thing, I'm quite aware of the known problem/unknown solution approach. This time I'm more interested in the unknown problem/unknown solution space and, for this particular project, that meant inventing a new branch of mathematics to solve a particularly hairy problem.

</comment></comment></comment><comment><USER44> <Breadfast>

Interesting to see that they got 10,000 paying customers in 2 years.

</comment><comment><USER45> here are all S19 companies [http://app.crunchdex.com/s19](http://app.crunchdex.com/s19)

</comment><comment><USER28> Dashblock and Actiondesk look pretty slick!

</comment><comment><USER46> if you could invest in one startup from demo day 1, which one would it be and why?

</comment><comment><USER47> Nothing to fight global heating.

<comment><USER48> make the heat go away!

<comment><USER49> If you haven't read it yet please try to read the section 'In Comments' from the 'Guidelines' at the bottom of the frontpage.

[https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)</comment></comment></comment>


Universal cancer vaccine on horizon after genetic breakthrough - <AUTHOR> http://www.telegraph.co.uk/science/2016/06/01/universal-cancer-vaccine-on-horizon-after-genetic-breakthrough/ <comment><USER2> While this is an interesting and welcome development, nothing is for sure until the clinical trials prove the efficacy of this approach. The article doesn't say how the treatment worked for the 3 cancer patients. It only states that the treatment was tolerated. This headline mostly clickbait!</comment>


How I built an app with 500,000 users in 5 days on a $100 server - <AUTHOR> https://medium.com/unboxd/how-i-built-an-app-with-500-000-users-in-5-days-on-a-100-server-77deeb238e83#.tt9lnxwlp <comment><USER2> dupe: [https://news.ycombinator.com/item?id=12135484](https://news.ycombinator.com/item?id=12135484)

</comment><comment><USER3> A credit to Node.js, but you don't have any redundancy with a single server. Also, for $100 on Google that's a small instance (1-standard-4)?

With MongoDB, you really should be running a replica set cluster which requires a minimum three nodes.

Anyway, if your hosting cost is $100 a month or it is $1,000 a month, both trivial compared to your time of working on the idea.

<comment><USER4> $1000/month is not trivial for most people, especially outside of the western world.

Though he should be making enough from the ads on 500k users to cover the costs.</comment></comment>


The Theory of Concatenative Combinators (2007) - <AUTHOR> http://tunes.org/~iepos/joy.html <comment><USER2> Great to see an article related to Joy!

If you do not know Joy and want to check it out, you will notice that the link in this page is broken. A mirror is available here: [http://www.kevinalbrecht.com/code/joy- mirror/index.html](http://www.kevinalbrecht.com/code/joy-mirror/index.html)

</comment><comment><USER3> Thank you for sharing this. I found it a surprisingly good introduction to combinators in general. Reading it also set off a lot of resonances in my brain with formal, Hilbert-style logic systems and attempting to find minimal collections of axioms.

Was recently blown away to find out that propositional logic can be whittled down to just modus ponens and the single axiom:

        ((((p -> q) -> (~r -> ~s)) -> r) -> t) -> ((t -> p) -> (s -> p))

Anyway, I've been wanting to check out concatenative programming for a while now, anyway. This website [0] is a pretty darn good resource for anyone similarly interested.

I would love to combine the above with my interest in rich type systems. Anyone aware of anything that, in spirit, marries Haskell and Factor?

[0]:[http://concatenative.org/](http://concatenative.org/)

<comment><USER2> I do not know too much about it, but cat is a statically typed functional stack-based programming language:

[https://github.com/cdiggins/cat-language](https://github.com/cdiggins/cat- language)</comment></comment>


Kisha – The umbrella you'll never lose - <AUTHOR> https://www.getkisha.com/ <comment><USER2> At first I thought it was an umbrella...

Than I thought it was an app that tells you when it's going to rain...

Which led me to believe it could be some sort of satire...

Then at the bottom is an actual umbrella, so now I'm thinking it's a weather app AND umbrella? and NOT satire?

No idea, but I already have numerous weather apps, and an umbrella in my car.

<comment><USER3> And none of those put together cost you $60. These were my thoughts exactly!

</comment></comment><comment><USER4> I'm skeptical of any product page that uses the word 'perfect' too many times:

"We're big fans of perfectly crafted products." "built with a perfect opening and closing mechanism" "built using perfect stitching"

Especially when high quality umbrellas tend to cost more than this without the app or tracking technology.

I think this product could definitely be useful, but it is all about the clean, minimal experience to make it so.

Instead, I envision this product doing really well as an impulse buy at Macys, Sharper Image, and similar stores around Christmas. Parents and grandparents will buy this for their younger family members thinking it is cool. Then the young people will forget it at the bar anyway because the reason they forgot their cheap umbrellas was not the lack of reminder, but because they were drunk.

</comment><comment><USER5> Can't figure out if this is a real product or satire.

</comment><comment><USER6> I can't love this. It seems there is a flood of new products that allow you to track or remember them. This can't be sustainable in the long run, as each product uses it's own proprietary technology, that requires you to use a specific app. Fast-forward 5-10 years. Do I want 30 apps on my phone that track the various things I may or may not bring with me? Nope. That would be very annoying, indeed.

<comment><USER7> Where you see hell I see market forces making everyone freer and more powerful.

Once everything has intelligence, we'll need to manage that intelligence. We need one phone app and not dozens.

There's only one thing I can see that can make that happen. Open protocols. Open device APIs. Then we can make our own management apps. Oh what a wonderful day that will be.

When I can coordinate my bathroom scale with the app that manages my grocery list. When I can automatically start my car at 8:30 am, but only if my shower ran. When I can actually teach my house to understand whether I'm actually there or not.

<comment><USER8> Yet that same phenomenon means that losing your phone _feels_ like losing all the objects tracked by your phone. I agree that this can be done well if we try but it should also be so resilient that you can be on a new phone with the same applications, data and settings in just a few minutes.

</comment></comment></comment><comment><USER9> "100% windproof"

Downtown in any big city would probably prove that to be wrong very quickly. Toronto destroys umbrellas.

They make some nice claims WITHOUT any warranty at all.

<comment><USER10> It's great if the wind won't mangle your umbrella, but if its windy and raining and your umbrella merely inverts you'll get wet.

</comment></comment><comment><USER11> Is this a problem people are willing to pay to solve? Is the fact that it's raining outside a good enough reminder not to lose your umbrella? Just curious.

<comment><USER12> People often carry umbrellas in areas where rain is less predictable. I've left umbrellas in restaurants etc. before, but...

a) I know where I left it, and

b) a decent umbrella costs $3 where I live, so I'd need to lose 20 before this became cost effective.

<comment><USER13> Wouldn't the pay off be not getting wet when you would've forgotten an umbrella? It's not presenting $60 in umbrella value, it's availability/convenience value.

</comment></comment></comment><comment><USER14> As a habitual umbrella-loser, this is an _awesome_ product :D

A bit of copy-editing:

'percepitation' in all the screenshots should be 'precipitation'. Or possibly just 'rain' / 'snow' / 'hail' ;)

'It doesn't bother you if leave one of your safe locations' -> 'It doesn't bother you if [you] leave [it in] one of your safe locations'

'It works in the buildings' -> 'It works in buildings'

I'll also second "too many uses of perfect". If it's perfect, why does it come with a warranty? ;)

<comment><AUTHOR> Thanks, will change...

</comment></comment><comment><USER15> Isn't this just putting a Tile [1] (or any number of other BLE devices) on an umbrella?

[1] [https://www.thetileapp.com/](https://www.thetileapp.com/)

<comment><AUTHOR> Actually no, because the use case is quite different. We wanted to create an umbrella that really has an app that helps. With Tile, you would just get the location feature, without the weather forecast

<comment><USER16> A person named Goran who created a smart umbrella called "Kisha" \- rain in srbo-croatian. The world makes sense :)

<comment><AUTHOR> Thanks. I did not come up with the name :)

</comment></comment></comment></comment><comment><USER17> "Here at fadgadg.et, we are making the internet of things a reality. Our beautiful SmartFondue comes with a exquisitely-designed iPhone 6 app that subtly notifies you when your cheese is ready. Integrating perfectly with the iOS UI, the app adjusts the lock-screen and main UI colour in perfect synchronicity with the SmartFondue itself, transitioning delightfully from virginal white to the deep golden yellow of perfectly-cooked cheese."

</comment><comment><USER18> I really am not so sold on the idea of having to charge my umbrella...

I do wish you all the success though!

<comment><AUTHOR> You don't need to charge the umbrella, just replace the battery on the beacon.

<comment><USER19> Awesome, now I'll just add "replace umbrella batteries" on the list of things I have to remember to do every 6 months or so.

<comment><USER20> put it on your google calendar

</comment></comment></comment></comment><comment><USER21> Products like this make it hard to argue we're not in a bubble right now. An umbrella with bluetooth and a smartphone app? Seriously?

The idea of taking a mundane household object and adding bluetooth + app support to it is not a sensible formula for innovation. I can think of a hundred products that follow from this formula, and they're all terrible:

* Coffee machine + App. Tells you when coffee is ready. Tell coffee machine to start making coffee as you wake up.

* Vacuum cleaner + App. Tells you when the bag is almost full, sends automatic push notification when you haven't vacuumed a room for too long (using GPS and artificial intelligence!)

* Phone charger + App. Send a push notification to your tablet when your phone is done charging and vice versa.

* Water dispenser + App. Lets you know when your plants need water.

* Sandwich + App. Will send you a push notification when you've eaten the sandwich and final push notification when the sandwich has left your body.

These innovations are just gimmicks, and have no hope of ever becoming more than that. A shame, because launching any kind of product takes a tremendous amount of effort, and I'd rather see people put that effort into something more productive.

</comment><comment><USER22> Is losing your umbrella a common problem?

<comment><USER23> For me, yes. I've lost so many umbrellas.

But that reminds me of a story I heard told by Alejandro Jodorowsky,[1] about being at a dinner at Dali's home and Dali telling him about the times when he and Picasso used to go for walks on the beach, and they would keep finding clocks buried in the sand.

Then, Dali asked Jodorowsky whether he too had ever found any clocks in the sand on the beach.

Jodorowsky thought, _" What could I say to the great Dali? If I say that yes, I have found clocks in the sand, then I would seem arrogant. And if I say that I never found any clocks, then I would seem like a little man."_

 _" So I thought for a while and then said, 'No, Dali, I have never found any clocks in the sand. But I have lost a lot.'"_[2]

[1] - [https://en.wikipedia.org/wiki/Alejandro_Jodorowsky](https://en.wikipedia.org/wiki/Alejandro_Jodorowsky)

[2] - The quotes are not verbatim. This is from memory of an interview I saw with Jodorowsky, which I can not find right now. If anyone has a link to it and can provide a verbatim quote, that would be appreciated.

</comment></comment><comment><USER24> I'm curious what issues of false-positives and false-negatives this might have. Did I actually remember my umbrella, but the app hasn't updated the location it knows of the umbrella yet, so it starts bugging me to go back? Did I forget to turn the app on, so I leave my umbrella behind, feeling secure that I'll receive a reminder that is never going to come? Do I just plain forget my phone sometimes?

Without some way to guarantee a low failure rate, I can see something like this getting so annoying that I'd just turn it off completely.

And besides, I thought only people who rarely needed rain gear used umbrellas. The last time I visited Portland, or Ireland, I didn't see anyone with umbrellas. Everyone wore rain jackets. Incidentally, they keep your hands free.

</comment><comment><USER25> I think a better product would be to create a band you can wrap around your own umbrella that does the same thing. Of course, it could be for anything at that point and that is often more difficult to market whereas losing an umbrella is a fairly normal problem.

Just my (unrequested) two cents.

<comment> jack-r-abbit My thoughts exactly. It is not like this umbrella is going to be enhanced by integrating the tech. You aren't going to "deploy" the umbrella from your phone. Simple add-on tags (which are already trying to take off) would suffice for a lot of things.

</comment></comment><comment><USER26> Seems it only comes with a 3 year warranty even though it claims to be 100% windproof / corrosion proof. I was hoping it would at least be lifetime like totes.

</comment><comment><USER3> I have enough apps on my phone I don't need to pay $60 to have it more clogged up so I don't forget an umbrella that I overpaid for to begin with.

</comment><comment><USER27> Why not a device you can attach to any umbrella? I feel like the umbrella market is pretty saturated. (Terrible pun not intended.)

</comment><comment><USER28> Does it actually exist? I'm interested, but I'm always dubious when I see a shipdate that is in the future.

<comment><AUTHOR> Hi Avre, yes, it does. We've manufactured a small quantity that will ship in January. We've also prepared our production lines to support bigger quantities as we scale our operations. Thanks for your comment.

<comment><USER29> Why you didn't go with one of the crowdfunding sites?

<comment><AUTHOR> Because we're already in production and don't think that it would make a big difference. We'd rather do it on our own site.

</comment></comment></comment></comment><comment><USER30> This is pretty neat, but I think it is severely underestimating my ability to lose/leave things behind

</comment><comment><USER31> This is a very confusing. I had to scroll all the way down the page to see actual photos of the umbrella.

</comment><comment><USER32> I've only ever left umbrellas on trains and buses, which this wouldn't be very useful with.

</comment><comment><USER33> Seems like a solution in search of a problem. At least it's not very expensive.

</comment><comment><USER34> I wonder if their image might be improved by marketing it as Ki$ha instead.

</comment><comment><USER20> I see a dot com like bubble all over again

</comment><comment><USER35> Obviously not marketed towards California.</comment>


Object-Oriented Programming – The Trillion Dollar Disaster - bra-ket https://medium.com/better-programming/object-oriented-programming-the-trillion-dollar-disaster-92a4b666c7c7 <comment><AUTHOR> OOP is just a tool, to be used where appropriate. The only thing wrong with OOP were people who thought, as the article starts:

        OOP is considered by many to be the crown jewel of
        computer science. The ultimate solution to code
        organization. The end to all our problems. The only true
        way to write our programs. Bestowed upon us by the one
        true God of programming himself…</comment>


Literate programming tools for F# - <AUTHOR> http://tomasp.net/blog/fsharp-literate-programming.aspx

<comment><AUTHOR> I'm surprised that Tomas's idea of generating tooltips in HTML hasn't caught on in other language communities, but perhaps it's just not widely known. Of course, it's especially useful in a language like F#, where type inference means that there's a lot of available information hiding beneath the surface of the code.</comment>


I wrote how Twinings was created and even competitors became clients - <AUTHOR> https://before90s.substack.com/p/twinings-tea?r=5posg&utm_campaign=post&utm_medium=web&utm_source=copy <comment><AUTHOR> Hi, I've been writing insights from pre-internet companies in my newsletter. Found it an interesting subject as some "modern" methods like A/B testing, distribution channel have been used for a very long time.

I also share on my Twitter [https://twitter.com/leonagano](https://twitter.com/leonagano) bite-sized insights</comment>


Mistakes to avoid with C++ 11 smart pointers - <AUTHOR> http://www.acodersjourney.com/2016/05/top-10-dumb-mistakes-avoid-c-11-smart-pointers/ <comment><USER2> Not mentioned is passing shared_ptrs as parameters by value. People do it all the time because "passing pointer parameters is as cheap as it gets, right?" But, shared_ptr's thread safety means that each copy involves a full trip past all cache levels to actual DRAM. 100+ cycles each. They are not pointers. They are small yet heavy objects and should be passed by reference. Copying implies assuming shared ownership and should not be done lightly.

Also, "if(!p->expired()) p->lock()->foo()" is not thread safe. The last shared_ptr could die on another thread between the test and the lock. Instead, what you want is "if (auto q = p->lock()) q->foo()"

<comment><USER3> Interesting point about shared_ptr. Do you think shared_ptrs should be passed by const reference or just reference ?

<comment><USER4> Typically you should pass raw pointers (constness depends on your use case...). I can't really think of a scenario where the method/function needs to be coupled with the pointer type.

<comment><USER5> I will often have functions that accept a unique_ptr as a parameter. This way, I can clearly encode that the object belongs to the callee now.

</comment></comment></comment></comment><comment><USER6> The first mistake is using shared_ptr to begin with. It's often unnecessary (as the article says, one can often get away with using unique_ptr). When a unique_ptr is not sufficient, a shared_ptr often obfuscates the true owner of the object.

Every object should have one true owner that manages its memory. Anything else will lead to performance regressions and outright bugs.

<comment><USER7> > The first mistake is using shared_ptr to begin with.

Yes, definitively! Using shared pointers can hide bad design.

There are some cases when it is hard to choose the owner of data. Two examples come to my mind. The first are directed graphs: what owns nodes? The second example are parsers, sometimes AST subgraphs must be assigned to extra structures during further processing (type analysis, code generation and so on).

<comment><USER8> A rule of thumb that I use is, if you cannot see the owner, then you're probably focusing too narrowly. For a directed graph, which is a "sea of nodes" with no real ordering, I would have the "graph" object own all its nodes; for an AST, if it is truly a tree, then the parent owns its children, or otherwise see the directed graph case.

<comment><USER7> The solution with a graph object looks nice, but when you allow some graph operations, than subgraphs could be shared among many (new) graphs. So, another level of sharing. I can't find any better solution for this problem.

</comment></comment></comment></comment><comment><USER9> Two minor comments:

1.) Mistake #7 Has been somewhat fixed in the TS by specializing shared_ptr for array types (similar to unique_ptr<type[]> syntax). What they said was true though for C++11.

2.) If the data within a shared_ptr is not owned by any particular object but is otherwise constant, use shared_ptr<const type>. They can be created from a shared_ptr<type> object. This helps with the aliasing problem mentioned in mistake #1

And a slight nitpick on #4 - I imagine the performance of make_shared depends on the library rather than the compiler itself (and I imagine the performance gain is minimal - it is usually used for readability). Also, C++14 add make_unique, which was overlooked in C++11.

<comment><USER10> make_shared allows the shared pointer to be constructed with its memory and metadata in a contiguous block. This improves cache efficiency and locality and mitigates heap fragmentation. Although make_unique primarily serves to improve readability, make_shared can reduce smart pointer performance overhead dramatically.

See [http://stackoverflow.com/questions/24779929/what-happens- whe...](http://stackoverflow.com/questions/24779929/what-happens-when-using- make-shared)

You are right in pointing out that the library determines whether using make_shared will improve performance.

</comment></comment><comment><USER11> The biggest mistake with these objects is over-using them. They are very helpful for internal memory management but they should definitely be avoided in APIs unless the point of the API is to do something like transfer ownership (e.g. factory method returning std::unique_ptr<T>).

Raw pointers continue to be _fine_ in a wide variety of cases. Suppose the object model has something like a type T with APIs to access pointers to types A, B and C, the lifetimes of A, B and C are always tied logically to the lifetime of T and everything you do with the pointers to A, B and C is in the context of some T. This does not require special magic pointer objects to "share" A, B and C pointers because their safety is ensured transitively. So you _might_ wrap T but you don't need to wrap the others.

Besides, pointer objects are still annoying to use: sometimes they're pointer- like (e.g. "if (somePtr)" works) and sometimes they're not (requiring a ".get()"), and they seem to "infect" entire call chains. If you have previous API dependencies on boost::shared_ptr<>, you can't easily replace those with std::shared_ptr<> either. Use them _very_ judiciously, and always try the simplest thing that would work, first.

<comment><AUTHOR> Good points ! I ran into some difficulty translating the boost::shared_ptrs to C++ 11 standard shared_ptrs a while back while adopting some open source tech for xbox.

Also you're spot on about people touting the smart pointers as a silver bullet for all memory issues leading to an overuse of these otherwise fantastic tools.

</comment></comment><comment><USER12> Mistake #10 contains a race condition when another thread destroys the last shared_ptr to pIceman (Top Gun fan much?) between the call to !pMaverick->myWingMan.expired() and pMaverick->myWingMan.lock().

Just use:

      if (auto p = pMaverick->myWingMan.lock())
        p->take_shower_with(pMaverick);

See [http://en.cppreference.com/w/cpp/memory/weak_ptr/lock](http://en.cppreference.com/w/cpp/memory/weak_ptr/lock)

</comment><comment><USER13> This is why smart pointers via templates don't work well. The mold always leaks through the wallpaper. There's no analysis at compile time to catch those errors.

This is what Rust is for. You really need a borrow checker.

<comment><USER14> Let me try to identify which ones Rust catches:

"#1: Using a shared pointer where an unique pointer suffices."

The Rust analog would be using Rc or Arc when Box is enough. Rust has the same problem.

"#2: Not making resources/objects shared by shared_ptr thread safe"

Rust does NOT have this problem! You have to be explicit about which objects are thread safe (via Sync), and Rust will not allow you to transfer objects across threads without it.

"#3 : Using auto_ptr"

Naturally, Rust does not have this issue, which is strictly legacy C++.

"#4 Not using make_shared to initialize a shared_ptr !"

"#5 Not assigning an object(raw pointer) to a shared_ptr as soon as it is created"

"#6 Deleting the raw pointer used by the shared_ptr"

These are the same issue: in C++ you can construct a shared_ptr from an object you allocated with new; the reference count must then be allocated separately. Rust does not allow this, and avoids this issue, at the cost of some flexibility (like custom deallocators).

"#7 Not using a custom deleter when using an array of pointers with a shared_ptr"

AFAIK Rust doesn't have this issue, because it doesn't have C++'s array- decays-to-pointer semantics. In Rust the size of the array is part of the type; to be fair, this loses a bit of flexibility, but C++'s semantics here are insane, so point goes to Rust.

"#8 Not avoiding cyclic references when using shared pointers !"

Rust has this problem!

"#9 Not deleting a raw pointer returned by unique_ptr.release() "

Rust has an analog in Box::into_raw(), which is the same issue.

"#10: Not using a expiry check when calling weak_ptr.lock()"

Close one: Rust has the same issue, in that you can call rc::Weak::upgrade().unwrap(). unwrap() is often used with some impunity, especially with locks. However you do have to be explicit about your use of it, while in C++ it's easier to forget. Let's give this one to Rust.

Let me give one more point to C++:

"#11: Accessing an object through a Rc/Arc/RefCell while a caller holds a mutable reference."

This is strictly a Rust problem: because there cannot be more than one extant mutable reference to an object, you have to be careful to not call out to something while holding a mutable reference. This is a doozy.

Total score: There are 7 unique to C++, 1 unique to Rust, and 3 that are shared.

Note that none of this has to do with the borrow checker! Indeed, the whole point of reference types like Arc/Rc/RefCell are when your lifetimes are dynamic, and you need to avoid the borrow checker, which assumes a statically knowable lifetime.

<comment><USER13> The borrow checker is what makes unique pointers in Rust unique. In C++, you can pass ownership but still reference the unique pointer you moved from. It should crash at run time, deferencing null, but the compiler will happily compile it.

Can you actually cause #11 in Rust? Example?

Circular references remain a problem, but they can only cause memory leaks, not security errors or crashes. It would be nice to have a Rust static analysis tool for circular references. Often, you can prove their absence for a type.

<comment><USER14> Perhaps you consider this splitting hairs, but I would say this isn't the borrow checker at work, because nothing is being borrowed! Instead it's Rust's move semantics, which is separate from the borrow checker. We can envision C++ with no borrow checker, but Rust-style move-semantics-by-default, and it would be a better language for it.

An example of #11:

        use std::cell::RefCell;
        fn main() {
            let c = RefCell::new(5);
            *c.borrow_mut() = *c.borrow() + 1;
        }

this is equivalent to * c = *c + 1, which is conceptually safe, but crashes at runtime in Rust.

A real world example of this: say you are keeping a count of some event in a global or thread local storage. You pull out a mutable reference, so you can update the count more efficiently. You then call a function which accesses that global. Crash!

Rc/Arc have the same issue. This defeats the point of refcounting: it means you must have global knowledge of the refcount in order to reliably call mutating functions on the contents. But if you have that global knowledge, you wouldn't need refcounting in the first place!

<comment><USER15>
      > but crashes at runtime in Rust

Because "crash" is ambiguous, I'll note that this code example panics at runtime (as opposed to segfaulting).

</comment></comment></comment></comment></comment><comment><USER16> Mistake 10 has a race condition. The shared pointer could be cleaned up between the weak pointer expiry check and lock. Why not just lock and check for null before using it?

<comment><USER17> You're right. These were all good tips except for #10, where the "solution" is not thread-safe. Checking for null is better.

</comment></comment><comment> Const-me His last fix is buggy:

        if( !pMaverick->myWingMan.expired() )
        {
            cout << pMaverick->myWingMan.lock()->m_flyCount << endl;
        }

The problem here is it will still crash if another thread destroys the object between line #1 and line #3.

Here'a good fix, from [http://en.cppreference.com/w/cpp/memory/weak_ptr/lock](http://en.cppreference.com/w/cpp/memory/weak_ptr/lock)

        if( auto observe = weak.lock() ) {
            std::cout << "\tobserve() able to lock weak_ptr<>, value=" << *observe << "\n";
        }
        else {
            std::cout << "\tobserve() unable to lock weak_ptr<>\n";
        }

<comment><AUTHOR> Yep - thanks for calling this out. I should have put out a version that's safe in multithreaded environment. I've updated the article to reflect this.

</comment></comment><comment><USER8> As someone who uses more C than C++, I have often wondered about the value of "smart" pointers and other pseudo-automatic memory management abstractions, since in any case one has to understand the traditional manual memory management to use them correctly, and if they do, they then also have to understand the additional semantics of the class implementing it too --- or bugs like the ones shown in this article will result.

<comment><USER18> I totally agree. In most software projects, memory management isn't a particularly difficult aspect of the problem. With todays software tools, if your code contains memory leaks or pointer bugs you're just being an amateur. And in those cases where memory management requires a bit more thought and design it's rather unlikely that some standard smart pointer protocol is going to be a glove-fit solution. So I never saw the point of smart pointers unless you want to reinvent Python or something.

<comment><USER19> I develop software since the mid-80s.

Never been part of a C or C++ project at the enterprise level, where any single developer could answer any question about memory management tracking.

Tracking down crashes due to memory mismanagement was always a several days task.

</comment></comment></comment><comment><USER20> If I remember correctly, C++11 smart pointers need more maintenance when being passed on a message pump across threads, particularly from my memory of using it on Windows.[0]

When sending/posting a smart pointer to a different thread's message pump via a function like PostThreadMessage, the sending thread's smart pointer would go out of scope and the memory would be released because the receiving thread hadn't increased the reference count. By the time the receiving thread's message pump processed it, the pointer had already gone out of scope.

If you are using the producer-consumer pattern, most likely you'll have to use unique pointers and call release manually; I guess that's still better than using new and delete, right? Or perhaps I could try using SendMessage instead of PostMessage and read the return value to determine if the pointer got to the other side (for some reason, that wasn't an option to me).

[0] [http://stackoverflow.com/questions/11290912/passing- objects-...](http://stackoverflow.com/questions/11290912/passing-objects-as- wparam-in-window-messages-using-smart-pointers)

<comment><USER21> I assume that postthreadmessage has a C abstraction. In C++ you should use a queue that properly supports copyable and movable types. Or at the very least write a wrapper on top of postthreadmessage that does.

</comment></comment><comment><USER22> Mistake #2 is just bizzare: who in their right mind could assume that wrapping an object in shared_ptr makes it threadsafe?! And the mistake is worded as if you _should_ make these object thread-safe, which is just as bizzare.

</comment><comment><USER23> So if I'm coding up a LinkedList or a Binary Tree today, instead of using a raw pointer or shared_ptr, should i be using a unique_ptr to prevent circular references ?

<comment><USER22> You should be using a raw pointer, period. The list/tree destructor must be responsible for traversing and deleting the whole structure.

If you have a linked list of, say, 10M elements linked by unique_ptr, deleting the head of the list would cause _recursive_ [1] destruction of all elements in the list. Stack overflow, CRASH, BOOM, BANG!

[1] Take a simple example of list A ->a B ->b C ->c 0 where arrows are unique_ptrs owned by the nodes. Deleting A must invoke the destructor for ->a , which will delete B, invoking the destructor for ->b, which will delete C invoking the destructor for ->c which is null, thus finishing the recursion.

EDITS: added labels to pointers for clarity.

<comment><USER24> You could (and imho should) use RAII semantics using unique_prts for this. Writing custom destructors will introduce unnecessary code that you'll have to maintain and unnecessary bugs that will creep in eventually.

<comment><USER22> Which part of "recursion", "stack overflow" and "crash" did you not understand? Do you think std::list uses smart pointers?

<comment><USER21> You are getting downvoted, but you are completely right. When implementing node based containers it is perfectly alright to use raw pointers as the nodes in no way own their children or siblings but they are all collectively owned by the datastructure.

You should of course use smart pointers for the automatic pointers that temporarily hold node references in functions that manipulate the datastructure.

<comment><USER25> The downvotes are for snark, not incorrectness the of content, I'm fairly certain. Such aggressive replies are not appreciated on HN. I find that this makes HN a much more pleasant community than some others.

<comment><USER22> The reply is that way because the OP didn't seem to acknowledge that using unique_ptr in this case has serious problems. He still insists on using unique_ptr, reasoning boiling down to "you should avoid writing code because you may create bugs". As if slowness or lurking crash caused by _not writing code_ were not a bug in itself.

<comment><USER25> Oh I know, using unique_ptr to implement linked list is a terrible idea. Having an element be owned by its predecessor is a very weird idea, not to mention that it wouldn't work at all for a doubly linked list.... I'm just saying that your comment could have been written in a nicer way.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER26> I'm not completely understanding the recommendation for #5:

Recommendation: If you're not using make_shared to create the shared_ptr , at least create the object managed by the smart pointer in the same line of code – like :

shared_ptr<aircraft> pAircraft(new Aircraft("F-16")); </aircraft>

I think he really means to say that the second shared_ptr is better initialized from the first shared_ptr instead of the raw ptr.

</comment><comment><USER27> Ah, so C++ pointers, even with "smart pointers" is still complicated and massively error prone.

I thought that's sort of what they were meant to fix. Apologies, haven't coded in C++ for several years (when auto_ptr still roamed the Earth). But it doesn't inspire confidence reading things like this that we've made much progress...

<comment><USER28> I might be biased, but I don't know that you can really call it massively error prone. Certainly, if you want to break the rules C++ will assume you have a good reason for it and let you shoot you in the foot all the way through the Earth's crust, but the smart pointer rules are actually fairly simple this time.

For example take the first mistake: "using a shared pointer where an unique pointer suffices". Unique pointers and shared pointers mean completely different things, if you know what they are, you would never think of mixing one for the other.

If I had to make an analogy, this is like "using a video with a single frame when an image suffices". The video may work, but that's not at all how you're supposed to use it, and surely, anyone who knows what a video and an image are would not make that mistake!

You'll notice that most of the remaining mistakes here are with the shared pointer and weak pointer. Thankfully, in the overwhelming majority of cases you don't need it at all, sticking to the very simple unique_ptr is what you want, and unique_ptr is practically FootProof™.

<comment><USER27> I see your point of view, and I agree that in the right programmer's hands, it's fine. Unfortunately, as we've seen repeatedly, people over estimate their pointer abilities and it leads to all sorts of memory and security issues.

I figure the C++ smart pointers should be as easy to use as possible, without caveats vs. C style pointers or whatever.

Maybe that isn't practical in the C++ language design right now, but that's just how I see it.

cheers

<comment><USER5> For almost all use cases, the issues mentioned don't even come up. You create a unique_ptr with std::make_unique, or a shared_ptr with std::make_shared. It lives its entire life as that type, and when you no longer need it, you forget about it.

The issues in the article had me banging my head, because they aren't how smart pointers are used in practice. The only time that you would call release(), for example, is when you are passing a pointer into a pre-C++11 API. Once you have done so, you wouldn't be worrying about calling delete anyways, because you have transferred ownership.

</comment></comment></comment></comment><comment><USER24> Mistake #0:

Use smart ptrs (especially shared_ptrs) instead of having clear memory ownership contracts and incorporating memory ownership into your design. Two objects each having a shared_ptr to the same object as a member should raise red flags.

<comment><USER29> >instead of having clear memory ownership contracts

You have a good point for shared_ptr, but unique_ptr offers the best clarity for ownership, much better than raw pointers, since owning and non-owning pointers all look the same, but a unique_ptr that hands out regular pointers to its memory makes it clear in the code who owns what.

</comment></comment><comment><USER30> Can anyone point to a similar article for using C++ casts?

</comment><comment><USER31> The little social media bar, when it pops up (which appears to happen at random) unavoidably obscures the left side of the text when reading in landscape mode. Please consider removing it.

Also, please read up on scroll jank and fix the javascript event handlers (or remove them -- why are you handling scroll events at all?).

<comment><AUTHOR> Thanks for reporting this. Someone else noticed it on a nexus tablet as well. I'm looking into getting this fixed.

</comment></comment><comment><USER32> #11: Do not create two shared_ptr from the same raw ptr! It creates two control blocks and reference counts.

<comment><USER33> That's #5.

<comment><USER32> Oh, I missed that one.

<comment><USER34> Should have used a unique_ptr. _ducks_

</comment></comment></comment></comment><comment> once-in-a-while Shudder, shudder, C++ 11 seems as bad a monster as C++ always has been...

</comment><comment> blubb-fish mistake #1: not using Rust instead!

(I learned that on HackerNews - didn't write a single line of C++ or Rust in my life, though)

</comment><comment><USER35> Why everyone hating new/delete so much? Instead of this headache with smart pointers and all complicated stuff they bring, clear and easily understandable memory management.

<comment><USER36> Because as a computer scientist the last thing you should ever want to do is to do something _manually_. Because when you do something by hand, every time - especially something as simple as heap allocated objects - you _will_ do it wrong _all the time_. And memory management is _complicated_ , even if the primitives are not. So when you combine something one level of indirection away complex with a ton of boilerplate you get constant problems, which 25 years of C++ have demonstrated repeatedly in the context of raw memory operators.

These smart pointers, in reality, are _not_ a headache. You want to make a heap object? make_unique. You want to pass it around? Go for it. You want to pass ownership? std::move it. And _only_ in the _extremely_ rare case where you have multiple objects of non-deterministic lifetime that need to both access the exact same data structure, _then_ you pull out shared_ptr and deal with the synchronization.

But unique_ptr, by itself, is probably the most productive addition to C++ period. More than the STL, more than templates, if you use it correctly and design your code properly, it can replace every heap allocation and drastically reduce code complexity.

</comment></comment><comment><USER37> Or you could just use lisp and not have to worry about any of this stuff ;-)

<comment><USER38> And forget about developing games and drivers and OSes and...

<comment><USER19> Once upon a time Lisp was used to write OSes and games....

<comment><USER12> The game Abuse (now open source) uses/used Lisp as its scripting language: [https://news.ycombinator.com/item?id=516853](https://news.ycombinator.com/item?id=516853)

<comment><USER19> I have spent quite a few long nights playing it. :)

</comment></comment></comment></comment></comment><comment><USER39> [http://harmful.cat-v.org/software/c++/linus](http://harmful.cat-v.org/software/c++/linus)</comment>


Computer security : A swarm of many stripes - <AUTHOR> http://www.economist.com/node/16646188?story_id=16646188 <comment><USER2> Come on, Yan. Really? Look at the m-team at "InZero Systems", who placed this PR story in the Economist:

<http://www.inzerosystems.com/company/principals/>

* A "well-known international investor"

* A former president at Lockheed Martin

* A Russian inventor (of "medical, biotech, electric vehicles" &c)

* A "member of the board of the National Bank of Ukraine"

* A Russian tech entrepreneur, former founder of an online computer repair and support company.

This A-Team of computer security talent devised a cunning plan to set up a "honeypot" (it being 2002 --- oh wait) and then challenging the shadowy hacker underground to recover "a document" from it. Yeah, I'm sure the Advanced Persistant Threat guys writing zero-day browser malware are gonna get right on that.

<comment><USER3> Yet another PR submarine (press release masquerading as a story). Surprising that The Economist fell for the "we held a hacking contest and no one succeeded" story, but maybe the reporter is new.

The "honeypot" is the extremely thin tidbit that "whoa, there are hackers in Brazil!" The rest is about how their product can handle opening attachments from lots of self-selected challengers without compromise.

Blast from the past: remember the 1995 Sidewinder hacking contest? At least that was a product somewhat deserving. 15 years later, we're still seeing the slow roll-out of MAC in commodity operating systems.

<comment><USER4> Sidewinder...now there's a name I haven't heard in a while.

The Economist fell for the PR submarine because Infosec is completely outside of their realm of knowledge. The "story" sounded intriguing and would get them views.

</comment></comment></comment><comment><USER5> I'm surprised anyone even bothered. A "challenge" from some no-name security company isn't exactly going to bring out the best and the brightest.

<comment><USER2> The value of a reliable mass-market zero-day exploit may be in the high tens of thousands of dollars before you start overtly breaking the law, so the notion that _any_ company is going to get actionable intel from a 'hacking contest' is... naive.</comment></comment>


Show HN: Aura – Machine Learning-driven mindfulness program - <AUTHOR> http://aurahealth.io/#home <comment><USER2> Very interesting concept. I meditate regularly and would love to fit this into my morning routine

<comment><AUTHOR> Thanks, very excited for you to try it!

</comment></comment><comment><USER3> Love the simplicity of this, looking forward to using it this week. Thanks!

<comment><AUTHOR> Thank you, enjoy :)

</comment></comment><comment><USER4> Design looks awesome man, very interested in the ML portion of this</comment>


One of the Biggest Bitcoin Exchanges Just Added 100,000 Users in a Single Day - <AUTHOR> https://www.bloomberg.com/news/articles/2017-11-02/bitcoin-exchange-added-100-000-users-in-a-day-as-price-exploded <comment><USER4> As someone not invested in any of this at all, its fascinating to watch as people jump in completely oblivious to risk involved.

I've listened to friends and family discuss investing "only $100" or "only $1000" for fractional amounts of bitcoin with the idea that they're sure fire bets for making money.

I feel a bit like a rube sitting it out on the sidelines (and they're chastising me for not acting) as the price keeps going up-and-up and for most of them, these small investments (some quite large) have paid off for them.

When does this bubble burst? And, what is it going to look like? 100k people in a single day is crazy to me as a layperson, but if this was to be compared to a stock run (disregarding dilution) what type of alarm bells should be ringing for those with the most to lose? Or, are we past that point now?

<comment><USER5> I haven't been convinced that this has happened before, so other than "not diversifying is dumb," anybody that says with any authority "you should not be investing a small amount of money in cryptocurrency" has an equally strong argument as someone that says "you should be investing a small amount of money in cryptocurrency."

I say as long as you follow centuries-old investment advice (diversify, always have a backup plan, have enough cash for a crash), there's no reason not to explore a new investment instrument. AKA, "fuck it, why not?"

Depending on how much you make I don't see why not invest "only $1000," as long as your other tested investment instruments are already qualified (emergency savings, 401k/roth/whatever, stocks, bonds, int'l investments).

<comment><USER6> gambling is gambling. if you want to gamble for fun then by all means enjoy yourself. but don't pretend it is an "investment."

<comment><USER7> But not all gambling is "gambling": Insurance is gambling, for example. Picking mutual funds and ETFs for your retirement plan is gambling.

"Gambling" has connotations of immoral behaviour, especially in zero-sum or always-lose scenarios like poker and casinos. I don't think it's fair to describe educated and informed investment or buy-ins with words like that. I think "risky venture" is a less loaded, more neutral, term to describe it instead.

As it is, I don't see Bitcoin and other currencies as true investments - <USER2> yet - I see the surge in Bitcoin mainly as a "distributed Ponzi-scheme" instead: those who are cashing-out now are those who bought-in early and being paid by the people buying it now - and the people buying it now expect more other people to buy into it later, pushing the price higher while supply and availability dwindle (owing to BTC's 28M cap). However, unlike a Ponzi-scheme, Bitcoin, Ethereum and others do have utility as a means of moving money around independently of existing, often state-controlled, bank networks or remittance services - and eventually Bitcoin will be the tool of choice for that - <USER3> when the tens of millions of people wanting to move money around do so is when we will know the real, unhyped, value of Bitcoin - until then, the question is if $7,000 USD/BTC is an obscene over-valuation, or is still comically low - and I don't know which side to believe.

We'll get a better idea when, or if, legacy companies like Western Union and SWIFT get involved - or when real-time BTC transactions cost less than a VISA or Mastercard transaction (say ~3%). Right now a 250 byte transaction will cost 54,240 satoshi ($3.83) and take 30 minutes to get the first confirmation - making it totally unacceptable for retail purchases, for example. Hopefully when the Lightning Network or other solutions get finalized we'll start to see some real traction, but how many bubbles will burst before then?

(Disclaimer: I'm a HODLer of BTC and ETH).

<comment><USER8> >"Gambling" has connotations of immoral behaviour, especially in zero-sum or always-lose scenarios like poker and casinos. I don't think it's fair to describe educated and informed investment or buy-ins with words like that. I think "risky venture" is a less loaded, more neutral, term to describe it instead.

This is not a repeat from every bubble ever. This time it's different!

<comment><USER9> All GP is saying is that some gambling, such as on casino slot machines has a mathematically defined (and legally regulated) payout of less than 100%. Same for state lotteries.

Bitcoin may well be in a bubble, but it isnt mathematically and legally guaranteed to decrease in value overall as compared to what most people consider traditional forms of "gambling".

</comment></comment></comment></comment></comment></comment><comment><USER10> I'd be curious to know at this point what amount of bitcoin transactions are actually retail focused. There was a big push a couple years back by users wanting to make actual purchases with bitcoin and helping to build the infrastructure around that. Does this retail side of bitcoin still exist, or is everyone just mining and selling -> buying and holding?

<comment><USER11> As far as I know, most Bitcoin transactions take ~10mins to get confirmed, so I'm not sure the current infrastructure would work for retail.

Admittedly I don't know what would need to be changed to speed up transaction confirmations to the point where you could use it in retail situations.

<comment><USER10> When I say retail I mean things like buying steam games or buying web hosting, not actual brick and morter store purchases.

<comment><USER12> You can buy games on Steam with Bitcoin.

[https://www.theverge.com/2016/4/28/11525482/bitcoin-steam- va...](https://www.theverge.com/2016/4/28/11525482/bitcoin-steam-valve-bitpay)

</comment></comment></comment></comment><comment><USER13> "I can calculate the movement of stars, but not the madness of men,"

\- Newton after he lost everything investing in the south sea bubble for a _second_ time, just before it popped.

This has gained mainstream attention and no-one knows what they're investing in any more, there is no there there to justify the price. Consider the trajectory of chain - a bitcoin startup that has gone from being about bitcoin to about block chains to about distributed ledgers to being about distributed applications (note these last things don't care what they're denominated in).

A founder wrote one of the best write ups of this space I've seen, and even he is pretty skeptical:

[https://blog.chain.com/a-letter-to-jamie-dimon- de89d417cb80](https://blog.chain.com/a-letter-to-jamie-dimon-de89d417cb80)

All it needs now is for ordinary people to get nervous and start trying to realise their gains all at once for prices to plummet once again.

</comment><comment><USER14> One bitcoin transaction already now uses as much energy as your house in a week. I really have trouble seeing how this can scale in the long run?

[https://motherboard.vice.com/en_us/article/ywbbpm/bitcoin- mi...](https://motherboard.vice.com/en_us/article/ywbbpm/bitcoin-mining- electricity-consumption-ethereum-energy-climate-change)

Bitcoin - The new coal

<comment><USER15> This has been my issue from the start. I generally feel like I've missed a boat I certainly could have gotten on to early enough, But it's so terribly wasteful, I have a hard time supporting the thing at all. Admittedly I don't follow the subject very closely, but I haven't seen this argument mentioned nearly enough.

</comment></comment><comment><USER16> My dad just texted me today asking if I owned bitcoin and if he should pick some up. I described it as uninsured highly volatile fine art(can be destroyed/lost) with a huge counter-party risk if he doesn't have the technical ability to store his own coins. Does anyone out there have a better analogy to scare family/friends away from it?

<comment><USER17> Why are you trying to scare them? Just explain to them that it is high risk.

But there is a strong potential future for btc, and in spite of all the fear mongering, BTC has so far come back from every crash. You're not just throwing away money if you spend a couple hundred of your otherwise disposable income on some btc. Buying at any point in the past would have yielded a payoff today.

<comment><USER5> Can people elaborate why they are downvoting this? I hold a similar opinion - as long as your other investment instruments are intelligently diversified and filled-out, why not spend a small % on bitcoin? As nnfy has said, _any_ amount in the past would have yielded payoff today.

"But a crash!" is not an argument alone. Every single other investment instrument I'm aware of has had a crash.

<comment><USER18> Investing in Bitcoin to diversify is fine. Buying Bitcoin because it's been rising? That's the definition of speculation. Most people are not qualified to be speculators because they are insufficiently critical. It's easy to imagine potential, and difficult to gauge risk. See also "most investors lose money".

</comment></comment></comment></comment><comment><USER19> I've got my popcorn out.

I keep encountering more and more everyday people who are investing serious money in Bitcoin. Uber drivers, barbers, baristas.

<comment> 52-6F-62 I'm not into FUD because I like the technology and I have money in it -- but come mid-month you might see some heads turn at the 2x fork. I haven't been following closely to what community tone seems to be, but if there ends up being a sudden correction because of the split, it will be interesting to see what happens. It bodes well for the tech itself, but it might shake a few weak hands pretty good. Especially if they're just getting in now...

</comment></comment><comment><USER20> I've tried opening a business account. I provided all of the required documentation weeks ago (probably more than a month ago). Still not able to trade. I entered a help ticket a week or so ago and just got a response that they are very busy... Still waiting.

</comment><comment><USER21> I'm curious and I can't work out how to phrase this as a Google search, so I'm hoping someone smarter than me can answer this:

At the moment we refer to BTC as being worth $xUSD, but without another currency to compare it to, is it worth anything? Or is it just not designed to be used in isolation?

</comment><comment><USER22> That's a lot of users. How many of them are distinct human beings? How would that be verified?

<comment><USER23> Probably a tiny fraction. I'd guess that an algorithm recognized that buying 100 Bitcoin spread across 100k accounts is better than from 1 account.

<comment><USER24> You need ID verification to trade on the account, I dont think you can make 100s of accounts for one trader

<comment><USER23> That's interesting. I thought the Bitcoin folks were all about anonymity.

</comment></comment></comment></comment><comment><USER25> Coinbase so dominates cryptocurrency accounts in the US they should just have a way to do internal $ payments between accounts without going through any blockchain. Would be much quicker and cheaper.

<comment><USER26> Yeah, only apply the transaction to the block chain when it leaves their system, e.g. PayPal.

</comment></comment><comment><USER26> I'd rather endure the FOMO when I don't understand its value than lose money when I had my doubts. Feels like it'll be the former for a while...

</comment><comment><USER27> So are they truly 100,000 distinct users or just 20 users creating 5,000 accounts each to create a money laundering machine?

</comment><comment><USER28> Trading volume of bitcoin from last 24h is almost 1.7 billion dollars. I don't remember to see it that high.

Bitcoin just hit 7000 dollars.

</comment><comment><USER29> writing is on the wall gentlemen.

</comment><comment><USER25> I want to make some money buying bitcoin it just keeps going up! Which is the best exchange I should use? Is Coinbase best?

<comment><USER30> Two tips:

1\. Don't keep your BTC in any exchange account for very long, and check the popular forums for people complaining about transactions being held up before transferring BTC into your account. Lots of people got screwed by MtGox, and it can happen on any exchange.

2\. Don't spend any money other than money you would be willing to give away for free (totally discretionary money). The bottom has fallen out of markets before, and BTC is not immune. BTC has a lot of similarities to tulips, houses, Beanie Babies, and .com stocks in the late 90's.

<comment><USER5> Hmm, I have a problem with comparing BTC to tulips, houses, or beanie babies, because there never was a powerful and active market for exchanging beanie babies for real world product (i.e. functioning as currency) as we have seen for BTC and buying drugs or software. I also don't like the comparison to .com stocks because those are already an instrument (stocks), which represent company values, and the collapse of an industry doesn't necessarily reflect upon the likelihood of an entirely new investment instrument collapsing.

I would think maybe a comparison to other forms of currency would be a better metaphor - i.e. gold or something. Inherently value-less (gold is pretty and historically been used for currency, that's about it - it's not traded as a commodity for its usefulness as a raw good like Oil or whatever) but still valued.

<comment><USER30> I didn't say they were identical, but there are some important similarities:

To tulips and beanie babies: There were direct substitutes (other flowers and other stuffed animals) in terms of the actual utility, but tulip prices shot up in 1637- even investors bought tulip contracts not because they needed them, but because they were speculating on the value. Eventually demand leveled out, and the prices stopped going up. When the prices stopped going up, the speculators got out, and prices went down fast. The premium status of being the preferred flower or the preferred toy didn't help any more. How could this be like BTC? There are cryptocurrencies that are direct substitutes like LTC, but BTC is preferred and has a lot of investors purely for speculation. Once demand levels off (it must, there are a max of 7 billion people that can buy it), the speculators will get out, and prices will come down. Why hasn't it happened yet? BTC is artificially scarce due to block difficulty increases and fixed BTC being added for each block. The limited supply is maintaining price support for now, but like I said, once demand levels off, the fixed supply won't be as big of a price driver.

Similar to houses and .com stocks: Houses have real utility (you can use it for shelter). Stocks have real utility (you own a piece of a profit making entity). BTC has some real utility (you can transfer wealth outside of the regulation of governments and banks). However, these bubbles happened because instead of trading on a firm foundation value, people started expecting profits. The castle in the sky theory does work, but only if enough people believe in it. Once confidence faltered (either that people would continue to buy houses or that .com stocks would continue to print money), the castles in the sky fell, and prices fell back to their firm foundation value (a house in Las Vegas that I looked at went from $400k down to $100k- basically the price of raw materials and cheap labor). BTC's price right now is WAY over it's firm foundation utility of being a wealth transfer vehicle. It does have some value, but if enough people decide that a couple other cryptocoins can do the job with less risk than BTC, then prices for BTC will go down to it's intrinsic value- mostly related to the price of energy. It's hard to tell where this will settle, because ASICs are getting more efficient, and the block difficulty changes. But I guarantee you it will be way under $6k.

So these things aren't exactly the same, but there are lots of similarities with previous bubbles in the past. I'm not saying to stay away from BTC, but you had better be willing to lose your investment. There are a lot of people in the market that are only looking for a quick buck, and if they get out before you do then you are going to lose most of your investment. If you aren't desperate to make money off your investment, you will be happy with closing a position early instead of riding the crash into the ground. Closing early makes you the person with the quick buck and makes someone else the fool that lost their shirt.</comment></comment></comment></comment>