Go to Statement Considered Harmful (1968) [pdf] - <AUTHOR> https://homepages.cwi.nl/~storm/teaching/reader/Dijkstra68.pdf <comment><USER2> Dijkstra used the concept of program statements as "predicate transformers". The idea is that a program has a series of predicates (think "assert()" on steroids).

A predicate is a formula (usually in first order predicate logic) that characterizes the allowable states of the program at the point where the predicate appears in the program text. I.e., "N == A * k + B".

Unlike assert statements, a predicate may not be executable, but rather serves as an aid to reasoning about your code.

A statement (i.e., "if", "assign", "case" etc.) modifies the allowable states of the program. Hence the phrase "predicate transformer".

The initial state when the program starts has a predicate that characterizes any required assumptions about the inputs. The final state has a predicate that characterizes the required output of the program upon completion.

Dijkstra, Gries, Hoare, and others created formal rules of inference describing exactly how a given statement modifies the predicates.

This approach worked brilliantly for the normal "structured" statements ("if", "do", etc.)

(To me, the most helpful idea from their system was the idea of invariants for iterative statements.)

However, their approach was impossible to do for arbitrary "goto" statements.

I believe Dijkstra was of the opinion that localized, static reasoning about program correctness was (is) the best way to get code correct and error-free.

The fact that arbitrary "goto" statements destroyed the ability to reason about programs in this manner was why he forcefully advocated against them.

(An alternative framework, denotational semantics, includes the idea of continuations, which among other things provides a mathematically rigorous characterization of arbitrary "goto" statements.)

FWIW, as a programmer I have found over the years that the predicate/"invariant" approach of Hoare-Gries-Dijkstra gives me a useful handle on reasoning through my code and getting it right.

<comment><USER3> What you're describing sounds like TLA+, among other modeling languages.

<comment><USER4> Lamport, Dijkstra, Scholten, Hoare, and Knuth, to name just a few, are giants in the field who routinely read each other's work. I'm positive TLA+ is directly influenced by predicate transformer program semantics.

</comment></comment></comment><comment><USER5> The classic. See also another viewpoint in that conversation:

Donald Knuth: Structured programming with go to statements (1974)

[http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.103....](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.103.6084)

[edit] Of the 102 (!) entries in the bibliography of this paper, Knuth cites 9 of Dijkstra's papers (including the goto paper) and 3 personal communications.

<comment><USER6> Somebody needs to ask Tony Hoare about his axiomization of GOTO described in that...

