A Lighter and Smaller Laptop - <AUTHOR> https://kartick-log.blogspot.com/2016/08/a-lighter-and-smaller-laptop-than-you.html <comment><USER2> I get that this would be desirable for a lot of people - but not for me. It's definitely cute, it's definitely portable, but if you can afford the difference between this and a regular MacBook or something with a similar form factor, why not just grab the latter? It's not as if you can fit this in a pocket or something - you'd still need a bag/backpack to carry this around comfortably, and then why not just use a full-fledged laptop with a larger screen, arguably easier-to-use pointer. I honestly cannot see myself being as productive on one of these as I am on my regular old laptop.

Despite this article claiming that this device would have all the capabilities of a normal laptop, I think this fails in some of the same ways that smartbooks did in the past. Who -really- wants to do serious work on one of these instead of a laptop with a normal-sized screen? I can imagine potential strain on the eyes after a long time working on one of these - not to mention the seemingly awkward aspect ratio.

To each their own, though.

<comment><USER3> I use a Dell xps13 (13" screen in an 11" laptop chassis, almost no bezel).

The (very high DPI) monitor is just barley large enough for comfort. I wouldn't want to work on anything smaller.

Although there's still a bunch to cut down in thickness & weight.

<comment><USER4> Yes, in my opinion the magazine sizing they show in the picture is close to the limit most people would want. Cutting the sideways size doesn't give enough portability benefit to justify losing so much screen space. The manufacturers have got it right in the direction they have been going, to increase battery life, decrease the size of the bezel, decrease weight and thickness, and also improve robustness and waterproofing, so that it is no more of a hassle to carry around than a magazine, and so that you could read it like a magazine (or a tablet).

We're not too far away from that. The Macbook, the Surface and the Chromebook Flip are all in the 0.9-1kg range, now it's incremental progress to reduce weight to 500-600g, improve fanless performance, and meet all the other goals above. We'll probably also see commodity pricing of fanless processors through ARM competition with Core-M, so that the prices of these devices end up closer to the Chromebook Flip than the Surface.

