Hacker News new | past | comments | ask | show | jobs | submit | t3mp3st's comments login

Really great write up! Did you guys run into any issues with artifacts from image compression?


Hey, I'm the author of the paper. Good question! The easy answer is no, the better answer is "yes, unavoidably so." Ultimately it doesn't end up making enough of a difference to work around when we're already tossing out so much information by resizing dramatically.


Ban this link. The author ("CoFoundersLab") spammed their entire mailing list to beg for upvotes... twice.

From one email:

"Tomorrow morning, we'll be listing the article on Hacker News, Y Combinator's social news network about startups. We need your help to upvote the article to the top of the list so it gets noticed by other entrepreneurs. The more upvotes the article receives, the more this valuable research gets shared with the entrepreneur community."


Happens on YC all the time. Just try to criticize PG- I dare you.


Great point. Seems like designers are missing out on the whole "rising tide lifts all boats" thing.


ssh http://(HACKTHELINE (car pg rules (cons (hack `the line`))) --+ scala.node(Js) + import ruby.gems %% equals = HACK THE LINE


Disclosure: I hack on MongoDB.

I'm a little surprised to see all of the MongoDB hate in this thread.

There seems to be quite a bit of misinformation out there: lots of folks seem focused on the global R/W lock and how it must lead to lousy performance.

In practice, the global R/W isn't optimal -- but it's really not a big deal.

First, MongoDB is designed to be run on a machine with sufficient primary memory to hold the working set. In this case, writes finish extremely quickly and therefore lock contention is quite low. Optimizing for this data pattern is a fundamental design decision.

Second, long running operations (i.e., just before a pageout) cause the MongoDB kernel to yield. This prevents slow operations from screwing the pooch, so to speak. Not perfect, but smooths over many problematic cases.

Third, the MongoDB developer community is EXTREMELY passionate about the project. Fine-grained locking and concurrency are areas of active development. The allegation that features or patches are withheld from the broader community is total bunk; the team at 10gen is dedicated, community-focused, and honest. Take a look at the Google Group, JIRA, or disqus if you don't believe me: "free" tickets and questions get resolved very, very quickly.

Other criticisms of MongoDB concerning in-place updates and durability are worth looking at a bit more closely. MongoDB is designed to scale very well for applications where a single master (and/or sharding) makes sense. Thus, the "idiomatic" way of achieving durability in MongoDB is through replication -- journaling comes at a cost that can, in a properly replicated environment, be safely factored out. This is merely a design decision.

Next, in-place updates allow for extremely fast writes provided a correctly designed schema and an aversion to document-growing updates (i.e., $push). If you meet these requirements-- or select an appropriate padding factor-- you'll enjoy high performance without having to garbage collect old versions of data or store more data than you need. Again, this is a design decision.

Finally, it is worth stressing the convenience and flexibility of a schemaless document-oriented datastore. Migrations are greatly simplified and generic models (i.e., product or profile) no longer require a zillion joins. In many regards, working with a schemaless store is a lot like working with an interpreted language: you don't have to mess with "compilation" and you enjoy a bit more flexibility (though you'll need to be more careful at runtime). It's worth noting that MongoDB provides support for dynamic querying of this schemaless data -- you're free to ask whatever you like, indices be damned. Many other schemaless stores do not provide this functionality.

Regardless of the above, if you're looking to scale writes and can tolerate data conflicts (due to outages or network partitions), you might be better served by Cassandra, CouchDB, or another master-master/NoSQL/fill-in-the-blank datastore. It's really up to the developer to select the right tool for the job and to use that tool the way it's designed to be used.

I've written a bit more than I intended to but I hope that what I've said has added to the discussion. MongoDB is a neat piece of software that's really useful for a particular set of applications. Does it always work perfectly? No. Is it the best for everything? Not at all. Do the developers care? You better believe they do.


Hells yes. The worst is when they ask you to build something for their product. For free. On your own time. And then don't give you the job.

WTF?


Amen. I utterly despise riddles.


Interesting idea. I'm not sure how I'd go about recruiting celebs to try the dang thing out.

Honestly, I built this thing primarily for fun -- not sure if it really makes a whole lot of sense from a business perspective.


It was broken as of... a minute ago. And/or the app has become sentient and is expressing its opinion of Portland.


Well, Portlandia has been known to corrupt code bases.

Looks neat, I'll try to play around with it again later.


Consider applying for YC's Summer 2025 batch! Applications are open till May 13

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: