BBC podcasts on third-party apps - open-source-ux http://www.bbc.co.uk/blogs/aboutthebbc/entries/d68712d7-bd24-440f-94a0-1c6a4cdee71a <comment><AUTHOR> This is hilarious. Google is trying to leverage it's search & mobile OS market positions into pushing people towards its podcast app. Unfortunately for Google it has come up against one of the few entities in the world that can just turn around and say "Fuck. That."

Frankly, I think this is a monopolist tactic from Google and it should result in government investigations but I have no hope that will happen. Nice to know people like the BBC have the balls to say no to this though.

<comment><USER2> Actually there is a problem with the BBC.

In the UK how do you compete for news eyeballs and try and make it pay when the BBC news is for free?

Imagine your business is weather forecasting, the same applies.

Then there is the small matter of the license fee. Most people just pay it out of fear of being caught by one of the legendary detector vans. But you can't have a TV or a monitor that also does TV without being hassled for the rest of your days.

It is getting that way online. I only listen to the BBC on DAB radio, if I sign in to their player thing I know I can't trust myself not to watch some lame series on iPlayer meaning I will have to pay up.

The BBC has an important propaganda role in informing the national conversation and keeping British people British. I am not saying that cynically, that is what the voice of empire is there for. They aren't trying to sell you product, it is more subtle than that, essentially propaganda though, controlling the latitude of available thinking.

They need to be more careful about closing down their reach as people like me go off-piste and start listening to stuff that would never make it onto the BBC. Once you have done that and realise the world thinks differently to the allowed BBC viewpoints there is no going back.

I don't see this as the BBC standing up to the monopolistic evil Google, I also think the BBC are not whiter than white.

<comment><USER3> Hassled for the rest of your days is a bit much. You email, send them a letter or call them or I think there is actually a website that you can register on which remove's them questioning you needing the license or not. I did it and i've not heard from them since. Not exactly rocket science.

<comment><USER4> >You email, send them a letter or call them or I think there is actually a website that you can register on which remove's them questioning you needing the license or not. //

They used to send a postage paid envelope, and you could return their "you're a criminal" letter indicating that in fact their supposition was incorrect.

Now, they don't include an envelope IIRC, certainly not postage, so you have to pay [a small amount] every time they decide to accuse you falsely of being a criminal. I'm against that in principle.

So, I thought, I'll waste my own time and go online and fill out the form ... except they demand additional PII from you. Which I'm not happy about giving to Capita, and shouldn't need to, name and address should be sufficient for the legal purposes here.

Thus, we're left waiting for them to make the next move. Which they did, they sent someone around: I stated we didn't watch broadcast TV and don't need a license. They went away.

So, that's the end of it, right?

Nope, they sent two people the next time, who asked for my wife (clue: license fee is payable against premises), didn't show ID, nor identify themselves in any way. When asked they said they "needed to come in" to check we didn't have a TV, they have no need to and no legal right of access [without a warrant]. When I made the same statement as before "we don't need a license ..., not using your services" they threatened "we'll just keep coming".

Great huh.

What really grates with me is that you have to register your details to even use the services on iPlayer now, so they would see clearly at the BBC end that we've stopped using their service.

So, they presumably will continue to waste money until we get an injunction against them for hassling us.

</comment></comment></comment></comment><comment><USER5> Technically speaking the way Podcasts work is a fascinating thing.

Most on HN May be familiar with this already but Podcasts are completely open and a creator simply publishes an RSS that they then provide to a podcast App such as iTunes so it can appear on the Apple podcast app. In exchange most of these podcast apps share any listen counts and analytics with the owner of the Podcast. However, almost always the files are hosted by the owner so the plays could also likely be counted that way. Even the artwork and everything is provided with this RSS that is completely open.

More and more platforms are popping up creating "exclusive" podcasts and trying to close the ecosystem down. Not sure if that's what is happening here, it's unclear from the article, but just think Podcasts are one of those last few technically open things on the internet and that's great.

They are so open in fact I was planning on adding them to my audio App I've been building which lets people listen to any article right now. The more this closes up the less of an opportunity for people to create useful things and for people to find new ways to stay informed.

