Ask YC: What is YC antiportfolio? - <AUTHOR>

Inspired by BVP antiportfolio - http://www.bvp.com/portfolio/antiportfolio, could you share some teams you have passed on and "later blossomed into a tremendously successful company"? <comment><USER2> Good question - probably a long list...;-)</comment>


Spotify Form F-1 - <AUTHOR> https://www.sec.gov/Archives/edgar/data/1639920/000119312518063434/d494294df1.htm <comment><USER3> Spotify is the reason why I don't pirate music anymore. I say this as someone who used to be involved in the scene (low level FXP couriering in the late 90s and early 00s) and has gigs of release from the RNS, EGO, etc days. It's much faster and convenient to use Spotify.

I also think they cracked music discovery. Their discovery weekly playlist is stellar.

My only wish is they'd get off Electron (EDIT Chromium - thanks jjgod) and go native. A music player is a frequently enough used piece of software to optimize for performance.

<comment><USER4> _also think they cracked music discovery. Their discovery weekly playlist is stellar._

Love Spotify, disagree strongly with this. My experience is terrible music that doesn't seem to have anything to do with any of the hundreds of songs I have on my playlist. I get this curious Millennial mix of soft rock music with long, boring instrumental guitar strumming, a disco beat and a sleepy, sarcastic-voiced gal (sometimes guy).

It might be because I live in Brooklyn.

And there's no Like or Dislike button like (beloved) Pandora.

edit: Don't think anyone compromised my account.

<comment><USER5> I'm so happy to hear it's not just me.

When I first started listening to Spotify (about a year and a half ago), I found the dicovery really high-quality, but it just seems to have gotten worse and worse. Discover Weekly is particularly bad. I find that the first 5 or so songs are okay, but from there is rapidly decends into madness.

