Hitman hires hitman who hires hitman who hires hitman who hires hitman - <AUTHOR> https://metro.co.uk/2019/10/23/hitman-hires-hitman-hires-hitman-hires-hitman-hires-hitman-tells-police-10971438/ <comment><USER2> Exercise 2b: Hitman recursion

Given a predicate is_insulting_price, write a recursive function which determines the minimum amount for which a target may be killed without risk of the plot being exposed to the police by an individual receiving a lowball offer. The function will be passed an arbitrarily high value, and should recursively call itself with (1 - epsilon) * price whenever is_insulting_price returns false.

For bonus marks, quantify the tradeoff between error range and stack depth, the latter representing the number of people who need to know about the plot.

<comment><USER3> Great comment - I came here to brainstorm how this could be turned into an exam question and you beat me to it.

</comment></comment><comment><USER4> > _Tan, who hired the original hitman, was jailed for five years, while Xi, > the first hitman, was sentenced to three years and six months. Yang > Kangsheng and Yang Guangsheng were sentenced to three years and three > months, Mo was sentenced to three years_

5 years seems grossly insufficient for premeditated attempted murder. If the man was actually killed, I'm assuming the sentence would have been far more severe, such as 20 years. It seems ridiculous that someone can get a 75% reduction in their sentence, just because they were incompetent in their execution.

<comment><USER5> Then you're on a slippery slope of judging the intentions (which is what we are doing nowadays, but I don't think we should be). Intentions are muddy. Decisions and actions just come to us and it's later that we invent a story about how they came to be (at least that's AFAIK our current understanding of how consciousness works)

<comment><USER6> That's the whole point of a legal(criminal) judgement! The only thing that matters is your intention. Your intention is what the prosecution needs to prove and you need to defend against their accusation.

You can literally kill anyone and get away with it if the prosecution can't prove your intent has either negligence or premeditation and you were not intending to kill in a way approved by law (e.g.: did the soldier intend to kill his enemy within rules of engagement or did he intend to kill the enemy out of personal need for vengeance or hatred)

<comment><USER7> An voluntary or involuntary manslaughter conviction may be less severe a sentence, but it's hardly getting away with it.

<comment><USER8> Drive a car and there will be no penalty.

<comment><USER9> In the UK:

If you kill somebody by purposefully driving into them, even if the prosecutors can't prove whether you intended them to die or just be severely injured: Murder.

If you _try_ to kill somebody with your car but you fail: Attempted Murder.

If you were just trying to "scare" them, or if you weren't on a road at all and they died "by mistake": Manslaughter

If you inadvertently kill somebody while driving drunk: Causing Death by Careless Driving while Under the Influence of drink or drugs

If you were so very bad at driving that it should have been obvious that you might kill someone: Causing Death by Dangerous Driving or Gross Negligence Manslaughter.

If you were just bad at driving: Causing Death by Careless Driving.

Of course if your husband is an American spook you can just lie and then hurry aboard a flight home before anybody realises where you went...

</comment></comment></comment></comment></comment></comment><comment><USER10> Analogy with software development : you hire a contractor, who outsource it to a local developer, who hires a development house in India, who hires a programmer, who hires some college kids that actually do the job.

<comment><USER11> > who hires some college kids that actually do the job

Sounds about right, except that

> hitman number five was so incensed at how much the value of the contract had > fallen, that he told the target to fake his own death

the job was actually not done, but faked.

The last developer from India that my company hired (2009 or so) left us with some sub par script, which had some 500+ lines of code for some data validation that was actually never executed.

We then switched to people from the Eastern Block, and we never looked back.

<comment><USER12> *bloc

<comment><USER11> cheers

</comment></comment></comment></comment><comment><USER13> Possible morals for this story:

1\. If you want something done, do it yourself.

2\. If you pay below-market rates, you'll get below-par execution.

3\. There's much to be said for direct employment.

<comment><USER14> 4\. Don't murder people.

<comment><USER15> Hey now. We're here to discuss implementation, not pick apart product requirements!

<comment><USER16> But as he pointed out, we can implement it in next sprint as an improvement. Just put it on backlog.

<comment><USER17> you know damn well that it has been laying around in the icebox for forever and its never getting done! Im definitely bringing this up in the retro

<comment><USER18> This project will never get to the post mortem.

</comment></comment></comment></comment></comment></comment><comment><USER19> Alternative headline from "fish fish fish eat eat eat" [1,2]:

Hitman hitman hitman hitman hitman hires hires hires hires hired

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

