HN user

Havvy

221 karma
Posts0
Comments122
View on HN
No posts found.

You can't diff between 2.47 and 2.48 and see what changed? Or is that a binary part you don't have source access to?

Because there's no version control that way. If I depended upon babel/babel (or whatever it's called on Github), when it changed from v5.x to v6.x, it would have broken my build.

On Linux, it's 30ish lines, with half of those there to make false.c able to reuse some code. (I know, it's stupid.)

In OpenBSD, it's 3 LoC IIRC.

The author really likes lesbians - see her twitter feed for example. You can safely ignore the 'and gay' part as just a bit of her personality coming out in her artwork as far as the technical argument goes.

Phoenix 1.0 11 years ago

That's because the core of OO (message passing to opaque things) is really all you can do if you have a PID. In other more-traditional object-oriented languages, they usually have defaults that let you do more than just send messages - such as mutate the internal state directly in ways that the object cannot detect.

Phoenix 1.0 11 years ago

If you're talking about a good type system, sure. The type system in Go is frankly terrible at describing the kinds of invariants and reuse we care about.

I'd dare say that diaylizer (Elixir's optional but easy to use type system) would lead to more maintainable code than Go's forced type system in the long run.

Anything ES6y implemented in modern versions of V8 that aren't in the version that Node.js is using cannot be used. E.g., if you use `"strict mode";`, `const` works in an ES6 way in io.js but throws a syntax error in Node, though if you don't use `"strict mode";` you continue to get the pre-ES6 non-standard `const` that V8 has provided for a long time.

A minor one is that in io.js, `require('events') === require('events').EventEmitter` while that's not true in Node (where require('events') just gives an object with `EventEmitter` and possibly other properties on i.

Bloodletting isn't witchcraft. It removes iron from the body such that virii and bacteria trying to reproduce would have problems. It makes the host environment more hostile to the invading species. It has a lot of negative side effects and wasn't very effective, but it did have an effect.

Of course, some people did bloodlet for reasons that didn't help, but without knowledge of bacteria, many were just trying their best with what limited knowledge they did have.

I see a problem. Neither C nor C++ have garbage collection and other similar runtime features that every scripting language has. As such, if you rely a lot on these features, you could run into issues when translating into a lower level - either in implementation or in memory safety.

JSON.parse takes a string of "JSON" and turns it into a JS object. It doesn't evaluate the string in a JS context at all, which is what eval() does.

Some people have used eval() to do JSON parsing because JSON is a subset of JS, but if the user has any control into making malformed JSON, they could do so to create JS that can do anything the page can from the context of another user, otherwise known as Cross-Site-Scripting (XSS).

I've seen Minecraft generate 400Mb/min worth of garbage and then GC with a noticable stutter.

The most egregious stutter though is when Minecraft generates new chunks.

Minecraft is not a well-coded game. ;)

It'd be `()` and make it so that every side effecting function would be at minimum two lines long, and be a visible wart. It's pretty easy to tell that if the function returns something, the last line evaluates to that expression even if there's no `return` since if it didn't, it wouldn't compile (or there'd be a dead code warning).

Mining bitcoin is a speculative lottery. The bitcoins actually be transferred around were given originally to those who won that lottery, but after that, they're just traded like money. In the future, the winnings from the lottery is a percentage of each transaction instead of bitcoins, but that's relatively a long ways away. Basically, with each transaction, a person posts what percentage of the transaction goes to the winner, and the winner chooses which transactions to honor onto the blockchain. The giving out of synthetic bitcoins is a way to bootstrap this process and to make sure that there's no single point of ownership.

platform agnostic, environment agnostic, cross-platform.

We already have words that mean exactly what is trying to convey. Taking a word that doesn't and adding it to that pool (especially when isomorphic has a meaning in mathematics and computer science already - e.g. two functions are isomorphic if for all inputs they produce the same output, even if their implementation differs) is a bad idea.

Edit: And we who argue that isomorphic is not the right word for this concept already know what the word means. We also know what the words in the definition mean, and also its usage, which is as a relation between two elements in the same set. Saying something is isomorphic on its own is against the definition.

Infinite loops aren't necessarily a form of misbehavior in Erlang. It is how you keep Erlang processes up after all - just spawn a function that calls itself at the end. Though the vast majority of those have a receive statement so that they're not always running.

I'd consider structs that implement various traits (to use Rust's terminology) to be more of a 'usual' approach to an object model. You can see the approach with mixins in many scripting languages, Rust's entire object model, Haskell's typeclasses, Elixir and Clojure's protocols, ect. ect.

The fact that you can classify things into a classification tree does not mean that the classification is how things actually work. If it so happens that classification trees work for a problem, you can build them with trait inheritance, but structural inheritance hasn't been that useful IME, so the marrying of both types with classical inheritance just leaves a bad taste in my mouth.

"There are lots of scripting languages out there, but many have unusual or non-existent object models. Wren places classes front and center."

Does it make me unusual to find classical object models shouldn't be considered a 'usual' object model?