Is it just me or is networking really hard? - <AUTHOR> http://gafferongames.com/2015/09/12/is-it-just-me-or-is-networking-really-hard/ <comment><USER2> _" You can't even imagine a way that reliability could be implemented on top of UDP that beats TCP? What total bullshit"_

This. This "TCP already does it best in every situation" is a common trope usually spouted by people who know nothing about what TCP does and why. The easiest way to get over this misconception is to ask yourself, can you think of a protocol that not only works _well_ over all sorts of networks, all the way from two boxes connected by a 10Gig switch (with 10us ping latency) vs two hosts talking to each other via a satellite link (with perhaps, 2 _second_ ping latency) but is the _best_ option across all those situations?

The truth is that TCP is the common denominator that's available in pretty much every device you would want to use. But in almost every _individual_ use case, you could come up with a far better protocol if you took the time and effort to treat the problem seriously.

<comment><USER3> UDP is used when it's designed by network engineers. That's why we have VOIP and video streaming - all are served UDP.

dont get me started on the lack of multicast out there. imagine game servers running multicast. one day.

<comment><USER4> > UDP is used when it's designed by network engineers.

UDP is used when low latency and low jitter is more important than complete information.

For telefony it's better to lose a few packets than to wait a second or two for a retransmit. Some for game state, I believe.

And I do believe that TCP was also designed by network engineers :-)

<comment><USER5> I really depends on the game, if your writing a chess game then TCP is a much better choice than UDP. Though for anything really complex your probably going to want to use both.

</comment></comment></comment></comment><comment><USER6> I'm thinking to add online multiplayer to my game: [http://store.steampowered.com/app/363670](http://store.steampowered.com/app/363670)

...so this was very interesting read. I investigated a little bit, and found that there are more protocols than just pure UDP, and now I can't decide which one to try. I narrowed it down to these three:

* PCC [http://modong.github.io/pcc-page/](http://modong.github.io/pcc-page/)

* NORM [http://www.nrl.navy.mil/itd/ncs/products/norm](http://www.nrl.navy.mil/itd/ncs/products/norm)

* ENet over UDP [http://enet.bespin.org/](http://enet.bespin.org/)

What do you think?

<comment><USER7> Since your players don't seem to be affecting each other a lot, you might even be able to go with simple TCP. UDP is needed when latency matters a LOT, which is mainly when people fight one another.

<comment><USER8> I believe World of Warcraft and some other MMORPGs use TCP, since latency isn't too big of a deal. Note that they do some things to compensate for this, however, like making players not collide with each other.

</comment></comment></comment><comment><USER9> I sometimes ask the question "how does the internet work?" in interviews. The vague and wrong answers I hear are astonishing. I'm looking for a basic understanding of the layering of TCP, or RDP, or ICMP (or anything actually) on top of IP. I don't get that level of insight much. The people who do have that insight usually can go deeper -- slow-start, BGP, etc.

I wonder if we have a modern version of C.P. Snow's mid-twentieth-century two cultures lament. [https://en.wikipedia.org/wiki/The_Two_Cultures](https://en.wikipedia.org/wiki/The_Two_Cultures). That's the complaint that educated humanities folks don't know the basics of science.

Are we miseducating our so-called "full-stack" engineers by not offering them a basic understanding of telecom? Or are they not listening?

<comment><USER10> This goes on the list of interview questions that's great at letting the interviewer claim pretty much any candidate they want to discard is unworthy of the position. It's the tech community's variant of a voting literacy test.

If you ask me "how does the internet work" and what you really want is details on the underlying protocols, at around the range of TCP/IP, why aren't you actually asking for that? Your question is so broad that it's not shocking in the slightest that most people pick a different focal point for their answer, especially given the already hostile interview environment and the added agitation provided by such an unclear question.

If your goal is to elicit and understanding of somebody's background in TCP/IP and the surrounding protocols, ask them a question about that. If that's not relevant for the position (it's almost certainly not for most "full-stack" engineers), switch to asking questions that are relevant to the work they'll actually be doing.

<comment><USER11> this.

I'll chime in as someone with a skill set that is completely not special (linux application development, and hardware / firmware / software integration), but in certain circles, is unique since it doesn't involve JavaScript (yet).

I think the question is too vague, but I've asked a similar question:

To kernel hackers (not application developers) - Tell me what you know about the Linux boot process

To anyone with a 5th-gen language on their resume: how's a hash table implemented? (use of a feature or function without understanding why and how it works can lead to really interesting performance problems, even if the code is functionally correct)

<comment><USER10> I'd argue that the cases where a hash table's performance characteristics come into play are few and far between for most developers, and when they do, it's way more relevant that the person have a general idea how to profile perf in their code and say "yup, this is the spot that I need to worry about optimizing first".

By marking down people who don't know how to implement a hash table, you're cutting out a large chunk of your candidate pool, and I'm willing to stake my hiring choices on the fact that a decent chunk of them could easily by taught that knowledge if it became relevant for their career on your team.

<comment><USER12> I did an interview once where they asked me questions around the implementation of a hashmap. At the time I'd been working about a year out of university, and had not in that job come across any situation where I'd needed to know anything about how hashmaps worked under the hood (if anyone had a first job where you did, I'm happy for you, yours was a lot more interesting than mine). Any remnant of an explanation I'd got from my CS degree, most likely in first year, was way back in the mists of time. In the pressured situation, I simply admitted I didn't know.

At this point the interviewer's face soured, and he basically wrapped up the interview straight away - it had been running about 5 minutes at that point, with only one question before that, so it was pretty obviously being cut short.

Immediately after the interview I went to Wikipedia to look up hashmaps, instantly understood the basic mechanics, and 5 minutes later could have given a stellar answer to that question.

If that interviewer was looking for someone with an encyclopaedic knowledge of data structures, with flawless recall under pressure, then his question served him well in filtering me out. I sincerely doubt that's what he was looking for, though.

Since that experience I've been very careful, doing interviews myself, never to ask straight-up knowledge questions like this - or at least if I veer into a question like that, allow the candidate to explore the idea (even tell them the answer, and just talk about it to see if they get it) if they initially don't know. That will get you a lot closer to what you're actually trying to assess them for.

It's very easy to fall into a trap of interviewing with a 'mirror' approach, where you assume that the candidate must know what you know, or else be bad. Kind of a paint by numbers, where the finished product looks a lot like you. But everyone learns on a different path. You need to remember that there was a time where each concept you use take for granted every day in your job was once new and alien to you, too. You picked it up just fine, and so can they. In fact, this is by far the most core skill you are looking for - that ability to actually pick up new things and use them.

<comment><USER13> The comment about mirror approach to interviewing reminds me of the first place I worked. At one point we needed to hire someone to do something outside the usual skill set. The CTO interviewed a bunch of people and hired the one that knew slightly less than he did. What O got was the ones that knew what they were doing, disagreed with the CTO on some issues, and so were out of the running.

</comment></comment></comment></comment></comment></comment><comment><USER14> I know this attitude all too well. I've replied to a few questions on gamedev.stackexchange with pointers to the usual articles on game state synchronization and lag compensation, and I get lukewarm reactions of "too complicated" type. Meanwhile mr rpc-over-tcp get tens of up votes and accepted answer.

Their loss I suppose.

<comment><USER15> > Their loss I suppose.

Our loss, really: less good quality games for everyone.

I threw in the towel at GameDev for reasons very similar to yours ("premature optimization" also comes up far too frequently) - from, what can only be, people who have never even worked on specific components of games that they are claiming knowledge on.

The StackOverflow system somewhat fails on GameDev, because there aren't enough knowledgeable people on the site to issue corrective votes (likely because these people are scarce in general).

Incidentally the bad advice is bad on many levels: even if you somehow ignore UDP it's _still_ bad advice to do "RPC over TCP". TCP works best (fastest, least latency) when the send buffers are full at both ends - which RPC, by definition, does not do. This means that these people simply couldn't have researched the fundamentals of the protocol that they assume to be "good enough," how could they therefore be aware of how it is better or worse than alternatives?

</comment></comment><comment><USER16> Networking has local time, like the relativity theory. "Those two packets are at the same time at point a, but not point b." "A sends b and C sends d, but since time is local you cannot" etc.

So IMO it makes sense that networking is really hard. I like it though. Networking problems are clear when you think hard about them, unlike so many of today's programming problems, where the key is to know some half-documented aspect of a large framework/library/whatnot.

</comment><comment><USER17> Well, technically speaking any multiplayer game is a distributed database, except that more inconsistency is tolerated ("lag"). But all of the classic results, such as CAP or FLP, apply here as well. And given how hard even the simple distributed protocols are (eg. Paxos) it should not be a surprise that writing a good networking stack for a multiplayer game is also hard.

</comment><comment><USER18> > _We have the Tribes Networking Model, The Unreal Networking Model, Valve > Latency Compensation article._

Which are all derivatives of the Quake model.

<comment><USER7> Can you point out where the Quake model is described in sufficient detail that one can reimplement it for one's own game? Or is it open source?

<comment><USER19> Perhaps if you're going for simplicity or something then that might be an ok idea, but he mentions those three because they are more modern or important additions to the Quake model. He is of course very aware of their Quake heritage, at the end of this article he credits John Carmack (in an indirect way).

I recommend reading the rest of Gaffer's articles before doing anything, it will give you a basis that's needed to understand why Quake does what it does.

</comment></comment></comment><comment><USER20> TCP is suitable for "flat" static content, which you only retrieve at punctual intervals, and is relatively large. A good example is a file which won't change for the next 5 min, and you know that you want that exact file BUT you are ready to wait until it loads perfectly.

UDP is for real time, continuous data, when you can't wait for your hardware to check for packet consistency.

A good example is paper mail versus a telephone call. The paper mail will land, but you don't care if your phone line cuts for 1 second. You just wait for the other guy to check if he can hear you

UDP is really much better when you want to have performance, especially when it comes to responsiveness and latency, but can afford to discard packets if they're not reliable.

I think it boils down to people not realizing how hard it is to transmit data over long distances, and that the protocol don't consider that data transmission is 100% good, because it never is. You can have a lot of interference in your network, but TCP will always manage to land those packets.

</comment><comment><USER21> I think the topics should be split: you have 'networking' which is about connecting computers typically using TCP, UDP, RDMA, ... and 'distributed systems' which is about how to use connected computers to achieve something. And yes, both are difficult, but for other reasons:

\- networking is hard because the APIs are old, platform specific and probably don't behave very intuitively. So trying to build messaging systems on top of sockets is not simple, (but you will only find out after you've moved beyond the prototype stage).

\- distributed systems is hard because the odds of successfully exchanging messages aren't in your favour.

</comment><comment><USER22> It's not that networking is really hard, it's that development of synchronized games that run over unreliable links is really hard.

If you want a simple solution for a simple game, here's one. Use a fixed- format UDP packet to pass current location and orientation of the player and whatever else changes rapidly. This should be stateless; if you lose a packet, the next one has a full state update. This is enough for a simple FPS game.

Anything else goes over one or more TCP connections. If you have to load assets (level maps, textures, etc.) just use HTTP over TCP, which means you get to use standard servers and client software for that stuff.

If your game is too complex for that model, you're probably going to have to do some serious thinking about distributed synchronization.

<comment><USER23> > This should be stateless; if you lose a packet, the next one has a full > state update. This is enough for a simple FPS game.

Also enough considering packet reordering? And corruption?

<comment><USER24> the next packet should come within a few milliseconds so yes.

but I see your point adding a simple counter might be somewhat useful ignore any packet that has a Lower counter value.

coruption there is generaly enogh checksums in earlier layers so that it is neglisheble.

</comment></comment></comment><comment><USER25> You know what I found that is actually quite amazing: Video encoders for streams of linear/live video feed for broadcast go over UDP to the next device in the chain. An encoder will often output a stream of video over UDP to devices that will then split the video into multiple renditions.

</comment><comment><USER26> The single problem with TCP this rightly points out is head-of-line blocking. But overcoming that still leaves you with the problem of coping with out of order or missing events at app level, with clients and servers seeing events in differing sequences (fex packet sequence of move-duck-fire, now shuffle the move around...). I witnessed one game engine project implement custom networking on UDP and then disable unreliable & out of order messages because of game logic headaches.

And the payoff is quite small, since packet loss is rare in healthy networks and TCP handles the rare loss pretty efficiently based on ack clocking, not timeouts (fast retransmit, basically same as his idea of "redundantly sending un-acked data").

<comment><USER27> How many networks are actually healthy, though? Networked gaming is less about a hardwired LAN and more about reliably synchronizing state using your crap wifi in a oversaturated band when Comcast hasn't repaired the infrastructure I your neighborhood in years.

In other words, a healthy network is the edge case.

<comment><USER26> Sure there are people with rotten last mile conditions, but healthy networks are the normal case. You get subpar download speeds with http and choppy skype/facetime/ssh if your network drops packets frequently. It's bad for business from the ISP POV. Using UDP will not work around the conditions you describe, game will still be laggy and choppy.

<comment><USER28> Downloads will work just fine if you're dropping .1% of packets. Skype is very resilient to dropped packets. Console use isn't quite so fast that a half- second hiccup is a big problem.

But a naive game implementation over TCP will stutter badly and obviously every time.

<comment><USER26> Yep, and that's different from the hopelessly choppy last mile. The question here is if there's a big difference between a good (not naive) implementation over TCP vs various DIY UDP schemes, and whether that difference justifies the big complexity increases in game design due to trying to cope with out of order/lost events.

<comment><USER28> You can only do so much over TCP. Unless you are willing to put in a significant delay, dropped packets will cause problems. You can hide them, but there will still be shots that miss, enemies that were never where they displayed, etc.

</comment></comment></comment></comment></comment></comment><comment><USER29> I know the article is language agnostic but I don't think anyone would develop their networking modules (in the context of videogames or finance) in anything but C++ (or Erlang/Elixir?).

So could the local experts give their opinion on C++ networking libraries? I know there are a few [1] but how do they compare?

I've only used Qt networking and POSIX sockets (although for C), but the application didn't have much of latency or throughput requirements.

[1] [http://stackoverflow.com/questions/118945/best-c-c- network-l...](http://stackoverflow.com/questions/118945/best-c-c-network- library)

<comment> Const-me You shouldn't just compare C++ libraries. First, define your requirements, both functional (what should your networking do) and technical (latency, throughput, available bandwidth, operating systems of both clients and servers). Second, pick a protocols stack. Only then, look for those C++ libraries.

If on step #2 you'll choose e.g. ProtoBuff + UDP, you'll have totally different set of available libraries than if you choose SOAP + HTTPS. Besides, very few of those libraries work well on multiple platforms, e.g. libuv does, while libevent does not.

In addition, C++ is not the only choice. I once developed networking module for a game in C#. Have a few friends who are doing the same in finance industry.

</comment></comment><comment> Const-me Not every game is critical to network latency. Not every game is tolerant to packets loss. If those 4-8 players in the game are playing 3-dimension virtual reality poker, TCP or even HTTP will work just fine.

I have read the original thread, and the author says somewhere in the comment, "it is likely to be similar to that you would see in something like Diablo II. Players exist in a world, attack enemies and interact with NPCs (including trading)."

Which makes the article irrelevant to the original question. Games like Diablo 2 are not real-time; they can usually use TCP just fine.

</comment><comment><USER30> The best part of this article is the two comments at the end. The first is by the person who posted the Reddit question that prompted the entire rant, describing how asking them question made them rethink everything, and how they ultimately settled on a UDP design just like the one promoted in this article. The second is by the article's author: "Bravo and well done. I'm quite impressed".

</comment><comment><USER31> What's the point of this insulting article full of rage ? nothing to do at this ranking on HN.

</comment><comment><USER3> As a network engineer, this was great. No body never bothers to learn networking.

The article is annoying tho, basically says use UDP idiots. I mean, why do we think VOIP uses UDP? Same concept.

If only more devs would implement multicast...

<comment><USER32> Isn't the problem with multicast is most networks filtering it out or not supporting it? Thus it only stays useful for the LAN network scope? So I cannot just multicast to 5000 random IPs on the internet.

<comment><USER33> Not supporting it because why though? IP multicast routing requires end-to-end state for each (source , group). Further, the boxes on the market for doing multicast (not a little GPCPU router) have limitations concerning how they do multicast within the box that makes scaling multicast a real pain (basically, internally, they will send forwarding engines traffic they don't need and choke up there because it runs out of internal ways to express the separate streams).

Some of this can be shortcut by tunneling techniques, but it is just masking the situation and adding another layer of network complexity (in an area where humans still try to manage/troubleshoot mostly by hand).

</comment></comment></comment><comment><USER34> netcode is the most difficult part of fast multiplier games. then again one could just read quake3 source - its actually, 16 years later, still one of the best for that.

</comment><comment><USER35> >You have whole industries (gaming, video streaming, VoIP) that will laugh at you if you send time critical data over TCP and rightly so

Skype uses TCP, no? Laugh, indeed.

<comment><USER36> This might finally explain why the video quality is so bad then. If you tried any commercial video call software it's quite hard to look back to skype.

<comment><USER35> Google Hangouts isn't much better. I would assume it's more about the constraints of free services than anything else.

If you're talking about systems like Cisco Telepresence, then those are obviously not comparable because of (lots of) dedicated hardware, better connections etc.

</comment></comment></comment><comment><USER37> I guess that's one way to package up a fairly fundamental piece of networking knowledge. Wrap the fucker in expletives to get attention.

</comment><comment><USER38> I've written a series of articles about this topic: [http://gabrielgambetta.com/fast_paced_multiplayer.html](http://gabrielgambetta.com/fast_paced_multiplayer.html) It's usually well received, perhaps because it builds the ideas from the ground up and does _not_ include the words _" What the fuck is wrong with you?"_.

<comment><USER39> To be fair, Gaffer's original articles are well written, thoughtful and informative too.

This is him ranting about the unfounded, negative and incorrect feedback he's been receiving about them from people who are willfully ignorant about networking. He could or should have replied with less attitude and more facts, though. I understood what and why he's saying what he is, but I didn't enjoy the negativity either.

<comment><USER38> His articles are _excellent_ , and I've learned a lot from them myself. But I cannot sympathise with lowering the level of a technical discussion to personal insults.

<comment><USER40> I don't know if this is a general failing of people's critical thinking abilities, a sloppiness in their reading, or something else, but I _have_ noticed over the past (feels like) few years a growing problem:

A lot of folks conflate personal insults ("you, ggambetta, are clearly a dunderhead when it comes to reading comments") with general sentiments about a group or abstract population ("Hacker News posters tend to be overly sensitive to the point of being crybabies").

A great deal of the flavor and comedy in writing, especially pieces that are self-identified rants, are _not_ from personal insults but instead from hyperbolic and sometime vitriolic statements about an abstract other.

<comment><USER41> Spot on and this was firmly written with tongue in cheek! It's funny because it's true though. I harbor no ill will to anyone. Also, a nice ending to this whole thing, the original poster found the article, and halfway through reading it, realized it was about them and posted a comment!

</comment></comment></comment></comment></comment><comment><USER42> Reading this one could think you would be a fool to use TCP, yet some games (such as World of Warcraft) use TCP exclusively with no problems... What gives?

<comment><USER39> World of Warcraft is a pretty slow-paced game on "the inside", it just looks like a fast real time game but it's almost turn based when you analyze the gameplay. When you cast a spell, you'll instantly see the animation that your character is casting the spell, but the actual effect comes only when the animation is complete. This animation is used to hide the network latency (other players might see the animation played back slightly faster to compensate for the lag). Further, once you cast the spell, it must succeed and you can't really do anything before it has completed. In other words, reliability is essential and latency can be hidden.

Contrast this with a fast paced, (soft) real time multiplayer game. When a player jumps, the jump has to start immediately. If you want to jump and shoot, the shots have to be fired right away, you can't wait for the jump to complete before shots are fired. With TCP, you'd be stuck on the ground until the "jump" packet is re-transmitted (two or more network round trips, tens to hundreds of milliseconds, very noticeable) and no shots would be fired until the character is off the ground.

In a real time game, old packets are next to useless. Re-transmitting is wasting bandwidth and causing lag by blocking on information that is no longer useful. The networking model (like OP describes) is a constant stream of packets containing redundant information, minimum latency is essential and loss of packets is tolerated.

You should be aware that TCP vs. UDP becomes apparent only when network conditions are bad. You could choose either and have satisfactory results 90% of the time, but once packets get lost, TCP does the _wrong_ thing when it comes to fast paced real time games.

If you do take the time to read Gaffer's original article, you should see that it is different from TCP in many ways. Yes it does similar things (reliability, flow control, etc) but in a completely different manner, tuned for a completely different use case.

</comment></comment><comment><USER43> Someone needs a bit of anger management therapy.

</comment><comment><USER44> [http://www.kegel.com/c10k.html](http://www.kegel.com/c10k.html)</comment>


Are haters gonna hate?  - <AUTHOR> http://www.washingtonpost.com/blogs/wonkblog/wp/2013/08/27/researchers-take-on-crucial-question-are-haters-gonna-hate/

<comment><USER2> Quote: "To test out this theory, a team of psychologists ..."

... performed a study that's neither scientific nor falsifiable, that tests a nebulous idea so vague that different people would have a difficult time agreeing on what the idea is, and that will be completely forgotten six months from now.

Even though such studies aren't science, they produce a huge amount of article copy, and that's the point. But worse, a large percentage of psychology's content is simply made up:

Link: [http://news.sciencemag.org/people-events/2012/11/final- repor...](http://news.sciencemag.org/people-events/2012/11/final-report- stapel-affair-points-bigger-problems-social-psychology)

Quote: "In their exhaustive final report about the fraud affair that rocked social psychology last year, three investigative panels today collectively find fault with the field itself. They paint an image of a "sloppy" research culture in which some scientists don't understand the essentials of statistics, journal-selected article reviewers encourage researchers to leave unwelcome data out of their papers, and even the most prestigious journals print results that are obviously too good to be true."</comment>


Which languages young and intrested student should choose? - <AUTHOR>

Hi!
20 year old finnish (soon to be)University student here!
I've got some experience with C -based languages from vocational school, but thats pretty much it, so i figured i should come and ask from the experts as i really didnt get a clear image what different languages are used for(about any other languages besides C & C++ atleast) from the classes i attended at vocational school
my main interests reside within games and systems they run on, as well as platforms, so my 3 main subjects will most likely be
1.Programming/Software Developement
2.Electronics
3.Economics and Enterpreneurship
Sooo any thoughts? <comment><USER2> As you're interested in electronics you may be interested in Arduino, which you can program in C (and perhaps some other languages too). If you do decide to pick C, I'd really recommend picking up a copy of K&R's "The C Programming Language": [http://www.amazon.com/C-Programming-Language-2nd- Edition/dp/...](http://www.amazon.com/C-Programming-Language-2nd- Edition/dp/0131103628/)

You're also interested in games, so you could consider Python and the PyGame library: <http://www.pygame.org/> Or if you want to go with C, try the allegro library: <http://alleg.sourceforge.net/index.html> (Learning this library was what taught me C, after picking up the basics of C I picked up the rest as I went along).

End of the day though, just pick something and learn it. It's better to be learning than worrying about what to learn.

<comment><AUTHOR> I'm already quite familiar with arduino as we used it a bit at school(had a project where we built and programmed dmx-ethernet converter with an add-on dmx-shield) and took bit of intrest in arduinos.

I said I have some experience with C -based languages, but that doesnt mean i would be sticking with just C, as i have have taken strong interest in C++, which is likely going to be my #1 language.

Python sounds decent, but i heard some heavy recommendations to learn Lua for the games from my contacts working on gaming companies (in finland there are loads of smaller and bigger gaming companies rightnow...)

Anyway as I have been discussing about this with my friends and contacts I've gotten an impression that I should also Learn some kind of web -enviroment programming/scripting language such as jsc or php (though I've been considering mostly learning some Lisp and proceeding to Perl)

Currently my cocktail of languages looks like this

C ->C++ Fortran (though going to learn on my own accord, just to understand how things worked in past) Lisp ->Perl Lua

thoughts?

<comment><USER2> I'd recommend learning something like Python over Lua as it is more widespread and is used in a lot more areas, but that's up to you.

Python can and is used for web development, though if that's what you're interested in then you might find PHP easier to get into.

Fortran is an interesting choice and I understand your reasoning, however I wouldn't put too much time into that right now (up to you, however, just do what you enjoy).

Basically, there are tonnes of choices each with their individual merits. Pick something with a decent community which you enjoy. Python, Perl, PHP, C, C++, Lua, Java, Javascript.. they all suit that perfectly. If you really can't make up your mind, toss a coin and read up on that language for half an hour and if you like it, keep learning :-)

Another thing to add: it's not just about the language. Once you've learnt a language, you need to learn the commonly used libraries/modules. How to decode XML/JSON, how to talk to a database, socket programming, etc, etc. You might find it better to concentrate on those in a language you already know. It's better to be an expert at one language than mediocre at a dozen.

Also, check this out: <http://learnpythonthehardway.org/book/advice.html> Just found it and it's sound advice.

</comment></comment></comment><comment><USER3> "Which programming language?" is not meaningful question. You can learn a new programming language quickly. What you will need is an understanding of computer science (theory and algorithms) and mathematics. On top of that, you'll need deep familiarity with your domain interests -- software development, electronics, and economics. Different programming languages provide different frameworks for thinking about problems, but don't provide much help in solving them (unless it's done in the standard library ;-) )</comment>


An Indian village that banned shoes - <AUTHOR> http://www.bbc.com/travel/story/20190307-the-tiny-indian-village-that-banned-shoes <comment><USER2> > "In a country where people often go barefoot indoors – considering it a > gesture of respect and a nod to hygiene..."

It's not "often", but "almost always". It's highly uncommon to wear footwear indoors (except in cold places where people have a separate set of footwear for indoor use).

In India footwear that's been outside the house is considered dirty and unhygienic. It's also disrespectful to wear it inside another person's home or at temples. People would even avoid, whenever possible, carrying their footwear in hand (like in this village) or wash their hands well once they put the footwear down.

Culturally, one way to insult someone deeply in public in India is to hit them with one's footwear (usually slippers). It's also common, at least in some movies, that a girl who's been harassed by a guy usually beats him up with her slippers. There have even been political incidents where someone who's against a politician has thrown shoes or slippers at them at public gatherings (sometimes this has happened in the legislative assemblies too, where people from rival parties have done it to each other). This kind of usage seems somewhat common even in other Asian countries.

Talking about this village, a place where temperatures could be around 35°C (about 95°F) or more for many months in the year during daytime, walking barefoot may be difficult unless one is used to it. Maybe there aren't many paved roads there either, since those could get even hotter.

<comment><USER3> The first time I saw anyone wearing shoes (and putting them up on coffee tables and such) inside their own house was in America.

That's not an option in the tiny European country I grew up in or anywhere in Asia I've been.

I think it's barbaric behavior. You literally step on vomit, needles, dog shit and what not outside and then you drag that inside your own bedroom? What the fuck.

As far as what to wear when you take your shoes off in someone's house - there's always slippers for guests, many pairs. Or you just walk around in your socks.

<comment><USER4> Also, _GASP_ you eat plants that GREW in that shit for months.

It turns out most of the stuff you step in just won't hurt you in modern society.

And if you have pets (mainly dogs) they're going to bring some dirt in anyways.

I can understand taking off shoes on particularly muddy days, but otherwise who cares? A little dirt and grime is part of life, and exposure has been shown to be good for allergies.

<comment><USER5> Well we all have shit in our body does not mean we should not wash our hands after taking a dump.

India also turns out to be super dusty where people mostly walk instead of driving around in car. So the shoes are filthy too. I use to wash my sports shoes every month when I was in India. In USA I have not really washed them for years. There is simply no need.

</comment></comment></comment></comment><comment><USER6> I spent six months living in a rural New Zealand town when I was 11. About 95% of people there (including me) were barefoot everywhere—in the home, at school, at the grocery store, at the doctor's office. Some sports were predominantly barefoot too (I was on my school's cross-country team and everyone ran barefoot, but I was also on a soccer team where we used cleats). There was no stigma against wearing shoes anywhere, but the majority of people still chose not to.

Did I ever get thorns or glass in my foot? Yes. Did I ever regret going barefoot? No. It was completely liberating in a way that's hard to describe.

<comment><USER7> I have been walking around San Francisco barefoot with my 2-year-old kid for a year.

We get told on a daily basis that we should watch out for broken glass on the sidewalk, but the only (minor) foot punctures we've had are (1) I stepped on a fish bone in my own kitchen, and (2) my kid stepped on a thumbtack near a picnic table at the playground. ( _Edit: to be clear, there is regularly broken glass on the sidewalk, which we step around._ )

I suppose there is some chance of not paying attention, stepping on something big and sharp, and getting a serious injury, but it frankly seems less likely than getting hit by a car. I think people are in general quite poor at evaluating and balancing risks.

In the advantages column: my kid's "toddling" phase lasted like 2 months, and he is a faster and more graceful a walker/runner than any kids his age here. (I'm sure compared to someone in a hunting tribe he would be no better than average, but young city kids are weak and awkward.) There is so much information picked up from the ground while trying to move, and so many additional muscles in the foot/lower leg to use when not in a stiff shoe. Not being barefoot when learning to walk is a huge handicap for the little developing brain.

The only places we typically go that really insist on shoes here are occasional restaurants and the public library. More people could get away with walking barefoot in more places than they might expect.

<comment><USER8> I would be concerned about dirty needles etc. as much as anything, especially in a place like San Francisco. Junkies can carry God-knows-what, but I can respect you for braving that risk.

<comment><USER7> There are some homeless drug addicts in our neighborhood and I would not be surprised at needles at night or early morning in some nooks or gutters here or there, but the only place I have seen needles in the middle of the day on the sidewalk is near Civic Center.

Still, even if there were regularly needles lying around, the chances of stepping on a needle are vanishingly small. (Have you ever stepped on a needle while wearing shoes? People going barefoot are paying a lot closer attention to the ground.) The chances of picking up something from that are much smaller still. Needles pass diseases when people re-use them to inject stuff into their blood, not when they accidentally step on one.

If worried about disease, there is probably a (still very tiny but) significantly higher risk of stepping on disease-carrying poop while having a cut on the foot.

</comment></comment></comment></comment><comment><USER9> Most of the houses in South India (I'm from Tamil Nadu) forbid us wearing slipper or shoes inside the house. It's simply unnecessary as our houses are regularly swept and cleaned. I found it weird when I moved to North India where people find it usual to wear slipper inside. The plausible explanation I came up with is __cold __

<comment><USER10> Most of the houses in India* (I'm from Gujarat, have friends from Delhi, have relatives living in Mumbai.) If you find people wearing slippers inside, they are a separate pair of slippers only meant to be worn inside the house. We were taught that not removing your shoes/sandals when you visit someone's place is a sign of disrespect.

<comment><USER11> My family is from Gujarat. Even though neither my parents (born in Uganda) nor I (born in London) have ever lived in India, I still feel strange when I visit a home where shoes are not removed at the door.

<comment><USER10> Yeah I moved to Canada in uni and it is still so weird when I go to a random place where they don't remove footwear. I'll usually remove my shoes even if there are other people who still have their shoes on.

I'll also ask anyone and everyone who visit my apartment to remove their footwear at the door.

</comment></comment></comment></comment><comment><USER12> A lot of people in India, more so poor people, and people in rural areas, don't wear any kind of footwear, much of the time. They might just wear shoes or slippers (chappals) when going to a town or city. I see this even today. Even though I know they can get used to it, I always marvel at how they can handle all the potential issues, like heat (gets very high in large parts of India for much of the year), cold, bumpy/sharp surfaces, even glass or nails (although rarer) on the roads. I've seen workers in houses of relatives, which I have visited, who did their work inside and around the house, barefoot.

<comment><USER13> Thanks for mentioning "chappals" \- In my experience (currently month 21 in India over the last 14 years) this term usually refers to a generic type of open-ish, often plastic or rubber, shoe - anything between a "flip-flop" ("thong" for Aussies), "slides", "sandals", or more like "crocs", etc whereas (to a Brit) at least, a "slipper" is quite different (usually softer materials, though some might be similar in style to slides or crocs or moccasins), and intended for indoor use only.

<comment><USER12> >this term usually refers to a generic type of open-ish, often plastic or rubber, shoe

I don't know if it can be called a shoe, unless you were using the term loosely - I saw that you mentioned slides, sandals, etc. The open-ish part is right, it is an open item of footwear, see below.

Google "bata chappals images" and "hawaiian chappals images" to see two common kinds of footwear that are both informally called "chappals" in India. The former includes ones made out of leather or synthetic materials (what is called PU here, maybe polyurethane, not sure), at least for the cheaper brands (or non-brands). I dislike and never buy the PU or similar type. Feels slimy/slippery and wrong to the skin, and causes more perspiration than either rubber or leather, IME, although rubber and leather cause some too, in higher temperatures during summer.

</comment></comment></comment><comment><USER14> There are really good reasons to wear shoes where sanitation might be suspect. Hookworm is a real and nasty thing.

[https://www.pbs.org/wgbh/nova/article/how-a-worm-gave-the- so...](https://www.pbs.org/wgbh/nova/article/how-a-worm-gave-the-south-a-bad- name/)

</comment><comment><USER15> I find that many American families cargo-cult the "no shoes inside" rule but without the necessary home infrastructure to support it.

A pile of shoes at the garage entrance with no bench to put them on, or expecting you to remove shoes on the wet doormat before stepping onto the carpet inside.

In Japan there seemed to be an entire cottage industry of shoe horns, benches, stools, slippers, and mats designed for the custom. I'd need that in my home before I went all-in with no shoes.

<comment><USER16> I'm baffled by this. Do Americans really keep their shoes on at home?

What do you do if it is wet and muddy outside?

Do toddlers wear shoes inside as well?

So many questions...

<comment><USER17> I sort of depends. Usually there's a subjective boundary. In parents place the first floor is tile, and it's acceptable to wear shoes on the first floor. But the others floors are carpeted and you don't wear shoes up there.

In the older house, the one I grew up in, the front door led to an atrium where it is okay to wear shoes. But the hallways and rooms connected to the atrium were off limits for shoes. The Laundry room opened to the outside (namely, our bunny's enclosure) and we also stored some yard tools in the laundry room. It'd be inconvenient to take shoes on and off all the time when going in and out. So the laundry room is fair game for shoes.

At my apartment I do it Asian-style and take them off at the door because there is no natural boundary and because San Francisco streets are especially filthy.

So the answer is: it's chaos and there are no rules.

<comment><USER16> Ok, this makes sense and is similar to what I am used to from Europe.

</comment></comment></comment></comment><comment><USER18> Cool, it's like a nature preserve for hookworm.

</comment><comment><USER19> How is banning shoes taking a practice of hygiene to a "new level"? You can't take off your feet when you get home, can you?

</comment><comment><USER20> I wear shoes inside and sometimes while I'm laying in bed. Be mortified.

I like the respect angle though. Far too many people throw their trash on the ground. If not wearing shoes outside makes them rethink their actions I'm all for it.

Edit: Downvoters were mortified.

<comment><USER21> I'll wear shoes inside but laying in bed is going a little too far. You walk in public restrooms with those shoes (I'm assuming).

<comment><USER22> Public restrooms, private restrooms, my kitchen, your cook at a restaurant wears them in the restauraunt's kitchen.

I guess the real question is, who wears shoes under their bed covers?

</comment></comment></comment><comment><USER23> Good for them, I never really liked wearing shoes.

</comment><comment><USER24> more electrons being absorbed into the body! Good for them. Cut out the rubber shoe resistor

</comment><comment><USER25> Next they should ban the clothes during the summer time. One thing less to worry about. I would totally sign up for that!

<comment><USER26> "Let them be satisfied with a mere loin-cloth. In our climate, we hardly need more to protect our bodies during the warm months of the year." \- Gandhi advocating the boycott of foreign clothes.

Source: [http://pib.nic.in/newsite/printrelease.aspx?relid=149833](http://pib.nic.in/newsite/printrelease.aspx?relid=149833)

<comment><USER25> It should really be more about convenience than a boycott.</comment></comment></comment>


Show HN: Mathcha – Online Mathematics Editor - <AUTHOR> https://www.mathcha.io/ <comment><USER2> Nothing here attracts me away from pure LaTeX that much except two things: (1) built-in symbol recognition (I still rely on [http://detexify.kirelabs.org/symbols.html](http://detexify.kirelabs.org/symbols.html) but it's rare for me to have to look something up) and (2) auto-resizing delimiters.

Can any TeX experts explain to me why delimiters don't resize by default? Why do we need to insert so many \left and \right commands?

<comment><USER3> I am not an expert, but my impression was always that the way it is makes things general, orthogonal, and easy to explain and reason about (if cumbersome to use).

If \left and \right were automatic, then whenever you needed something less- but-often-still common, like [0,1) open intervals, or physics <bra|ket> notation, that would require kludges.

Whether or not it is a smart decision is a different argument.

<comment><USER4> Why not make auto-sizing the default and manual size control the exceptional case? It's already like this "in reality," I just wish the language would follow that.

I use templates so my editor shims in the above anyway, at the cost of lots of noise.

</comment></comment></comment><comment><USER5> This looks really good, but you might want to hire a copy-editor in the future:

Most ~~of~~ symbols are the same in \inline-math and \math-container, but there are ~~one~difference~~ _some differences_ , these symbols below will be display _ed_ in smaller fonts

Additionally, when I copy-pasted this here from your document, it included a bunch of metadata you probably don't want to expose to users. I think there is a way to set different clipboard contents for different MIME types, maybe look into that.

<comment><AUTHOR> With Inline Math (\inline-math), there are some symbols will be displayed smaller (by default) than Display Mode (math-container). This is because I implement it to be the same with LATEX style, maybe most of people dont want that behavior, so may possibly change in future.

Good advice on MIME types, thanks.

<comment><USER6> The comment above with <comment> was trying to give you grammar help, not content help.

</comment></comment></comment></comment><comment><USER7> This is really awesome, I'm going to be trying it out over the next few days. I'm by no means a Latex expert, but it seems like it could make writing Latex a bit faster and more wysiwyig-ish.

One question - if I want to write a^(b+c), I'll normally write in latex: a^{b+c} to group the b+c as part of the power. I can't figure out how to do the same in the editor - if I write in a^b+c, anything after the "b" will go back down and will no longer be superscripted.

<comment><AUTHOR> Hi, that's intentional, because we see that most of the time superscript input is only one character, you can press arrow left to go back and input more characters.

Maybe in future I should have a setting to turn off that feature/behavior.

Thanks.

<comment><USER7> OK I feel a bit silly because I didn't realize you could just press left and go back to editing it. It's not even unintuitive, this is exactly the behavior of e.g. grapher, which I use all the time, I really have no excuse.

</comment></comment></comment><comment><USER8> That was one seriously impressive 3 min video. Explained everything you wanted to know about the platform without any audio needed either

Im going to definitely try this out later

</comment><comment><USER9> This seems to be broken for keyboards without QWERTY layout (about half of Europe) because math mode can not be entered with the '\'-key.

<comment><AUTHOR> Thanks for feedback, did not aware of different type of keyboard layouts!

<comment><USER10> I'm using international QWERTY and can't use it either.

</comment></comment></comment><comment><USER11> The diagramming tools look promising, great work!

I never felt like I needed a WYSIWYG for Latex. But I deifnitely need a WYSIWYG for tikz[0]. For example, the tikz code for a simple diagram [1] is essentially incomprehensible. So in light of this:

1\. I'm having trouble finding an image (especially vector format) export feature, do you have it?

2\. Feature request: export diagrams to tikz code.

[0] [https://en.wikipedia.org/wiki/PGF/TikZ](https://en.wikipedia.org/wiki/PGF/TikZ)

[1] [http://www.texample.net/tikz/examples/labeled- chain/](http://www.texample.net/tikz/examples/labeled-chain/)

<comment><USER12> > I deifnitely need a WYSIWYG for tikz

I just use IPE. It's a nice GUI diagram editor that can save as PDF (as in, the PDF contains the IPE data). Far better than faffing around with tikz.

[http://ipe.otfried.org/](http://ipe.otfried.org/)

</comment></comment><comment><USER13> Nice work. The drawing recognition feature seemed to work well. One little thing that could be improve is enforcing a minimum font size so that deeply nested fractions don't become unreadably small.

</comment><comment><USER14> Looks nice. Would there be a native version, for which data are only stored locally? You would certainly have some professional market with that. I would pay for it just to replace LaTeXiT.

<comment><USER15> I recently released Vexlio ([https://vexlio.com](https://vexlio.com)), a desktop (i.e. non-browser) diagramming application, that supports editing of embedded LaTeX equations which you can then easily export to PDF, SVG or PNG. Currently Windows only, but Mac is coming very soon now.

<comment><USER16> Interesting. If not confidential, what language did you use to create Vexlio? and what library (if any) for PDF and PNG output? Asking since PDF generation is one of my interests.

<comment><USER15> Not confidential -- Vexlio's written in C#, and uses Xamarin.Mac for the bindings to the Mac world. PDF and PNG are both generated by the Skia library (skia.org).

<comment><USER16> Thanks, had not heard of Skia. Will check it.

</comment></comment></comment></comment></comment><comment><USER17> There is also a tool which can convert Latex equations into images: [http://www.sciweavers.org/free-online-latex-equation- editor](http://www.sciweavers.org/free-online-latex-equation-editor)

</comment><comment><USER18> You guys really need to compete against Wiris in the K12 Education space. If you ever want to see this introduced to the US edu market, ping me a line.

<comment><USER19> is that pronounced like virus?

<comment><USER18> Yes

</comment></comment></comment><comment><USER20> This looks really good. The main application I would have for this is online teaching, where previously I would have used WolframAlpha, so while this does not have computational functionality it looks like it might be superior as a communication tool. The one thing I would like to see is support for mobile devices.

</comment><comment><USER21> to those who are looking for a WYSIWYG editor which supports latex, try LyX. It's good and intuitive enough that I have used it as a tool for thought, and prefer to work straight from latex rather than a whiteboard or a paper and pen.

<comment><USER22> Haven't used it in a while, but I think this public should also take a look at TeXmacs. I've long stopped caring about anything WYSIWYG but that software seemed to me to strike a very well designed balance between WYSIWYG/fast-input (though with a steeper learning curve than M$Word, but very approachable) and showing what's under the hood.

<comment><USER23> Are you able to give a quick overview of some of the differences between TeXmacs and LyX. As a longtime LyX user, the two applications look very much alike.

</comment></comment></comment><comment><USER24> It would be awesome to add this to tydig. (iPad calculation application) I really wish I had something like my Ti92 wide body on the iPad with an editor that was this easy to use.

</comment><comment><USER25> Seems very similar to Swift Calcs - [https://www.swiftcalcs.com/home](https://www.swiftcalcs.com/home)

</comment><comment><USER26> Definitely adding this to my favourites, but I wonder if you could export those diagrams to latex using tikz?

</comment><comment><USER27> > a fast way to write and share mathematics formula

This should probably read "share mathematical formulas"

Looks pretty cool though :)

<comment><AUTHOR> Thanks, sorry for that bad English :)

</comment></comment><comment><USER28> I guess you (or your company) does not have any Windows PC.

<comment><USER29> Yes, what is the problems with Windows PC?

<comment><USER28> The website works well in Edge but you claimed that it does not support that. I have to override the user agent in order to access your editor.

<comment><AUTHOR> The reason is we did not test carefully on Edge, may have some problems we don't know!

</comment></comment></comment></comment><comment><USER30> License?

<comment><AUTHOR> It's free to use, currently there is a limit of 50 documents (to avoid people create unlimited documents), will increase that limit.

<comment><USER31> Have you considered open sourcing and selling commercial licenses for integration? I think this is a product that many corporations would love to integrate with. However, as an alone standing product I don't think it adds a lot of value. Something like the business model of draw.io

<comment><AUTHOR> Very good point, did think about that, but until now still not very sure about business model. At the beginning, when we build it, we want to have a editor for people to easily type and share their Math (even without knowing LATEX). Will definitely consider/think about Integration, or somethings else ...

Thanks.

</comment></comment></comment></comment><comment><USER32> Sometimes the HN algorithm baffles me. This article has already be submitted by the same person, a couple of days ago. I even asked a question there.

How is it that the comments there are not included here, given the same link? Or is it not the same link?!

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

<comment><AUTHOR> Hi, I submitted again because at that time I did not know and did not post with Prefix "Show HN:". Maybe that's reason?

<comment><USER32> If the link was the same, shouldn't you get a warning that this was already submitted? If I submit something that has already been submitted, HN automatically give a point to the previous submission.

Which is the way I expect it to work to avoid double submission and parallel discussions. The thing is: I have not quite understood why sometimes it works and others not.

<comment><USER33> Submitting an identical link starts working after a few days since the previous submission.

<comment><USER32> Is there a technical reason for this?</comment></comment></comment></comment></comment>


How does GDB call functions? - <AUTHOR> https://jvns.ca/blog/2018/01/04/how-does-gdb-call-functions/ <comment><USER2> I'm surprised the author opted for guesswork and reverse-engineering GDB when it's of course open source. Admittedly GDB's source code can be a bit daunting but at least you'll have all the nasty details.

The relevant code appears to be in gdb/infcall.c in the `call_function_by_hand` method. It's pretty well commented too and shows that while the author gets the basics right there are many, many corner cases to consider to get it right all the time (threads, signals, exceptions, architecture and ABI quirks, etc...): [https://github.com/rofl0r/gdb/blame/master/gdb/infcall.c#L46...](https://github.com/rofl0r/gdb/blame/master/gdb/infcall.c#L467)

<comment><USER3> Thanks for the link to `call_function_by_hand`, that's super helpful! In retrospect, I could have found this file by grepping for 'When the function is done executing, GDB will silently stop' (the very useful "grep for UI text" trick!)

the choice between whether to try to understand something by running or by reading the code is a super interesting one (though if I'm seriously interested in understanding exactly what some software does of course I'll do both!).

I think experimentation/stracing a program to understand it has a lot of advantages:

* It can be helpful to look at the system calls as a way to maybe see the big picture before diving into the code.("ok, it's setting some registers somehow, it's putting in some int3 instructions, then it does PTRACE_CONT, then it undoes all the changes it made").

* it lets me focus on what the program actually _does_ instead of understanding how the code is organized (figuring out how the code in a large project I've never looked at before is organized can be time consuming!)

* It's easy to make incorrect conclusions when reading the source. This happens to me a lot when reading distributed systems code -- often I'll think "ok, if I do X, then Y will happen" but that turns out not to be true in practice. So I think even when you _are_ reading code, doing experimentation as you go is a key part of making sure that your understanding of the code is actually correct.

* I find exploring programs interactively fun!

In this specific example -- I think it's really interesting that gdb modifies the `longjmp` function in libc when running a function. The string `longjmp` doesn't appear anywhere in infcall.c. So even though reading infcall.c seems like a great overview, it just has different information that I get from using strace!

<comment><USER4> >very useful "grep for UI text" trick

Just, one thing: for C/C++ code-bases such as gdb, stop using grep for things, people! Use cscope! 'tis a brilliant means of navigating files and scoping out the contents of a project.

[http://cscope.sourceforge.net](http://cscope.sourceforge.net)

$ cd gdb/src; cscope -R

<comment><USER5> Upvote for cscope mention.

I prefer cscope -Rqk. I run cscope on the zeroth window of a tmux/screen session with a $CSCOPE_EDITOR program that's a script that starts the real $EDITOR in a new window in the same session (with an appropriate window name) and in the background so that cscope gets control back immediately. This allows me to use cscope to drive large code investigations very easily.

<comment><USER4> Sounds cool. I use it in vim as a 'grok this C/C++/Lua/Textfiles' utility, pretty much every day. grep too of course, and there are times when you just wanna ack, but for full grok, cscope is cool however you do it.

<comment><USER5> I have a shell function that generates shell functions that do find | xargs ... patterns. Thus I have 'fsg' == find source grep -- that is, find with -name arguments matching source | xargs grep ..., and fseg (find source egrep) and fmg (find make stuff grep). These functions take all non-option looking arguments and use them as directory arguments for find, then all remaining arguments are passed to grep, so I get to write:

        $ fsg foo bar -w foo

which translates into something like:

        find foo bar \( -name '*.[chylm]' -o -name ... \) -print0 | xargs -0 grep "$@"

Still, cscope is fantastic, and the first tool I reach for.

</comment></comment></comment></comment></comment></comment><comment><USER6> Oh god, this brings me back (I used to be the C++ maintainer for GDB eons ago)

It's even more convoluted than the author suspects, because

1\. GDB has to figure out which function to call (it does overload resolution for C++, for example, and this varies by language)

2\. GDB has to do type coercion on the arguments if necessary (ditto)

3\. There are significant ABI and other issues, both at the processor level, and at the language level, in where the arguments go (registers or memory), in calling the right thunks, etc.

This is one reason LLDB uses clang to do most of the work of telling it what the expression you are trying to call actually means, so it can just pretty much execute it.

<comment><USER7> The Delphi compiler used the constant expression folder to evaluate debugger expressions; it had hooks for converting symbol references into values, and for performing method calls, but a good chunk of the evaluation was interpreted that way. I thought it was a nifty reuse.

(Obviously, the expression is parsed, typed and bound using the compiler front end using the same symbols as the compiled code, so that bit is easy.)

<comment><USER6> Yeah, that works nicely if you can do it. GDB unfortunately reimplements a hacked up C/C++ frontend. (For some other languages, it doesn't have to because they have dynamic expression evaluation interfaces as part of their runtimes)

</comment></comment></comment><comment><USER8> Related question for the GDB experts:

My day-job involves GDBing C code. I use a handful of functions regularly when I'm trying to pin down a bug, mostly just to double-check why the code is following a given branch. So I'm heavily dependent on memcmp, strncmp, etc.

I've noticed that those functions fail if I start trying to use them too early, so I end up having to add a "b main" first and wait until I get to the breakpoint before they become available.

Can someone explain why? I assume it has to do with getting far enough along in the program's execution that the shared libs have been loaded into memory?

<comment><USER6> When you say fail, what happens?

If you mean you can't call them, yes, it's shared libs, they aren't in the address space yet. If you mean something else (IE the symbol info is wrong), you can debug what is going on as follows:

The logic for when it builds minimal symbol tables, converting them to partial symbol tables, and then full symbol tables, is _incredibly_ convoluted.

In theory, needing a full symbol with type info should just cause the right thing to happen lazily.

In practice, it does not.

You can debug what is going on by doing this:

      (gdb) set debug symbol-lookup 1
      (gdb) set debug symtab-create 1
      (gdb) file <your executable>
      (gdb) p strcmp("foo", "bar")
      <look at output>
      (gdb) b main
      (gdb) p strcmp
      <look at output>

This is going to produce a truly ridiculous amount of output on a large executable (so i'd use a minimal one :P), but by comparing the output you get trying to use the symbol before and after "b main" should give you some idea what is going on.

</comment></comment><comment><USER9> GDB builds a dummy-frame for the inferior function call, and the unwinder cannot seek for exception handlers outside of this dummy-frame. What happens in that case is controlled by the set unwind-on-terminating-exception command.</comment>


Amazon S3 Introduces Reduced Redundancy Storage (2x vs 3x) - <AUTHOR> http://docs.amazonwebservices.com/AmazonS3/latest/dev/index.html?DataDurability.html#UsingRRS Update: Werner Vogels weighs in:  http://www.allthingsdistributed.com/2010/05/amazon_s3_reduced_redundancy_storage.html <comment><AUTHOR> Werner Vogels' blog posting on this: [http://www.allthingsdistributed.com/2010/05/amazon_s3_reduce...](http://www.allthingsdistributed.com/2010/05/amazon_s3_reduced_redundancy_storage.html)

</comment><comment><USER2> S4 should respond with a "No Redundancy" feature.

<http://www.supersimplestorageservice.com/>

</comment><comment><USER3> A preemptive strike against Google's rumored S3 competitor?

<comment><USER4> Doubt it. This isn't a big enough feature to be driven by that situation. It sounds like a routine product improvement to me.

<comment><USER5> I actually think it is. It'll make it harder to say "we're cheaper than aws". Now people will have to qualify that (we're cheaper than some of s3), which makes the statement much weaker.

</comment></comment></comment><comment><USER6> If I use this, how do I know when I need to recreate an object?

<comment><USER7> From Jeff Barr's blog post: [http://aws.typepad.com/aws/2010/05/new- amazon-s3-reduced-red...](http://aws.typepad.com/aws/2010/05/new- amazon-s3-reduced-redundancy-storage-rrs.html)

"If Amazon S3 detects that an object has been lost any subsequent requests for that object will return the HTTP 405 ("Method Not Allowed") status code. Your application can then handle this error in an appropriate fashion. If the object lives elsewhere you would fetch it, put it back into S3 (using the same key), and then retry the retrieval operation. If the object was designed to be derived from other information, you would do the processing (perhaps it is an image scaling or transcoding task), put the new image back into S3 (again, using the same key), and retry the retrieval operation."

</comment></comment><comment><USER8> Amazon sells technology that they developed for their own use. I wonder what data they store in RRS? Tracking information? User calculated preferences on products?

<comment><USER9> map-reduce jobs intermediate results?

</comment></comment><comment><USER5> I'm probably an aws fanboi by now but I think this is great. Store your not- so-important stuff 30% cheaper. I can see how I'd use this immediately.

</comment><comment><USER10> Is the price less for this? It doesn't say.

<comment><AUTHOR> Pricing starts at 10c/GB rather than 15c/GB; hence I figured it's stored in 2 locations rather than S3's default 3 location redundancy.

<comment><USER3> Does that match up with the 99.999999999% vs 99.99% durability figures? I don't know what the proper math is here.

edit: they do explicitly say "Designed to sustain the concurrent loss of data in two facilities"

<comment><USER11> Inexact at best, but ..

      P(3 locations failing) = 1-0.99999999999

      P(1 location failing) = P(3 locations failing)^(1/3) = 0.000215443475

      P(2 locations failing) = P(1 location failing)^2 = 0.999569159</comment></comment></comment></comment>


New Coke, 35 years on - <AUTHOR> https://www.independent.co.uk/life-style/food-and-drink/new-coke-coca-cola-failed-product-launches-history-a9479116.html <comment><USER2> I like the conspiracy theory about how the New Coke fiasco was actually deliberate subterfuge for switching the product from sugar to high fructose corn syrup. Corn-syrup coca-cola tastes different than Coca Kola's classic sugar formula, and allegedly people noticed the difference when the Coca-Cola company was doing tests, pre-New Coke.

My cousin-in-law only drinks "Mexican Coke" (but Mexicans drinking coca-cola in their country get HFCS-Coke too. Wikipedia says only mexican coca-kola produced for export is made with sugar).

Fortunately HFCS is no longer contaminated with mercury [0] [1] (or less contaminated?), thanks to the efforts of a whistleblower [2].

The last problem to deal with is how HFCS preparations might have more calories than listed on the label, on account of residual starch molecules that aren't split into glucose. Residual starch adds calories but don't affect the perceived sweetness.

I previously wrote about how the original soda products were herbal beverages: Coca-Cola is made with flavorings from the Coca leaf and the Kola nut, Root beer is made with roots, Dr. Pepper's 21 plant flavors, etc: [https://news.ycombinator.com/item?id=17979670](https://news.ycombinator.com/item?id=17979670)

[0] Mercury in High-Fructose Corn Syrup? - [https://www.webmd.com/food- recipes/news/20090127/mercury-in-...](https://www.webmd.com/food- recipes/news/20090127/mercury-in-high-fructose-corn-syrup#1) (2009)

[1] [https://www.iatp.org/documents/much-high-fructose-corn- syrup...](https://www.iatp.org/documents/much-high-fructose-corn-syrup- contaminated-mercury-new-study-finds) (2009)

[2] FDA WHISTLEBLOWER SPEAKS OUT ABOUT MERCURY IN OUR FOOD - [https://www.foodwhistleblower.org/fda-whistleblower- speaks-o...](https://www.foodwhistleblower.org/fda-whistleblower-speaks-out- about-mercury-in-our-food/)

[edit: added some words to first paragraph re sugar and Coca-Cola company's taste tests pre-new-coke.]

<comment><USER3> > Wikipedia says only mexican coca-kola produced for export is made with > sugar).

Wikipedia is wrong. When I'm in Guadalajara and buy bottles of coke locally, it has sugar. It's an anecdote, but it does disprove Wikipedia. One specific independent bottler in Mexico wanted to use HFCS, but there are other bottlers other than Arca Continental. Coca-Cola FEMSA is the largest bottler in Mexico and they use sugar.

<comment><USER4> I'm curious about the price difference between HFCS and sugar in Mexico. My understanding is that in the US, HFCS prices are artificially low due to corn subsidies while sugar prices are artificially high due to protectionist policies. I wonder if HFCS is any cheaper outside the US.

<comment><USER5> I believe in Europe, they mostly use beet sugar rather than cane or HFCS. It looks like the EU in the recent past heavily regulated their sugar market though

Japan has a high usage of HFCS (40% of sugars), and I always assumed that was due to trade agreements with the US giving access to cheap corn since there is so little domestic corn production.

</comment></comment></comment></comment><comment><USER6> I wish someone would spill the secrets of how New Coke came to be from inside CocaCola's offices. From the boardroom to the marketing dept, to the "chefs" who made the new recipe. Now that would be an interesting read. To see the decisions that were made and office politics that shaped what almost caused CocaCola to go under.

<comment><USER7> The path to New Coke was quite simple, actually. Coke learned that in blind taste tests, consumers overwhelmingly preferred Pepsi to Coke, by a wide margin and repeatable across a wide range of tests. The preference was simple - Pepsi was sweeter, and in blind taste tests people overwhelmingly preferred the sweeter drink.

This hard data was seen as indicating a looming crisis and management felt the need to act and act quickly. What the data failed to show, however, was how brand aware consumers perceived the two drinks. Even though blind taste tests showed overwhelming preference for Pepsi, if you left the labels on the cans consumers overwhelmingly preferred Coke.

Coke management listened to the researchers but all parties concerned failed to understand what the research was and wasn't testing, and what conclusions one could and couldn't draw from it.

<comment><USER7> To add a little more color, the "which is sweeter" question, which drove the shift to New Coke, was as a leadership failure actually secondary to the deeper brand failing that was New Coke. Coke's brand has always been a golden- age concept, a celebration of all the good times you've had in the past drinking coke with family and friends (think of all the old timey photos and artwork you've seen in Coke ads, and it's been like that pretty much from the start). Pepsi's brand is the reverse, it's new and exciting and the future (for many years their slogan was "The choice of a new generation"). You'd think this was because Coke was the older product and Pepsi was the newer product, but they were both launched around the same time, and both are ancient compared to the age of their average consumers. When Coke became New Coke, it wasn't just making its flavor look like Pepsi's, it was committing the much bigger sin of making its brand look like Pepsi's. Given how tremendously much stronger Coke's brand was than Pepsi's, the idea of rebranding itself as "New" was the much deeper failing on Coke management's part than the flavor change, and arguably was the thing consumers actually reacted most negatively to, because it was destroying their relationship to one of the strongest brands in the world. No one wanted Coke to be New. They had Pepsi for that. They preferred Coke to be their connection to the golden age of all their past good times.

<comment><USER8> > _because it was destroying their relationship to one of the strongest brands > in the world. No one wanted Coke to be New. They had Pepsi for that. They > preferred Coke to be their connection to the golden age of all their past > good times._

I don't believe anything resembling this kind of thinking process goes through a typical customer's head, even subconsciously. It doesn't pass the smell test as a rationalization, and sounds to me like something people in advertising industry write to each other in reports to justify their high salaries.

I propose a simpler hypothesis: customers have already self-selected themselves into preferring Coke or Pepsi. New Coke didn't introduce any new value - people who would like it were already drinking Pepsi. At the same time, its existence was received as a _threat_ by Coke customers, as a New Coke seems like something that's going to replace the good ol' Coke. People don't like change; in particular, they don't like when a product that works for them is changed, because that change is almost universally for the worse[0].

The difference between the above and what you described is that my hypothesis doesn't require from a customer to have anything other than a "Coke = cola drink that hits the 'sweet spot' for me" relationship. I don't see the reason to believe consumer brand perception to be anything more than that. Especially not consciously thinking about how a brand reminds one of the past, or something.

\--

[0] - Short-term. Sometimes it's worth to e.g. mix up user interfaces in software to enable further improvement. But with soft drinks, there's nothing other than short term.

<comment><USER9> I find it strange how many people on the internet are convinced ads and branding just... don't work? They obviously do. Even if you think they don't work on you (which you're probably wrong about), they work on everyone else.

<comment><USER10> No no, I think we buy the branding thing. I'm pretty sure part of the reason I have the car I do is a branding thing, etc. etc. I'm like the #1 brand sucker on the planet. But that's at the "these guys are outdoorsy", "you're sophisticated", "you're cool" level not at the "this represents classic American values vs. this is the new generation" thing. That sounds like nonsense to me.

Just clarifying that it isn't whether branding works but the shape of the working. Like, I admit being easily influenced by them, just not in that direction. Like Red Bull is cool action sports, right? But I've never had a Red Bull when I've gone skiing. Not saying branding doesn't directly modify my associations, just that the way isn't what yodon said.

<comment><USER9> Ironically (coincidentally?), I think you can apply a direct analogy between the tastes of Coke and Pepsi, and their branding. People have a preference for one drink over the other, but they can't articulate why. Most people can't tell one from the other in a blind taste test, much less describe what specifically they prefer about one over the other. They can still taste it, though, and the experts can break down the flavors and sensations to describe the differences between the two.

I suspect the branding is perceived the same way. People pick up on all of these things, and the experts have a language to describe their branding strategy, and they're very deliberate about what they do and do not include in their ads. People don't express it or notice it consciously, but they can still tell when the marketing feels "wrong" compared to the ads they've seen before.

</comment></comment></comment></comment></comment></comment></comment><comment><USER11> Not mentioned in the article was the "market research gone wrong". New Coke was market tested in supermarkets with taste samples and questionnaires. New Coke was preferred in these taste tests.

But the context was wrong, a small sip in the supermarket under surveillance is not a bottle at home / cinema / picknik.

But: "almost ruined" is wrong, too. After this CocaCola basically got the status as USA national heritage.

So maybe it was the most successful marketing ploy in modern history. (CocaCola denies this).

Source: Some marketing books from the 90s and 00s.

<comment><USER12> I heard something about sweetness? If you're taking little sips you much prefer sweeter, but you wouldn't want an entire drink of that much sweetness.

I heard that's why Pepsi Cola (sweeter than Coke) wins in those blind taste tests... but everyone still drinks Coca-Cola instead.

<comment><USER13> There is something McDonald's level addicting with coke that you just don't get from a pepsi.

It's not the taste but the feeling afterwards.

</comment></comment></comment><comment><USER14> Where they really screwed up was when they changed from using sugar to high fructose corn syrup. This drastically changed the taste of Coke. If you want original Coke, you can get Mexican Coke, available from many stores, which still uses sugar.

I find American coke to be an entirely different beverage, which is almost undrinkable.

</comment><comment><USER15> Do they have different formulas for different countries? I've had coke products in several different countries and they all tasted different to me. The most noticeable was a coke in Germany tasted less sweet compared to US coke.

<comment><USER16> yes, in the US anyways corn syrup is used in place of sugar cane which is used in say Mexico

<comment><USER17> I don't believe this is (100%) true anymore.

Mexican Coke you buy in the US _is_ sweetened with cane sugar, but Mexican Coke you buy in Mexico is often sweetened with high fructose corn syrup.

<comment><USER18> You are right that it is not 100% true, but it is mostly true.

The US uses corn syrup because the US government heavily subsidizes corn. Some Mexican producers in Mexico do use corn syrup, which is a cheap import from the US, but even here the majority use sugar.

This kind of thing happens in with other countries as well. In New Zealand you can get local coke which is sugar-sweetened or imported American coke with corn syrup. People didn't switch to corn syrup because it's better or even cheaper in and of itself, they switched because the US government goes to ridiculous lengths to make it cheap.

<comment><USER19> Maybe not "heavily". It was 2B out of a 50B corn crop. So, 4% classed as 'heavily subsidized'? And a large portion of this is in the form of insurance against bad weather/crop loss. Otherwise, we'd have no farmers left in a couple of year (everybody has a crop loss once in a while).

FWIW.

<comment><USER13> They invested to get the market to 50b at the expensive of other products that could have been grown. The 2b figure just helps keep the edges from fraying.

<comment><USER19> If something else had been supported to get that generous crop, we'd be dissing it now. Like VHS vs Betamax, Corn won early and it won big. Not surprising it went like that; so many things do.

Anyway it'd cost trillions to retool for some other staple crop now.

</comment></comment></comment></comment></comment></comment></comment><comment><USER20> My understanding is that this was, long-term, very good for Coke. Check out this line:

" On 11 July 1985, once the extent of the soda brand's mistake had become evident, Coca-Cola relaunched the original recipe, rebranded as Coca-Cola Classic.

According to the beverage corporation, the news of the drink's long-awaited return "made the front page of virtually every major newspaper". "

Talk about free advertising!!

From a biased source: [https://www.coca-colacompany.com/news/the-story-of-one- of-th...](https://www.coca-colacompany.com/news/the-story-of-one-of-the-most- memorable-marketing-blunders-ever)

"The events of 1985 changed forever the dynamics of the soft-drink industry and the success of The Coca-Cola Company, as the Coca-Cola brand soared to new heights and consumers continued to remember the love they have for Coca-Cola. "

<comment><USER21> I remember it often on the nightly news as well.

</comment></comment><comment><USER22> What I find incredible is just how similar everything tastes.

Either my qualia are objectively different from everyone else's, or it's 90% marketing fluff and psychological tribalism.

It's not so much that there can't be a difference between the various cokes, Pepsis, and other brands--I just find it hard to believe that the difference is so great that people can find one repulsive and the other divine.

It's all just sweet, fizzy drink. Side by side I might be able to tell coke and new coke apart. I don't find it difficult to believe that people have a preference. I find it difficult to believe that one could be so swayed by the difference to revolt.

So I cannot shake that it's more tribal identity than taste... Sort of like rock vs hip-hop.

Yea, I know telling people it's mostly mental is going to be controversial, so sorry.

<comment><USER23> It's quite possible you're right, and I can't deny that my brain is pretty twisted anyways. That said, I feel like there's a clear difference in taste between brands, at least for my own taste buds.

I drink Coca-Cola as my preferred choice. I can't stand Pepsi (and will order a new drink in a restaurant if Pepsi shows up when I ordered Coca-Cola; I can tell, even if it's not labeled). There's a specific sweetness to each, to my tastebuds. I also enjoy RC Cola, but it's also a different flavour from either of the two most well-known brands.

I get pretty specific in my tastes, especially surrounding extra flavourings. I dislike vanilla flavouring added to my colas, though I will still drink it paired with another flavour such as orange or cherry.

I will choose Cherry Coke (classic) over just Coke any day, but will choose just Coke over Cherry-Vanilla Coke. I'm willing to drink Wild Cherry Pepsi (actually quite good), even though regular Pepsi is not a flavour I enjoy.

There's an interesting version of Pepsi called Pepsi Throwback (at least, that's what it's called around here) which I also enjoy greatly. It uses a different sweetener than regular Pepsi.

I can't stand either Diet Coke or Coke Zero (or any Diet soft drinks, really); neither taste right, to me.

Now, I still think New Coke vs Coke was overblown. I don't fault the Coca-Cola company for trying to shake things up a bit, and perhaps the new formula could have appealed better, given time and a better launch. We'll never know, though ...

</comment></comment><comment><USER24> Then they ruined it (in the US at least) by replacing the sugar with corn syrup.

<comment><USER25> That happened before the "New Coke" debacle.

<comment><USER26> And it happened gradually. "Ingredients: ... Sugar and/or High Fructose Corn Syrup ..." appeared on the label for the longest time.

</comment></comment></comment><comment><USER27> Who else remembers the original Crystal Pepsi, before they changed the formula? I will admit I drank that stuff like water.

<comment><USER28> I bought a few for old times sake during the last limited release in 2016 (edit:err, 2018 I guess, [1]). They didn't keep for very long and tasted a bit off to me or maybe my palette has evolved.

[1] [https://en.wikipedia.org/wiki/Crystal_Pepsi](https://en.wikipedia.org/wiki/Crystal_Pepsi)

</comment></comment><comment><USER29> The end of Mad Men implies that Don Draper is the creator of Coca-Cola's "Buy the World a Coke" ad[1].

Is he also responsible in later years for New Coke?

[1]: [https://m.youtube.com/watch?v=GxtZpFl3pPM&feature=youtu.be](https://m.youtube.com/watch?v=GxtZpFl3pPM&feature=youtu.be)

</comment><comment><USER30> This "article" is a brilliant little ad for new the Stranger Things-themed re- release of New Coke.

<comment><USER31> You mean the re-release they did a year ago and that is long since sold out? If this is advertising for that, it's a pretty dumb strategy to publish it a year too late. (Amazon has them but only from third party sellers.)

</comment></comment><comment><USER32> I've never had New Coke, but heard it was good. Can anyone speak to the flavor?

<comment><USER33> I bought some as part of the Stranger Things promotion, so assuming it actually does match the original recipe, it was pretty good. I did blind taste tests with the rest of the family and everyone picked New Coke as their preferred flavour. I guess the best way to describe it is it seemed a bit sweeter (but not more sugary), in the same way Tab had a sweeter flavor profile compared to Diet Coke.

<comment><USER19> Strangely, in blind taste tests, a majority of folks chose Diet Pepsi over all the others (all other Pepsi; all other Coke). Which shows, soft drink preferences are largely cultural?

<comment><USER34> Very interesting, while I do not like the flavor of Pepsi, I do crave Diet Pepsi every once in awhile, even though I normally prefer Coke products. I thought maybe I was the only one.

As far as colas go, Diet Pepsi has a decent flavor profile; it's sweet but not cloying or syrupy. And it has enough of whatever acids or other flavorings to mask / distract from the aftertaste of artificial sweeteners.

That's the one thing that hurts Diet Coke, I think, particularly if it isn't cold.

</comment></comment></comment></comment><comment><USER35> They have had very deceptive advertising tricks in the past, such as "original formula" not being the original at all, and having to fix it to "original taste." To me that is very underhanded.

</comment><comment><USER36> My theory is Cherry Coke is actually cherry flavored New Coke. Also, I tried the Stranger Things rerelease of New Coke and it is good, I feel like they should bring it back.

</comment><comment><USER37> Or possibly New Coke was a huge boost, through the attention that the controversy aroused. After the New Coke fiasco wrapped up, Coca Cola sales soared.

<comment><USER38> I agree with this. Coke was really hurting in the overall market when New Coke was introduced.

</comment></comment><comment><USER39> I wonder if they had made a subtle changes year after year that people's tastes would have adjusted.

</comment><comment><USER40> "According to Mullins, the issue was not just the new taste, but that the company had done something "un-American" - taken away his "freedom of choice"."

Ah the good old "I want freedom of choice, but if you exercise yours then that's un-American". And we think that entitlement is a 21st century invention.

<comment><USER41> Although the new definition of entitlement - that means exactly the opposite of the old definition - is.

<comment><USER42> Do you mean that the old definition is the right to have something, and the new version is the mistaken perception of that right?

<comment><USER41> Exactly. So now using the old definition can be ambiguous and has to be replaced by something 'wordier'. I can't do anything about it but I do think it's a shame.

<comment><USER43> The idea that "rightful entitlement" has a much older heritage than "perceived entitlement" doesn't seem supported: [https://languagelog.ldc.upenn.edu/nll/?p=4240](https://languagelog.ldc.upenn.edu/nll/?p=4240)

> The earliest cluster of uses of entitlement meaning "(rightful) claim" that > I've found is associated with post-WWII veterans' benefits, as in this 1947 > Popular Mechanics ad

> In the 1960s, psychoanalysts also start using entitled and entitlement with > strongly negative connotations, resulting in the emergent term of art > "narcissistic entitlement".

> Meanwhile, by the 1970s, the phrase entitlement programs is being used in > its modern sense (defined benefits paid by the federal government) in > discussions of the federal budget — and the connotations are by no means > positive.

<comment><USER41> >Meanwhile, by the 1970s, the phrase entitlement programs is being used in its modern sense (defined benefits paid by the federal government)

Right, but that's not the modern sense for the 1.2 billion English speakers who are not in the US

</comment></comment></comment></comment></comment></comment><comment><USER44> Yay! Sugar water!</comment>


False Alarm: Google Circles Not Coming Now, And Probably Not Ever - <AUTHOR> http://networkeffect.allthingsd.com/20110313/false-alarm-google-circles-not-coming-now-and-probably-not-ever/ <comment><USER2> The fact that Google is going out of their way to pour water on this is kind of interesting in itself. It almost suggests that they have some kind of under-the-covers agreement (I guess it can't be Facebook, but maybe Twitter?) that they're trying hard not to step on?

From what I've observed they seem to have firmly adopted a different strategy for social which involves organically growing their existing products with social features rather than trying a high profile (and high risk) product launch. To me this demonstrated some much needed corporate self-awareness (there are some things Google just isn't good at) and so I was pretty surprised to see that they would have reversed that and gone for a big splash.

I honestly think Google has all the seeds to make a competitive social offering but they need to play their cards very carefully and tie things together in the right way. If they can weave Gmail, Google Talk, YouTube and Picasa together then they basically have Facebook's feature set. All of these products are best of class and loved individually by their users. Add Android into the mix and Google even has a trump card they can play. The question is how Google can gently usher all those users / technologies into one cohesive social offering without harming the individual products, alarming people about privacy or any other negative consequences. It has to be done carefully and gradually and with sensitivity. I think this is exactly what they've been doing and is the smart strategy.

<comment><USER3> > ...rather than trying a high profile (and high risk) product launch. To me > this demonstrated some much needed corporate self-awareness (there are some > things Google just isn't good at)

Well said. Wave was far from great — mostly because it was hyped as an email replacement, rather than real-time collaboration.

Further, UI hasn't been Google's strong suit (this is slowly changing for the better, however), and for a social network to steal people from Facebook, it needs to have a great (not just good) design. Facebook started that way (especially compared to MySpace), but has fallen a little by the wayside over the last couple of years.

</comment></comment><comment><USER4> Thank goodness. If Google took over social, too, I'd be forced to quit the Internet.

Ceding all that power to one entity (a company no less), is just insanity.

<comment><USER5> Oh how I wish more people saw it this way...

</comment></comment><comment><USER6> They released a video a /while/ ago (6mo to a year, I think) that explained research into the "Google Circles" idea. That's where this rumor started.

I spent about ten minutes googling around for it, but apparently my google fu is weak tonight.

<comment><USER7> Maybe this one? [http://www.slideshare.net/padday/the-real-life-social- networ...](http://www.slideshare.net/padday/the-real-life-social-network-v2)

<comment><USER6> yep, that's the one.

</comment></comment></comment><comment><USER8> In case you missed it, the confusion resulted from an old Google page that explains how social search works.

See <http://www.google.com/s2/u/0/search/social#socialcircle> and <http://news.ycombinator.com/item?id=2319412>

<comment><USER9> Not really. That did get dug up during the frenzy, but the rumor got started with a ReadWriteWeb post [1] and a since retracted confirmation from Tim O'Reilly.

[http://www.readwriteweb.com/archives/google_to_launch_major_...](http://www.readwriteweb.com/archives/google_to_launch_major_new_social_network_called_c.php)

</comment></comment><comment><USER10> Glad we don't have to deal with another Google social media flop.

</comment><comment><USER11> Although they're obviously doing something around social search, as in their own system:

<http://www.google.com/s2/u/0/search/social#socialcircle>

<comment><USER12> Posted here[0] where it was pointed out that that page has been around since 2009

[0] <http://news.ycombinator.com/item?id=2319412>

</comment></comment><comment><USER13> Honestly, I'd rather see Google and Facebook joining forces than trying to make competition! If those two work together, imagine how to web could be!

<comment><USER13> Why the downrank? Facebook is the biggest Social Network in the world, the second most visited website. Google (search engine) is the biggest web search engine in the world, the most visited website.

Even if Facebook launched the best search engine, we are used to Google and it just works, look at Bing even if the engine is somewhat more defined and powerful, we still search on Google because there's that little something we like. It's the same thing right now with Google and their (maybe unannounced) social networking plan.

Imagine a social integrated search (kinda like Greplin) where your search results maybe be influenced by who you are and what you might try to find. Where we're not posting YouTube videos across the social network but it is integrated to it in a blended experience where you can even watch videos with your friends live. Imagine Google Docs connected directly to your Facebook contacts, your calendar synchronized to your events - a unified experience.

Yes at some point it might sound silly, but think about the possibilities, the face isn't the reality, beneath it is.

<comment><USER14> This lacks a fundamental understanding of free markets and corporate nature. When there is no competition, innovation dies.

<comment><USER13> There will always be competition (Friendster, QQ, VKontakte, MySpace, Live Spaces, Path, and many others), and there will always be innovation. Facebook has no competition right now and it's still innovating!

<comment><USER15> How is Facebook innovating? Serious question, I'm not on FB and I'm interested.</comment></comment></comment></comment></comment>


Lock-free programming for the masses - <AUTHOR> http://kcsrk.info/ocaml/multicore/2016/06/11/lock-free/ <comment><USER2> > [...] provide atomic operations on stacks and queues, such atomic operations > cannot be combined into larger atomic operations

Questions aboud.

Is this about combining operations and then reducing them to a single atomic (read intel's TSX) primitive? Or is it about batching them together?

This is inspiring. Composability means so much more than just chaining things together. I believe type systems should carry way more information about orthogonal properties (can it block? is it associative, commutative? what does it want to be prefetched? does it contain locks? does it contain atomic operations?)

> represented as a k-CAS

If I understand correctly, the hardware has not been there yet for a few years now. Wikipedia lists a few unsucessful attempts [1]

[1] [https://en.wikipedia.org/wiki/Double_compare-and- swap](https://en.wikipedia.org/wiki/Double_compare-and-swap)

<comment><USER3> (author here) The collected CAS operations are batched together using a lock- free k-CAS implementation. The library does not presuppose a hardware k-CAS mechanism.

The built up transactions carry around some information internally (blocking, # of CASes, etc). You could possibly extend the API to query them. But it is not clear to me immediately why you'd want to expose all of this info in the types.

<comment><USER2> Thanks for the clarifications.

> you'd want to expose all of this info in the types

This is a just a generic idea.

I meant the type system would let you express some property; and it would carry it to the rest of the program. In an IDE, you would have several views that would inform you of those properties. The "blocking" view would have color hints for: non_blocking, blocking_wait_IO, blocking_mutex, contention_on_X, etc; when this information is only in the documentation of the called elements.

Today, composing elements loses this information, when it could be carried with static analysis and sometimes some help.

</comment></comment></comment><comment><USER4> Details on Multicore OCaml progress: [https://ocaml.io/w/Multicore](https://ocaml.io/w/Multicore)</comment>


How I took control of my personal finances. A simple walkthrough for you - <AUTHOR> https://medium.com/@tomkoszyk/how-i-took-control-of-my-personal-finances-a-simple-walkthrough-for-you-9e27d15ae5bc#.370wrryvi <comment><USER2> Hmm. I'm kinda disappointed. I was expecting more of a breakdown into an actual strategy, not what basically amounts to an ad.

Personally, tracking expenses has never really been the big problem. Once I've swiped that card, the action is done. I can't really take it back. If I go over my spending, I'm in trouble. On the other hand, if I don't swipe that card in the first place...

That's where I took back my spending. Planning ahead of time -- not tracking after the fact.

Anyway, disappointed in the ad-in-blog-form, but always glad to see advice re: personal finance.

</comment><comment><USER3> Bummer. I liked the write up, it was going places. But then it was an ad.

I would save the advertising spiel for the page you link to in the article, and make the article more interesting.

It's a good advertising technique, but the article needs to be useful without the advert.

I came out of that feeling disappointed and decieved when it didn't have to end that way. Subtlety is key with this kind of marketing.

</comment><comment><USER4> Submarine ad for a product that hasn't been released yet. Article ends with a link to a website with an email sign-up form.

</comment><comment><USER5> Maybe this should be titled differently, like 'Buy my app when it comes out.' Some walkthrough.</comment>