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

Rent Control is about enabling community through housing stability. Places where the housing costs have skyrocketed out of the reach of anyone but investors are also the places with the lowest community participation and highest Landlord rights. If you want to run a city where only the rich have rights then don't have any rent control. But if you rent to people who aren't rich, and then when housing goes up you try to throw them out to make more money, they're going to want to get together, contact their politicians, and secure their housing stability. Just because you want to piggyback on the poor and lower middle class to float your investment until it starts making real money doesn't give you the right to complain about the poor and lower middle class for still being there. If you consider housing in one of the densest cities in the planet to be solely for investment purposes I think you have something wrong with your moral compass.


These sound like bold claims, honestly. I have never lived in a rent controlled area, but I have also never had the money to enter into the only rent controlled areas I know of. Such that it is easier for me to understand the possible negatives of rent control over the positives. Do you have good reading on why they are false? (Basically, your moral argument sounds like I could see the appeal, but mostly false. Whereas the other arguments lack any appeal to morality, but seem much more likely.)


How do you propose addressing the problem of the high market rents in SF, then?


FAA says monetized youtube videos shot from drones are against the law.


The FAA doesn't say the videos are against the law, or even that the flight is against the law - they're saying the flight must comply with commercial flight regulations if the video it takes is monetized.

"Drones taking monetized videos are commercial flights, according to FAA"


Thanks! Changed.


Retroactively!


In order for bitcoin to "win" it needs to get massively more valuable. Valuable enough to move the equivalent of trillions of dollars per year and users need to be able to make million dollar purchases without drastically changing it's price. Otherwise it will never be truly useful as a currency and as interest is lost and prices go down parties concerned with verifying the blockchain will become sparse and the whole system collapses, magical blockchain and all.

Bitcoin has far from "won" in the sense of a currency and if another crypto-currency surpasses it's current popularity the faith in any crypto-currency being stable enough to move trillions of dollars each year is irreparably harmed.

People raising a few thousand dollars here and there in other crypto currencies is fun but it's not only paltry and not generally useful but can easily be attributed to entertainment more than economics. Once the novelty wears off, where will crypto currency stand. That's the most important question we need to ask ourselves. All these alt-coins aren't evidence of a thriving eco-system, they're evidence of the very reason why a cryptography based currency is inherently valueless.

The blockchain cannot last without bitcoin becoming massively more valuable. Many people already see bitcoin as being too valuable and alternatives too easy to create. What needs to be done to scale crypto-currency to the level of an actual currency? Government backing?


ECMAScript 6 is a mess

Now there's a completely new function syntax that doesn't use parens and has different scope rules

    var odds = evens.map(v => v + 1);
Enhanced object literals:

    // Computed (dynamic) property names
    [ 'prop_' + (() => 42)() ]: 42
what?? So it uses parens if there are no params, but not otherwise?

Template Strings:

    `In JavaScript this is
     not legal.`
Seriously another String delimiter?

    `Hello ${name}, how are you ${time}?`