As a shameless self promotion if your interested in having articles read to you on the go try my app [https://articulu.com](https://articulu.com)

<comment><USER6> Admittedly I don't consume a massive amount of podcasts but I don't have a problem with this move towards a more closed platform. If people want to make money from their work as podcasters they basically have three possibilities: beg for donations, ad tons of ads before, after and often in the middle of the podcasts or move to a subscription model (which means the podcast is no longer available for free).

Since I vehemently despise ads I have no issues with the subscription model as long as it remains convenient to play the audio any way I feel like (i.e. no intrusive DRM).

So I actually think that's a good evolution overall, I wish more of the internet moved away from ads and towards other monetization models.

For your audio app I suppose that it'll mean that you'll have to strike a deal with the podcast platforms to share some of the revenue or figure out an API to let people use their license keys on third party players. I understand that it's annoying but that sounds perfectly fair to me.

<comment><USER7> I subscribe to Giant Bomb (a video games website) and they have a premium tier for content.

The podcasts are available for free, but funded by ads, or you can subscribe to the premium feed where the ads are edited out.

<comment><USER8> Ah good old videogames.com.

Yeah premium podcasts are already a thing. There's no need to "figure out an API to let people use their license keys on third party players", it's simply HTTP Basic authentication embedded in the URL. Should work just about anywhere.

<comment><USER9> I'm also a premium subscriber; while they used to use basic HTTP auth, they've since switched to generating revocable, per-user keys. It's both better for security and easier for podcast clients to manage.

<comment><USER10> By "revocable, per-user keys" do you mean each user is given a unique URL to download premium content from or is some type of cryptographic DRM being leveraged?

<comment><USER11> I'd imagine it's a token in the request headers

<comment><USER12> I doubt it's request headers since that would require the podcast player to set them. Putting it in the URL itself would make it work with every player on the planet.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> While Google & FB gobbled up the juiciest chunks of online media, podcasts have somehow remained one or of the freeiest media, imo working like the open web was supposed to.

Ooh, it's kind of surprising. Discovery is still clunky. Getting from website to subscribed can be clunky. It's not interactive or conversational. Advertising is tricky. Podcasters generally have to negotiate deals separately. There are no clicks and podcasters can't really do the ad targeting that makes most online ads valuable. There isn't a deep analysis of pauses and abandons, like in google.

OTOH, there are no content policies. No "demonetization." No spying on consumers. No clickbait. No seo... and for the most part no rulers.

Even the clunkiness of discovery is half-feature. You ask friends what they listen to, and that mode of slow-and steady distribution makes for better incentives.

Meanwhile, Google and the like look at podcasts and see a piece of unclaimed territory like late stage empires and an island that wasn't worth bothering with 100 years previously.

<comment><USER14> I agree completely. I'm a big podcast fan, for many opposite reasons I don't use social media.

Podcasts remind me of fanzines. Which is a great thing.

</comment></comment><comment><USER15> Google Podcasts won't let you add or remove podcasts subscriptions unless you turn on location and web history tracking on your account.

<comment><USER16> Really? That would be disqualifying properties for me personally. What advantage does their service offer?

<comment><USER17> So far, none. Google podcast is pretty basic (feature-wise) to be honest. But being forced to give access to location and web history was a big turn off to me. However I found PodByte on the PlayStore that fit my small podcast needs without giving away all my personal data.

</comment></comment></comment><comment><USER18> I don't know why BBC pushes it's sounds app so hard. I get nagged to use it every time I listen through Alexa too. There's no BBC sounds smart speaker so why do they care? What do they gain from me using the app?

<comment><USER19> Because when you use their ecosystem, they get user data. They acknowledge that in their blog post:

> We also want to make our programmes and services as good as they can > possibly be - this means us getting hold of meaningful audience data.

They claim it's because they're a public service and need to know what the public want, but there are other ways, and I'm torn on if it's a legit case or not. NPR has been trying to up use of NPR One for what I assume are similar reasons, but haven't gone the way of shutting out listening sources yet. Instead, they propose a standards [0] to do it from the listeners, and it's showing no signs of success.

0\. [https://www.npr.org/sections/npr- extra/2018/12/11/675250553/...](https://www.npr.org/sections/npr- extra/2018/12/11/675250553/remote-audio-data-is-here)

<comment><USER20> Which is a lie. Podcasts are played directly from the source, meaning they have the stats already. The only thing they may not know are subscription rates.

<comment><USER21> I use Podcast Addict on my Moto and gpodder on Linux. In both cases I have a massive subscription list that downloads episodes daily. The server that supplies them knows only that I downloaded it, not whether or not I actually listened or that I listened to a few minutes and then abandoned the episode.

The purpose is to have a wide variety of material to listen to in my car (via Bluetooth) in which I do not have a data connection.

<comment><USER22> So probably volume of downloads is an excellent, but somewhat ambiguous indicator of audience. Unless you continue to download podcasts that you listen to for a few minutes then abandon - but that would probably make you as much of an outlier as someone who downloads once, but copies the episode for someone else.

</comment></comment></comment></comment></comment><comment><USER23> While I understand the objections to Google self promoting their products and masking audience data I don't see how removing their podcasts from one of the most popular platforms helps with what the BBC claims to be important.

"What we think is important is pretty simple. We want people to have easy access to the wide range of BBC programmes, not just a select few, and be able to discover and listen to new ones really easily."

Cutting off your audience potential to understand your audience better is some kind of broken logic. The comments section highlights that their own audience generally does not accept their reasoning.

<comment><USER24> Wasn't this in the article - searches for BBC content is going to Google not the BBC. If they remove content from google, searches will go to BBC where they can display more than the limited range Google show.

<comment><USER23> Then I think they misunderstand how some of their audience uses technology. I search for podcasts in my app of choice (which happens to be google's product). And even if I didn't I am not going to start using another app, that I don't like as much, just to listen to a BBC podcast.

</comment></comment></comment><comment><USER25> [https://podnews.net/article/bbc-blocks- google](https://podnews.net/article/bbc-blocks-google) has more on this.

<comment><USER26> From this article:

> Talking to Podnews, a BBC spokesperson said that Google is required to sign > a licence to link to their podcasts; and that the Distribution Policy also > requires Google to supply user data to the BBC. There has been a > "consultation with Google", and the BBC "has no choice but to stop Google > from making podcasts available via Google products."

> However, Ofcom, the UK media regulator, requires that "the BBC must offer > the public services to third parties in response to reasonable requests for > supply, except where the BBC has an objective justification for not doing > so. In offering the public services for supply, and in supplying those > services, the BBC must act on a fair, reasonable and non-discriminatory > basis." (¶3.3.2).

> In recent months, the BBC have been removing some of its podcasts from > third-party platforms, and placing them exclusively within their BBC Sounds > app. BBC podcasts are supported by advertising outside the UK, though BBC > Sounds remains unavailable to non-UK listeners.

</comment></comment><comment><USER27> Having worked at the BBC several times it's yet again insular thinking. In short, they've spend a load of (wasted cash) on a proprietary app that is useless, but some "strategy" dork - who's never actually built anything - thinks he can get Google to change. Good luck with that.

<comment><USER28> The thing is, generally, they iterate quickly and it becomes less crappy over time. This has happened with lots of their products. Everytime the News frontpage got changed everyone lost their shit, however if you look back now at the older designs you see it was a falacy holding on to them. I'm not saying Sounds is perfect (there's been some vitriol), but it wouldn't be out of the ordinary if it improved based on feedback.

(Also an ex-beeb employee)

<comment><USER27> BBC news is separate division and has a strong leader (like sport). BBC design is obsessed with making everything look the same, it's been going bland for years. BBC3 was another missed opportunity like this one. The walled gardens have already been built.

</comment></comment></comment><comment><USER29> I tried a few podcast searches through Google chrome desktop and Android and I don't really see what the big deal is. The first search result link is the podcast website, and the top few buttons integrated into the results page are just listing episodes and series and such, the same way done for movies, books, etc.

<comment><USER30> In fact, it's what Apple doesn't as well

[https://podnews.net/article/bbc-blocks- google](https://podnews.net/article/bbc-blocks-google)

So why are they calling out Google specifically? And what results would they prefer?

<comment><USER31> Their comparison to and discussion of the iPhone behaviour seems to be quite disingenuous to me: The iPhone search searches websites and your phone. Apps that you have installed on your phone can register to provide search results.

If you don't have Apple Podcasts installed, you won't get any search results for "Apple Podcasts" (I tested this). And if you have another podcast player installed that supports iPhone-wide search (e.g. Overcast), you will get search results from that other podcast player.

This seems to me to be quite different from the Google search, which (from what I understand from the articles) _always_ seems to link to Google Podcasts if you are using it on Android.

<comment><USER30> I never installed Google Podcasts on my Android device. I just tried searching for BBC Podcasts on my Android and I didn't even get a link to play anything on Google Podcasts. My results were mainly Wikipedia pages and the homepages of the podcasts themselves on bbc.co.uk, and even BBC's Sounds website, which they claim Google is hiding.

[https://imgur.com/oiFQLXj](https://imgur.com/oiFQLXj)

[https://imgur.com/UbacU32](https://imgur.com/UbacU32)

</comment></comment></comment></comment><comment><USER32> I listen to all the BBCs podcasts through the Apple Podcasts app. Is there something that stops the Beeb getting meaningful statistics when it it is played via Google, but allow it to get those statistics when played via Podcasts.app

I find this story quite confusing.

<comment><USER33> Apple's podcast app may have a fancy storefront for discovery but is fundamentally just a normal, not special at all RSS based podcast playing app that works exactly as podcasts were intended to.

Google have smooshed their player into google web search results so that you will probably visit Google's podcast player instead of going to the content producer's website.

Apple: normal podcast player app.

Google: abusing their search monopoly.

</comment></comment><comment><USER34> A lot of the comments on the page address the fact that the BBC sounds app isn't available outside the UK so switching isn't an option. That seems like a pretty serious oversight...

</comment><comment><USER35> Ah, that explains why I had a complaint from the wife that she wasn't getting new Archers episodes.

(The Archers is a long running (since 1951!) BBC Radio 4 soap opera about a fictional farming community. There are a lot of people addicted to this, including the wife.)

I had to avert this disaster as a wife with no Archers isn't worth contemplating, so I installed the BBC sounds app instead. It was my thought that the BBC pulled the content from google to get people using the BBC Sounds app instead.

The BBC Sounds app works, but it is a pretty terrible podcast app (2.2/5 stars on the Google Play store), it doesn't download and queue things, or let you order them etc.

<comment><USER36> I've not installed it becuase they ask for my email address and post code to sign up. Why? They don't need it. If I'm listening from Europe BBC Sounds just works, so it's not a technical limitation.

And the "Why do I need to sign in?" page is evasive. Why is it compulsory? What are they hiding?

[https://www.bbc.co.uk/iplayer/help/how-to-guides/sign- in/acc...](https://www.bbc.co.uk/iplayer/help/how-to-guides/sign-in/account- signin)

And this "Why" page doesn't even make an effort.

[https://www.bbc.co.uk/usingthebbc/why-we-are-asking-you- to-s...](https://www.bbc.co.uk/usingthebbc/why-we-are-asking-you-to-sign-in)

I don't think there's some secret conspiracy. I am a great supporter of the BBC.

But the way "TV Licensing" behaves (operated by a Capita) is so breathtakingly and openly dishonest and opaque, there is no trust left.

</comment></comment><comment><USER37> What's going on exactly? I subscribe to a few BBC podcasts on a podcast app via RSS.

Is that going?

<comment><USER7> Some podcasts are exclusive to BBC sounds for a time limited period.

<comment><USER38> > BBC sounds

A new program being forced down listeners ears

[https://www.theguardian.com/media/2019/jan/20/bbc-sounds- app...](https://www.theguardian.com/media/2019/jan/20/bbc-sounds-app-angry- listeners-complaints)

.... One typically indignant fan, Nigel Metheringham, tweeted: "Bring back (the podcast) #Fortunately to an open feed, rather than using it to prop up a shoddy service."

The loss of this favourite podcast to anyone who downloads from other sites, such as iTunes, or for listeners living abroad, has now exposed much wider dissatisfaction with BBC Sounds, which is receiving low scores on app-rating sites. Criticism focuses on the lack of a sleep-timer function for Android devices, a failure to reliably display track names, the difficulty of sharing content, on claims the search function is ineffective, and on the limited menu of content from other podcast providers.

....

</comment></comment></comment><comment><USER39> Nice to see the beeb telling Google to "get in the sea". On a tangential, but not unrelated note, I'm kinda frustrated with the way podcasts are increasingly being distributed these days. So many sites push their content out to the likes of Stitcher or iTunes or some other third party service that try and force you to use an app or their crappy website. In many cases the option to download just the raw MP3 has quietly disappeared.

Just let me download the fricken MP3, I don't need some stupid ad plagued spyware to listen to a podcast. I realise sometimes this can be about monetising your content to help pay for production costs. But you know what? I'm happy to pay, and already do to some folks via Patreon/Paypal etc. Just don't force me to jump through hoops to eventually locate the raw MP3 that I can listen to on my own terms.

</comment><comment><USER36> I use [https://antennapod.org/](https://antennapod.org/) . It's excellent, open source and works with BBC Podcasts (for now).

If Android users can't choose independent software to listen to podcasts that's too bad.

(It uses the iTunes database apparently)

</comment><comment><USER40> I'm somewhat unsure what they actually changed, I'm really hoping they didn't just abandon the RSS feeds.

As of 9:20 Eastern, I don't yet see the second release of BBC global news that I would expect to see for yesterday, which does not bode well.

If you take away RSS, it's not even a podcast anymore.

<comment><USER30> According to various news sources they just changed robots.txt. I can't confirm that myself right now.

[https://www.theverge.com/2019/3/26/18282436/bbc-podcasts- goo...](https://www.theverge.com/2019/3/26/18282436/bbc-podcasts-google- assistant-home-block)

EDIT: Here's the robots.txt file:

[https://podcasts.files.bbci.co.uk/robots.txt?utm_source=podn...](https://podcasts.files.bbci.co.uk/robots.txt?utm_source=podnews.net&utm_medium=web&utm_campaign=podnews.net:2019-03-25)

</comment></comment><comment><USER41> Anything that isn't an RSS feed that serves MP3s, and therefore can't be synced to an offline media player, isn't a "podcast", and shouldn't be called such. If they can just remove their show feed from Google's program, then it's probably not an open/standardized RSS feed, and Google's program probably isn't a podcast program as we know it.

Podcasts are great because they're essentially open and standardized, and I can sync them with bloated desktop programs like iTunes, FOSS programs like Antennapod, or even command-line interfaces like Newsboat. DRM and arbitrary gating of media behind proprietary technologies just makes it worse and blocks it off from so many people.

</comment><comment><USER42> If anyone is on android, I would like to recommend a podcast player that is in no way affiliated with google, is open-source and good

Antenna pod -- [https://antennapod.org/](https://antennapod.org/)

Google play page -- [https://play.google.com/store/apps/details?id=de.danoeh.ante...](https://play.google.com/store/apps/details?id=de.danoeh.antennapod&hl=en)

Github -- [https://github.com/antennapod/AntennaPod](https://github.com/antennapod/AntennaPod)

It uses RSS and open standards, has all of the podcast playing features like 2x speed, sleep timer auto download etc.

</comment><comment><USER43> This is all just about adverts. The BBC is gearing up to include ads in podcasts served to users outside the UK (some of you might have noticed them on their podcasts, I've heard them on a few episodes/podcast with no discernable pattern [they might be A/B testing]). The BBC needs listening metrics for this to be the extra revenue stream they hope for as well as being able to change out the ads for individual streams.

</comment><comment><USER44> Why was the title changed to something with a misspelled/wrong word "it's" that makes it hard to read?

</comment><comment><USER45> I listen to a lot of BBC content, from their website, and it's not great to say the least. Some require to listen in their _sound app_ (player on the web), some permit to download the audio file, none display a RSS link, and finally they usually do not grant access to their archives.

</comment><comment><USER46> ITS (possessive)

Not "IT'S" (pronoun + verb)

<comment><USER47> Noticed that too. I think the trend for excessive apostrophes can't be stopped.

</comment></comment><comment><USER48> I searched for a couple podcasts on desktop but didn't see anything. So I searched for a podcast on chrome on android and this seems to be what BBC is complaining about: [https://imgur.com/3IYpAsX](https://imgur.com/3IYpAsX)

</comment><comment><USER49> Shame the BBC Sounds app doesn't support casting though, instead telling people to just ask their smart speaker to play the BBC podcasts directly.

I sympathise with their decision, but it doesn't seem a very joined up one.

<comment><USER50> Which they now can't do...

</comment></comment><comment><USER51> I was wondering why The Infinite Monkey Cage was missing from my Google Podcasts app this morning. This might force me to find a new app to use.

Additionally, I fully support the move that the BBC made.

</comment><comment><USER52> You can't monetize the network.

</comment><comment><USER53> Wait, there are podcasts and podcast players that don't use RSS?

Why would anyone do that?

<comment><USER54> >podcasts

They say it quite clearly in the article. They want to collect personal data from users.

>podcast players

I assume so they can easily censor podcasts they disagree with politically. There was a big scandal a few months ago with several large sites removing access to Infowars podcasts simultaneously.

At the end of the day, it's all about having more control over users.</comment></comment>


Nanoc: a Ruby site compiler that generates static HTML - <AUTHOR> http://nanoc.stoneship.org/

<comment><USER2> Seems to be thoroughly identical to Webby: <http://webby.rubyforge.org/tutorial/>

Or am I missing a trick?

<comment><USER3> And Jekyll

<http://github.com/mojombo/jekyll>

is static site generation a big pain point for a lot of people?

<comment><USER4> That is the part I'm not understanding. What does using one of these "static site compilers" save me from?

I guess being able to use layouts that get "baked" into each of the final static HTML files would be handy.

<comment><USER5> Mostly it takes you from thinking 50 requests per second is pretty good to being annoyed that you are only pushing 10,000 per second. It also tends to fail a whole lot less.

<comment><USER6> And hosting it for free at Github.

</comment></comment></comment></comment></comment><comment><USER7> Let's also not forget StaticMatic <http://www.staticmatic.net/>. It has great support for HAML and SASS.

A helpful tip with for all of these static generators - if you need PHP or other code, just put it in the static HTML and have your deploy script rename the files to .PHP before rsync'ing them.

<comment><USER8> Regarding your PHP 'tip', that kinda makes the whole point of using a static generator in the first place a bit useless. And when you decide to do it anyway, configure your apache (or whatever you like) to parse .html as php.

<comment><USER7> It doesn't make it useless as all of my site is static except the contact form. To utilize another option just for a few lines of code in a contact form didn't seem practical to me.

I'm sure open to suggestions though.

Thanks for the tip on configuring Apache... I may look into that next time. I've got my .htaccess set to rewrite the urls to extensionless, so it didn't make too much of a difference.

</comment></comment></comment><comment><USER9> Interesting yes, but dynamic to static generators/caches are plentiful. Almost every framework/cms has something like this. I'm the current maintainer of Boost - file caching for Drupal. IMO Boost offers more to the site admin then Nanoc: it supports Apache, Nginx, Lighttpd, & IIS; Caches HTML, XML, CSS, JS, & JSON. In a test, the Nginx version of Boost is faster then Varnish. Boost is also tightly integrated with Drupal, offering smart flushing of the cache and a multi process crawler.

Nanoc in comparison seems to add more administrative overhead to your sites work-flow; it should try to be smarter to make the web admins life better. Also, not having a dynamic language on the web server severely limits what's possible; a simple contact form has to be handled separately, thus making any site built with this even more complicated IMHO.

</comment><comment><USER10> I don't understand why we need to "compile" everything, computers are fast. I made/use Simple Web Schema (<http://bennewhouse.com/open_source/simple_website_schema>) which generates pages on the fly from an XML document using PHP - sounds nasty but it's quite elegant (imho). It does require PHP (and what cheap hosting doesn't provide PHP?) and response time for a reasonably sized site (mine) is around 7ms single threaded, and scales well because no locking is needed - no compiling needed.

<comment><USER11> One of the most successful projects I worked on used static HTML generation. It was a company-wide system status site, so it needed to be up no mater what, no matter what type of issues we were experiencing. Using this approach we didn't have to worry about database issues or anything. Just static HTML hosted by a CDN offsite.

<comment><USER10> Hmm yeah, my stuff doesn't use a database either (it uses XPath and DOM/XML doc). Is it standard for CDNs to run anything beyond a naked apache instance (like mod_php)?

<comment><USER11> It seems like a giant can of worms to introduce mod_php. Do you allow sessions? Replication? How do you handle caching? These are non-trivial problems at CDN-level loads.

Offering 100% availability is crazy difficult once you add dynamic content into the mix. If you could do it, I bet you could make a million bucks.

<comment><USER12> Availabity with dynamic content is easy (ok not easy, but it's a fairly routine straightforward process). The CAP theorem says you get 2 out of the 3 of consistency, availability, partition tolerance. Just getting availability and partition tolerance by themselves is just a matter of good engineering, nothing revolutionary.

</comment></comment></comment></comment></comment><comment> loup-vaillant Me too! <http://www.loup-vaillant.fr/projects/ussm/>

Not as polished, of course, but usable enough to make my web site. Improvements coming soon.

</comment><comment><USER13> I've used nanoc for my blog for a while. It's ok, but the next time I do need static HTML generation I think I will just use rails that I host locally and then statically mirror the site with wget --mirror and rsync.

</comment><comment><USER14> This is so very old hat. Has been time over time over time for years. Why is this so high up on HN?

</comment><comment><USER15> Where can one host sites like these?I think anywhere where one can get shell access?

<comment><USER7> Just create them locally on your computer and use rsync or ftp to send them to your web host.

With static HTML, you don't need any databases and it doesn't matter what type of server or operating system your host is running.

<comment><USER15> But nanoc does not just output the static html, it gives just the files, with no side bars and all. I think the layout part is not there.

<comment><USER15> Realized my mistake here, sorry for the misinformation.

</comment></comment></comment></comment><comment><USER16> The website is painful to look at. We really need to nip the whole rotated screenshot trend in the bud. Here's to 2010.</comment>


The humble origins of Dubsmash - <AUTHOR> https://blog.dubsmash.com/2016/01/21/how-to-serve-millions-of-mobile-clients-with-a-single-core-server/ <comment><USER2> anyone hoping to read about a new music genre will be disappointed</comment>


Things you should do before making a website live - <AUTHOR> https://www.bugmuncher.com/2015/09/15/10-things-you-should-do-before-making-a-website-live.html <comment><USER2> Not a single mention of security.

<comment><AUTHOR> That's because the article isn't about security, it's about common pitfalls and oversights when making site live.

<comment><USER2> And deploying an insecure site is _not_ a common pitfall or oversight? Until people quit acting like security is something outside of the core development and deployment process, you webdev geniuses are going to continue to screw your customers and yourself.</comment></comment></comment>


Men and women are created equal – or are they? We used AI to find out - <AUTHOR> https://peltarion.com/blog/data-science/men-and-women-are-created-equal <comment><USER2> > It is remarkable that with just a two or three phrase exchange in a movie, > we can predict with a 74% accuracy whether a conversation is between two men > or between two women. It would seem like we have a long way to go before men > and women are created equal in movies. But there is a hope, and a lot has > happened in the last few years

It seems a lot of people would love to completely eliminate all differences between men and women. Nobody says we should homegenize all cultures making them one uniform soup, so why do they want to make both sexes uniform?</comment>


Ask HN:  How do you sketch out the design of your code before you start coding? - <AUTHOR>

Do you use a whiteboard?  TDD?  Pencil and paper?  Scratch project? <comment><USER2> I use a combination of TDD and long conversations with myself. Here is my algorithm in the form of a checklist:

        CHECKLIST FOR CODING

        [ ] Is there a conversation with self about this program?
        [ ] Is there a user scenario that has been customer validated?
        [ ] Does the conversation describe the user scenario that does not work?
        [ ] Does the conversation describe the user interface that the scenario needs?
        [ ] Does the conversation describe the API that the user interface needs?
        [ ] Does the program contain tests for this new API?</comment>


Why Design-By-Commitee Should Die - <AUTHOR> http://www.smashingmagazine.com/2010/06/29/why-design-by-commitee-should-die/ <comment><USER2> "Design by commitee is awesome" would be a more inspired blogpost. Anyone want to have a go at it. There must be something to be said for design by commitee.

<comment><USER3> scoot over

 _hops on your coat tail_</comment></comment>


How VC Money Killed Privacy Focused Android ROM CyanogenMod - <AUTHOR> https://arabcrunch.com/how-vc-money-killed-privacy-focused-android-rom-cyanogenmod-6f1e67276445 <comment><USER2> Woah the article started out fine but from there it's all downhill. I honestly feel bad because I was expecting to read some good insightful post but you really let me down.

> The Answer, there is no 100% proof for that, however the type investors in > Cyanogen raised funding from gives you a glimpse, Rupert Murdoch is one of > the investors in Cyanogen Inc, he is a Jew pro the terrorist and criminal > Jewish state that is stealing land from indigences Muslim Palestinians, and > killing them and their children for no reason other than saying God is our > lord. It has been doing so since England gave the unjust Balfour declaration > in 1917 to the Jews to establish a Jewish state in Palestine.

Dude, there's a line between criticism and ranting like a whiny child who can only argue by insult after insult.

<comment><USER3> Maybe not so much whiny ranting as it's really just stuck in seeing the world from a particular perspective.

Otherwise, fully agree with you.

This is a promising subject, but the writer's very specific focus on Jewish- Arabic relations and connections made VC funding (and to a lesser extent even Cyanogen the product and the company) an after-thought.

</comment></comment><comment><AUTHOR> Why the last submission of this post deleted by the hacker news! this is censorship and unjust</comment>


Disney announces Wreck-It Ralph will arrive for download before DVD, Blu-ray - <AUTHOR> http://www.engadget.com/2013/01/04/disney-wreck-it-ralph-early-digital-release/

<comment><USER2> While not germane to the conversation, it's worth pointing out that this is a wonderful movie with an exceptionally smart and computer-literate script that celebrates electronic culture instead of deriding it.

</comment><comment><USER3> If the movie companies would come to their senses and release them without DRM, I would definitely purchase them via download. They also need to work on there pricing for them, I noticed many movies on iTunes are $20 for the 1080 version. I can usually get the Blu-Ray version for cheaper.

<comment><USER4> At this point it's pretty clear that video DRM and digital purchase pricing exists as they do because they'd rather you _didn't_ buy movies, but rented them when you wanted to watch them, or (preferably) rented the capability to watch them.

<comment><USER5> That's totally fine with me. I'll rent movies on Amazon all day long for $1.99.

How many movies do you have that see repeat viewings?

<comment><USER6> Much less movies that you'll rewatch 9 times (bringing you to the purchase price)?

</comment></comment></comment></comment><comment><USER7> I've noticed some other movies doing the same, for example Looper (great sci- fi movie btw) was on Google Play roughly a week or so before it was on DVD.

Now if only they would offer them DRM free, then we'd be getting somewhere...

<comment><USER8> As well as Amazon and ITunes, but only for purchase and not for rent...which is kind of annoying.

<comment><USER9> I've been really frustrated by the "purchase only" digital options for movies lately. I want to watch the US remake of "The Girl with the Dragon Tattoo" but I don't know if I want to watch it more than once.

<comment><USER10> I'm a little confused. This community (myself included) often complains about how we wish Hollywood would release their movies as DRM-free files. But then some of us say that the "purchase" price is too high and we want a "rental" option.

How exactly would this work? Would the movie studios ask you nicely to remove the file from your computer after three days? I'd love to hear a technical answer that contradicts this, but don't see how a DRM-free rental could ever be possible.

<comment><USER9> I'm not part of the "All DRM is always bad. No exceptions" consensus group. I'm in the more pragmatic "I'm OK with DRM, especially for time-limited rentals when it works well and is really cheap" group.

Can't we all just get along?

<comment><USER11> Yep, i like both the amazon and itunes rental options for movies. Most movies are a one time deal anyway, and they are FAR cheaper than going to a theater for "meh" movies.

For buying I would like the drm to go bye-bye. They can watermark it for all I care, as long as its a plain file with no drm is what I want for the purchase price so I can move it about like the songs I buy from amazon/itunes. That is basically my viewpoint as well.

</comment></comment></comment></comment></comment></comment><comment><USER12> Is DRM free really that much of an issue any more? It's an inconvenient, but not insurmountable problem for consumers. I think coders have solved for this issue, no?

<comment><USER13> When you say, "coders have solved for this issue", what do you mean?

Do you mean that the movie industry's coders have made DRM so un-intrusive that it's no longer an issue for consumers? Many would disagree with you there.

Do you mean that "pirate" coders have been able to circumvent all existing DRM techniques, so consumers can always get DRM-free movies if they seek them out? That may be true, but it's a continuing arms race with the movie industry, so it's not an ideal solution.

<comment><USER14> Well, they _have_ done a much better job w/ the DRM now than in the past. I don't love the stuff, but I haven't had trouble with it in recent years.

(Except for the one time I tried to play DRM video on an Eyefinity display array, at which point iTunes complained it didn't support HDCP)

</comment></comment></comment><comment><USER15> Forget that I want Paperman. What a beautiful short.

<comment><USER16> agreed ... the animation and art direction for it was superb.

</comment></comment><comment><USER17> 4 days after the UK release date.

<comment><USER7> that sucks :( I remember going to the UK on a business trip in 2007 and we went to see a movie and all of the trailers that showed for "upcoming" films were all for films I had already seen.

That's just terrible. They should really make it a priority to get these films available everywhere right away.

<comment><USER18> It's not usually this bad, we've had a lot more releases lining up with the US release dates. A number of friends have already resorted to piracy to view Wreck-It-Ralph and the studios wonder why? With such an interconnected world (and particularly with Digital distribution with the cinema chains) there is no longer the excuses for such a difference in release dates. If they really wanted to combat the piracy issue they need to make it easier to consume the content legally.

</comment></comment></comment><comment><USER19> Oh believe me, it's already available for download.</comment>


Basic PHP Tutorials - <AUTHOR> Hi, I want to teach people PHP and am making two youtube series at the minute, a basics of PHP one (link here: https://www.youtube.com/watch?v=iLzE8BBMbQ4) and a Coding a PHP forum tutorial (up tomorrow!). I wanted to ask you guys if you could give me any feedback please? All would be hugely appreciated! <comment><USER2> I would have started with what PHP does (it is a scripting language interpreted by the web server before the page is sent to the browser.)

PHP pages MUST be named correctly (with .php)

PHP code needs to be within a special set of tags (?php ?) it tells the server that inside those tags interpret the PHP code.

First I would do a quick hello world explaining what PHP usually does is add content to the HTML page (show source of output?), and to do that you need to echo or print the data. You can also include formatting ...HTML formatting.

      remember, all PHP code needs to be within in <?php ?>

      <?php
      echo "hello world";
      ?>

(End statements with a ; Enclose strings within "" or '')

Mention you can have multiple php blocks, things are done sequentially, etc. The go onto variables, conditionals, etc.

The important part is start out with a simple success:

      echo "hello world";

instant gratification get them knowing they CAN make something, before you get too complex, to know they are already on the right track. Starting off with variables and such and getting syntax errors (or worse) right off might frustrate them too early.</comment>


Irmin: Git-like distributed, branchable storage - <AUTHOR> http://openmirage.org/blog/introducing-irmin <comment><USER2> I've enjoyed using Irmin so far -- the APIs are well-designed and it's really handy to be able to use 'git log' for debugging. In fact a 'git log --pretty=online' has started to replace a lot of the ad-hoc debug logging which permeates my code.

Given how cheap storage is now, I think there are a lot of applications for which it makes sense to record all previous states by default (e.g. for debugging) and make mutating history (by squashing/compacting it away) the special case (a bit like running 'logrotate' every week)

<comment><USER3> Just out of curiosity – where are you using Irmin? I'm curious to look at some real world code beyond the official examples and the merge-queues project.

<comment><USER2> I'm refactoring "Xenstore" (part of the control-plane for a Xen host) to use it. I want to make the server stateless so I can restart it if it crashes.. this mainly involves remembering lots of bits of state: connection information, watch registration, pending events etc. I also want to make it easier to debug while I'm at it.

I've got a draft of a blog post here: [https://github.com/djs55/mirage- www/blob/a1ab2fec78fa7d96c64...](https://github.com/djs55/mirage- www/blob/a1ab2fec78fa7d96c648c300c37105a0f799c30a/tmpl/blog/introducing-irmin- in-xenstore.md)

edited to add:

This work is a natural evolution of the "OXenstored" work presented at ICFP 2009 [http://web.cecs.pdx.edu/~apt/icfp09_accepted_papers/83.html](http://web.cecs.pdx.edu/~apt/icfp09_accepted_papers/83.html)

<comment><USER4> I know it won't help, but I was thinking that one could keep hot backups by doing a fork() suspend() and then diffing the heap in realtime to migrate state between processes. Trying to keep state on the heap instead of the stack is a huge start. But this is stuff you already know.

<comment><USER5> Using process checkpointing is indeed one good way to implement fault tolerance. The Irmin style is more explicit -- the heap itself is tree structured, and the application uses it to checkpoint itself to disk/memory as a matter of course.

This ensures that only the minimal state required is stored (as opposed to the entire process heap), and also that state can be reconstructed intelligently to preserve sharing and special resources. For instance, file descriptors (if running in Unix mode) could be reified to a filename/offset and reopened, and memory mapped areas (such as the shared ring structures that Xen uses) could be re-granted from the hypervisor.

<comment><USER4> It would be interesting to have an operating system that used a queue of transactions for IO, esp against an immutable FS somewhat like Datomic.

</comment></comment></comment></comment></comment></comment><comment><USER5> This blog post just introduces the overall architecture and pointers to the source code. There's a getting started guide for those who want to play with it here: [https://github.com/mirage/irmin/wiki/Getting- Started](https://github.com/mirage/irmin/wiki/Getting-Started)

More docs emerging in the coming weeks (particularly as we upstream the Xen toolchain integration, which has been a very helpful deployment to iron out the bugs in the betas). Do feel free to file questions on <[https://github.com/mirage/irmin/issues>](https://github.com/mirage/irmin/issues>) in the meanwhile.

<comment><USER6> A minor request:

I assume you're involved in the project. Do you have a way to fix the blog to include (at least parts of) the title in the .. title?

Right now the title is 'Blog' and people like me (I know, it's a bad habit) that open tabs to read them later will have trouble relocating that thing in a far too large list of tabs.

<comment><USER5> Woops, that was dropped in a refactoring of the website code. Fixed in [https://github.com/mirage/mirage- www/pull/192](https://github.com/mirage/mirage-www/pull/192) and should propagate live soon. Thanks for reporting!

</comment></comment></comment><comment><USER7> This article reads very much like how git-annex works to me, except that while git-annex is built on top of git (and consequently works at a much higher level), Irmin sounds like it does pretty much the same thing but at a much lower level.

In other words, I think I could implement what's being described as a very thin shim on top of git-annex. You'd just need a special git merge driver (the same as Irmin, which requires 3-way merge providers), but with the extra caveat that all three components of the merge have to be present in the local annex before a merge can take place.

This is just based on the article, and assumes I've understood correctly.

Is this accurate?

<comment><USER5> That's a reasonable way to think about it, except that Git is just one backend option in Irmin, whereas git-annex is obviously specialized for git (and does it very well, too). The Irmin in-memory store, for example, never actually serializes into Git (and so is faster for IPC).

There are some interesting tricks going on from the native Irmin representation to the Git conversion (which is slightly less descriptive than Irmin and so virtual nodes are constructed to represent the extra data in Git). Will write that up in more detail in a future post I think, but for now:

[https://github.com/mirage/irmin/blob/master/lib/backend/irmi...](https://github.com/mirage/irmin/blob/master/lib/backend/irminGit.mli) [https://github.com/mirage/irmin/blob/master/lib/backend/irmi...](https://github.com/mirage/irmin/blob/master/lib/backend/irminGit.ml)

(is the Git serializer, and you can see in the interface how you can spawn an on-disk and in-memory Git).

and the simpler in-memory backend:

[https://github.com/mirage/irmin/blob/master/lib/backend/irmi...](https://github.com/mirage/irmin/blob/master/lib/backend/irminMemory.mli) [https://github.com/mirage/irmin/blob/master/lib/backend/irmi...](https://github.com/mirage/irmin/blob/master/lib/backend/irminMemory.ml)

where the implementation is mostly a noop since no mappings between representations needs to take place.

(Edited to note:) The reason for wanting an in-memory backend in the first place is that this is also very useful for IPC coordination. You could build a session layer where all the messages that go back-and-forth between two processes are recorded into an in-memory layer, and then when the whole process is done, the entire graph of communication can be dumped out to a Git tree as the log (for later analytics or debugging). If disk space is an issue, the Git tree can later be rebased to eliminate the intermediate communication commits. This is very, very useful for debugging.

</comment></comment><comment><USER8> irmin creators: awesome! Merkle DAGs ftw. Check out

\- [https://github.com/jbenet/ipfs](https://github.com/jbenet/ipfs) \- [http://static.benet.ai/t/ipfs.pdf](http://static.benet.ai/t/ipfs.pdf)

Highly relevant :) (talk coming soon)

<comment><USER9> Wow, that looks really neat too! ZFS is another one (Merkle tree on block- level checksums, and kind of "distributed" if you squint at _zfs send | netcat_ just right). Not sure if they published about it beyond the code, but some of the ex-Sun blog posts about it are great.

I just read through your Data Package Manager post, and I have to say 1) bravo and 2) I need that - yesterday.

I hope Dropbox doesn't acqui-quash you before these things get out of hand :)

</comment></comment><comment><USER10> I don't quite understand the use-case, because merging seems problematic if purely programmatic... A merge that seems clean might violate some invariants of the object. And if irmin detects that it can't automatically merge, how is the merge done programmatically?

Perhaps the idea is more like a database, and some administration is manual. So, merges are like mini-migrations. Or, merges could be thrown back to a human user of the app to combine them (perhaps with some domain specific interface) - again, manual.

<comment><USER5> The idea is that you can tailor the merge functions for the application problem domain, rather than grabbing an off-the-shelf distributed database with subtly different consistency semantics than the one you really need (e.g. Riak, Dynamo and Cassandra are all slightly different in how they reconcile, for very good reasons).

With Irmin, if your your application needs a distributed queue to coordinate workflow tasks, then you grab an MQueue datastructure that explains how it deals with multiple readers and writers, and you use that. If you instead need a distributed set with no strong ordering guarantees, then you can implement this as a series of pull/push/merge operations instead.

One interesting exercise we're doing at the moment is to build the equivalent of Okasaki's purely functional datastructures in Irmin. Since the module signatures of these datastructures are quite similar to their non-distributed counterparts, it should be possible to swap distributed/local datastructures depending on the deployment scenario of the application (with the local ones being _much_ more efficient due to the lack of remote synchronization).

If a datastructure really can't merge something, then it can raise a conflict that will can ripple up to the user interface. The design aims to minimize this by letting the application specify a non-failing merge semantic where possible though.

<comment><USER11> this is very similar to how Bayou reconciles conflicts

[http://research.microsoft.com/apps/pubs/default.aspx?id=7377...](http://research.microsoft.com/apps/pubs/default.aspx?id=73775)

BTW, would be much appreciated if you could point to related work on the subject (papers, other projects, blogs, etc).

<comment><USER5> That's correct, except that an Irmin client could choose not to reconcile if it would conflict, and just continue on with two active branches (presumably hoping for a future event that would help reconciliation). Bayou's a big inspiration for this system -- there's a filesystem under development that exposes some POSIX semantics using Irmin as a base. It should be possible to build rather interesting datastructures that go beyond conventional filesystems as well, though.

 _BTW, would be much appreciated if you could point to related work on the subject (papers, other projects, blogs, etc)._

That'll certainly happen when we complete the research papers on the subject. It's a little out of scope for a blog post series that primarily focuses on trying to explain the stuff we're building.

</comment></comment></comment></comment><comment><AUTHOR> The next post in this series is also up. By djs55 on Using Irmin to add fault- tolerance to the Xenstore database.

[http://openmirage.org/blog/introducing-irmin-in- xenstore](http://openmirage.org/blog/introducing-irmin-in-xenstore)

</comment><comment><USER12> This is something that I never knew I needed.</comment>


Hyro - a cross-platorn, real-time HTML5 editor - <AUTHOR> http://github.com/jawerty/Hyro

<comment><AUTHOR> Hello, I'm the creator of this app. If there's any confusion, I did in fact change the name from 'Hyper' to 'Hyro'. This was for many reasons (some of them legal). However, it is the same app, just a different name.</comment>


Party Rounds - <AUTHOR> http://blog.samaltman.com/party-rounds <comment><USER2> _It turns out that investors are generally about as involved as they are invested. [...] In a typical party round, no single investor cares enough to think about the company multiple times a day._

This sounds like something which is obviously true; but I'm not so sure: In particular, it seems to me that an investor's involvement is likely to depend as much or more on their investment _as a fraction of their assets_ as it does on the absolute size of their investment. If I invested $100k in a startup, it would be because I _really_ believed in it, and I would help them in any way I could; but if Warren Buffet invested $100k in a company he would probably forget about it before lunch.

To the extent that "party rounds" involve large investors throwing their spare change into a pot, I agree that they would certainly not be productive; but if a party round allows small investors who would provide advice and assistance disproportionate to their assets to get involved, it seems like it could only be a net positive.

After all, nobody expects that an investment of only $20k means that YC won't provide much help.

<comment><USER3> Definitely true--if someone invests a lot of their money, they'll focus. The problem comes when a 500MM fund makes a 100k investment.

YC is somewhat different, since all the investments we make are the same size. And, I'm biased, but I think we work pretty hard.

<comment><USER4> "The problem comes when a 500MM fund makes a 100k investment."

Interestingly, after crunching the data, this is not true.

In reality, companies who receive money from a larger, multi-stage fund actually raise follow-on financing at a higher rate than those that raise only from dedicated Seed VC firms who presumably care more as they're more invested (or that's what they'd like you to believe :)

While Chris Dixon (prior to joining Andreessen Horowitz) and others have championed the idea that large funds don't care and are just investing in seed rounds as a call option for future rounds, the data just doesn't support this contention.

We were as surprised as everyone else when we found this.

Full research brief we published on this here - [http://www.cbinsights.com/blog/trends/seed-venture- capital-f...](http://www.cbinsights.com/blog/trends/seed-venture-capital- funds)

Disclosure: I'm co-founder of the firm, CB Insights, that put this research together. We sell data to VCs, LPs, etc.

</comment></comment></comment><comment><USER5> There are a few serious advantages to party rounds that this post doesn't mention:

1) Party rounds generally lead to greater founder control and more founder- friendly valuations

2) In party rounds, founders get to date VCs before they settle down. Choosing a long term VC partner / board member is hard. Party rounds allow you to experience working with many investors before deciding who you want to partner with for the long haul.

3) Taking a lead investor in a seed round creates a serious negative signaling risk that party rounds don't -- if you have a lead and they pass on your Series A, raising will be much harder.

4) You can often close a party round much faster than a round with a lead because the diligence processes are faster. This means you can get back to doing what matters -- building your business.

I don't think there is a clear optimal choice here -- there are plusses and minuses for the entrepreneurs both ways.

</comment><comment><USER6> One important aspect of party rounds that this post leaves out: not everyone comes to the party at the same time.

Party rounds usually happen because investor A is interested and invites B and C, who invite D & E, and the situation repeats itself over days/weeks. All along the way, the founder is able to angle for better terms (and price!) as investors realize they have less and less leverage.

By the end of the party, it looks like a waste since investors D, L and R were the best fit and could have covered the whole round themselves. But, what brought investors D-R to the table was everyone who came before them. We can't go kicking them out of the round now! So, everyone takes a group picture (Techcrunch announcement) and makes it sound like they're so cool that they've always been partying together; nobody needs to know that most of the people showed up at the end and can't really remember the founder's name that they used to get in at the door.

tl;dr: One important aspect of the party round is that founders get better terms and less stress by signing investors as they arrive at the party. To the founder, that may be worth it.

Thanks for another great blog post Sam, keep 'em coming!

<comment><USER7> I didn't realise party rounds were formed like this – if anything I thought the opposite, that if you had a lead then they'd help bring on additional valuable investors.

I thought party rounds were just when a company has 4 VCs + 20 angels = $1.5M seed, vs. a company that raises a seed where there is one clear lead.

</comment></comment><comment><USER8> For companies raising $1.5 mil or less, from my (very limited) anecdotal observations it seems like investors have a base usefulness that may or may not fluctuate as a function of the amount they have invested. It also may or may not fluctuate depending on how interesting your startup is, how much they like you, how often you run into each other at social functions, etc...

From what I've seen (certainly a small sample, so may be wrong, curious to have others chime in) there are investors whose lowest possible usefulness (they invested the smallest amount they ever invest) still exceeds other investors' highest possible usefulness (however invested they would be if they were responsible for the entire round - $1.5mil or less). As a result I see the appeal of a party seed round - you increase your chances of getting investors who are useful by nature.

</comment><comment><USER9> "It turns out that investors are generally about as involved as they are invested."

I suspect that if an entrepreneur raised money from a few thousand people on kickstarter (or similar) and then asked them all to help with certain things, they'd get a lot of people willing to do stuff. Maybe only 1 in 100 per ask, but if you have a couple thousand people reading your emails then that's more than enough. I don't think there's anything wrong with party rounds, rather that with the way they're currently done it's just too small of a party with the wrong people invited. You need a lot of people who really like the product and want to see it succeed, rather than a small number of people who like bragging about the fact that they're investors but who don't really have that much money.

<comment><USER10> Managing that army of volunteers becomes a job in it's own right.

<comment><USER11> So raise an extra 50K and hire someone to do it.

<comment><USER12> People who manage investors are typically the highest paid person of anyone in business. Very few people can be relied upon in place of the CEO, CFO in that communication. $50k won't buy you much.

<comment><USER10> Exactly. Investor management takes time and attention away from sales and product management. Event if it's rallying a large group of volunteers, that person is getting pulled away from other vital tasks.

</comment></comment></comment></comment></comment><comment><USER13> Find one or two strong leads to commit to your round. Make sure these are experienced angel investors. Make sure they love what you do. Make sure you love working with them. Fill the rest of the round with people committing to smaller amounts. In my experience, it is hard to set a limit here. Do what feels right. If someone offers you money along the way, do take it. You can care about your valuation later and the way bigger risk of your business is running out of money. Spent 80% of your investor time with your leads. Limit the money you take from VC's in your angel rounds. Just my two cents.

</comment><comment><USER14> I've heard a different take on this from an entrepreneur who raised several time in the past. His strategy was to raise small amounts for 20-30 angels investors at the seed round with the assumption that when he needed more money it would be easier to ask from someone who already invested 25k to double down on the investment than from someone who invested 100k (which is probably high for the average Angel).

</comment><comment><USER15> Though I appreciate the logic of having a single or small group of 'good investors', this only applies if one is able to attract said 'good investors'. If one is unable to attract the attention of 'good investors' (assume the start-up has a good idea - being unable to attract 'good investors' is a separate problem), and only 'bad investors' are available it would be logical to try to get a lot of 'bad investors' so that they would not be able to individually influence the company. Thus party rounds make sense in that case don't they?

</comment><comment><USER16> I think another key point is one that was only partially touched on in this thoughtful post. When you go to raise your B round, this party round A is going to look "different" than what the B investors are used to seeing. Anything that looks "different" creates some amount of impedance on the deal. B round investors are used to seeing a few familiar names from the A, and at least part of their diligence is based on if they want to work with them or not.

This doesn't mean don't do it - it's just another point to consider.

</comment><comment><USER17> Here's my (decidedly cynical, I know) take on this:

Sam's model makes sense if the investors actually care about the product and are able to at least somewhat judge & shape it.

If, on the other hand, funding startups is a lottery for the big payout item, party rounds make sense for investors. And the same goes for the company side - if you just hope for the big acquisition, at first glance guidance matters less than runway.

</comment><comment><USER18> I think the focus of this discussion ignores an important point: some of these companies, perhaps a decent number, raise these rounds because they probably wouldn't be able to get fewer investors to pony up the full amount they're seeking.

</comment><comment><USER19> I wonder what this implies for crowdfunding?

</comment><comment><USER20> What are some examples of party rounds?

<comment><USER21> There are more recent examples but to make it interesting, I'm going to reference this TC article from last fall which uses these examples: Exec, Socialcam, Pair.

Exec was led by Sam Altman!

<http://techcrunch.com/2012/08/27/party-rounds-excellent/></comment></comment>


Before the Flood [video] - <AUTHOR> https://www.youtube.com/watch?v=90CkXVF-Q8M <comment><USER2> I haven't seen this yet, but for anyone that's interested: Trent Reznor and Atticus Ross (Nine Inch Nails, Social Network, Gone Girl, Girl w/ the Dragon Tattoo, and more) provide the score for this film.

<comment><USER3> And a couple of (stunning) tracks from Mogwai

</comment></comment><comment><USER4> I watched this last night, and have been thinking on the subject of iron fertilization, there's good reason to think that large swathes of the ocean are limited in phytoplankton population due to iron deficiencies. When there are so many people with tech fortunes that kind of disdain government, I'm surprised no one has spent the 30k+legal fees to do some free-agent geo engineering. Sure it's a bit reckless, but wasn't the time for contemplative measured responses to this train-wreck a decade ago?

[http://www.nature.com/news/ocean-fertilization-project- off-c...](http://www.nature.com/news/ocean-fertilization-project-off-canada- sparks-furore-1.11631)

<comment><USER5> Geo-engineering is an interesting idea, but I'm not sure how you balance projects like that with the push to cap bad behavior. Maybe we need both. It's hard to garner the proper emotional response to the climate trajectory we are on. Maybe a geo-engineering project would register the appropriate level of alarm that we seem to be missing. You might like this book that I'm almost done with: [https://www.amazon.com/How-Cool-Planet-Geoengineering- Audaci...](https://www.amazon.com/How-Cool-Planet-Geoengineering- Audacious/dp/0547520239).

</comment></comment><comment><USER6> I have a naive question: As a software developer, how can I contribute to the cause?

<comment><USER5> Industrial agriculture is often under-represented in these discussions, but it's the leading or second-leading cause of climate change. At the same time, diet-related disease is the leading cause of human death. Growing some part of your diet is a really important thing that people need to be doing.

So you could get into growing some food or look for ways to support local farming. To those points, my startup project (terrafarm.io) is a web platform for making it easier for people to contribute to local food systems. It is only a demo atm, but the plan is to have an official product this upcoming Spring. I'm the only person working on it full-time, but I'm always on the look-out for people who care about the problem and want to contribute. So far, I've only hired contractors because I can't afford more than that. But feel free to PM me if you have any interest or feedback on the concept.

<comment><USER6> I tried your demo, I have to say it was a very confusing. Expect an email with more details later this week when I can find some free time.

<comment><USER5> Thanks for checking it out! Sorry I wasn't more clear about it. It's still just bits and pieces of the initial design, and is clearly not in any sort of useful state. I'm not yet asking anyone to try it out--just pointing to the link in case you want to track the development.

<comment><USER6> ok, noted :)

</comment></comment></comment></comment></comment><comment> happy-go-lucky among the ten highest-spending lobbyists, _the United States Chamber of Commerce is currently #1_.

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

</comment><comment><USER7> Love the comments section ! So classic youtube ..</comment>


INTP Programmer Traits Follow Up: Watch Out For This Type - <AUTHOR> http://lispy.wordpress.com/2008/08/26/irrepresible-conflict-an-intp-in-a-wasteland-of-normalcy/ This post may give you some insights into that weird guy you depend on to help change the world and/or create a ground breaking business. <comment><AUTHOR> This post may give you some additional insights into that weird guy you're depending on to help you change the world with your crazy start-up company idea.</comment>


Show HN: Rate my project browshot.com - <AUTHOR> http://browshot.com/

<comment><USER2> Good Luck!

I _really_ like the idea of people testing stuff on small screens. I used an EEE pc 701 for a few years, and that has a tiny screen.

Two tiny nitpicks: >A service to easily make screenshots of web pages in any screen size, as any device: iPhone©, iPad©, Android©, Nook©, PC, etc. Full Flash, JavaScript, CSS, & HTML5 support.

This confused me until I realised what you're doing. It's not important, but maybe a copy editor could snap it up a bit?

Also, your home button overlays "Browshot" title. (<http://imgur.com/iHOsZ>)

<comment><AUTHOR> Thank you. I do need to work on the message on the home page. What resolution did you have when you took the screenshot?

</comment></comment><comment><AUTHOR> There is still a lot of work to do, but I finally launched a service to automate screenshots of websites. I could not find a service that offer reliable screenshots (i.e. make sure the page is fully loaded) in a reliable amount of time.

</comment><comment><USER3> I agree with the comment about the copy.

You need to know instantly what your site does.

It is really about the screenshots or is it about testing across different browsers/devices?

I thinking testing is the key word.

<comment><AUTHOR> I think I have not yet decided what I want the service to do. When I started, I was looking at users who need a high volume of screenshots. I thought of the dashboard as a quick and easy test to try the service, before using the API for the "real" work. Then I started to think about testing on many different devices, with low volumes. I guess I need to make a decision.

</comment></comment><comment><USER4> I think this looks promising. Does it handle custom fonts? I had a problem with rendering custom fonts with the hack job of a screenshot app I'd built for myself. Best of luck to you though!

<comment><AUTHOR> Are you taling about CSS3 fonts: [http://www.designcourse.com/articles/1/css/55-CSS-Custom- Fon...](http://www.designcourse.com/articles/1/css/55-CSS-Custom-Fonts) If so, this will work.

</comment></comment><comment><USER5> Are you running an real/virtual farm of Nooks and iPads? Or are you spoofing the browser agent and mimicking the screen resolution? Welcome to the neighborhood!

<comment><AUTHOR> These are not real devices, but it is more than spoofing the user agent and the resolution. For example, for the iPad, I use a mobile browser, which does the same scaling as the real device amongst other things, enable/disable features or behaviors, etc.

</comment></comment><comment><USER6> Julien, can you say something about the company itself? Or if it's just your personal side project - state that. I can't find any info on the website. (Note: this fact might be discouraging for more serious customers.)

Are you in any way related to the Yandex company, apart from using the Highlight script hosted on their site?

BTW, I'm really happy you're launching this product. I've done some research on good screenshot services over a year ago and the results weren't encouraging. Eventually I settled for these German guys: <http://www.websitethumbnail.de/>

<comment><AUTHOR> This is a personal project, but I don't really what to highlight this :-) <http://www.websitethumbnail.de/> is indeed the best competitor I found, but they still have many limitations (like max resolution 1024x768).

I can work with you if you're serious about trying a new service. I can give you enough free credits to fully test browshot.com. Send me an e-mail to firstname.lastname@example.com with the details of what you're looking for, and what you need to validate the service.</comment></comment>


A brief introduction to C++'s model for type- and resource-safety [pdf] - <AUTHOR> http://www.stroustrup.com/resource-model.pdf <comment><USER3> I love the safety path Bjarne, Herb and others are driving the language, but I wonder how much of this work will ever be adopted by the masses, given the amount of "C with C++ compiler" that I usually see.

Or code guidelines like the ones from Google, where one is even refrained from using Modern C++ best practices.

<comment><USER4> What Modern C++ practices specifically have you found that Google discourages? I'm curious. I'm reading through Scott Meyers' Effective Modern C++ and am finding so much easy and fantastic advice, I wonder if Google is at odds with some it?

<comment><USER5> > I wonder if Google is at odds with some it?

It's at odds with almost all of it. Google's standards are C-with-classes based on compiler bugs circa 1999.

Despite their (misleading) marketing, Google is still just another enterprisey megacorp employing 30000 blub programmers. Expect the usual 'enterprise' failures.

<comment><USER6> > Google is still just another enterprisey megacorp employing 30000 blub > programmers. Expect the usual 'enterprise' failures.

Ouch! That must have hurt 'em. Of course the original meaning of "Blub" is "anything which isn't Lisp", _especially_ C++ (as well as say Java.) But what the heck, it has a good sound to it.

Anyway, I think their C++ style guide isn't bad. As to "modern C++ style", let's wait for a few years, shall we? When the STL came out, auto_ptr and for_each(v.begin(), v.end(), FunctorFromHell()) were marketed as the way to go for a long while; then the usual suspects became a bit more silent. Now again, despite their being a smart for loop, for_each with a lambda (with its crazy capture lists and all) is supposedly considered at least as good as a for loop, and typically better. And you're supposed to use unique_ptr and what- not. Maybe a few years down the road things will look different again.

C++11/14 has a ton of weird shit you ought to keep in your mind on top of the weird shit in C++98/03 and many "enterprisey megacorps" seem to apply a restricted subset of C++ rather successfully.

<comment><USER4> It's hard to deny that there are some really useful new features in modern c++, though. Standardized multithreading primitives is a big one. Smaller ones like scoped enums are useful too. I'm a big fan of lambdas and the ability to use them for things that used to be very awkward to do without them, like std::bind and functors. In all, I think the modern additions are a net positive for sure.

<comment><USER6> I don't deny that there are useful features in C++11/14 (though I find "modern C++" an irksome marketing trick by people peddling a disgusting programming language; it was called "modern" since at least the early 2000s and it was disgusting then.) Of course I'd rather iterate over std::map with a range for loop than use the C++98 way, and as to lambdas - while I find them way too awkward and limited compared to closures without the sharp edges (and with garbage collection), and _a ton_ of "modern C++ code" went batshit insane in its extent of unnecessary reliance on lambdas, lambdas remain much more practical than the alternatives when doing things like some sort of a parallel_for. But then it's hard to find a language whose version X+1 adds nothing useful to version X.

Is C++14 a better language than C++98? It's hard to tell (I think it is - <USER2> think C++ is worse than C, but having gotten to C++98, perhaps it helps more than hurts to add all that other shit), but it's not an interesting question anyway because the upgrade is easy enough and it's worth it for most people for their specific reasons, so C++98 will die out.

But then it's not like Google aren't upgrading to the latest C++ standard, they're just doing it slowly AFAIK.

<comment><USER4> It's interesting to consistently find that people who hate C++ just really really hate it a lot, to the point of using profanity a lot of the time.

I don't see what the big deal is. C++ is probably the most gigantic and complex language I am likely to ever use... but you don't have to use the vast majority of it if you don't want to. If you want to stick with C-style coding, you pretty much can, if you don't want OO or STL or ++11/14 features -- nothing is forcing you to write those features into your code. But when you want access to them, there they are; and if suddenly you find yourself needing a particular library that only exists in C++ (as so many graphics and physics engines do), you can get access to that as well.

As soon as you need multithreading, or sorting of hash maps, or even basic string operations, knowing you can reach for them in pinch rather than find the C alternatives or build your own, seems like a big bonus to me (assuming a comparison to C).

<comment><USER7> True, but I think a lot of the encouragement is to move _away_ from writing C++ like it is C because we really don't want to encourage people to write with dangerous approaches anymore (like you can if you write C++ like it is C).

I work with a few who write their C++ like it is C (pointers thrown around, no const-correctness, memcpy instead of copy constructors etc. etc.) and it is horrible to read. There is no indication of lifetimes of objects, nor any indication of ownership. No RAII, no exceptions, nothing. It is dangerous.

You are rewarded for writing C++ safely because you won't have to fix any bugs and you can offload all the work onto the compiler for checking types and safety for you.

Like you, though, I don't understand people who get red in the face about C++ and go into a profane rage. It is just a language after all.

<comment><USER8> Guilty. Of writing C++ as if it were C. Sometimes even with classes. Yes, I use memcpy instead of copy constructors. I find "modern C++" horrible to read. Indication of object lifetime? Ownership?

Um... why? If the development support does not include a garbage collector, I have to be very careful about these things. And, I am. Very careful indeed. I just use the approach I do in C, and assume NOTHING from C++. Honestly, I do NOT assume that the language system, compiler or run-time can do it properly. I have been bitten too many times.

I do presume a garbage collector at the very next level up.

Yes, you may find my code "horrible to read". And, yes, I have gone into profane rages over C++ code. It happens when the code bullies me -- with hopeless error messages for simple typos. When simple changes cause the application to no longer link. When simple changes cause massive explosions in object size. In fact C++ is so complex, it encourages cargo cult programming. Not just use of libraries, but enforced cargo-cult when USING the libraries. Because, raisons.

Not just a language -- hell-spawn. Sorry, "modern hell-spawn".

<comment><USER9> If you hate the idea of ownership and lifetimes I want to stay the hell away from any codebase you work on.

<comment><USER8> No, what I "hate" is the idea that C++ promotes "automatic" management of "ownership and lifetime" without a garbage collector.

Which works, except when it doesn't. Which results in stuff like reference counting in the codebase. Which, of course, changes on a whim.

Example: the CEF3 library (chromium embedded framework).

Reference counted objects. Which requires source code changes depending on the version of CEF 3 being used. Requires VERY deep analysis to determine what to change in the using code. Really -- because the objects participate in a multi-threaded library.

So, most code ends up as "cargo cult".

Since my code doesn't fit into the CEF3 object model, I do the contortions needed -- building another layer.

<comment><USER9> Ownership and Lifetimes != Reference counting.

Reference counting is code smell that you _don 't_ have a clear ownership model.

Take a look a Rust for something more along the lines of what I'm talking about. There's been quite a few people who've re-written their C/C++ code to Rust only to find out that they didn't have a clear ownership model and found architectural improvements because of it.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> Here's my biggest question posed yet again, because the paper does not provide an answer to it: The analysis requires that all mutable references be statically proven to not alias on function entry. So how do you call a function foo(T& a, T& b) as foo(x, y) where x and y are instances of shared_ptr<T>? (The problem persists even if a and b are of different types, because a might own b or vice versa.)

This is not a contrived example. It is precisely what kept hitting us in Rust with things like @mut and we took years to figure out the best solution (RefCell/Mutex). It comes up all the time because you can't get away from RC-- large programs use reference counting a lot, and even if they don't one of the major use cases of systems languages is to interoperate with GC'd or RC'd systems (dynamic languages, COM, Core Foundation) where you don't statically know anything about aliasing. Forbidding these calls statically bifurcates functions into "those callable on shared_ptr" and "those callable on owned or stack-local objects", which is unusable in practice. The only solution we found is _dynamic_ enforcement of the aliasing rules, scoped to reference counted pointers. This indeed works, but it requires overhead. You want this overhead to be opt-in in a low-level systems language, but existing code was not written to opt into this. So C++ will need to backwards incompatibly introduce RefCell/Mutex to support this.

The bottom line is that I see a dilemma. Either C++ makes it impossible to use shared_ptr with mutable references, severely damaging usability, or it breaks backwards compatibility by making shared_ptr immutable and requiring dynamic enforcement of the borrow rules for mutable shared_ptr. Either option has huge consequences for existing C++ code.

</comment><comment><USER11> Safe by convention is a ridiculous notion. I think (and I know this isn't a popular opinion here, but I'll say it anyway) that C and C++ are dying horses; these 'modern' versions and 'best practices' are not adequate solutions, evidenced partly by the fact that we can't even agree on what they should be. The next decade is going to see the rise of systems programming languages with static safety guarantees. Personally, I think Rust has a lot of potential, but we will see.

<comment><USER12> I wanted to write a similar comment, but then noticed that the paper claims 100% safety by using an analysis tool, not just by convention.

Agreed about the potential of Rust, it sidesteps most of these problems. Though it might introduce other problems of its own, only time will tell. I expect that Rust's future sore spots will include destructor leaks, the reliance on macros, and the tremendous complexity of traits. (Though of course I don't claim to have better solutions to those.)

<comment><USER13>
      > destructor leaks

Rust doesn't leak destructors any more than C++ (including the version of C++ presented in the OP). The only way to leak a destructor accidentally is to create a cycle (which is quite difficult to do, essentially requiring you to stuff a RefCell inside an Rc) or to have some data owned by a thread that's eternally stalled.

      > reliance on macros

Individual macros are generally regarded as convenient workarounds rather than ideal long-term solutions, and anywhere that you see pervasive macro use tends to be ripe for an RFC for a dedicated feature to subsume it.

      > the tremendous complexity of traits

No denying that traits are Rust's "deepest" feature, but that's because of a general philosophy to leverage traits to provide newly desired bits of functionality rather than introducing all-new language concepts. Removing functionality from traits wouldn't result in making the language less complex; that functionality would just end up going elsewhere.

<comment><USER12> > destructor leaks

Right, I'm not saying C++ is perfect either. I feel like Rust made a wrong turn here: [https://www.reddit.com/r/rust/comments/3404ml/prepooping_you...](https://www.reddit.com/r/rust/comments/3404ml/prepooping_your_pants_with_rust/)

> reliance on macros

I'm referring specifically to try!.

<comment><USER14> Note that whilst the leakpocalypse made it _safe_ to leak, it's not a common case. Leaking safely involves an explicit call to mem::forget or extremely convoluted code involving Rc cycles. Its pretty much going to happen in languages which provide refcounted pointers.

None of the proposed solutions mitigated this either. You will always be able to leak cycles. The difference was that some proposals made it possible to mark types as non-leakable, in which case they can't be placed in things which may potentially leak.

The fact that things will leak was never under question there. The decision to be made was on how safety should interact with it -- should there be a way for a type to rely on its destructor being run for the purposes of safety? The decision was that there shouldn't, and we ended up fixing two APIs which relied on destructors being run for safety, instead of adding a major language change.

<comment><USER12> For what it's worth, I feel that marking types is also a mistake, and the whole machinery of OIBITs exists due to some unfortunate decisions made early on.

Maybe the cleanest solution to the leakpocalypse would be to mark RefCell.borrow_mut as unsafe, because it's problematic in two separate ways (it can both panic and create cycles). That way the safe fragment of Rust would guarantee that memory leaks can't happen and destructors always run. That would fit with the spirit of Rust, which strongly prefers 100% guarantees to 99% guarantees. Though I guess that idea was judged too inconvenient for users, and I don't claim to know what users want.

<comment><USER15> Concurrency/parallelism is sometimes described as "abstraction piercing", i.e. you can't tell if something is safe for use in a concurrent code by just looking at its interface, the internals of the type and the implementation details of its functionality matter.

One way to handle this is to have each type explicitly opt-in to saying they're concurrent-safe, but this is fairly annoying, as it requires a lot of boilerplate. Boilerplate that is mostly pointless in Rust, because its rules mean _most_ types people define will be safe, and most types that aren't safe will be built out of existing types that aren't safe. OIBITs are proxies for "safe", and are designed to strict a balance, by basically following that rule (types made out of types implementing an OIBIT automatically impl that OIBIT too).

Moving on to your specific suggestion: RefCell isn't the only way to not run destructors, for instance, one can create ownership cycles with Mutex and RWLock in a similar way, and, more broadly, threads that dead lock (or live lock) will leak their resources, as would calling std::process::exit. There's also weirder/wilder things like the following: suppose Queue<T> is a multiple- producer multiple-consumer queue type, where any instance can act as both a producer and a consumer (typical for such types), then the following code creates an ownership cycle within the queue, and so won't run the destructor of X:

      struct Msg {
          x: X,
          y: Queue<Msg>
      }

      let q: Queue<Msg> = ...;
      let q2 = q.clone(); // another handle to the same queue
      q.send(Msg { x: ..., y: q2 });
      drop(q);

Now, sure you could mark all these things unsafe, but I think that starts to make things very inconvenient, and, somewhat, weaken what `unsafe` means (it normalise its use since those things are typically totally fine). (Also, those examples are almost surely not exhaustive.)

<comment><USER12> Interesting! Do you mind if I ask you a few newbie questions?

1) After some soul searching, it seems like the really important invariant to me is that all alive objects should be reachable from the stack(s) at any given moment. So I'm kind of okay with failing to run destructors due to deadlock or process exit, but not okay with leaking a cycle. Is that a sensible distinction, or is the situation even more subtle?

2) How do I make a cycle with Mutex and RWLock?

3) I don't completely understand the queue example, what exactly is the magic that allows self-reference?

<comment><USER15> _> 1) After some soul searching, it seems like the really important invariant to me is that all alive objects should be reachable from the stack(s) at any given moment. So I'm kind of okay with failing to run destructors due to deadlock or process exit, but not okay with leaking a cycle. Is that a sensible distinction, or is the situation even more subtle?_

I think that's a reasonable distinction, but, at least for deadlocks, I'm not sure it is enough to have all the guarantees one might want (particularly around multithreading/scoping). Then again, it might be.

 _> 2) How do I make a cycle with Mutex and RWLock?_

The same as a RefCell, just call `.lock().unwrap()` and `.write().unwrap()` instead of `.borrow_mut()`. These two types are essentially the same as a RefCell, just with more synchronisation, and fewer panics. They can block and wait for another thread to finish, at the risk of deadlocks of course, while a RefCell is restricted to a single thread, so blocking would just dead lock a thread with itself, hence a panic resolves the situation better. In fact, other than this blocking/panicking distinction, a RwLock and RefCell are almost identical: .read == .borrow and .write == .borrow_mut.

Here's a demo which creates cycles that contain a type that prints in the destructor (demonstrating that they don't run): [https://play.rust- lang.org/?gist=6ea16b859e22f57fee14&versio...](https://play.rust- lang.org/?gist=6ea16b859e22f57fee14&version=stable&run=1)

 _> 3) I don't completely understand the queue example, what exactly is the magic that allows self-reference? _

This is also essentially the same as the core RefCell/Mutex example, replacing .borrow_mut()/.lock() with .send. An mpmc Queue<T> will be isomorphic to Arc<Mutex<VecDeque<T>>> (although unlikely to be implemented as such in practice). The key is that they will reference-count the book-keeping that needs to be shared among all handles (like the start/tail of the queue), which allows creating a reference cycle.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> I'm amazed at how well-written and thoughtful these papers are given the product is a language I oppose. Well, it does have some good ideas. :)

However, what made my jaw drop was section 3.2: "a dynamic model" for making the system safe and easily implemented in hardware. The section said Stroustrup deciced not to publish it because it was impractical. One of few times see his name and go "what an idiot..." What wasn't practical in general case or that time period doesn't mean it won't be in future in other circumstances. Good ideas, esp simple solutions, have a way of coming back to us.

Specifically, efforts like Cambridge's CHERI processor are looking at minimal modifications to CPU's to greatly increase assurance w/ legacy compatibility. This concept should've been published as there's use in embedded and appliance field where a lot uses subsets of C++. He should've published it. I'm saving the paper for my collection just in case that idea comes in handy.

<comment><USER10> > The section said Stroustrup deciced not to publish it because it was > impractical. One of few times see his name and go "what an idiot..."

He's right though. Such a system would be slower than a good tracing GC, which completely eliminates these problems and is much easier for the programmer to use.

<comment><USER16> In "hardware" as a minimal processor extension as I said? Pointer checks, etc take almost nothing in HW. Garbage collection schemes have a bigger hit and more complex integration. Hence, having his published report for details to add to collection of lightweight schemes out there for C++ or even another language that might benefit later.

That sort of thing happens more than you know in CompSci. Example: One method for Oberon and Java appliances I pulled right out of an old Scheme CPU paper that was also impractical then. Also found a correct-by-construction HW method in same one. ;)

<comment><USER10> Specifically, how do you do use after free detection in hardware without garbage collection?

<comment><USER16> I should've clarified that my statement assumes his model works as advertised, then notes that the pointer checks are efficient in hardware. I couldn't be sure if he was detecting or preventing use-after-free with what would be in compiler and what in runtime. Here's the things I was looking at:

"supports the general thesis that garbage collection is neither necessary nor sufficient for quality software. This paper describes the techniques used to eliminate dangling pointers and to ensure resource safety."

"Every object on the free store (heap, dynamic store) must have exactly one owner [pointer/reference]"

"set the ownership bit when a value returned from new is assigned"

"use delete whenever a pointer with the ownership bit is set goes out of scope"

Sounds similar to what I read in Rust guide, esp one-per-location and scope part. Those and other rules appeared to make it easy for checks to prevent or catch use-after-free. _If so_ , then my keep it around for hardware suggestion could lead to acceleration work. If I misread the paper or goals of ownership model, then my suggestion would've only led to accelerating... whatever safety it was trying to enforce.

Did that clear it up for you? Or did you spot where I went wrong? Could go either way given it was a quick read for me.

</comment></comment></comment></comment></comment><comment><USER17> I'm glad to see that after all these years Bjarne (and the other authors) have kept up the tradition of clear and concise writing they are known for.

</comment><comment><USER18> On one hand it's good things like this are written, on the other hand it's a bit of a shame it still gets written. We _should_ have moved beyond that by now, but adoption of modern C++ goes so slow.. Not exactly sure what the reasons are - sometimes it just seems like stubborness to me - I hear 'legacy' often, and yes if your codebase doesn't even compile with the latest compilers than it's a valid argument, but otherwise: it's not exactly hard to interface modern C++ with C-with-classes. Anyway I've worked in multiple teams and after the initial stage of getting overit and doing the right thing none of useever writes code like the 'bad' examples anymore since smart pointers and collections were made commonly available years ago and they solve most of the problems in this pdf.

</comment><comment><USER12> A static analyzer for a memory-safe subset of C++? That sounds cool. Has anyone downloaded it and tried to break it?

<comment><USER19> They have not actually released the tool to the public yet, to my knowledge.

</comment></comment><comment><USER20> Could someone more knowledgeable than me compare and contrast this with Rust?

<comment><USER14> Aside from what Steve mentioned:

\- Simpler lifetime system: Both a pro and a con, because some functions will not be expressible using "c++ borrowing"

\- No `Alias XOR mutability`, which in rust protects from memory issues and things like iterator invalidation. Not sure if isocpp addresses the segfault that can be caused by

        vector<int> v;
        // fill it up with elements
        int *ptr = v[3];
        v.push_back(0); // may reallocate
        cout<<*ptr; // may segfault

its been a while since I looked at the guidelines and I'm not sure of either of these points, take them with a grain of salt.

<comment><USER10> It does rely on alias xor mutability.

<comment><USER14> Huh. I should read it again.</comment></comment></comment></comment>


Ask HN: should my startup have a blog? if so which one? - <AUTHOR>

getting my startup going, just wondering about the value of a blog.
obviously if we do it we'll try to make it good and keep it up to date (i.e. i realize there is no point making a blog with no posts). and i also realise that marketing the blog is a big part of it, not just making some posts, if there are any tips on marketing that would be great too!
i've also read conflicting arguments (mainly re:SEO) about doing it self hosted on a /blog vs. a tumblr blog, any thoughts? <comment><USER2> You should ask yourself a few key questions:

1\. If you're starting out do you have the time to do product dev AND a blog? Blogging can be very time intensive.

2\. Is the blog part of your marketing or just a place to park notes about product releases?

3\. If it's part of your marketing plan is a blog the best investment of your time and money? Does it give something to your audience?

4\. Are you writing this blog, or is that the job of someone who is doing your content marketing?

I'd first figure the basics out then worry about hosting...

<comment><AUTHOR> yup good questions, i guess i'd like to know how the marketing of a blog works, what's the value... where it should sit in the priority on the marketing budget/plan?

<comment><USER2> There isn't a silver bullet answer for that: It depends upon the specifics of your marketing plan — and marketing is really an art form as as anything else so there are no hard rules. You should think of what the product is, who you're trying to sell to and then come up with the details. But I think with a startup you need to spend your initial energy on the product and then think how you would market it.</comment></comment></comment>