</comment></comment><comment><USER7> It's difficult to examine his comments without historical context: I haven't dealt with any code from that era, but there is still plenty of Fortran 77 code from ~20 years later where the use of gotos makes it difficult to understand control flow, e.g.: [https://github.com/JuliaMath/openspecfun/blob/master/amos/zb...](https://github.com/JuliaMath/openspecfun/blob/master/amos/zbesi.f)

That said, gotos are still occasionally very useful: jumping out of nested loops and implementing finite-state machines are both made much easier and clearer via gotos than trying to force them into more standard control flow statements.

The linux kernel also makes judicious use of gotos for cleaning up error handling: [https://koblents.com/Ches/Links/Month-Mar-2013/20-Using- Goto...](https://koblents.com/Ches/Links/Month-Mar-2013/20-Using-Goto-in- Linux-Kernel-Code/)

<comment><USER8> The use of goto to jump out of nested loops is available in many languages as the ability to break out of a labeled loop. Regular structured programming plus this single extension allows any algorithm that can be written with goto to be written without, with no loss of efficiency.

I have seen multiple ways to implement finite state machines. Autogenerated code with goto is indeed a clean option. However I strongly prefer it if the state machine has a relatively clean definition that does not involve goto.

</comment></comment><comment><USER9> Try as I might, I just don't see why it's important to maintain an independent index into the process progress of a running program. So you can know the exact point in the process progress where n equals the number of people in the room minus 1... What is the usefulness of it? What problem does it help solve to have this kind of process coordinate in time?

I can understand that unbridled use of GOTO tends to lead to a mess, but Dijkstra's argument seems to be more about the purity of the process, for... some purpose I can't fathom.

Still, I imagine he'd have a field day trashing dependency injection and dynamic dispatch!

<comment><USER6> Ok, I'm not sure I understand your question, but I'll try...

Think of his "index" as a virtual program counter, while you are trying to write the code or understand what someone else has written. At some point, the process is going to be in a state where someone has entered the room (i.e. n = #people - 1), and at a later point you have incremented n (so that n = #people again).

One of the key features of Dijkstra's thinking about how to understand and write programs is that you should be thinking about the _text_ of the program, not its dynamic behavior. You should not be "pretending to be the computer"\---when you mentally "execute" the program, you have to keep a finger pointed at the current statement (and procedures, recursion, loops, etc., make that pretty difficult).

However, I don't know if he'd fully developed that idea in 1968; this article reads like he was still trying to understand programs by playing out their behavior. So, if you were counting people going into a room, at some point you will have seen someone go in, but not have incremented the counter while after the next statement you have seen someone _and_ have incremented the counter.

Without a lot of discipline, GOTO has the power to completely throw away whatever understanding of the program you have; you could GOTO that point where you are going to increment the count but without seeing anyone go into the room.

</comment></comment><comment><USER10> Ahh yes, the origin of this phrase. I still cringe every time I see it used.

<comment><USER11> Interestingly [1]:

> The original title of the letter, as submitted to CACM, was "A Case Against > the Goto Statement", but CACM editor Niklaus Wirth changed the title to "Go > To Statement Considered Harmful"

...

> Frank Rubin published a criticism of Dijkstra's letter in the March 1987 > CACM where it appeared under the title "'GOTO Considered Harmful' Considered > Harmful". The May 1987 CACM printed further replies, both for and against, > under the title "'"GOTO Considered Harmful" Considered Harmful' Considered > Harmful?". Dijkstra's own response to this controversy was titled "On a > Somewhat Disappointing Correspondence."

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

<comment><USER12> Interestingly, "A Case Against ..." is also a bit of hackneyed title pattern.

<comment><USER13> Why a case against is not my favorite pattern.

<comment><USER12> A Case Against "Why X is not my Favorite Y" Being Considered Harmful.

</comment></comment></comment></comment></comment><comment><USER14> Coincidentally, I put up a new chapter in my in-progress book last night that contains a long aside with my thoughts on this paper:

[http://craftinginterpreters.com/jumping-back-and- forth.html#...](http://craftinginterpreters.com/jumping-back-and- forth.html#design-note)

Overall, I find it pretty disappointing. It lacks the rigor that Dijkstra himself argued so strongly for and may have stifled actual useful language research.

<comment><USER15> Thanks for sharing this. I had the same reaction. I have another point to add: many people think of "goto considered harmful" as saying something like: you can use all the other control structures that (say) C provides, but the "goto" statement should not appear in your program. At least that's what I thought, but in Knuth's encyclopedic response to the article, after giving some examples where eliminating goto (mechanically or otherwise) doesn't give great results, there's a section [1] where he discusses some proposed alternative control structures to goto — and among them is "break"! And on rereading Dijkstra's article and looking at the responses to it and some languages from the time, it dawned on me that what Dijkstra was advocating was that the _only_ control structures be conditionals, loops, and subroutines — no "break" or "continue", no early "return" in a function — and for example this (plus a discouraged goto) is in fact how things work in the original Pascal language (where you return from a function by assigning to a pseudo-variable and waiting for control flow to reach the end). Most programmers who echo "goto considered harmful" have not actually tried the discipline of giving up _all_ of those and seeing how happy they are. Languages have realized that the barebones proposed by Dijkstra were inadequate and have added "break", "continue" and "return" and even more control-flow structures, like exceptions.

The weak version of the thesis is that too much ad-hoc control flow can be confusing and is best avoided. But most programmers agreed with this anyway (there wouldn't have been much of a debate if this was all it was), and in this version there's no reason the limited set of control-flow structures cannot involve some use of the "goto" keyword (like the "goto end" / "goto cleanup" pattern in C code). The strong version of the thesis, as mentioned in the previous paragraph, is something no one really wants to live with (and I haven't seen the "coordinates" in practice either way). So what people seem to have settled on is an in-between version that abandons the actual content of Dijkstra's article, while retaining the _word_ "goto" as a marker of sin.

[1]: [http://www.kohala.com/start/papers.others/knuth.dec74.html#c...](http://www.kohala.com/start/papers.others/knuth.dec74.html#comparison)

<comment><USER14> _> And on rereading Dijkstra's article and looking at the responses to it and some languages from the time, it dawned on me that what Dijkstra was advocating was that the only control structures be conditionals, loops, and subroutines_

I'm actually not sure if that's what he's advocating. In fact, one of my main complaints with the letter is that he's really not very clear about what he's saying at all. Some of that may be just context that he could assume people had when he wrote it that has been lost since, but I think some of the blame rests on him.

He does say:

 _> One can regard and appreciate the clauses considered as bridling its use. I do not claim that the clauses mentioned are exhaustive in the sense that they will satisfy all needs, but whatever clauses are suggested (e.g. abortion clauses) they should satisfy the requirement that a programmer independent coordinate system can be maintained to describe the process in a helpful and manageable way. _

Which I interpret to mean that some goto-ish statements are fine if they are restricted in a way that doesn't make them hard to reason about. I think he would probably consider break, continue, and early returns acceptable in that way since he specifically mentions "abortion clauses", which sounds similar to those to me.

But he never really defines what he considers an acceptable "briding", so we're still left in the dark.

<comment><USER15> That's fair. From just the original article, it's hard to guess what Dijkstra's intent was or if he even had a clear idea himself.

But if you look at the "goto debate" of the time -- the various letters published by various people pointing out "how would you do the following without goto?" as others had meanwhile started treating goto as sinful and avoiding goto with the moral zeal of new converts -- then it appears that regardless of Dijkstra's intention, at least the debate among most programmers at the time was about abandoning "goto" even in the absence of other compensating control structures. So it appears to me that the debate was settled, and eventually faded away into a catchphrase, not simply by everyone agreeing that goto is evil persuaded by Dijkstra's arguments, as the popular opinion holds, but by languages adding most of the control structures that people were using "goto" for, under different names, until ad-hoc "goto" became less and less necessary.

(And even Dijkstra's response to those responses, namely, his "On a somewhat disappointing correspondence" (original: [http://www.cs.utexas.edu/users/EWD/ewd10xx/EWD1009.PDF](http://www.cs.utexas.edu/users/EWD/ewd10xx/EWD1009.PDF) / transcript: [https://www.cs.utexas.edu/users/EWD/transcriptions/EWD10xx/E...](https://www.cs.utexas.edu/users/EWD/transcriptions/EWD10xx/EWD1009.html)), which incidentally is a good example of why they used to say that arrogance is measured in nano-Dijkstras, reveals that for example he was against short- circuiting AND/OR ("conditional connectives"), that he wrote his loops with boolean variables checked in the loop condition rather than break, and that he wrote of "all sorts of "programming language features" that seem better ignored than exploited" \-- so in the original when he writes that "whatever clauses are suggested (e.g. abortion clauses) they should satisfy the requirement..." it's not clear that break/continue would satisfy his requirement because it's never specified, as you say.)

And as you say, it's not clear that it was an improvement as far as language research goes, because it's far from obvious that the set we've settled on is the most natural or useful one: C has while, do-while, and for, each with break and continue, but alternatives like repeat-until (expressible as do {...} while(!(...));) were contenders, and especially Zahn's "event indicators" system looks quite nice ([http://www.kohala.com/start/papers.others/knuth.dec74.html#e...](http://www.kohala.com/start/papers.others/knuth.dec74.html#event)). (I guess in Python it's not unusual to do something similar using exceptions, so they've returned in some form.)

<comment><USER14> _> "On a somewhat disappointing correspondence" (original: [http://www.cs.utexas.edu/users/EWD/ewd10xx/EWD1009.PDF](http://www.cs.utexas.edu/users/EWD/ewd10xx/EWD1009.PDF) / transcript: [https://www.cs.utexas.edu/users/EWD/transcriptions/EWD10xx/E...](https://www.cs.utexas.edu/users/EWD/transcriptions/EWD10xx/E...)), which incidentally is a good example of why they used to say that arrogance is measured in nano-Dijkstras_

Yeah, when I stumbled onto that gem, it took my breath away. It is some of the absolute pettiest writing I've ever seen in a professional setting.

"I thought that by now professional programmers had learned to be more demanding on themselves and not to belittle the virtue of accuracy. I shall stick to the capital letters."

Jesus H. Christ dude.

The thing I find _really_ ironic is that this is the same guy who invented "Guarded Command Language": [https://en.wikipedia.org/wiki/Guarded_Command_Language](https://en.wikipedia.org/wiki/Guarded_Command_Language).

Its looping structure contains a series of predicate guarded clauses. Each turn through the loop, all of the predicates are evaluated to decide which clause to pick. If more than one evaluate to true, a clause is picked _non- deterministically_!

Now try to define a way to characterize _that_ process in a simple way. It's a non-deterministic multi-way goto. :-O

</comment></comment></comment></comment></comment><comment><USER16> Well, sometimes they are useful when a break statement is not enough to get you out of a nested loop.

        while (...) {
          while (...) {
            // ...
            if (...)
              goto stop_it;
            // ...
          }
          // ...
        }
        stop_it:

<comment><USER17> The "labelled goto" of the modern world is very far from the GOTO of pre- Dijkstra, which would allow you to jump _into_ the middle of loops or functions.

<comment><USER18> Yeah. Structured programming was a huge improvement over the... let's call it "unstructured" programming that preceded it. Essentially, you take any flowchart you can possibly draw, and you can implement it with GOTOs. The result wasn't easy to understand, debug, or maintain, though.

One question, though: Of the current languages that have a GOTO, won't some of them still allow you to jump into the middle of a loop? That is, is it the languages that force us not to do that any more? Or is it just that we've learned not to do that, because it's a horrible idea?

<comment><USER19> Duff's device is sort-of an example of this, as cases in C are equivalent to goto labels.

It's an interesting point, though. I don't think I've ever seen anybody actually use gotos for this, and I don't remember ever doing it myself. (I will happily put a goto label anywhere that will compile - I'm not against goto in principle.)

I'd assume it's because 99% of the time there's always some other non-goto option that could be used, and C programmers are accustomed to thinking about their programs in terms of these constructs, rather than necessarily goto. goto is always there when all else fails - but when it comes to loops, all else fails rather rarely.

Some (non exhaustive) examples.

Just thinking about the loop mechanics: jumping into the middle of a C for loop probably isn't super-useful, as you're only skipping the one-time init, which you could skip anyway: just leave it empty and put that code elsewhere. Then maybe turn the loop into a while loop? - that's an option. Anyway, for and while are basically equivalent for the purposes of this discussion.

Jumping into the body of a do...while makes it a while, and jumping into the middle of a while makes it a do...while. So C programmers would just write the right sort of loop in the first place.

        goto X;       --->  do {
        while(cond) {           A;
        X:                  } while(cond);
            A;
        }

        goto X;       --->  while(cond) {
        do {                    A;
            A;              }
        X:
        } while(cond)

And regarding the body: jumping halfway into the body is equivalent to one of those annoying loops where the setup for the condition is rather involved. One option here is an infinite loop with a break in the middle, so C programmers might just write the loop that way in preference to the one with a goto.

        goto X;         --->  for(;;) {
        while(cond) {             B;
            A;                    if(!cond) break;
        X:                        A;
            B;                }
        }

The do...while case is equivalent.

        goto X;         --->  for(;;) {
        do {                      B;
            A;                    if(!cond) break;
        X:                        A;
            B;                }
        } while(cond);

Or another option is to pop B in a function, that checks the condition.

        while(B()) {
            A;
        }

<comment><USER20> > Just thinking about the loop mechanics: jumping into the middle of a C for > loop probably isn't super-useful, as you're only skipping the one-time init, > which you could skip anyway: just leave it empty and put that code > elsewhere.

Irreducible loops [loops that have multiple entry points] tend to cause compilers to bail out on optimization; there are some algorithms which just don't work on irreducible loops. In a modern optimizing compiler, introducing irreducible loops will not give you a performance benefit and will probably give you steep performance hits instead.

I will point out that literally none of your examples are irreducible loops, since you have unconditional gotos immediately before the loops and thus they have only one entry point, even if it isn't the normal lexical entry point.

</comment></comment></comment></comment></comment><comment><USER21> Edsger, that is.

</comment><comment><USER22> Soon in hacker news: "Go 2 considered harmful"

</comment><comment><USER23> A good (although often misundertood) paper.

</comment><comment><USER24> "I don't know how many of you have ever met Dijkstra, but you probably know that arrogance in computer science is measured in nano-Dijkstras."

\- Alan Kay

With Alan Kay putting it into context here: [https://news.ycombinator.com/item?id=11796926](https://news.ycombinator.com/item?id=11796926)</comment>


Rate my hackathon hack gone startup, rooster.am - the smart alarm - <AUTHOR> http://rooster.am

<comment><USER2> Here's what I don't like about this: I have all these services on my phone, each app-click away at most. And my phone comes with as many alarms as I want. I'm not sure this is a particularly useful synthesis, especially since I have to hold my phone to my ear to get the benefit.

Two things that could make me like this more:

1) Let me get the alert on my computer. I currently set two alarms on my phone and one alarm at kukuklok.com. I'd immediately switch to your app if I could have it start talking to me on my computer at the appointed time, rather than having it call my phone.

2) Ring back if I don't push a button to confirm I'm up. Give me an option for if I just hang up the call, call me back. Nagging is good when it's trying to get me out of bed!

For what it's worth: this feedback is based off the landing page. I wasn't able to get the app to "call me now".

<comment><USER3> You mention you use an online clock now and are interested in one that speaks information. Check out <http://sleep.fm> ... wakes & speak the weather, status of your airline flight (data from flightcaster.com), as well another option you can ask your friends to choose a fun alarm sound(youtube vid) to wake you up. Which ive heard many think is a crazy idea yet if you ever woke up to Pandora.com or a radio station it's the same thing, yet the alarm that wakes you was selected by friend(has some meaning to it).

</comment></comment><comment><USER4> Seems like it might be down. I tried sending an example to my cofounder because I wanted him to answer the phone and have a rooster scream into his ear but so far all I've got is an ajax spinner going. Now all the giggling I was doing on the other side of the office just seems extra creepy.

<comment><AUTHOR> Try now. Server was having trouble with the traffic.

<comment><USER4> Yeah, seems to be working now, although he had seen my previous comment so he just gave me a dirty look when his phone started ringing. He did answer though, and I heard him mutter something about "pickles and tomatoes" trending on twitter.

</comment></comment></comment><comment><USER5> Since there's huge potential for abuse, I'd like to see there be some sort of confirmation system in place.

When you set an alarm, it calls the number entered and asks you to enter in a code displayed on screen or something. That way you can confirm the person on the computer at least has access to the phone. If the same IP address tries to set alarms for X numbers and they all fail, black list that IP or something.

Somebody could potentially go in and create alarms to call people all night and there's nothing the victim could do except turn their phone off.

Otherwise pretty neat :)

<comment><AUTHOR> Have half of this coded already, will show up in the future.

</comment></comment><comment><USER6> I'm not sure I'm 100% in agreement with the arguments that our phones are best used for all of these cases.. I can imagine some interesting cases with smarts... Text me when the surf is really good before 9am, or wake me up early if the traffic is particularly bad.. ring me if one of the stocks in my portfolio starts taking a dive. I dunno.. I think there could be some neat applications for an intelligent alarm service.

<comment><USER7> I would pay good money for a surfing text, along with a suggestion about why I'm going to be late for work that morning.

<comment><USER8> Duly noted. Check back in a few days. =)

</comment></comment></comment><comment><AUTHOR> For those who are interested, here is my pitch at the November NYTM: [http://meetjennings.com/uncategorized/rooster-am- presentatio...](http://meetjennings.com/uncategorized/rooster-am-presentation- at-nytm-november-2nd-2010/)

</comment><comment><USER9> Just got my example call, that rooster call is horrifying.

But very cool, what service are you using for the calling? It sent the example phone call within seconds to Toronto.

<comment><USER10> The example call for me was: "We're sorry, an application error has occurred."

<comment><AUTHOR> Fixed now, traffic spike was breaking things.

</comment></comment></comment><comment><USER11> I had thought about this idea earlier this year, and immediately killed it, realizing most people would just use smart phone for this.

So we developed the idea further in some other use cases: eg. 'take medicine pill' reminder call for your old parents etc.

I still think, just an alarm for myself may not be very useful, but there can be some interesting use cases to remind people with useful info.

</comment><comment><USER12> How can I delete my account? It seems it's not working for me (I'm from Slovenia) and I don't want to have an account with a service that does not work for me. Hope you understand.

<comment><AUTHOR> Sure, send me an email and I'll delete your account immediately. ian [at] meetjennings.com. Could you tell me a little more about the problem?

<comment><USER12> I've setup a test alarm and nothing happened i.e. I haven't received a call ... I'm assuming it's not working for my country (as is mostly the case with such things :\\)

<comment><AUTHOR> Try again, the server was having problems with the amount of traffic.

</comment></comment></comment></comment><comment><USER13> I put in my 778 area code phone number to test. You should detect this area code is on pacific time, and adjust accordingly. The time you told me was 3 hours off.

<comment><AUTHOR> The test script just takes an existing alarm and reads it out. Signup asks you for a timezone.

      1) An area code may span over multiple timezones
      2) A user may have a google voice number

Area code does not necessarily indicate timezone

</comment></comment><comment><USER14> The "Try me!" textbox won't even let me put in the whole number, when trying to use +47(Norway) as country code... Does this only work in the US?

</comment><comment><USER15> While an alarm clock should be annoying to a certain extent, the rooster sound is just a bit much. I like it otherwise, though.

</comment><comment><USER16> I see a Reddit icon next to "Recite the top technology stories."

Can it tell us the HN frontpage as well?

<comment><AUTHOR> In the future ;)

</comment></comment><comment><USER17> Interesting.. Can it call the U.K?

</comment><comment><USER18> 479 area code here, the time was off by one hour (18:49 rather than 17:49).

<comment><AUTHOR> Was this on the test, or did you make an account?

</comment></comment><comment><USER19> A better design would be a good start :) Great idea though!

</comment><comment><USER20> Quick typo fix: 'forcast' should be 'forecast'.</comment>


Oh, The Methods You'll Compose - <AUTHOR> http://www.augusttechgroup.com/tim/blog/2011/05/12/oh-the-methods-youll-compose/ <comment><USER2> I like the general idea. The rhyme scheme is a bit off in places but not too bad.</comment>


Scaling Bitbucket's Database - <AUTHOR> https://bitbucket.org/blog/scaling-bitbuckets-database <comment><USER2> "Bitbucket uses PostgreSQL with one primary read-write database and N read- only replicas."

</comment><comment><USER3> I am architecting a project that is at a smaller scale but bears some resemblance, and I've already settled that I will be very careful about GET vs POST/PUT semantics and route all traffic of the former only to the replicas and all of the latter through a connection pool to the primary. That, I expect, will hold me well into >1% of their traffic.

I'm not sure if I've missed something with their LSN work or if this indicates that the GET semantics horse has already escaped their proverbial barn. Within the call-response of a single request, which they seem to be talking about, none of this should be necessary. Right?

However a cascade of narrowly-spaced follow-up requests could easily catch you in this trick. Lie. Whatever you wish to call it.

</comment><comment><USER4> Bitbucket is a perfect case for sharding. You could have one DB of users, and N DBs of user data, with the first referencing the latter, and then distribute user data among the latter. You could do this straight up with PostgreSQL without any special server-side software. You could also have a PG server using FDW to act as a proxy for all the DBs a client needs to be talking to. There are many other options too.

</comment><comment><USER5> Bitbucket (mostly via Atalassian) worked very hard to chase everyone off their platform in the vain hopes that the OSS community would start using Jira. Clearly they bet wrong, but unfortunately they aren't going to get any users back for a very long time.

<comment><USER6> Free private repos is a real upside.

Central login where you can never understand what login you are using and what information they are collecting, nor on which website you are not whether you've suddenly integrated Confluence into a Bitbucket instance, is a real downside. God I hate SSO'ed companies, they went all the way of Google into Youtube.

<comment><USER7> Free private repos are an upside over ... Github, which gives free accounts unlimited private repos? Gitlab, which does the same?

<comment><USER8> To be fair, Github only added that recently.

</comment></comment></comment></comment><comment><USER9> Does storing the LSNs in Redis and Elasticache create the same race condition they are trying to avoid or am I missing something?

</comment><comment><USER10> Yea I'm not taking advice from a service that's down once a week

<comment><USER11> Did you actually attempt to read the article or did you just come here to spew out needless negativity?

<comment><USER12> Have you ever actually used Bitbucket in production? It has absurd latencies for every operation from website to even a git push taking full seconds to respond.

It's hard to take them seriously when that's the tableau upon which they are advising us to build systems.

<comment><USER13> A number of years ago I had all of my repos on bitbucket, but recently I've pulled everything as their peering can impact large git pulls and were unreliable. The transition with the account changeover was enough to make me jump ship to github completely.

</comment></comment></comment></comment><comment><USER14> Is it just me or does looking at write logs to determine read consistency just seem like a really bad way to do this vs a different load balancing strategy?

<comment><USER15> Definitely feels like bandaid, over a more robust solution like sharding their main database by repository. Or splitting off some of their tables to another database. Their load of "millions of requests per hour", doesn't sound particularly high either.

At some point their primary is going to get overloaded again by the writes. And they'll have added all of this machinery for nothing. They've also made the replicas an essential part of their stack. Whereas their previous stack could probably tolerate a certain amount of replicas going down or replica lag. They now have a system that will grow and be dependent on all the replicas being available. Until a heavy write load or heavy table alter, causes the replicas to become lagged at which point a higher percentage of traffic will go to the master and potentially cause downtime.

<comment><USER16> Yikes. Excellent point. Is sharding the only option here? It seems like having immensely shared Postgres is one way of solving the problem, but is that the only option?

Wondering if eg cockroachDB would be a good fit

</comment></comment></comment><comment><USER17> It's amazing that Atlassian still exists.

</comment><comment><USER18> Curious that they use LSN tracking vs making the replication synchronous. I would be curious to see the performance numbers and the reasoning behind the choice.

<comment><USER19> Synchronous replication really slows down write performance and adds in the complexity of needing to determine if a replica is down. I think very few people use it in practice.

<comment><USER20> +1, sync replication also reduces availability: any replica downtime becomes write unavailability until you decide that replica is "dead" and stop replicating to it.

There's also hybrid setups of sync+async for durability reasons, sync to a single replica so that if your primary db suddenly catches fire you have a replica that's as up to date as possible, then read replicas using async replication.

</comment></comment></comment><comment><USER21> Oracle offers DML redirection for active dataguard setup where a write operation on the replica database is redirected to the primary database to allow applications that make infrequent writes to actively run on the Active Data Guard replica database. Also the write operation completes when the replica has seen the write from the primary thereby eliminating the race condition avoiding such complex reengineering

<comment><USER14> A lot of databases have a concept of consistent reads. Even DynamoDB will allow you to specify consistent reads explicitly on a query and writing through DAX will take care of the scenario as you described as the read cache is immediately updated. This a common scenario.

</comment></comment><comment> loic-sharma That's really neat! I wonder, could you store the PostgreSQL log sequence numbers in a cookie to save the round-trip to Redis?

<comment><USER22> I thought this too, but that then creates a likely unreasonable burden on the client. Not all user agents expect cookies either, think of all the varieties REST clients. Sounds like they would also need to internally reference the lsn too, so being able to look it up internally would be valuable.

Feels like there is something there tho in terms of approach, esp since they are keying it on user id.

</comment></comment><comment><USER23> I found it interesting that their cloud version of bitbucket uses Django while their self-hosted stack is almost entirely Java.

<comment><USER24> That's because they bought Bitbucket. The self hosted version was internally developed and used to be called Stash, before they rebranded.

</comment></comment><comment><USER25> Step 1: Remove Mercurial support.

</comment><comment><USER26> > we find a replica that is as up to date as the user's saved LSN

The article doesn't explain how they know the current LSN of each replica?

<comment><USER27> IIUC they need to query replicas until they find one that is up to date.

"We have to query Elasticache and replicas, which adds latency."

</comment></comment><comment><USER28> 10ms to do a redis get? What am I missing here...

<comment><USER20> They said that was their time budget, but didn't follow up with how expensive it ended up being in practice -- but agreed.

<comment><USER28> The article says they were able to keep it close to their max budget, which actually suggests that it was higher than 10ms in practice

</comment></comment></comment><comment><USER29> Still salty about them dropping mercurial support without providing any migration tools, and planning to just delete data without any archiving.

<comment><USER30> I'm also salty. What's your plan? I'm either gonna migrate to git (and use a different host), or self-host something like hetapod.net

<comment><USER31> I went to sourcehut. I am very happy, but during the process I ended up actually having to learn a bit of git. Future projects will probably be git.</comment></comment></comment>


Ask HN: Learning about developers, coding, and tech - <AUTHOR>

I just hired a new sales employee without much technical background.  Does anyone have any good links or material she should read to get an understanding of development, developers, and coding? <comment><USER2> I'm a marketing consultant with a technical lean, so I also had to learn a lot about development and coding without it being my primary responsibility. Here are some things that helped me:

1\. Learning to code. There's no better way to learn than by doing. A basic course on Codecademy should be mandatory for any marketer or salesperson working for a tech product.

2\. Reading books like "Dreaming in Code" to empathize with developers and to understand the kids of challenges they face.

3\. Read Hacker News to broaden their tech vocabulary and basic knowledge.

4\. Your product's documentation.

<comment><AUTHOR> Thank you, much appreciated!</comment></comment>


One Degree - Find a Photographer - <AUTHOR> http://www.onedegree.co

<comment><USER2> Please see the Show HN guidelines: [https://news.ycombinator.com/showhn.html](https://news.ycombinator.com/showhn.html).

To count as a Show HN, there has to be something for people to try out. When you're ready for that, come back and do a show HN then. Good luck!

<comment><AUTHOR> Hey Dang, does that mean that there has to be something other than a free App in the iTunes Store? Thank you.

<comment><USER2> Yikes, good question. Our main concern is that the Show HN thing should present something you've made that exists and works—that it be more than vaporware, a fundraiser or a landing page. I don't think that implies that it has to be free.

That said, users guard the Show HN "brand" pretty zealously. If I'm making the wrong call here, I expect they'll tell us by flagging posts that they think use "Show HN" incorrectly.

<comment><AUTHOR> Cool. Thanks for that. I wondered why my Show HN was kind of flagged by you. Is it okay if I resubmit it with the link to the iTunes Store to download the App instead of to my website?

<comment><USER2> I think the problem was that it wasn't obvious that the app exists now. "Coming Q3 2014" suggests it doesn't yet. If it does and can be tried, then sure—either a link to the store or to your website is fine.

We inevitably get some of these calls wrong and are glad to fix mistakes.

<comment><AUTHOR> Thanks Dang, and Happy 4th of July to you!</comment></comment></comment></comment></comment></comment>


You Don't Want XTS (2014) - <AUTHOR> http://sockpuppet.org/blog/2014/04/30/you-dont-want-xts/

<comment><USER2> If you're wondering why the references to penguins: [https://filippo.io/the- ecb-penguin/](https://filippo.io/the-ecb-penguin/)

</comment><comment><USER2> > You Don't Want XTS

> If you're an end-user looking for crypto advice: use Truecrypt, use > Filevault, use dm-crypt.

But aren't these all using XTS by default in most configurations? Based on the conclusions, it seems like they are using XTS in the appropriate way, but it might be better to explicitly state that, so that semi-informed users don't feel like they should change the defaults away from XTS.

</comment><comment> X-Istence Needs a (2014) tag: 30 April 2014</comment>


Five Models for Making Sense of Complex Systems - <AUTHOR> https://medium.com/@cwodtke/five-models-for-making-sense-of-complex-systems-134be897b6b3 <comment><USER2> _The central tension in the software process comes from the fact that we must go from an informally identified need that exists in-the-world to a formal model that operates in-the-computer._ \- Bruce Blum, 'Beyond Programming' (1996)

 _There are two models of reality that I find to be the most useful ones, especially when writing programs. The first is functions, and the second is sequences of states._ \- Leslie Lamport

 _You threaten my startup with patents & debt? I've chosen my models carefully. Perhaps you should have done the same._ \- @ML_Hipster

... from [https://github.com/globalcitizen/taoup](https://github.com/globalcitizen/taoup)</comment>


Large Data Leaks at Intel - <AUTHOR> https://t.me/exconfidential/590 <comment><USER2> bigger thread: [https://news.ycombinator.com/item?id=24074588](https://news.ycombinator.com/item?id=24074588)

(although it was posted here earlier)

</comment><comment><USER3> Weird that the market hasn't responded to this yet

<comment> 1-6 Intel's pain is AMD and Apple's gain.</comment></comment>


Google takes right to be forgotten battle to France's highest court - <AUTHOR> https://www.theguardian.com/technology/2016/may/19/google-right-to-be-forgotten-fight-france-highest-court <comment><USER2> If I was Google I would leave France.

When I personally ask a french man what color is blood, the answer could easily extend to over one hour. The first reply could be: whose blood ? Did you call the police ? etc...

I hope I made people giggle.</comment>


Quantum Gravity's Time Problem - <AUTHOR> http://abstractions.nautil.us/article/71/quantum-gravitys-time-problem <comment><USER2> I have a question. In string theory, what is the nature of time? Is it universal and absolute, like QM, or dynamic like relativity, or yet something else?

<comment><USER3> Normal QM is what you get when you do quantization of Newtonian Mechanics, that's why it has an absolute time.

If you quantize General Relativity instead, you'll get a variant of QM with relative times. But it's much more complex, and useless for most daily applications¹, so people don't use it often.

1 - X-ray measurements and nuclear physics are two important exceptions.

<comment><USER4> Did you mean special relativity? Or is there some limited way in which you can quantize general relativity?

<comment><USER3> Yep, I meant special relativity.

</comment></comment></comment></comment><comment><USER5> TL;DR _"I think we now understand that space-time really is just a geometrical representation of the entanglement structure of these underlying quantum systems,"_ said Mark Van Raamsdonk

I'm a bit disappointed since this article really doesn't get to much new or much substance. The emergent time/gravity idea is interesting, but this is a rehash of other recently discussed results in theoretical universes much different from ours, that are believed by a small group of physicists to be relevant... but haven't been shown to be.

<comment><USER6> The problem with all these quantum gravity theories is they cannot be proven, or falsified, by experiment.

Not the theorists fault, we'd need an LHC the circumference of the galaxy, or build a black hole in a lab, to test quantum gravity. But it means we will never know if the theory in question is actually how nature works.

<comment><USER7> > _we will never know_

We as in our lifetimes? Or we as in our species?

<comment><USER8> I am not aware of any mechanism that definitively places experiments testing theories of quantum gravity outside of our reach. We may not be able to probe Planck scale effects in the laboratory for a very long time or possibly even never, but it seems to depend a lot on the specific theory one wants to test where and at which scales deviations from current theories occur. I don't see any reasons why deviations could not occur only an order of magnitude beyond our current experimental limits and therefore be experimentally accessible in a lifetime. And even if experiments in the laboratory were currently impossible, there is always the possibility that we can gather indirect evidence by observing distant galaxies, black holes, the cosmic microwave background or something along that line.

<comment><USER6> The Planck energy is where we can be 100% certain to observe quantum gravity. There are 16 orders of magnitude between the LHC collision energies and the Planck scale. That's a humongous energy range in which to look for new physics. You could build a collider that's 10x more powerful than the LHC, but it'd be a stab in the dark, as the new physics may occur at 100x the LHC energy, or much much more.

To date there is no indirect evidence (e.g. Particle decay rates that deviate from the standard model predictions) that points to quantum gravity effects occuring below the Planck scale.

This indirect evidence is required to make a case for building a super expensive particle collider. For example, the LHC was built because we knew through indirect evidence, that it would either find the higgs boson, or new physics if the higgs wasn't found.

Without indirect evidence your experiment is a stab in the dark, which is fine, but for particle physics an insanely expensive stab in the dark.

Regarding astronomical evidence, it can give hints on quantum phenomena, but can't shed much light on their cause. For instance, we know dark matter exists via astronomy, but it can't tell us what the stuff actually is, we need laboratory evidence for that, I.e. Produce it in a collider, measure its mass, spin, other quantum properties, and how it interacts with other particles.

</comment></comment></comment></comment></comment><comment><USER9> Greetings.

The worldsheet is time-symmetric, otherwise, if you pulled a single point of the worldsheet, the point would remain, and no elastic resistance would occur. If we presume that elastic resistance occurs, then we assume any pulled point will restore to elastic equilibrium with the aggregate elastic potential of the entire worldsheet, and thus, time symmetry IS the zero aggregate elastic equilibrium of a worldsheet.

We are not talking about zero UNIFORM elastic equilibrium, in which each point is at zero elasticity between all other points in a worldsheet. We are talking about zero aggergate elastic equilibrium between all other points in a worldsheet, thus, we are presuming the elastic resistance between all points on a worldsheet is always in flux, but eventually trends towards zero.

Eventually, this natural jiggling of the elasticity of points forms elastic folding within the worldsheet itself. Most of these folds revert back to zero aggregate elasticity, but sometimes, these structures hold because while they have odd topography, they achieve elastic equilibrium with the rest of the worldsheet because of their odd topography. This is because of the distribution of tension within the topology. Because it is at elastic equilibrium, the topology remains. Eventually, more topologies appear and eventually, some even interlock with each other like worldsheet velcro.

If the elastic equilibrium of these topological structures is pulled beyond its internal tension balance, each of these "tension contracts" will be pulled apart in favor of the dominant tension. Despite these topologies being made of time symmetric worldsheets, the topologies themselves are time asymmetric and cannot be made again by simply reserving the elasticity as the worldsheet still remains at zero aggregate elasticity, and thus, preserves its time symmetry AS A WHOLE. This is how arrows of time can arise from time symmetric universes.

From here, these tension contracts combine with each other, forming either a velcro binding or a tension binding, where one topology correctly scales the flow of tension to its neighbors, increasing its tensile strength, and thus, extending its influence upon the rest of the worldsheet. This, I believe, is the foundation behind Higgs fields.

The key take away is that every particle in the entire universe is nothing more than complicated folds of a two-dimensional conformal field theory coupled to symmetric time. Nothing rests on the worldsheet or exists beyond it. All energy and matter is made up of a complex combination of elastic equilibrium. Gravity, then, is the resolution of elastic equilibrium between two tension contracts. To prove this, we simply have to envision a blackhole as being anchored upon the universe at the very edge of the event horizon because that is where the rest of the worldsheet has achieved elastic equilibrium with the blackhole.

This is why negative energy does not appear in the wild. EVERYTHING is already made up of "negative" energy.

<comment><USER10> Time cube is leaking...

[http://timecube.2enp.com/](http://timecube.2enp.com/)

<comment><USER11> Wow, this is fascinating. It is totally incoherent, yet interspersed with brief moments of consistent clarity.</comment></comment></comment>


Ask HN: What's the state of the job market in data science and machine learning? - <AUTHOR> 	If one were to use Hacker News as their only source of information, it would seem that machine learning is a very overrated topic. There is something related to it on HN's front page almost every day. This proliferation of courses, resources, books and startups would hint that machine learning is becoming more and more accessible to the average programmer and that the market is on track to getting saturated quickly. Is this the current trend? If yes, is it limited to the US? What about the machine learning scene in Europe? Maybe someone here could provide some perspective. <comment><USER2> Speaking for NYC, but I imagine silicon valley is similar.

The supply-demand dynamics have changed a lot in the last couple years. I'd roughly break it out into two groups: people with work experience + strong software development skills, and those without. The first group is in higher demand than ever, and tend to add a lot of value to companies that really need it.

The second group has gotten extremely crowded, especially from STEM graduates - usually with a masters or phd - who have completed MOOCs or bootcamps. Supply keeps growing while demand is flat or shrinking (especially as executives get burned by "data scientists" who don't know how to help them build things of value). There's a huge crunch here; a lot of people I know in this group have been searching for jobs for months, eventually settling for a low quality job or giving up entirely :(

<comment><USER3> The problem is DS is really 2-3 different disciplines under one nebulous title. What you're describing is folks who are prototyping and productionizing models. That's definitely in short supply, but random STEM PhDs are in no way competitive for those roles unless they're coming from CS programs + have work experience in production engineering.

But that's by no means all of the DS field. There are lots of DS jobs where you're collecting and interpreting and communicating about complex data sets. An engineering mindset is occasionally helpful, but a bias towards building versus towards analyzing and writing can just as often be counter-productive. Not all problems are solved by systems; lots of problems are solved by better understanding the problem and then letting other specialists build the right solution.

The bootcamps have contributed to the problem by focusing so much on building things. The idea that you can go from an econ undergrad to being a self- sufficient member of a production ML team in 6-12 weeks is nuts. What's less nuts (and what I wish programs like Insight focused on) is taking people from having data skills in one domain and with one set of tools (e.g. logitudinal medical record data, stored in CSVs and handled in Stata) to another set of tools (billions of rows of event-based product data stored in a data warehouse, processed in R or Python). But instead the bootcamps behave like the missing skillset is the ability to make a predictive random forest model on some arbitrary data set and build an AWS web app around it. THAT job market definitely doesn't exist and is completely over-saturated.

But people who are smart communicators about data, can manipulate and make sense of massive data sets, can ask incisive questions about their data, and can use data to convince people of a complex argument are always going to have job opportunities, even if they're not production grade engineers. If that sounds like you, I'm hiring - hit me up on Twitter: @drewwww.

<comment><USER4> I was part of the Data Science team in my previous company. We mainly build models for production, but we also were responsible for generating both daily and ad hoc reports. We tried to hire someone to take over the reporting part, but we found out even that requires engineering skills. This role ended up to even more difficult to hire for because it's hard to find someone who has the engineering skills but wants to work only on reporting. Maybe if we had a dedicated data engineering team the story would be different.

<comment><USER5> That is me. A decent developer who gets data and enjoys reporting, particularly the variety of hard problems that crop up.

I am happily serving a niche market with my own company and I suspect part of the difficulty in finding the skillset is that we can just start our own thing when we find a domain that we like.

</comment></comment></comment></comment><comment><USER6> I hire machine learning engineers and data scientists. In my opinion there is a great shortage of truly qualified machine learning engineers. A lot of people are entering the market with a general knowledge of machine learning tools. These people should be considered analysts or product data scientists. When it comes to people that can build machine learning systems that work at scale, they are very rarely available for hire and often are the subject of bidding wars by multiple companies. The key difference is whether the candidate truly understands the mathematical and statistical basis of machine learning, has the programming skills to execute their ideas, and is able to write code that can be used in large scale production systems and can be leveraged by others.

<comment><USER7> > The key difference is whether the candidate truly understands the > mathematical and statistical basis of machine learning

Can you elaborate on this, and at what level? Are you talking about a PhD level of understanding of cutting edge mathematics, or do you mean understand the basics, or somewhere in between?

<comment><USER6> Somewhere in between. A simple question I use is "how do I decide whether to add a feature to a classification model?" Most candidate are fine until I bring up the topic of correlated features.

<comment><USER8> Are you hiring for finance? In Europe it still depends very much on the industry: some mean coding, some maths, some infrastructure, all want data preparation and in-depth stats. edit: other than understanding the business fundamentals, of course.

</comment></comment></comment></comment><comment><USER9> I've been working in DS role for a few years now in NYC - and I definately feel the role is more valued on the east coast over SV. SV has a focus on consumer facing applications that are in many ways fancy CRUD. DS roles have thier place but aren't the core of the business. East coast has a b2b / infobroker focus where DS is the product. Media (especially adtech), finance, government consulting are over on this coast.

I think you also need to not confuse the growing ease of machine learning tools with the role becoming more accessible. There is a wide gap between tooling and knowledge to use those tools appropriately and creatively.

And may I never write another HN comment on my cell phone again.

</comment><comment><USER10> Stack overflow salary calculator shows a significant 50% premium over Developer salaries, all other things remaining the same. [1] Even though in my opinion the tool is flawed and actually significantly underestimates (stackoverflow underpays) salaries in SV/NYC. It is still a good indicator.

The major issue is that Data Scientist is a very fuzzy term with it being applied to everyone from undergraduates with Stats degree and to those with PhDs and papers at KDD/ICML/NIPS/CVPR.

However rather than doing a Frontend or Mobile developer coding bootcamp, a data science bootcamp is likely to lead to more transferable skills in case you wish to get an MBA etc.

[1] [http://stackoverflow.com/company/salary/calculator?p=7&e=1&s...](http://stackoverflow.com/company/salary/calculator?p=7&e=1&s=2.5&l=1)

<comment><USER11> From my experience this year recruiting coming out of undergrad, for the top kids who do DS vs the top kids who do CS, the median comp is higher for DS but the highest comp packages come for CS. I wouldn't be surprised if this holds for more experienced people too.

</comment></comment><comment><USER12> Currently, Gartner analysts place ML at the "peak" of its Hype Cycle for Emerging Tech [0] with a runway of 2-5 years for mainstream adoption.

[0] [http://www.gartner.com/newsroom/id/3412017](http://www.gartner.com/newsroom/id/3412017)

<comment><USER13> that must be qualified because there are a lot of ML applications that have basically been adopted in the mainstream, like voice recognition (which is pretty good, probably in the 80-90% accuracy range and better for specialized contextual tasks). I remember driving for lyft and being able to input destination addresses by voice (2 years ago; had a Moto X where this was cutting edge) was a godsend and improved my customer service ratings.

<comment><USER14> > voice recognition ... probably in the 80-90% accuracy range

State of the art systems are far better than this. Microsoft recently published a paper with a 5.9% word error rate for conversational speech. Speech directed at computers/assistants is already in the high 90s, though I don't have a figure off the top of my head.

<comment><USER13> I gauged it off of my personal gut feeling, which includes a coefficient for "well I don't have a strong enough internet connection so I get google's spinner instead - and then it fails."

Occasionally, android gets the words right (as demonstrated by the onscreen text) and then flubs passing the correct intent because of "loss of connection", which is just about the most frustrating ML fail.

No doubt android's voice recognition is spectacular. I can prompt it in three different relatively orthogonal-sounding languages (English, French, Japanese), and it can figure out which language I'm using and usually get the transcription correct. Notably, I can't activate the italian/japanese pair and get useful results - which makes sense if you know both languages.

Google voice is horrible, however, at transcribing voicemail.

</comment></comment></comment></comment><comment><USER15> The startup I work at really favors their data scientists, though I am not one of them (I'm a frontend guy). The CEO and CTO pretty much keeps a personal eye on those guys' work.

Right now however the theme I've heard from the higher ups has been profitability, and this applies to all tech companies in general. Easy capital is gone and now companies are in the spotlight for not making profits.

So at least from my company's perspective, it's not that data science is saturated, it's that we're trying to not break the bank and hire too much.

</comment><comment><USER16> I have only anecdotal experience (I live in Warsaw, but do contracts mostly for Poland, UK and US).

General data science is in need. I can get contracts easily, I know that people looking for competent people need to wait; especially as it is a skill much harder to pick than, say, front-end web dev (unless someone starts from a highly quantitive background like physics, modelling in biology, etc). My general impression are:

\- ML (especially practical one, like logistic regression and random forest) is often integral parts of many data analyses (or at least a plus),

\- there are not as many jobs solely focused on ML; and if so, often they require some specialistic expertise,

\- and even less only for deep learning (also, for DL there is relatively high threshold for having skills at "hireable" level).

Some of my tips on how to learn data science: [http://p.migdal.pl/2016/03/15/data-science-intro-for-math- ph...](http://p.migdal.pl/2016/03/15/data-science-intro-for-math-phys- background.html) (on purpose I put the emphasis on general data exploration/analysis before machine learning).

<comment><USER17> How do you find contracts? I'm interested in doing contract data science work, but I don't know how to start finding interested potential clients.

<comment><USER16> In the last ~1.5 years it is solely people contacting me. (But I give a lot of talks, workshops, and the chain of recommendations is going.)

One day I want to write how I get started, but I am not sure which steps were essential, which - irrelevant. And many things are not ones one can replicate.

<comment><USER17> Ah, fair enough. I'd be interested in reading it, but I think that (unfortunately) you're correct that it's mostly non-replicable, at least based on my experience.

</comment></comment></comment></comment><comment><USER18> Like about everything on HN... You're either in the Silicon Valley or it doesn't apply to you.

In my opinion, you could start by defining what is a data science, a quant, or a machine learning job. Because that's not clearly defined. It means different jobs to a lot of people, jobs that are all hard to learn and absolutely NOT interchangeable.

</comment><comment><USER19> We hire applied ML/AI specialists. For me it's not just an understanding of mathematical concepts, but also being able to apply new ideas to new problems.

This depends quite a bit on critical thinking, a good fundamental ability to analyze a problem and understand its parameters, then manage the logical operations required to deliver the feature and solve the problem.

As for why I think it's on HN every day: I also like to think of an innovation pipeline happening something like this:

         [</comment><comment>---explore</comment><comment>|</comment><comment>----exploit</comment><comment>-----]
      ,->developers -> engineers/scientists -> data scientists->--,
     /</comment><comment>----<</comment><comment></comment><comment>----<</comment><comment></comment><comment></comment><comment>--<</comment><comment>----/

We're now in some sort of refinement cycle of innovation, where the current medium has been saturated on some level and there is a lot of push to mine value from the discoveries.

<comment><USER20> It seems that you made it reverse of what you wanted. As far as I understand, data scientists should start the exploration and developers should finish exploitation.

<comment><USER19> Interesting observation! Perhaps its a bidirectional graph.

I was thinking in terms of the development like this:

1\. Observation made 2\. Idea created 3\. Software/Hardware made 4\. Revenue achieved 5\. Business parameters tuned using insights 6\. Maximum profit achieved

</comment></comment></comment><comment><USER21> I'm an undergrad at a big university known for CS in Canada. The CS program here has several possible 'focuses'; 4 of 9 are related to ML/AI directly (computer vision, NLP, AI, scientific computing). 2 others require AI/ML/NN courses.

The bias might stem from the fact that we have some huge names in AI doing research here, but the data points seem clear (we say undergraduate education is slow to catch on, right?): the topic as a whole isn't overrated.

However, there seems to be a lack of understanding by people working in tech of the differences (in uses, theory, implementation) between ML, AI, NN, DL, etc. This might stem from a lack of understanding of the foundations of these topics (ex: statistics, vector calculus) or simply because we can abstract a lot of this away (ex: TensorFlow).

<comment><USER22> >or simply because we can abstract a lot of this away (ex: TensorFlow).

That would work up to the point a better abstraction tool/framework comes along. I'd never try to build a career on a single framework, because frameworks come and go.

<comment><USER21> Building a career around a framework is never a good idea. If you know your shit, it shouldn't matter what framework you're using.

Theano and TF, for example, both make similar abstractions: graphs and numerical functions on top of the same matrix library, even. I would suspect someone could move between the two fairly easily. The problem is that a programmer can use TF/Theano/etc.'s built-in gradient descent functions pulled from a tutorial with their data subbed in _instead_ of learning the details of backpropogation, end up with decent results, and claim to have a basic understanding of ML - when really, they've managed to avoid it almost completely.

<comment><USER23> _If you know your shit, it shouldn 't matter what framework you're using._

And yet, what is the incessant drumbeat of most job ads, these days - even in data science?

That's right: "N years in framework X"

<comment><USER21> I don't follow job postings for ML, but I will say this - there is inherent value in being familiar with certain frameworks when hiring for non-entry- level positions. This is particularly true for ML, where it can be very useful to know the optimizations that the libraries do/don't make behind the scenes, etc.

Should most ML job postings require n years of experience in some framework? Maybe not - but I can see why a company might see value in it.

</comment></comment></comment></comment></comment><comment><USER24> In my limited experience, there's a difference between a data scientist who can process data given data and a set of questions about it, and a data scientist who can figure out what data you need, and the questions that need to be answered.

I think making the transition from the first role to the second role comes with experience, both with the toolsets, and thinking about the problem as a whole.

<comment><USER25> > data scientist who can figure out what data you need, and the questions that > need to be answered.

Isn't that describing a statistician?

<comment><USER26> Isn't that how the joke goes? A data scientist is a statistician in California...

</comment></comment></comment><comment><USER27> I am the Chief Data Scientist of Dice.com. If you are interested in working as a junior Data Scientist, and are smart and hard working, please apply here: [http://careeropportunities.dhigroupinc.com/](http://careeropportunities.dhigroupinc.com/). The position is a telecommute role. We will absolutely consider people with no data science experience, so long as they demonstrate an aptitude for data science \ machine learning and can code.

<comment><USER27> For those with difficulties accessing the link, I apologize. I have notified HR, who maintain that aspect of the site. In the meantime, please email me your resumes to firstname.lastname@example.com

<comment><USER27> *

1 point by simonhughes22 0 minutes ago | edit | delete [-]

This links directly to the dice.com version of the posting (same position). [http://www.dice.com/jobs/detail/-/Diceinc/790523?rno=7814317...](http://www.dice.com/jobs/detail/-/Diceinc/790523?rno=7814317..). The application process via that link is smoother, or so I am told. Please note that while this position is remote, we are only looking for US citizens or Visa holders located within the US right now.

<comment><USER28> thanks

</comment></comment></comment></comment><comment><USER29> I considered a graduate program in data science, but compared to average programmer salaries, it doesn't seem like data science pays all that much (excluding data science jobs for PHD's in silicon valley). It's more interesting that programming, but seems like a _much_ tighter market with no discernible demand driving salaries up.

<comment><USER30> Interesting. I have a statistics/data science background, but personally I find programming much more satisfying.

Programming is a tool to create and synthesize. It leads to new products, companies, and solutions. Data science is analysis, not synthesis. You collect data, you interpret it, you move on to other data. Nothing gets created, which for me, is a deal breaker for job satisfaction.

<comment><USER31> The premise is often that, as a programmer, you are a part of tightly controlled agile/SCRUM team, while DS get much more independence in their jobs.

<comment><USER30> > _as a programmer, you are a part of tightly controlled agile /SCRUM team_

I see. I'm currently in a research lab, and programming is my main day-to-day activity. I have a high degree of autonomy, but have recently considered moving to a product division so I can work on something that actually gets shipped. But it doesn't sound so great, as you describe it. Maybe it's a case of the grass always looking greener on the other side.

<comment><USER31> Millions of programmers work on stuff that gets shipped and I'd say their job satisfaction isn't very high on average. Shipping is overrated; the culture of shipping as a cool thing is cultivated by company owners who want people to think that they enjoy realising company goals.

</comment></comment></comment></comment></comment><comment><USER32> I'm a designer but work for a data science company (LMI specifically). All of our data work is done in D, which I never even knew existed until I started working here.

I can't speak to anything regarding ML, but for whatever it's worth in our segment of the market we have seen a lot of competition emerge in a big way the last few years. Former academic-type firms who specialized in bespoke economy analysis reports are starting to build software around all of the data that is out there since it's never been easier to collect and normalize it. I think it's a stretch to say the market is approaching saturation for us, though.

</comment><comment><USER33> As many have said here, and as a working and apparently in-demand data scientist, I agree that the tricky part about data science is that being effective isn't a matter of just any one thing. You have to be a unicorn of sorts who is, above all things, capable of solving any problem which comes your way. You have to be exceptionally flexible and very scrappy.

There are a lot of people who know more about modeling, software engineering, statistics, machine learning, analytics, and so on than I do. But I excel at bringing everything together and solving difficult business problems. It's really difficult to train someone to be this way. It takes a lot of time, experience, skills, and a unique disposition to be an effective data scientist. At least to be the kind of data scientist I am. And I'm still early in my career.

Just my two cents. I suspect there will continue to be a glut of people who, on paper, have the data science skills, but lack all the intangibles. Who knows, maybe the various programs and boot camps will start doing business scenario learning: here's a tough real world problem where we don't tell you how to solve it, but we desperately need you to figure it out. Go!

</comment><comment><USER34> Background: I currently lead a Data Science team at a big non-tech company. Previous to this I worked at a software company that had a Data Science team in their customer facing consulting group.

I'm going to speak primarily about applied data science. This means a data scientist who is solving a business need by doing ad-hoc analysis or building a reusable solution (e.g a R+Shiny dashboard) to a business problems.

Jobs: There are plenty of jobs out there, but you have to be careful. Many "Data Science" jobs are really BI, Business Analyst, or Sales Engineer types of jobs where some VP got it in their head that they need a Data Scientist. These jobs are great for people who are okay with Technology and Data Science being 10% of their job - and many people are like that. They don't care about engineering, coding, or tech and statistics beyond the minimum to do their jobs. But if you really want a job that involves solid tech and stats/ML skills you will be unsatisfied at these types of jobs.

Right now there are plenty of hard business problems that people want to turn into Data Science problems because they think it'll give them a competitive edge or something to market and show off. This results in more data science job openings. However, they are not really data science problems. As somebody else said, people will eventually realize they are not getting the value they need with data scientists doing these types of jobs. Then they'll replace that person with an MBA with some DS coursework (e.g. MBA who can use KNIME or SAS Enterprise Miner) or eliminate the position.

People: I interview people and I know people at other organizations who interview candidates for Data Science roles. MOOCs and many degree programs (including 2 year MS degrees) are pushing out people who have a very superficial overview of data science. Basically they teach them about every ML algorithm in the known universe and the functions to call them them in R/Python/SAS. The end result is a mediocre coder or non-coder who boils everything down to a confusion matrix or root mean squared error. But they cannot actually think through a business problem or see why a low error doesn't equal a good model (see [http://www.tylervigen.com/spurious- correlations](http://www.tylervigen.com/spurious-correlations))

Finding good people is hard and you have to be flexible to realize great people can come from different backgrounds.

</comment><comment><USER35> I can speak for Spain, although I sometimes get calls from other European countries. Relative to the pathetic Spanish work market data science/machine learning is doing great. I think right now there is too much hype, which is going to stay for a few years. After that I suppose it won't be a hot thing but I don't think it's going to disappear. I hope I'm mistaken and we are really seeing some AI revolution, but after all my job is putting the trust on the data, and past data says fads come and go. If that happens I will keep with me the math, the statistics, any development skills I can learn meanwhile and of course the challenge of someday achieving true AI.

</comment><comment><USER8> Worth a serious effort if you are going to use it originally in your own niche / industry, otherwise statistics will still help you more in any given market. So just learn statistics very very well and then ask again.

</comment><comment><USER36> I am currently an MIS graduate student with 3 years of SAP functional experience. After this boring stint and hearing the hype around Data Science, I decided to give it a try (Decent statistics and engineering skills but no coding expertise. I also finished MOOCs and am currently working on some small projects during the holidays). Considering average pay as a prominent factor, what is a better option - Learning extra SAP skills (HANA etc) and try for a job in SAP or diving into Data Science completely and try to start as an entry level Data Analyst.

</comment><comment><USER37> Is there a market for competent developers without professional/academic experience in data science or machine learning? Perhaps just a MOOC or some Kaggle projects?

<comment><USER38> This is what I would like to know as well. I'm a profession dev competent with handling large scale systems. I try to learn ML on my own time but that's not quite as thorough as getting a dedicated degree. I can catch up with the grad students if I put in more time but will an employer see it? Will they take a risk even if I haven't had enough projects in the belt. etc etc

</comment></comment><comment><USER39> If you're seeking work: If you want to be in demand, be the machine learning person for __________ , electric energy revenue protection, or healthcare payer fraud detection, investing, or supply chain. Pick a specialty.

If you're hiring: Get the above out of your pathetic small minds and start hiring the smartest people you can find. Look for successes in any industry. Your business isn't that unique. The best people can learn it much faster than you did.

</comment><comment><USER40> I'm in Australia.

I'm hiring 6 people in a range of roles between "pure" data scientists to more data engineer/SWE roles. The exact mix depends on who we can get.

The ability to find good people is the biggest constraint on the work we do.

Our current team ranges from applied mathematicians (as in they are Math professors) to people with traditional SWE backgrounds. Basically we are a long long way from saturated.

<comment><USER41> What is your company? I am Australian, finishing a PhD in mathematics and looking for a job.

<comment><USER40> Email me. Contact details in my profile.

</comment></comment></comment><comment><USER42> People with acquired skills are plenty and not really up to scratch most of the time. So people who have these "acquired" skills have a high likely hood of being scrapped at the CV stage.

If you're serious about machine learning - build a blog or online repository of quality work and use that to get a job instead

</comment><comment><USER43> From someone who is looking to transition to data science, the field is terrible if you haven't had an industry job before. I am ranked in the top 150 on Kaggle and can't even get phone interviews without someone in my network recommending me for a position.

<comment><USER44> Post a link to your resume. There may be some obvious problems we can diagnose.

</comment></comment><comment><USER45> There is certainly a big market for both data analysts and system builders here in Moscow. Most want a person with credentials, e.g. Yandex school of data analisys. Field is rather on fire with big companies investing a lot of money in it

</comment><comment><USER46> Off Topic: What will you advice to someone who writes code in Python(scraping, mining) and have a done of ML by wathing Udacity courses, how can I polish myself to get into position for a job?

</comment><comment><USER47> This thread is really depressing as someone currently going through a bootcamp. (dataquest) Is it more realistic to aspire for data engineering/analyst roles?

</comment><comment><USER48> I am curious about this as well. I think the difference between machine learning and software engineering is that companies may only need a few dozen machine learning engineers. They may need thousands of software engineers. There may be increasing demand, but the demand will never reach the demand of software engineering. Except at the premium ultra competitive level, where a data scientist who is globally known can have a massive impact on the companies bottom line. But we arent talking about those types of jobs.

I also believe that most traditional companies do have data scientists, but they havent really start incorporating machine learning into their products, they are analyzing information about their customers, but their products are not reliant on using data. Once that becomes more common, things will pick up.

<comment><USER21> It seems that this is true for now (for 'traditional companies').

Soon, however, one could argue that 'traditional companies' will no longer be the norm - data science, ML, etc. will play such a crucial role in the majority of tech firms that the number of companies using it will rise. That's when I expect we'll see a huge portion of software engineers knowing ML concepts. Alternatively, I wonder if we might see the rise of smaller companies contracting out all of their ML to larger ones.

I would also be curious to know if ML background helps one to get a job at a place like Amazon/Google for even 'traditional' positions right now. The amount of data they have now must drive demand for engineers who can write software that takes advantage of it, regardless of position. Of course, like you said, they'll always require engineers to fill more traditional roles with no data interaction.

<comment><USER18> You need a friend at GooMAzonSoft to refer you. It's always been and will always be the easiest way in. Then traditional uninteresting phone call and uninspired 6 hours on site with people who probably didn't read your resume.

Maybe if you have a good profile and you get lucky, you'll go interview straight for one group who's interested in you, but I wouldn't bet on that.

<comment><USER49> Referrals from your friends do little to nothing at those companies. At Microsoft, for instance, all it does is assign a "handler" to the applications you put in. They just let you know if anyone is looking at them. Which, as you can imagine, is useless.

Almost no one, except for maybe very high level hires, get a pass for the initial weed-out interviews.

<comment><USER48> Not true. I'm a run of the mill developer. I had another offer, I called google, told them I had another offer. They skipped all the rounds but the final.

<comment><USER49> They skipped screening and whiteboarding because you simply said you had another offer?

</comment></comment></comment></comment></comment></comment><comment><USER50> Machine learning PhDs >>> everything else.</comment>


What PHP needs (well, what I think it needs) - <AUTHOR> http://www.leftontheweb.com/message/What_PHP_needs_well_what_I_think_it_needs

<comment><USER2> so whats stopping them putting it on github, if the people working "near" the projects center stick it on github and let a community form/extend/grow around it, i know i'd watch that repo

</comment><comment><USER3> …it needs to be taken out behind the chemical sheds and shot.</comment>


It's Time To Stop Subsidising Mobile Phones - <AUTHOR> http://www.trustedreviews.com/editorial/2010/07/02/It-s-Time-To-Stop-Subsidising-Mobile-Phones/p1

<comment><USER2> I suspect human nature is in the way. Isn't buying a phone for "0€" equivalent to buying stuff by credit card? I hear in the US spending by credit card works to get consumers to buy all the time.

</comment><comment><USER3> I wonder if non-subsidized phones would cause the manufacturers to think harder about quality, as well.

In the US, with Sprint, AT&T, & Verizon you pay the same price for service whether or not you bring your own phone, so you may as well take the subsidized device. To a person who buys a smartphone on subsidy for $200, as far as they're concerned that's the price and they expect an equivalent amount of value.

If the subsidy were out of the equation, and you had to pay $600 for that device, wouldn't you expect more from the phone than you would if it were perceived as a cheap throwaway? It seems like that would get the manufacturers to step up their game a bit, which is good for the consumer.

<comment><USER4> Nexus 1. Has it shaken the industry?

No manufacturers are stepping up their game and google is crying uncle on the goitalone, unsubsidized model.

<comment><USER3> My take is the N1 wasn't disruptive to the carrier controlled/subsidized model because in the US, you had two separate N1 models that effectively only worked on one carrier (unless you found EDGE data service to be acceptable).

An unlocked N1 sold for the T-Mobile 3G band can't be used with full functionality on AT&T, and vice versa. You can't buy an N1 and still have the flexibility to choose a carrier who meets your needs at that particular time.

</comment></comment></comment><comment><USER5> T-Mobile does this. If you buy a N1 at full price, you get a $20/month discount on your service plan; making the total cost of the phone over 24 months the $600 that you pay initially. If you buy it subsidized for $179, then you are locked into a 24 month contract with ETF, and you end up paying $659 for the phone. (Not a terrible interest rate, but you're not "saving money" as you may think.)

</comment><comment><USER6> I will be buying an unsubsidized Factory unlocked iPhone 4. (Without paying eBay markup!) My current jailbroken 1st gen iPhone is entirely prepaid with $0.11/min calling and $0.10 for sending a text and $0.05 to receive, but I will switch to an Unlimited calling and text plan for $50/month. Mobile bandwidth is through WiFi through a Sprint 4G device, which will double as my home Internet.

<comment><USER5> _Sprint 4G device, which will double as my home Internet_

Hope you have a backup plan. Since the Evo came out, Sprint's 4G is significantly slower than their 3G, at least in the places where I use it.

<comment><USER6> Good to know. I've already been vetting the device. At home, 4G is the same speed as 3G, but with unlimited use.

</comment></comment></comment><comment><USER7> In the USA, isn't the real issue that you can indeed buy your phone unsubsidized, it's just a hassle (or impossible) to get your new phone's fancy features working on a carrier? Why would someone want to pay $700 for an iphone/android and then have half of the features not work, because they can't get a compatible plan?

<comment><USER6> Buy a mobile broadband device, and things work well. You don't get GPS, but the WiFi location is pretty darn good.

</comment></comment><comment><USER8> I look at it as a pay now or pay later sort of situation. The charge for my iPhone was low enough that I was willing to get it for $200. I wasn't willing to get it for $800. I love my iPhone but not $800 worth of love.

I might pay that back over two years but I'd rather do that than put down $800 for a phone. I'm not even sure that I will pay it back because I am getting service in exchange for staying with AT&T for two years. I feel like I end up breaking even on this deal and if I lose a little then I'll live with it. I just can't put down $800 for an iPhone when I could get an iPad 3G for that.

<comment><USER9> There seems to be some confusion on this in the linked comments too, even though the very first commenter hit the nail on the head, but:

You don't need to pay for anything, including phones, up front any longer. Credit is (too) easily available and basically guaranteed to be cheaper and more flexible if you unbundle it from the actual purchase. These disguised loans should really only be attractive to people with low incomes and terrible credit ratings, and they will be taken advantage of because they have no other options.

The fact that you seem to be repulsed by the idea of paying amount $X for a phone, but think that paying that exact same sum, plus interest, plus hidden markup is acceptable as long as it's made complicated and so hidden in plain view is mind-boggling to me.

<comment><USER10> I was looking at some phones the other day and overheard a customer who agreed to basically pay 15$ more a month for the next two years, just so that they could avoid having to pay $120 up front. That sort of thinking is strange (unless you are a cell phone carrier, in which case it is awesome).

<comment><USER11> So the answer is to extend your credit elsewhere and third the overall costs - which is fine if you have access to an easily extended line of credit.

It's not always going to be cheaper for everyone to pay up front but on the whole it does seem better.

<comment><USER10> If they are so poor that they absolutely cannot scrape together $120 then they really should be buying a $20-30 second hand phone and a pay-as-you-go plan. Committing to $30+ a month in those sort of financial situations is just a really bad idea.

</comment></comment></comment></comment></comment><comment><USER12> The issue isn't subsidies, but the fact that almost every carrier in the US and Canada refuses to lower your monthly bill when the subsidy has been paid off. Until that changes, the only sensible response is to get a new subsidized phone as often as your contract allows.

</comment><comment><USER13> It's been time for about 10 years.

</comment><comment><USER14> In India actually most people buy their phones separately -no 2-year lock-in contracts with the carrier. Even the iPhone was launched this way.

<comment><USER9> Surely someone must have studied the comparision of countries with and without this system and came to some conclusion about how it affects tariffs, the amount spent on phones, upgrade cycles etc.

<comment><USER15> I would guess such things have been studied. It is probably very hard to change an entrenched model though, so even though people might spend more money on phones and services in model A than in model B, that result might only be valid if all players switch.</comment></comment></comment>


Magnesium batteries could be safer and more efficient than lithium - <AUTHOR> https://www.engadget.com/2017/12/01/magnesium-batteries-safer-more-efficient-than-lithium/ <comment><USER2> [https://www.youtube.com/watch?v=44z88XG_esk](https://www.youtube.com/watch?v=44z88XG_esk)

Promising.

<comment><USER3> Wow, we need to improve this idea and put technology on new level. [https://blendberg.com/pl/gotowe-bazy-wedlug-miast- bytom/](https://blendberg.com/pl/gotowe-bazy-wedlug-miast-bytom/)

</comment></comment><comment><USER4> Before this technology can see wide use, I think they will need to find a solid electrolyte that doesn't use scandium. Although the mean concentration of scandium in the earth's crust is about the same as that of cobalt, concentrated ores are much rarer [0].

[0] [https://en.wikipedia.org/wiki/Scandium#Occurrence](https://en.wikipedia.org/wiki/Scandium#Occurrence)

<comment><USER5> What about Toyota's electrolyte? Mg(CB11H12)2/tetraglyme (MMC/G4)

[https://www.ncbi.nlm.nih.gov/pubmed/26013580](https://www.ncbi.nlm.nih.gov/pubmed/26013580)

</comment></comment><comment><USER6> Am I missing the end of the article? I'm on my phone and it just seems to cut off after this paragraph with no "Read More" thing.

"The researchers settled on magnesium scandium selenide spinel, which has an ion mobility comparable to electrolytes found in lithium ion batteries. The team included scientists from MIT and Argonne, who provided computing resources and experimental confirmation of the new solid electrolyte's mobility, respectively."

<comment><USER7> Because Engadget linking to Nature in their unique way.

[https://www.nature.com/articles/s41467-017-01772-1](https://www.nature.com/articles/s41467-017-01772-1)

</comment></comment><comment><USER8> We desperately need a revolution in storing energy. I have big hopes towards magnesium batteries

<comment><USER9> Honestly, we don't. Folks like Tesla/Panasonic and LGChem are only like 10-30% cost improvement away from being able to compete everywhere. And energy densities are also pretty good on well-engineered battery packs. Good enough for everything but long haul aircraft IMHO.

Evolution, not revolution.

<comment><USER8> We don't? If battery capacity was developing the same pace as CPU performance you would charge your iPhone once a year.

<comment><USER10> That's about 10 megajoules, which would make faulty battery explosions very exciting!

<comment><USER8> This is why we need a revolution not a minor improvement, I think. :)

</comment></comment></comment></comment></comment><comment><USER11> Could be, would be. I get it takes a while to bring things to mass market, but most of the time advances are overblown by news reporters and never materialize.

</comment><comment><USER12> How do I create a highly leveraged long position in scandium commodities?

<comment><USER13> figure out what publicly traded companies mine it and do a margin buy

mining companies usually trade on a multiple of the commodity in any event, so you don't even really have to do a margin buy

<comment><USER14> The problem with that is that these companies may fail for all sorts of reasons that have nothing to do with the scarcity or demand for the commodity itself.

<comment><USER15> Put together a basket of such companies and invest a bit in each, weighted by risk or perceived potential payoff, or whatever criteria you see fit

</comment></comment></comment></comment><comment><USER16> This is interesting, but it seems like sodium is the best alternative to lithium. Sure, there's a voltage trade-off, but the abundance of sodium is super compelling.

Unfortunately, I don't think humanity can count on a silver bullet to bring about an energy revolution. We'll need lead bullets: everything we can bring to bear on solving the problems.

<comment><USER4> Sea water also has plenty of magnesium. It's the scandium in the electrolyte that is likely to be the limiting resource, unless they can find another electrolyte.</comment></comment>


Ask HN: Use domain name as startup name or keep separate? - <AUTHOR>

I own a .st domain that fit with my planned name, the last 4 characters are "klst".
Would it be better for brand recognition to use the "kl.st" part in my company name and social media or use it without the "." as just "klst"?
I'm thinking it would be easier to remember/connect the name to the website, but I'm also wondering if that's a general "don't do".
It would be like the difference between registering the company as "bit.ly" vs "bitly". <comment><USER2> I won't say "it doesn't matter" because it does matter a rather great deal, but not in the way your question assumes it does. You see the thing is that effort regarding the company name and the perfect domain feel like work but they are not. Work is those things that are harder like making something people will pay for and getting them to pay for it. "What a great name" does not produce checks.

Microsoft isn't in microcomputers. AirBnB doesn't rent air-mattresses Justin wasn't on JustinTV, and Reddit.com is Reddit.com not Redd.it.

Good luck.

</comment><comment><USER3> From an SEO standpoint, having the domain name the same as social media user names is beneficial. Google will see when your domain is "yourcompany", and so is your Twitter handle, your FB user name, Intagram, etc., especially when the social media profile links back to that domain.

</comment><comment><USER4> Try letting go of what is "the best" (tm) thing to do and do what makes most sense - what delivers most value to your customer is probably a name that is easy to spell and remember after your customer has seen or heard about it.

Perhaps test it with a few, asking them to write down your domain/brand name to see if you got it or not?</comment>


I lived in Korea for 5 years. Here's what happened when I came home to Nebraska - <AUTHOR> http://theweek.com/articles/637911/lived-korea-5-years-heres-what-happened-when-came-home-nebraska <comment><USER2> This is an almost text-book example of reverse culture shock, where after living abroad you take on enough of the cultural norms, that home seems almost alien to you.

</comment><comment><USER3> I'd just like to protest the posting of articles with clickbait headlines.

<comment><USER4> ...and not mentioning N or S Korea. I hoped for some interesting insights into the North.

<comment><USER5> I think it's fair to say that if you don't specify a Korea, you mean South Korea. That's the colloquial assumption.

<comment><USER4> For tech and product, sure - there's no alternative. For travel and geography I don't think I remember a case of it not being specific. Maybe that;s a UK habit.

</comment></comment></comment></comment><comment><USER6> tl;dr

The author was away from home for so long that his new territory felt more like home.

Confused and overwhelmed at mixed feelings regarding his return, he felt homesick for the alien culture that he came to enjoy so much, while he was travelling abroad.

He was thus disappointed by the inversion of feelings he was originally expecting. He is not happy about returning to America.

<comment><USER7> This tl;dr doesn't imho really point to the core of the OC. And he did not travel - he lived there for five years.

But yeah misrepresenting seems to be working good here.</comment></comment>