<comment><USER3> Yep. Although even my Skylake i7 xps13 can use better performance (it subjectively feels slower than a desktop sandy bridges i7, 5 years it's senior).

</comment></comment></comment></comment><comment><USER5> Sorry, I've already had to give up enough vertical screen space on laptops. I'm not giving another inch.

And once you add menus, toolbars, startbars, and the hideous white space that is currently fashionable you have a less useable workspace than an early 00s era laptop.

I do like the new Surfaces.

<comment><USER6> Good point. I like to see some new method thrown at the UI controls when one switches to full screen / no toolbars. Possibly stealing swipe type methods from mobile.

</comment></comment><comment> mark-r A superwide aspect ratio is impractical for too many things. The audience for this device would be extremely limited.

I still long for the days of the 4:3 aspect ratio.

<comment><USER7> That should be achievable by adding another screen on top of the one on this machine, hinged at the top. In closed position the thing could work as a tablet, in open position the top screen would flip 180° to form the top part of a large 4:3 screen.

The main body could be set on rails, to slide forwards from under the keyboard when the thing is used as a laptop (more or less the inverse of what slider phones did, here the keyboard stays in place while the body slides away from under it). Add a touchpad to the main body and you'd have a relatively normal laptop configuration.

</comment></comment><comment><USER8> No need for a touchpoint. I've been waiting for years for a capacitive trackpad under the surface of the keyboard. Blackberry have done this on their Passport and it's great. I don't know why others haven't copied the idea.

<comment><USER9> How does that work, you run your fingers across the keys lightly or something?

<comment><USER8> Yes. Two modes: default scroll, means you can scroll without obscuring the screen. Or double tap to get a cursor in a text box.

</comment></comment></comment><comment> open-source-ux This is not a very practical mini computer. The design has been lopped off from a larger Mac rather than designed from scratch. The full-sized keyboard means it's still quite large - certainly not pocket-sized. A more practical approach would be to have a smaller, pocket computer as a companion to a larger laptop (or desktop computer) rather than try and make the smaller laptop the main computer.

Almost 20 years ago (in 1997), a British tech company called Psion released a small handheld computer called the Psion Series 5. Some images here:

[https://www.google.co.uk/search?q=psion+series+5&source=lnms...](https://www.google.co.uk/search?q=psion+series+5&source=lnms&tbm=isch)

Suprisingly, no one has made something similar (that I know of). I imagine it could be made today with an e-ink screen for extra long battery life. A pocket computer like this would be perfectly capable for everyday tasks like email, wordprocessing and using spreadhseets (but not for video or graphics work).

<comment><AUTHOR> I think that if a device has a physical keyboard, it should be a full-sized keyboard. If not, get rid of it and have a smaller, thinner, lighter device.

Having a crappy keyboard is IMO the worst of both worlds — you get neither the productivity of a full-sized keyboard nor the thin-and-lightness of a keyboard-less device.

Which is why I chose a full-sized keyboard for this device. Some reviews of iPad keyboards, for example, begin by suggesting you don't buy one, instead buying a full-sized keyboard: [http://thewirecutter.com/reviews/the-best-ipad- keyboard-case...](http://thewirecutter.com/reviews/the-best-ipad-keyboard- case/#who-shouldnt-buy-this)

</comment></comment><comment><USER10> Replacing the great Apple trackpads with a trackpoint? No thank you.

<comment><USER11> As much as you say that, I miss TrackPoint from my days sporting a ThinkPad. I know there are other people that agree. Once you get used to it, it's pretty nifty. You don't even need to take your hands too far away from your keyboard position to use it.

<comment><USER12> I really loved TrackPoints back in the day and despised many of the touchpads of the time. Some of them I found an exercise in frustration to use at all. But I like modern trackpads and wouldn't really want to give them up.

I have an Asus Flip Chromebook (10") and for me that's just about perfect while traveling. I don't really use the flip feature much but it's a nice size and weight. I actually think if you cut off the trackpad I'd find the typing position more awkward.

<comment><USER11> > I actually think if you cut off the trackpad I'd find the typing position > more awkward.

I guess you could picture the TrackPoint like this: [http://www.notebookreview.com/assets/4796.jpg](http://www.notebookreview.com/assets/4796.jpg)

<comment><USER12> Right. The OP was basically proposing cutting off all that space below the keyboard though. The typical Thinkpad design shown in that photo doesn't have a touchpad but it still has the area that people tend to use as a wrist rest.

</comment></comment></comment></comment></comment><comment><USER13> Not as crazy as it sounds. Just use your smartphone as a trackpad or mouse. Apps already exist for this. [http://www.remotemouse.net](http://www.remotemouse.net) [http://www.guidingtech.com/9586/use-android-as-touchpad- keyb...](http://www.guidingtech.com/9586/use-android-as-touchpad-keyboard- remote-control-gpad/)

</comment><comment><USER14> [http://pyra-handheld.com/](http://pyra-handheld.com/) a coming-soon thing I'm waiting for.

</comment><comment><USER15> I have wanted what this post is describing for a long time. I have used one of those small VAIOs, too. I mainly use the keyboard, anyway, so for me the trackpad on a laptop wastes a lot of space.

<comment><USER16> Don't those VAIOS only have 600px height screen? Ugh

</comment></comment><comment><USER17> I have a Sony Vaio P, which as the author mentions is close to what he describes.

I don't use it much anymore, but it was actually a fun device to own. I installed ArchLinux on it, with a heavily customized xmonad + plenty of customly setup apps for email/browsing/basic coding/etc to make it full keyboard driven (the trackpad/trackpoint was pretty bad on it).

It'd fit in my jacket pocket, and was a nifty little machine to carry around. The keyboard was way too cramped for long term use, but it was fun to have around.

<comment><USER18> Mah, he seems to conflate the Vaio P (unnamed, just used as a illustration) with "smartbooks". This while the Vaio P was a netbook (Windows, Intel Atom) rather than a smartbook (Android/Linux, ARM variants).

Frankly the only thing that seems to hold the smartbook category together is the use of mobile tech (iirc, the Toshiba AC100 even had a notification light for texts etc).

The blog posting seems like someone firmly hung up on Apple and wanting a smaller macbook, rather than a proper illustration of what the rest of the market has to offer.

</comment></comment><comment><USER18> Silly of him to use the Sony Vaio P as a illustration for the smartbook segment. The Vaio P ran full Windows on an early Intel Atom.

Anyways, it seems the author ignores that netbooks started out not running Windows, and just lumps them in with laptops because x86 (Atom) and Windows.

Frankly the whole thing just reeks of someone who has developed severe Apple myopia...

</comment><comment><USER19> i've used laptops in that form factor and they're awful.

the current 13" apple form factor is just fine.

look at cell phones from the early 00's -- smaller is NOT the answer.

<comment><AUTHOR> Did they have full-sized keyboards? Were they high-end devices, like $799, as opposed to crappy netbooks?

</comment></comment><comment><USER20> As if the ergonomics of laptops weren't bad enough already. Makes my neck tense just looking at it.

</comment><comment><USER21> We have reached human UI/UX limitations on many tech devices. Our eyes can only see so much detail, our hands need space to type accurately and comfortably.

We need improvements in IO between human and machine to reach the next stage of technological evolution.

<comment><AUTHOR> Interesting point of view. The full-sized keyboard on this proposed device is exactly in keeping with that. Smaller, and you can't type productively.

</comment></comment><comment><USER22> These have been made (with the trackpoint replaced with a touchscreen + stylus), although you don't see them much nowadays. A examples would be the NEC MobilePro 900 (on the not-far-from-full-sized-keyboard end of the scale) and HP Jornada 6xx/7xx series (on the technically-pocket-sized-but-really- slightly-too-big scale).

I regularly use a Jornada 690, with Linux installed, which I use to do some programming on when doing things like taking my mom to her doctors appointments. I don't keep mine in my pocket, but have a small bag, intended to be attached the front handlebars of a bicycle, that I attach to my belt, to keep it in.

</comment><comment><USER23> Apple would get more love if they brought back some larger machines. A 17" portable would be a nice start.

It's not 2010 anymore, at this point making these devices smaller just hobbles them, and increases the chance the case will snap in two.

</comment><comment><USER24> You could reduce the height of the number row by half, add that vertical space to the space bar, and turn the spacebar into 3 parts: regular buttons on the wings where your thumbs rest, and capacitive trackpad in the middle.

Add cellular support and I'll gladly toss my smartphone, which I don't use anyway. I've always just needed a laptop, I'm terrible with touch screens, very painful to use. I would carry this around and have a smart watch for basic text / calling, gps

</comment><comment><USER25> > It would be more portable than the Macbook

Really? So that what, it fits in a purse? I personally (nothing against men who do) don't carry a purse, but I do have a backpack. And I choose to carry a full 15" MacBook Pro, because it's powerful and is an ok trade off in terms of screen size. It's perfect for me.

I know some people hate the weight, and they go for the Air, but for me the screen size is too small. This argues to make the screen size even smaller! No thank you!

Get a keyboard for the iPad Mini.

</comment><comment><USER26> I have a 12" Macbook and an 11" Air and I think anything smaller than the Air is not really practical. I suppose if I rotate my 6s+ I could get something super tiny, then just attach a bluetooth keyboard..

But, I just don't see the point of going that small. The Macbook and Air are really light - I don't notice them much at all if I out them in my backpack (a 15" is definitely noticeable).

Anyway, it just seems like a thought exercise.

<comment><USER16> When the original Air came out in 2009 or whatever, I was amazed that they got the machine so small. When the 11" came out with the same keyboard I was amazed again. And seeing the latest MacBook it amazed me again.

Not sure what's coming next but I'm sure I'll be impressed

</comment></comment><comment><USER27> > And smartbooks ran limited mobile software, not powerful PC software.

They say this right below pictures of the Vaio P series, which ran Windows 7 on a 1600x768 screen. It was good for traveling, where you didn't _want_ to use your computer but might need some desperate computer use, and it fit in a jeans pocket if your thighs aren't bloated.

</comment><comment><USER16> >> The minibook's ultrawide aspect ratio also works better for movies, which have the same aspect ratio of 21:9

I usually watch movies while working on something else - I don't want the aspect ratio to match my screen. Stinks when it comes to utilizing the available screen space

</comment><comment><USER28> A similar form factor existed the Psion 5 back in the past. [https://en.m.wikipedia.org/wiki/Psion_Series_5](https://en.m.wikipedia.org/wiki/Psion_Series_5)

</comment><comment><USER29> Half the battery?

<comment><USER30> Actually the author has cut essentially 100% of the battery from the MacBook Air.

<comment><USER31> Not really:

[http://cdn2.macworld.co.uk/cmsdata/reviews/3595594/New- MacBo...](http://cdn2.macworld.co.uk/cmsdata/reviews/3595594/New- MacBook-2015-battery.jpg)

From the photo it looks like the quarter or third of the battery is below the keyboard. But the smaller screen is probably not enough to compensate for the loss, so yea, probably it would have shorter battery life but not by 100%...

<comment><AUTHOR> We could make the device a millimeter thicker so as to maintain the "up to 10 hours" battery life of the Macbook.

</comment></comment></comment></comment><comment><USER32> I'd like one of these just for text with an E-Ink screen, no GUI, boot straight to Emacs. What to name it though? Emacs-book, text-book, clibook...

<comment><USER18> If you could get a _nix to boot on a Freewrite, it would seem to offer what your after.

[https://getfreewrite.com/](https://getfreewrite.com/)

<comment><USER32> I couldn't afford the required mustache wax.

</comment></comment></comment><comment><USER33> The netbook is back.

<comment><USER18> Yep, its called a Chromebook.

</comment></comment><comment><USER34> The original Surface had a similar aspect ratio and it was borderline unusable, even with windows 8 touchmode.

</comment><comment><USER35> Might be acceptable if you could pivot the screen 90 degrees for a nice long portrait mode.

<comment><USER36> It would be also great if they could somehow split the keyboard into two pieces for better ergonomics.

</comment></comment><comment><USER37> Since we're spitballing ... screen with portrait orientation and a split keyboard.</comment>


Show HN: An Simple Hello World Angular 2 Application (Without Node) - <AUTHOR> https://github.com/antoaravinth/hello-world-angular-2 <comment><USER2> Neat, this will work well for creating a Plunkr.

It's a PITA to setup Angular2 transpilation without WebPack/JSPM.

If you're interested, here's a demo setup for my custom Angular2 Markdown component. It uses JSPM and Traceur for ES6+annotations transpilation. [https://github.com/evanplaice/ng2-markdown-component- demo](https://github.com/evanplaice/ng2-markdown-component-demo)

<comment><AUTHOR> Thanks ! Sure will checkout your project too.</comment></comment>


Comedian Furious After Airbnb Rents His Apartment To "XXX Freak Fest" Orgy - <AUTHOR> http://gothamist.com/2014/03/16/comedian_claims_airbnb_rented_his_a.php <comment><USER2> So what's the deal here...is Airbnb going to keep forking over money for everyone who violates the terms of service, not to mention the state law? Is this covered by Airbnb's insurer, or is Airbnb paying this out of pocket because it turned into a social media blowup and it's worth eating the loss?

There's just something about this comedian's indignant attitude that is a real turn off...the way he carefully worded his original post to make it sound like the orgy actually took place, omitting the details that made it clear he prevented the party. And his laughable claim of "this is a family building"...yes, I'm sure the families really appreciate you renting out your apartment to total strangers with no vetting. I wouldn't be surprised if some of this was a setup to provide material for his next comic routine.

<comment><USER3> > There's just something about this comedian's indignant attitude that is a > real turn off...the way he carefully worded his original post to make it > sound like the orgy actually took place, omitting the details that made it > clear he prevented the party.

Where was it mentioned he'd prevented the party? It sounded instead like he showed up right in the middle of it.

<comment><USER2> Gawker really should get he reporting credit for this, as they actually verified the details and Gothamist does a sloppy job of ripping off their work

[http://gawker.com/man-unwittingly-rents-out-apartment-on- air...](http://gawker.com/man-unwittingly-rents-out-apartment-on-airbnb-for- xxx-1544961941?utm_campaign=socialflow_gawker_twitter&utm_source=gawker_twitter&utm_medium=socialflow)

According to Teman, he handed the keys over to David late Friday afternoon. Then, he left his suitcase with his doorman and went to dinner before planning to head out of New York. When Teman returned to his building to retrieve his bag, he saw David in the lobby and overheard him telling others that "they're shutting us down."

Teman asked what was being "shut down," which he said brought a look of mortified recognition over David's face. Concerned and suspicious, Teman went back upstairs to his apartment, where he attempted to figure out what was going on. He opened his computer and Googled the Gmail address and phone number David had provided him during their correspondence on Airbnb. The search of the phone number brought up this tweet from February that advertised a "BBW Panty Raid Party" in New York.

...

Really, this is (yet another) story about the power of social media in our everyday lives, just with a twist of BBW orgy. Had Teman Googled David's phone number before handing over the keys, he probably would have cancelled the agreement and saved everyone the trouble. If David's number wasn't plastered across Twitter, he and whomever wanted to pay $20 to enter his party could have fucked all over Teman's apartment in peace.

Instead, Teman ended up stuck in New York and displaced from his apartment. David did not get to throw his Freak Fest. They both have spent the past 48 hours entangled with lawyers and policemen. What a weekend it could have been.

<comment><USER3> OK, thanks. I see that Teman is claiming damages for things not related to the party itself then, but for David allegedly damaging his apartment prior to the party.

</comment></comment></comment></comment><comment><USER4> Person rents out apartment to an individual who ended up lying to him. Is furious at AirBNB service for some reason.

Does this logic work with other middleman services as well?

Some examples:

* Buy high priced item from (high ranked, but does it really matter?) individual on Ebay, turns out to be fake. Complain that this is Ebay's fault.

* Make some kind of deal on Craigslist. Deal falls through. Claim all the fault of Craigslist.

<comment><USER5> It's pretty remarkable how the tone here has changed in three years' time. The first ransack-gate led to all sorts of calls for AirBnB to compensate the victim [1]. This time around, people seem to be blaming the guy who rented out the apartment [2].

Aside from the shift in time and the "orgy" angle, the situations are identical. Either HN has dramatically changed, or the collective attitude toward this kind of thing has shifted to a decidedly anti-host (or pro- company?) sentiment. Interesting.

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

[2] More commentary here: [https://news.ycombinator.com/item?id=7407796](https://news.ycombinator.com/item?id=7407796)

<comment><USER6> I'd say its neither.

People react to a story based on the total context, not entirely on the facts. In the previous story, (if I remember correctly), it was presented as an ordinary individual who had their place ransacked and now was afraid to live there. There was an outpouring of support due to the individual being so sympathetic and the case being delivered in such a desperate tone.

In this case the guy comes of (true or not) as entitled and antagonistic.

\----

That said, a careful reading of the situations shows its not factually indentical.

The previous case was a home-owner. AirBnB now protects people who own the property from damage caused when leasing.

This case is a renter, who was essentially running a hotel room out of his apartment--an act against his lease, and perhaps even illegal in his area.

<comment><USER5> You're "remembering" facts to justify your bias. Here's the original blog post from ransackgate:

[http://ejroundtheworld.blogspot.com/2011/06/violated- travele...](http://ejroundtheworld.blogspot.com/2011/06/violated-travelers- lost-faith-difficult.html)

She never said anything about being an owner. As far as I can tell, she was a renter. Certainly, nobody knew if she rented or bought at the time the post hit HN.

Basically, what you're saying is that you don't like the guy's tone, so you think he doesn't deserve sympathy. Glad you don't work for AirBnB customer support.

<comment><USER6> Well I'm only refering to the articles linked to previously in this thread. In that article, they said that it was her 'house' as opposed to an apartment or the like. So I presumed she was a home owner, or at the very least a house is not a subdivision of a larger building.

> Glad you don't work for AirBnB customer support.

To be honest, I don't think he deserves sympathy since I don't know the full story (i.e. what exactly was damaged). But were I customer support, I'd be happy to hold his hand and have a cry with him because well.... that's the job of customer support.

</comment></comment></comment></comment></comment><comment><USER7> Already discussed a couple of days ago: [https://news.ycombinator.com/item?id=7407796](https://news.ycombinator.com/item?id=7407796)

This article does however get into the followup between "victim" and AirBnB.

</comment><comment><USER8> It's really horrible that happened to this guy. It's not really AirBNB's fault but I am happy to hear they are helping him out regardless.

Letting someone into your _home_ should be a rather big deal. Just because some website vouches for a person doesn't mean you shouldn't do some checking up of your own.

It's sort of like Craigslist. Beware and assess the risks carefully!

</comment><comment><USER9> I find this hilarious. But only because it wasnt my place. I checked the URL twice to see if it was the onion. The comedian should have joined in.

</comment><comment><USER10> This should have NSFW in the title.

<comment><USER11> the "XXX Freak Fest Orgy" didn't clue you in??

<comment><USER10> Didn't think there would be pics of anything sexual.

<comment><USER12> the "XXX Freak Fest Orgy" didn't clue you in??

</comment></comment></comment></comment><comment><USER13> The comments on that article are terrible. People really hate the guy.</comment>


An Abrupt End to Debian Live - <AUTHOR> https://lists.debian.org/debian-live/2015/11/msg00024.html <comment><USER2> Just found out about this.

I'm a bit out of contact with Debian politics - anyone got an insight? Quite a few derivative distributions depend on this tool for making .isos that are their main installation vehicle.</comment>


The end of an era: Steve Jobs's greatest Macworld video hits, 1998-2008  - <AUTHOR> http://www.thestandard.com/news/2009/01/01/steve-jobs-greatest-macworld-video-hits-1998-2008?source=nlt_weekly

<comment><USER2> It's an interesting collection of videos. The guy is a master showman -- he can make even the most mundane hardware feature -- even the product packaging -- seem utterly cool, innovative and desirable. And even though his appearance changed (compare 1998 with 2004), his enthusiasm never flagged. I hope he still makes an appearance at the Apple WWDC this year.</comment>


Vitamin D deficiency is a widespread problem - <AUTHOR> http://articles.sun-sentinel.com/2010-08-15/health/fl-vitamin-d-deficiency-20100815_1_common-nutritional-deficiency-diabetes-pain

<comment><USER2> Does anyone else think that layout and number of ads screams of a made for adsense site that is more spam than genuine content?

<comment><USER3> It's a newspaper. They have to pay for that building somehow.

</comment></comment><comment><USER4> If you take D3 supplements, make sure they are in gelcap format and not dry tablets. Vitamin D is fat-soluble and much better absorbed that way.

Personally, I take 4000 UI/day (living in Canada).

</comment><comment><USER5> I'd recommend taking fish oil for vitamin D, as it also contains proper Omega-3 acids (many things labeled with Omega-3 contain useless variants).

If you are going to be practical about it, taking a spoonful from a bottle each morning costs about 95% less than the equivalent dose from fish oil capsules.

Taking a swig of fish oil ("tran") in the morning is quite common in Norway. It is normal to start giving it to kids from when they are a few months old, to get them used to the taste.

<comment><USER6> I take fish oil capsules now and don't care for the fish burps that can come later even when I take them in the middle of a meal as opposed to after. I couldn't imagine just downing a spoonful of the stuff :)

<comment><USER7> What you want is fish oil capsules with "enteric" coating. That gets rid of the fish burps.

Agreed, I tried downing some fish oil by spoon (which was lemon flavored as well) and could do it longer than 5 days.

</comment></comment></comment><comment><USER8> This was discussed a couple weeks ago - <http://news.ycombinator.com/item?id=1550974>

<comment><USER9> At least it's not another Foursquare/Techcrunch article!

</comment></comment><comment><USER10> I've found that taking Vitamin D seems to absolutely boost the immune system. Especially important if you live somewhere with little sun, like Seattle.

</comment><comment><USER11> Original article (the one at sun-sentinel appears to be a copy-paste of this): [http://www2.journalnow.com/content/2010/aug/14/diet- dficienc...](http://www2.journalnow.com/content/2010/aug/14/diet-dficiency- studies-are-showing-that-many-peopl/)

</comment><comment><USER9> Vitamin D also helps prevent lots of forms of cancer: <http://www.vitamindcouncil.org/cancerMain.shtml>

<comment><USER12> Somehow it seems unlikely that this is a neutral source.

<comment><USER9> haha, very true, I just googled vitamin D+ cancer and that was the first hit. But there are lots of other non-biased publications who claim the same thing. I heard some discussion on NPR a few months back about it is why I remembered.</comment></comment></comment>


How to plan for/manage/reason about volatility in tech careers - <AUTHOR> I'm in my early 30s, the point when careers start to diverge. Spent my 20s going to college, working at Microsoft, founding a startup (acquired, not much personal return), and then working at a someone else's startup for 3 years. I was reasonably successful and happy doing all of them.
Many of my friends work at bigco tech jobs (Google/Apple/fb) and make $300k/year or more (this is not normal, these are exceptional people, many with PhDs from top-5 CS/ECE schools). I'm trying to compare this lifestyle to the spolsky/basecamp/bootstrapper path (for myself) and have realized a few things:
(a) Absent some sort of acquisition, there is a real shot of earning 3-4mil/pretax over the next decade at a bigco job. There is no viable path to do this out of revenue from a smaller, slow-growing business, esp. with employees involved. (Feel free to tell me I'm wrong about this, but explain why.)
(b) However, the mid-career options after getting into a bigco are...questionable. Spend your late 30s/40s as a middle manager whose career is strongly tied to a single company. Your tech skills atrophy because you spend your whole day in meetings and politics. You lose track of what's really going on outside the firm. And, you're one reorg away from being laid off, even though your employability somewhere else declines.
(c) It's an interesting problem through the lens of finance. The small business path is low-volatility, the bigco path has more volatility than people realize. How do people think about this? Do people in their 40s in management save a lot so that when a major dislocation happens, they can weather it? How do people do this in the Bay Area, with a 6k/month mortgage and tons of debt/school payments/other expenses normally incurred with a family? What's the plan?
Bottom line: if you work at a bigger company, you're going to have a bad year at some point (or 2). How do people plan for/account for this in career planning? <comment><USER2> (a) In the short run, a good job generally gives much better financial returns than a startup. From the overall vibe of your post, I would say don't startup unless you have a compelling drive to startup.

(b) Stay sharp. Don't depend on "bigco" to manage your career/skills for you.

(c) Spend wisely, Save wisely. There's no silver bullet there. Of course all the savings might not be enough for certain cases, but that holds true for both bigco and small biz. Don't become a slave of your lifestyle while the going is good for you whether it is a small-biz or a bigco job.

<comment><AUTHOR> Thanks for your response.

The medium-long term is where I'm fuzziest. Maybe that's why life is so interesting.</comment></comment>


Gender pay gap in modeling - <AUTHOR> http://www.bbc.co.uk/newsbeat/article/37456449/top-modelling-agent-says-male-models-suffer-big-pay-gap-compared-to-women <comment><USER2> If you sell tampons to a woman no-one bats an eye, and if you try to sell them to men people will point out the silliness of the idea.

But this simple understanding gets thrown out of the window as soon as jobs are involved. For example males playing football make much more money than their female counterparts; simple logic tell us it's because people like to watch the athletes of top psyche, it's just that they happen to be male thanks to evolutionary predisposition. Males have more strength in the majority muscles in humans and most mammals (only exception is buttocks and upper legs). But no, people likes to immediately assume it's because sexism, a "they against us" mentality where it must be patriarchy or misogyny instead of looking for the most simple explication driven by the market.

And then if you make an average of how much women make and you happen to inclue athletes then this disparity will show up, and people will say stuff live "look women make 77% of what men do, sexism!" Instead of looking at the million variables, conditions of each gender and how they relate to every possible occupation/job field.

</comment><comment><USER3> There is no gender difference when the product you are selling is your brain. I don't see a point in pretending there is no difference, where you primary product is your physique.

<comment><USER4> There are gender differences in the brain as well.

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

<comment><USER5> These are entirely the result of socialization. Though the body is subject to natural selection and sexual dimorphism, the brain is subject only to the laws of Lysenkoism.

<comment><USER6> Saying "entirely" is not only demonstrably false but ultimately harmful if we are talking about pay gaps and irrelevance of gender for advanced mental work - people get "reactive" once they realize they have been lied to about gender differences.

Some random quotes from the wiki article:

"Several studies have shown the hippocampi of men and women to differ anatomically, neurochemically, and also in degree of long-term potentiation."

"In accordance with the sexual dimorphism of the amygdala, the right VPMC is more dominant in an active limbic system for males while the left is more dominant in females. These differences carry out to a behavioral level."

"Positron emission tomography studies have shown that men and women ranging from the ages of 19 to 32 years old metabolize glucose at significantly different rates in the orbital prefrontal cortex. Infant males who exhibited lesions on their orbital prefrontal cortex struggled with object reversal experiments, but females exhibiting such lesions did not have impaired performance in object reversal."

<comment><USER7> The "Lysenkoism" bit makes me pretty confident he's being sarcastic. That was the Stalinist rejection of Mendelian genetics, so it's a claim that mental differences are governed by a totally invalid theory.

<comment><USER6> haha, oops. Internet

</comment></comment></comment></comment></comment></comment><comment><USER8> Why is this flagged? It's a legit source and an interesting topic.

<comment><USER9> It is an interesting topic, and it is an important one for keeping perspective on various alleged pay gaps.

Maybe we are only allowed to discuss 'pay gaps' that have direct relevance to the software industry.

</comment></comment><comment><USER10> But why male models?

<comment><USER11> Probably because female models have a higher ROI (convert more buyers than male ones).

This would be a rational explanation. Of course the real explanation is misandry!

<comment><USER12> I think they were referencing a scene in Zoolander.</comment></comment></comment>


The Mythical Man-Month - <AUTHOR> http://www.hn-books.com/Books/The-Mythical-Man-Month.htm <comment><USER2> The Mythical Man Month is a classic. I'd suggest that you also read the transcriptions of the two NATO Software Engineering Conferences -- Garmishch 1968 and Rome 1969. They were incredibly influential and still make good reading thanks to the efforts of Brian Randall and others. Many of the classic software engineering quotes come from these conferences. The citeseer cache links are:

[http://citeseer.ist.psu.edu/viewdoc/download?doi=10.1.1.14.2...](http://citeseer.ist.psu.edu/viewdoc/download?doi=10.1.1.14.2194&rep=rep1&type=pdf)

[http://citeseer.ist.psu.edu/viewdoc/download?doi=10.1.1.127....](http://citeseer.ist.psu.edu/viewdoc/download?doi=10.1.1.127.3064&rep=rep1&type=pdf)

</comment><comment><USER3> This book is like reading Aristotle, it feels pretty old but it talks the truth and the truth never changes

<comment><USER4> Aristotle was a very smart chap, but it's hardly the case that everything he said was unchangeable truth. (Random examples: his fundamental physics was really, really wrong -- see [http://csep10.phys.utk.edu/astr161/lect/history/aristotle_dy...](http://csep10.phys.utk.edu/astr161/lect/history/aristotle_dynamics.html) for a very brief summary of some important errors; he said that men and women have different numbers of teeth, which they don't; his distinction between "substance" and "accidents" has been pretty much abandoned for ages, with the possible exception of the Roman Catholic Church's teaching on transubstantiation.)

<comment><USER3> You are right, I should've said Plato

<comment><USER5> Are you serious?

</comment></comment></comment></comment><comment><USER6> Quick summary: The complexity of a project increases as the square of the number of people on the project, so if a project is behind schedule you may want to remove people from it, not add them. It's difficult to predict completion times for software projects but that won't stop non-technical people from setting deadlines, or from asking you to promise to meet deadlines. Waterfall development does not work.

<comment><USER7> Why is it that people all remember this as the golden rule of the mythical man month?

The exact circumstances refer to a particular type of team development (surgical team) form a day when you wrote OSes in assembler and you had to coordinate who used which memory address for which variable.

Yet people use the advice to avoid adding testers or documentation people to a late project to relieve the developers. We have also advanced the programming techniques and tools a little since the IBM360.

Yes adding a large number of rookie/trainee programmers to a crunch project is a bad idea - but so is saying we can't get any extra help (Brook's says so) , we will just increase the hours the devs work until they are back on schedule.

<comment><USER8> Well he explains pretty well why adding people (any kind of people) won't work. To summarize it in one phrase: communication overhead.

You need to educate technical writers and testers on what the system does, but this is the easy part - you also have to allow for a period of transition of organization to accommodate all the new folks, that means education of the original team who is probably already panicked and stressed out..

There are two ways you can go about it IMHO to prevent total loss - triage the features and roll the thing out ASAP. Or you could try to make the most of situation by indeed adding people - but not in parallel since this will only increase the confusion. I would assign apprentices to the original team and branch off later.

In a situation like this you have to accept that you have screwed up and that there are no short term solutions. In longer term you can try to prevent similar mistakes.

Once the torpedoes are in water no amount of wishing is going to make them disappear. Time to tie down cargo and brace for impact.

</comment></comment></comment><comment><USER9> I think this (along with Peopleware) should be required reading to start a software company. It's incredible how many companies still make fundamental (and preventable) errors in running a software project.

</comment><comment><USER10> A nice summary. I was having drinks with a vc and he said the issues always remain organizational. Brooks saw that software is no different.

</comment><comment><USER11> As a student, I read "Dreaming in Code" by Scott Rosenberg, which makes several references to this book. In it, they run into just about every conceivable problem a software project can encounter, which makes for a pretty fun read.</comment>


Ask HN: Read or Jump Right In - <AUTHOR>

I am new to programming and have decided to start with Python. My question is should I read up on the programming theory first or should I just jump in and start building things? <comment><USER2> Jump right in. If you take a CS class they'll have you coding right away. Since you're doing this on your own you won't have that external force to keep you moving. What will end up happening is you'll constantly read more and more, but never feel "ready" to start coding. The solution is to just start coding.

Though I had a lot of programming experience before I started to learn web dev, I had zero Ruby on Rails experience. So I started reading, watching, buying any material I could find. I _still_ didn't feel ready. Then I realized I will never feel ready until I get started. The worst that can happen is you make garbage and learn something while you're at it. And don't get down on yourself if you're not producing right away. The learning curve is never linear. You'll get better at it faster and faster.

Also, hang out in Python IRC rooms. If you can't find an answer to your question through Google or Stack Overflow, chances are there will be someone in there who can help guide you.

</comment><comment><USER3> What prior experience do you have?

In general, I'd say jump right in: Dive Into Python <http://diveintopython.org/>

The best way to figure out how to make things is to make things. It's rewarding to be able to get stuff working from the get-go, and tinkering with that, trying to bend it to your will motivates you to understand how it works.

However, if you're familiarity with computers is very basic, you may want to do some reading about how computers work and the abstraction layers a program has to deal with; for example, do you know what abstraction layer Python is at?

Side note, you might find it even more fun and rewarding if your first programs are graphical <http://raphaeljs.com/playground.html> instead of being text-oriented, command-line programs that Python is most suited for.

If so, try learning JavaScript, that link uses the Raphael library, which you can find out more about at <http://raphaeljs.com/reference.html>

<comment><AUTHOR> I have a general understanding of computing and networking as I am currently employed in the information assurance field (CISSP and Network +), programming is however, completely new to me.

I guess the hardest part is I want to be an expert right away. I often read HN for inspiration and therefore want to perform at the same level.

So far the basics seem, well very basic and easy to understand. When I start looking at building something, I feel a bit overwhelmed. I want to push out things that I can be proud of and will help the community develop, and I guess that desire is conflicting with my current level of knowledge.

Sorry, bit of a rant and long post, but just trying to sort everything out so I don't get disillusioned.

<comment><USER4> > I guess the hardest part is I want to be an expert right away.

Not possible, it's like learning a musical instrument.

> When I start looking at building something, I feel a bit overwhelmed.

What are you trying to build?

<comment><AUTHOR> I have a lot of ideas, for instance an RSS feed filter to remove duplicates. Same idea could also be used to filter twitter feeds, although I understand the code would be different.

Do you think it would be better to work on my own projects and jump in the deep end or should I start with cookbook code and learn from that first? Part of the problem maybe is not understanding where to go once I learn the basics.

<comment><USER3> In this case, absolutely jump in the deep end. Find a way to get RSS feeds, and a way to display them -- there's probably libraries for either, however you plan on doing them -- and try to process them in between. Start with something small that works, and add functionality piece by piece, careful to make sure each change you made results in something that works. If you understand each piece, you understand the whole. Every piece you understand, you've learned something.

About "being an expert" -- programming is a very, very broad topic, with far too many different technologies and libraries used in different situations, so when even "experts" work, usually only a tiny amount of their work falls under their actual "expertise" (as in what they could do blindfolded), and they are always Googling what to do next. So when you do that -- constantly Google what to do next -- don't feel like you're not an expert.

I guess what I'm saying is, (perhaps unlike other fields) the body of knowledge in programming, not only that exists, but that any typical work involves, is so vast, there are no "experts" that have intimate knowledge of all of it.

<comment><AUTHOR> Thank you. Definitely encouraging words and I am now going to jump in the deep end (Canonball!).

</comment></comment></comment></comment></comment></comment><comment><USER5> Perhaps you could try out <http://learnpythonthehardway.org/index>

It appears to be a good mix of 'reading' and 'jumping in'.

<comment><USER6> The jumping right in is of the jump-right-in-by-typing-in-code variety. And that's the way to go.</comment></comment>


How I stopped being afraid, and learned to love Deflation - <AUTHOR> http://bitcoinweekly.com/articles/one-apple-today-two-apples-tomorrow-or-how-i-stopped-being-afraid-and-learned-to-love-deflation

<comment><USER2> Is this bitcoin article wave an organized thing like the erlang articles of old? Or do people really find it that interesting?

<comment><USER3> It's a matter of fashion. Right now, bitcoin is new, shiny, and fashionable. It won't last. I predict that in a year, we won't hear about bitcoins anymore.

<comment><USER4> Ehh, not really. It's not that "we're" interested in bitcoin, it's that "they're" interested in bitcoin. Remember, the sensible thing to do once you own bitcoins is to start spamming all your friends to tell them how awesome bitcoin is.

I'd be interested in seeing the stats on who keeps voting these bitcoin articles up, cuz I suspect there's an organized or at least self-organizing voting ring going on.

<comment><USER5> Somewhat to my surprise, it doesn't appear that they've triggered the voting ring algorithm yet. (I remember that swombat's Twitter followers did trip it at least once - it can be tripped without scripting.)

</comment></comment></comment></comment><comment><USER6> When miners can't produce coins anymore, will there still be enough honest people contributing compute to secure the transactions?

Right now the deflation makes it very worthwhile for a miner to participate.

Wouldn't transaction costs need to be quite high? Would anyone use a system where one pays 10% for every transaction to be hashed?

<comment><USER7> The network rules are such that the difficulty is adjusted to keep block production to approximately 1 block per 10 minutes. If miners drop out, the difficulty is reduced.

<comment><USER8> That doesn't help with what the GP is talking about, as by design there cannot be more than 21 million bitcoins.

<comment><USER7> Miners provide a crucial service: they generate a sequential log of transaction blocks. Consensus is reached by accepting the block chain which represents the most work. Miners are rewarded for that work in two ways: transaction fees (chosen by those doing the transactions) and "mined bitcoin".

The question here was "what if the mined bitcoin becomes negligible" (which will happen as we approach 21 million bitcoin). The worry is that the transaction fees will become too high or the miners will all stop mining, and the block chain gneration will stop. As I said, this is not a problem because the block difficulty will automatically re-adjust.

<comment><USER6> Wouldn't that reduce security? When only 1% of current miners contribute would it be possible for someone with control over a huge GPU cluster or botnet be able to attack the system?

<comment><USER7> If the attacker could amass more computing power than the remaining miners, then yes. He could reverse his own recent transactions, and suppress new transactions by others by ignoring them when generating blocks.</comment></comment></comment></comment></comment></comment>


Scaling to 100M: MySQL Is a Better NoSQL - <AUTHOR> http://blog.wix.engineering/2015/12/10/scaling-to-100m-mysql-is-a-better-nosql/ <comment><USER4> So much to disagree with here ...

> Locks limit access to the table, so on a high throughput use case it may > limit our performance.

Then use a proper database that implements MVCC.

> Do not use transactions, which introduce locks. Instead, use applicative > transactions.

Or just use a database that handle transactions more efficiently.

> `site_id` varchar(50) NOT NULL,

Why varchar(50)? UUIDs are 16-bytes. The best way to store them would be the binary bytes (which is how postgres stores them). If it's hex without dashes, it'll be varchar(32). If it's hex with dashes, it'll be varchar(36). Why did they pick 50? Future growth? Smart keys? Schema designer doesn't know what a UUID actually is?

> Do not normalize.

Bullshit. Normalize as much as is practical and denormalize as necessary. It's much easier to denormalize and it greatly simplifies any transaction logic to deal with a normalized model.

> Fields only exist to be indexed. If a field is not needed for an index, > store it in one blob/text field (such as JSON or XML).

This is terrible advice. Fields (in a table) exist to be read, filtered, and returned. If everything is in a BLOB then you have to deserialize that BLOB to do any of those. That doesn't mean you can't have JSON "meta" fields but if your entire schema id (id uuid, data json) you're probably doing it wrong. It's next to impossible to enforce proper data constraints and all your application logic becomes if/then/else/if/then/else... to deal with the N+1 possibilities of data. Oh and when you finally add a new one, you have to update the code in M+1 places.

<comment><USER5> >> Locks limit access to the table, so on a high throughput use case it may limit our performance.

> Then use a proper database that implements MVCC.

InnoDB does implement MVCC. MVCC is not a silver bullet.

>> Do not use transactions, which introduce locks. Instead, use applicative transactions.

> Or just use a database that handle transactions more efficiently.

Easy to say, hard to implement at this scale. If you do a lot of writes and reads concurrently to a hot dataset, it's really quite hard to beat this architecture. This is why its such a popular and battle tested solution for many extremely high scale applications with workloads like this. Not to mention extremely well understood.

>> Do not normalize.

> Bullshit. Normalize as much as is practical and denormalize as necessary. > It's much easier to denormalize and it greatly simplifies any transaction > logic to deal with a normalized model.

But we are talking about performance... Having something in a single table that is denormalized is always going to be faster than having an elegant data model with "Everything In It's Right Place"

>> Fields only exist to be indexed. If a field is not needed for an index, store it in one blob/text field (such as JSON or XML).

> This is terrible advice.

So facebook/friendfeed, uber, dropbox, and many more or wrong then. Ok.

This is really all best practice for running something like this.

Of course it flies in the face of best practice for running a smaller system. Is there tradeoffs? Absolutely! Would it be smart to do this if the need for this scale is not obvious? Probably not.

You end up having more logic in your application and coordination layers, but this is all pretty good advice for people at this scale, and certainly not bad at all.

<comment><USER4> > Of course it flies in the face of best practice for running a smaller > system. Is there tradeoffs? Absolutely! Would it be smart to do this if the > need for this scale is not obvious? Probably not

From the article:

> The routes table is of the order of magnitude of 100,000,000 records, 10GB > of storage. > The sites table is of the order of magnitude of 100,000,000 > records, 200GB of storage

That's tiny. Both of those easily fit in memory on modern hardware. This isn't _cough_ web scale, this is peanuts.

The savings from having a simpler system that operates both transactional and the lack of disparate CASE/IF logic would win over this monstrosity of a design.

For a counterpoint where this type of model makes more sense check out Ubers data model[1]. Similar setup but more applicable use case and (without having any inside intel on it) I'd wager is justified.

[1]: [https://eng.uber.com/schemaless-part- one/](https://eng.uber.com/schemaless-part-one/)

<comment><USER5> So your argument has shape shifted from "This is terrible advice" to "this is terrible advice unless your at uber scale".

Sounds like we are in agreement then - at high enough scale - this is solid advice.

<comment><USER4> > So your argument has shape shifted from "This is terrible advice" to "this > is terrible advice unless your at uber scale".

No my argument is this particular design is both unjustified for the use case and poorly thought out/implemented. The uuid as varchar(50) is a dead giveaway of amateur status.

<comment><USER6> Are you saying a NoSQL solution is better for this use case? Because that's what this article is asking. Sure, they could do things better (can't we always?), but that's not the point they're trying to make.

Like you said, 10GB of data isn't very much, it really doesn't matter if you go with NoSQL or SQL. But SQL will probably give you more flexibility and will be easier to manage until you get really, really big.

<comment><USER7> Actually yes, a single key-value database could handle all of their load with better functionality. Make that 2 nodes and you have HA and redundancy.

Problem solved.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> Aside from the MySQL vs. Other DB debate (which I refuse to take part of, although I'm willing to ascribe good points to all camps), this article is absolutely excellent with respect to acting as a guide for people who want to use MySQL as a Key/Value store. Absolutely stellar article! All of the points are dead-on. I applaud the author for putting together so much specific information about tuning MySQL for Key/Value in one place, and the ridiculous speed and scalability you can get if you do it correctly. (That being said, NoSQL Key/Value databases are good too.)

</comment><comment><USER9> This is basically "We made it work, easy, all the rest are wrong". Wix is 10 years old, they probably started with MySql and stuck with it, is it wrong? Maybe, maybe not. If they were to start today would they have used Mysql aswell or gone with another solution? Did they spend the last 10 years building tools to help them scale MySql (at which point it's easy for them to operate) rather than use a tool that had multi server or multi DC in-mind.

Oh and citing statistics without details is plain lying, how many server, how much RAM, SSD based or HDD....

<comment><USER10> Reddit does something very similar. [https://kev.inburke.com/kevin/reddits- database-has-two-table...](https://kev.inburke.com/kevin/reddits-database-has- two-tables/)

I think the important thing to note here is that there are lots of different ways to use any given tool that can fit your use case without being an atrocity.

<comment><USER9> And they did it because of maintenance problems not (just) performance (from the link you provided). But they also said "Postgres was picked over Cassandra for the key-value store because Cassandra didn't exist at the time. Plus Postgres is very fast and now natively supports KV." Which isn't patronizing like the article OP linked.

[http://highscalability.com/blog/2013/8/26/reddit-lessons- lea...](http://highscalability.com/blog/2013/8/26/reddit-lessons-learned-from- mistakes-made-scaling-to-1-billi.html)

<comment><USER11> Thanks for that... I think it depends on one's needs... it would surprise me if Wix as using MySQL without sharding data either by route and/or site.

Personally, I'd be inclined to use PostgreSQL for most things once they have an in the box solution for replication and failover that doesn't require a commercial contract for a sane solution. Every time I've used mySQL (admittedly not for about a decade), I wind up with a lot of WTF moments. If I'm paying for it, may go with MS-SQL, or a hosted "cloud" provider as tbh, no interest in being a DBA.

I really like RethinkDB's approach as a no-sql solution, and their admin interface is second to none in this space. If you _really_ need more scale (more than around 20 servers or so), then you should probably be using Cassandra, and/or supplementing with the likes of ElasticSearch.

In any case, if you want real-time data for hundreds of millions of users, you're going to have data partitioning and redundant replication and caching solutions.

I worked at GoDaddy on Website builder while they were transitioning their publishing target to C*, and have to say it performs incredibly well as basically a distributed file system in the role described in the post article.

</comment></comment></comment></comment><comment><USER12> Since Wix is using MySQL as a key-store ... I wonder why they didn't look at using Postgres HStore [1].

HStore is a key value store built directly in the RDBMS of Postgres.

[1] [http://www.postgresql.org/docs/9.6/static/hstore.html](http://www.postgresql.org/docs/9.6/static/hstore.html)

<comment> luka-birsa We've drank the NoSQL coolaid mostly as we prefered a schemaless approach to our database and couchdb looked like a cool thing to use. Tested, deployed in production abd after a while we figured out that most of the promises about performance, stability, etc we're mostly bull.

HStore was released, we've migrated to PG and we can't be happier. Zero issues so far.

<comment><USER13> Couchdb isn't exactly the best thing to judge NoSQL by today especially by it's old performance issues, lack of automatic compaction, indexing on demand instead of proactive background indexing, etc.

<comment><USER14> At what point do I get to tout out the No True Scotsman paradox? Every NoSQL solution whether as its own DB or built into another one (like Postgres) I've worked with I've either hated (Couch, Mongo, Cassandra, Neo4j), or relegated to _very_ specific use-cases (Riak, Redis, Postgres).

I agree with the Wix team. I've used Mongo in a very high volume site and it was a constant source of headaches. We even had an engineer we called "MongoDB" because he was constantly having to deal with scaling it. It didn't even handle more than 10% of the application data, it was strictly for timelines; the rest of it was in trusty old MySQL. If we'd just done blobs as JSON in MySQL in the first place we would have been completely fine.

Even though I prefer Postgres, knowing nothing else, I would prefer 100% SQL in MySQL than a Postgres backed application that splits the storage between tables and KV store.

</comment></comment></comment></comment><comment><USER15> I hate these stupid "my db is better than whatever db" articles. 1) What db to be used depends on the situation AND MORE IMPORTANTLY 2) what experience your staff has

I can say that 10 years go, I would have chosen M$SQL over MySQL and it would have been the correct choice. At the time I had almost 10 years experience with M$SQL and almost none with MySQL. Now I have more than 10 years of MySQL under my belt. AND the MySQL experience is more current. Right now I could choose between the two based on specific features and performance characteristics. For me to pick Posgresql because of a specific feature would be insane because I don't experience with it. No knock on Posgresql ... maybe I'll spend time with it and pick it for some down-the-road project.

I have implemented couchdb as a caching solution. I know how to manage, backup, and restore the database server. I have managed a 5 node cluster. If you ask me to implement NoSQL, it would be my choice for 2 reasons: 1\. It can do the job. 2\. I have experience making it do the job.

I'm sure there are 10 million people out there would would choose mongo in the same situation. The would not be wrong and they may come up with a superior solution. For me to implement Mongo today _would_ be wrong - I would almost certainly come up with an inferior solution. for them, it would be stupid not to.

I'm not saying "don't learn anything new". I'm saying "don't gamble your business on technology with which you're not familiar".

Its a bit like backups ... the most important thing about a backup is not the technology you use, but whether you are capable of restoring and maintaining the backups.

<comment><USER16> First off, I can't take you seriously after using a dollar sign in Microsoft. That's just a conversation killer for anyone talking seriously in tech. This isn't an IRC channel for 13 year olds in 2004.

Secondly, the article isn't about what is "better" overall. It's about scaling SQL, and how noSQL isn't always necessary. The "in" thing to do right now is to have noSQL in your stack, blindly, without looking at your project. Or doing expensive migrations to noSQL solutions when you already have an expansive infrastructure built on SQL but need to scale. Wix is just giving insight into their techniques with MySQL and how in the end it made more sense for them than going with something like Mongo.

TL;DR: You didn't read the article.

</comment></comment><comment><USER17> I thought nosql movement was about distributed systems, cap and all that. What does this "active-active-active" even mean? No consistency and no availability guaranties I presume?

<comment><USER18> I may be reading this wrong, but I think they are purposing a not C not A not P solution... thats "ok" fast? They explain how to make a single mysql instance run as key-value but I dont understand how it becomes master-master or cross DCs. Wonder if they run Jepsen or do any partition tolerance tests given their mentioning it.

<comment><USER19> AFAIK the only way to do 3 masters in vanilla mysql is ring replication. That means C is B's slave, B is A's, A is C's. If that's what they do, then yeah, it's a noCAP deployment. No consistency if you insert the same UUID at the same time into 2 masters. No availability unless you implement it yourself by retry to another master. No partition tolerance, because if you break one replication link, half the writes are not replicated between other servers and you can't really both reconfigure the ring and replay the transactions.

(Yes, they say active-active-active, not master-master-master, but then they say across DCs... It could be just M-S-S with config switch on failover, but for me the post suggests it's not that)

</comment></comment></comment><comment><USER20> Scalability is like an abstract painting. It's unique to one's infrastructure. Its writing or sometimes postmortem makes good brain fertilizer. Not so much more. Beyond that I wouldn't rush to implement scalability du jour.

A setup that works for a certain service won't necessarily work for another unless yours is a very close replica. Based on my experience in this area, and I'm a performance seeking nut, each platform, and even each traffic pattern, needs its own thinking hat.

That's what makes it so fun!

<comment><USER21> Spot on! I bet there are hundreds of different stories like this with unconventional uber-hacks for performance.

</comment></comment><comment><USER22> This may be an unpopular perspective, but here goes. For many years I ran a business doing web development. I had many clients approach me who were using Wix, and who I could not help, because Wix had effectively taken hostage their images. Because of those years of bad experiences (telling clients that they are screwed unless they keep paying Wix), I do not trust Wix, and so I do not trust this post. Should those clients have trusted that Wix would make their data available in the future? No, totally not. But that is the cost of doing shady things. Everything with your name on it now gets taken with a grain of salt.

<comment><USER23> By "taken hostage their images," do you mean that literal graphic files uploaded to Wix servers were somehow made inaccessible to the user?

<comment><USER22> Yes, exactly. I don't know how they do it now, but Wix did the "one big Flash blob as a website" and did not make data available to clients to download once they had been uploaded. So images and other data that had been "compiled" into the Flash blob were erased or something. There was no warning about this, and it took many by surprise. This effectively forced people to renew their subscription to Wix who otherwise wanted to use something else. The worst was a friend of a friend whose elderly mother had used Wix to upload old family photos thinking that Wix was a safe place to store them, not knowing any better. I felt _so_ bad for that woman. I have no love for Wix at all.

<comment><USER24> Weird. I wouldn't ever do anything like that with Neocities. Downloading a site is a button click on the bottom of everyone's dashboard (it spits out a zipball of the files). Flash is anachronistic as all hell anyways.

It's weird to me that they're hosting web sites that need inline MySQL at all, but I suppose they probably do a lot of fancy backend stuff. Much better to async queue any data sending unless it needs to be inline. Much better than that is to static cache.

We're straight up static + nginx for all site serving, via an anycast geo CDN. Logging is passively provided by the nginx logfiles, which are parsed hourly asynchronously. It's a pretty good system, and about as fast as site delivery can get. I guess I don't know what Wix offers for site features, but for simple web sites, why bother with a database for web site display at all?

That said, I agree with the article's premis. I'm partisan to PostgreSQL but it's dumb to say it doesn't work and that some wacky new TrendDB that doesn't handle fsync or atomicity correctly (and therefore is TEH SCALE!) is somehow better for this job.

</comment></comment></comment></comment><comment><USER25> I wonder if using the memcached plugin for InnoDB[1] would speed things up even more, at the expense of not having flexible queries (and thereby introducing multiple roundtrips) anymore. Presumably, they are using simple "SELECT * FROM table WHERE id = ?" in most places anyway, so that could be an okay tradeoff to make.

[1] [https://dev.mysql.com/doc/refman/5.6/en/innodb- memcached.htm...](https://dev.mysql.com/doc/refman/5.6/en/innodb- memcached.html)

<comment><USER26> I wonder about this myself, anyone has experience using this? MySQL 5.6 brought many long awaited features, like schema update without locking tables [https://dev.mysql.com/doc/refman/5.6/en/innodb-online- ddl.ht...](https://dev.mysql.com/doc/refman/5.6/en/innodb-online-ddl.html) (bye bye Percona tools).

</comment></comment><comment><USER27> > Use client-generated unique keys. We use GUIDs.

Minor note but wouldn't UUIDs be better since they're time based? Sure it's really unlikely to hit an already used GUID but an UUID makes it impossible.

In fact is there a use case where it's better to use GUIDs over UUIDs? I couldn't think of one but I could be omitting something from my thinking so I'm curious.

Edit: apparently GUID and UUID are the same thing and GUID is simply Microsoft's original implementation of UUID. All this time I had no idea...

<comment><USER28> They are the same thing. Both should include time as well as the server address, etc.

<comment><USER29> note there are like 5 versions of UUID, and only v1 and v2 include time and server address. It's also considered bad practice to use them, as it makes your UUID's guessable.

<comment><USER30> Depends entirely on what you're using them for.

</comment></comment></comment></comment><comment><USER31> > When someone clicks a link to a Wix site... That server has to resolve the > requested site from the site address by performing a key/value lookup URL to > a site.

So Wix uses MySQL to resolve site routes internally? Is this the best way to do it? Would it be possible to use internal domain names and rely on DNS to resolve everything?

<comment><USER32> Define best but it's a pretty reasonable approach. Some DNS servers (powerdns is an example from memory) use mysql over more traditional back ends like dbm which aren't so hot for high volumes of zone changes. I imagine a site like wix could be pretty tough on DNS.

Re: nosql, I'm coming at that with really positive experiences in Cassandra but I can't imagine what kind of DNS system it would be a good fit for. The ability to tune CAP to fit DNS may be useful but in general I think of Cassandra as the solution you think about when your 2 node vertically scaled monster can't keep up.

<comment><USER31> It sounds reasonable, but with DNS you'd get geographic distribution for free, right? Won't you have to do something like sharding to achieve a similar thing with MySQL?

<comment><USER32> Hmmm I don't think you'd get geo dist for free. For example, I don't think start of authority can be shared by multiple resolving servers. Or if it can, it's a feature of some specific dns implementation.

You get free caching which is tolerant to partitions, but you'd get that with either solution since it's largely the forwarding dns servers which make that happen and the difference here is constrained to the authorative resolving dns servers.

</comment></comment></comment></comment><comment><USER33> For those interested in NoSQL (particularly MongoDB) you may find this an interesting read:

[https://www.linkedin.com/pulse/mongodb-32-now-powered- postgr...](https://www.linkedin.com/pulse/mongodb-32-now-powered-postgresql- john-de-goes)

But over time I finding less and less reason to _not_ use PostgreSQL when contemplating a NoSQL document store.

</comment><comment><USER34> And PostgreSQL is a better MySQL so... all is settled?

<comment><USER26> Is it? MySQL improved a lot since 5.1 days, you know.

<comment><USER35> That's true, and I don't doubt that many developers' opinion of MySQL is tainted by some of the issues in earlier versions. It's still difficult to see what newer versions offer over Postgres though - and Postgres has a lot of bonus features too (like the JSON storage types, which are sublime)

<comment><USER36> Based on my experience: MySQL is significantly easier to set up, and it's much easier to admin. PG still seems to do the thing where it assumes your system user is your database user unless you do a bunch of things, and the weird blurred lines between the operating system and the database can get _really_ confusing at the start.

On top of that, MySQL is well-documented and lots of people use it for lots of different things, which makes the most common (and most of the uncommon) problems eminently google-able.

Anecdotally, I've avoided Postgres also in part because it had the same problem that Perl had when I got into Linux: the community was pretty toxic and unwelcoming. I asked about replication once, and I got a bunch of answers that fell into a few categories: 'Why on earth do you need replication?', 'You don't need replication, Postgres is fast enough', 'set up a script to rsync your data directories over and over again', 'mysql replication is unreliable so you shouldn't use it so it doesn't matter'.

That sort of attitude drove me (and, I'd wager, a lot of other people) away from Postgres and towards the vastly more welcoming MySQL community, and I'd wager that a lot of people just kind of stuck there because why switch?

Postgres has added a lot of pretty great features lately, and it seems good? But I'm left wondering why I should use Postgres for my RDBMS, my JSON data store, _and_ my KV store, when history has shown that one piece of software that expands to do everything rarely does any of it well.

(Postgres has since gained replication abilities)

<comment><USER37> > On top of that, MySQL is well-documented

I seriously disagree with that. Documentation is one of MySQL's weakness, especially compared to PostgreSQL which is known to have one of the best documentation in the open source world.

<comment><USER38> I think the comment you're replying to might be using "documentation" to mean Stack Overflow.

I really love the PostgreSQL manual.

</comment></comment></comment></comment></comment></comment><comment><USER39> I was expecting a comparison but they only presented one side.

</comment><comment> mh-cx I have not heard about "Wix" before, but maybe they should have done some more research before picking this name. To a German this sounds like "wichsen" which means, well, "wank"[1].

[1] [http://dict.leo.org/ende/index_de.html#/search=wichsen](http://dict.leo.org/ende/index_de.html#/search=wichsen)

<comment><USER40> Not only is this completely off-topic, they are a publicly traded company NASDAQ: WIX and they are currently valued at ~$1B.

<comment> mh-cx Then please forgive my ignorance. I was not aware that they are so big. Even more though I'm surprised about their name. Reading it really feels weird to me.

</comment></comment></comment><comment><USER41> I've been running a rather large website with MySQL for the past fifteen years. There was a period when I regretted that choice and used something else. Today I'm using MariaDB and the TokuDB storage engine, and I'm so thankful that I never migrated to Postgres.

Like many people I investigated the NoSQL movement for potential applicability, and almost swallowed the hype. As I investigated more, I realised:

1\. There are some specific instances where a NoSQL engine makes good sense. They're a valid option and should be considered depending on the application. In my experience though, well formed RDBMS structures are the better option in the vast majority of applications.

2\. Most of the hype and growth came from people who (a) were using the abomination known as ORMs which are the canonical example of a round peg in a square hole; and/or (b) didn't know how to build performant RDBMS schemas. For these people, the NoSQL engine was fast because it was the first engine they actually learned how to optimise correctly.

<comment><USER42> > were using the abomination known as ORMs which are the canonical example of > a round peg in a square hole

Indeed, the "Vietnam of computer science."

[https://blog.codinghorror.com/object-relational-mapping- is-t...](https://blog.codinghorror.com/object-relational-mapping-is-the- vietnam-of-computer-science/)

</comment></comment><comment><USER43> A little bit off topic, but I would like to hear more about using Solr [1] instead of any "real" NoSQL databases.

I don't have experience with MongoDb and such, but I've always asked myself why someone wouldn't use Solr as a distributed NoSQL database... Am I wrong or, with Solr, you get that key/value scalable storage AND you get advanced search features as an extra?

Why would I want to use MongoDb instead of Solr? What killer feature Solr doesn't have?

[1] [http://lucene.apache.org/solr/](http://lucene.apache.org/solr/)

<comment><USER44> Haven't worked with solr but with elastic-search which are both based on lucene.

Some issues are:

async indexes, unable to modify/remove indexes, unable to grow/shrink number of shards etc (basically search why not use es as primary data store)

</comment></comment><comment><USER45> I thought this article would be about the true MySQL NoSQL system: MySQL Cluster (or NDB). It scales to 200m transactional reads per second - <USER2> second! [http://highscalability.com/blog/2015/5/18/how-mysql-is- able-...](http://highscalability.com/blog/2015/5/18/how-mysql-is-able-to- scale-to-200-million-qps-mysql-cluster.html) We have got 16m read/sec on our commodity rack with MySQl Cluster, so it's not a fantasy result.

</comment><comment><USER46> Two things that are sorely missing in this comparison to NoSql is:

How are they performing horizontal scaling, I'm guessing they aren't, without addressing the issue of sharding and scaling they can't really compare the solution to NoSql - it is the number 1 feature that NoSql has over RDBMS.

If they are achieving 1ms response time , then they almost certainly have the entire table in memory cache. What happens when the data grows beyond the size of the memory and it's not financially feasible to get a larger memory instance.

<comment><USER47> 1\. They probably don't need sharding, since the dataset is small enough to just replicate it in mirrors.

2\. 1ms is achievable with SSDs, but 200K q/minute seems slow my gut feeling tells me.

This post is more like "ha we don't need NoSQL for this special use case" \- Once you need scaling and some sort of atomics, you quickly have to use HBase for row-level atomicity and scaling.

Redis is probably better suited for the posted usecase anyway.

<comment><USER46> Why HBase? why not just shard your keys?

</comment></comment></comment><comment><USER48> From 7 years ago, by Bret Taylor (who went on to become CTO at Facebook after acquisition):

How FriendFeed uses MySQL to store schema-less data [https://backchannel.org/blog/friendfeed-schemaless- mysql](https://backchannel.org/blog/friendfeed-schemaless-mysql)

Edit to add the HN discussion at the time: [https://news.ycombinator.com/item?id=496946](https://news.ycombinator.com/item?id=496946)

</comment><comment><USER49> Here is my (albeit limited experience) advice:

1\. Use PostgreSQL, or MySQL with InnodDB for row level locking

2\. Huge tables should be sharded with the shard key being a prefix of the primary key.

If you need to access the same data via different indexes then denormalize and duplicate the index data in one or more "index" tables.

3\. Do not use global locks. Generate random strings for unique ids (attempt INSERT and regenerate until it succeeds) instead of autoincrement.

4\. Avoid JOINs across shards. If you use these, you won't be able to shard your app layer anymore.

5\. For reads, feel free to put caches in front of the database, with the keys same as the PK. Invalidate the caches for rows being written to.

It's actually pretty easy to model. You have the fields for the data. Then you think by which index will it be requested? Shard by that.

Note that this will still lead you to a huge centralized datacenter!! Because your authentication happens at the webserver level and then you just have all the servers trust each other. While it is a nice horizontal architecture, it leads to crazy power imbalances like we have today. Consider instead making it a _distributed_ architecture, where the shards turn into domains, and each user on each domain has to auth with every other domain. But your network can then be distributed without a single point of failure. What's more, local area networks will be able to host your app and be quick without the signal bouncing halfway around the world.

</comment><comment><USER50> It seems to me that one of the core differences between MySQL/Postgres and distributed stores like Cassandra / Hbase is that with the former your data and your write workload have to fit onto a single host. If either one cannot fit then you have to partition at the application level or use a real distributed data store. Partitioning at the app level is an operational burden and complexity that would be best avoided, but there are always exceptions.

</comment><comment><USER51> So MySQL is great if you use none of its features, but then its really hardly different from all the other databases. So it's not the implementation, but the very promises that databases make which can't be held, but if you know that, you are just fine. Great insight, and pretty much the definition of NoSQL...

</comment><comment><USER52> Everyone should try PostgreSQL with hstore (and JSONB now, too!).

This is a key/value store inside an RDBMS that just works, and it works great!

I converted a crappy sloppy super messy 1000+ column main table in a ~800GB database to use hstore, it was, in real world benchmarks, between 7x and 10,000x (yes, really, ten thousand times) faster.

The CEO of the company who had a technical say in everything, and was very proud of his schema "wasn't excited" and it never happened in any production instance.

I've left since then, and the company has made very little advancement, especially when it comes to their database.

Really, just use hstore. Try it out. The syntax is goofy, but... I mean, SQL itself is a little bit goofy, right?

<comment><USER53> > SQL itself is a little bit goofy, right?

The proper pronunciation of SQL is SQuirreL.

</comment></comment><comment><USER54> 100M? Of course you'd scale an RDBMS for that, especially if you want searchability and analytics. It's way easier than a Hadoop -> Elasticsearch pipeline (or pick your flavor).

NoSQL databases are for BIG data. As in, billions of rows big.

<comment><USER11> I think it depends on the shape of your data... if your data is mostly collected in sets (as a single object base), and mostly key lookups, then a document store may be the best solution... Example, used to work for a mid sized classifieds site... most of the data was used as a single-listing query, and pulled in from a single base record. The SQL database was over-normalized and required a couple dozen joins if you wanted to see it flat... the system was crumbling...

Replicating the data to mongodb at the time, with a thin API for search and read queries, and omg, it was a staggering difference. Beyond just caching, all the search queries. Today, I'd be more inclined to use ElasticSearch (there was an issue with geo indexing at the time iirc)... just the same, it really depends on the shape of your data.

I feel that the storage shape should serve the needs of the application. SQL databases encourage normalization to such a degree, that it's costly to construct a semi-complex object in memory, especially when your queries will run across many tables for many thousands of users. Joins kill performance at scale... If you can get around that, you're often better off.

Duplicating data to a system that is a better fit for mostly-read/query scenarios is a good idea. There's nothing that says you can't have your data in two places, and it's easy enough to setup services that copy on update.

</comment></comment><comment><USER55> related: friendfeed used a similar approach [https://backchannel.org/blog/friendfeed-schemaless- mysql](https://backchannel.org/blog/friendfeed-schemaless-mysql)

</comment><comment><USER56> Very interesting post. I seem to remember that you were featured in a MongoDB 'success story' last year but they seem to have removed it now.

Does that mean you've stopped using Mongo altogether?

</comment><comment><USER57> Just about as wrong as the day it was posted here in December

</comment><comment><USER58> Awesome! Now lets do it for 1B rows, and then 10 Billion and then some. It is well known that for small datasets NoSQL is no better , if not worse, than an RDBMS.

</comment><comment><USER59> System design 101: keep business logic into the layer above database layer rather than relying on specific db system to implement them. In this way to design an system, there shouldn't have any different between using MySQL of using NoSQL, their role is just storage engine. So, you don't need to follow the relational database practice, like for example, foreign key, constrains, normalization anymore.

<comment><USER60> Trying to avoid using foreign key constraints in a relational database is not "system design 101", its an instant fail.

When I cast my eye over a table with foreign key constraints, I am 100% certain that every single row conforms to those constraints, and always will.

By contrast, when the same table does not have constraints, but instead relies on some business logic layer to enforce them, then I have to consider whether there might be corrupt rows put in there by:

\- bad business logic code

\- bad import scripts

\- some contractor who used to work for us 5 years ago and briefly uses his php script to push up some data

<comment><USER59> Sadly, you remind me the DBA-is-everything system design style. In modern system designs, a system need more than just a database system to store business states, and to encapsulate business logic into higher layer is not just have flexibility also have scalability. Take sometime to think about the following three scenarios:

Scenario 1: what if a system need to migrate to different database system, then the whole business logic are need to totally re-implemented with the destination system DSL.

Scenario 2: if system need more just one storage system to persist business states, for example, I use db to store image metadata and use s3 to store the image? I don't believe the foreign key constrains will still works.

Scenario 3: if we have system need to process business state in asynchronously, for example, use message queue.

Also think about how to do unit tests (this is also how we keep the business logic correct) how to do CI/CD. System design is more than just a ERD design.

<comment><USER60> I think you'll find that its not just DBAs who like to have the database enforce integrity when it can.

> Scenario 1: what if a system need to migrate to different database system, > then the whole business logic are need to totally re-implemented with the > destination system DSL.

If it takes you more than a few minutes to rewrite a foreign key constraint to work on a different target database then you're doing something wrong.

> Scenario 2: if system need more just one storage system to persist business > states, for example, I use db to store image metadata and use s3 to store > the image? I don't believe the foreign key constrains will still works.

You're right, it doesn't - you can't use a foreign key constraint there. That doesn't mean you abandon them altogether, just use them where they work - <USER3> your database.

> Scenario 3: if we have system need to process business state in > asynchronously, for example, use message queue.

Then use a message queue. Still no reason to give up on the declarative integrity checking of FK constraints inside your database.

No idea what you;re talking about wrt unit tests - perhaps you're saying you want to allow bad data into your database so that you can run your tests? In which case here's a better idea - use FK constraints to never let it in in the first place, and don't bother testing, since the DB vendor already did it for you.

</comment></comment></comment></comment><comment><USER61> >An active-active-active setup across three data centers.

Any info how "active-active-active" (I assume 3 aws regions) is accomplished?

<comment><USER23> Some kind of master-master replication, probably: [https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster- replic...](https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-replication- multi-master.html)

<comment><USER62> In my company we are using a mysql cluster based on galera, (percona xtradb server) and it's a master-master solution that is rather easy to deploy and maintain. The only limit was that we had to use a single server for writes (that would make the "cluster" thing kind of useless but it's not in fact, we are using a load balancer on top of the cluster and the load balancer decides of the "master" where writes go so it's transparent to our application), definitely worth a try.

</comment></comment></comment><comment><USER63> MySQL looks great when used as K-V because it avoids the bad planner (when you have a primary key as the only searching key, a planner is useless) and denormalizing avoids expensive JOIN ops.

But there is the awkward replication model, the lack of native data structures as column type and the lack of sharding support.

</comment><comment><USER64> I love mysql , saved my ass many times , but this article doesn't mean anything .. it just says that you can use subqueries and joins to do "nosql"... we all know that .. you can also use a text file. I'd like if mysql copies what postgres has done with hstore.

</comment><comment><USER65> Wouldn't Aerospike be a cheaper, lower maintenance, and more robust solution to this problem?

<comment><USER7> Yes, a single instance would more than handle all of their load. 2 for HA/redundancy and they're all set. Setup some more pairs elsewhere else with active/active replication.

This is basically them failing to do enough research into existing solutions that would work far better.

</comment></comment><comment><USER66> The problem with SQL DBs is that they just weren't designed for distributed computation to begin with. SQL doesn't take into account CAP theorem - So it lets you write queries which work on a single machine but which cannot scale to multiple machines.

On the other hand, many NoSQL databases like MongoDB and RethinkDB have a query language which was designed to run on both single-machines and distributed infrastructure (in a homogeneous way); the same queries which work on a single machine will also work at scale on multiple machines - No need to rewrite your queries as your app grows.

You CAN scale with SQL but you have to know what queries to avoid (E.g. table joins, nested queries...) but with NoSQL, you don't have to avoid any queries; if it's in the Docs, it's safe to use.

Finally, a major difference between SQL vs NoSQL is the typed vs untyped structure. Most SQL databases were designed in a time when statically typed languages were mainstream; so it made sense for SQL databases to enforce static typing on their data.

On the other hand, NoSQL was designed in a time when dynamically typed languages where popular and gaining more popularity (E.g. Ruby, Python, JavaScript); when using these languages, having to add SQL-specific types to data feels like an unnecessary step. With NoSQL you can still enforce a schema in the application code but your schema logic doesn't have to abide by any type constraints from DB layer - Your schema is the ultimate authority on typing of your DB - If gives you the flexibility to be lazy with type-checking in the areas which are low-importance (where errors are tolerable) and strict where data type consistency is paramount.

Generally, NoSQL DBs impose constraints to query expressiveness in order to free you from architectural constraints. SQL DBs impose few constraints on query expressiveness but because of this, they add architectural constraints to your system.

<comment><USER67> There's so much wrong with the above.

To pick a quick one: "query language which was designed to run on both single- machines and distributed infrastructure". Mongo has no fewer than THREE query syntaxes: standard, map-reduce[1], and the aggregate pipeline.

'homogeneous', lol.

[1] which even Mongo employees recommend people avoid like the plague [https://www.linkedin.com/pulse/mongodb-frankenstein- monster-...](https://www.linkedin.com/pulse/mongodb-frankenstein-monster- nosql-databases-john-de-goes)

</comment></comment><comment><USER68> "Many developers look at NoSQL engines—such as MongoDB, Cassandra, Redis, or Hadoop" Noone uses Hadoop as a database. On the other hand, HBase which uses HDFS as underlying storage is a great NoSQL database that we use in production.

</comment><comment><USER21> This seems specific to their use case. He shows an example with a subquery. I wonder why they don't break that to two queries. The should be fast enough if cached, and would prevent the need for both tables to be unlocked during query.

</comment><comment><USER69> > Do not perform table alter commands. Table alter commands introduce locks > and downtimes. Instead, use live migrations.

Care to elaborate more on this? What do you mean by live migrations?

</comment><comment><USER70> Mongo comes with geospatial indexing baked right in. Never mind map / reduce. It comes down to the data structures of our times, which are increasingly not relational.

</comment><comment><USER71> So if I got it straight the message is: "Don't fall for the sirens of hype but instead make sure that your choice of technologies suits your needs"?

</comment><comment><USER72> The first thing that comes to mind is that they write about read throughput, when the write throughput is a big selling point of many NoSQLs.

</comment><comment><USER73> Kinda begging the question aren't we? I turn to nosql for things that aren't key-value, generally.

<comment><USER74> What do you mean? Isn't NoSQL inherently key-value?

<comment><USER75> All structured data can be represented as key-value, that includes SQL. They just differ in what constraints are used for the keys and values.

As for your question, NoSQL datastores can be grouped into multiple categories:

\- column stores (like hadoop, cassandra, informix), which optimize for sharded and distributed storage of related data elements

\- document stores (like elasticsearch), which focus on metadata organization for large opaque (binary) objects

\- key-value stores (like redis, openldap), which are basically unstructured, associative arrays (hash maps). They allow the most storage freedom, and are hardest to optimize.

\- graph databases (like neo4j, trinity), where more information is carried in annotated inter-object links than in the objects themselves.

</comment></comment></comment><comment><USER76> Does anyone know what they mean by `Instead, use applicative transactions.`?

</comment><comment><USER77> Stupid question here: what are serial keys, and how do they impose locks?

<comment><USER77> Ah, did he mean "SERIAL" as in "BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE" ... and the reason why this locks a table is because the database, on insert, needs to figure out a valid key?

</comment></comment><comment><USER78> Anybody else thinks Postgres would have been a better comparison here?

</comment><comment><USER79> I'm surprised there's no mention of HandlerSockets.

</comment><comment><USER80> Does this mean PostgreSQL is an even better NoSQL? ;-)

</comment><comment><USER81> Is a 100 million 'scaling up' these days?

</comment><comment><USER82> Upon reading this i have three questions for them: 1) Do you do backups? 2) Do you use source control versioning system? and last but not least 3) Why do you kill so many kittens?

</comment><comment><USER21> Glad to see the nosql hype blowing down to reasonable levels. Next up: imperative languages back in vogue.

</comment><comment><USER83> I'm a purist and also need the absolute fastest lookups with out SQL overhead so I go straight for MDB (Sleepycat BerkleyDB) - faster than LevelDB or any others.

</comment><comment><USER84> Why can't autists just use whatever they want and stop trying to convince people that their way is best.</comment>


Ask HN: What are your favorite interviews with developers? - <AUTHOR> And subquestion - where do you usually find them? <comment><USER2> I made a site of interviews with open source developers: [https://sourcesort.com](https://sourcesort.com)

I haven't added any new interviews recently. I might get back to doing them soon but based on my mailing list stats I'm not sure it's worth the time. Let me you know if you like them though.

<comment><AUTHOR> I ran into that site and it's great actually.</comment></comment>


Ask HN: Domain Searching - <AUTHOR>

What do you use for searching and keeping track of domain ideas? I use whois.cc and domai.nr for domain name checking, but I am not aware of any tool for keeping track of domain searches by project. Google did not help, so I am reaching to the community for possible solutions. Here is my concept of ideal solution: http://cl.ly/image/0z0H3s3i2c15/Image%202013-10-02%20at%204.44.27%20PM.png <comment><AUTHOR> Clickable: [http://cl.ly/image/0z0H3s3i2c15/Image%202013-10-02%20at%204....](http://cl.ly/image/0z0H3s3i2c15/Image%202013-10-02%20at%204.44.27%20PM.png)</comment>


The Blockchain Is the Internet of Money - <AUTHOR> https://www.wsj.com/articles/the-blockchain-is-the-internet-of-money-1506119424 <comment><USER2> Hello, I've started Awesome Blockchains [1]. The idea is to collect samples (and recipes) on how to build your own blockchains (from scratch) in JavaScript, Ruby, and friends. [1] [https://github.com/openblockchains/awesome- blockchains](https://github.com/openblockchains/awesome-blockchains)

</comment><comment><USER3> Two contrasting headlines side by side on HN today.

The WSJ says Blockchain is the Internet of Money

The Economist says Bitcoin is fiat.

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

<comment><USER4> They are two different things. A Blockchain is the internet of money but some tokens and crypto-currencies are not backed by anything else than trust which could mean they could be seen as fiat currencies.

The reason why the Economist is wrong is that the writer doesn't understand how mining and block issuance work so he doesn't see a reward token as a proof of work. PoW is the exact opposite of fiat because you don't have to trust the miner, you can check that he's done actual work to get that coin issued to him.

</comment></comment><comment><USER5> To bypass paywall, no facebook account needed, drop into console or a bookmark (HN formatting weird, zerobin text there anyway):

javascript:window.location="[https://m.facebook.com/l.php?u="+encodeURIComponent(window.l...](https://m.facebook.com/l.php?u="+encodeURIComponent\(window.location.href\);)

alternative:

[https://zerobin.net/?9b41630b08e38f96#FAC6oUt+oqX9fwxhamtom+...](https://zerobin.net/?9b41630b08e38f96#FAC6oUt+oqX9fwxhamtom+/WyM7PkDrdCU+wkCUcntM=)

The bitcoin blockchain is a crappy database that's incredibly secure because it's backed by an amazing amount of irreversible thermodynamic energy. Anything you put into it is there forever, even quantum computing couldn't undo anything a few hours old. That's all the public needs to know.

These articles are a bit tiring, despite being an aficionado somewhat keen for a blockchain winter.

<comment><USER6> What's a blockchain winter?

<comment><USER7> The analogy is to nuclear winter (life after a hypothetical nuclear world war) or AI winter (after the fall of the Soviet Union led to decreased military- funded spending on AI).

</comment></comment></comment><comment><USER8> Bold title.</comment>


View Internet Porn, Get Blackmailed - <AUTHOR> http://www.businessinsider.com/internet-porn-blackmail-2012-11 <comment><USER2> This has been pretty rampant in germany, I had to do some reboots for some friends windows pcs a while back because of the "bundespolizei" virus. Its pretty clever if you ask me, though on several versions I've seen they had spelling errors in the german so it wasn't that professional - crazy they could get 5 mil for it though. Are people really that paranoid about their porno? who cares in this day and age?</comment>