aredington

Joined 16 years ago

Karma
93
Submissions
41
Member since
Sep 3
[ my public key: https://keybase.io/holy_chao; my proof: https://keybase.io/holy_chao/sigs/T6It9uYjEf8yVRgmwUZ6s9smp2peRtLwl81K0Jx0F38 ]
View on Hacker News

Recent submissions

Comment · 10 years ago
One thing I really appreciated as an non-practicing observer was the frequent reminders to consider safety concerns, e.g. try a door knob before forcing it, take care with how padlocks may turn into projectiles, taking care that operating a chainsaw doesn't pose a threat to people inside a warehoused window, etc.
Comment · 11 years ago
And you make less industrialized, more labor intensive forms of producing eggs or milk more economical than higher industrialized, lower labor forms.
Comment · 12 years ago
Similar tool available for Firefox: https://addons.mozilla.org/en-US/firefox/addon/converter/

Just started using it, happy to be able to excise that bit of pervasive ignorance from my life.

Comment · 12 years ago
Keep in mind that read-string, eval, and load-string are all exploit vectors. Read-string exposes you to the #= eval macro, which can execute arbitrary code at read time, as well as various vulnerabilities with object construction.

Eval executes the data it receives without any sandboxing or sanity checking, any data that has ever had any user influence should be suspect. 9 times out of 10, if you're using eval, you should be using a function reference.

Load-string is likewise vulnerable to the eval macro and constructor attack vectors.

clojure.edn offers safe versions of read and read-string that do not use the eval macro. You can get load-string equivalent behavior by wrapping the string in a StringReader and then clojure.edn/reading it until eof. If you're reading data that's had any influence from an end user, always use the clojure.edn facilities, and never eval it.

Comment · 12 years ago
Verizon has so much bandwidth to get in and out of their network for broader internet bound and broader internet originating traffic. Netflix has to come in the off ramp that all the torrents, hacker news, and etc. traffic has to come in.

Netflix has offered to build a new offramp for Netflix traffic that goes directly into Verizon's network. Netflix is willing to shoulder ALL of the burden of this infrastructure cost, and to maintain it.

Verizon has refused the offer, and instead wants to charge Netflix a toll so that their traffic gets to use an EZ-Pass lane, instead of going through the normal slow toll booths that everyone else's traffic goes through.

Comment · 12 years ago
Clojure: Java is too complected.
Comment · 12 years ago
The media industry created a way to sustainably undergo the capital expenditures necessary for high quality studio recording, and the mass production and distribution of physical media communicating those studio recordings. It extracted rents in the forms of usurous recording contracts, hugely divergent pricing from their costs, and avaricious assignment and stewardship of copyrights.

Technology has reduced the cost of transmitting the information in recordings to the trivial level that serving someone a glass of water costs.

A combination of technology and prior capitalization has driven down the cost of studio recording, both lowering the necessary a prior knowledge to record well, and putting excellent mastering tools in the hands of many at low cost.

What precise value are the members of the RIAA providing today? Please demonstrate how these members provide an essential value that cannot be shouldered by individual artists (e.g. Macklemore & Ryan Lewis)

Comment · 12 years ago
The example cited makes two decisions which are not articulated explicitly but are decisions one can make and which have benefits and costs. They are:

1) The function correctly executes on the class of things for which (.toString thing) has a sensible run time invocation.

2) The function delays examination of the correct class of its argument from compile time to run time.

1 is a benefit, in that in a dynamic system it is possible that something which, at compile time, does not have a sensible .toString invocation, can gain it at run time and then participate in the function.

2 is a cost, in that you have to delay classification to the instant in which you try to invoke .toString

This tradeoff is elemental and there will be systems you can build by embracing it that will never be possible in strongly typed languages. You'll be able to build isomorphs of them, but doing so will involve expressing significantly more ideas to get there.

Comment · 12 years ago
One of Clojure's fundamental opinions, asserted by the language eagerly, is that vector quantities should be treated as values the way scalar quantities are in most languages. Specifically, this means that when you operate with a list and append to it, instead of modifying the value of the next (cdr) pointer in the last node, you create a new list and return the new list as the result of the append operation. These immutable collections afford certain classes of algorithm that destructively modified ones do not. Rich reviews this concept pretty well here: http://www.infoq.com/presentations/Value-Values