Why aren't we just using #{} like everyone else?

    // Construct an HTTP request prefix is used to interpret the replacements and construction

    GET`http://foo.org/bar?a=${a}&b=${b}...
What??

Destructuring:

    var [a, , b] = [1,2,3];
Is that seriously just whitespace and another comma?

Splats (spreads?)

    f(...[1,2,3]) == 6
... means destructure?

This is not readable code:

    let fibonacci = {
      [Symbol.iterator]() {
        let pre = 0, cur = 1;
        return {
          next() {
            [pre, cur] = [cur, pre + cur];
            return { done: false, value: cur }
          }
        }
      }
    }
    
    for (var n of fibonacci) {
      // truncate the sequence at 1000
      if (n > 1000)
        break;
      print(n);
    }

Symbols without a literal syntax: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe... Jesus Christ.

Unicode:

    "𠮷".length == 2
Awesome, still wrong.

Modules are cool. Promises are cool. Tail call optimization is cool.

This is not readable code:

    // Proxying a normal object
    var target = {};
    var handler = {
      get: function (receiver, name) {
        return `Hello, ${name}!`;
      }
    };
    
    var p = new Proxy(target, handler);
    p.world === 'Hello, world!';
ES6 is a mess. Javascript just got harder.


     var odds = evens.map(v => v + 1);
Is about as readable as it gets (inspired by C#, Java8, CoffeeScript), as a benefit of succinct syntax sugar we get intuitive `this` binding - i.e. pit of success.

    [ 'prop_' + (() => 42)() ]: 42
> what?? So it uses parens if there are no params, but not otherwise?

Again not surprising, a leading `=>` would be a syntax error so `()` is an obvious compromise which can be naturally be extended to add args, e.g:

    evens.map((v) => v + 1)

> Seriously another String delimiter?

    `Hello ${name}, how are you ${time}?`
Yep, String interpolation is incredibly useful especially in JavaScript which does a lot of string munging - this will lead to more succinct, readable code. Should be obvious why they didn't want to break existing JS by re-using "" double-quotes.

> Why aren't we just using #{} like everyone else?

Who's everyone else (Ruby inspired langs)? Scala uses ${1 + 1} or $var shorthand (same as Groovy, Kotlin, JSP EL, Haxe), C# 6 uses {var}, Swift uses \(var) whilst Python and Java have string formats that use %(var)

    var [a, , b] = [1,2,3];
> Is that seriously just whitespace and another comma?

It's clearly ignoring matching the second element. Some languages choose to use `_` as a special ignore placeholder, JavaScript chose not to. Either way is not unintuitive with what it does so that's ok.

The other features are extremely useful if you need them, otherwise you can happily ignore them and use the subset you're comfortable with.


  > Splats (spreads?)

  >    f(...[1,2,3]) == 6

  > ... means destructure?
No, it means something very close to "apply" or "concat", depending on the usage. That example is the same as:

  f.apply(this, [1,2,3])
But it's cleaner syntax. The interesting part is that you can mix them in anywhere:

  function f(x, y, z) {
    return x + y + z;
  }
  a = [1,2];
  b = [3];

  [...a, ...b] == [].concat(a,b) == [1,2,3]
  [0, ...a, 4, 5, ...b, 6] == [].concat([0],a,[4,5],b,[6]) == [0,1,2,4,5,3,6]
  f(...a, ...b) == 6
  f(1, 2, ...b) == 6
  f(...a, 3) == 6
  f(...b, 0, ...b) == 6

> ES6 is a mess. Javascript just got harder.

Want some cheese with that whine? It got more complicated, yes. But I'm liking most of the changes, personally. A lot. Most of them are long overdue.

BTW, if you open Firefox's console, you can try out many examples. Firefox already supports tons of ES6.


    let fibonacci = {
      [Symbol.iterator]() {
        let pre = 0, cur = 1;
        return {
          next() {
            [pre, cur] = [cur, pre + cur];
            return { done: false, value: cur }
          }
        }
      }
    }
    
    for (var n of fibonacci) {
      // truncate the sequence at 1000
      if (n > 1000)
        break;
      print(n);
    }
I love how the only comment is explaining what "if (n > 1000) break;" does


Sure, you abuse the new syntax to make unreadable code, but most people will probably use it to abbreviate much of the syntax noise that plagues Javascript today.


>So it uses parens if there are no params, but not otherwise?

Params are only optional if there is a single parameter.


Huy Fong Foods is the brand, sriracha is the product. It's because he likes the fact that he created a new condiment and is satisfied with his current wealth and business size.


Sriracha is the product brand (e.g. Mountain Dew). Huy Fong Foods is the manufacturer brand (e.g. Pepsico). But like kleenex and saran wrap, it has become a generic term. Sriracha is a proper noun, but is slowly becoming a common noun.


It's gotten to the point where there are numerous competitors, some of whom produce bottles that look exactly the same except for two things: a yellow cap instead of green and a slightly different label/print of the logo and other information.


I think packaging falls under the rubric of "trade dress" -- different than trademarks, which generally involves words and symbols.

So if a competitor is selling red hot sauce in a bottle shaped just like a Huy Fong Sriracha bottle, along with similar writing, Huy Fong might have a case for challenging that, regardless of whether the competing product says "Sriracha" on it or displays the symbol of a rooster.


I was at the Fairway up on 132nd and riverside Dr last weekwmd, and they.had the competitor sauce you speak of. The big difference I noticed was they did not have any sodium benzoate preservative like the original siracha. If only they would give up in the preservative, I'd eat it again. Some real good all natural alternatives out there though.


You didn't cover the expected randomness of distribution of cards with each algorithm which can be the most important factor. And what does "properly shuffled" mean?


The distribution is the same for both... in this case "properly shuffled" obviously means an uniform distribution over all shuffles.


For some nice charts and pictures, you can see the original blog post this one was inspired by: http://datagenetics.com/blog/november42014/index.html It contains pictures for an algorithm that doesn't properly shuffle, as well as the fisher-yates shuffle.


All of this, all of it, is excruciatingly stupid. There are not enough people for a reasonable conclusion, the arguing is amongst a bunch of people who don't understand statistics or that this is an extremely hard subject to study and one in which the results are very person specific.

We don't need more poorly done, argumentative, non tech related research on a news site for computer programmers.

Can we please, please stop with the diets that have only been tried on mice and the exercise warnings. None of this in informative or even interesting, it's just trash tabloids masquerading as research that's pertinent to anyone's life.


Can state taxes currently be pain in New Hampshire with anything other than USD?


Motivation.

If you don't have the motivation you'll never be able to do it. If you can't sit in front of a computer for 8 hours a day reading documentation and hunting for syntax errors you're not going to be able to do it. If re-writing algorithms doesn't give you an intrinsic satisfaction, you're not going to be able to do it. No amount of everybody can code tutorials is going to help. They should all be, "how to find the motivation to keep coding" tutorials.

Unrelated, but related to the article, the word sociopath get's misused a lot and this article is no exception. http://www.thefreedictionary.com/sociopath


Motivation can work for a while, but ultimately how I see it comes down to discipline.

Motivation will fail you when you are left with those last 10% of a project that feel like the first 90%, but now with uninteresting tasks like tweaking the hell out of a UI, fixing all those bugs resulting from code optimization in obscure cases, implementing database integrations to assure backwards compatibility with earlier versions or some such shit that is impossibly uninteresting but required to finish the project.

Then in play comes discipline, and that is something you have to learn systematically, and when you don't feel motivated at all to continue through and just wish to quit it all.

But you are correct, you have to get satisfaction from the process. Maybe the motivation is to see the end result. But still, there is that phase where all hope seems to be lost, inspiration and motivation are nowhere to seen and all that remains is just grind and decide to follow through.


Not sure why you got downvoted because you're absolutely right. The hard thing is the commitment required.


Mmmm without drastic syntax changes?

Classes:

    There is no semicolon after the function name
    The function keyword is omitted
    There are no commas after each definition
Interpolation:

    `${1 + 1}` <- why not just # like everyone else?
Multi line strings:

     ` Now we have a 3rd
       string delimiter`
Fat arrow:

    $("button").on("click", () => { 
      // really? hanging parens? no function keyword?
    });
Destructuring:

    var [first, , last] = [1, 2, 3]
    // thats a var to assign vals inside an array
    // and just two commas touching to ignore a value

The whole post is about drastic syntax changes. The brackets are optional in coffeescript.

Besides coffeescript is just a tool.


> why not just # like everyone else?

You mean like CS? '#' actually isn't a very popular choice for this.

http://en.wikipedia.org/wiki/String_interpolation


Coffeescript's origin is in the Ruby community. The first interpreter was also written in Ruby. Ruby interpolates strings with #{} so that was a logical choice for Coffeescript.

The significant spaces thing was ironic given that Python is kind of the biggest competitor of Ruby (×) in the modern scripting languages space. Personally it's the main reason I'm not using CS (or Python or HAML or Slim), transpiling is number 2.

(×) kind of because Ruby is probably more successful in web development but less anywhere else.


I don't understand why significant indentation is a bad thing. It's easier to read indentation than it is to try and match brackets in your head.

The only times it bites me is when I accidentally mix spaces and tabs in the same block, which could use a warning.


I'm more into Ruby than in JavaScript even if I have 10 years of Ruby vs 20 of JS on my shoulders. In my experience Python is always easier to read than JS. It's easier than Ruby for the part that spares me from a silly looking sequence of end end end at the end of some nested block (but that : before a new indentation level looks silly too.)

The syntax of both Ruby and Python beat squarely any C-like language, even if Python looks strange to me. Perhaps is the mix of objects and functions that makes it look a little C-ish, or the many __name__ one has to write in same cases. Anyway...

I would do without JavaScript's {} () and ; or Ruby's end (which bugged me a lot 10 years ago) but unfortunately that easier syntax is offset by the too many times it came biting me with nasty bugs after I cut and pasted code around during refactoring. Or having to take really care of how many spaces I'm deleting to match the indentation level I must reach. The editor can't autoindent all the file for me. It's bad enough when I'm working in YAML files (the format of Rails's i18n db, another ironic choice) and I don't want to deal with it in all my codebase.

So in my experience significant indentation is evil because as a matter of fact is making me less productive. Lot's of people share the same feeling, lots of people are happy with that. No problem, there are so many choices that we can always pick what's best for us.

PS: I just thought that maybe an editor could autohide Ruby's end (or color it almost away) and still be able to autoindent code. Maybe I'll try to tell emacs to color end in dark blue (black background) and see what happens to code readability.


I don't like the class syntax in either ES6 or CoffeeScript.

In my opinion Ceylon nailed it:

    class Person(variable String firstName, variable String lastName) {

        shared String name => firstName + " " + lastName;
    
        assign name {
            value names = name.split().sequence();
            firstName = names[0] else "";
            lastName = names[1] else "";
        }
    }

Classes are effectively just closures with subtyping that export their shared members/functions.

Unrelated: A simple class like that shouldn't be mutable.


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

Search: