Skip to content

Commit

Permalink
kill reddit links
Browse files Browse the repository at this point in the history
  • Loading branch information
raganwald committed Jul 12, 2015
1 parent bbc0072 commit 7189fb3
Show file tree
Hide file tree
Showing 24 changed files with 24 additions and 25 deletions.
2 changes: 1 addition & 1 deletion _posts/2014-01-19-prototypes-are-not-classes.md
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -173,4 +173,4 @@ What they *really mean* is that JavaScript has metaobjects, not classes.


[C++]: https://en.wikipedia.org/wiki/C%2B%2B [C++]: https://en.wikipedia.org/wiki/C%2B%2B


(discussions on [hacker news](https://news.ycombinator.com/item?id=7084794) and [reddit](http://www.reddit.com/r/javascript/comments/1vlm6f/prototypes_are_not_classes/)) (discuss on [hacker news](https://news.ycombinator.com/item?id=7084794))
2 changes: 1 addition & 1 deletion _posts/2014-03-10-writing-oop-using-oop.md
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ From there, you can go to places like flavouring methods with before- and after-


All this is certainly not *necessary* for writing good JavaScript programs. But if we do buy the proposition that OO is a good idea for our domain, shouldn't we ask ourselves why we aren't using it for our classes? All this is certainly not *necessary* for writing good JavaScript programs. But if we do buy the proposition that OO is a good idea for our domain, shouldn't we ask ourselves why we aren't using it for our classes?


(discuss on [hacker news](https://news.ycombinator.com/item?id=7377250) and [reddit](http://www.reddit.com/r/programming/comments/203rlw/writing_oop_using_oop_javascript/)) (discuss on [hacker news](https://news.ycombinator.com/item?id=7377250))


p.s. A few people have pointed out that if you want a subset of classes to share functionality, alternatives such as mixing in traits are superior to subclassing `Class`. This is an **excellent** observation, and it's the kind of thinking this post is trying to provoke: If you start thinking of metaobjects (call them classes if you like) as first-class objects, you start thinking of programming them using the tools and techniques you find most appropriate for programming domain objects. p.s. A few people have pointed out that if you want a subset of classes to share functionality, alternatives such as mixing in traits are superior to subclassing `Class`. This is an **excellent** observation, and it's the kind of thinking this post is trying to provoke: If you start thinking of metaobjects (call them classes if you like) as first-class objects, you start thinking of programming them using the tools and techniques you find most appropriate for programming domain objects.


Expand Down
2 changes: 1 addition & 1 deletion _posts/2014-04-10-mixins-forwarding-delegation.md
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -655,4 +655,4 @@ We've also seen how to implement "later binding" delegation by delegating or for


We deliberately haven't discussed prototypes or the things you can build with prototypes (like classes). Instead, we take our understanding gleaned from these prototype-less techniques to help us understand what prototypes offer and what tradeoffs they make. We deliberately haven't discussed prototypes or the things you can build with prototypes (like classes). Instead, we take our understanding gleaned from these prototype-less techniques to help us understand what prototypes offer and what tradeoffs they make.


(discuss on [hacker news](https://news.ycombinator.com/item?id=7566879) and [reddit](http://www.reddit.com/r/javascript/comments/22p3ex/mixins_forwarding_and_delegation_in_javascript/)) (discuss on [hacker news](https://news.ycombinator.com/item?id=7566879))
2 changes: 1 addition & 1 deletion _posts/2014-04-26-what-does-javascript-value.md
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -368,7 +368,7 @@ This applies to transforming and composing functions, and it also applies to tra


![Harpo Marx and three of his children](/assets/images/harpo.jpg) ![Harpo Marx and three of his children](/assets/images/harpo.jpg)


(discuss on [reddit](http://www.reddit.com/r/javascript/comments/2478ck/javascript_values_algebra/))


--- ---


Expand Down
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -60,4 +60,4 @@ Which leaves me offering some free advice: There's plenty of room for new progra


![Harpo Marx and three of his children](/assets/images/harpo.jpg) ![Harpo Marx and three of his children](/assets/images/harpo.jpg)


(discuss on [reddit](http://www.reddit.com/r/programming/comments/261cu6/how_to_trick_the_gullible_into_learning_a_new/))
2 changes: 1 addition & 1 deletion _posts/2014-06-15-immutable-structs.md
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -398,7 +398,7 @@ Funny we should mention that. The Clojure and ClojureScript people have systemat


Have a look at Mori. Then consider whether immutable structs could be useful in your code. Have a look at Mori. Then consider whether immutable structs could be useful in your code.


(discuss on [reddit](http://www.reddit.com/r/javascript/comments/28gycg/structs_and_immutablestructs/) and [hacker news](https://news.ycombinator.com/item?id=7911134)) (discuss on [hacker news](https://news.ycombinator.com/item?id=7911134))


--- ---


Expand Down
1 change: 0 additions & 1 deletion _posts/2014-07-09-javascript-constructor-problem.md
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -253,4 +253,3 @@ var arrayOfSevereProblems = problems.filter(Fubar.is);


There you have it: Constructors that fail when called without `new` are a potential problem, and three solutions we can use are, respectively, auto-instantiation, overloading the constructor, or killing such calls with fire. There you have it: Constructors that fail when called without `new` are a potential problem, and three solutions we can use are, respectively, auto-instantiation, overloading the constructor, or killing such calls with fire.


(discuss on [reddit](http://www.reddit.com/r/javascript/comments/2acr9f/a_javascript_constructor_problem_and_three/))
2 changes: 1 addition & 1 deletion _posts/2014-09-28-600-months.md
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -48,6 +48,6 @@ I laugh at the joke about spending 600 months becoming incredibly productive in


Hmmm. Hmmm.


(discuss on [reddit](http://www.reddit.com/r/programming/comments/2hu3z2/the_600month_learning_curve/))


--- ---
2 changes: 1 addition & 1 deletion _posts/2015-02-07-tail-calls-defult-arguments-recycling.md
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -429,7 +429,7 @@ For these and other reasons, almost all languages today make it possible to use


Although we showed how to use tail calls to map and fold over arrays with `[first, ...rest]`, in reality this is not how it ought to be done. But it is an extremely simple illustration of how recursion works when you have a self-similar means of constructing a data structure. Although we showed how to use tail calls to map and fold over arrays with `[first, ...rest]`, in reality this is not how it ought to be done. But it is an extremely simple illustration of how recursion works when you have a self-similar means of constructing a data structure.


[hacker news](https://news.ycombinator.com/item?id=9019554) | [reddit](http://www.reddit.com/r/javascript/comments/2v4moc/tail_calls_default_arguments_and_excessive/) | [edit this page](https://github.com/raganwald/raganwald.github.com/edit/master/_posts/2015-02-07-tail-calls-defult-arguments-recycling.md) [hacker news](https://news.ycombinator.com/item?id=9019554) | [edit this page](https://github.com/raganwald/raganwald.github.com/edit/master/_posts/2015-02-07-tail-calls-defult-arguments-recycling.md)


--- ---


Expand Down
4 changes: 2 additions & 2 deletions _posts/2015-02-21-interviewing-for-a-front-end-job.md
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -271,10 +271,10 @@ The Carpenter smiled. "I forgot about them, it's been a while. So, do They Live?


--- ---


[hacker news](https://news.ycombinator.com/item?id=9087398) | [reddit](http://www.reddit.com/r/javascript/comments/2wpkm7/interviewing_for_a_javascript_job/) | [edit this page](https://github.com/raganwald/raganwald.github.com/edit/master/_posts/2015-02-21-interviewing-for-a-front-end-job.md) [hacker news](https://news.ycombinator.com/item?id=9087398) | [edit this page](https://github.com/raganwald/raganwald.github.com/edit/master/_posts/2015-02-21-interviewing-for-a-front-end-job.md)


--- ---


p.s. [(unlikely to be) The Last Word on Interviewing for a JavaScript Job](http://raganwald.com/2015/02/23/the-last-word-on-interviewing.html) p.s. [(unlikely to be) The Last Word on Interviewing for a JavaScript Job](http://raganwald.com/2015/02/23/the-last-word-on-interviewing.html)


p.p.s. The Carpenter probably cribbed the solution from [The "Drunken Walk" Programming Problem](http://raganwald.com/2013/02/17/a-drunken-walk.html), and [Solving the "Drunken Walk" problem with iterators](http://raganwald.com/2013/02/18/drunken-walk-solution.html). p.p.s. The Carpenter probably cribbed the solution from [The "Drunken Walk" Programming Problem](http://raganwald.com/2013/02/17/a-drunken-walk.html), and [Solving the "Drunken Walk" problem with iterators](http://raganwald.com/2013/02/18/drunken-walk-solution.html).
2 changes: 1 addition & 1 deletion _posts/2015-02-23-the-last-word-on-interviewing.md
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -405,4 +405,4 @@ It's just a story, no big deal. But FWIW, I tried to make this about three reaso


--- ---


[hacker news](https://news.ycombinator.com/item?id=9097297) | [reddit](http://www.reddit.com/r/javascript/comments/2wwdi7/unlikely_to_be_the_last_word_on_interviewing_for/) | [edit this page](https://github.com/raganwald/raganwald.github.com/edit/master/_posts/2015-02-23-the-last-word-on-interviewing.md) [hacker news](https://news.ycombinator.com/item?id=9097297) | [edit this page](https://github.com/raganwald/raganwald.github.com/edit/master/_posts/2015-02-23-the-last-word-on-interviewing.md)
2 changes: 1 addition & 1 deletion _posts/2015-03-12-symmetry.md
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -616,7 +616,7 @@ p.p.s. Some of this material was originally published in [Reusable Abstractions


--- ---


| [reddit](http://www.reddit.com/r/javascript/comments/2ytcu1/symmetry_and_decorators_in_es6/) | [edit this page](https://github.com/raganwald/raganwald.github.com/edit/master/_posts/2015-03-12-symmetry.md) | | [edit this page](https://github.com/raganwald/raganwald.github.com/edit/master/_posts/2015-03-12-symmetry.md) |


--- ---


Expand Down
2 changes: 1 addition & 1 deletion _posts/2015-04-01-partial-application.md
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -298,7 +298,7 @@ So there's good reason to have left-, right-, and arbitrary partial application


--- ---


| [reddit](http://www.reddit.com/r/javascript/comments/312kvs/partial_application_in_ecmascript_2015/) | [hacker news](https://news.ycombinator.com/item?id=9307444) | [edit this page](https://github.com/raganwald/raganwald.github.com/edit/master/_posts/2015-04-01-partial-application.md) | | [hacker news](https://news.ycombinator.com/item?id=9307444) | [edit this page](https://github.com/raganwald/raganwald.github.com/edit/master/_posts/2015-04-01-partial-application.md) |


--- ---


Expand Down
2 changes: 1 addition & 1 deletion _posts/2015-04-03-left-variadic.md
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ ECMAScript 2015 makes it easy to gather parameters or array elements from the ri


--- ---


| [reddit](http://www.reddit.com/r/javascript/comments/31qsme/leftvariadic_functions_in_javascript/) | [edit this page](https://github.com/raganwald/raganwald.github.com/edit/master/_posts/2015-04-03-left-variadic.md) | | [edit this page](https://github.com/raganwald/raganwald.github.com/edit/master/_posts/2015-04-03-left-variadic.md) |


--- ---


Expand Down
2 changes: 1 addition & 1 deletion _posts/2015-04-24-hilberts-school.md
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -309,6 +309,6 @@ He imagines some kind of crazy infinite series of ever-greater cosmological cont


--- ---


| [reddit](http://www.reddit.com/r/javascript/comments/33vcbq/hilberts_grand_javascript_school_2015_edition/) | [hacker news](https://news.ycombinator.com/item?id=9439479) | [edit this page](https://github.com/raganwald/raganwald.github.com/edit/master/_posts/2015-04-24-hilberts-school.md) | | [hacker news](https://news.ycombinator.com/item?id=9439479) | [edit this page](https://github.com/raganwald/raganwald.github.com/edit/master/_posts/2015-04-24-hilberts-school.md) |


--- ---
2 changes: 1 addition & 1 deletion _posts/2015-05-08-carnac-the-magnificent.md
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ So if you are interviewing programmers, here's your homework: Go through all of


I think you'll find that eliminating Carnac the Magnificent from your interviewing process will make it better. I think you'll find that eliminating Carnac the Magnificent from your interviewing process will make it better.


(discuss on [reddit](http://www.reddit.com/r/programming/comments/35afm0/carnac_the_magnificent/) and [hacker news](https://news.ycombinator.com/item?id=9511700)) (discuss on [hacker news](https://news.ycombinator.com/item?id=9511700))


--- ---


Expand Down
2 changes: 1 addition & 1 deletion _posts/2015-05-11-javascript-classes.md
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ In sum, JavaScript is not exactly like any other object-oriented programming lan


--- ---


(discuss on [reddit](http://www.reddit.com/r/javascript/comments/35mg2g/oop_javascript_and_socalled_classes/))


--- ---


Expand Down
2 changes: 1 addition & 1 deletion _posts/2015-05-30-de-stijl.md
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -427,7 +427,7 @@ Whereas, `const` does not make functions simpler than `let`, but does provide a


--- ---


(discuss on [reddit](http://www.reddit.com/r/javascript/comments/382dd6/de_stijl_how_necessary_are_var_let_and_const/) and [hacker news](https://news.ycombinator.com/item?id=9637871)) (discuss on [hacker news](https://news.ycombinator.com/item?id=9637871))


--- ---


Expand Down
2 changes: 1 addition & 1 deletion _posts/2015-06-04-classes-are-expressions.md
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -329,7 +329,7 @@ This pattern of creating a class that has private variables emerged from combini


There's no need to have special keywords or magic namespaces. That keeps the "surface area" of the language small, and provides a surprising amount of flexibility. If we want to, we can build mixins, traits, eigenclasses, and all sorts of other constructs that have to be baked into other languages. There's no need to have special keywords or magic namespaces. That keeps the "surface area" of the language small, and provides a surprising amount of flexibility. If we want to, we can build mixins, traits, eigenclasses, and all sorts of other constructs that have to be baked into other languages.


(discuss on [hacker news](https://news.ycombinator.com/item?id=9660658) and [reddit](http://www.reddit.com/r/javascript/comments/38joif/classes_are_expressions_and_why_that_matters/)) (discuss on [hacker news](https://news.ycombinator.com/item?id=9660658))


--- ---


Expand Down
2 changes: 1 addition & 1 deletion _posts/2015-06-10-mixins.md
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ In Ruby, for example, mixins are easy because a special feature, *modules* was b


JavaScript's choice to build OOP out of simple parts--objects, functions, and properties--makes the development of new ideas possible. JavaScript's choice to build OOP out of simple parts--objects, functions, and properties--makes the development of new ideas possible.


(discuss on [hacker news](https://news.ycombinator.com/item?id=9713076) and [reddit](http://www.reddit.com/r/javascript/comments/39bgl9/prototypes_are_objects_and_why_that_matters/)) (discuss on [hacker news](https://news.ycombinator.com/item?id=9713076))


--- ---


Expand Down
2 changes: 1 addition & 1 deletion _posts/2015-06-20-purely-functional-composition.md
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ const ColouredTodo = ComposeWithClass(Todo, Coloured);


A "purely functional" approach to composing functionality is appropriate when we wish to compose behaviour with classes, but do not wish to mutate a class that is used elsewhere. One approach is to extend the class into a subclass, and mix behaviour into the newly created subclass. A "purely functional" approach to composing functionality is appropriate when we wish to compose behaviour with classes, but do not wish to mutate a class that is used elsewhere. One approach is to extend the class into a subclass, and mix behaviour into the newly created subclass.


(discuss on [hacker news](https://news.ycombinator.com/item?id=9762055) and [reddit](http://www.reddit.com/r/javascript/comments/3aj1t5/purely_functional_composition/)) (discuss on [hacker news](https://news.ycombinator.com/item?id=9762055))


--- ---


Expand Down
2 changes: 1 addition & 1 deletion _posts/2015-06-26-decorators-in-es7.md
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -333,6 +333,6 @@ Decorators have not been formally approved, however there are various implementa


If you prefer syntactic sugar that gives the appearance of a declarative construct, combining a `mixin` function with ES7's class decorators does the trick. If you prefer syntactic sugar that gives the appearance of a declarative construct, combining a `mixin` function with ES7's class decorators does the trick.


(discuss on [reddit](http://www.reddit.com/r/javascript/comments/3b7urd/using_es7_decorators_as_mixins/) and [hacker news](https://news.ycombinator.com/item?id=9786706)) (discuss on [hacker news](https://news.ycombinator.com/item?id=9786706))


--- ---
2 changes: 1 addition & 1 deletion _posts/2015-06-28-method-decorators.md
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ In the end, we can either write specialized decorators designed specifically for


Function decorators can be used as method decorators, provided that we take care to handle `this` properly, and manage state carefully when required. The patterns for creating and using method decorators in JavaScript are straightforward, in large part because underneath the syntactic sugar for classes, we are still working with functions, objects, and delegation through prototypes. Function decorators can be used as method decorators, provided that we take care to handle `this` properly, and manage state carefully when required. The patterns for creating and using method decorators in JavaScript are straightforward, in large part because underneath the syntactic sugar for classes, we are still working with functions, objects, and delegation through prototypes.


(discuss on [reddit](http://www.reddit.com/r/javascript/comments/3bj2ti/method_decorators_in_ecmascript_2015_and_beyond/))


--- ---


Expand Down
2 changes: 1 addition & 1 deletion _posts/homoiconic/2012-12-01-combinators-in-js.md
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ This maps the array, getting the name if there is a value.


In [Part II], we'll look at a more complex recipe, "partial," and some combinators that are specifically tuned for working with instance methods: "bound," "send," and "fluent." (*cough*). The recipes in this post are from the book [JavaScript Allongé](http://leanpub.com/javascriptallongesix), a book focused on working with functions in JavaScript, including combinators, constructors, methods, and decorators. You can download a [free sample PDF](http://samples.leanpub.com/javascriptallongesix-sample.pdf). In [Part II], we'll look at a more complex recipe, "partial," and some combinators that are specifically tuned for working with instance methods: "bound," "send," and "fluent." (*cough*). The recipes in this post are from the book [JavaScript Allongé](http://leanpub.com/javascriptallongesix), a book focused on working with functions in JavaScript, including combinators, constructors, methods, and decorators. You can download a [free sample PDF](http://samples.leanpub.com/javascriptallongesix-sample.pdf).


[Feedback welcome](mailto:reg@braythwayt.com), or discuss these ideas on [reddit](http://www.reddit.com/r/javascript/comments/14we7r/combinator_recipes_for_working_with_objects_in/) and [hacker news](http://news.ycombinator.com/item?id=4925658). [Feedback welcome](mailto:reg@braythwayt.com), or discuss these ideas on [hacker news](http://news.ycombinator.com/item?id=4925658).


--- ---


Expand Down

0 comments on commit 7189fb3

Please sign in to comment.