This story doesn't spend much time discussing this particular opinion of Clojure's or why you would choose to circumvent it by making a mutable linked list. Additionally by virtue of skipping the immutability discussion, it fails to discuss how append to the head of a list is crucially different from append to the tail when working with data structurally sharing underlying data.

Additionally it prefers to define an interface over a protocol (using definterface instead of defprotocol), and it uses camelCase naming instead of Clojure's culturally embraced hyphen-cased naming.

In short this describes a way to build a data structure in Clojure, but is not a particularly good as an example to be followed of how you should build data structures in Clojure. johnwalker cited a couple more idiomatic examples, e.g. data.finger-trees: https://github.com/clojure/data.finger-tree/blob/master/src/...

Comment · 12 years ago
The way I read it he's proposing two things:

1) Refer to the analysis of Root Mean Square Error always by that name. (RMS is already often used in certain jargon instead of stddev).

2) Stop treating RMS as a default measure of variance. Treat Mean Absolute Deviation as the default measure of variance, because the figure it provides is more consistent with people's psychological interpretation.

It's not really retiring RMS, just retiring the idea that it is a good default statistical analysis.

Comment · 13 years ago
The core point is the same: With sufficient test coverage, you can change one variable (Python 3 vs 2) and control for all others. Tests are not an end, they are a means to an end; the courage to change your software in the face of a constantly changing world.

Sounds like you're not there, but maybe you have specific domains of EVE that you feel comfortable changing at your whim. That's the success to focus on.

Comment · 13 years ago
BTC aren't quite tulips, but the criticism is well founded that it isn't yet a good currency. A perfect currency would possess the following qualities:

Perfectly Fungible

Perfect Liquidity

Perfect Stability

Right now bitcoins are commodities. Any bitcoin is equally valuable as any other bitcoin; bitcoin's value derives from its purchasing power and from its exchange rate to other mediums of exchange. It has great liquidity and fungibility. However it has inherent stability problems as well as ambient ones:

Currently it experiences volatility by virtue of transactions not being demoninated in BTC, and of its exchange rate to other mediums of exchange. A large part of this is because it is consistently attracting large pools of people who wish to acquire it. The recent price spike appears to be a consequence of Chinese interest in acquiring bitcoin rapidly increasing. Eventually the number of people who want to possess bitcoins will grow as a function of the population on the planet, rather than as a function of new groups of people deciding it has become appealing. This will introduce some stability.

However, there's a fundamental flaw in that the pool of bitcoins is fixed, and that possessors know the finite size of the pool of bitcoins a priori. This exerts deflationary pressure on BTC, and as others have noted, discourages its spending. BTC is vastly more liquid than gold is, for example, but the stability of its value will always be an impediment to its usefulness as a currency.

This doesn't spell the doom of Bitcoin; it doesn't need to be a perfect currency, just a better currency than other currencies. It is already the most liquid commodity on the planet. It is at least as fungible as USD; attempts by coinvalidation to ruin this notwithstanding. Should the deflationary pressure of bitcoin compared to its circulation become sufficiently small, it will have inherent qualities to make it the best currency available, which can lead to it becoming more widespread.

A currency with lower transaction costs in time, and which has growth characteristics which trend toward following the value of productive output of the human race will certainly be better. USD are inherently worse.

Comment · 13 years ago
The ring is still ambiguous. It is never characterized properly as a totem (Cobb never uses it awake, that we see). If you interpret it as a symbolic representation of his mental affiliation with Mal, then:

a) At the end of the movie he is awake, and he really meets his children. The lack of the ring is consistent with all available evidence prior to this point because he only has the ring on when he is asleep.

b) At the end of the movie he has successfully escaped Limbo twice. Cobb has mastered his own psyche; he has achieved closure on Mal's death; he has finally embraced in his own mind that the Mal in the dream is just a ghost, and can be in the dream without the ring. He can dream again without Mal invading from his subconscious.

Comment · 13 years ago
As I read the article, the address is owned by DPR and the FBI seized the associated wallet.
Comment · 13 years ago
Communist countries dictated by political fiat where labor resources were allocated, what industries would be engaged in, and how the capitalized wealth of the country would be reinvested.

They didn't just go around giving everyone an income that kept them from living in a gutter.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton