J.K. Rowling's Next Chapter: A Transfiguration Spell on the Publishing Industry - <AUTHOR> http://www.readwriteweb.com/archives/jk_rowlings_next_chapter_a_transfiguration_spell_o.php#.TgTb4Ej9Gsw.hackernews <comment><USER2> I'm really excited about this, not least because she claims another 18,000 words available through the site. (My nerd self rejoices!)

This is the publishing equivalent of the Stones or U2 doing what they want, since they own their own back-catalog, so at some level it's not that big a deal, less replicable by the small-fry. On the other hand, I enjoy seeing disintermediation, and I truly enjoy hearing the whining from publishers about stuff like this.

One of the major underdiscussed ways to get screwed writing is just not being able to learn how much you're selling. I worked for an author at one point with a major publisher. We literally could not get reports as to how many books had been sold, were shipped, were in bookstores. Nothing.

If you think that's shocking and we misunderstood, I did some research -- it's common. Isn't that strange? You get paid per book, but publishers can't tell you how many books you've sold. Really!

This lack of reporting happens in the music industry as well, for the same economic reasons.

Rowling is going to have access to realtime statistics of sales; along with owning 100% of proceeds, these statistics are a major change in the amount of knowledge and control she has.

<comment><USER3> Book publishing isn't quite as bad as music publishing, as far as I know. Even so, much of the revenue goes to the middle men. I don't think many people appreciate how difficult and rare it is to make a living as an author. A lot of the people who wrote the books you're staring at in a book store have day jobs. More so if you're looking at, say, computer tech books.

Self-publishing of books and music is already revolutionizing these industries, and will turn them upside down once it becomes the norm. More control, more money in the creator's pockets, and a closer relationship between creator and fans. It's a good thing all around.

<comment><USER4> > A lot of the people who wrote the books you're staring at in a book store > have day jobs.

And I don't think there's anything wrong with that, IMHO. Kafka had a day job at Assicurazioni Generali, but that didn't stop him writing The Castle or Metamorphosis.

<comment><USER3> Think about the implications though. Think about how many otherwise good books haven't been written because authors couldn't spare the time due to their jobs. Think about how many prospective authors haven't written their first books because they didn't have the time and/or didn't think it would make a significant amount of money.

</comment></comment></comment></comment><comment><USER5> I find the copyright and trademark information to be confusing:

"Harry Potter and Pottermore Publishing Rights © J.K. Rowling. Harry Potter characters, names and related indicia are trademarks of and © Warners Bros. Ent. All Rights Reserved."

So she owns the publishing rights to Harry Potter and she created everything about the series (names, places, characters) but somehow Warner Bros. owns the trademarks and copyright for the characters and names? Seems like she may have had to relinquish (or sell, rather) a lot of rights to get those movies made.

<comment><USER6> I can't find a citation anywhere but I'm pretty sure, to add to the confusion, that Disney owns the rights to the soundtracks.

</comment></comment><comment><USER7> People keep confusing publishing with distribution. She's self-distributing, not self-publishing. In fact, her publishers in the UK and the US are getting a cut of the Pottermore sales. The fact that users won't be able to download the books via the Amazon and iBooks stores but have to go to Pottermore and download the (presumably ePub) ebook directly are a consequence of her self- distribution. And it's a terrible idea. Users love centralized stores where they can find all their content with a single search, and most users have never run across an epub outside of these stores. If you can't search for it on Amazon or iBooks, it might as well not exists as far as these casual users are concerned.

Yes, obviously the popularity of Harry Potter is going to do a lot to teach casual users about the ability to get eBooks via other mechanisms than the centralized stores. But it's akin to trying to sell the physical books using a small independent bookstore (that just happens to be in everybody's town) but not stocking it in the big chains such as Borders. And really, it just strikes me as greedy. The only compelling reason to try and self-distribute is to avoid the 30% cut that Amazon or Apple would take. She's couching this as being a DRM-Free maneuver, but providing DRM-free ebooks on your site doesn't mean you have to take them off of the centralized stores too. Anybody who cares about the DRM issue can get it from you, and everyone else can get it from the store. And it may surprise you to realize that the DRM-laden books from the iBookstore are far more convenient for consumers than DRM-free epubs. I can buy a book on my iPad, then re-download it later on my iPhone without having to remember where I got the original epub or without having to manually sync it on to the device. And I can easily delete it when I'm done reading it and then re-download it again if I want it back for whatever reason. And I believe Amazon's Kindle app has a very similar experience.

J.K. Rowling, I love your books, but don't you think you're rich enough already? Give up that 30% and let me have my convenience back.

<comment><USER8> The lack of convenience of epub-books is caused by the lack of content only available in epub format. If DRM-free epub books were to become the dominant format, the convenience would come.

You argue that Rowling must be doing this for the money and that she will likely sell fewer copies because the distribution channel is foreign to the buyers. This doesn't quite add up. The other extreme analysis would suggest that Rowling is sticking her neck out for epub, trying to push it to the dominant position to force ereaders to take the format seriously.

Both analyses are extreme. The truth usually lies between the extremes.

<comment><USER7> I don't understand your position. The iBookstore is purely ePub. Amazon has already said they are adding ePub support to Kindle. ePub is already the dominant ebook format for interchange (I don't consider PDF to be ebooks).

If Rowling were to sell her books on the iBookstore, they would be every bit as much ePub as if she distributes them herself. What's more, the iBookstore doesn't mandate DRM, so even the argument that she's doing this in order to promote DRM-free is a red herring.

Sure, by all means distribute the ePubs yourself. Rowling can publicize DRM- free ebooks using the ePub format. But there's no reason for her to avoid also selling her books on the existing bookstores. Let the consumer choose which place to buy their book from. The only reason that makes any sense to avoid selling on the iBookstore is a desire to avoid giving the 30% cut to Apple. And convenience goes out the window as a result.

<comment><USER8> > I don't understand your position.

That's fully understandable. I based my comment on several misunderstandings.

So, with my newfangled knowledge, I might say that "self publishing of epub books" would become awesome if it were more common. Instead, however, I will refrain from digging myself deeper into this hole :)

</comment></comment></comment></comment><comment><USER9> DRM-free and watermarked is definitely a great way to keep the honest folks honest while allowing interoperability and usability of the content.

This sounds like great news for readers.

</comment><comment><USER10> Not a big fan of the Harry Potter series, book or movie, but have plenty of admiration for Rowling. Her execution has been tremendous throughout. She's pioneered so many new markets, at least i think so. I really wish the record labels and movie studios would follow her footsteps and consider a different business model. Its time to give much love, respect and appreciation back to the consumer. (Sorry for going off on a bit of a tangent)

<comment><USER11> I like HP and JKR, but I don't get the "new markets". Her books got made into movies, and lots of useless merchandise was created alongside it. What is new about that? Not that I blame her/them for making money, just that it seems a very traditional way to do so.

</comment></comment><comment><USER12> I definitely want this to lead in a new generation of self publishing for writers that can look as good as the big boys provided they have good editing, and a fantastic website.

</comment><comment><USER13> Can't stand the teen drama that is harry potter. It's no different than twilight, in my opinion.

<comment><USER14> There is a huge difference. Twilight is just a teenage love story, I couldn't even get through the first book and found it be complete crap. The creativity and details it took to create the world of Harry Potter is just amazing. You can even tell by the fans. Harry Potter fans are a bunch of nerds, Twilight fans are a bunch of love crazy teenage girls or adults who never grew out of that phase.

<comment><USER15> _Harry Potter fans are a bunch of nerds, Twilight fans are a bunch of love crazy teenage girls_

I'd argue that neither is superior to the other, btw - but since we're on Hacker News of all places, it's quite understandable that there'd be a lot of Harry-Potter-loving nerds here! The comment above would be (rightly) heavily upvoted if it had been posted on a Twilight forum...

<comment><USER16> Moral relativism at its worst

<comment><USER15> Do you really think you're inherently superior to the average teenage girl? Really?

On what metric? Ah, intelligence? Productivity? Technology skills? Contribution to humanity's scientific progress? And who decided that those are the way to measure the superiority of one human being over another?

You say "moral relativism", but I don't think you've looked up the definition of that term. Moral relativism is about the evaluation of moral judgements and actions, not of people's intrinsic worth.

Fundamentally, you're only "better" than a crazy teenage girl according to metrics that you've made up. For example, if the ability to give birth to and nurture children is picked, you (assuming you're male) would be intrinsically "worse".

<comment><USER16> You got it exactly backwards, I meant they were better. That you assumed otherwise tells us more about the relative esteem in which you hold the two than it does about anything I could say.

<comment><USER15> Ah, sorry, I, er, misunderestimated you then. I don't think it tells about the esteem I hold for those two groups - more about the assumptions I make about HN users.</comment></comment></comment></comment></comment></comment></comment>


Ask HN: What's with the new dark td above the orange td? - <AUTHOR> <comment><USER2> I would guess it's because Chuck Thacker died. See [https://cacm.acm.org/news/218536-in-memoriam-charles-p- chuck...](https://cacm.acm.org/news/218536-in-memoriam-charles-p-chuck- thacker-1943-2017/fulltext)

<comment><AUTHOR> I saw that as a post. Can you please explain the symbolism? I took a look at your link, but it didn't jump out me.

Is this how HN honors someone who has passed?

<comment><USER3> [https://hn.algolia.com/?query=black%20bar&sort=byPopularity&...](https://hn.algolia.com/?query=black%20bar&sort=byPopularity&prefix=false&page=0&dateRange=all&type=story)

<comment><AUTHOR> Thank you.</comment></comment></comment></comment>


Building a Relational Database Using Kafka - <AUTHOR> https://yokota.blog/2019/09/23/building-a-relational-database-using-kafka/ <comment><USER2> This is fetishizing complexity for no reason. Makes for an interesting blog post, but if any company told me they were doing this I would run the other direction immediately.

<comment><USER3> Great article. I think you might be taking a subtle point in the article for granted. Namely, the ability to assemble a fairly complex distributed system from open source components.

Democratisation of complex machinery like the raft and consensus algorithms, schedulers, append logs, query optimisers and so on is a superb thing. It is something that has only been possible in the last 3/4 years and would have been devilishly difficult before then without significant upfront work.

Fetishising complexity might be a bit strong here. Seeing more posts like this is a good thing.

<comment><USER4> You make a good counterpoint: it's awesome that this can be done concisely enough these days to fit in a _hobby_ blog post. That's new and demonstrates the approachability of these tools.

At the same time, OP is right: a _business_ doing this is making poor engineering decisions.

<comment><USER5> We don't know that yet! The post explains what they did but not the why of the problem. Maybe they have a good reason, maybe they don't.

But no need to jump to conclusions. I've seen plenty of bs fragile ducktape databases. Some of them exist because because someone wanted to hand-roll everything. And some exist because they were afraid to invent anything and ended up hacking together a bunch of garbage MySQL nodes. Because they didn't want "reinvent the wheel".

Specifics matter!

</comment></comment></comment></comment><comment><USER6> I am amazed by the number of negative comments this article is getting.. on _Hacker_ News of all places.

I don't see the article claiming people should drop PostgreSQL and use this, it's just asking people to give it a try if they are interested.

Much more interesting would be to discuss what capabilities would be different if this were a mature product.

For instance, this sounds interesting:

> One advantage of using Kafka is that multiple servers can all "tail" the > same set of topics. This allows multiple KarelDB servers to run as a > cluster, with no single-point of failure. In this case, one of the servers > will be elected as the leader while the others will be followers (or > replicas). When a follower receives a JDBC request, it will use the Avatica > JDBC driver to forward the JDBC request to the leader. If the leader fails, > one of the followers will be elected as a new leader.

</comment><comment><USER7> I like the idea, to use Apache Kafka as the underlying log. It's in principle what Martin Kleppmann suggests.

As I also want to use a distributed log in the future: Do you know Apache Pulsar or the underlying BookKeeper, which I think was especially made for a distributed WAL?

I might either want to use Apache BookKeeper or Apache Pulsar for a distributed log for scaling my Open Source temporal database, too. Furthermore I'd like to expose the API for streaming changes into the Browser or wherever you want to :-)

<comment><USER8> I've been itching for a while to build something on top of BookKeeper's DistributedLog. I suggest ditching the Pulsar and just using the DL.

<comment><USER7> I've already written with one of the core committers to BookKeeper and yes, I think I'll use it.

That said, I'm always looking for users and contributors to [https://sirix.io/](https://sirix.io/) or [https://github.com/sirixdb/sirix](https://github.com/sirixdb/sirix). That would be super awesome, but I'm sure you have your own ideas already for using BookKeeper.

I'm currently not sure if I first want to build a frontend (I'm a backend engineer, but would like to learn some TypeScript along with using Vue.js and D3js), to interact with SirixDB and to build interactive visualizations to compare revisions of JSON- or XML-resources in SirixDB (stored in a binary format of course highly optimized for space-efficient snapshots).

I think as I'm lacking users it might be more useful, but for sure I'm at least as eager to put forth the idea of scalable SirixDB databases :-)

So, I'd like to use BookKeeper most probably (single writer, read your own write consistency, using synchronous -- for a quorum -- and asynchronous replication for the rest, exactly once semantics...). The thing I don't like is that we also need ZooKeeper, but yeah.

BTW: Why do you think BookKeeper is better than Kafka for this purpose? :-)

<comment><USER8> This is a great review of Pulsar by Jack Vanlightly. If you haven't read it, I highly recommend it:

[https://jack-vanlightly.com/blog/2018/10/2/understanding- how...](https://jack-vanlightly.com/blog/2018/10/2/understanding-how-apache- pulsar-works)

> The thing I don't like is that we also need BookKeeper, but yeah.

Word on the street is now you can swap the consensus module in ZooKeeper. [update: just re-checked Pulsar's dev channel. Apparently one can use etcd instead of zookeeper.]

> sirixdb

Sirix sounds interesting but is a bit close to home to a (currently dormant) temporal DB project of my own. But the real issue is I usually do significant OSS contribution if I'm on the bench and not working.

Wish you success in your effort!

<comment><USER9> Being able to use Etcd instead of ZooKeeper is huge. Etcd is considerably easier to set up and manage, in my experience; not needing to manage another JVM component is also a big win. Thanks for sharing!

<comment><USER8> To be clear, it is BookKeeper that can alternatively use etcd not Pulsar.

[https://bookkeeper.apache.org/bps/BP-28-etcd-as-metadata- sto...](https://bookkeeper.apache.org/bps/BP-28-etcd-as-metadata-store/)

[https://github.com/apache/bookkeeper/commit/c7f1e70f437423ed...](https://github.com/apache/bookkeeper/commit/c7f1e70f437423ed70f6feb02ef14d2d032abb9e)

<comment><USER9> Absolutely. Pulsar looks nice, too, but I think BookKeeper not needing ZK gives it an edge over Kafka.

I have to admit that I'm not entirely clear on what Pulsar adds, given that BookKeeper implements the distributed log. Pulsar looks like it's a slightly higher-level abstraction that gives you a more traditional topic-based pub/sub mssaging API on top of BK, plus things like schemas and "functions"?

From what I can tell, BK supports log streaming just like Kafka, so you can use it to build a pub/sub system if you don't need all of Pulsar's features — right?

<comment><USER8> Pulsar is built on top of BK. BK has it own consensus mechanism (ZK, etcd), and Pulsar also has its own (low traffic) consensus via ZK. The article cited above does a very good job of addressing the advantages of Pulsar's architecture over Kafka's. Pulsar also provides for user defined functions (that can run on the broker). This is reminiscent of Postgres's User Defined Functions.

BK provides ledgers, DistributedLog provides log semantics on top of those ledgers. Pulsar builds a full blown messaging/streaming system on top of that.

Per this thread's OP, it seems to make more sense to use BK/DL directly if you want a WAL component to build a DB.

<comment><USER9> Thanks. Right, I know Pulsar is built on top of BK — it's just unclear how much extra value it adds.

I'm looking at using BK for a WAL-like component for a document store. It does involve multiple (many!) consumers tailing the log, but unlike your typical Kafka setup, there's need for no partitioning.

I was unsure of whether BK provides an API that's nice to use for non-Java languages like Go and Rust, which is what we use. Apache projects written in Java (or Scala), particularly those in the Hadoop ecosystem, tend to be very JVM-centric, and often they're impossible to use from other languages because there's no non-Java API. Kafka is an outlier here, but it certainly started out with a Java-only client and it took years for non-Java clients to mature enough to be usable.

I thought I saw that BK had a REST API, but now I see that it's just an admin API. From what I can tell, it's exactly like every other Apache Java project — there's a big monolithic Java client that's tightly coupled with the server, and to write a client in any other language you'd have to reverse-engineer it and essentially port the whole thing, because it's a "fat client" — it looks like it talks directly to ZooKeeper and "bookies", and has a lot of logic built in. The Bookie protocol looks like it's binary and hand-coded (not gRPC or anything nice). So disappointing! /rant

Edit: Looks like the files I was looking at are generated from Protobuf. So, yay. Unfortunately, that's just the Bookie protocol. The main client is still fat and in Java.

<comment><USER7> Regarding the question if Apache Pulsar or Apache BookKeeper for me it's not so clear which of both to use. I think it adds a lot of value if you add the WAL to the public API. Forgot how it's called, I think change data types (CDTs) without searching on google!? So basically you have the stream of events and expose these for use by applications :-)

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> Interesting article, but I think it is missing a solid comparison of such "overlay SQL" with more traditional database engine.

It isn't enough to show something can be done. One must also think if it _should_ be done.

<comment><USER11> The author is doing this purely for fun (I think, I'm not the author). They link to this: [https://www.confluent.io/product/ksql/](https://www.confluent.io/product/ksql/) which is apparently a production tested system that provides a SQL interface to a Kafka backend.

<comment><USER12> > provides a SQL interface to a Kafka backend.

Not sure if thats an accurate description of ksql.

</comment></comment></comment><comment><USER13> Why would I want a relational database living in Kafka? MySQL or Postgres are great at what they do.

<comment><USER14> I came here to ask this question. It's a really solid technical article. But apart from the sake of doing it, why would anyone ever want to? I'm not suggesting there's no scenario in which one would want to build a SQL database using Kafka, I'm just asking if anybody knows of one.

<comment><USER15> One use case for Kafka is log aggregation. Using SQL to analyze logs would be one use case.

</comment></comment></comment><comment><USER16> From personal experience, considering the reliability of Kafka, I'd implement this in reverse. Most relational databases are far more resilient in operation.

One idea I've had in the past is to implement a Kafka and Zookeeper layer for FoundationDB.

<comment><USER17> Interesting, what were the failure modes you encountered?</comment></comment>


Focusing on drug markets rather than users means less crime (2012) - <AUTHOR> http://www.economist.com/node/21548989

<comment><USER2> Once past the confusing label of DMI (Drug Market Intervention -- isn't throwing people in prison a type of intervention, too?), this seems to be about one main concept:

Approach drug dealers with alternatives for their lives, intervention that can actually work, rather than prison. In other words, an alternative, parallel criminal justice system that doesn't rely on incarceration or criminal records.

The rest is just adjustments to police response in the area.

The catch is it requires _support_ from the community. You need the people it lists[1] (i.e. enough of the community) behind the effort. Otherwise there's nobody to show up to the intervention meetings, and nobody to call police for aggressive intervention. And even if the community is behind it, the police and prosecutors have to be willing to agree to such deals, and set up such meetings.

This kind of non-criminal intervention not only has a good chance (much better chance than prison does) of changing dealers' minds about drug dealing, but their change in attitudes can also help change the minds of other drug dealers they're associated with. It also doesn't upend their lives with felony convictions.

It's worth noting also that this works because drug dealing socially isolates drug dealers from people who otherwise could help them. People involved with drugs won't always admit to it, even to close friends and relatives; and friends and relatives may not _want_ to know or be involved, because that might put _them_ at risk of being charged with drug crimes. Decriminalizing drugs would have much the same effect of removing barriers between drug dealers and their relatives and communities. The one thing this intervention approach misses, compared to decriminalization, is that while drugs remain illegal, the pathologies of black markets, created by criminalization, remain.

Who still thinks that our prison system works, on average, to rehabilitate? Those criminals who are rehabilitated do so in spite of the prison system and criminal justice system, not because of it. There's just overall not enough will or resources to go with a more productive intervention/psychological/sociological approach to most crimes.

[1] > "[When three drug dealers accepted the offer] they met not only police and prosecutors, but also family members, people from their communities, pastors from local churches and representatives from social-service agencies. Their neighbours and relatives told them that dealing drugs was hurting their families and communities."

</comment><comment><USER3> Criminalizing less victimless activity means less crime.</comment>


Best ways to fight fatigue when coding? - <AUTHOR> Just wondering if you have tips, somethings I just want to give up coding, I don't know, it is just one of those moments, really stressed out. <comment><USER2> First, don't set deadlines that make things difficult. Give yourself time to do the job properly. If the client is too demanding, they're going to be a problem in other aspects of the job as well. Gaining respect first comes from respecting yourself.

Second, get plenty of _quality_ sleep, that means no caffeine/alcohol for 6-8 hours before bed, and allowing yourself at least 8 hours of uninterrupted sleep.

Third, when working, get up and walk around once an hour, for at least five minutes. Have a healthy snack, do some push-ups, walk around the block, anything but sit.

Fourth, exercise! Do something that makes you sweat for at least 30 minutes a day. This one is a must, no excuses.

Fifth, stretch. This can be done during your five minute breaks. If you do nothing else in this list, do wrist flexor and extensor stretches (look them up). Otherwise, your coding career can get cut short (speaking from personal experience). Stretching takes 2-3 minutes and can make a world of difference; do them every time you're feeling stale. It's not possible to stretch too often.

Next, eat right. Keep your diet light, skip the soda and chips; eat fruits, nuts and veggies, drink water. You're already sitting on your ass all day, don't make it worse by fueling yourself with garbage.

Finally, have some hobbies that don't require a screen. Go hiking or biking. Play a sport. Learn an instrument. Bird watch. Build a tree-house. Catalog all of the different bugs in your yard. Whatever, just get away from screens.

All of this is obvious and a no-brainer, right? Well, look at the people who have been in a field for 20-30 years, the ones who stick to the above are easy to spot; they're the fit, happy, healthy people. The others are easy to spot too, because they look like hell. Get into these habits before you need to, you'll be saving your future-self a lot of trouble.

Hope that helps. Time for my workout...

<comment><AUTHOR> Thank you so much, you are right, I'll just drop some projects and try to focus on myself, I am in the border of a collapse if I keep going this way.

</comment></comment><comment><USER3> In my opinion, you only have about 4 hours maximum of quality coding in you a day - I want to stress the quality part of that.

You can code 12 hours a day, but compare the code in your first 4 hours to your last 4 and see what I mean.

Just stop coding. Do other stuff.

I find that I can extend that quality window by spreading it out more. Don't do 4 hours in a block. Do an hour, or 1.5 hours and break for 30mins. Clear the head again. Then go back, you can do this more - leading to > 4 hours of quality code

</comment><comment><USER4> I've been experimenting with working away from an Internet connection, and it's been working really well for most things. It has two great features:

\- it forces me to focus only on code when I'm coding, since 9gag/Reddit/Facebook aren't available, and

\- it forces me to get up and walk around and do physical things when I'm taking a break from coding

I find I am less fatigued and about as efficient, even if it means building a queue of Googleable bugs/questions that I return to when I'm back on the internet.

<comment><USER5> For osx, [https://selfcontrolapp.com](https://selfcontrolapp.com) is also useful for blocking 9gag/Reddit/Facebook, but it will still let you get on stackoverflow

I think for windows there is [https://getcoldturkey.com/](https://getcoldturkey.com/)

</comment></comment><comment><USER6> The one thing to avoid is too much caffeine, or any other stimulant. First thing in the morning, I have found that they make me feel like the most brilliant, innovative writer and developer ever. So I have some more, and a bit more, and a touch more...

Later on in the day, I cannot even understand some of my earlier thoughts, I get shaky and generally burnt out. Watch out for too much of a good thing.

I have also found that sleep, a brisk walk in the afternoons, and exercise after work help tremendously. Taking care of yourself will improve your work life greatly. Sure, you can grow more proficient and versatile sometimes by locking yourself in a room in front of a screen coding, but do it too much and the impact will be more negative than positive. YMMV.

</comment><comment><USER7> Take a break, read something not about coding. Go for a long walk or hike. Clear your head.

</comment><comment><USER8> Barbara Oakley has some great material on focused vs diffuse thinking. If you are struggling and frustrated with something it is probably the right time to walk away and give it a break. You can solve problems in your sleep.

</comment><comment><USER9> Back when I used to work a second job in the evenings, I used to get home around 4-5pm in the afternoon and have a nap. No more than 20 mins (set the alarm clock!). Made a huge difference.

</comment><comment><USER10> Try coding on a hammock.

Hammock Driven Development [https://www.youtube.com/watch?v=f84n5oFoZBc](https://www.youtube.com/watch?v=f84n5oFoZBc)

</comment><comment><USER11> For me

1\. I saw a specialist doctor because I was fatigued coding or not coding. Turned out I needed some treatment.

2\. In addition I quit my job in a stressful environment where I was pressured to get complicated work done quickly, with little or no help, working with people who were either arrogant or just too busy themselves.

Now I work 38 hrs a week and I am happy. I have energy to learn in my spare time, and I am just learning stuff I find interesting not to 'enhance my career'. Also have a family and sleepless nights due to having young children, but that is manageable if the work environment is good.

<comment><USER12> Would you mind elaborating a bit more about the treatment/diagnosis. I believe I am facing something similar, been having swings positive and negative, but it has been become mostly negative now.

<comment><USER11> I didn't feel depressed with highs/low, it was more like a foggy mind, wanting to sleep. Not like when you only get 2 hours sleep. Different feeling to that. Imagine getting 2 hours sleep without the adrenaline kicking in to compensate.

I was found to have low testosterone, adrenal fatigue and the Lymes disease bacteria showed up although the accuracy of testing for that is not perfect. Treatment based on rectifying those things - testosterone supplements, other supplements for adrenal, strong antibiotics for 6 months.

Hope you are able to sort your symptoms out. For hard to diagnose things you have to treat doctors like staff, i.e. know about the problem enough yourself so you can judge if the doctor is doing is a good job. It's a hassle and last thing you need when you are sick! Luckily I wasn't too sick but feel sorry for people who get fatigue really bad where they can't leave the house for days.

</comment></comment></comment><comment><USER13> If you feel like taking a break, just take a break. :)

When you feel better, come back to it--you aren't any worse for doing so!

<comment><AUTHOR> But the deadlines! I am sleeping so little, got too much caffeine in my system, dunno, thanks for the advice though, will try to take a nap and see some posts in 9gag

<comment><USER14> Coding is not an assembly line. If you're too tired when you do it, you move more slowly, and you make more mistakes. You then have to find and fix the mistakes, which is even harder when you're tired.

Extreme Programming (XP) is about going absolutely as fast as you can. Two of XP's maxims are "Quit when you're tired" and "Never work overtime for more than one week in a row" \- _because you go faster when you quit when you 're tired and don't work tons of overtime_.

<comment><USER5> If coding was an assembly line, you wouldn't want to do it while tired. That would be a good way to get <insert unpleasant description of industrial accident>.

Sleep is super necessary.</comment></comment></comment></comment>


The Linux Scheduler: A Decade of Wasted Cores (2016) - <AUTHOR> https://blog.acolyer.org/2016/04/26/the-linux-scheduler-a-decade-of-wasted-cores/ <comment><USER2> > The evolution of scheduling in Linux By and large, by the year 2000, > operating systems designers considered scheduling to be a solved problem…

If I recall correctly, 2000 is 2.3.x which had a braindead trivial scheduler. Basically it just looped through the process list and executed _goodness()_ and found the 'best'. This was obscenely slow when there were a lot of dormant processes. The process table links all mapped to the same cache set which led to cache evictions during the scheduling loop, even TLB evictions. Et cetera. It was just bad, really really bad. Compared to its BSD, Solaris, ... contemporaries, it was garbage.

The O(1) scheduler starts in 2.4 at the tail end of 2000 followed by the Completely Fair Scheduler in 2007, etc. And the Linux scheduler continues to get better. But in 2000, it sucked. Reeked.

<comment><USER3> From my experience, Linux CPU and I/O scheduling got good from 2.6.x (also around 2007) around when AIO became robust.

<comment><USER4> Isn't AIO still implemented with threads in libc? In that case, it's just the CPU scheduler that counts...

<comment><USER5> He means io_submit, that one is not done as user threads

</comment></comment></comment></comment><comment><USER6> Somewhat relevant: Threadripper CPUs, which are aimed at the high-end consumer market, are NUMA with two memory domains.

This makes the overall scheduling problem much harder, to the point that they were built with a special "Disable half the cores" mode and supporting hardware to give both memory banks same-speed access to the remaining ones.

<comment><USER7> Honestly, I believe the only reason they did this is so that when review sites run benchmarks the Threadripper won't look abnormally slow compared to the other chips out there.

I own one and in both work and play I have had zero issues. If I drop a frame here and there in a game due to some memory latency? Eh, could care less. If you can afford a Threadripper you can afford a 1080 Ti and a Gsync monitor to smooth out any issues you might run into.

<comment><USER6> You also can probably afford enough memory that the kernel can schedule your game entirely on one half of the CPU, but I don't know if that sort of scheduling (and defragmentation) is commonly used yet.

<comment><USER7> It's going to be on the application to be NUMA aware, regardless of how much memory you have. Games have never really had to deal with this due to the absolutely minuscule number of people who played games on server-grade dual socket Xeons. It'll be interesting to see if any of the big names (Unity, Unreal, Crytek/Lunberyard) ever care enough to make a patch for proper NUMA support.

<comment><USER6> It's entirely possible to do this at the OS level. It makes the scheduling problem much harder, yes, but a user can—for example—force their game to run only in one domain using CPU affinity, then somehow trigger the kernel to migrate all its memory to that domain. I know how to do the former, I haven't tried the latter.

It would be more difficult to do it automatically, but if NUMA systems become more common then I see no reason why it shouldn't be tried.

</comment></comment></comment></comment></comment><comment><USER8> Still 0% performance wins for Netflix. Not a "decade of wasted cores" for us.

<comment><USER9> Can you please explain that more?

<comment><USER10> The tl;dr is that unless you had an HPC workload with a NUMA box, you couldn't observe this bad behavior.

Which means in reality, you could name approximately everyone that ran into this issue on a single list: top500.org.

<comment><USER11> Is NUMA that rare? Back in 2007-2008 or so, my company bought some rack servers fitted with 48-core AMD Opteron (Magny-Cours), which weren't particularly expensive, and had a NUMA architecture.

We didn't have HPC workloads, just Postgres, which uses one OS process per connection, and performance was terrible as a result.

<comment><USER12> > We didn't have HPC workloads, just Postgres, which uses one OS process per > connection, and performance was terrible as a result.

I'd bet, but not too much, that that was more due to a) postgres' internal locking implementation scaling horribly at that time b) zone_reclaim_mode leading to bad behaviour around IO.

<comment><USER11> It's possible, but we weren't testing 48 clients at that time, just our normal workload, which had much less parallelism than that. The person in charge of setting up the systems explained the performance issues as being due to NUMA.

</comment></comment></comment></comment></comment></comment><comment><USER13> Article is from 2016. Previous discussion: [https://news.ycombinator.com/item?id=11570606](https://news.ycombinator.com/item?id=11570606)

<comment><USER14> Some brief notes from the Linux developers POV: [https://lwn.net/Articles/734039/](https://lwn.net/Articles/734039/) (section "Multi-core scheduling")

</comment></comment><comment><USER15> DBAs knew about this for many years now. We would simply change the schedular on the DB servers.

<comment><USER14> I think you might be confusing CPU schedulers and IO schedulers. Linux never had switchable CPU schedulers.

<comment><USER16> Sure it does: [http://man7.org/linux/man- pages/man2/sched_setscheduler.2.ht...](http://man7.org/linux/man- pages/man2/sched_setscheduler.2.html)

<comment><USER3> If you read the page, it simply states that you can tweak the parameters of the existing scheduler, not replace it entirely.

<comment><USER16> The scheduling policies listed on the man page I linked share some generic kernel code, but I wouldn't classify them as the same scheduler. If you look inside the kernel/sched/ directory in the source, you'll find that an instance of `struct sched_class` is defined for each scheduler class. There are dl_sched_class, rt_sched_class, fair_sched_class, and idle_sched_class. You can see in `pick_next_task` in core.c that these class structs are iterated over, calling into each scheduler's own `pick_next_task`: [http://elixir.free- electrons.com/linux/v4.13.9/source/kernel...](http://elixir.free- electrons.com/linux/v4.13.9/source/kernel/sched/core.c#L3207)</comment></comment></comment></comment></comment>


The History of Photography Is a History of Shattered Glass - <AUTHOR> https://www.nytimes.com/2017/11/15/magazine/the-history-of-photography-is-a-history-of-shattered-glass.html <comment><USER2> The History of Images Is a History of Symbolism</comment>


Transformational Entrepreneurship: Where Technology Meets Societal Impact - <AUTHOR> http://blog.startupcompass.co/transformational-entrepreneurship-where-techn-11064

<comment><USER2> I think this is the key paragraph:

"Silicon Valley now sits at the pinnacle of this socioeconomic transition, endowed with the potential to establish itself as the new center of the world economy and reignite the flame of inexorable progress. Yet in its current incarnation, it is unfit to do so. Silicon Valley has mastered the art of building high-growth technology companies but iit hasn't yet developed the moral compass to figure out what companies are worth building. There are simply too many talented entrepreneurs today building meaningless ventures. From advertising products that get people to buy things they don't need, to social games that are designed to addict people to wasting their time, to "mobile-local-social" products that attempt to leverage the latest technological trends without giving much thought to the importance of the problem being solved. Furthermore, the unquenchable thirst for growth that fuels much of the wealth creation must be carefully watched, for it could easily turn malignant and lead technology entrepreneurs to commit the same kind of economic atrocities as the financial sector."

<comment><USER3> Thank you; a particularly poignant final line... Powerful indeed</comment></comment>


At Twitter we're working on using Cassandra to store tweets - <AUTHOR> http://n2.nabble.com/Cassandra-users-survey-td4040068.html#a4040439

<comment><USER2> I read: "We evaluated a lot of things: a custom mysql impl, voldemort, hbase, mongodb, memcachdb, hypertable, and others"

I wonder if among the others there is Redis too, if so (and somebody at twitter is listening) I could love to know what do you think are the biggest weakness in Redis and if you think in the short term it's more important a fault-tolerant cluster implementation (the redis-cluster project) or virtual memory to support datasets bigger than RAM into a single instance. Thanks in advance for any reply.

<comment><USER3> Redis requires you have enough RAM to hold your entire dataset in memory...which seems impossible for something as large as twitter

<comment><USER4> Does Redis really require the entire dataset to be in RAM, or does it just require enough virtual memory to hold the dataset? In other words, couldn't you just let it swap?

<comment><USER3> From their FAQ:

Do you plan to implement Virtual Memory in Redis? Why don't just let the Operating System handle it for you?

Yes, in order to support datasets bigger than RAM there is the plan to implement transparent Virtual Memory in Redis, that is, the ability to transfer large values associated to keys rarely used on Disk, and reload them transparently in memory when this values are requested in some way.

So you may ask why don't let the operating system VM do the work for us. There are two main reasons: in Redis even a large value stored at a given key, for instance a 1 million elements list, is not allocated in a contiguous piece of memory. It's actually very fragmented since Redis uses quite aggressive object sharing and allocated Redis Objects structures reuse.

So you can imagine the memory layout composed of 4096 bytes pages that actually contain different parts of different large values. Not only, but a lot of values that are large enough for us to swap out to disk, like a 1024k value, is just one quarter the size of a memory page, and likely in the same page there are other values that are not rarely used. So this value wil never be swapped out by the operating system. This is the first reason for implementing application-level virtual memory in Redis.

There is another one, as important as the first. A complex object in memory like a list or a set is something 10 times bigger than the same object serialized on disk. Probably you already noticed how Redis snapshots on disk are damn smaller compared to the memory usage of Redis for the same objects. This happens because when data is in memory is full of pointers, reference counters and other metadata. Add to this malloc fragmentation and need to return word-aligned chunks of memory and you have a clear picture of what happens. So this means to have 10 times the I/O between memory and disk than otherwise needed.

</comment></comment></comment></comment><comment><USER5> Digg was considering Cassandra too <http://blog.digg.com/?p=966>

<comment><USER6> Digg is in process to convert all data to Cassandra (mentioned in their NoSQL East presentation).

</comment></comment><comment><USER7> Evan Weaver blogged about Cassandra ([http://blog.evanweaver.com/articles/2009/07/06/up-and- runnin...](http://blog.evanweaver.com/articles/2009/07/06/up-and-running-with- cassandra/)) awhile ago and used Twitter as a sample schema to show how it worked.

<comment><USER8> From that post: "Don't use EC2 or friends except for testing; the virtualized I/O is too slow" kind of restricts Cassandra usage for an average Web 2.0 startup

Added: just to clarify that: when starting small the last thing you want to do is either buy expensive infrastructure or hack something cheap instead of doing it properly. If Cassandra won't perform well in the virtualized environment, it will be necessary to first use some other means of storing data and "go cassandra" later if needed.

<comment><USER2> But everything resembling a DB is slow on EC2 since I/O is slow and memory accesses are slow, so I think the problem is EC2 and not Cassandra, MySQL, ...

<comment><USER8> Hence the hopes it won't be much more slower

</comment></comment></comment></comment><comment><USER9> Glad to hear they decided against writing their own in Scala.

</comment><comment><USER10> I love how twitter is constantly trying to reinvent the wheel for a simple message passing service.

<comment><USER11> A highly-scalable, multicast, real-time, distributed message passing system with full-text search, archiving, deletions, dynamic subscription changes, access restrictions, open APIs with quotas, abuse detection mechanisms, spam fighting algorithms, different authentication protocols, etc.

Still think it's so simple?

<comment><USER12> Okay, I'll take the bait...

> highly-scalable

Everything I take from our set of OTS components will have live, verifiable examples of running at scale.

> multicast, real-time, distributed message passing system

For this the choice really comes down to RabbitMQ or ejabberd. An XMPP solution is appealing for the obvious benefits of having a "presence" concept, but an AMQP solution keeps us closer to the current reality of Twitter.

So we start with a large distributed rabbit setup. A few clusters scattered across the world, connected via shovel pipes and using some nested queue/exchange plumbing to wire it all together.

> full-text search

Some queues dump to a FTS setup that keeps recent messages in RAM and migrates them to disk as they get older. SOLR is probably a better solution here, but I know the Sphinx delta/full-index model better and would reach for that first.

> archiving

Dump a firehose queue to disk and send copies/updates out to various services that want it. Pushing it to HDFS would probably be the first choice I would look at, just because it is easy to go from there to various Hadoop analytics.

> deletions

Nothing is ever deleted, it just becomes invisible. This is just a flag to add to the FTS indexes and archives.

> dynamic subscription changes, access restriction

Handled completely by the message queues.

> open APIs with quotas, abuse detection mechanisms, spam fighting algorithms, > different authentication protocols, etc.

None of these is particularly difficult once you have the general framework setup, and the structure of the system actually makes it pretty easy to wire in things like realtime abuse and spam prevention once you get rolling. There is only one thing hard about building a better Twitter, getting the userbase to make it worthwhile. If Twitter was in a different market where the network effect was not so strongly self-reinforcing then it would have been cloned and re-implemented better back when the fail whale was our constant companion, but this is not the case so making a "better" twitter is of little value.</comment></comment></comment>


Nvidia in a rough spot? - <AUTHOR> http://www.siliconmadness.com/2009/08/lga-1156-nvidias-chipsets-and-clarkdale.html

<comment><USER2> What a tricky spot to find yourself in. Time to get the R&D department cranking.</comment>


Ask HN: Good course on computer networking, tcp/ip, p2p, etc. - <AUTHOR> I'm looking for a good, hands-on course on networking that involves projects where you learn about tcp/ip, p2p networks, and even implement a torrent p2p client or something of that nature.<p>I couldn't find anything in-depth on coursera. <comment><USER2> Check out the curriculum for Network+. There are some great free resources out there and it may fit what your looking for.

[http://www.professormesser.com/network- plus/n10-004/professo...](http://www.professormesser.com/network- plus/n10-004/professor-messers-free-comptia-network-certification-training- course/)

and

[https://www.cybrary.it/course/comptia-network- plus/](https://www.cybrary.it/course/comptia-network-plus/)</comment>


Facebook IM Client Coming Soon - <AUTHOR> http://uk.blognation.com/2007/09/25/facebook-im-client-coming-soon/

<comment><USER2> one more level to the walled garden</comment>


Another CSS image replacement technique - <AUTHOR> http://nicolasgallagher.com/another-css-image-replacement-technique/

<comment><USER2> Neat trick.

It's mentioned in the article, but if you don't care about IE6 or IE7, you should consider [http://nicolasgallagher.com/css-image-replacement-with- pseud...](http://nicolasgallagher.com/css-image-replacement-with-pseudo- elements/)

It's a bit depressing that we're still fooling around with these different hacks though.

<comment><USER3> Time to stop supporting them. A lot of enterprise is holding out until they're forced to upgrade. Once they have to explain why the Internet is broken, they'll pull the trigger.</comment></comment>


Teardown and exploration of Apple's Magsafe connector - <AUTHOR> http://www.righto.com/2013/06/teardown-and-exploration-of-magsafe.html <comment><USER2> You are not the only one whose Magsafe connector burned up. On Apple's own site it has 8 5-star votes and 253 1-star votes. I've burned up two.</comment>


Flu-jab narcolepsy due to brain damage: study of Pandemrix vaccine - <AUTHOR> http://www.thelocal.se/20131219/swedish-narcolepsy-swine-flu-influenza-jab-vaccine-pandemrix

<comment><AUTHOR> This has also been confirmed by the UK government.

> _" It has been accepted that, on the balance of probability, vaccination has > contributed to… disablement"_

[http://www.theguardian.com/society/2013/sep/19/swine-flu- vac...](http://www.theguardian.com/society/2013/sep/19/swine-flu-vaccine- narcolepsy-uk)

To put a human face on narcolepsy, and a life-time of disability and drugs, here's the DailyMail.

[http://www.dailymail.co.uk/news/article-2534210/Girl- falls-a...](http://www.dailymail.co.uk/news/article-2534210/Girl-falls- asleep-30-times-day-taking-flu-vaccine-Teenager-receive-pioneering-drug- battle-against-narcolepsy.html)

[http://www.dailymail.co.uk/health/article-2431811/Boy-7-deve...](http://www.dailymail.co.uk/health/article-2431811/Boy-7-developed- narcolepsy-swine-flu-jab-denied-compensation-ill--sleeps-19-hours-day.html)</comment>


Why Are We Surprised When Buddhists Are Violent? - <AUTHOR> https://www.nytimes.com/2018/03/05/opinion/buddhists-violence-tolerance.html <comment><USER2> > There is a philosophically problematic presupposition that also figures in > widespread surprise at the very idea of violence perpetrated by Buddhists — > that there is a straightforward relationship between the beliefs people hold > and the likelihood that they will behave in corresponding ways.

Bingo! This is maybe compounded for Buddhism because, chances are, your average western person knows few or no people who are Buddhist in the way Myanmar's people are (i.e., have it woven into their cultural and ethnic identity). I imagine that most westerner's associate Buddhism with the laughing genial Buddha statue, or celebrities who subscribe to what this article describes as "blandly nonreligious mindfulness meditation now becoming more ubiquitous even than yoga".

<comment><USER3> That article really beats around the bush. Let's just call a spade a spade: it's racism. It's no less racist to believe an ethnoreligious group of people intrinsically non-violent than to believe them intrinsically violent. Both cases are failures to recognize and appreciate the universal human condition. In both cases human beings are reduced to caricatures.

I doubt the author would discuss Kantian ethics when criticizing the Alt Right. That he does here without ever admitting the obvious is disheartening.

To be clear: we're all guilty of this. A tendency toward racist thinking (more generally, imbuing intrinsic traits to an ethnic group based on cultural stereotypes) seems to be part of the human condition. The worse sin is in denying it.</comment></comment>


Is there a way to get around Wikipedia's Anti-SOPA blackout? - <AUTHOR> http://webapps.stackexchange.com/questions/22911/is-there-a-way-to-get-around-wikipedias-anti-sopa-blackout

<comment><USER2> Yup: <http://www.theobamastore.com/stopsopanotknowledge/></comment>


Understanding gradient descent - <AUTHOR> http://eli.thegreenplace.net/2016/understanding-gradient-descent/ <comment><USER2> I've always thought that this was a fun way to look at it:

Suppose you solve the differential equation,

        x'(t) = -f'(x(t))                    (1)

Then,

        d/dt f(x(t)) = f'(x) x'(t) = - [f'(x)]^2 <= 0

In other words, if `x(t)` follows a path that solves (1), then `x(t)` follows a path that decreases the value of `f(x)`.

The gradient descent algorithm is a numerical approximation to solving (1) using the forward Euler method:

        (x(t_(n+1)) - x(t_n)) / dt = -f'(x(t_n))

<comment><USER3> Perhaps an example might help.

Say x(t) = exp(-t)

f(x(t)) = (x^2)/2

Then it satisfies conditions imposed by parent, namely x' = -x = -f'

<comment><USER2> Nice. I think you mean f(x) = 0.5*x^2 though.

</comment></comment></comment><comment><USER4> I need to write something about conjugate gradients. The first thing we did in my optimisation class at CIMAT was gradient descent and showed how it was so slow compared to everything else. In practical applications, there's way too much magic in choosing the so-called "learning rate" (known as "step size" in numerical optimisation). Even choosing an optimal step size per iteration (by doing a line search), gradient descent is still slow. Conjugate gradients are a bit more difficult to understand, but they're not _that_ hard to implement if you just blindly copy a few formulae, and they are a _dramatic_ speedup.

All of these blog posts about gradient descent feel like everyone keeps going on about what a great algorithm bubblesort is because it's so easy to understand and implement.

<comment><USER5> Claiming that gradient descent is a great algorithm certainly wasn't the goal of this article. But GD is the basis from which most other iterative algorithms stem, and it's worthwhile having a good understanding of its inner workings as a prerequisite for more advanced algorithms.

Personally I found [http://sebastianruder.com/optimizing-gradient- descent/](http://sebastianruder.com/optimizing-gradient-descent/) interesting - it goes into the advanced variants like nesterov, adadelta, etc

<comment><USER4> I realise, but since a lot more gets written about steepest descent than everything else, it also gets implemented and used a lot more often, even when other alternatives are readily available and already implemented. For example, the trainscg method of Matlab is relatively obscure thus unused and not frequently re-implemented.

There's an implicit endorsement in these blog posts. People wouldn't be spilling all this ink nowadays on plain adalines, even if they're building blocks for backprop networks, right? So by writing so much about it, people get the impression that it has to be studied and implemented very carefully, to the exclusion of better methods.

<comment><USER6> As the above poster said, if you can introduce people to a topic by explaining a simplified or 'naive' solution/algorithm, then that could be a good springboard to learn more about the topic. Which is why there should be more comments presenting improvements and alternatives, rather than criticising what is obviously meant as a primer on optimisation. From the intro:

 _Gradient descent is a standard tool for optimizing complex functions iteratively within a computer program. Its goal is: given some arbitrary function, find a minima.

For some small subset of functions - those that are convex - there's just a single minima which also happens to be global. For most realistic functions, there may be many minima, so most minima are local.

Making sure the optimization finds the "best" minima and doesn't get stuck in sub-optimial minima is out of the scope of this article.

Here we'll just be dealing with the core gradient descent algorithm for finding some minima from a given starting point._

<comment><USER7> The way the author uses the word "minima" as if it was both singular and plural is a really discouraging sign.

</comment></comment></comment></comment></comment><comment><USER8> If only there was a faster known way to get the inverse of a matrix... Gradient descent seems like an ugly hack compared to that (having taken an ML class)

It reminds me of taking the derivative by manually measuring the slope between 2 points on the curve, instead of, you know, directly getting the derivative

<comment><USER9> [http://www.johndcook.com/blog/2010/01/19/dont-invert-that- ma...](http://www.johndcook.com/blog/2010/01/19/dont-invert-that-matrix/)

<comment><USER10> This is the clearest signal to tell apart people who have studied applied math and people that haven't.

</comment></comment></comment><comment><USER11> What about minimum of a non-differentiable function? I've been using something like Nelder–Mead method (downhill simplex method / amoeba method) [1], but it gets slow near the minimum.

[1] [https://en.wikipedia.org/wiki/Nelder–Mead_method](https://en.wikipedia.org/wiki/Nelder–Mead_method)</comment>


The best minds of my generation - <AUTHOR> The best minds of my generation are thinking about how to manipulate people into buying things they don't need.<p>This is a modified version of "The best minds of my generation are thinking about how to make me click on ads." My attempt was to make this more direct at the intent of clicking on ads. <comment><USER2> More like highly privileged rich kids from Stanford and MIT are thinking about how to manipulate people into buying things they don't need.

The best minds can't be swayed from their dreams and goals. Otherwise were they truly the best minds to begin with?

<comment><USER3> You can be extremely talented and have no dreams or goals.

<comment><USER4> Surely best does not only mean talent

</comment></comment></comment><comment><USER5> > into buying things they don't need

with money they don't have, to impress people they don't like - George Carlin

<comment><AUTHOR> Awesome. Here you go:

The best minds of my generation are manipulating people into buying things they don't need with money they don't have, to impress people they don't like

</comment></comment><comment><USER6> Perhaps the best minds are thinking about the challenges of teaching middle school special education in Detroit or how to deliver basic healthcare in East Africa. Are the minds of marketers better? Really?

</comment><comment><USER7> That's a natural extension of "software is eating the world".

The cost of experimenting with a small team making offers on the internet is small, but the potential returns are enormous. You can afford to have 100 offers rejected because when you find that 1 offer that catches on it really, really catches on.

The best minds recognize the cost/benefit analysis.

</comment><comment><USER8> _...starving hysterical naked,

dragging themselves through the negro streets at dawn looking for an angry fix,

angelheaded hipsters burning for the ancient heavenly connection to the starry dynamo in the machinery of night,..._

[http://www.poetryfoundation.org/poems-and- poets/poems/detail...](http://www.poetryfoundation.org/poems-and- poets/poems/detail/49303)

</comment><comment><USER9> No, they are building amazing software, infrastructure & services.

They are being paid by people who want to sell things.</comment>


Offliberty – Evidence of offline life - <AUTHOR> http://offliberty.com/

<comment><USER2> I think most people misunderstand what this site does, totally understandable given the extremely vague impression it gives off.

It is basically a site which downloads YouTube movies.

<comment><USER3> Downloading tracks from Soundcloud and Mixcloud is what I use it for. I think it can also rip PDF's from Scribd but I'm not sure.

For Youtube I can recommend keepvid.com

<comment><USER4> No action by Google yet? They are using Adsense and it probably violates Adsense TOC!

</comment></comment></comment><comment><USER5> The authors of this site have "technical people" bias. Because the spent an inordinate amount of time thinking about their idea, project, whatever... THEY BELIEVE EVERYBODY DOES!!

I have no idea what this thing is , what it does and way worse than that, there is no info in the site for those that want to use it.

<comment><USER6> I found there was a visible link on the page that said "FIRST TIME HERE?! Better late than never - Read THIS", which takes you to [http://offliberty.com/#about](http://offliberty.com/#about). The below content is what appeared.

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

Offliberty lets you access any online content without a permanent Internet connection. Today many websites offer nice content but most are difficult to browse offline. If you have limited access to the Internet you can use Offliberty to browse any content later - being offline.

If the Internet bus visits your village only once a week or your grandma doesn't let you use Internet more than 1 hour a day - Offliberty is for you.

Offliberty DOES NOT host and has NO RIGHTS to any content. You must agree with our Terms of Service and other sites usage rules before you take them offline. Sometimes browsing offline content requires permission from its author or owner. Remember to be sure that you have it. We ARE NOT taking any responsibility for Offliberty users activity.

<comment><USER7> I read that and _still_ had no idea what it was really meant to do, until I came here and read the comments.

And I'm a web developer.

</comment></comment><comment><USER8> OK, I don't get it, at all.

I have tried to paste random URLs and they all return "Offliberating this URL is not possible yet."

What is this for? Am I missing something?

edit: Now I pasted this link

[http://www.washingtonpost.com/politics/even-as-marijuana- gai...](http://www.washingtonpost.com/politics/even-as-marijuana-gains-ground- some-tightly-enforce- laws/2014/06/21/2d0f8230-d21d-11e3-9e25-188ebe1fa93b_story.html?hpid=z1)

and it returned links to two random PDFs from the article.

I still have no idea what is this for. I guess it's not for me...?

edit2: Oh, now I got it. It's for ripping videos from youtube. I guess.

<comment><USER9> It seems to let you download MP4s from YouTube moderately easily (I determined this from the node-offliberty package, in the comments below). Beyond that, I have no idea. I think this could be a candidate for the worst explained and executed web site to hit the frontpage of HN in a good while.

<comment><USER8> Yeah, I found that out too, by googling the name of the website.

It probably works for ripping videos from other websites, too.

I have no idea why is this at the frontpage.

edit: yep, it works for ripping the videos from wapost too.

pasting

[http://www.washingtonpost.com/posttv/national/shiite- turkmen...](http://www.washingtonpost.com/posttv/national/shiite-turkmen- villagers-near-baghdad-flee-to-kurdish-controlled- areas/2014/06/21/e827f2fa-f95f-11e3-9a6b-d701527e9d5d_video.html?hpid=z5)

links to the URL of the mp4 file. Well, I guess it's kinda useful.

</comment></comment></comment><comment><USER10> An explanation on the site of what it actually does would be helpful.

<comment><USER11> There's a link at the bottom, which links to [http://offliberty.com/#about](http://offliberty.com/#about).

 _Offliberty lets you access any online content without a permanent Internet connection. Today many websites offer nice content but most are difficult to browse offline. If you have limited access to the Internet you can use Offliberty to browse any content later - being offline.

If the Internet bus visits your village only once a week or your grandma doesn't let you use Internet more than 1 hour a day - Offliberty is for you.

Offliberty DOES NOT host and has NO RIGHTS to any content. You must agree with our Terms of Service and other sites usage rules before you take them offline. Sometimes browsing offline content requires permission from its author or owner. Remember to be sure that you have it. We ARE NOT taking any responsibility for Offliberty users activity._

</comment></comment><comment><USER12> I've tried three different URLs and none of them seems to work.

What's the catch?

</comment><comment><USER13> I found this on their website , but still don't know how it works : Offliberty lets you access any online content without a permanent Internet connection. Today many websites offer nice content but most are difficult to browse offline. If you have limited access to the Internet you can use Offliberty to browse any content later - being offline.

If the Internet bus visits your village only once a week or your grandma doesn't let you use Internet more than 1 hour a day - Offliberty is for you.

Offliberty DOES NOT host and has NO RIGHTS to any content. You must agree with our Terms of Service and other sites usage rules before you take them offline. Sometimes browsing offline content requires permission from its author or owner. Remember to be sure that you have it. We ARE NOT taking any responsibility for Offliberty users activity.

</comment><comment><USER14> And simple interface waiting for improvement [here]([https://github.com/radubogdan/node- offliberty](https://github.com/radubogdan/node-offliberty))

</comment><comment><USER15> The idea is to let you download content that is normally streamed. I've been using this service for quite some time now. It will work with many websites such as YouTube or Soundcloud.

<comment><USER8> ....pornhub doesn't work though. (Yes, I had to try, for science.)

</comment></comment><comment><USER16> I'm sorry I typed 'google' in the input bar... it gave me an error saying I should put a blahblah url. I have no clue what this thing is :)

</comment><comment><USER13> I tried it with facebook.com and it returned an MP3 file , that when I try to download it , it says file not found, the weirdest website ever .

</comment><comment><USER17> Well, strange website! It seems to work only with YouTube or Dailymotion (and similar media sites)?? It gave me links to mp3 and mp4 files.

</comment><comment><USER4> The website has ugliest TOS page : [http://offliberty.com/tos/](http://offliberty.com/tos/)

</comment><comment><USER3> For those wondering what it does, you can use Offliberty to download mixes from Soundcloud or Mixcloud.

</comment><comment><USER18> Pointing it at HN offers to download the pdfs from the frontpage.

</comment><comment><USER19> There appear to be more angry comments than points.

</comment><comment><USER20> it stopped working with soundcloud urls recently, maybe a month or two ago. good for ripping youtubes though.

</comment><comment><USER21> Can be handy to download youtube videos, but the idea that it has something to do with liberty is ludicrous.

</comment><comment><USER22> Or just use youtube-dl

</comment><comment><USER23> Why isn't there a downvote button here?</comment>


No, it wasn't a virus; it was Chrome that stopped Macs from booting - <AUTHOR> https://arstechnica.com/information-technology/2019/09/no-it-wasnt-a-virus-it-was-chrome-that-stopped-macs-from-booting/ <comment> ga-vu Previous discussion:

[https://news.ycombinator.com/item?id=21064663](https://news.ycombinator.com/item?id=21064663)

[https://news.ycombinator.com/item?id=21073819](https://news.ycombinator.com/item?id=21073819)

<comment><AUTHOR> Thanks, I went looking for a previous submission, but couldn't find one. I figured if I posted it myself someone would provide the pointer.

I'll leave this here to capture other submissions of this source.

Cheers.

 _EDIT: Also, interesting to read the discussions there._

<comment> ga-vu Better if you'd stop submitting ArsTechnica stuff. All that site does is take other outlets' articles and run them as their own. I'm surprised nobody has sued already, especially since they have a subscription service asking for money for stuff that other people research and publish first.

</comment></comment></comment><comment><USER2> Application level software should 'stay in its lane'. Chrome and the Chrome updater shouldn't even have this level of capability.

<comment><USER3> Hubris is a big fault of Google and its engineers. They have a culture of thinking "there's one way to do it, we're smart, and we know best."

<comment><USER4> Shrug, seems like every application that's not designed to live in debian package repositories from the ground up eventually evolves an updater, or even a package manager for plugins. This hubris isn't unique to google, it's everywhere because we fundamentally haven't figured out how to manage updates in a way that meets requirements.

<comment><USER5> > we fundamentally haven't figured out how to manage updates in a way that > meets requirements.

Depends whose requirements. The _user 's_ requirements are incredibly straightforward:

1\. Never update; there's no benefit.

Updating is pushed on users anyway on the theory that they're connected to the internet, but it's not meant to help them. It's meant to help other people. Updates that help the user are generally provided on a pull model, and often charged for.

<comment><USER6> Thats the first user requirement. You forgot this one

2\. Never be vulnerable to known attacks.

<comment><USER5> I didn't forget. That is not a requirement for most users. The whole idea of forcing people to update is that _we_ don't want _them_ to be vulnerable, so that _their_ machines aren't used against _us_. The users commonly don't suffer negative effects from being exploited.

<comment><USER6> Ransomware is big enough news that I don't think that's true even for very non-technical users.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> I still don't understand why Google needs to have something more than the basic update functionality that other Mac Apps have via libraries like Sparkle?

<comment><USER8> To be honest, because they're arrogant. It's the same reason they don't adhere to each OS's UX/UI guidelines (including on Windows!) It's an absolute arrogance that they are "above" these platforms.

<comment><USER9> > It's the same reason they don't adhere to each OS's UX/UI guidelines > (including on Windows!)

To be fair, not even Microsoft does that.

<comment><USER10> Microsoft does a much better job than Google does.

<comment><USER11> Well microsofts UI style changes every ~3 years, and they don't restyle old stuff, so at any point in time there are 10 or so possible correct stylings...

</comment></comment></comment></comment></comment><comment><USER12> It wasn't Chrome either. It was Keystone, a separate program that updates Chrome and other Google programs. Most users have never heard of Keystone (and Google likes it that way), but Keystone is running on your computer if you've ever used Chrome or Earth or another Google program. A bug in Keystone caused this problem. Keystone is very hard to kill and if you succeed in killing it it has a nasty tendency to come back.

Keystone is malware written by Google and it needs to die.

<comment><USER13> To be fair, updater software for security conscious apps have good reasons to be hard to kill. Even outside of an attack scenario, you want to give as much chance as possible for your apps to still update even if you shipped a crashing bug or something.

<comment><USER12> Unkillable software also has a very high bar for quality. That means among other things that it needs to be a good citizen on my computer and have _pristine_ quality control. Keystone is neither and never has been. With great power comes great responsibility, and Google blew it.

<comment><USER13> I mean, I'm going to judge them when I stop writing bugs. Until then, a zealous updater seems preferable to leaving browsers around with CVEs, even with this massive fuck up on their plate.

<comment><USER12> And yet Firefox found a way to solve that problem without creating malware in the process.

<comment><USER13> Firefox's updater breaks significantly more than Google's.

<comment><USER14> How often does it break _your computer_?

<comment><USER13> I'm saying that for a lot of people, hard breaking their computer might be the better option compared to stop updating CVEs and stealing everything the person owns.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER15> My guess with what happened is that they were downloading to /var somewhere and messed up a variable name when they called unlink() to remove their temporary data, which when running as root would delete the symlink of /var to /private/var. It wouldn't be caught if they weren't testing without SIP enabled, on older macOS versions, _and_ rebooting as a part of the test suite.

E.g. I'd put a dollar on this being a variable naming bug, where they called unlink(temp_dir) instead of unlink(temp_dir_where_we_put_stuff), with the former being "/var".

</comment><comment><USER16> > No, it wasn't a virus.

Chrome is spyware that can be used to browse the web (while advancing the agenda of the ad company that built it).

Since spyware is loosely classified as a virus, I would beg to differ with the headline.

By the way, aside from all the "regular tracking" it does, did you know that the Chrome updater spawns programs with random names that write other programs with random names. Sounds like a virus?

And just check out what it is doing to get you past a captcha... you can't. It is on a OS level, not a browser level, and everything about what it is doing is VERY obfuscated. Very virusy IMO?

</comment><comment><USER17> This shows why System Integrity Protection is a great feature for most users. Even an application running as root can't easily hose the system.

</comment><comment><USER18> removed /var?

How the hell does that get past QC?

Also heartily agree with other comments about Google's update processes in general.

Trust is still a house of cards in computing :(

<comment><USER19> My understanding is that /var was only removed on systems _without_ SIP enabled, the recommended (and default) setting.

This only affected users who went out of their way to disable this security feature. Presumably Google QA had this enabled on all their machines.

<comment><USER20> SIP is a relatively new feature. This would have been _devastating_ only a few years ago. What Google did was effectively:

        sudo rm -Rf /var

Would you trust a program that even _attempted_ such a command on your machine? "But they had SIP disabled" is no defense for software that tries to take destructive action.

SIP is intended to protect against _malicious_ software and against users accidentally hosing their system; there are legitimate reasons for disabling it. This was not anyone's fault but Google's.

<comment><USER21> It's a symlink and / has to be writable by the logged in user, so it's actually just effectively

      rm /var

<comment><USER22> Since when is / writable by any logged in user? Is a MacOS thing?

<comment><USER23> It requires the user to have disabled SIP and then used root access to modify it. On a standard install, it's owned by root:wheel with mode 755.

</comment></comment></comment></comment></comment></comment><comment><USER24> The Mr Macintosh blog (which the Arstechnica piece cites) has more technical details:

[https://mrmacintosh.com/google-chrome-keystone-is- modifying-...](https://mrmacintosh.com/google-chrome-keystone-is-modifying- var-symlink-on-non-sip-macs-causing-boot-issues/)

</comment><comment> detail-oriented I don't use chrome any longer, firefox for the win.

</comment><comment><USER25> > varsectomy...

That's awesome! Well, the name is awesome, not the digital "surgical" procedure, of course. ;-)

<comment><USER26> OK, so unlinking /var is a varectomy. That fits.

I suppose if instead you just deleted random files from /var, that would be a varotomy?

I can't think of anything, offhand, that would be a varostomy.

For those unclear on the difference between -ectomy, -otomy, and -ostomy, see [1].

[https://www.straightdope.com/columns/read/607/in-medicine- wh...](https://www.straightdope.com/columns/read/607/in-medicine-whats-the- difference-between-an-ectomy-an-ostomy-and-an-otomy/)

</comment></comment><comment><USER27> The fact this was accidental is far worse than a virus.

</comment><comment><USER28> It's a Good Idea not to install any additional software, whether it's a browser that's not the one bundled with the OS, Spotify, Slack, etc, on a machine that's being used for production builds, editing.

We don't put anything that's not absolutely necessary on our build machines, for example.

</comment><comment><USER29> This reminded me of the time I mistakenly deleted /var/tmp/ instead of just deleting the contents of /var/tmp/. The router was not pleased.

<comment><USER30> I once deleted /usr ... Instead of /some/sub/dir/usr

It was interesting to see things like fonts disappearing randomly from web pages etc as my computer progressively went mad.

</comment></comment><comment><USER31> An interesting side effect of the Keystone daemon is that Google is receiving pings from all users running the software. I'm very sure that this enables Google to proactively track users without only relying on persistent cookies. Add Google DNS on top and you get a seamless, massive scale RUM solution.

</comment><comment><USER32> Off topic, but

> system integrity prevention

would be a pretty funny OS "feature".

</comment><comment><USER33> Remember when browsers were for, you know, browsing?

</comment><comment><USER34> I'll step up and say it.

Google in 2019 is a bloated and incompetent company consumed by internal politics that has no vision. Chrome has been nothing but a ploy for google to ruin the web from the get go.

<comment><USER3> > no vision

Missing the boat on cloud computing while they were flailing away at social is pretty strong evidence of that

> ruin the web

The web was pretty bad pre-Chrome. Browsers were much slower and much less compatible. Things started to get worse once Chrome market share got to a third, or so, and Google started driving the direction of the web.

<comment><USER35> Remember when Chrome was flaunted as the fastest browser? Now it's just bloated.

<comment><USER36> I do, but I also switched back to Firefox recently (after using Chrome for ten years) and it's slower. What _is_ the fastest feature-complete browser in 2019?

<comment><USER37> Edge Dev is pretty darn fast.

<comment><USER13> Isn't Edge switching to being a skinned Chromium?

<comment><USER37> Yes. Edge Dev is a Chromium flavor.

</comment></comment></comment></comment></comment></comment></comment><comment><USER38> Did Chromium users on MacOS have this issue as well?

If not, what is Chrome doing differently than Chromium?

<comment><USER15> Disclaimer: this affected me tangentially which is why I've been trying to figure out what exactly happened and where it came from.

The issue was not Chrome in and of itself, but Google Keystone, which is the update daemon for Chrome. I don't think Keystone is open source so you can't grep for 'unlink("/var")' to figure out what was going on.

</comment></comment><comment><USER39> Everybody seems to be reading over the fact that the logged in user must be able to write to /. Is this common for macOS users? If so there is a significant pebkac factor as well.

<comment><USER40> It's not dependant on the logged-in user, keystone is a background agent (daemon) that handles Google's updates.

The expected scenario is that the browser is installed by an administrator (a sudoer), and the keystone agent is installed the same. The background agent runs as an elevated process specifically to remove the dependency on the logged-in user .. but with the side-effect that you're now trusting Google not to remove /var. Because, yaknow, we generally assume Google aren't that clueless.

Then we have a layer below that, "System Integrity Protection" (further enhanced by read-only-root in 10.15) which stops processes removing such vital parts of the OS, even if they are root. Which is where the Avid red herring came from. If you need to install unsigned kernel extensions, you need to disable SIP. And it turns out third-party video drivers are popular with the video editing crowd - so they had a much higher prevalence of users running without SIP.

</comment></comment><comment> java-man This basically tells about the state of computer security in general. There is no isolation of OS from applications, or between the applications. This is by design, dated back to early unix times.

We will continue to see these issues until there is a brand new OS which isolates subsystems by design. That is, each application/process gets not only own address space, but own file system, own settings store, with the OS carefully managing cross-boundary accesses.

<comment><USER41> Programmers developed containers and kubernetes to cover this space, but we haven't created a consumer OS with programs each in their own container.

<comment><USER42> Android ist a bit like this, isn't it?

<comment><USER43> Not really. Containers run natively and use the built in kernel features to sandbox. Android uses the Java VM.

<comment> java-man Android aside, the use of JVM might offer a better alternative (because of bytecode validation).

One way to achieve security is to enforce what an application/process can do is via specialized interfaces. For example, java.io.File will only see a virtual application filesystem, and one would need to grant special permissions (via a different interface) for file access outside of the app sandbox.

These permissions should be controlled (and audited) by the user. Possibly at more levels than currently (blocked/allowed always/while running).

<comment><USER13> That was tried by the sun JVM, and worked until they tacked on reflection. Then there was just too many ways to break the sandbox when the sandbox is implemented just like your code is and you've got a mechanism for doing brain surgery on the process. Every time they'd fix a applet sandbox escape two more exploits would pop up.

<comment> java-man Security must be the primary design goal, at least right now. I don't think the way Sun implemented permissions in java offers enough protection.

<comment><USER13> I mean, security was absolutely a primary design of java applets.

It's just that implementing your sandbox at the same level as untrusted code is a really poor choice.

<comment> java-man Did you just proved my thesis? ;-)

The devil is in details, in other words, it matters how the sandbox/isolation is implemented.

I would expect this: some malicious code requests a service object from the OS. An implementation is returned, but if no permission is granted by the user, the said implementation _does nothing_. There should be no data in the service object that can be used to glean any information about the internal state.

The only thing that can be detected in this design is that the service object does nothing (and even then, perhaps, it is possible to emulate the service behavior such that the code thinks everything is fine).

What do you think of that?

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER28> This is why I run Firefox. Because it's written in Rust, these things simply can't happen.

<comment><USER44> You're trolling, right?

<comment><USER45> I sure hope so because everything about that statement is wrong.

<comment><USER12> Including the implicit assumption that this was somehow a Chrome problem. It wasn't. It was a Keystone problem, and Keystone is a separate program that updates Chrome and Earth and other Google products. Still very much Google's fault, but Chrome didn't cause the issue.

<comment><USER28> Doesn't Mozilla write their installers and related programs in Rust, too?</comment></comment></comment></comment></comment>


The multiple cofounder myth: Admobs one more data point - <AUTHOR>

I know that pg is a strong advocate of having multiple cofounders and many other people have even stronger views on this. I also see the benefits of having multiple cofounders versus having a single founder, but I don't think the impact/differences are as stark as many people make it out to be.
http://news.ycombinator.com/item?id=77525 had some interesting stats on how single-founder companies have had more success than 2-founder or 3-founder companies (within a sample of 100 publicly traded comapnies)
Scobelizer's interview of the AdMobs founder (http://blogs.wsj.com/venturecapital/2009/11/09/the-wisdom-of-admobs-founder-omar-hamoui/)is one more data point of how "one guy with a laptop" can build a hugely successful company.Incidentally Sequoia funded the 1-man company without any dogmatic rules on the number of founders (or for that matter employees) <comment><AUTHOR> Links for the urls mentioned above

<http://news.ycombinator.com/item?id=77525>

([http://blogs.wsj.com/venturecapital/2009/11/09/the-wisdom- of...](http://blogs.wsj.com/venturecapital/2009/11/09/the-wisdom-of-admobs- founder-omar-hamoui/)

</comment><comment><USER2> <http://en.wikipedia.org/wiki/Selection_bias>

</comment><comment><USER3> IMHO the major reason single-founder startups do well is because they don't have to deal with co-founder issues.

<comment><USER4> from the data in the past HN post, single founder companies are slightly better in absolute numbers than duo founded. but i would think there could be an order of magnitude more bootstrapped single founder attempts than duo founded, and if true that would mean duo founding is way more likely to succeed than single founding.

but with that said, no matter how the data looks, these stories are very encouraging.

</comment></comment><comment><USER5> I am 36 years old and have founded 2 companies. One with a co-founder and the other I gave near-founder equity after 2 years. Both relationships ended poorly.

They say finding a co-founder is akin to finding a spouse. In this country > 50% of marriages fail, what does that tell you?

I believe that for those adequately capitalized they should fund themselves and then hire for skill-set gaps. If you need the financial and technical resources of 2 or more then just be careful what you wish for and take off the rose colored glasses before entering the relationship.

Lastly I would offer that a multi-person team needs a clear and elected leader (CEO), there are far too many decisions in building a company to expect that a democracy can compete.

The above is offered as testament to real-life experience. There are obviously going to be exceptions that have worked out great...and I'm happy for you!</comment>


Ask HN: Best way to make quick, relatively simple HTML5 games today? - <AUTHOR> I've been out of the web game loop for awhile, but it seems there's always a new javascript library being released and it's hard to keep up with which ones are worth my time.
I want something that's open enough that I can make any type of game or mechanics with it (although I am focused more on 2D puzzle and turn-based strategy games).
Unity seems to be overkill but I do have experience with it, and I used to churn out Flash games a decade ago. Now I'd like to update a few of them to HTML 5 and bang out a few other ideas, but I have much less time to work on them than I used to back in the day.
Something that could be translated to a mobile app without much difficulty would be nice, also, like 2048 was. <comment><USER2> Have you looked at [http://phaser.io/](http://phaser.io/) ? Lots of resources available for it, active IRC channel, even a few books written.

<comment><USER3> Just started making a game in Phaser and so far I find it very nice. Before that I used MonkeyX and before that Impactjs: Phaser feels better supported so far.

</comment></comment><comment><USER4> I've always wondered, why more people don't use SVG for web games. It's easier to work with than HTML+CSS, and since you can specify simple animations in it, you can reduce the amount of work your game loop needs to do manually.

</comment><comment><USER5> Here are my personal options for 2d games, based on my personal background(I developed Flash games):

\- Construct2 is you want to create simple games without writing code. Simple to do standard games, hard if you need more control or more complex data structures. It contains exporters for different platform including mobiles(using html5 wrapper to execute html code, based on phonegap or something similar).

\- GameMaker - quite similar to Construct2, a bit more powerful and it requires to write more code than Construct2, unfortunately in their own language. You can export games for different platforms(unlike Construct2 it generates and compile the code for each platform in native code) and for html. Each exporter should be brought so it makes this option the most expensive.

\- CreateJS - the Adobe Html5 alternative. It recreates the class hierarchy from action3 flash, in html5 js. A tentative to recreate Flash in Html5, good enough. It has the advantage that it can export Flash graphics including vector graphics in an html library which can be used imported in your project.

\- Phaser - A nice framework based/inspired/not an exact port of Flixel. It has nice features and it was written only for games so I would say generally it's better than CreateJS, in the same way Flixel was better than plain AS3. It can be combined with Pixi.js to webgl rendering.

\- OpenFl - a flash inspired library written in Haxe. The advantage is that it can generate and compile the game in native code for virtually any platform that matters including HTML5. It can even import and use flash objects for graphics.

\- LibGDX - write it in java, deploy it on multiple platforms, including html. It uses OpenGl for rendering, for the html export they use Google GWT to translate java code to javascript. It sounded for me as an interesting approach.

My advice is to pick one option and to go for it(the list is far away of being exhaustive). If you have java experience you can check CreateJS or OpenFl, if you want a codeless engine, Construct2 is more popular among html devs than GameMaker.

P.S. It seems Phaser can be easily used with ecma6.

<comment><AUTHOR> Thanks for your thoughts. I've tried Construct2 and GameMaker before and before too long it felt like I was in a straitjacket I couldn't break free from. That's why I specified any genres, because those both seem to handle puzzle/strategy games rather poorly (Construct2 moreso than Gamemaker).

I've tried LibGDX and I just ran into too many little issues that slowed down development (especially for certain platforms) with not enough discussion online to help fix it. It wasn't the Java part of it (I have a decent amount of Java experience), it was the library. I had that same problem with Haxe as well, which I really wanted to make work for me. I did not try OpenFl, however.

CreateJS seems appealing because some of my flash assets are tons of frame by frame vector animation, and I'm not wanting to manually convert those to bitmaps. It'd take forever and the filesize would be huge.

But I looked at a 2d tutorial for Phaser last night and that had a syntax that looked very comfortable for me, so it's looking like that might be the way to go. CreateJS is tempting for ports, though.

</comment></comment><comment><USER6> I came across this post a few years ago, reminds me of the javascript games written 15+ years ago. For a lot of use cases, This technique is simple and has good enough performance. [http://buildnewgames.com/dom- sprites/](http://buildnewgames.com/dom-sprites/)

Also,take a look at [http://createjs.com/](http://createjs.com/). It is pretty familiar if you come from a flash background. The latest version of adobe flash/animate exports to createjs so you can keep using your old flash authoring skills for your assets.

However, If time is your major constraint, unity might not be as overkill as you might think.

</comment><comment> kyle-rb libGDX is a Java game engine that's relatively simple and lets you deploy to HTML5, Android, iOS, and desktop. PlayN.io is fairly similar I think, but I haven't used it.

2048 is actually somewhat of an odd case, since it was originally only an HTML5 game that was built to run in both the browsers of desktop and those of mobile devices. For this reason, the developer didn't actually port the game to Android/iOS until much later. Pretty much all the versions on the App Store/Google Play Store were 3rd party clones of the original, since it was relatively simple and open source.

</comment><comment><USER7> PuzzleScript[1] sounds like it might work for what you want to do, at least for quick prototypes. It's a brilliant little online IDE for a puzzle game DSL.

It might seem like a toy, but there's a community of people who create genuinely good games in it.[2]

[1] [http://www.puzzlescript.net/editor.html](http://www.puzzlescript.net/editor.html)

[2] [http://puzzlescriptgallery.tumblr.com](http://puzzlescriptgallery.tumblr.com)

</comment><comment><USER8> I really like [https://www.scirra.com/construct2](https://www.scirra.com/construct2) for having fun and fast prototype iterations. Just be aware, that it is UI and click heavy, but yet powerful and flexible. I think it will be hard to manage large code bases in Construct, but that is something I have not yet gotten into with my simple hobby projects.

</comment><comment><USER9> Take a look at Cocos Creator: [http://cocos2d-x.org](http://cocos2d-x.org)

Utilizes JavaScript and there will also be Lua and C++ support coming.

It is under active development, docs are good and there are plenty of complete game examples to learn from.

</comment><comment><USER10> Phaser and Crafty are code oriented 2D game engines.

I think entity component system of Crafty scales a bit better than Phaser, but on the other hand Phaser has a bigger community.

</comment><comment><USER11> Babylon.js is a pretty good option for 3d games</comment>


Too Little Too Late: FCC Finally Realizes AT&T's Zero Rating Is Anti-Competitive - <AUTHOR> https://www.techdirt.com/blog/netneutrality/articles/20161111/08192636020/too-little-too-late-fcc-finally-realizes-ats-zero-rating-is-anti-competitive.shtml <comment><USER2> >FCC's decision not to ban zero rating (or the practice of exempting some content from usage caps) when crafting net neutrality rules ... As a result, despite having net neutrality rules, we now have companies like AT&T, Verizon and Comcast all exempting their own streaming content from the caps ...

the network is equally neutral to all content, to some content it is just more neutral.

<comment><USER3> By definition, that is not neutral.

<comment><USER4> He was making a reference to Animal Farm, I believe. [http://www.goodreads.com/quotes/6466-all-animals-are- equal-b...](http://www.goodreads.com/quotes/6466-all-animals-are-equal-but- some-animals-are-more-equal)

</comment></comment></comment><comment><USER5> Doesn't "zero rating" make an obvious lie out of data caps?

That is, I could stream "zero rated" bits all day, and not touch my "cap". If I stream regular bits all day, suddenly, I've hit my "cap".

Why do "zero rated" bits not cause congestion, etc etc, like the regular bits?

<comment><USER6> I'm going to play devil's advocate here, but there might be legitimate technical reasons - streaming from your ISP's network may actually be easier on the network (it doesn't require inter-network hops, or maybe, since they control the content, they can cache it closer to the edge, etc.).

There may also be financial reasons - if people are paying them for a separate streaming service, then it's easier to justify investments in infrastructure to reduce the congestion from that service.

That assumes that the congestion isn't at the edge/CO/etc. If it is, then I don't know how to justify it, except as a way to get people using their service, which is obviously part of it, either way.

<comment><USER5> All good points, thank you. It's just hard to believe that the ISP/entertainment conglomerate's own bits have zero size in terms of congestion - somewhat smaller size, yes, but zero size? No.</comment></comment></comment>