I have the weird habit (though I'm weening off) of keeping all the music I listen to out of curiosity on a big playlist together, whether I liked it or not, as a way of keeping track. I thought that might be throwing Spotify's algorithm off (and it probably still is), but it seems it's definitely not the only reason.

I've decided to just trust that Last.fm is doing it's juob and not add any more to that playlist.

<comment><USER6> Discover Weekly looks at the music you listened to recently. If you listen to 5 random songs this week because you were very busy, it's going to offer you the same thing next Monday. Then if the only things you listen to next week is the bad offering from Discover, it's going to propose you the same crap the week after.

<comment><USER4> I assure you the music I listen to is far removed from the Discover Weekly offerings, which I described graphically above.

</comment></comment></comment></comment></comment><comment><USER7> By far the most interesting part of this is that they are doing a direct listing. There is no IPO underwriter (the bankers that the HN audience loves to bash). The shares will just start trading, pricing should be fun to watch.

Update: This nugget from the F-1 [1] alludes to the interesting to watch pricing

> Moreover, prior to the opening trade, there will not be a price at which > underwriters initially sold ordinary shares to the public as there would be > in an underwritten initial public offering. This lack of an initial public > offering price could impact the range of buy and sell orders collected by > the NYSE from various broker-dealers. Consequently, the public price of our > ordinary shares may be more volatile than in an underwritten initial public > offering and could, upon listing on the NYSE, decline significantly and > rapidly.

[1] [https://www.sec.gov/Archives/edgar/data/1639920/000119312518...](https://www.sec.gov/Archives/edgar/data/1639920/000119312518063434/d494294df1.htm#rom494294_24)

<comment><USER8> If you'd have to bet, do you think it's going to go significantly up or down within the first few days?

<comment><USER9> At the risk of turning into r/wallstreetbets here. My bias is to the downside. Driven by a cacophany of pundits on CNBC post-IPO with negative outlooks. "There is absolutely no money to be made in streaming music on the internet" and "apple isn't into music for the profits" and so on ad infinitum. As well as significant short interest in the options market.

$SNAP is probably as nearest neighbor as any for price-action historical context.

Market timing (H1 2019) may also be ill-favored generally for anything tech related if we see significant correction.

But I certainly hope I'm wrong. And will be looking to add positions in Spotify, Dropbox, Uber, Lyft, Docker, Snowflake, AirBnB, SpaceX, WeWork, Stripe etc if and when they become available ;)

<comment><USER10> Docker?

</comment></comment></comment></comment><comment><USER11> They've gone from 28 million to 71 million premium subscribers in 3 years with a declining, single digit, churn rate. I'm impressed.

I'm a happy Spotify customer, I hope they continue their growth and become a pillar of the music industry.

<comment><USER12> I was a Spotify lifer until I butted up against their 10,000 song limit. [1]

Now, I'm using Google Play Music. There's no doubt in my mind that everything else outside of this limit is better on Spotify.

Please, Spotify, fix this! Let me help inflate your valuation!

1\. [https://community.spotify.com/t5/Accounts/Library-Song- Limit...](https://community.spotify.com/t5/Accounts/Library-Song- Limit/td-p/1664935)

<comment><USER13> +1. Ability to upload music on Google Play Music is also keeping me from switching to Spotify. I have a lot of tracks that simply aren't in the Spotify catalog. If they add that, I'd switch tomorrow.

<comment><USER14> I'm blown away that the solution for this has been the shitty "local playlist sync" solution for _years_ at this point.

I guess I'm in a niche? For me, there are tons of hiphop mixtapes that will never be on Spotify that I definitely need in my music player of choice.

Hell, Spotify won't even let me import local MP3 files from my phone!

<comment><USER15> I just stopped listening to music that doesn't exist in Spotify.

I fought it for a while with local playlist syncing and such, but just wasn't worth it over time. There's enough other music out there that I gave up trying.

<comment><USER16> You should give YouTube Music a try. It has both the "regular" catalog you'd expect from Spotify (high quality audio, organised by albums, etc.) + more indy bands that publish their music on YouTube.

</comment></comment></comment></comment></comment></comment><comment><USER17> A few early thoughts:

I think about half of their 2017 net loss was due to something to do with Convertible Notes, that they're explaining on pages F-43 and F-44.

I'm trying to calculate patio11's "fundamental equation of SAAS" ( [https://twitter.com/patio11/status/965985835790184448](https://twitter.com/patio11/status/965985835790184448) ) for the numbers for churn, subscribers, and ARPU on pages 67 to 70ish. Will update if I actually figure it out.

Ok, here is my attempt for their premium service:

pp68, 2017 ARPU = 5.32 EUR/mo.

pp69, 2017 Churn = 5.5%/mo.

pp79, 2017 Customer Acquisition, 48 Million at end of 2016, 71 Million at end of 2017. (71 - 48) / 48 * 100% = 48%. To convert to monthly, if I just divide by 12 it is 4%/month. If I do (1.48)^(1/12) it is 3.3%. I guess this is net of churn, So their fresh acquisition I would estimate at 5.5% + 3.3% = 8.8%.

I'll leave the math as an exercise to the reader, partly because I don't know what is being summed over in the formula.

I'd be curious to know at what number of users do they break-even if their cost of revenue, sales, and marketing are linear to users and their other non- financial costs remain fixed.

</comment><comment><USER18> Key numbers:

For the years ended December 31, 2015, 2016, and 2017, we generated €1,940 million, €2,952 million, and €4,090 million in revenue, respectively, representing a compound annual growth rate ("CAGR") of 45%.

For the years ended December 31, 2015, 2016, and 2017, we incurred net losses of €230 million, €539 million, and €1,235 million, respectively.

For the years ended December 31, 2015, 2016, and 2017, our EBITDA was €(205) million, €(311) million, and €(324) million, respectively.

For the years ended December 31, 2015, 2016, and 2017, our net cash flow (used in)/from operating activities was €(38) million, €101 million, and €179 million, respectively.

For the years ended December 31, 2015, 2016, and 2017, our Free Cash Flow was €(92) million, €73 million, and €109 million, respectively.

<comment><USER19> I think one more interesting number is churn of premium customers. It seems to be dropping over time and seems very good: [https://www.sec.gov/Archives/edgar/data/1639920/000119312518...](https://www.sec.gov/Archives/edgar/data/1639920/000119312518063434/g494294g32g10.jpg)

</comment></comment><comment> steve-benjamins I really hope Spotify succeeds. I've mentioned this before on Hacker News, but as an artist, the algorithmic playlists are amazing. On a good week I get ~4,000 new listeners. It's incredible. Discovery Weekly drives the most but Release Radar and Radio also send a good chunk.

Apple Music on the hand hasn't even verified my artist profile— which I need in order to view analytics. So I don't even know if people listen to me there.

<comment><USER20> I've said it before, but Spotify is the single most valuable subscription service I pay for. Video streaming is convenient, but some of the music I've come across on Spotify has literally changed my life and that would never have happened if I was still forced to torrent everything. It's just so easy, it's everything they said the steaming model would be.

<comment><USER21> Wrote a "persuasive speech" in college a decade ago about how to solve the problem the music industry was facing (piracy). I proposed an all you can listen subscription service, at a price point of say $10. Saying the record labels would work together to make this happen. My professor nearly laughed me out of the room when I proposed my thesis for the speech. I presented the speech anyways and got an A.

Today, Spotify is thriving as a company and the major record labels have their hands in it. Sure, they have some work to do to figure out how to become profitable and sustainable, but they've come a long way.

<comment><USER22> Could you link the paper? Reading a future prediction/expectation with such accuracy should be interesting.

<comment><USER21> Hey sorry I just saw this reply. Unfortunately, I can't find the paper, as it was written in word and pre-dates my days of using Dropbox (edit: it pre-dates Dropbox period). However, I was able to find the email thread with my professor, since Gmail is forever. I had to redact some personal information.

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

</comment></comment></comment></comment></comment><comment><USER23> A key metric not mentioned in the comments is premium average revenue per user (ARPU). It's consistently decreasing over the last 3 years:

2015: € 6.84

2016: € 6.20 (9% decline)

2017: € 5.32 (14% decline)

Also, the number of hours consumed per MAU as of December of each year is also increasing. I should have taken the average over the year for both but I am interested in the trend.

2015: 191 hours per year (17.4 billion/91 million)

2016: 217 hours per year (26.7 billion/123 million)

2017: 253 hours per year (40.3 billion/159 million)

<comment><USER24> This probably just means that more people are using family plans instead of paying individually. I'm part of a family plan, as are pretty my everyone else I know. It only makes sense. The upside is that canceling a family plan is much harder than a single one just due to the increased number of people involved who'll be inconvenienced.

<comment><USER25> It may also mean that they've expanded the user base in countries that have lower purchasing power than western europe, and thus probably lower pricing. That's surely a good thing?

<comment><USER26> Can confirm. Countries in Latin America are getting plans for the equivalent of $1.5

<comment><USER27> how easy would it be to VPN to a LA country, signup for the plan and then just have service for $1.5?

<comment><USER28> Probably not very hard. The biggest headache is probably that the recurring credit card purchases might be flagged and blocked for being an unrecognized international transaction. But then again, $1.50 won't raise alarms for many banks.

<comment><USER29> Don't they know the country where the card was issued? I.e. Spotify could refuse payment using non-LA card? Or, ideally, just bump it to the higher bracket (with appropriate notice).

</comment></comment></comment></comment></comment></comment></comment><comment><USER30> A brilliant CEO in Elk and an unfortunate industry. It will be interesting to see how they face marginalization. The risk factors of Apple being able to retain 100% of their revenue while Spotify being forced to give away 30% back to Apple is kind of sad. It really does feel like there's continuously diminishing opportunities for companies to get in front of consumers without facing some sort of platform tax.

<comment><USER31> Where do you see this 30% fee that Spotify has to pay to Apple? The app itself is free.

<comment><USER32> spotify premium is $10. it used to be if you subscribed to spotify premium through the app store it cost $13 because Apple literally wants 30% of any money that changes hands through the app store. otherwise you give spotify $10 directly and go on your way.

</comment></comment></comment><comment><USER33> Am I reading this right?

> No public market for our ordinary shares currently exists. However, our > ordinary shares have a history of trading in private transactions. Based on > information available to us, the low and high sales price per ordinary share > for such private transactions during the year ended December 31, 2017 was > $37.50 and $125.00, respectively, and during the period from January 1, 2018 > through February 22, 2018 was $90.00 and $132.50, respectively, in each case > excluding the Tencent Transactions (as defined herein).

> As of February 22, 2018, we had 176,976,280 ordinary shares outstanding. > Except as otherwise indicated, the number of ordinary shares outstanding > excludes (i) 14,095,254 ordinary shares issuable upon exercise of stock > options outstanding as of February 22, 2018 at a weighted-average exercise > price of $49.02 per ordinary share, (ii) 191,985 ordinary shares issuable > upon the settlement of restricted stock units ("RSUs") outstanding as of > February 22, 2018, and (iii) 6,720,000 ordinary shares issuable upon the > exercise of warrants outstanding as of February 22, 2018, at a weighted > average exercise price of $59.92 per ordinary share.

So their private valuation is somewhere between $15B and $23B?

</comment><comment><USER34> I am a huge huge music fan and meanwhile I tried most music services. I had Spotify for a while too.

But nowadays I prefer to use smaller sites like [http://www.bandcamp.com](http://www.bandcamp.com) and the sites of small labels.

For discovery I use [http://www.gnoosic.com](http://www.gnoosic.com) an AI recommender created by a fellow HN member.

For me, music consumption feels more adventurous this way.

<comment><USER35> Another avid Bandcamp user reporting in. Streaming isn't an option at all - there's just too much music missing, or it might be missing someday. However I maintain a very large collection of music with lots of obscure and rare music, which is very different from most listeners, which are, frankly, very well served by Spotify - for a very cheap price. Too cheap. Nobody is earning any money from streaming.

I couldn't imagine renting my music and I don't think it's a working business model for anyone but Apple, Google & Co., who can handle a loss.

</comment></comment><comment><USER36> I wonder if Spotify will become a music label for the same reasons that Netflix has been making their own shows? Spotify could be severely damaged if only a few labels were to pull their content.

<comment><USER37> Spotify would be severely damaged if _any_ major label pulled their content. That's very different from Netflix.

<comment><USER22> Well, not exactly. I don't have Netflix exactly because of that: not all major producers are on Netflix. That's the same as a major producer pulling something from Spotify.

There's no point if I'm still going to have to pirate half the stuff I watch or listen to, or pay twice for a subscription. (If you can subscribe in the first place, that is; last I heard one couldn't even watch game of thrones legally in the Netherlands if I wanted to.)

Well, and it also doesn't help that I've heard you need to unroot your android device (I will not be an unprivileged user on my own hardware) and enable DRM in firefox to watch Netflix. But the main reason is that every time I check, they don't have at around a third of what I would want to watch.

</comment></comment></comment><comment><USER38> Spotify is absolutely affordable especially there's a family plan and a student plan. I also stop pirating music (well I do work for a music company but that's not even a factor at all) because of Spotify.

</comment><comment><USER39> I remember reading how Spotify charges ~equal to Netflix, and their expenses will likely be much lower due to not needing to fund 'originals' and all.

While Netflix's originals also offer a distinct advantage over their competitors and increases the cost of switching, Spotify will likely have a very profitable future as a company, and I'm curious to see if their market cap will ever approach that of Netflix.

<comment><USER40> I was thinking that Spotify would actually need to go in the Netflix direction and have the music equivalent of "originals" (that is, signing artists and having their own label) because otherwise record companies would try to spin off their own services and take their content with them (which has happened in video streaming), or the moment Spotify gets too profitable they'll see an opportunity to increase content prices since they know Spotify can afford it.

<comment><USER41> The difference here is that presumably fewer record companies have the money to fund the development of their own streaming service. The movie industry has much bigger players in the game.

Additionally I don't think anybody's cracked the code on how to make reliably well-received music yet. You can't distract the audience with good visuals and special effects if the plot is no good like in a movie.

<comment><USER42> >The difference here is that presumably fewer record companies have the money to fund the development of their own streaming service.

They don't need it. With Apple Music, Google Play and Spotify majors can afford to destroy Spotify with royalties as they please, and users will just migrate to other platforms and continue to pay.

It's kinda funny once you think about it. Back in early 00's, when Napster appeared, everybody was "dude, record labels are dead, new business models, bla-bla-bla".

And now we are 18 years later, and majors are quite fine. And they did literally nothing for 18 years. No investments, no development, nothing. They just milked different internet services with their royalties.

<comment><USER35> > 18 years later, and majors are quite fine. And they did literally nothing > for 18 years. No investments, no development, nothing.

Well, except enabling you to buy your music from anywhere, DRM-free, playable with the software of your choice.

Is it really their fault that an all you can eat service for 10 bucks doesn't actually feed anyone, including the artists and the platform itself? It's simply too cheap.

</comment></comment></comment></comment></comment><comment><USER43> I really would like them to rebuild their Roku app. We recently got a TV with a Roku built in and it's been fantastic, except the Spotify app appears to be a beta from 2014 that never got finished.

We pay for Spotify but we use Pandora on the TV because of the app quality.

</comment><comment><USER44> I only left Spotify for Youtube Red/Google Music. It was not an easy decision because they have the best music selection and discover imo. They should acquire pandora and then I think they could dominate this space.

<comment><USER45> Its interesting that you praise Spotify's selection. I love Spotify, have been a Premium subscriber for 4 years, but there are hundreds of songs that I'd like to listen to but have never been available on Spotify. Meanwhile, they're available on Apple Music.

Also, some of the songs that I've saved over the past few years have been removed from Spotify's library - just yesterday I noticed that The Safety Dance is greyed out in my client. (Others include I Walk the Line, Save Tonight and Ambarsariya)

That said, I'm a Spotify lifer. I can't see myself leaving and as for the selection, I live in eternal hope that they'll improve it with time.

<comment><USER46> Don't blame the service for missing tracks but the artist's label for not putting them there.

I once complained to Sufjan Stevens' label about his albums missing in Spotify. They basically told me the deal with their distributor in Europe expired and they didn't look for a new one yet. "woops". It took them many months to get the tracks back.

</comment></comment></comment><comment><USER47> I want Spotify to do well, but the reason I'm cautious is the lack of true differentiation. Spotify has a great platform, but I'd worry about the level of control that the labels and artists have over their catalog, and the fact that they make a lot of money as a middleman between consumers and artists... I just feel like I could see another company coming and eating their lunch relatively easily. They're not like Netflix, who has differentiated themselves with exclusive content.

But I REALLY hope they succeed, because I've been a customer since they first announced US support.

<comment><USER48> Their competitive advantage is discovery and algorithmic playlists. For my part at least, what got me onto spotify was the large library but what keeps me using it is the discover weekly playlist.

</comment></comment><comment><USER49> I've tried Spotify but I cannot upload my own library (lots of mashup, asian music, remix, etc... that Spotify doesn't have), use it and retrieve it later if needed. I've been looking for a service to do that and I couldn't really find anything except iTunes match. But iTunes match is not really the same as spotify. So I did this spreadsheet [https://docs.google.com/spreadsheets/d/1ptV0sWO2tBT4c3G8aiB0...](https://docs.google.com/spreadsheets/d/1ptV0sWO2tBT4c3G8aiB0WgQ7asZFK2WBoIlg8OcBKg8)

<comment><USER50> You can do this in Spotify, it's actually one of the main reasons I use it. You need to add your local directory to the list of music sources. The trick to getting that music to sync to other devices is that you need to create a playlist and download it while both devices are on the same local network. Your personal library is never uploaded to the cloud.

<comment><USER49> The last time I tried it was really an ordeal to make it work. I should have taken better note as to why it wasn't a good solution.

</comment></comment></comment><comment><USER51> I've used Spotify for many years now, especially since growing up in Sweden where its been around for awhile, I currently live in North America.

There is a few things that bothers me though. One is that zero effort is spent on solving developer issues in regards to their public API. Some issues has been open far too long on github and the community is unhappy. The other is that they bought up EchoNest, which provided everything Spotify was lacking in terms of a music API, only to close the service and implement none of those features into their public API.

That's it.

</comment><comment><USER52> There has been a lot of discussion over the fact they are direct listing, instead of a traditional IPO, and how that will affect the price. However, does anyone know their motivation for doing a direct listing in the first place? They're still paying invest bankers and being 'engaged' with Morgan Stanley. So what's their reasoning, besides shits & giggles?

</comment><comment><USER53> I really like Spotify but I feel I'm soon going to rebuild an MP3 library. A mix of songs being removed (licensing), the apps being sluggish due to library size and local playlist features being rubbish for years. I've got enough "niche" read: game osts and that to make it worth while.

For anyone considering the same, beets (python) is your best friend

<comment><USER54> I prefer using Quod Libet. It does take a bit of customizing, but the benefit is that you can customize _everything_. It also doesn't try to do anything fancy with tags, letting you determine the entire structure you want to use, including custom tags.

It's the only credible alternative to Foobar2000 on Linux.

</comment></comment><comment><USER55> When Spotify launched in USA they increased the prices on their existing markets and lowered the prices for USA below their original. This left me with a sour taste. Now they complain about Stockholms infrastructure while also tax dodging. I know Americans are used to this incredible unhealthy relationship but to me it is rotten to the core.

</comment><comment><USER56> I cancelled my Spotify premium membership after being a customer for over 2 years, because they refuse to actually develop their application. Their music discovery and playlist radio functionality are horrific right now. They are on repeat essentially, with no way to unlike music that you have liked or accidentally liked.

<comment><USER57> i can add or remove songs from my library, which seems to have an effect on my discover weekly. I'm in a 3 month trial period for the 2nd time. its worth it at this rate

</comment></comment><comment><USER58> Will Spotify face the music for its unconventional public listing? [https://news.alphastreet.com/will-spotify-face-the-music- for...](https://news.alphastreet.com/will-spotify-face-the-music-for-its- unconventional-public-listing/)

</comment><comment><USER59> This Spotify IPO is similar to the Dropbox IPO, when they first started it was a blue ocean situation, almost no competitors, and now there are large tech companies competing, not sure what Spotify or Dropbox's advantages are against these large companies...

</comment><comment><USER60> [https://daily.bandcamp.com/2018/02/12/the- bandcamp-2017-year...](https://daily.bandcamp.com/2018/02/12/the- bandcamp-2017-year-in-review/)

</comment><comment><USER61> Huh, their operations have been turning out cash since 2016 ( _page 11_ ). Curious what they got for their €400 million of 2017 R&D spend ( _page 10_ ).

<comment><USER19> They might have bundled the compensation of their engineering team in that.

<comment><USER62> Agree probably mostly related to labour.

But further, could IP and acquisitions be split out and components attributed to this?

They file plenty of patents, and acquisition of entities such as Soundtrap could possibly have elements allocated to R&D. Is this standard/recommended practice?

</comment></comment></comment><comment><USER63> Spotify adds value to my life, I hope they are a wild success.

Also, RIP Rdio.

</comment><comment><USER64> Pandora started "the algorithmic playlists" but sadly their management team could not capitalize on it.

<comment><USER65> Eh, still the #1 streaming service in the USA. Record labels + licensing held them back a good bit and has kept them limited to the USA.

Spotify has some huge lawsuits underway for not clearing proper rights for music as well, I believe one is for 1.8 billion. They do have huge investment (ownership chunk) from at least one major label though I believe?

I don't get all the hoopla about Spotify's bad discovery stations. I notice this similar reality distortion field on reddit, feels like marketing.

And I will be keeping my hard drives full of media and cds.

</comment></comment><comment><USER66> I quit Spotify just recently and transferred to Apple Music. Main reason is because of their new policy on Family plan. I paid for a Family plan since its inception. Recently they updated their policy where every member of the Family plan must have the same address. My brother is working in another town and that doesn't mean we're no longer fam. That is one stupid policy.

<comment><USER67> Did you try contacting them? A divorced friend's daughter only lives with him at weekends, got cancelled from the family plan. He wrote them and got her added back.

I work away from home in another city weekdays and still in the family plan. If your brother never visits, I understand their rationale though.

</comment></comment><comment><USER68> Spotify stock is going to get crushed. you think the powerful investments banks of wall street will let someone go around them and not make an example of the stock? If everyone did this and gets encouragement from Spotify - <USER2> serious bucks that wall street looses. It may work in the future, but Bold Spotify and its shareholders will pay the price...

</comment><comment><USER69> I just recently signed up for spotify and honestly I love it. Only wish I signed up sooner.

</comment><comment><USER70> I will never forgive the computing world for abandoning files in favor of streaming.

We've gone from digital citizenship to digital serfdom...

<comment><USER54> No, we've simply gone from primarily direct purchase to primarily a subscription model, which is common in a lot of other markets.

And nobody has actually abandoned local files, you can buy and download more music than ever before, and own it forever (if you have backups).

<comment><USER70> You have to go to boutique retailers to get files that are anywhere near the quality of commercially-available CDs. And while subscription models may be common that doesn't make them pro-consumer, the right thing to do, or even a good idea.

<comment><USER54> Bandcamp is pretty big nowadays, but it could still be considered a boutique retailer when it comes to pop music. It depends a lot on the genres you prefer. No matter what audiophiles claim, 320kbps MP3/AAC/Ogg/etc. files _are_ equivalent audible quality to CDs, and that's what most online music stores sell.

Subscriptions have existed for hundreds of years, for anything from newspapers to soap. Priced correctly, subscriptions are perfectly fine. You pay a recurring fee for a service, and in return you don't have to worry about logistics or storage.

A subscription model could even work perfectly fine for cars (and does, in many cities), as long as it's correctly managed and fairly priced. Pay a set monthly fee, and you get access to a range of cars, parked in a central location near where you live. You don't have to worry about maintenance or depreciation, the car sharing company handles all of that. In return, the monthly rate is lower than what most people would pay to actually own and maintain a car of their own. It works because the costs are shared across a lot more people.

I know a lot of people prefer to own stuff, and I get it in a lot of cases, especially when you know you'll need the item in question for a long time, need to modify or otherwise do something that's outside of a normal use case. On the other hand, I think this race towards owning as much stuff as possible is driving western society to destruction.

<comment><USER70> > I think this race towards owning as much stuff as possible is driving > western society to destruction.

I agree except it is only through ownership that you are free of others' (e.g. your rentors') control. When that control is used almost universally to expand the financial relationship between rentor and rentee, or to enrich the rentor at the further expense of the rentee, it is imperative for individuals to remove themselves from its influence.

Also, if you load 320kbps MP3 and 14.4khz WAV into a spectral analyzer you will find differences, which will be detectable to anyone with the right critical listening skills.

<comment><USER54> There are good and bad subscription services, it has always been like that.

 _> Also, if you load 320kbps MP3 and 14.4khz WAV into a spectral analyzer you will find differences, which will be detectable to anyone with the right critical listening skills._

Do you listen with your eyes? A spectrogram can't tell you what your ears will hear.

The only way to know, is to do a proper double blind ABX test on files you encode yourself from known original files. You can use Foobar2000 with the ABX Comparator plugin for this purpose. I think you'll be surprised at just how low you can take the bitrate even on an ancient format like MP3, before you can tell a difference.

</comment></comment></comment></comment></comment></comment><comment><USER71> It would be super interesting to see if Dropbox and Spotify do well and set an example for profitable tech companies to go public. Companies like Twitter & Snap went public too early IMHO. It'd be a great signal to young entrepreneurs to chase a business model early on.

<comment><USER72> I think one difference between Dropbox and Spotify and Twitter and Snap is that Dropbox and Spotify sell a desirable, useful product to end users.

In other words, there's a clear function being offered and a clear path to giving them money in exchange for that function.

While both Twitter and Snap are functional, their only real offering is a slight twist on you general social network, and their only way to make money is by advertising to their vast consumer base.

As an investor I'd be far more interested in the revenue streams provided by Dropbox and Spotify.

<comment><USER42> I would disagree. I think Spotify is in much vulnerable position.

Twitter is selling user generated content, which costs nothing and not going anywhere. Twitter is as popular as ever. Trump, et al.

Spotify is selling something that belongs to major recording labels; Spotify just license it. Majors can change the licensing rules and torpedo the whole business in a one year, and there is nothing Spotify can do about it.

Of course they won't do it, it reckless, but I think they will be adjusting the licensing rules so Spotify will have almost zero profits for the years to come.

As investor, I would sleep much better as a Twitter shareholder.

</comment></comment></comment><comment><USER73> This and Dropbox, I'm not excited to invest in either, but I'll keep using their free-tier services, and I wish them the best.</comment>


Sisence - An Analytics Dashboard for Amazon S3 - <AUTHOR> http://www.readwriteweb.com/archives/sisence_an_analytics_dashboard_for_amazon_s3.php <comment><USER2> Here is the working URL [http://www.readwriteweb.com/archives/sisense_an_analytics_da...](http://www.readwriteweb.com/archives/sisense_an_analytics_dashboard_for_amazon_s3.php)</comment>


Ask HN: What is the best way to deal with recurring post-nasal drip? - <AUTHOR> From a young age, I've been told by doctors of whichever sort (I'm 28 at the moment - been having it off and on since forever - I was asthmatic for some time when I was prematurely born) that my throat clearing is due to a tic, asthmatic symptoms, or allergies. I seem to have it in periodic bouts of time, however with little rhyme or reason. Some things like weather, dairy intake, potentially cats, even absolutely nothing at times causes me to have a ton of mucus production. Essentially hit or miss. The only thing that's helped is Flonase, which gives me periodic skin rashes on my chest and random fevers which stop as soon as I stop taking it (under the advice from a doctor). Mucinex helps, but it's only as good as its effects last. I'm seeing an ENT this upcoming week and I'd rather have a more effective treatment. It's driving my husband and I nuts. Thanks for reading! <comment><USER2> I have less frequent and less severe onsets in the last few years. I am having good results with Xizal. It's over the counter, twenty-four hour and non- daily. I take it when I start experiencing mild symptoms and sometimes for a few days prophylacticly when I think prophylactic use is prudent, e.g. hard travel.

But I'm also managing my diet to avoid the non-acute allergens I'd been ignoring since junior high. Mainly potatoes and tomatoes. They're pervasive and avoiding them without diet drama in ordinary communal eating is impractical. Pizza is one of the four food groups of American social dining. Fries are another. Xizal handles my occasional consumption.

For many people, significant dietary modification is impractical because it dictates menu and grocery autonomy. "Just change your diet" is an _it works on my machine_. And the social implications of dietary restrictions are there whether it's veganism or a shellfish allergy.

Anyway, my non-expert belief diet modification has ended several continuous non-acute allergic reactions. My less mild allergies seem to mask milder food allergies. After avoiding tomatoes for a while, the effects (and non-effects) of other foods were above a new lower noise floor.

Not that I think it's all food and pills. Environment also plays a role. There's mold in the south. Pollen in the spring. Dander on the pets. A sigmoid with multiple inputs might be a good model for the perniciousness of allergies. The cost of changing the inputs may not be worth the benefits. Even if "a vegan lifestyle in the New Mexico high desert" might have a high probability of success, it's reasonable and rational and emotionally sound to decide the tradeoffs would be too much.

</comment><comment><USER3> Combining Benadryl & Zyrtec along with a cough drop containing menthol usually dries out my post-nasal drip before bed.

It might be worth taking generic Zyrtec daily if you find that reduces the problem. Allergy shots have also been super helpful in reducing my immune response to plants, cats & dust.

</comment><comment><USER4> Cheap and effective: Xlear nasal spray

Try it first thing in morning and just before bed for a week or two and see what happens.

It works off the theory that xylitol is a 5 carbon sweetener that bacterial will consume, but starve on. No antihistamines or other substances to make you feel woozy, tired, or amped up.</comment>


Sentry raises $16M to build APM for Developers - <AUTHOR> https://blog.sentry.io/2018/05/25/sentry-raises-series-b <comment><USER2> Gotta love TechCrunch's coverage of the round: "Sentry's technology originated as an internal tool for exception logging in Djana applications."

Djana is everyone's favorite type of application.</comment>


Ask HN: What bots have you built for profit and how are they doing? - <AUTHOR> <comment><USER2> E-CASUS.COM casus telefon dinleme ve telefon takip programlari ile casus yazilim, dinleme cihazlari CASUS TELEFON DINLEME VE TELEFON TAKIP PROGRAMI ILE CASUS YAZILIMLARI Casus cep telefon dinleme cihazi yazilimi ve programi, Cep telefon takip programi, Cep telefonu nasil dinlenir, Casus yazilim, Casus program,Kullanimahazir casus telefon programlari ile kullanimahazir telefon takip, telefon takip sitesi, telefon takip cihazi, telefon takip izleme, bilgisayardan telefon takip etmek, telefon takip sistemleri, akilli telefon takip programi, Android Casus telefon dinleme programi, akilli telefon dinleme programi, cep telefonu dinleme programi, en iyi en ucuz telefon dinleme programi, Telefon dinleme, Akilli telefon dinleme, telefon dinleme cihazi, telefon dinleme programi, telefon dinleme yazilimi, android telefon dinleme, cep telefonu dinleme, telefon dinlemesi, telefon dinlemek, telefon dinleme cihazlari, telefon dinleme uygulamasi, bilgisayardan telefon dinleme, iletisim 0 850 840 5 211 0 232 332 0 325 0 212 909 1 438 email@example.com [http://www.e-casus.com](http://www.e-casus.com)

</comment><comment><USER3> I've built a handful that search for evidence of newly opened businesses and sell the resulting information to various utilities companies.

There's about a 30% rate of business failing to register themselves and depending on the utility there are various bodies that offer incentive payments from either utilities providers themselves or central market agencies.

</comment><comment><USER4> I built some that post amazon affiliate links to pinterest.

<comment><USER5> How much does that generate?</comment></comment>


Web based file managers with jquery & PHP - <AUTHOR> http://www.dreamcss.com/2009/07/file-managers-based-on-jquery-ajax-php.html

<comment><USER2> The web is a great place to explore new and more usable alternatives for keeping track of entities/objects. It's too bad these are just flashy hierarchical tree views.</comment>


Crush the Castle developer's response to IGN's "In Defense of Game Clones" - <AUTHOR> http://www.jeffwofford.com/?p=989 <comment><USER3> I found it most useful to diff the two:

<http://diffchecker.com/pX8qoZsE>

No doubt having watched so many of his game mechanics become a huge hit in someone else's game gives the author a unique perspective. His point in this response may have been sharper if he had re-done the graphics, rewritten more of the content to be more accessible, etc. -- though the more I think about it maybe that's part of his point!

</comment><comment><USER4> Many of us here have experienced our work getting cloned by others. While I totally get that 'everything is a remix', I still can't help but feel that kick in the gut every time this happens. I am always bothered by how much I care. It took me a while to reconcile this emotional-jerk. Here's how I see it now:

John Cleese has a wonderful talk about how each project consists for 'open' and 'close' modes [1]. In one sentence - open mode is playing around with ideas and stumbling upon a gem in the rough, while closed mode is the execution of polishing that gem to perfection.

Seen through this framework, I would claim that 'cloning' is the act of jumping in on someone else's open-mode work, and forking a new close-mode.

Why do we care when someone does this? I think that as the open-mode is a highly creative process, it is hard to not get emotionally attached to the rough-gems it produces. Some will describe it as nothing shy of birthing an idea. In that sense, the kick-in-the-gut that I feel is probably the sense of loss associated with someone 'snatching my new-born'.

I'm not suggesting that cloning is good or bad, but just trying to provide a reasonable explanation to why we feel pain when someone clones our work - <USER2> though we know it's OK.

[EDIT: there are situations where 'cloning' is in essence thievery. And that's not OK. Where to draw the line deserves its own thread.]

[1] John Cleese on creativity <http://www.youtube.com/watch?v=VShmtsLhkQg>

<comment><USER5> I do not feel the kick in the gut when somebody imitates my work. I suspect the feeling is in large part due to how you are socialized.

This is pure speculation - but it is probably important to our social status that we are recognized for our contributions. If others can shamelessly take credit for all our brilliant ideas, they will increase in social status, while we seem not to contribute anything. Thus it makes sense that we would have a deeply seated, hardwired resentment for other people taking credit for our hard work.

Even if somebody copies you and then attributes the work to you, some of the credit for the idea still goes to that person rather than to you. Attributions are often overlooked by 'the public' and the social status often still goes to the person they got it from.

The power of this kick in the gut may lessen the more comfortable you are with your position, and how well esteemed you feel by the people around you. You may be less opposed to having your work copied if you feel, on a deep, emotional level, that you are still in general highly respected for your contributions even if you 'lose' a few to other people copying them and taking credit.

Which reminds me of this comic by Jessica Hagy: [http://thisisindexed.com/wp- content/uploads/2010/12/card2752...](http://thisisindexed.com/wp- content/uploads/2010/12/card2752.jpg)

<comment><USER4> You make a valid point but I think other factors are at play in my case.

For starters, the comic you've linked to suggests that I don't come up with many new ideas, but a glance at my HN profile might reveal otherwise.

I think it has more to do with how long I spend in open-mode. I suspect longer than others. I like to marinate on my ideas. I try to give myself a lot of time to solve a problem. The result is a certain level of depth that I might feel extra ownership over. This is a side-effect and an unintentional one at that.

I'm now working hard on optimizing my work-flow to counter this issue. Some of it has to do with releasing things sooner than later (thus feeling less invested in them at that point).

</comment></comment></comment><comment><USER6> This is going to be a much bigger problem for indies than it will be for AAA devs.

Treyarch aren't going to be worried about anybody cloning Call Of Duty, not because the gameplay is hard to copy or especially innovative but simply because they have put up big technical and artistic barriers to making anything close to their game.

Pandemic for example looks like something that could be cloned pretty exactly over a week or two by an MBA type with $1000 worth of outsourced developers. This doesn't make the game bad, it's just that some genres don't require much technical sophistication.

Having said that , minecraft clones do not seem to have been particularly successful in comparison to the original. Perhaps because minecraft is sophisticated enough that it would be difficult to keep up with the original. It would be interesting to see what the result would be if a AAA developer decided to release a huge budget but shameless minecraft clone.

</comment><comment><USER7> I authored a Windows shareware game in the early 90's that involved spaceships shooting rocks and flying saucers. It had a number of neat features, including ray-traced sprites, multiplayer, a tournament mode, customizable ships, and so on.

This eventually led to a legal setting where I had to answer questions like "is it true that when you shoot a large rock it splits into two medium sized rocks".

The answer to the above question is yes, for more than one game.

However, if I asked the question "is it true that you press Left and Right to rotate, Thrust to accelerate, Fire to shoot, and Hyperspace to jump to a random position on the screen", the answer would also be yes, for more than one game (Spacewar, 1962 would be one correct answer).

It'd be a sad world where my game didn't exist, because there was no one willing to make that exact game for 16-bit Windows in 1991. It would also be a sad world where we never went beyond Spacewar on the PDP-1.

This particular sword cuts both ways. As a fan of creating and not a fan of litigating, I'd rather err on the side of more and better games, rather than lock up ideas for decades with copyright law.

Pandemic 2.5 seems to have done well and is even going back up the charts. For games, doesn't a rising tide lift all boats?

</comment><comment><USER8> There's a thick line of acceptable to unacceptable and developers know when they are stepping over it or not.

IMO, Angry Birds is fine. Different device, game play taken to the next level, different theme. While I have never played 'Crush the Castle', I imagine the boulders the trebucet threw had different results.

As for unacceptable, how about NimbleBit's Tiny Tower vs. Zynga's Dream Heights? Dream Heights isn't in the spirit of the first game, it's the same game with 'better' (I actually prefer Tiny Tower's pixel art) graphics, almost screen for screen[1].

[1]] [http://www.slidetoplay.com/story/zynga-releases-tiny- tower-c...](http://www.slidetoplay.com/story/zynga-releases-tiny-tower-clone- nimblebit-strikes-back)

<comment><USER9> Thats not true at all. The article made a pretty good case that it is _not_ a thick line.

As for Zynga, everyone hates them, therefore using them in an argument instantly poisons the argument. Its a variant of Godwins law.

</comment></comment><comment><USER10> It took me awhile to figure out what this is. Jeff Wofford has cloned IGN's article and made small but important changes as way of giving IGN some of the medicine they are recommending for others.

</comment><comment><USER11> I'm surprised the article didn't mention the Tiny Wings/Wavespark thing. It's a great example of how far execution and polish (and for that matter, timing, venue, art style, etc.) can take a relatively simple, but unique idea and mechanic:

[http://forums.toucharcade.com/showpost.php?p=1604550&pos...](http://forums.toucharcade.com/showpost.php?p=1604550&postcount=606)

</comment><comment><USER12> I completely agree with the article. Are we going to start accusing every modern day author of copying Shakespeare because they share certain themes? What matters is the execution not the idea.

<comment><USER13> I think if you fully commit to that idea we sacrifice the creatives to the engineers. I'd prefer a strict but short term of copyright, giving the creatives the incentives to innovate in the short and engineers the freedom to optimize over the rest of time.

<comment><USER14> While the idea sounds appealing, look what it's done to the medical industry. I'd hate for gaming to get into such a slog of expensive/long/only big company's can play industry.

</comment></comment></comment><comment><USER15> What people call game cloning I call "entering later into a genre" or "reusing a mechanic" or even "reimplementing a game".

League of Legends and Champions of Newerth aren't "just" clones

Halo isn't "just" a Doom clone.

Bach Fugues aren't just clones of Buxtehude or Handel

Thunderstone isn't just a Dominion clone

Coincidentally, game mechanics ARE patentable. (Monopoly was patented, for instance). If you are that sure you're the owner of your idea, and want to lock of the mechanic from culture, fire away via your lawyers.

</comment><comment><USER16> Why's he giving free advertising to IGN if he disagrees with their article?

I take it the accusation he republishes about his colleagues is true, that they "ripped off" another game to make Crush the Castle?

<http://www.maxgames.com/game/castle-clout.html>

<comment><USER17> This raises a great point, is it OK to clone a bad game and make it fun? I would argue that the mechanics that make a game fun are more important than the idea so copying the 'fun' parts is probably worse than just copying the idea. It's also more obvious that your making a significant change.

Edit: The article suggests that angry birds differs because of the mechanics of a slingshot being more inviting. However an arbitrary score to advance vs. # of projectiles and targets killed makes is IMO a more important advance even if it seems trivial it makes a vary different game.

</comment></comment><comment><USER18> Well, there now seems to be case law on the topic: [http://www.wired.co.uk/news/archive/2012-06/20/tetris- clone-...](http://www.wired.co.uk/news/archive/2012-06/20/tetris-clone-ruling)

This could be interesting given the sheer number of clones on the app store. I wonder how many game developers actually have trade dress protection on their game?</comment>


How Howard Schultz returned to save Starbucks - <AUTHOR> http://www.nytimes.com/2011/03/13/business/13coffee.html?hp

<comment><USER2> Howard Schultz protests too much that he avoided Starbucks "losing its soul" while introducing sorbet, smoothies and Starbucks-branded instant coffee.

In 2011, Starbucks has as much soul as Seattle has an NBA team.

<comment><USER3> Also worthy, the "McMuffin" styled ripoff. [http://www.google.com/search?sourceid=chrome&ie=UTF-8...](http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=starbucks+introduces+mcmuffin#sclient=psy&hl=en&source=hp&q=starbucks%20mcmuffin&aq=f&aqi=&aql=&oq=starbucks+introduces+mcmuffin&pbx=1&bav=on.2,or.r_gc.r_pw.&fp=98286c98e5a0f890&pf=p&pdl=300)

</comment></comment><comment><USER4> Except for the pointless new logo, how much did they spend on that? If its about branching about beyond coffee shops I could've saved them millions, just delete the word "coffee" from the existing logo.</comment>


Strcpycat - <AUTHOR> http://byuu.org/articles/programming/strcpycat <comment><USER2> The information in the strncpy() / strncat() section is incorrect.

Firstly, strncpy() was _not_ designed to be a "safer strcpy()" at all. It was designed for storing strings in the manner of original UNIX directory entries: in a fixed size buffer, null-padded only if the stored string is shorter than the buffer. This is why it fills the buffer with nulls, and why it doesn't necessarily null-terminate the destination.

Secondly, contrary to what the article implies, strncat() does _not_ work this way: strncat() _always_ null-terminates the destination, and it doesn't write any extra nulls.

<comment><USER3> Thanks, I will make the necessary corrections shortly.

The strncat() behavior is quite confusing. I can understand expecting the buffer to already be null-padded and skipping that step, but always null- terminating the result seems to go against strncpy()'s expected behavior. It also looks mildly dangerous, as the NUL-write can be one after the size given.

<comment><USER2> It's not confusing when you realise that strncat() is _not_ a concatenating analogue of strncpy(). It's just a version of strcat() that accepts an upper bound on the number of characters copied.

</comment></comment></comment><comment><USER4> I use this:

            char*   scatn(char* ss, …);

            #define scat(args...) scatn(args, 0)

            char* scatn(char* ss, ...)
    	{
    		char *s;
    		char *new;
    		size_t len;
    		size_t n;
    		va_list ap;

    		/* first find the lengths of the strings */
    		va_start(ap, ss);
    		s = ss;
    		len = 0;
    		while(s != 0){
    			len = len + strlen(s);
    			s=va_arg(ap, char *);
    		}
    		va_end(ap);

    		/* make a buffer big enough for all strings + '\0" */
    		new = (char *) malloc(sizeof(char) * (len + 1));
    		if(new == NULL){
    			perror("Out of memory");
    			exit(EXIT_FAILURE);
    		}

    		/* copy the strings into the buffer */
    		va_start(ap, ss);
    		s = ss;
    		n = 0;
    		while(s != 0){
    			len = strlen(s);
    			memcpy(new+n,s,len);
    			n = n + len;
    			s=va_arg(ap, char *);
    		}
    		va_end(ap);

    		/* terminate the string */
    		new[n]='\0';

    		/* return the string: remember to free it! */
    		return new;
    	}

use like this:

                  s = scat("hello","hacker","news");
                  :
                  free(s);

I did have a version with only one loop and realloc but it turned out to be twice as quicker to go through each string twice. I have no idea why :)

<comment><USER5> If len overflows and wraps (i.e. the sum of string lengths is > SIZE_MAX-1), you'll allocate less memory than is required and memcpy will write outside of buffer bounds.

<comment><USER6> While that may be possible in some segmented systems, it's worth noting that on just about any modern system having a set of strings bigger than all available memory is unlikely.

</comment></comment></comment><comment><USER7> Yeah, don't use cstrings. If you're using C, use bstrings. If you're using C++, use std::string. Ignore the extra three bytes of memory overhead and enjoy the extra safety.

<comment><USER8> Yeah, there might be a few cases were null terminated strings work okay but mostly they are just a recipe for buffer overflows. Seriously, how many years is this going to take to figure out?

<comment><USER9> Well move semantics were only introduced in C++11. So until C++11 is supported natively everywhere you can't build something like:

      std::map<std::string, int>

without paying for a extra copy of the string on insertion. How many years since C++ has existed before they finally allowed for a single copy? Everything is relative. You might never have had a need to worry about that double copy, but there are other people who have.

<comment><USER10> As long as you're worrying about the double copy, you may as well worry about chasing the pointers in your map through the cache hierarchy. Usually I'd use unordered_map here unless there was a good reason not to.

</comment></comment></comment></comment><comment><USER11> 'that is what the libc runtime, which is the foundation that every language ultimately reaches down to in the end, is built around.'

Except, interestingly enough, Go code compiled with the standard compilers (5g, 6g, 8g, see [http://golang.org/doc/go_faq.html#How_is_the_run_time_suppor...](http://golang.org/doc/go_faq.html#How_is_the_run_time_support_implemented)). The Plan9 expats are hell-bent on doing things their own way, I am 70% in agreement with them :).

<comment><USER3> Well, Go code will eventually call into OS-level functions. And when your Linux kernel is built in C, the eventual calls to open(), etc will need null- terminated strings. So you will have to make a copy, eg std::string::c_str().

<comment><USER12> I was under the impression that std::string::c_str() did not make an allocation, but rather had the scope of the parent std::string, it does in fact return a const char* which can't be freed like normal. Either that, or nearly all code I've seen which uses it amuses memory leaks.

<comment><USER3> I suppose it could allocate an extra byte anyway, and set that byte to null. It seems like that could cause issues with memory alignment if you go thinking every string is 256-bytes, but it's 257-bytes because of that. Not that big of a deal, of course.

The length value in that case would also be invalid for C usage, because std::string does allow storing nulls inside the string, but it would eliminate the need for allocation.

</comment></comment></comment></comment><comment><USER9> Deficiencies in strl aside, most C programmers do not realize the target- padding that is going on with the strn family. Discussion is always good, but it will be much more of an uphill battle to introduce new routines than it would be to get strn users to use strl. I've seen too many people bitten by declaring something like:

      char buf[65536]; /* 64k is enough for everything! */

and using strncpy w/ sizeof(buf) to populate it.

</comment><comment><USER3> Oh neat, thanks for posting this.

I should note that I usually write articles to kick off discussions on my own forum, and then revise them after all input is gathered. They almost never appear on other sites, especially pre-revision.

I'm not saying the strmcpy/cat functions there now are the best solution, and I'm open to hearing what's wrong with them so that we can improve upon them.

<comment><USER13> Only commenting on the coding style: that kind of formatting is just looking for trouble. Quick, tell me which of the functions below contains a bug?

      //return = strlen(target)
      unsigned strmcat(char *target, const char *source, unsigned length) {
        const char *origin = target;
        while(*target && length) target++, length--;
        return (target - origin) + strmcpy(target, source, length);
      }

      //return = strlen(target)
      unsigned strmcat(char *target, const char *source, unsigned length) {
        const char *origin = target;
        while(*target && length) target++; length--;
        return (target - origin) + strmcpy(target, source, length);
      }

How about this?

      //return = strlen(target)
      unsigned strmcat(char *target, const char *source, unsigned length) {
        const char *origin = target;
        while(*target && length)
          target++, length--;
        return (target - origin) + strmcpy(target, source, length);
      }

      //return = strlen(target)
      unsigned strmcat(char *target, const char *source, unsigned length) {
        const char *origin = target;
        while(*target && length)
          target++;
        length--;
        return (target - origin) + strmcpy(target, source, length);
      }

Granted, it's a tiny example, but you're going to be writing fewer bugs in the long run if you avoid being clever. So here are two rules to start with:

1\. Never put more than one statement on one line.

2\. Never use the comma operator outside the "for" syntax.

</comment></comment><comment><USER14> The best system involves keeping end pointers, not lengths. Remaining length changes. End pointer never changes. At previous job we converted our whole code base to this system, and it worked great.

<comment><USER3> I figured the actual length value may be useful without needing pointer arithmetic, but this is a nice solution to the argument taking the size, and the return being the length (size-1, eg p[return]=NUL location.)

I'll consider this idea and write some comparisons to see how it works, thanks.

</comment></comment><comment><USER15> The new proposed functions, sounds very similar to stpcpy() and stpncpy()</comment>


Analytics data integrity is tough - <AUTHOR> https://pragmacoders.com/analytics-data-integrity/ <comment><USER2> I'm surprised that there isn't a mention of Google Dataflow aka Apache Beam. The Beam programming model is specifically designed to solve nearly all of the problems this post is addressing.

> It is likely that one day, I'll need to shard the data and distribute the > processing amongst multiple servers. But no company I've used this with > currently has enough data flowing through its analytics system, or intense > amounts of real-time processing, to warrant such a complexity.

This solution is so over-engineered for low data volume. You could capture all of the business value for 10% of the engineering effort by just dumping this data into a database meant for analytics. And then you'd at least have an answer for things like fixing broken data, making full-history business logic changes, merging events, etc.

If you're in AWS, sending your events from snowplow into S3 and then into Redshift/Athena/Presto/PostgreSQL is the way to go.

<comment><AUTHOR> I am aggregating events on a user-level and on a session-level so as to gain a higher level understanding of user behavior.

Like: \- "What is the median time that users spend on a given page?"

\- "How many events do users generally fire in their first 3 sessions?"

-"Who visited Page A, then Page B, THEN Page C?"

-"How many users who used this feature also used this feature within the same day?"

This is difficult to do with purely event-level metrics. It also takes a really long time and isn't suited to exploration.

We're already using a data warehouse (AWS Redshift) to analyze event-level metrics. But more complex queries are much easier, and much faster to do, when the data is stored in ways that are more suited to such calculations.

So, that's what this article is hopefully helping people to do!

For a related topic, "Entity-Centric Indexing" is the ElasticSearch equivalent of what I'm working on!

</comment></comment><comment><USER3> I'd recommend the event producer send a UUID that is then the primary key on the events table. The producer should also send the timestamp the event occurred.

I could be missing something, but that seems to solve both the duplicate event firing (an upsert command based on the UUID makes duplicate event writing a non-issue) and the timing issues.

Though I'm still incredibly skeptical of "real-time analytics." The number of business cases that require actual real-time analysis are pretty limited. High frequency trading and...?

<comment><AUTHOR> Let's say we'd like to know the median time users spend on a given page.

If we leave these at an event level, in a database, we'd need to:

\- Loop through all events

\- Group them by user

\- Figure out which ones represent the beginning of a page view

\- Figure out which ones represent the end of a page view

\- Subtract these two events

\- Aggregate these for all users in the database

\- Find the median

This can take a prohibitive amount of time for a pretty simple question. It'd be much faster if the data was already stored in a manner that is useful for such an exploration.

As questions become more complex - so do queries. They become hard do think about and the time it takes to process them explodes.

One related concepts is "Entity-Centric Indexing", which talks about this problem in terms of ElasticSearch.

Anywho - that's a long-winded reason why I'm taking this approach!

<comment><USER2> I answer these types of questions literally every day on Redshift. My data set is >1B events and more than doubling every year. You are underestimating the ability of a database to do its job.

Here's 18 lines of SQL to save you a week of writing a data pipeline in Go.

       WITH page_timings AS (
         SELECT page_type
              , event_timestamp_utc
              , LEAD(event_timestamp_utc, 1)
                  OVER(PARTITION BY session_id
                           ORDER BY event_timestamp_utc)
                AS next_pageview
           FROM events
          WHERE event_type = 'page_view'
        )
         SELECT page_type
              , MEDIAN(
                  DATEDIFF(sec,
                           event_timestamp_utc,
                           next_pageview)
                ) AS median_sec_on_page
           FROM page_timings
          GROUP BY page_type
    ;

<comment><USER4> It's been a while since I've done database stuff, so maybe this is a naive question, but how do you find the reusability of using primarily SQL/redshift to answer these sorts of questions.

I remember getting these sorts of questions and having to write the sort of queries that you just wrote, but then having to write like 10 other ones to solve related questions with subtle differences(such as the event_type would change or something).

<comment><USER5> Hello, you may like to try out what we've been working on at Holistics (www.holistics.io)! We make it easy for you to retrieve and share your SQL data.

We help in 2 use-cases to address the "duplicative" overhead of writing the same SQL query.

1\. Where you just need to adjust specific parameters/values in your query With Holistics, You can insert custom variables in your SQL query to make them dynamic to address the subtle differences without repeating yourself. See an example here: [https://docs.holistics.io/guides/adding- filters/](https://docs.holistics.io/guides/adding-filters/)

2\. Where you have chunks of text that are reused across multiple questions This can be long chunks of `CASE-IFs` or CTE/sub-queries that you use across multiple reports. You can insert a template snippet (chunks of SQL syntax for example) that can be reused across multiple questions. You can find more information here: [https://docs.holistics.io/query- templates/](https://docs.holistics.io/query-templates/)

<comment><USER4> Thanks for the response, I'm more on the research side of things now, so I don't have a current use case, but thinking about moving back to industry, and it's something that I remember having trouble with when I was last in industry.

</comment></comment></comment></comment></comment></comment><comment><USER6> I have a lot issues with this project and I'm on my phone so I can't outline them all. At quick glance, a few comments have already addressed some of these concerns.

But my biggest question is WHY did this person feel it necessary to do this project? From first glance, there is no way Crystal is producing the traffic required to roll this solution. There are dozens of companies that can solve this problem for a few hundred dollars a month and have handled all the problems discussed in this article at serious scale for their customers.

The most irritating part is that the developer states in the beginning why he did this: because it's fun.

Disclosure: I'm a founder of company whose core product is a real time analytics platform for web and mobile. Of course I'm going to recommend "Buy" for a small company like this in a Build vs Buy analysis. But when "professional engineers" say they're building projects "because they are fun", a lot of people suffer.

<comment><AUTHOR> I am confused at how your engineers learned to manage such a system if your take on this is that engineers should forego a learning opportunity and instead take an opportunity to give you their money.

I'm confused why you're angry at me exploring a subject and giving my learnings away for free to anyone who is interested.

I am also confused why you assume knowledge of how I use the things created in this article or the technical needs of projects I work on, when I have not described those needs nor described the data I work with.

Ah - You own a company that sells the thing I'm trying to help people do for free and with open-source tools. Never mind. Not confused.

In all seriousness - If I'm leading people in the wrong direction, I definitely would like to know a better direction to lead them. But that direction won't be to deposit money into your wallet. It will be to help them learn (hopefully) useful techniques to deal with their problems.</comment></comment>


8th Grade Twins take Astrobiology and Einstein Courses on Coursera - <AUTHOR> http://blog.coursera.org/post/54132976778/8th-grade-twins-take-astrobiology-and-einstein-courses <comment><USER2> I hate Coursera's model, though. They just replicated the school/college model into the web, and that's stupid.

Having to wait for sessions doesn't make any sense, as does having a pre- defined time to complete. The study material should be always available, and peer review could be constant.

It seems it was created to appeal academia though, so I see why it's like that.

<comment><USER3> As an anecdote in the other direction, I love the fact that the courses have a pre-defined schedule and end date.

Without deadlines, a serial procrastinator like myself would never finish a course.

At Udacity, I've successfully completed the two classes I took when they were first released (and had deadlines). On the other hand, I only lasted around a week with the two classes that are under "open enrollment".

<comment><USER4> Why not offer both options? Either take it at a predefined pace in line with academic semesters or at your own pace. Seems like it would be the best of both worlds.

<comment><USER3> See the answer below by sudont, which is spot on: [https://news.ycombinator.com/item?id=5961376](https://news.ycombinator.com/item?id=5961376)

</comment></comment></comment></comment><comment><USER5> I'm always a bit confused about these things. Coursera puts colleges courses on the Internet and they don't discriminate who takes them. Therefore people who couldn't take them before now can. No doubt there is a "tiger parent" somewhere streaming Coursera feeds via an iPad into their toddler's play area on the off chance it will engage them.

I think its great that we've increased the reach of this education but that people take advantage of it isn't a story in itself. A good story would be "8th graders solve their village's water problem by using civil engineering things they have learned on Coursera." Sort of like the guy who built a generator out of junk to charge cell phones in Africa.

<comment><USER6> Yeah, seeing the headline immediately made me picture a tiger parent submitting stories to HN...

["BREAKING: 5th-Grader Masters Beethoven Piano Sonata, Immediately Resumes Violin Practice"]

</comment></comment><comment><USER7> i like education, but for some reason this just seems like "hey two people are using coursera," which isn't really saying much. i guess i applaud the students for being in 8th grade and wanting more. it does not matter that they are twins. and "einstein" course? really? this hurts me inside as this is something in my area of study. please just call it what it really is: physics.</comment>


Think before returning items to Amazon, you may avoid a lifetime ban - <AUTHOR> https://news.alphastreet.com/think-before-returning-items-to-amazon-you-may-avoid-a-lifetime-ban/ <comment><USER2> Ive personally unpacked a few hundred returned orders over the course of 5ish years.

Many were completely unopened acompanied by a negative review regarding the quality of the product. Some 'customers' even claimed the product made them severely ill (they didnt even break the safety seal)

Im pretty confident there were some competitors trying to manipulate page rankings</comment>


Real-World Redis Tips - <AUTHOR> https://blog.heroku.com/real-world-redis-tips <comment><USER2> These are good. Some more:

\- along with multi use, use pipelined calls when you don't need a transaction but are going to need more than one reply rapidly. This can increase performance literally 10-100x if you need it and your not using it.

\- check replication buffers of your running more than a few gigs size data set. The default won't let for example a 30gb dataset to sync from master to slave and you will end up in the dreaded replication loop.

\- instead of not using 'keys' command, disable it in configuration.

\- remember to run twice the ram you need.

\- setup monitoring based on the output of redis-cli info replication and redis-cli info persistence.

\- it's better to run a handful of small to medium redis sharded than a single huge one. Safer, faster, easier to backup, easier to recover, and higher performance.</comment>


First non packaging grocery store opens in Berlin - <AUTHOR> http://www.berliner-zeitung.de/berlin/eroeffnung-verpackungsfreier-supermarkt-verpackungsfrei-einkaufen-in-kreuzberg,10809148,28399866.html

<comment><AUTHOR> Since the article is in german, here another article by the huffington post. [http://www.huffingtonpost.com/2014/07/15/zero-waste- grocery-...](http://www.huffingtonpost.com/2014/07/15/zero-waste-grocery- store_n_5585856.html?&ncid=tweetlnkushpmg00000048)

<comment><USER2> Please don't post non-English-language stories to HN. Of course we know that there is a wealth of content in other languages, but HN is an English-language site.

Why don't you post the other url as its own thread? It's a good story. Actually, you should post [http://www.mnn.com/money/sustainable-business- practices/blog...](http://www.mnn.com/money/sustainable-business- practices/blogs/is-a-zero-waste-grocery-store-possible) since the HuffPo page is copied from that one.</comment></comment>


Frosty attack on Android encryption - <AUTHOR> http://www.h-online.com/open/news/item/Frosty-attack-on-Android-encryption-1804644.html

<comment><USER2> This is hardly a new attack, and certainly isn't Android specific (as suggested by the article).

Similar attacks have been demonstrated on PC RAM for the recovery of similar encryption keys.

<comment><USER3> Yes, but the iOS crowd needed a distraction from the regression of their previously-fixed lockmode bug for marketing purposes.

<comment><USER4> iOS, Blackberry (old and X), and WP8 have platform security for FDE keys which would prevent this attack, or at least greatly complicate it.

</comment></comment></comment><comment><USER5> This same method can be used to extract encryption keys from RAM on a desktop computer. <https://citp.princeton.edu/research/memory/>

</comment><comment><USER6> The research that's new here is that they've written and released a recovery image which actually does the work of a "cold boot" attack. However, from their site:

"To break disk encryption, the bootloader must be unlocked before the attack because scrambled user partitions are wiped during unlocking."

Essentially, they are saying that this attack will _only work against devices that have unlocked bootloaders_. This means that it __won't work against anyone's stock Android device __, and will only work against devices where the user unlocked the bootloader to flash a new ROM, but didn't relock it again for some reason.

In other words, a practical development of a theoretical attack, which is largely theoretical.

<comment><USER7> I value your insights a lot.

But who the hell relocks the bootloader after flashing a new ROM? I've never met anyone doing that, and I'm surrounded by Android fanboys (myself included, at times).

For all I know, everyone that unlocked the bootloader once will keep it that way.

That's still a limited group of people, of course. But you seem to have a very different estimation on the number of devices that might be affected.

Can you help me see where I'm wrong or provide some more details about your rationale?

<comment><USER6> Totally, but remember that this is about recovering FDE keys.

I'm sure that there are plenty of people who leave their bootloaders unlocked, but they're probably also not encrypting their device, so they're out of luck in the case of a physical compromise anyway (and they're probably also running apps as root, so they're out of luck even when it's not a physical compromise).

I don't know of any way to measure this, but my anecdotal experience is that those who encrypt their devices also lock their bootloaders. Maybe I'm wrong, in which case the lesson is: if you're bothering with FDE, lock your bootloader.

<comment><USER8> A locked bootloader is just another hurdle which those guys didn't opt to attack, but might not stop others. It's been shown that it is possible to bypass locked bootloaders: -> Shortcut specific pcb pins to force USB booting on Exynos devices (c.f. unbrickable mod and similar, [http://www.xda- developers.com/android/explaining-and-advanci...](http://www.xda- developers.com/android/explaining-and-advancing-the-unbrickable-mod/))

<comment><USER6> Or for that matter, just remove the internal MMC and stick it in a reader (most Android devices don't use MTD anymore).

This was what was so shocking about the case with the FBI and the pimp, since that device wasn't even encrypted: [http://arstechnica.com/tech- policy/2012/03/fbi-stumped-by-pi...](http://arstechnica.com/tech- policy/2012/03/fbi-stumped-by-pimps-androids-pattern-lock-serves-warrant-on- google/)

</comment></comment></comment></comment></comment><comment><USER9> What I don't get about Android encryption is why I can't choose a long passphrase/pin for boot time, then still use other unlock methods. It seems that if I use a secure boot passphrase, I need to use it each time I unlock, which is too damaging to utility.

I'm mainly concerned about my data being accessible if the device is lost/stolen.

<comment><USER8> It's possible technically, however standard Android doesn't support it. Here's an app to do it (reqires root):

<http://f-droid.org/wiki/index.php?title=EncPassChanger>

</comment></comment><comment><USER10> Surely this could be solved by making the bootloader erase RAM at start-up?

<comment><USER9> They use their own bootloader, don't they?

And anyways, that just increases the difficulty - the data is still on the RAM chips and can be read via other means than the phone.

</comment></comment><comment><USER4> Yay for lack of platform security on Android. Just like Firefox, it has gone from the "open, nice, developer friendly" alternative to the security laggard.

</comment><comment><USER11> more details here <https://www1.informatik.uni-erlangen.de/frost></comment>