[2] [https://jakubmarian.com/fish-fish-fish-eat-eat-eat-is-a- gram...](https://jakubmarian.com/fish-fish-fish-eat-eat-eat-is-a- grammatically-correct-sentence-in-english-with-explanation/)

<comment><USER20> You can't infinitely nest those.

Fish [that] fish eat eat [food].

That works because the second "eat" is in the present indicative. But you can't stack those. With three "eat"s, the second one needs to be followed by an object, not another verb.

That's why the buffalo sentence works: Buffalo(n) [that other] buffalo(n) buffalo(v) [themselves] buffalo(v) buffalo(n).

<comment><USER21> You can infinitely nest them.

Fish [that] fish [that] fish eat eat... eat.

You have a compound noun "fish [that] fish eat". Call that X. Then you have a larger compound noun, "fish [that] X eat". And as with the original you can tack an 'eat' on the end as those fish eat some unspecified food. Of course you can then go further and define Y as "fish that X eat", etc. It can be infinitely recursed.

<comment><USER20> It's convenient using "X" as a placeholder, because that _specifically masks_ the problem of stacking up verbs.

"Fish fish eat" is indeed a sensible noun phrase. And we can make that noun a subject of the verb eat. But "fish fish eat eat" is _not_ a noun phrase, and we can't make it the subject nor the object of a further "eat".

<comment><USER22> "fish fish eat eat" isn't a noun phrase, no. The noun phrase in question is X = "fish fish eat". Which you can embed between "fish" and "eat" to make a bigger noun phrase:

(1): X' = fish X eat ("fish that X eats")

You can continue forever by repeatedly applying equation (1) to make bigger and bigger noun phrases. Producing:

(2): X = fish fish eat

(3): X' = fish {fish fish eat} eat

(4): X'' = fish {fish {fish fish eat} eat} eat

At the end of which you can stick an "eat" on the end to make a sentence.

<comment><USER20> First of all, that wasn't the original sentence. What you've got is "fish fish fish eat eat", whereas the original was "fish fish fish eat eat _eat_ ".

It would be nice if English worked recursively like that, but it doesn't. Maybe I was wrong in focusing on the verbs; the problem is also stacking _nouns_ the way the sentence does. By splitting the object, subject, and verb so dramatically, the sentence doesn't end up making sense.

Obviously if you take it as axiomatic that this algorithm _does_ work, then you can keep claiming it's grammatical. But even the first round (fish fish fish eat eat) doesn't add up. The word "that" isn't a mere helper; there is no English sentence in which "fish fish fish" (all as nouns) _can_ make sense.

<comment><USER21> The sentence is very difficult to parse, yes, but it _is_ grammatically correct. You can make a noun phrase with an arbitrary number of repetitions of 'fish', call that F, added to F-1 repetitions of 'eat'. IE, 'fish fish fish eat eat', or 'fish fish fish fish eat eat eat'. Each of those is one big noun. You can make it as long as you want.

I'm not sure how to demonstrate this any more clearly than it already has been, but I'll try one last time. "fish that fish eat" is a compound noun. I think we agree on that. And you can shorten that to "fish fish eat", and it's still a grammatically correct noun. "fish fish eat" is a _thing_. Now you can build a sentence around that thing. For example, "The water fish fish eat swim in is cold." Right? It's easiest to parse if you say the 'fish fish eat' noun more quickly than the rest of the sentence, like, "The water fish-fish-eat swim in is cold."

Of course, we can replace the noun water there with more fish! "The fish fish fish eat swim with are small." In fact, you don't need the 'the' there. "Fish fish fish eat swim with are small," works too. As does, "Fish fish fish eat eat are also small." Note we just replaced 'swim with' with 'eat' there. Now we have actually built a larger compound noun, "Fish fish fish eat eat." Finally, we can replace the verb 'are' at the end and we get, "Fish fish fish eat eat eat," a grammatically correct sentence.

Does that help?

</comment></comment></comment></comment></comment></comment></comment><comment><USER23> Did the 5th hitman contact the police himself? Or did they find out some other way? The article is unclear about this.

Also I wonder why the 5th hitman sentence is almost as harsh as 2–4th ones.

<comment><USER24> The version I heard was that the fifth hitman contacted the victim-to-be, who agreed to fake his own death. That plan was foiled, leading to everyone in the chain getting caught. I have no idea if this is actually true, though; I think my source may have been a tumblr post.

<comment><USER25> From the article, which apparently here actually no one read:

> However, hitman number five was so incensed at how much the value of the > contract had fallen, that he told the target to fake his own death, which > eventually led to the police finding out about the plot, Beijing News > reported.

<comment><USER24> Thanks. I clicked the article but got an error. (Probably fixable by whitelisting in noscript, but I didn't feel like doing that.)

<comment><USER23> FWIW, the article works for me without enabling JS.

</comment></comment></comment></comment></comment><comment><USER26> Once the price got too low, the bottom guy could have

blackmailed the guy above

to blackmail the guy above

to blackmail the guy above

to blackmail the guy above

to blackmail the guy to make more money.

(was that too many levels?)

<comment><USER27> Blackmail is hard. Each one in the chain, decided to defraud the earlier one, because it was easier. The target pretended to go along, but as an already wealthy businessman, neither blackmail nor fraud would be appealing.

Let the whole chain go to jail, though, and the target gets to sleep better at night.

</comment></comment><comment><USER28> " Tan, who hired the original hitman, was jailed for five years, while Xi, the first hitman, was sentenced to three years and six months. Yang Kangsheng and Yang Guangsheng were sentenced to three years and three months, Mo was sentenced to three years, and Ling was sentenced to two years and seven months."

A bit funny how the sentence gets lower for every next hitman in the chain, even though technically they all commited the same offence :)

<comment><USER13> But all the last "hitman" did was con his client - and his client wanted him to _kill_ a guy. Sounds like "time served" material to me.

</comment></comment><comment><USER29> Pressing/swiping "back" on iOS/Safari loads another article but doesn't actually go back. Amazing

<comment><USER30> It's because the other article was written by the first one for half the price.

</comment></comment><comment><USER31> I'm surprised that the penalty for attempted murder in China is only 3 years in jail.

<comment><USER32> I guess the difference here is that none of them actually attempted it, maybe it was a conspiracy charge.

<comment><USER13> Whaddaya mean, none of them attempted it? Four of them hired a hitman to do it! That's not attempted murder for you? :-O

<comment><USER33> I think that would still count as just conspiracy to commit murder. Not a good thing to do by any means, but not everyone follows through on their plans, so it's a lesser crime.

An attempt likely requires an actual failed attack against the target. It's much more severe.

EDIT: On second thought, I can see how you could consider hiring a hitman as an attempted attack, since once you have agreed upon the hit, the "weapon" has in effect been "fired".

<comment><USER14> Based on watching Law and Order back in the day they seem to portray hiring a hitman as first degree murder in NY at least.

<comment><USER13> _Attempted_. Just like shooting a guy and missing is attempted murder, not murder.

</comment></comment></comment></comment></comment></comment><comment><USER34> Hitmen all the way down [1]

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

</comment><comment><USER35> many layers of middle men each taking a fat cut is an indicator of huge inefficiencies in the given sector of the market and a sign that that sector is ripe for disruption.

<comment><USER36> Your new startup is Assassination As A Service?

<comment><USER37> Uber for Murders

<comment><USER38> The self-driving division have got that covered.

</comment></comment></comment></comment><comment><USER39> Only 5 years for ordering an execution? I expected a harsher sentence in China.

<comment> _-___________-_ Generally citizens doing things against other citizens doesn't seem to be dealt with all that harshly (as opposed to citizens doing things against the state, or - worse - encouraging other citizens to do so).

I've seen domestic violence dealt with in China by putting the victim and perpetrator in a jail cell together and telling them to talk it out.

<comment><USER40> The harshest sentences are reserved for those who refuse to participate in official corruption. Citizens-on-citizens is sort of intramural.

This latter attitude is familiar in the US. When mostly black people were killing mostly other black people over drug turf wars, it was not treated very seriously. You may imagine that in China, anybody who is not a party member doesn't deserve much attention.

</comment></comment></comment><comment><USER41> I feel like if you are a hitman, you should shop around the offer first, including from the person you're supposed to hit.

So if you're planning to murder someone, you better be sure you can out-pay the other guy.

<comment><USER42> I'm not in that business but it seems that behaving like that doesn't build up a good reputation. It could get difficult to find customers, or survive vindictive prospects.

<comment><USER41> You're also leaving a lot of money on the table.

</comment></comment></comment><comment><USER43> OT: look at the chairs in the back area of the court in the second photo, where spectators would sit.

That is way fancier than I've seen in US courts. In US courts, it is usually just plain benches. I have seen pictures of US courts with chairs, but the kind of chairs you'd expect to find in a doctor or dentist waiting room-- adequate but not something you'd want to sit in for a long time.

Those chairs in the Chinese court actually look comfortable. Is this normal in Chinese courts?

<comment><USER44> The interior decoration in Chinese courts seems to vary. I found one that looks like it has benches: [http://www.hbjc.gov.cn/ssjd/201709/W020170901659907496686.jp...](http://www.hbjc.gov.cn/ssjd/201709/W020170901659907496686.jpg)

If you want to see more examples, try this image search: [https://duckduckgo.com/?q=%E5%AE%A3%E5%88%A4%E7%8E%B0%E5%9C%...](https://duckduckgo.com/?q=%E5%AE%A3%E5%88%A4%E7%8E%B0%E5%9C%BA+site%3Agov.cn&t=fpas&iar=images&ia=images)

宣判现场 means the place where the verdict is announced. It's possible they use fancier court rooms when a larger audience is expected.

</comment></comment><comment><USER45> I was most amazed by the short prison terms for what would, in the US, be the capital criminal solicitation of murder.

Here is the definition in Texas law (15.03) [https://statutes.capitol.texas.gov/docs/PE/htm/PE.15.htm](https://statutes.capitol.texas.gov/docs/PE/htm/PE.15.htm)

And the definition of murder in Texas is section 19 [https://statutes.capitol.texas.gov/Docs/PE/htm/PE.19.htm](https://statutes.capitol.texas.gov/Docs/PE/htm/PE.19.htm)

I am having trouble finding the sentencing guidelines for this crime, but I am quite certain it is analogous to a conspiracy to commit capital murder in the first degree and treated, and as such is punished similarly to capital murder.

</comment><comment><USER46> This would make a good film.

<comment><USER47> "Snatch" is close to that.

<comment><USER48> And to quote from Snatch:

> You should never underestimate the predictability of stupidity.

Such a fun film.

<comment><USER49> "So the biblical scholars mis-translated the Hebrew word for "young woman" into the Greek word for "virgin".

</comment></comment></comment></comment><comment><USER50> Sounds like someone's been reading The 4-Hour Workweek.

</comment><comment><USER51> Sounds like an opportunity for the gig economy.

<comment><USER52> Killr: it's like Uber for hitmen!

</comment></comment><comment><USER53> This is like the crime version of those "software contractors" who farm the actual work out to an offshore team.

</comment><comment><USER54>
      The contract finally came to the fifth hitman, Ling Xiansi, who eventually told the police. ... Ling was sentenced to two years and seven months.

Ling told the police but then was still sentenced to 2+ years in prison. Maybe the 'moral' here is to just pass on the contract as no good deed goes unpunished.

<comment><USER55> That seems like a very light sentence for someone who told the police that they commit murders for a living.

<comment><USER54> People usually get convicted for actually doing something. From the facts of the FA, Ling didn't. He was just an informer.

<comment><USER55> He contracted with someone to commit a murder. That's doing something. This makes him part of a conspiracy to commit murder.

The article doesn't specify what Ling was sentenced for. I assume it's for this conspiracy, but it may have been for other crimes the police learned about after Ling admitted to being a career criminal (unless this was their first contract). If you tell the police you're a murderer, they'll likely try to get you for it.

<comment><USER54> It's not clear that he committed to a contract or was offered a contract. Generally, the elements of a contract are: offer, acceptance, consideration, mutuality of obligation, competency and capacity. We don't know.

Conspiracy is easier: two or more people agree to commit an illegal act and take some step toward its completion. But I don't think if Joe asks me to kill Bob for $100 and I say sure but then go to the police that I've actually agreed to kill Bob.

The article is very light on details and certainly doesn't mention what the charges were for Ling. Also, this is China with a different legal system.

<comment><USER55> Given that the article is light on details, why are you assuming that Ling was just an informer and did nothing wrong? The details we do have indicate that Ling did enough wrong to warrant a sentence of 2 years and 7 months.

</comment></comment></comment></comment></comment></comment><comment><USER56> We all did that, didn't we.

I once worked for a subcontractor who received contracts from a Ukrainian company who received contracts from a foreign company that was sitting in a shiny skyscraper (the tallest in Europe) and branding itself as a top class agency, charging outrageous fees from top of the top level customers

</comment><comment><USER57> Microservices in action.

</comment><comment><USER58> In this case it didn't work (rubber hose?) but the longer the chain the less likely you are to be exposed. The original hitman can testify that YOU paid him to kill John. The fifth hitman can only offer hearsay, that he heard from the fourth hitman that the third has said that the... ;)

</comment><comment><USER59> That's what happens when relying on subcontractors to do your work. The almost-victim was really lucky.

</comment><comment><USER60> That's a very Chinese story in a way and reminded me of the movie "Crazy Stone" [1]

[1] [https://m.imdb.com/title/tt0843270/](https://m.imdb.com/title/tt0843270/)

</comment><comment><USER61> There was a story by Lem where a Machine built to solve a problem requested more parts, with which it built another machine to solve the problem, which...

I don't remember how it ended.

<comment><USER62> It hasn't yet.

</comment></comment><comment><USER63> Somewhere out there a person was inspired by these threads; seeing an inefficient market they started prototyping an "Uber for Assassination".

<comment><USER64> It was called "Silk Road".

<comment><USER65> As I understand it [1] the guy who founded Silk Road paid $$$ to have six people killed, and none of them got killed.

If you think that's Uber for Assassins, you must have had some shitty Uber journeys!

[1] [https://www.theguardian.com/technology/2013/nov/21/silk- road...](https://www.theguardian.com/technology/2013/nov/21/silk-road-founder- held-without-bail)

<comment><USER64> Hey, nobody said it would actually _work_ ! :p

</comment></comment></comment></comment><comment><USER66> Moral of the story - don't outsource your work?

<comment><USER67> Or better yet keep the outsource chain going until you find the guy with an ounce of moral fibre

</comment></comment><comment><USER68> The last hitman should have hired the first hitman.

</comment><comment><USER69> Why did the 5th hitman take that crap deal? He could have said no. Obviously he had "sell my lethal services for an exceedingly low sum" remorse or something like that..

Just say no and force the 4th hitman to follow through. Unlikely any other assassin would have taken that bad deal. Obviously glad he did and it worked out that no one was murdered, but still, he could have said no.

<comment><USER70> Because those are not hitman but scammers. Take some buck and doing nothing is not a bad deal, if ignoring the risk.

</comment></comment><comment><USER71> Is this what they mean by "chain of custody?"

</comment><comment><USER72> Trickle-down (aka Supply-side) economics...

[https://en.wikipedia.org/wiki/Trickle- down_economics](https://en.wikipedia.org/wiki/Trickle-down_economics)

<g>

</comment><comment><USER73> [https://en.m.wikipedia.org/wiki/Race_to_the_bottom](https://en.m.wikipedia.org/wiki/Race_to_the_bottom)

</comment><comment><USER74> Sub-contractors.

</comment><comment><USER75> Is this kind of hitmiddlemanning common?

</comment><comment><USER76> How is this not a Guy Ritchie movie?

<comment><USER77> Because it's already the sub-plot of an episode of Nicholas Winding Refn's Too Old to Die Young?

Episode 6:

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

</comment></comment><comment><USER78> If I was getting 50% of 50% of 50% of 50% of 50% of the going rate to conduct a job - I wouldn't do it either.

<comment><USER79> I could easily imagine a company getting paid 32× the salary of a 10× engineer.

Plenty of people do accept 1/32 of their output value (and plenty of people don't know the value of their output). I think you are just saying you don't deliver much value (presuming you are on a salary).

I know consultants that have been paid $x and have delivered value of 100 times x. When you work on a 100 million dollar project, and you do something to save 10 million, it is difficult to capture 1 million of that saving as a consultant or employee.

(Rule of thumb: if you are a 1× engineer, you should be delivering value at least 2× your cost of salary).

</comment></comment><comment><USER80> why is this tech news?!

</comment><comment><USER81> Tldr: when unpacking recursive hitman contracts, the base case is 5.

</comment><comment><USER82> Lets not use code blocks for quotes, it makes a side-scrolling box. Just italics or sideways carrot is fine.

<comment><USER83> > sideways carrot

First time I've heard that name for the angle bracket.

<comment><USER84> You mean greater-than sign. :-)

[https://en.wikipedia.org/wiki/Greater- than_sign](https://en.wikipedia.org/wiki/Greater-than_sign)

(I checked the source, it's a > And now I've used up my pedantic quota for the day.)

<comment><USER85> Half a stream extraction operator :)

<comment><USER83> Left-facing crocodile

<comment><USER86> 270 degree mountain.

<comment><USER87> Fallen birthday hat.

Okay, but seriously, Unicode has that listed as "greater than sign," and has several similar characters.

        U+003E  >   greater-than sign
        U+203A  ›   single right-pointing angle quotation mark
        U+232A  〉  right-pointing angle bracket
        U+27E9  ⟩   mathematical right angle bracket
        U+3009  〉  right angle bracket

[http://unicode.org/charts/PDF/U0000.pdf](http://unicode.org/charts/PDF/U0000.pdf)

<comment><USER88> Lopsided equals sign

<comment><USER89> right chevron / right arrow

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER90> police police police police police police police police.

<comment><USER91> Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo

<comment><USER90> my point exactly, but I still got downvoted.

<comment><USER91> Same here. Worth it though

</comment></comment></comment></comment><comment><USER92> Sometimes this is called globalisation.

</comment><comment><USER93> off topic, but that side story: [https://metro.co.uk/2019/10/25/teenager- terribly-burned-todd...](https://metro.co.uk/2019/10/25/teenager-terribly- burned-toddler-hopes-pioneering-surgery-help-see-10983107/)

god sometimes when you think you have it rough.... the strength some people have in life is amazing.

<comment><USER94> I clicked through a few of the Metro "crime" links - dear god, what an horrific world we live in.

I really would like a newspaper that had some kind of "sense of perspective" meter - where reading an article of "woman starved and mutilates her own child" also puts down "we estimate this sort of thing happens in one out of 100,000 households - and is out weighted by parents who gave up drugs to look after children in 1 out of 30,000 households

But a daily diet of that shit unbalanced would certainly drive your world view and politics to demand "something must be done".</comment></comment>


Social engineering at its best or "How to Get Into Any Club" - <AUTHOR> http://www.5min.com/Video/How-to-Get-Into-Any-Club-14234755 <comment><USER2> so they spend who knows how much on a four-letter domain and then require a newer version of flash than every other video site on the internet? Brilliant.</comment>


Walmart making changes to bridge the income equality gap - <AUTHOR> https://work.qz.com/1094309/walmart-yes-walmart-is-making-changes-that-could-help-reduce-income-inequality-in-america/ <comment><AUTHOR> The final paragraph of this piece sums up the challenge Walmart is facing with this change:

"If you look at Walmart, over its 50 year existence, they've always prided themselves on saying our employees are going to be the lowest paid," says Schlademan. "Now they've changed their business model."

While Walmart's stock hasn't returned to its pre-2015 heyday, things are looking up for the world's largest retailer. If I were in the Digital leadership team, I would push for a partnership with Google Home to compete with the Alexa-enabled retail channel that Amazon has established, sans much fanfare (my opinion). As of last week, Google announced a partnership with Target, but Walmart (and Jet.com) have the more optimized supply chain and better prices. Maybe Google could negotiate a better deal with Target, which would be why they went with them vs. Walmart.

Amazon is practically giving Alexa devices away in a manner reminiscent of how Gillette gave their razors away. Alexa plus Amazon getting into every retail segment plus Amazon branded items plus FBA plus Prime plus ... is a multi- prong approach that will require a number of companies to band together to counter. From my vantage point, no one company can compete against this Goliath / Ser Gregor alone.</comment>


This is what you sound like when refusing to address technical debt - <AUTHOR> https://twitter.com/Carnage4Life/status/585458646680670208 <comment><USER2> Is "technical debt" not just "things you haven't done yet"? Or code for "hey client, you'll have to pay us for x more months"?

<comment><USER3> It's poor decisions early in the project that make it harder and harder to add features and fix bugs reliably and quickly. And, like debt, it has a compounding effect upon the rest of the project.

<comment><USER4> I wouldn't say it's necessarily "poor" decisions, though it often is.

To extend the metaphor in the cartoon, maybe you had three minutes to produce a demo cart and close the sale, and that was enough time to put holes in some square tiles, but not to machine round wheels. In that case it's not a technically _good_ choice to use square wheels, but it is arguably a prudent one.

<comment><AUTHOR> Indeed, technical debt can be there for whatever reason.

It could be that idiot coder who caused a lot of damage in the code before someone finally checked what he did.

It could concern old code created by otherwise sensible programmers at a time when it just wasn't clear how something should work.

It could be a matter of something that was once a good pattern, but by the introduction of something newer has become technical debt (although you mostly would call this just "old code").

And indeed, sometimes you have to hack something in because there's this customer of manager who DEMANDS that something happens NOW.

In general technical debt is basically bad code that when left unfixed will do more damage over time and will often end up costing you more than the times it takes to just fix it.

<comment><USER5> "I want results, not excuses!" "I am paying you for stuff that works, not fancy acronyms!" "Let's do it the way that works today and we can sort out the exceptions Tomorrow™"

</comment></comment></comment></comment></comment><comment><USER6> Funny. Also interesting the degree to which us programmers are obsessed with this. Not technical debt itself, but technical debt the metaphor.

There seems to be an unlimited supply of blog posts outlining the finer points of the metaphor like who is the bank, which project management concept correlates to your credit rating, and so on.

<comment><USER7> Sysadmins too. I think it's because we're desperately seeking out the argument that will _convince them to commit resources to clearing it down a bit_.

I have a rant I'm trying to anonymise about people who are natural-born tech debt generators, all unaware.</comment></comment>


Ask HN: How is the Portland web dev/startup scene? - <AUTHOR>

I've been freelancing in Austin (doing mostly PHP and Python web development) for about 5 years now. After living in Texas my whole life (now 30), my wife and I are interested in relocating.<p>We visited Portland in March (to experience the rain) and it seemed like our kinda place. However, I don't know much about the web dev community over there. Are there many companies hiring? Startups? Agencies? Are interviews similar to Silicon Valley with lots of algorithms/data structures questions? I figure salary is similar to what you would get in Austin, but I always hear bad things about the job market in Portland, such as don't consider moving unless you already have a job lined up. Either way, I will probably sublet a room in late June/July to check it out. Anyone have the inside scoop? <comment><USER2> My wife and I also moved to Portland from Austin, so I have a bit of insight on this. First, let me point out that while the job market in general in Portland is still a bit sluggish, the tech job market seems relatively lively. I don't know any experienced, talented software developers who have been out of work for long. I know a number of them who are freelancing successfully, even, so that's possible here, but I would suggest that before you have built up a local network, it's likely not the best idea. If you are planning to visit here, I would search out the user groups and various technical "networking" groups ahead of time and get in touch. Sign up for their mailing lists, plan to attend as many meetings as you can while you're here and ask direct questions about the "scene."

As for interviews and salaries... salaries, at least in the areas I've paid attention to, are generally slightly higher than Austin (offset marginally by a very slightly higher cost of living here) but lower, in general, than you'd find in the bay area. Interviews are across the board as they are anywhere. Your best bet to find out what to expect for interviews is to find someone who works for the company and try to befriend them or at least get their opinion. These same rules really apply anywhere, honestly, so I hope I'm not telling you anything new.

As someone else mentioned, there are a lot of media/SEO related companies here, but there are also some interesting startups and more established companies in other areas, as well. As with my suggestion above, the best way to find out about the different companies is to talk to people who work there. Users group and (the old fashioned variety of) social networking are really your best opportunity to find out more about them.

Also, as with Austin, I've found that the people who do best in this community are the ones who are not afraid to cross bridges (sorry, slight pun on one of Portland's nicknames). That is, explore communities that maybe aren't directly in your area of experience. Whether that's the data visualization group, beer and blog (which isn't really all that much about blogging), or some group for a language you just barely even understand, give it a try and see who you meet. Chances are you'll start to see some of the same people around town. Seek these people out and get to know them -- they will be your best resource. If you're really determined to do well, get involved in organizing and planning of different events and groups. Before you know it, jobs will be coming to you.

<comment><AUTHOR> Thank you very much. I appreciate the detailed response. Your tips and description are similar to what I expected and in line with how I would approach such a move. It's good to hear it from someone who actually lives there (that isn't a random city-data or Yelp poster looking for a minimum wage job).

<comment><USER2> Glad to help. I hope the plans work out and that you find Portland to your liking. The only thing I miss from Austin (besides some of the food -- we have great food here, too, mind you, it's just different -- and my friends and family) is having a top rate university in the area. PSU is decent and there are some good smaller schools around (obviously Reed is great), but the number of world-class lectures that UT had, which were generally open to the public, was astounding. But it's a small price to pay for livability. Enjoy the change in scenery!

</comment></comment></comment><comment><USER3> As far as gigs/jobs, check out:

<http://siliconflorist.com/jobs/>

Salaries are on the lower end, but so is cost of living here. Lightbox to avoid SAD not included.

The Portland Seed Fund is launching this summer, which might bring some sexiness to the startup scene. COLORlovers just got 1mil and so did ShopIgnitor a few months back. So there is some action here for sure.

Portland is a big digital media agency town. Webtrends is here and lots of SEO/online marketing shops. GetClicky is here as well (go analytics!).

Not sure about interview questions.

I just hired a PHP dev strait from school at 50K/year. Hope that helps. Good luck.

<comment><USER4> Is 50K/year typical for a development position in Portland? Seems a little on the low side.

<comment><USER5> If comparing to Bay Area salaries, keep in mind there's a pretty big difference in cost-of-living. According to this cost-of-living-calculator:

[http://www.bankrate.com/calculators/savings/moving-cost- of-l...](http://www.bankrate.com/calculators/savings/moving-cost-of-living- calculator.aspx)

       $50K Portland
      =$74K San Francisco

</comment></comment></comment><comment><USER6> COLOURlovers is hiring.

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

</comment><comment><USER7> If you idle on freenode, hanging out in #pdxwebdev and #pdxhackathon is a good way to meet some developers here in Portland.</comment>


Ask HN: Did I make a MacBook Pro buying mistake? - <AUTHOR>

I am doing C++, iOS, Web, OpenGL, etc
Currently I have a:
- Early 2011 13 inch MacBook Pro - 2.3ghz Core i5 - 16gb DDR3 - 2 x 750gb striped (removed superdrive)
Machine works great. My only real complaint is that when using the iOS Simulator I have to scale to 75% to test at 1024 x 768 and I have to scale further to test retina apps.
So I went and bought a new:
- 15 inch MacBook Pro - 2.3gz quad core i7 - Going to put in 16gb (from the 13 MBP) - Going to remove the superdrive and put in the 2 x 750gb from the 13 MBP. - I know this model has dedicated video - better resolution that the 13 MBP
So this was about $1850 out the door. I can sell my 13 MBP with 2 x 500 (I have these) and the 4gb from the 15 inch and probably recoupe $850.
So out of pocket $1000.
Did I make a worthwhile purchase or should I take it back and do something different? <comment><USER2> If you are earning money from this line of work, you owe it to yourself to buy a proper device. In fact, you owe it to yourself anyway - the iOS simulator is terrible. The performance is hilariously unrepresentative, the touch simulation woefully limited, and you can't even play any games on it.

So, instead of spending all this money on this fancy new Macbook Pro, why not just buy an iPad? For the money you've spent, you could have bought an iPad 4 AND an iPod Touch 5G AND an iPod Touch 4G, and you'd still have change for the bus home. Probably even a taxi back, in fact.

Your new collection would cover every possible aspect ratio and resolution of the devices that your customers are likely to have, and do a good job of covering the performance bases as well.

<comment><USER3> Totally agree with this. My father is a carpenter and he taught me not to skimp on tools. I paid 3k for one of my MBPs in 2009 and it's still kicking. That laptop has paid for itself well over 100 times since then.

<comment><AUTHOR> so would you keep the MBP 15 from the MBP 13 or return it and buy devices for teting on real hardware?

<comment><USER3> Well I'd have gone with a retina version of the MBP at this point but I understand why you did not given your HD space needs. In your situation if I was happy with the 13" inch aside from the simulator issue I'd probably make sure I had a retina ipad to test on first so I'd just return the MBP and go that way.

Next I'd probably also buy a 27" thunderbolt. I have one at work and don't have one at home and it's kind of killing me - in a privileged first world problems kind of way... I like to close my laptop and just use the large display so I can have both Xcode and any reference material I want on the same display without needing to move my head to look at the laptop.

</comment></comment></comment></comment><comment><USER3> I think you forgot the solid state drive. Honestly I would have just paid up for a large external monitor and a solid state drive for the 13" MBP. Xcode is sooo much nicer with a lot of RAM (check) and a solid state drive but maybe you are getting enough performance boost from the striped drives. I doubt it though.

EDIT: Also, I hardly ever use the retina simulators since they get in the way and you really need the device to get a good feel for how an apps feels so I just test on actual devices so you could spend the $1k on those instead too. All that said the 15" MBP is a solid machine. I have two.

</comment><comment><USER4> I'd have gotten a SSD if I were you but otherwise it's perfectly sensible.

<comment><USER5> SSD is mandatory: <https://news.ycombinator.com/item?id=5585411>

Mine is very slow with a 5400 RPM drive.

<comment><AUTHOR> These 2 x 750 I have are 7200 rpm.</comment></comment></comment>


Be careful what you put in an email - <AUTHOR> https://om.wordpress.com/2011/11/29/be-careful-what-you-put-in-an-email/

<comment><USER2> This seems to be more about Groovesharks' business model than emails.

They appear to be respectable businesses, and have mounted a successful propaganda campaign regarding paying them for music, but let's not shed a tear for the major labels. They steal far, far more from musicians than 'piracy' ever has. Even beyond the way they rope musicians into highly unfavorable contracts, they often don't even fulfill the contracts. Every major label has failed to pay up to hundreds of millions owed for radio plays and licensing, from all levels of musicians. All in all, they're about as respectable and deserving as your average street pimp. Good for Grooveshark. Someone needs to shake up that industry.

<comment><USER3> "Even beyond the way they rope musicians into highly unfavorable contracts, they often don't even fulfill the contracts."

VC firms do the same thing. So why are they so respected on HN?

<comment><USER4> They're respected for the same reason bands respect labels. It's because often times the only way to make it big, really big, is to be a sellout and get in bed with a label/VC. Businesses need funding like bands and supporting yourself is a bitch so why not sell out and get a free ride?

So we read up on business news and learn how the VCs think so that one day a few of us will get "signed" and hopefully make it big. We all know it can be a kind of predatory relationship but at the same time entrepreneurs are all about taking that one big risk that pays off in the end. So startups, like bands, try to get VC backing in the hope that they won't become yet another company that was chewed up and spit by the VCs and instead becomes the next Google/Facebook/CoolestCompanyEverCo.

So are they really respected? Kinda. Depends who you are. Much of that perceived respect is akin to research so we can get in bed with them. Kind of like books on how to easily bed women except we read it right from the horse's mouth.

<comment><USER5> Y Combinator is to VCs as _____ is to record labels.

The people who can fill in that blank will be very rich someday.

<comment><USER6> Not that rich. The music industry is very small by gross profits. It's mentioned often here that Apple, Goog, and Microsoft have enough cash hand to each buy a majority of it.

<comment><USER5> Sure sounds like an interesting project, though. There's tons of room for bands to grow beyond just iTunes et al.

</comment></comment></comment></comment></comment></comment><comment><USER7> Seems to me that behaving ethically would solve a lot of problems (or at least not cause them in the first place).

This guy pretty much just wrote the lawsuit for his opposition.

</comment><comment><USER8> I would argue "be careful whom you send emails to" as well. While drivingmenuts' comment about behaving ethically might apply in this case, sometimes you might think you're behaving ethically and it's only later than you realize that, while operating in good faith, you inadvertently broke some law (patents and copyrights are a minefield).

I prefer not to correspond with the type of person who would take advantage of this by releasing or publishing my emails. Sometimes it's unavoidable, but less often than you might think.

<comment><USER9> Do you delete all your e-mails or do you leave your work e-mails on your work machine? If you don't delete them, then your e-mail archives could be used against your company. An e-mail that goes out to more than one person is virtually guaranteed to be around years later where it might haunt you.

<comment><USER10> I worked at an investment banking company in the 1990s. They did not have email when I started, but when they adopted Exchange and everyone got a Windows PC and MS Office, the CIO set a policy that emails would be retained for 6 months, then purged. I don't know if this would fly today, but I think the fact that it was a blanket policy and not based on the content of the messages made it OK at least at that time.

<comment><USER11> > I think the fact that it was a blanket policy and not based on the content > of the messages made it OK at least at that time.

Nope. If discovery has started, you have to retain even if you otherwise would have discarded.

That's in addition to any specific statutory requirements wrt the document's content.

<comment><USER12> I think the implication was that the policy was in place for when they _weren't_ being sued, so that if they _were_ sued, they could be completely reasonable in saying they only had 6 months worth of e-mails to provide for discovery.

</comment></comment></comment></comment></comment><comment><USER13> Off topic, but why does the text on this website look so awful in Chrome 15 in Win7 64? There are actually gaps in the letters. It looks awful in a different way in Firefox 8 - clumpy letters with awkwardly variable line width.

 _Update to clarify that it's the text that looks weird_

<comment><USER14> Yeah, those are terrible letter shapes. It happens in IE8 on Windows XP for me too.

</comment></comment><comment><USER15> "Rude reminder that one needs to be very careful when sending emails"...when one is a shady-ass character up to some shady-ass shit.

This is less of a business plan than it is a hedge fund betting on one side of a race condition. The bet is that user growth will outpace successful litigation against the investment.

It would be less ethically problematic if they were doing the piracy themselves instead of croudsourcing it.

</comment><comment><USER16> That seems almost intentionally damning. Why would he put that in writing? This is disappointing because I really like grooveshark's service.

<comment><USER17> Things tend to look like that when you take the most damning possible statement out of tens of thousands of documents that you received in discovery!

<comment><USER18> That's the problem. When these statements come up in court documents, they are never put in context. You're just left up on the stand mumbling about how everyone else is misinterpreting your words.

<comment><USER12> What context do you think might explain this away, given the content?

<comment><USER19> What if, right before he wrote that, he said "here's me pretending to be the evil guy the music execs think I am."

:-)

</comment></comment></comment></comment></comment><comment><USER20> This wasn't really a secret, many people in the phonographic industry (including some at the record labels themselves) knew or suspected for quite a while that Grooveshark's business plan was something like this.

</comment><comment><USER21> Can anyone explain exactly why this is sinister? If the label is aware of the price they're selling the license at and buying the data, where is the unfair deception?

<comment><USER22> They weren't licensing anything. They were relying on DMCA safe harbor provisions to protect them from infringement suits. The problem is that the executive e-mail indicates plain as day that they were ineligible for that safe harbor in at least two ways: they knew of and were profiting from infringement.

Who could have guessed that basing a business on copyright infringement might get you sued for copyright infringement?

<comment><USER23> The email says "we use the label's songs", "the data we got from them", "we pay them".

This suggests they were getting the label's data from the label and paying the label.

That seems like a license to me.

<comment><USER22> The e-mail implies that their plan was to knowingly infringe for months/years _before_ negotiating a license.

They could then use the data gained from (infringing) streaming/uploads as a bargaining chip while negotiating the license.

<comment><USER23> I think the email is ambiguously worded.

I read it as, "we license their songs, and then we license the usage data back to them at a higher rate once it reaches some threshold."

You apparently read it as, "we infringe until we have enough usage data, and then we negotiate a contract where they pay us."

The few ambiguous parts are,

1\. Whether "we use the label's songs" means to license or to infringe.

2\. Whether "the data we got from them" is licensed or infringement.

3\. Whether "what we pay them" means what they had paid in license fees up to that point, or the terms of the negotiated license.

<comment><USER24> You're missing:

      > we are achieving all this growth without paying
      > a dime to any of the labels

and

      > In our case, we use the label's songs till
      > we get a 100 (million) uniques

Combined these statements make it less ambiguous.

<comment><USER23> I read "not paying a dime" as referring to their net with the labels

In their business plan, they take a loss for licensing up front, but eventually net positive by licensing the data back to the labels.

Contrast with, e.g., Spotify, who nets a loss with the labels.

<comment><USER25> if that were the case, why would they then say:

"Let's keep this quite for as long as we can."

also,

> they take a loss for licensing up front

doesn't seem like the correct interpretation, because they say

"we are achieving all this growth without paying a dime to any of the labels"

<comment><USER26> That's exactly what he meant, they don't pay a dime because they offset it by selling data.

<comment><USER27> To me, the phrase "let's keep this quite [sic] as long as we can" implies you know you're doing something wrong.

<comment><USER26> I don't know about that, but I guess we'll find out soon enough. I'd give them the benefit of the doubt since this is all on Universal's words, they provide an amazing service, have license agreements with EMI and lots of smaller labels.

<comment><USER28> Is there a list somewhere of all of the actual artists Grooveshark has legal agreements with? I'd love to see the percentage of streams of unlicensed artists vs. licensed artists and how much each contributes to their total stream output per month.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER29> The 'e' in email is short for 'evidence'. Little known fact.

</comment><comment><USER30> > Let's keep this quite for as long as we can.

Clearly the lesson here is that you need to spellcheck carefully before sending out your emails.

</comment><comment><USER31> How did Universal get GrooveShark's internal emails?

<comment><USER32> Presumably they were given access to them during discovery for the lawsuit, per standard practice.

</comment></comment><comment><USER33> Beware what you put in any medium that can be retransmitted without your permissions :)

</comment><comment><USER4> What a dumb move. I'm really interested to know who the recipient was. This isn't about watching what you write more so than just being judicious about what information you choose to share and with _whom_ you share it.

That segment of email made the email's author sound condescending and made the business itself look shady. I personally don't see any problem with that business model at all but there will be people who read it in a condescending tone.

One last thing, the spelling. How in the world does anyone who wants to be taken seriously get away with that sort of spelling? Especially if you're running a business. Slang and shorthand are for teenage texts, not emails from high level execs. I'm a high level executive myself. I'm the CEO/Founder/President of my $20k/yr business that has its office based in my living room and even _I_ wouldn't let that happen in an email from me or anyone representing the work I do. The way you speak and write reflects on you in more ways than people realize. It can make a Nobel Prize winner look like a hillbilly.

<comment><USER34> Spelling: I for one couldn't parse it. I stumbled a handful of times and just stopped reading, looked at the comments here instead.

Looked like a kid texting to me.

<comment><USER4> Thank you. I think people are dissecting my comment a bit much like they have an axe to grind. Someone mentioned getting things done over checking spelling. Please. Does it take that long to type an extra character or two. That's a bullshit argument. Then dyslexia? Well that's fine but dyslexia doesn't cause you to spell "because" as "cuz" so while I feel for dyslexics, that too is just not good enough. The remark about "oh what if the Nobel Prize winner was a Russiin chemist?"... Oh, come on with that. It's obvious what I mean. The point is that this type of spelling can make the smartest of us and those of us worthy of a lot of respect look like fools. People will write you off for it. Suppose this were written by Steve Forbes or Bill Gates or PG himself but we didn't know it. I'm willing to bet that if the recipient wasn't a close friend and didn't recognize the sender's address that they wouldn't be taken seriously. That's my point.

I think you get it darklajid. When someone writes this way it just reflects poorly on the person. My point was that people don't take you seriously even if you really are a genius that can help them if you write and speak in a manner like we see in this email. It it's a close friend then maybe it's fine but my overall point still stands despite the nit picking.

</comment></comment></comment><comment><USER35> Just a reminder that emails are public, everyone you dont want reading them will see it. Unless you are the government with the torture emails which were accidentally deleted.

</comment><comment><USER36> what a disgrase! can't even spell "quiet"!</comment>


What is your Real Market Value? - <AUTHOR>

Real Market Value or RMV is how much you are currently worth in the market based on the market demand and supply for your skills. Find out your Real Market Value www.skillgigs.com <comment><USER2> All the "borkers" (a derogatory term for "brokers", ie. headhunters, recruiters) tell me I'm worth $65.00 working W-2 through a "Body Shop" (staffing agency), in the Portland, Oregon metropolitan area.

I'm presently working remotely, for the most part from Starbucks and Burgerville in Salmon Creek, Washington for quite a lot less than that.

This because I really DO NOT require $65.00 per hour to be happy as a clam.

The borkers all quite suddenly, as well as quite unanimously urged me to increase my rate from $50.00 to $65.00 at the exact same time!

I expect that word got out among them that they were successful in placing similarly-experienced peers of mine for $65.00, which meant that the borkers could obtain ($65.00 - $50.00)/ $50.00 = 30% more commission almost overnight, were it not that I think borkers are the Spawn of Satan.

<comment><USER3> $65/hour is awfully low if you are paying pay roll taxes, funding your own retirement, and buying your own medical insurance, not to mention vacation and other benefits that you are forgoing as an indie.

<comment><USER2> That's what I was told was - nine months ago - the going rate for W-2 Senior Software Engineers in Portland and Seattle.

I expect it's a lot more than that in The Valley, and may be a lot more than that now, here in Portland.

However I don't actually require anywhere near $65.00 to be happy.

The borkers wanted me to require $65.00 to accept a gig so THEY would be happy, not I.

All I really require to be happy, is enough cash for WiFi, a single room in a shared house, bus and train tickets about three to four days per week, decent grub and other sundry expenses.

I used to make $120.00 shortly before the Dot-Com crash hit, but that was one of the most horribly depressing experienes of my entire life.

I'd rather make quite a lot less than what I am worth, as I'm rather happy only charging what I actually require for happiness.

<comment><USER3> If not money, you should get something else out of your job...easier, flexibility, good cause...maybe a non profit...but just doing charity for a company is very odd. You should realize your value even if that doesn't involve money. You might be happy as a phd student, pay is similar, you get to do alot for yourself.

<comment><USER2> Actually I would far rather be a Physics PhD, but academia does not accomodate my mental illness of Bipolar-Type Schizoaffective Disorder in the way self- employed Software Consulting does:

=== [http://www.warplife.com/mdc/books/schizoaffective- disorder/](http://www.warplife.com/mdc/books/schizoaffective-disorder/)

I regard the Computer Industry as much the same kind of Den of Iniquity as Iesu regarded the Money Changer-Infested Temple.

Really I would rather have nothing to do with computers but I must pay the rent somehow.

All I ever wanted was to create something of real lasting value that I would leave behind after I'm gone.

When I attended the Portland Startup Weekend a couple years ago, some Cute Young Thang pitched an iOS App that would help her make new friends by hooking up with nearby strangers who were running that same App.

I can really see how a sexual predator would really get into that.

Some other guy pitched an App that would help him try out new kinds of beer.

I was at the time easily twice the age of everyone else in attendance, even the Startup Weekend Staff. They were all wearing blue jeans, t-shirts and sneakers, I was wearing a medium grey pinstripe suite, a pale blue polka-dot tie and black leather dress shoes.

I was very tired as I had not slept in days so I was unable to give my full pitch as I had rehearsed it, but more or less:

"Why are you even in this business? What are you going to leave behind for your loved ones when you're gone?"

"Will any of the code you write this weekend still be in use ten thousand years from now?"

I pitched my proposal for an automated free website critique tool, that enable most web designers to fix the most common mistakes, but meant to make some coin through paid, more in-depth critiques as well as web design, website operation and SEO consulting.

I have known very well that I have been in the wrong line of work for over twenty years yet I cannot seem to find my way out.

I may know how to get out of coding now though but it remains to be seen.

<comment><USER3> The startup crowd is quite different from the cs academic crowd. As a semi bipolor, I find it much easier for me to deal with and make contributions.</comment></comment></comment></comment></comment></comment>


Software Development at 1 Hz - <AUTHOR> https://medium.com/@MartinCracauer/software-development-at-1-hz-5530bb58fc0e <comment><USER2> I wrote numerical code for a while, it simulated a magnetic material. It would take hours to run a simulation long enough to be able to verify that it was correct. Make a change, wait five hours, check if the change worked.

I eventually started keeping a journal of every code change I made, along with the hash of the binary that it created. I could use this to make several independent changes and run them all at the same time. When one run finished, I would verify its behavior, look at the binary's hash, and then know that my code change was safe. It was a very slow process, but effective. After doing this kind of development for a while I'm weary of claims like this that imply that feedback with a latency <10s is actually a good thing. High latency feedback forces you to be more methodical in your development and think about the changes you're making.

<comment><USER3> Being methodical is good when your problem is intricate and well defined. Fast feedback won't be helpful in implementing a complex algorithm like a compiler or a numerical simulation (although I would argue it will help you debug it).

When what you're doing is simple but error prone, or not well defined fast feedback can make you much more efficient. If you're using an underdocumented API/dataset, the best way to understand it is to probe it with code, quickly iterating.

I used to write a lot of LaTeX and make lots of simple mistakes (missing backslashes typically). I found having an environment where I found my mistakes as soon as I made them more efficient than searching through the output for all mistakes, and then for each mistake finding the corresponding source and correcting them.

<comment><USER4> > When what you're doing is simple but error prone

That just means the problem is deeper than your understanding of it.

<comment><USER5> Or deeper than you >can< understand it without probing, because documentation is simplistic, wrong or non-existent.

<comment><USER6> In that case you have a much bigger problem :P

</comment></comment></comment></comment></comment><comment><USER7> I am a huge believer of <10s Dev loop. I quit my previous team because compile times were greater than 2mins and I wasn't in a position to influence making it shorter.

In my new team I got it from 30s to 5s and the effects have been amazing. I have to thank VScode and Gulp to make this possible. With typescript vscode does fast parsing of your code on every keystroke and gives squigglys instantly. On every save, gulp does its magic and vscode runs the problem matcher and shows more squiggly on my editor.

The browser knows when a file has changed and refreshes immediately. Vscode has a chrome-debug plugin so my breakpoints hit immediately in the IDE.

It's been an amazing experience so far. We've also revved up our CI systems to run 1000's of tests in parallel.

You actually enjoy work when you don't spend forever waiting for things to compile.

<comment><USER8> Web engineers are waiting for stuff to compile these days? I thought things were supposed to be moving forward, not backward.

<comment><USER4> It's simultaneously frustrating and entertaining to watch the younger generation toil under the impression that they're inventing something new.

</comment></comment></comment><comment><USER9> A 20s turnover is not even that slow. Debugging undecidable timing issues in an FPGA may have turnover counted in hours given how slow HW synthesizers are.

If the need of better tooling is clear, the OP does not mention one important point: faster machines have created some sort of fast food approach to programming, where programs are built on the go with the help of the appropriate tools (some sort of computer-aided programming).

Back in the 60s, when programs where being shipped by snail mail to some data center somewhere in the country to be entered by a random assistant and scheduled in a long pool of jobs, turnover was counted in days. Yet, we walked on the moon.

So beyond better tooling, maybe a key to maintaining that attention span is check is to simply spend more time on the design board.

<comment><USER10> Possibly. All this talk about getting antsy if things take time to build seems to fit a worry i have about our current web focused world.

Observe Google and their management of Android.

Again and again they have pushed out some half-baked X.0 version with the unstated intent that it will be sorted in a near future update. A clear example of that was the introduction of the Storage Access Framework.

This is the web mentality seeping into the development of firmware and physical products, and it is leading to a massive culture clash and crap products.

Basically you can't just code, push, run, repeat on devices in peoples pockets and bags like you can a web site.

<comment><USER11> Seriously, the reason I can't rely on my phone is mostly Google Play Services. I never know when it will update behind my back, and suddenly I'll feel a warm spot on my leg, and less than halfway into my day my phone's battery is at 5% because of Google Play Services running infinite loops.

Or how at least every two days, the phone's wifi and LTE connections just stop working, for no apparent reason. But if I Force Stop on Google Play Services, they suddenly work again. This has been going on for several months now.

Of course, these issues didn't used to happen with older versions of Play Services. And if I downgrade the Play Services app to the version installed with my ROM, I never have these problems--but then I can't use any current Google apps, like Gmail, Maps, etc.

The AOSP software is mostly fine. But the Play Services side of Google simply cannot be trusted. Their CADT/web-style of development is almost enough to push me back to iOS.

I want a phone that just runs Debian. :(

</comment></comment></comment><comment><USER12> When I write code, I have this mental model of how the world (application) works. I write some lines of code based on it, and then test the code. More often than not, something happened that I hadn't thought about, and my mental model is updated.

This summer I worked on an application where it took 8 minutes to see the effect of changed code. Between each iteration, I had forgot most of the assumptions I had made. So when things didn't work, I had a hard time figuring out why my model of the world didn't work. I basically started from scratch each iteration.

Possibly very obvious, but it was interesting to learn how I attack a problem. And scary to see that I didn't just lose the 8 minutes between each run of the program, but much, much more.

<comment><USER13> If 8 minutes sounds like a lot... turnaround times when you work with FPGA code can be hours (and months if you're taping out an ASIC). After having to cope with that for a while, I've found that even with software I think a lot more before writing any code, and now I find myself stepping into the debugger much less often.

(My point is: debugging first in your head is yet another skill that should really be taught to everybody but isn't).

<comment><USER14> > debugging first in your head is yet another skill that should really be > taught to everybody but isn't

Along with smelting iron. I don't know why people advocate skills one doesn't need, saying "but they make you better".

Skills you don't need will atrophy, because you don't need them. Conversely, skills you need with strengthen. Why would I debug first in my inaccurate head when I have a perfectly accurate debugger _right here_ , and I can run my test suite in ten seconds?

Debugging first in your head is a good skill if actual debugging will take hours. If feedback is instant, you're probably faster writing the first thing that comes to you and iterating on it.

<comment><USER15> This is as silly as asking why people advocate exercise. I mean, you clearly don't _need_ to be able to lift heavy things. Even if it is sometimes helpful.

Similarly, thinking about things before you do them will almost always be something you could just skip out on. But... It can be very helpful. And exercise is a great way to get better at work. "Practise makes perfect" and all.

<comment><USER16> No, people advocate exercise because it's necessary for long-term health.

<comment><USER15> Some exercise certainly helps long-term health. Calling it necessary greatly over states the importance, though.

And, I should be clear, I was saying "exercise" to refer to gym style exercise.

</comment></comment></comment></comment></comment></comment><comment><USER17> > At the same time I cannot use toy languages that have no compile time type > checking

This guy seems like and sounds like a serious developer, so I'm totally confused by this statement.

Dynamic languages that don't do compile time type checking are not toys.

I used to only write in Java or C++, but I think it's a stage of maturity as a developer to realize that you can develop code that can take arguments with the assumption that the objects sent in are of types that will have the behavior you need to work with them.

If you argue that the code is faster when it is compiled- that's fine, and I agree, and that's good, if it matters.

If you argue that you need types because otherwise you can't be safe, I'm sorry, but that's like being a helicopter-parent. Sometimes maybe you can't trust what is calling your code even when you give it trust, and that's valid; just like as a parent, sometimes the child really needs that level of micromanagement. But, for a lot of if not most of practical web development, you can use dynamic typing, and most children do not need that level of micromanagement.

There's nothing _wrong_ with languages that provide type checking, but it isn't necessarily a deficiency when it's not there.

<comment><USER16> > If you argue that you need types because otherwise you can't be safe, I'm > sorry, but that's like being a helicopter-parent. Sometimes maybe you can't > trust what is calling your code even when you give it trust, and that's > valid; just like as a parent, sometimes the child really needs that level of > micromanagement. But, for a lot of if not most of practical web development, > you can use dynamic typing, and most children do not need that level of > micromanagement.

This is backwards. Working without types is like walking around with your eyes closed: sure, you can do it, most of the time; if you're not doing anything particularly dangerous you can even do it reasonably safely. But it makes everything a lot slower.

The arguments against types usually boil down to either, as the saying goes "The belief that you can't explain to a computer why your code works, but you can keep track of it all in your head", or having only used languages where the explanation to the computer is so cumbersome as to not be worth doing (valid, but only in the scope of those languages, and the correct response is almost always to get a better language).

Try using a language with a decent type system some time (something along the lines of OCaml, Haskell, F# or Scala). Back when I'd only written Java and C++ I also thought type checking wasn't worth it.

<comment><USER18> I'm a huge fan of static type systems and their ever helpful checkers.

For me the most difficult argument against static types is that the sweet spot remains elusive: some type systems are too simplistic (e.g. the difficulty of writing generic print in OCaml) while some are too fancy and difficult (e.g. how many people understand even most of GHC Haskell's type system?).

There's also some real problems with compiler error messages. A great type checker needs to be able to explain problems understandably, or decoding the type errors will be more difficult than tracking down a null pointer in an interactive debugger.

I wonder about the possibility of making type checkers more interactive. It can be hard to understand them because they build up lots of implicit understanding that's not apparent.

</comment></comment></comment><comment><USER19> I once had

\- a super-fast assembler

\- a super-fast way to get the assembled code over to a target system

... and my turnaround time was on the order of five seconds: Edit, hit a button making the target ready to receive the code, assemble: Running.

It almost didn't matter that I was writing 6502 assembly; things just fell together and it was _magic_.

Years later I was in a place where it was common to have half-day builds (30 minutes if you arranged things well). In fact, my last three weeks on that job I never got a working build at all, despite our group having an entire source control team whose job it was to make builds work.

Current big project, it's about 30 seconds of tool churning, then another 30 of startup time. Could be better.

<comment><USER20> I always laugh thinking that Turbo Pascal was so quick I didn't understand the difference between build and "build then run". And that was statically typed code on Pentium class computer.

<comment><USER21> I think Pascal was specifically designed in a way that allowed a compiler to go straight from the source code to machine code in just one pass (although the output wouldn't be particularly well optimised).

<comment><USER20> True, I've read that they made both the syntax easier to parse, and kept the compiler relatively simple to avoid intermediate structures/allocations etc.

I took a look at Wirth first Pascal compiler too, it's just too files, of acceptable length, lot of coupling though, but it's easy to guess that it's an imperative style that brings a lot of mechanical sympathy.

</comment></comment></comment></comment><comment><USER22> You can get this experience in most interpreted languages fairly easily (if an interactive debugger like pry or a JS console isn't good enough), and compiled languages with sufficiently good tooling for dynamic code replacement under a debugger.

For dynamic languages, use the `watch` command combined with a host script that loads the code you're developing dynamically and executes it with some interesting parameters, and dumps the output. As you edit the source, you can see the effects immediately, character by character.

You can get the same effect in something like Java in an IDE if you can structure the interesting code like a game loop (ideally it is a game loop): it's being continuously evaluated, so every change has an immediate effect. You can see Notch use this technique in this video here:

[https://youtu.be/rhN35bGvM8c?t=5757](https://youtu.be/rhN35bGvM8c?t=5757)

As he edits code in the IDE, the application responds dynamically.

</comment><comment><USER23> I've been working on/with an environment that gives me feedback on every keystroke. The effect has been amazing, and it's always painful to go back to regular environments. Even traditional Smalltalks or REPLs where I have to do something to execute the current command are jarring. Regular compile/link/debug is painful. Xcode is excruciating.

<comment><USER24> What are you using now?

<comment><USER23> My own Objective-Smalltalk.

Here with a more traditionally interactive environment (so updates are applied when you save the method): [https://www.youtube.com/watch?v=ArcClqt2vTc](https://www.youtube.com/watch?v=ArcClqt2vTc)

Here in a really live environment I call CodeDraw, with updates computed on every keystroke (the "Run" button is just left-over UI, it doesn't do anything): [https://www.youtube.com/watch?v=sypkOhE- ufs](https://www.youtube.com/watch?v=sypkOhE-ufs)

Most interpreted or incrementally compiled systems should be able to do this.

</comment></comment></comment><comment><USER25> This is why interview code tests are... badly misguided. Most "fizzbuzz" screening is grossly artificial, denying one the feedback loops which are a critical element of productivity, and without which one is relegated to spending time manual checking what automation does almost instantly.

I rely heavily on the IDE reminding me of things, and quick compile/run cycles verifying correctness, rather than trying to think thru a myriad of special cases. Relegated to "whiteboard coding" interview questions, I'm left looking a whole lot worse than I am - not because I don't know it, but because I know enough that thoroughness is painfully slow (without leveraging tools multiplying my skills & speed).

<comment><USER26> I would argue that if you can't write a correct FizzBuzz without needing to compile and run it, or even worse, an IDE to hold your hand, you don't actually understand what's happening and are just leaning on a crutch.

 _I rely heavily on the IDE reminding me of things, and quick compile /run cycles verifying correctness, rather than trying to think thru a myriad of special cases._

The peril of that sort of workflow is that you often won't realise the importance of those special cases until it's too late to change things easily. "It looks like it works, it compiles and runs" \--- I've heard this sentiment from such IDE users many times, and yet when I inspect their code, they inevitably missed something important.

Someone once gave me a phrase I like to keep in mind when programming: "How can you tell the machine what to do if you're not even sure how to do it yourself?"

<comment><USER16> All tools are crutches. I mean a good carpenter probably _should_ be able to bash a nail in with a rock rather than a hammer, but that would be a crazy way to do interviews.

</comment></comment></comment><comment><USER27> This is an enormous deal to me, although I'm only messing about with Node and Meteor.

Productivity plumets if a change takes long enough to be visible for me to justify looking at Twitter.

</comment><comment><USER28> I'm reminded of this very amusing C++ compilation speedup trick: cat * > everything.cpp - [http://stackoverflow.com/a/318495/3229684](http://stackoverflow.com/a/318495/3229684)

\---

Also, I tend to do all my work using a realtime-feedback model like this.

I discovered inotifywait a few years ago, and consider it to be the coolest thing I've discovered. Using a loop like:

        while true; do clear; ./program; inotifywait -qq -e delete_self program; done

I run my program, then sit waiting until I re-save it, at which point I run it again. This approach is very flexible; the example above works for shell scripts, or I can do "gcc -o file file.c && ./file", or I can do "node file.js", or whatever. Switching the sequence around I can have inotifywait pause before the first execution too, but I prefer the method above. I occasionally substitute "clear" for "tput reset" so I can wipe my scrollback and shift+pgup stops at the top of the current execution.

There are some caveats though.

The biggest is that this approach doesn't work too well for things that need to be killed to be restarted, like socket servers; that's fixable but nontrivial and likely project-specific too.

The second problem are the race conditions that will likely arise between your editor's slow file-save process and inotify's fast response time, producing irritating "File is in use" errors 50% of the time (since inotifywait exited, bash looped, and ./program is trying to be read by your compiler or interpreter while still locked by your editor).

The DELETE_SELF inotify event is specific to the Geany text editor; when Geany saves a file it does quite a few operations, and DELETE_SELF is amongst the last (but inotify doesn't see any of the following events since DELETE_SELF marks that the file - that inotify was watching - got deleted; this is thankfully coincidental with Geany being done with the file). You'll need to do something like "inotifywait -m program" and watch what events occur; inotifywait exits on the first event received; hopefully there's a lone unique event at the end of the sequence. Worst-case scenario you might have to add in "sleep 0.05"; I have not tested the success of prefixing the compilation step with something like "while [ ! -r program ]; do true; done".

</comment><comment><USER29> I would really like to see someone write enough code to do anything (or even compile), compile it, and interpret the results in a useful manner in less than a second. Continually, over a significant period of time. The tooling is certainly available, but the biological part of that process would seem to be superhuman.

<comment><USER30> The point is that you want to use the high frequency to get the simpler tools you will need out of the way, preserving your energy and attention for the complicated parts.

If you used up your energy by the time you made it through the simple stuff you are looking at a bad time later.

</comment></comment><comment><USER31> It's really interesting how little time it is before things become disjointed. Recently working with some legacy code I noticed this. Usually I have a continuous unit testing process which normally is < 4 seconds to give feedback. I had to wrap some tests around some legacy code, which required some expensive setup which added an extra 10 seconds. I really feel pained working with that code and the extra 10 seconds. It is just enough time for the brain to drift off somewhere else.

Ironic when in the past I have worked with C++ code bases that would take 20 minutes to compile, though incremental builds and parallel builds brought that number down.

Also in embedded systems, I've got 3 minute cycles to try something out. However most of the coding is done on a PC with a fast unit testing cycle which dramatically improves feedback loops.

</comment><comment><USER32> I know work with phoenix + live-reload and the nearly instant dev cycle is the best thing that happened to me since I started web dev.

I know rails has something similar but I haven't worked with rails for nearly 2 years now so I can't tell.

As a side note, having a short dev loop is really good for education.

</comment><comment><USER33> From this perspective, the worst things I meet are setting up or tuning complex CI pipelines and developing infrastructure automation: a cycle can easily last more than half an hour and there doesn't seem to be an easy way to speed up things, really.

<comment><USER34> With a modular TDD approach, you could in theory test individual components very rapidly. I haven't looked into it too much, but I assume such systems exist.

<comment><USER35> I have also often complained about this pain of CI systems.

One of the problems is that the things you need to have a proper CI system conflict with fast build times. Proper CI requires a _clean_ checkout, and a total compile fromscratch. If you're doing something in Docker, you ought to start your Docker process from scratch. If you're in a VM, you really ought to revert to a snapshot to make sure you're not accidentally accumulating un- CI'ed state. And so on.

While in normal development you may have a very fast turnaround, a properly configured CI system needs to assume the worst, start from scratch, and build everything, in every combination you support. (You may also want a less accurate CI build that trades speed for accuracy and just does an incremental build of some particular aspect of the system. But that should be supported by the full CI I describe here.)

Consequently, something that fails only 97% into that build process, and only fails on the CI server, can be very annoying to fix. But you don't really have a choice, because any hacky alternative is too risky. A CI system that has human intervention isn't a CI system.

</comment></comment></comment><comment><USER36> This isn't relevant only for development. Applications that take 10+ seconds to process an action are annoying and tiring as well.

At work a lot of stuff is like this. Enterprisey applications that take 10, 15, 20 seconds to process each entry. Time enough to get distracted. Time enough to tab over to email or some other application and lose focus. Just overall mentally fatiguing.

Developers who are annoyed by 10 second delays in their development process should remember that their users will be just as annoyed by slow response time in applications. Cut the weight. Make it faster. I'm more and more convinced that nothing else will go as far in making users happy.

</comment><comment><USER37> For Ruby pry comes close but he's right about the inability to have the same kind of turnaround cycle when you're developing a C extension. I don't think anyone is gonna beat SBCL in that regard any time soon. There is no way to take Ruby and then generate machine code that ends up being callable from the current address space. Although I guess there is some way to do it with cffi and a compiler constantly running in the background.

</comment><comment><USER38> Today I was thinking in the idea that LISP and Smalltalk are probably at the top on instant feedback for development. And Smalltalk dev tools might rank even higher because you can dig any instance to any dept and evaluate code "talking to it" and getting instant answers right there.

</comment><comment><USER39> My dev-loop currently takes ~10sec. But I worked with worse...

Yes I prefer faster loops, but nerver had a job where I could influence the build pipeline...

<comment><USER40> I just try and fix the build pipeline when it annoys me.

I was running into some 1-minute link times per project on Android, with several projects. Investigated and found out there was an alternative linker named "gold" \- a few minutes to figure out how to reconfigure our builds and our link times were down to ~10 seconds / project or something. Nobody complained when I checked that in ;)

Dealing with C++ build pipelines for large projects, there's only so low I can get build times for the whole project - better to try and make the data hot reloadable in a lot of cases. Similar goal: Fast iteration loops. Even if you can't fix them for the entire project, you may be able to fix them for whatever you're working on _right now_.

</comment></comment><comment><USER41> Writing django and JavaScript apps with a hot reloader has spoiled me. The dev loop for other cases now feels almost painful.

</comment><comment><USER42> The aversion towards upfront thinking and tendency to glorify the TDD slot machine is a bit unsettling.

<comment><USER43> That's somewhat unfair don't you think? It's perfectly possible to incrementally evolve code using TDD towards a particular destination determined by upfront thinking.

</comment></comment><comment><USER44> Relevant XKCD: [http://xkcd.com/303/](http://xkcd.com/303/)</comment>


You don't need a Linkedin account - <AUTHOR> http://www.dedoimedo.com/life/linkedin-unnecessary.html <comment><USER2> Good advice. I would agree with the author about one thing in particular: you don't need LinkedIn (or Facebook, etc.) to be on the web. Get a domain name and some hosting and put up your own site with your resume, accomplishments, hobbies and interests. That's yours to own and control.

<comment><USER3> This is good advice but I also wish companies like gitlab and github would support this for those of us who don't want to manage a site and have most reference work on git*.com anyway.

<comment><USER3> To clarify: github already has github.io for user pages but I think you can do much more with even less effort!

If anyone from github / gitlab / bitbucket/ ??? is reading this please consider this simple way of making your site more awesome:

1\. Let some special repo name (e.g. me, aboutme, cv) have a special meaning.

2\. If a user has this special repo make it his front page or at least link to it from hist front page.

3\. If the repo has a README.md or README.rst or READM.org make it his landing page for that repo (github and bitbucket already do this).

So next time I am curious about Joe Developer I know I will find him not on linkedin but on gitlab.com/joedeveloper/cv

<comment><USER4> Great suggestion, I've created an issue for it: [https://gitlab.com/gitlab- org/gitlab-ce/issues/31393](https://gitlab.com/gitlab-org/gitlab- ce/issues/31393)

<comment><USER3> Thanks Mike!

everyone else: feel free to give #31393 a thumbs up

</comment></comment></comment></comment></comment><comment><USER5> I really don't understand all the hate that Linkedin gets on HN.

In my opinion, Linkedin is one of the better social networks - devoid of clutter and politics since each posting is connected to your professional network/appearance.

<comment><USER6> It could be because of their usage of dark UI design. I'm not sure if they still do it because I haven't been on there in a long time.

[https://medium.com/@danrschlosser/linkedin-dark- patterns-3ae...](https://medium.com/@danrschlosser/linkedin-dark- patterns-3ae726fe1462)

It was also mentioned in this presentation as having confusing UI. [https://www.infoq.com/presentations/oo- ux](https://www.infoq.com/presentations/oo-ux)

<comment><USER7> If recent reports on their UX redesign are anything to go by, it must have become worse.

</comment></comment></comment><comment><USER8> The article seems to argue that it is all a zero sum game when in reality, with services like linkedin, you can see prospective employers you had never even thought of before. Sure I could get a job at Facebook where tons of my friends work through networking, but maybe the esoteric startup the recruiter pitched to me on linkedin turns out to be more interesting.

<comment><USER9> That is the reason I don't have a Facebook account but one on LinkedIn and Xing. Not that I ever used those much but at least you get some value from it in being specialized. Because you will get that weird recruiter from God nows where with some random job offer. Unlike Facebook which is just a glorified birthday reminder for people you don't even know.

</comment></comment><comment><USER10> Agreed!</comment>


German CT-Magazine says 8 new Spectre Vulnerabilities are found in Intel CPUs - <AUTHOR> https://www.heise.de/ct/artikel/Super-GAU-fuer-Intel-Weitere-Spectre-Luecken-im-Anflug-4039134.html <comment><USER2> Some context on the source:

c't is a German computer magazine that has been around since the early 80s. It has a very good reputation for journalistic quality, expertise and thoroughness of investigations.

heise is the publisher that owns c't, hence the url.

</comment><comment><USER3> There is now an official english translation: [https://www.heise.de/ct/artikel/Exclusive-Spectre-NG- Multipl...](https://www.heise.de/ct/artikel/Exclusive-Spectre-NG-Multiple-new- Intel-CPU-flaws-revealed-several-serious-4040648.html)

c't and heise are not known to make statements like this willy-nilly. If they say it's serious, I would assume it is indeed serious.

</comment><comment><USER4> Does anybody know why this is still not page 1?

Current Place 41:

33 points 3 hours ago, 4 comments

For comparison:

25\. Differentiable Programming: A Semantics Perspective (barghouthi.github.io) 54 points by matt_d 12 hours ago | flag | hide | 11 comments

26\. The Pain Hustlers (nytimes.com) 62 points by farseer 10 hours ago | flag | hide | 17 comments

Looks like there is some penalty involved.

</comment><comment><USER4> TLDR;

The bugs are currently exclusive to c't (a German IT magazine closely linked to heise.de) and they could confirm those bugs "in several ways".

[IMO: c't and heise.de are considered both first class sources in Germany]

Technical details won't be published in order to give manufacturers time to respond.

Still, they are a consequence of the same architectural problem as Specter, hence labelled Specter-NG

There are indications that at least some ARM CPUs are vulnerable and AMD CPUs are still being tested.

Intel estimates the risk to be "high" for four and "medium" for another four.

C't itself considers at least one "extremely high" because it would allow for controlling the host system from within a VM, or accessing other VMs on the same system. This was also possible for the original specter bugs but this specific attack would be much easier as it required "much less detailed knowledge".

</comment><comment><AUTHOR> Here is the google translation: [https://translate.google.com/translate?hl=de&sl=de&tl=en&u=h...](https://translate.google.com/translate?hl=de&sl=de&tl=en&u=https%3A%2F%2Fwww.heise.de%2Fct%2Fartikel%2FSuper- GAU-fuer-Intel-Weitere-Spectre-Luecken-im-Anflug-4039134.html)

</comment><comment><USER5> Guru3d: [http://www.guru3d.com/news-story/eight-new-spectre- variant-v...](http://www.guru3d.com/news-story/eight-new-spectre-variant- vulnerabilities-for-intel-discovered-four-of-them-critical.html)</comment>


Google's self-driving car unit spins out as Waymo - <AUTHOR> https://techcrunch.com/2016/12/13/googles-self-driving-car-unit-spins-out-as-waymo/ <comment><AUTHOR> > "We're now an independent company within the Alphabet umbrella," Waymo CEO > Jon Krafcik told an audience at a press event in California today. Krafcik > also noted that they had the first fully driverless ride on public roads in > Austin last year, using a car with no steering wheels and no pedals in > "everyday traffic" on real city streets.</comment>


Show HN: TeamTail.dev – Securely stream any command-line program to the web - <AUTHOR> https://teamtail.dev/ <comment><AUTHOR> Hey everyone, creator of TeamTail here!

TeamTail is a nights-and-weekends project that I've been working on for the past couple of weeks. It's not 100% production ready yet, but wanted to share 1) in case it is useful to any of you creators, and 2) to get some early stage feedback.

TeamTail is a tool that lets you pipe any command-line output (e.g. cat file | teamtail, tail -F file | teamtail, or even ./run-program | teamtail) and it'll create a secret link for you to share [https://teamtail.dev/p/](https://teamtail.dev/p/){...}.

This project was inspired by a few other tools that I've seen out there, namely [https://seashells.io/](https://seashells.io/) and [https://streamhut.io/](https://streamhut.io/), with the two "killer" features of TeamTail being

1) End-to-end AES-256 encryption + SSL/TLS communication throughout

2) Inline commenting (think github style commenting) for easy, real-time collaboration.

Please let me know if you have any questions!

<comment><USER2> Why is this better than a simple screen share when needed?

I'm not seeing the utility here.

<comment><AUTHOR> Good question. I believe there are a couple of benefits over a simple screen share that makes it worth while:

While it can function as a realtime stream, it also allows for asynchronous collaboration. For example: you can `cat` a log/config/source/etc file to TeamTail and share the link to get feedback / help. Inline comments combined with Google/Facebook/GitHub auth allows for low-friction collaboration.

And the fact that the conversations live in a document of sorts means that you can refer back to it in the future, or you can share it with people who weren't there during the screenshare "meeting".

<comment><USER2> The recording, annotation, and sharing is interesting. I'm not to keen to stream logs and such through an unknown company or website...

Back to you!

<comment><AUTHOR> That is exactly why I wrote TeamTail :P.

If you look at the client script, it does an AES-256 encryption first before sending to my server. The data I store in my database is all just the encrypted strings. You share that password with your team, and the website will do JavaScript decryption. The password is never sent back to TeamTail.

<comment><USER2> OK, that's good.

So I have a dozen copies of my microservice running, and I need my team to work togethare and debug something that's going wrong.

How does TeamTail help with that? It seems limited to a single source stream.</comment></comment></comment></comment></comment></comment>


Background noise and color generator for working and relaxing - <AUTHOR> http://www.noisli.com/

<comment><USER2> Awesome! This is a lot simpler than me opening 3 tabs on Simply Noise to try to recreate a thunderstorm. The color transition is a nice touch too.

I'm not sure I would use the word _chromotherapy_ specifically though, since it has some associations with psuedoscience (which isn't to say it's not nice to look at): [http://en.wikipedia.org/wiki/Chromotherapy#Reception](http://en.wikipedia.org/wiki/Chromotherapy#Reception)

One more thing: I think I'm experiencing a bug where individual sounds stop playing after a few minutes...

</comment><comment><USER3> The idea is awesome! This was immediately putting a relaxed smile in my face :)

I was just facing a problem (and I really hope I am alone with that problem!): The sound stopped after about 5-15 seconds and I thought that is just a demo. Reloading, wild clicking, nothing helped. FF 24.0 on Win7 pro.

<comment><USER4> Not working here either (Chrome 30 on W7). Bandwidth maybe?

<comment><USER5> Hi,

we made an upgrade to our server.

Could you try if it is now working better?

</comment></comment></comment><comment><USER6> This is now my favourite app ever. The color change is a nice touch, but this is sadly going to be wasted since I'm going to use that in a background tab. They may also want to take a look at something like favico.js to animate the favico's colour.

</comment><comment><USER7> This is great! I realy like the audio and how good they sound mixed/matched. This would be a really cool compliment to the awesome chrome extension 'Currently'

</comment><comment><USER5> Many thanks for the nice comments :) we are glad you enjoyed Noisli.

The loops are very long - we will try to figure out why it is stopping and fix it as soon as possible

</comment><comment><USER8> I'm actually using this right now in concert w/ Coffitivity. It's like being a coffee shop during a storm.

Really diggin' this.

</comment><comment><USER9> Seems to be down all of a sudden. DoS?

<comment><USER5> Hi we had some issues with our server but are now back again.</comment></comment>