Learning from Rails' failures - <AUTHOR> http://merbist.com/2012/02/29/learning-from-rails-failures/ <comment><USER4> The article doesn't really offer much in the way of concrete suggestions other than handwavy stuff like "more documentation" and "it changes too fast" and "it doesn't change fast enough".

Here's my suggestions:

\- make a breaking change to the gem versioning system to force all library, framework and gem authors to use versions properly. If you make a breaking change in your API, you MUST change the major number. Rails made a couple of breaking changes in the transition from 2.3.5 to 2.3.6, for Pete's sake, and a huge number of breaking changes in any of their 'minor number' upgrades. Many gems are even worse. Yes, this is going to cause massive version number inflation. So what? Chrome increments their major number even faster and with less reason.

\- If a change to a plugin breaks on an older version of Rails, tell the authors so they can update their gemspec so that other users of older versions of Rails don't get the update.

\- Make it easier to contribute to the documentation. It's already pretty easy, but make it easier. Add an "edit this page" link on every documentation page that goes to the corresponding "edit this file" in the docrails project in github.

\- 90% of the "documentation" for Rails can be found randomly scattered across the internet on blog posts. Of course, these are usually out of date. "Encourage" (with a stick, perhaps) people to stop doing this and instead to add to the documentation. If that's not appropriate, stack overflow or some other blessed site. Not a random blog post that's never going to get updated and will probably disappear in a few years.

<comment><USER5> > make a breaking change to the gem versioning system to force all library, > framework and gem authors to use versions properly.

I really like the RubyGems rational versioning policy ( <http://docs.rubygems.org/read/chapter/7> ) and wish everyone followed that.

I think it might be harder for gems like Rails that are actually metagems. But I do agree that it's surprising for a move from 2.3.5 to 2.3.6 to break backwards compatibility. Have we forgotten Ruby's ideal of the principle of least surprise?

Perhaps a good compromise between what Rails is currently doing and what it should be doing is to add a fourth version number. When the fourth version number changes, you can rest assured that the change is backwards compatible. (However, there is always the danger that some plugin/engine/gem author monkey-patched a part of Rails which could make their code break during a "backwards-compatible" upgrade to Rails.)

<comment><USER4> I was probably being a little bit too harsh: the 2.3.5 to 2.3.6/2.3.7 changes were not intentionally breaking, but given that they added a major new feature (XSS support), it's not surprising. (2.3.6 was completely busted, but 2.3.7 released a day after 2.3.6 still contained breaking API changes for us)

I like the 4th version number idea. Since everybody in the Ruby community seems to think that it's okay for major breaking changes to occur on a minor version bump, let's adjust policy to match practice rather than the other way around. Let's call the first number the "political" number, the second the "major", the third "minor" and fourth "patch".

<comment><USER5> > Since everybody in the Ruby community seems to think that it's okay for > major breaking changes to occur on a minor version bump

I would say this is true for Rails, but I think (or hope!) there is a consensus (or at least a majority opinion?) among Ruby developers that any gem version that breaks compatibility should change the major (1st) version number. Otherwise, the ~> operator used by bundler and RubyGems becomes meaningless.

All of the gems that I publish strictly follow the rule that any change that could break code will bump the 1st version number, any change that adds features/behavior will bump the 2nd version number, and any change that has no interface effect (bug fixes, performance enhancements, documentation tweaks) will bump the 3rd version number.

<comment><USER4> I hope you're right.

But luckily ~> isn't completely broken. In my rails apps I use ~> x.y.z to ensure that I only pull in patch level changes.

</comment></comment></comment></comment></comment><comment><USER6> The nice thing about negative posts like this — or, somewhat negative, in this case — is that they validate the bottled up frustrations of developers who thought the same thing.

For example, I always wondered if I was crazy to be frustrated that Rails gratuitously changed the method for grabbing all records from .find_all to .find(:all) to .all. In other words, they went from having a full method to having a param to a broader method and then BACK to having a full method. And along the way they disabled the old methods, without even providing stubs (e.g. a find_all that called find(:all), until at least one full version had passed).

There also seemed to be flip flopping on Rails engines. Engine support was built in to early versions of Rails, and an actively community sprung up. Then at one point DHH was actively discouraging them, saying they were a mistake, to the point where the author of one engine I relied on (login engine) just abandoned it and stopped updating it for new versions of Rails so I had to write a bunch of login code to migrate to some version of Rails (2 maybe?). ("This is a sideshow project" --DHH [http://weblog.rubyonrails.org/2005/11/11/why-engines-and- com...](http://weblog.rubyonrails.org/2005/11/11/why-engines-and-components- are-not-evil-but-distracting) ) Now engines seem to be back again - <USER2> documentation states "Since Rails 3.0, every Rails::Application is just an engine" <http://edgeapi.rubyonrails.org/classes/Rails/Engine.html> So engines went from a "distracting... sideshow" to the core of rails apps. Hmm.

It's somewhat validating to read I'm not the only one frustrated at the common and sometimes publicly reverted changes in rails.

<comment><USER7> _In other words, they went from having a full method to having a param to a broader method and then BACK to having a full method._

You may know this but I wanted to note that this was not a "revert" as such in case less informed third parties thought this was capricious API design at its worst.

Today's #all is rather different to yesterday's #find_all in that the former supports chaining and is lazy evaluated, whereas the latter used to immediately hit the DB and required criteria to be included all in the one call.

<comment><USER6> Interesting. Do you know (honest question) why they didn't just make find(:all) work that way? In my imagined perfect world they'd have never got rid of find_all in the first place, and they'd have just added the lazy eval to it later. Or, failing that, done similar with find(:all).

Enjoy your podcast.

<comment><USER7> As I'm not on the Rails core team and didn't really pay much attention to their design process, all I can offer is the _major_ rewrite of ActiveRecord from 2 to 3 and, specifically, the introduction of Arel in AR3 had huge implications for the API design.

Specifically, check out the README at <https://github.com/rails/arel> .. if you're familiar with Rails 2 and earlier, the sorts of things you'll see there probably seem quite alien to you. I believe AR had to change a lot to fit in with this approach to SQL generation.

(And thanks!)

</comment></comment></comment></comment><comment><USER8> I learned from my own mistakes, not Rails per se. (not really, I knew I was doing it wrong the whole time)

I built a bank/credit card company using Rails (back in 2005/2006). I didn't know much about Ruby or Rails by then, I was in a hurry (startup hurry). No one close to me was using Rails, so I was pretty much on my own. God, did I do Rails wrong. We managed to fix some things by 2008 but the mess came back and we now are stuck with this:

~ 4k models, 5k controllers, 7k views: Ruby 1.8.7 and Rails 2.3 stuck.

It is our fault that we got to the point where technical debt is making us build from scratch a new app while the existing one is perfectly functional. There are so many common design problems in our app that we are lucky it works so well.

We are almost finishing a new app in rails 3, we are having some trouble, but it's not the same I hear people complaining about:

\- Our routes.rb is hitting 2mb, reminds me of my old struts.xml

\- I do love REST, but it bites. specially large, complex applications.

\- Testing times :(

\- I need a EJB3 replacement, not activeresource. I need a way to share remote models to many other rails apps in a NON-RESTFULL way.

\- My peers love url helper methods, I don't.

\- i18n could be improved: currency

I had similar problems with Spring, Seam and JSF. So...

<comment><USER9> You can write Java in any language ;)

I've been talking with guys from a big 3 letter company here and they started using Rails by moving their Java devs to do that. They ended up with 200K models, mostly generated by some scripts and stuff. some people just miss the point ;)

<comment><USER10> You're doing it wrong :)

</comment></comment></comment><comment><USER11> Interesting article but one thing is bothering me: Rails 3 being far from offering the same perf than Merb can offer.

Isn't that essentially comparing apples to oranges? People seem to think that Rails being "slow" is just the symptom of a bad code base and awful design choices by the developer team. Why not put more emphasis on the fact that the two frameworks cater to different people, make different assumptions and decisions in terms of design?

That aside, there's one point where that article really shines: paying hommage to the wonderful Aaron "@tenderlove" Patterson for investing loads of time on the innards of Rails to try and hunt performance issues, squash bugs and question the framework's architecture every step of the way.

This is especially important I think because it goes to prove that "fixers" still exist. In a programming world where everyone would rather roll out his own code base then try to fix, patch or contribute to existing and established projects and frameworks, it's very comforting cause that's obviously when the community as a whole yields the best immediate results.

<comment><USER4> Yes, the @tenderlove callout was very nice. It's a thankless job that attracts criticism, like samgranieri's just below. Samgranieri's criticism is quite likely valid, but it's so often the lack of offsetting pats on the back that make such jobs discouraging.

<comment><USER12> I'm not criticizing the work that @tenderlove did on journey, I'm just curious why he replaced josh peek's router. The reader on journey's homepage says the reasons are too complex, which piqued my curiosity. @tenderlove is doing a hell of a job on rails (and ruby itself) and I'm glad he's helping out

</comment></comment></comment><comment><USER4> Rails does upgrades better than any other fast-moving large open source project I've seen. They have things like the rails_upgrade plugin, which most projects don't offer.

Projects that do upgrades better than Rails do so because they either move a lot slower or they have a lot smaller API area or they don't have a kajillion plugins available, many of which aren't actively maintained yet are still useful.

</comment><comment><USER13> Reading that Rails is an "older project" kind of took me by surprise. I guess in internet years, it's about middle age now.

My personal feeling is that Rails still does way more right than it does wrong. I find that I'm gravitating to the Node frameworks that are modeled after Rails (tower.js & railway) because working with straight up Express.js or even sinatra for non-trivial apps is kind of tedious.

</comment><comment><USER12> I've been using rails since 2005. Here are my random observations:

I've never been a merb user, so I cant speak for how much I miss merb. Sinatra seems to take the place of merb. I do like the result of the merge, rails 3. Yehuda Katz did a hell of a job making rails easier to understand and modify under the hood (with railties, engines, stuff like that). Bundler works a lot better than config.gem. Adding in rack was huge. I'm still not a huge fan of the sprockets asset pipeline. Jammit could be a better solution. I dont understand why @tenderlove replaced josh peek's router and replaced it with journey. Rails generators for coffeescript should generate tests just like the ruby files do. Something like phantomjs seems to do the trick.

</comment><comment><USER14> Relating stability and non-breaking facilities with WordPress is an extremely poor comparison, in my opinion.

<comment><AUTHOR> I agree that it isn't the best comparison but I wanted to give an example of a product making upgrades/migration really easy.

</comment></comment><comment><USER15> Here's my take on this: [http://www.mwdesilva.com/posts/40-pondering-learning- from-ra...](http://www.mwdesilva.com/posts/40-pondering-learning-from-rails- failures)

</comment><comment><USER16> Hi Matt, you make some interesting points. Here's what I think as a relative newcomer to both Ruby and Rails (but not to building large/busy websites).

MIGRATION/UPGRADES & STABILITY VS PLAYGROUND ZONE. I appreciate what you're saying and yes upgrading could be easier - but the benefit of the way Rails does it now, is that uptake is significantly higher, because it is practically pushed on you. I think I prefer this because it helps keep Rails cutting edge (one of the reasons I choose Rails over other frameworks). Maybe I'll change my mind once I've got a few apps that need upgrading - then again maybe not, I've always preferred redoing things from scratch than upgrading/patching things anyway (with app-powered sites such as wordpress/vbulletin - I would redo the customisations from scratch for every major upgrade - but happy to patch minor updates).

PUBLIC/PRIVATE/PLUGIN APIS. I don't really have an opinion on this.

RAILS/MERB MERGE WAS A MISTAKE. I remember when I first started researching web frameworks, the Merb and Rails split worried me - as I thought it would end up in two factions (two frameworks basically aiming for the same thing) and would split the community. So the merge did two things (for me anyway) showed me the community is united (and not affected by egos), and made me feel better about coming to Ruby (instead of going with a framework in another language).

TECHNICAL DEBTS. Again I don't really have an opinion on this being a relative newcomer - but I guess many people would disagree.

KEEP THE COST OF ENTRY LEVEL LOW. This one I think I am qualified to comment on :D I didn't choose Rails because it was 'easy' to get into (although it is, because it is written in Ruby). I choose Rails because it was the best web framework. If people want wordpress-ease, they should use wordpress - a web framework is completely different to an off-the-shelf app which is designed for one main purpose, even if with some leeway for customisation. I left off- the-shelf packages for Rails because I hated being restricted by them, and I was prepared to learn to program to use Rails. To my surprise, learning Ruby and Rails was _much_ easier than learning say PHP and CakePHP (which I tried briefly). Also, I believe anyone serious about learning Ruby and Rails, can easily, in about 3 to 4 months by following this guide: <http://astonj.com/tech/best-way-to-learn-ruby-rails/>

DOCUMENTATION I have to disagree - I _love_ the Rails Guides, I've been reading them from start to finish on my Kindle (currently half way through Digging Deeper). Of course maybe like almost anything they could be better, but I disagree that they're "far from great". Try working with a forum app where documentation is next to non-existent lol.

SUMMARY. I came to Rails because I wanted a cutting edge web framework, one that was written in a clean, modern language - and that's what will keep me here. I'm aware and happy to continue learning and keeping myself up to date to stay current. What I don't want is a framework to lag behind others - <USER3> would very quickly make me think about jumping ship... and I reckon a large majority of others think the same too.</comment>


Why Napalm Is a Cautionary Tale for Tech Giants Pursuing Military Contracts - <AUTHOR> https://www.nytimes.com/2019/03/04/technology/technology-military-contracts.html <comment><AUTHOR> Alternate link to the article: [https://outline.com/yvVHvZ](https://outline.com/yvVHvZ)</comment>


Cancer World: The making of a modern disease (2010) - <AUTHOR> http://www.newyorker.com/magazine/2010/11/08/cancer-world <comment><USER2> _Chemotherapists have also faced the dilemma of whether their chief responsibility is to minimize an individual patient's suffering or to further the search for an eventual cure. When risks to a given patient may mean benefits to future sufferers, the boundary between experiment and care can blur. Mukherjee, describing experimental chemo regimens of the early sixties, recounts the controversial decisions made to concoct terrifyingly toxic cocktails for child-leukemia patients, while the physicians in charge did what pathetically little they could to make the kids more comfortable. Years afterward, and with the clearer conscience of substantial success, one oncologist recognized the dangers of what they had done: "We could have killed all of those kids." From its postwar origins to the present, the chemotherapist's predicament is the precarious balance between best-practice care and the crying need to improve current practice. In the eighties, AIDS patients started to insist on being "guinea pigs," and terminal-cancer sufferers soon followed their lead. In the current world of end-stage cancer, care and experiment can often be much the same thing._

Remember that, if you're ever in the difficult position to make a decision for yourself, or help another to make their own, regarding hospice care. Remember that you might be the one who has to realize that hope has passed, and it's time to look at palliative options. I'm not arguing against proper treatment, but there comes a time (a time which many doctors and patients fail to recognize) past which what's being done is just cruel.

<comment><USER3> I submit many of those who insist on being guinea pigs take Steve Jobs' position, "I'll be the first one to survive it or the last one to die of it", and they are really equally determined on both of those fronts. "Take me" is more powerful than "Let me go".

<comment><USER2> If that's the choice someone knowingly makes, then I can respect it. I worry that sometimes however, people like that honestly expect outcomes which are unrealistic, and suffer for it. Still, they should be free to choose.

</comment></comment></comment><comment><USER4> According to Craig Venter, early detection is what we need to eliminate cancer: [https://youtu.be/iUqgTYbkHP8?t=15m37s](https://youtu.be/iUqgTYbkHP8?t=15m37s)

I imagine sometime in this century, better early detection will become a reality.

<comment><USER3> According to Craig Venter, we should sequence everything. Preferably at his institute.</comment></comment>


Serverless Project Apex Archived - <AUTHOR> https://github.com/apex/apex <comment><AUTHOR> "This software is no longer being maintainted and should not be chosen for new projects, unless your company is interested in sponsoring the project it's unfortunately unsustainable. See this issue for more information"

[https://github.com/apex/apex/issues/932](https://github.com/apex/apex/issues/932)

edit: wrong link</comment>


Show HN: Find H1B Employers by Zipcode - <AUTHOR> http://www.h1bemployersearch.com <comment><USER2> Nice work, great improvement to similar sites.

I'm noticing an issue when trying to follow links: (Chrome, UK, Mac OS)

\- [https://www.google.com/search?q=ENFEC,%20LLC&ibp=htl;jobs](https://www.google.com/search?q=ENFEC,%20LLC&ibp=htl;jobs)

\- [https://www.google.com/search?q=OFFERUP,%20INC.&ibp=htl;jobs](https://www.google.com/search?q=OFFERUP,%20INC.&ibp=htl;jobs)

</comment><comment><USER3> Does it just not search for jobs over 500K?

<comment><AUTHOR> Looks like I got the slider restricted, I'd change it. Thanks</comment></comment>


Show HN: Breed Breakdown: Find Your New Furry Friend - <AUTHOR> http://www.breedbreakdown.com/

<comment><USER2> It seems pretty cool, but one pretty major thing: What is the selection to the right of "Protection"? My primary browsing computer is an EeePC right now, with a resolution of 1024x600. Your site clearly expects a wider resolution than this, but does not provide a horizontal scrollbar for me. Don't forget us netbooks!

<comment><AUTHOR> Crap! I made this site pretty quickly, so there's not a ton of thoughtfulness. I'll go back and try to make it work for netbooks, etc.

To give you an idea of how much I didn't care to please a lot of the audience, it doesn't work period in IE. I should probably fix that, though.

Good tip.

</comment></comment><comment><USER3> Fun to play with, but I've got to disagree with an Alaskan Malamute as "Decent" protection alongside a Collie or Dalmatian. My 52kg male is frankly terrifying and would tear chunks off an intruder!

<comment><USER3> Also, Siberian Husky is marked as "Badass" protection. Are you sure you don't have these the wrong way round? :)

</comment></comment><comment><USER4> Nice work! I found it earlier this week from <https://twitter.com/metafizzyco>

Awesome use of jQuery Isotope.

</comment><comment><USER5> Having a link to wikipedia for each dog listed would a couple of clicks. The UI was really intuitive, great job on that and the design/JS.

</comment><comment><USER6> Site not loading at this time (2046 USA Eastern)</comment>


Skype: Sorry for any inconvenience - <AUTHOR>

How nice of them!
To our valued customers:
As 2010 draws to a close, I would like to take a moment to thank each of you for your patience, understanding, and support during Skype's recent outage.
We know how important your Skype conversations are to you and we take any disruption to our service very seriously. We are pleased to confirm that Skype is back to normal allowing you to connect with friends, co-workers, family and loved ones.
As a valued customer of Skype, we would like to offer you a sincere apology and offer you our gratitude with a credit voucher worth a call of more than 30 minutes to a landline in some of our most popular countries, such as USA, UK, Germany, China, Japan. Or spend it however you like on Skype.
To redeem your voucher:
1. Go to skype.com/go/voucher
2. Enter your Skype username and password
3. Enter your unique voucher code and click redeem
Thank you for allowing us at Skype to be a part of your life. May your holidays and the New Year be a time of joy, peace, and health for you and your family.
If you require any additional information please visit http://blogs.skype.com/en/2010/12/.
Kind regards,
Tony Bates CEO Skype <comment><USER2> I got $1.00. They need not have bothered.</comment>


The building blocks of understanding are memorization and repetition - <AUTHOR> http://nautil.us/issue/40/learning/how-i-rewired-my-brain-to-become-fluent-in-math-rp <comment><USER2> TL;DR: Study foundational blocks by repeating then until you understand. Keep repeating as you build knowledge and move to "harder" things.

I like the message, but not the messenger.

Articles like this, in my point of view, fail to delivery their messages in a better way because they are simply too long and with too much noise for my taste.

The point he is trying to get across could be explained in a simpler way without the necessity of explaining how he went to the army, what he did there and all his personal history.

All this information is completely irrelevant to the main goal of the article and turn it into a boring story instead of useful piece of practical advice.

<comment><USER3> I remember first learning Quantum Field Theory. One week, my head would ache from what I was reading but by the next week, that bit would be incorporated into new parts, so the "confusing stuff" become foundation for the next week's confusing stuff. Eventually, it became intuitive.

<comment><USER4> How _do_ you learn quantum field theory? I took a tiny amount of QM in school - basically, solving the Schrodinger equation for a few simple systems. What's the next step?

<comment><USER3> I read Shrednicki[0]'s book, a pre-print is freely available online (or was 4 or so years ago). A class in Grad school solidified it for me, specifically because they related it back to physics, like the standard model.

If you're going to start learning QFT, I suggest you try to understand time- dependent perturbation theory as much as possible. Also, be sure you have a handle on special relativity and scattering theory. QFT that most people use is really those things combined.

[0] [http://web.physics.ucsb.edu/~mark/ms-qft- DRAFT.pdf](http://web.physics.ucsb.edu/~mark/ms-qft-DRAFT.pdf)

<comment><USER5> For what it's worth, that PDF says "Please DO NOT DISTRIBUTE this document. Instead, link to [http://www.physics.ucsb.edu/∼mark/qft.html](http://www.physics.ucsb.edu/∼mark/qft.html) " (which has a link to the PDF).

<comment><USER3> Fair enough. Unfortunately, I can't edit the comment now.

</comment></comment></comment></comment></comment></comment><comment><USER6> The author is arguing that 'the latest wave of educational reform in mathematics' (in the U.S.) is overemphasizing conceptual understanding, and that doing so will be damaging to students.

The author advocates instead using a memorization and repetition based approach.

I can see where she's coming from, but the argument she is making is flawed. She describes a process for developing fluency both in foreign language and mathematics, wherein she experiments and plays with the constructs being learned—this is a great suggestion, but it's not in _opposition_ to understanding: the two complement each other.

I think the error arises from making an overly strong identification between learning a foreign language and learning mathematics. If you take the representation of Euler's equation, for instance, and consider how much conceptual depth underlies it, versus a string of 20 Cyrillic characters meaning "I went to the store," or whatever—you can see the difference. You'd be wasting your time trying to get a deep understanding of the Russian phrase, but there's a reason to do it with the mathematical phrase.

<comment><USER7> > You'd be wasting your time trying to get a deep understanding of the Russian > phrase, but there's a reason to do it with the mathematical phrase.

I think you're simply wrong here.

You're not talking about the amount of conceptual depth underlying it, you're talking about the relative delta in the conceptual structures between languages you already know and the language you're learning.

On the whole, the Russian phrase has greater conceptual depth; however, Russian is closer to English than mathematics is, and thus you get greater conceptual transfer between your knowledge of English and Russian than your knowledge of English and mathematics, so more of your past experience remains relevant.

In essence, I have something like 36-72k hours considering semantically equivalent statements to the Russian one in English, while I have something like 5-10k hours of studying mathematical statements at all.

Your comment just amounts to saying that having 6x as much practice at task A as task B makes task A relatively easier, which, while true, isn't perhaps as profound as you'd meant it.

Consider this: the entire field of academic inquiry containing Euler's identity is fundamentally an effort to fully understand "I went to the store".

<comment><USER6> > you're talking about the relative delta in the conceptual structures between > languages you already know and the language you're learning

I don't think so. In both of my examples, the one from mathematics and the one from Russian, language is used as a way of _representing_ some concepts—now, the _language itself_ also has concepts underlying it, but these are about grammatical structures, lexicon, etc.—not about the subject the language is used to talk about.

To be clear, I'll call the first category of concepts 'subject concepts' and the second 'language concepts.'

When you learn a new foreign language you must learn new language concepts, but not new subject concepts. You aren't re-learning what it means for one to visit a store, you are only learning a new scheme for representing that concept, which isn't nearly as deep as the initial concept itself.

In learning mathematics you're having to pick up the language concepts _and_ the subject concepts, and the subject concepts (as in the example I gave) can be quite deep.

<comment><USER7> You've outlined my point exactly: you're comparing a case of learning language concepts to a case of learning language and subject concepts. Of course one of those is easier, but it doesn't mean that the two processes are fundamentally dissimilar, which was your initial point.

Your comment is no more insightful than to say that it's easier to learn set theory knowing category theory than it is to learn English while knowing no languages, since it's purely acquisition of language rather than subject concepts. (This is actually untrue -- which is why it's easier to say, switch to romance languages than going to an Asian one from English; there's a bit of subject conceptualization in the nature of the language concepts.)

It's not comparing apples to apples, which sort of reduces the point about the relative complexity of statements and the way that you learn the underlying concepts -- both language and subject. You're comparing the complexity differential of two encodings on the one hand and the total complexity involved in the other. Nonsense comparison.

If you want to talk about learning Russian while knowing English, why not contrast it with learning set theory while knowing category theory?

Because the language differential between spoken languages (eg, you _do_ learn new subject concepts if you learn Japanese versus English) is comparable to the difference in mathematical underpinnings, eg, the switch from set theory to category theory.

<comment><USER6> > ... it doesn't mean that the two processes are fundamentally dissimilar, > which was your initial point.

That was not my initial point. You've read the 'fundamentally' part into it.

> If you want to talk about learning Russian while knowing English, why not > contrast it with learning set theory while knowing category theory?

That is what I was doing. I'm not saying learning math versus foreign language is fundamentally different, I'm talking about _practical_ differences in actually learning one or the other: who in the audience here doesn't already speak one natural language? So, with any foreign language they will be in the position of somebody knowing category theory and attempting to learn set theory. That is by definition not, however, the case for someone trying to break into mathematics for the first time. So you always have language concepts only for a foreign language and language concepts + subject concepts for mathematics—practically speaking.

<comment><USER7> > I think the error arises from making an overly strong identification between > learning a foreign language and learning mathematics.

You explicitly begin by mentioning that you think it's the similarity between the two topics that you think others are mistaken about -- that learning language and learning mathematics shouldn't be identified (as strongly). You now say that it's okay to (strongly) identify those two processes (as being the same), we need only talk about the relative amounts of subject versus language concepts needed, given an expected background for a student.

I wish you'd admit your phrasing could be misconstrued (at the very least).

> If you take the representation of Euler's equation, for instance, and > consider how much conceptual depth underlies it, versus a string of 20 > Cyrillic characters meaning "I went to the store," or whatever—you can see > the difference. You'd be wasting your time trying to get a deep > understanding of the Russian phrase, but there's a reason to do it with the > mathematical phrase.

This statement, of course, only makes sense if you're comparing either just the language concepts of both or else the language and subject concepts of both.

Instead, your point here, as you last stated it, isn't that there's no reason to get a deep understanding of the Russian, but rather, that getting a deep understanding of the Russian is easier than getting a deep understanding of the mathematics because the deep understanding of the Russian is easier than the mathematical one to derive from your pre-existing understanding of English.

Okay, but is that really surprising? Or what you think you conveyed in that quote?

> So you always have language concepts only for a foreign language and > language concepts + subject concepts for mathematics—practically speaking.

You actually always have both, but the bulk of learning a foreign language is language concepts, while in mathematics, you're exposed to more new subject concepts, which I think is what your point is.

Again, okay. But I think the language you used to describe that initially draws a needless (and ultimately, meaningless) distinction, and that we get a lot more utility out of talking about them as the same process for students, for which they've already done part in the general language case (and general arithmetic case!), since this automatically gives us a framework where we can meaningful discuss how learning Japanese, Russian, English, Category Theory, Set Theory, etc interrelate, the relative load of different concepts to learn in each case of learning a language, the process to go through, etc in very general terms.

So I don't think we actually disagree, except on whether your initial post accurately conveys what you seem to think.

<comment><USER6> Without getting as precise as using formal mathematical notation about all of this, there is going to be sufficient ambiguity that, if you desire, you can construe it to be taking one or another subtly different stance on several points.

Interestingly, those ambiguities are pretty readily solved without the formal notation if both parties are actually interested in communicating, rather than demonstrating that an initial statement said 'X' rather than 'Y'.

You are clearly in the second camp here, so the ambiguities weren't easily resolved. _shrug_

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> I liked this article because it was in direct opposition to my beliefs (based on my own experience) and yet it gave me a different point of view and convinced me that there was some truth and value there.

I grew up in an era when we wasted a lot of time on mindless rote repetition of meaningless things (meaningless because we were not taught to understand them, only to repeat them). It was boring and useless. I learned by understanding and then applying that understanding. If you understood it, then there was no need to memorize something like f = ma because it was then obvious. But this is a whole new way of looking at it:

>If m and a were big numbers, what did that do to f when I pushed it through the equation? If f was big and a was small, what did that do to m? How did the units match on each side?

That's not thoughtless memorization, that's gaining understanding. But the author did it by active exploration via repetitively examining something from different angles. Not just rote repetition (doing the multiplication over and over again), but seeking understanding. So in a sense, the author is arguing in favor of teaching by emphasizing understanding, but explaining how to use directed repetition to do so. That makes a lot of sense. The key is that it is not mindless rote repetition, but directed, inquisitive repetition.

<comment><USER9> Agreed. I think that's the key, you learn by first grasping a basic understanding of a concept and then reinforcing it through application repetition. But the initial understanding is absolutely vital, otherwise chances are you end-up in the mindless rote repetition you mentioned.

</comment></comment><comment><USER10> This article was written by Barbara Oakley who also teaches the most popular MOOC in the world and also my favourite MOOC called Learning How To Learn: [https://www.coursera.org/learn/learning-how-to- learn](https://www.coursera.org/learn/learning-how-to-learn)

She also a upcoming book titled 'Mindshift: Break Through Obstacles to Learning and Discover Your Hidden Potential': [https://www.amazon.com/Mindshift-Obstacles-Learning- Discover...](https://www.amazon.com/Mindshift-Obstacles-Learning-Discover- Potential/dp/1101982853/)

</comment><comment><USER11> My latest hack is to return to paper and pencil. After going paperless about a decade ago, re-wiring these particular neural pathways is quite an obstacle in itself. But in terms of retention and creative flow it is unparalleled. I bring it up because I think the foundation for the memorization and repetition feedback cycle begins with elementary school lessons in handwriting, cursive, the alphabet and spelling. And then onto basic arithmetic and mathematics. The idea that "digital native" students would eschew hours of rote hand writing practice altogether puts humanity in danger of losing something elemental.

<comment><USER12> Such digital natives would be doing hours of input practice for other media though?

Is it the specific mechanics of orthography that you SD as valuable?

</comment></comment><comment><USER13> Author makes the point that repetition of a solid foundation is a necessary condition to reach unconscious mastery of some craft/skill.

I am just not sure it is sufficient. Age/talent/nature do play a big factor.

Also I suspect starting to learn serious math at age of 26 she is an outlier.

Russian is my 2nd language (English is my 3rd) and both I learned through repetition via reading prodigious amounts in each language.

My Spanish is horrible because I only studied it in high school and never did read any serious books in Spanish.

Now in my 40s I find that learning German is a formidable task even to read Brothers Grimm much less some philosophical works that I had hoped to.

Part of the problem is lack of time (6 months of Duolingo is not enough that's for sure) but also my brain seems to require more repetition to acquire the same knowledge that my daughter picks up near instantly.

<comment><USER14> I learned to read French with the book French for Reading. Perhaps the German version would help you. [https://smile.amazon.com/German-Reading-Second-John- Wendel/d...](https://smile.amazon.com/German-Reading-Second-John- Wendel/dp/158510745X/ref=sr_1_1?ie=UTF8&qid=1473976898&sr=8-1&keywords=german+for+reading)

</comment></comment><comment><USER15> > _What I had done in learning Russian was to emphasize not just understanding > of the language, but fluency. Fluency of something whole like a language > requires a kind of familiarity that only repeated and varied interaction > with the parts can develop. Where my language classmates had often been > content to concentrate on simply understanding Russian they heard or read, I > instead tried to gain an internalized, deep-rooted fluency with the words > and language structure. I wouldn't just be satisfied to know that понимать > meant "to understand." I'd practice with the verb—putting it through its > paces by conjugating it repeatedly with all sorts of tenses, and then moving > on to putting it into sentences, and then finally to understanding not only > when to use this form of the verb, but also when not to use it._

Wow, what great timing. I remember reading this article when it was originally published (apparently in Sept. 2014) and I believe I read it because it made the HN front page back then. It's changed the way I think about teaching, especially technical skills to non-technical students.

The best students I've had so far are ones who are pretty smart and hard- working already, but by and large, they are also the ones who follow my advice to type out code by hand, run it, change it, repeat, break it, several times. And to memorize a few essential keyboard shortcuts (Tab for auto complete, Cmd-Tab for window switching, etc) so that the work of retyping and debugging code itself is much more frictionless.

Unfortunately, and understandably, most college students aren't thrilled with the idea of repetitive practice makes perfect (or at least, makes learning the important concepts much easier). This year I'm going to do a lot more testing involving writing code with pen and paper, on the theory that if you can actually write out code by hand, then you probably know the fundamental patterns (I'm talking _fundamental_ , as in a common for-loop) essential for higher programming.

edit: One thing I should point out; this doesn't make me right but I do dogfood this approach myself when learning any new programming language. I'll write out a tutorial. Then write it the way I think it should work. If I'm half distracted, I'll write it backwards. The thing is, I'm an experienced enough programmer to know that taking the extra time to know how things work is always worth it in programming, because of how insignificant the work of _physically_ writing code is compared to actual programming. Non-programmers do not realize this and approach it as if they were asked to write 20 pages about Hamlet, and then 20 pages about Hamlet using different adjectives.

<comment><USER12> >if you can actually write out code by hand, then you probably know the fundamental patterns (I'm talking fundamental, as in a common for-loop) essential for higher programming.//

What if you can write the pseudo-code but not the specific syntax without a reference it auto-fill out your IDE? Is that enough?

</comment></comment><comment><USER16> In maths you learn to solve problem by expanding the abstractions by adding new elements. There is a crucial difference between problems easy to solve by repetition and problems that require some insight.

<comment><USER17> Exactly, otherwise all those IOI and IMO contestants would be pure geniuses, probably they are, but they practiced a lot to be good at a single task - problem solving in programming or mathematics for competitions. That's a good foundation built on insane amounts of repetition and memorization, but still, not many turn out to be Terence Tao or Peter Shor.

Although [https://en.wikipedia.org/wiki/List_of_International_Mathemat...](https://en.wikipedia.org/wiki/List_of_International_Mathematical_Olympiad_participants#Notable_participants)

seems many did "pivot" from competitive memorization and repetition to some lovely mathmakers.

<comment><USER18> You don't get to the IMO by mere memorization.

<comment><USER17> Pattern matching is huge contributor to solving problems fast or even having the problems reachable.

Just checkout these results [https://icpc.baylor.edu/scoreboard/](https://icpc.baylor.edu/scoreboard/)

They practically solve a very hard problem (it might take days for me to solve it) in 5 minutes. If that is not some supreme pattern matching then I don't know what it is.

Bunch of proof strategies used in math competitions are the same.

You have to have a giant knowledge of algorithms: fast fourier transform, bfs, dfs, iterative deepening, dijkstra, a*, sweep line algs, practically have to master dynamic programming (there's DP on trees, hidden markov model like DPs etc.), flood fill, topological sort, bipartite graph checks, kruskal, prim, edmonds karp, bunch of combinatorics, geometry algorithms.

data structures like segment trees, fenwick tree, suffix trees, etc.

you see where I'm going, there's a lot of memorization, and a lot of repetition (which improves memorization).

same thing goes for IMO, you have to do a lot of proofs, have to memorize and repeat a bunch of proof strategies in a huge number of mathematical areas.

memorization and repetition!

</comment></comment></comment></comment><comment><USER19> Everyone has their own roadblocks when it comes to learning. Looking at my understanding of programming I realize I have put too much an effort on self- study (rote memorization) and not enough emphasis on interaction (especially with people).

As a child I was always able to memorize something- whether it be classical music, or formulas. However, the deeper connections in learning that allow you to proceed outside of your box come from something else. True understanding is greater than the sum of it's parts.

I like the adage- see one, do one, teach one. Memorization is a requisite for all of them, but true understanding and mastery comes when you're able to take abstract concepts and impart them to other people.

No matter where you are the easiest way to benchmark your competency is to share it with someone else. They don't even need to be an expert, after all- it doesn't take a air traffic controller to see that a plane's landing gear isn't down.

</comment><comment><USER20> The author attended DLI[0]?

Sounds like the way to learn math late in life is to be _really_ smart. Nobody that attends DLI isn't.

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

</comment><comment><USER21> It's nice to see people agreeing with Oakley, considering I had developers ready to tar and feather me for suggesting code snippets should be images to prevent copy/paste.

By no means is memorization the end all be all. Oakley even writes "In the United States, the emphasis on understanding sometimes seems to have replaced rather than complemented older teaching methods". The techniques should be used hand and hand.

RangerScience said it best when he said "perfect practice makes perfect", I like to reword it so it reads "practice makes permanent". Obviously, practicing something wrong isn't going to help you advance.

Memorization should be "step one" for introducing a concept. I can explain how a for loop looks and show it to you, but forcing the student's hand to make a few loops before trying to implement it in a homework assignment can help build the neurological pathways (or motor engrams) so that they're no longer thinking about the syntax, just the chunk. "I need to type for(something;something;something)..." transitions to "I need a loop to go through this thing". The syntax is secondary as anyone who knows more than 1 programming language will tell you. Hell, I've build snippets into Sublime Text so I don't have to waste time with syntax either!

Some things just come from putting in the time and effort. No one gets their black belt after one class (otherwise I've been seriously doing it wrong for 10 years!)

<comment><USER22> Having seen the results of a system that focuses entirely on memorization without comprehension, a balance definitely needs to be struck between understanding and memorization. Pure memorization is useless, but so is conceptual teaching without practical application (which helps to reinforce the concepts and ensure real understanding).

</comment></comment><comment><USER23> I've found a lot of observations in this article to align with my own personal learning and teaching experiences. Memorization, even in analytical fields, is important because it allows us to chunk smaller bits of information together and skip evaluating every detail--it decreases the size of the "mental stack", if you will. Because recalling a fact from memory tends to be less demanding than applying rules to derive the fact, more cognitive reservoir remains for the novel parts of the larger problem.

</comment><comment><USER24> I agree with a lot of what she is saying, but two points: 1) The basic solution outlined is 'do a lot of work'. Which is kind of a no brainer, you will learn if you do a lot of work. The tension is how do you get the most productive learning out of the time that the student has

2) The US only recently moved from memorization and rote learning to focus on understanding for a reason. The reason ultimately is the students werent excelling under that regime.

<comment><USER25> Do they excel under the current one?

</comment></comment><comment><USER26> Bleh. It was a good life story, but you could write out the conclusions either way, and the article is mostly successfully defeating a strawman. She makes a good point: if you define "understanding" narrowly, such as "whatever it takes to score well at Common Core", then it is important to realize that it is inadequate. Fluency is missing, and important.

But it's really just playing with definitions. I'll attack the contrapositive strawman: rote repetition and practice is useless if you don't first understand. You can memorize multiplication tables and the algorithm for multiplying multiple digit numbers, and yet make orders of magnitude mistakes without batting an eye. 40x25=100, right?

I would say that you need to understand the basics, then gain fluency, and from that gain an understanding of the depths and nuances. And I think her life story could back that description up just as well as it backs up hers.

</comment><comment><USER27> Rule #5: _Repeat to remember_. [http://www.brainrules.net/short-term- memory](http://www.brainrules.net/short-term-memory)

Rule #6: _Remember to repeat_. [http://www.brainrules.net/long-term- memory](http://www.brainrules.net/long-term-memory)

From John Medina's book Brainrules. Highly recommended, translates scientific research into an accessible style. The videos are very humorous eg _Whenever I feel like exercise, I lie down until the feeling passes_ :-D (1:40) [http://brainrules.net/brain-rules-video](http://brainrules.net/brain-rules- video)

</comment><comment><USER28> If this is true, then the spaced repitition learning technique is the best there's for learning.

</comment><comment><USER29> I talk to a lot of young adults about their challenges in school. Many are interested in computer science but don't have a strong foundation to ace a C++ course. I wish I could convince them that failing the course is not as big a deal as it seems. Repeating the class is the right choice. Giving up is not the answer. Sometimes repetition means taking a class 3 times.

<advertisement>

To help younger kids with repetitive learning, consider smartmadre.com (beta). Once configured, it will deactivate your child's access to time wasting websites. In order to get internet access back, the child has to spend a few minutes earning points on readtheory.org, quizlet.com, khanacademy.org or typingclub.com etc..

</advertisement>

</comment><comment><USER30> Important to note that repetitions are never exactly the same: new connections are found each time.

Also, choosing _what_ to repeat seems important. Drilling in what is already understood may help you become a good teacher but how does one develop new and _original_ ideas?

<comment><USER31> Someone might be better equipped to write something new and original if they knew 10,000 words vs 1,000. Or to bring it to programming, do you think a programmer who has complete mastery of the syntax of a language might be better equipped to develop innovative software than a developer who had to refer to stack overflow to lookup whether == was assignment or equivalence?

</comment></comment><comment><USER32> I absolutely agree that memorization and repetition trump conceptual understanding when dealing with intermediate level of mathematics (I am taking a course on probability and integration and even though I have a good grasp of the basic concepts, if I don't keep up with the nitty gritty details and properties, I completely go astray when the teacher introduces a new concept built using those details.)

I.e. you need to master your tools (theorems, formulas etc) by repeating them so that you can use them to build something. Even if you knew what a hammer is good for (conceptual understanding) but didn't know how to hold it, it would still be pointless.

</comment><comment><USER33> For someone who wasn't interested in Maths in school, but would like to learn the basics now (quadratic equations, trigonometry, etc), can any one recommend a good all round text?

</comment><comment><USER34> "Building blocks" sounds correct, but misleading.

It sounds like this is a lot of "perfect practice makes perfect" combined with "play begets understanding".

Memorization is a pre-requisite for perfect practice; and, if the core of what you're playing with isn't immediately at hand, how can you play with it? (If you have to look up every function every time, you'll have too many interruptions to grok much more).

I memorize _in order_ to practive, and I repeatedly practice _in order_ to understand.

Does that sound right?

</comment><comment><USER35> _Number Twelve: What was the Treaty of Adrianople?_

 _Number Six (looking puzzled, but answering automatically): September... 1829._

 _Number Twelve: Wrong. I said "What," not "When." You need some special coaching._

[https://en.wikipedia.org/wiki/The_General_(The_Prisoner)](https://en.wikipedia.org/wiki/The_General_\(The_Prisoner\))

</comment><comment><USER36> Reminds me of "mathematical maturity", that you can't understand mathematics on its own, but need much background. In this way, maths is more like an Arts than Science subject, and evaluated similarly.

And is perhaps a reason mathematics seems to simply and "unreasonably powerfully" explain the world - it's _not_ simple.

</comment><comment><USER37> This mirrors my experience and this fundamentally proves that empiricists were right and rationalists were wrong. This also implies that your thinking isn't exactly logical.

Schools need to be adjusted for this, I think that currently schools are based on the rationalist point of view.

</comment><comment><USER38> I'm starting to think that any head line starting with question words fall under the law that I forgot the name of. Even without a question mark it suggest that the author is still looking for an answer, except for idioms like _how to_.

<comment><USER39> Betteridge's law.

</comment></comment><comment><USER40> TLDR: This seems to be a strawman, at least in how it presents common core. However, I have to give a concession to the criticism that superficial understanding is often what common core implementations look like. Still, in my opinion fluency comes from understanding, not the other way around.

>The problem with focusing relentlessly on understanding is that math and science students can often grasp essentials of an important idea, but this understanding can quickly slip away without consolidation through practice and repetition. Worse, students often believe they understand something when, in fact, they don't. By championing the importance of understanding, teachers can inadvertently set their students up for failure as those students blunder in illusions of competence. As one (failing) engineering student recently told me: "I just don't see how I could have done so poorly. I understood it when you taught it in class." My student may have thought he'd understood it at the time, and perhaps he did, but he'd never practiced using the concept to truly internalize it. He had not developed any kind of procedural fluency or ability to apply what he thought he understood.

Teaching for understanding means that teachers are responsible for ensuring that students are understanding. If a student is mistaken about understanding something, but the teacher doesn't probe their understanding to expose their misconceptions, that's not "teaching for understanding".

Common core encourages repetition through its focus on multiple representations. One might study linear growth as repeated adding, as a table, as a graph, and in applications to various real-life phenomena. Common core places emphasis on the student being fluent (as the author states, common core has fluency as one of its three major focal points) with all of these representations, and also in seeing the connections between them. This repeated exposure brings out misconceptions, builds understanding, and (over time) results in fluency.

I really don't see why the author has a bone to pick with common core since the sort of practice she describes would fit perfectly into a common core curriculum:

>I memorized the equation so I could carry it around with me in my head and play with it. If m and a were big numbers, what did that do to f when I pushed it through the equation? If f was big and a was small, what did that do to m? How did the units match on each side?

Common core (and contemporary education movements) are against "rote" or "procedural" learning. They would be against making up a song to memorize f=ma, and merely using that song to plug-and-chug through a small collection of problem types.

One recent example I saw (a colleague works on coaching teachers in common core) was a class of elementary students who could correctly multiply 4/7 * 5/9, but couldn't shade in 1/4 of a square. They memorized and rehearsed the procedure for multiplication, but never built understanding of what they were doing.

The unfortunate thing is that they are able to demonstrate fluency in this skill - and they will likely score well on standardized tests as a consequence of this fluency. This skill, however, is shallow - and will be easily forgotten without continued practice. Furthermore, when the time comes to learn proportional reasoning, or rates of growth, or any other thing that has to do with fractions, they will have nothing to build their understanding on.

I have to make a concession to the author, however. It is easy to get this impression of common core from the sidelines. Most teachers, departments, and schools were dumped into the core (which is merely a set of standards) without much support or training. Implementing the core requires a major shift in how one approaches teaching, and whether it is due to a lack of understanding, a lack of will, or most likely - a lack of resources, many classrooms are merely cargo-culting the sorts of things that common core demands.

My favorite introductory book to the subject is [https://amzn.com/0325052875](https://amzn.com/0325052875) happy to chat!

<comment><USER31> _Common core encourages repetition through its focus on multiple representations._

Not sure if I'd say Common Core itself encourages any particular method, nonetheless many modern math curricula take this approach. I have an elementary age kid at a school using Everyday Math which is like this, and it is pretty terrible. The homework is, like you say, a few problems of one type, then jump to something else, then jump to something else. There is never mastery of anything. Not basic operations, not coloring squares, not anything. I'm not opposed to multiple representations, but there isn't enough focus or repetition, so there ends up being no mastery.

While most of the kids could color 1/4 of a square and understand that conceptually, if I said color 40/160 of a square, they'd freeze because they don't work with numbers or basic operations enough to figure out that it is the same %.

</comment></comment><comment><USER41> The title is completely false and not even the title of the essay.

But see the author's Learning How to Learn MOOC.

</comment><comment><USER42> Reading this, I'm finding a few elements matching my own learning process critically missing.

Yes. Memorisation and repetition are useful. But of and by themselves, _they are not enough_ , at least not for a deep understanding. That Ms. Oakley is a linguist makes the omission particularly glaring to me: it's finding a _systemic understanding_ , that is, _understanding the knowledge 's grammar_.

I've picked up a few skills over my life. Some music (poorly). A little bit of foreign language -- not much, but enough in a couple to get by as a tourist. Sport. A great deal of spatial knowledge. Some physics and economics, at uni. Programming and systems administration, some data management and analysis. More recently, synthesising numerous elements looking at questions of sustainability, collapse, or various modes of splitting the difference.

Some knowledge is almost mechanical. Music, sport, spelling, multiplication tables. X comes in, Y goes out. But simple repetition isn't fully sufficient -- this is what a good coach, in maths, music, or sport, offers. They know what you _should_ be doing, see what you _are_ doing, and then offer _the cues_ necessary to get you to where you ought to be. The cues might themselves not make much sense overtly, but are the adjustment necessary to reach the desired result.

Practice _without_ that intervention, and focusing on the right cues, only drills in the bad practices. And _unlearning_ non-useful patterns is _exceptionally_ difficult.

I'm tempted to say that easy learners are all alike. At the very least, none of them encounter the limits or barriers to learning (though it's possible each has some particular fast track to results). It's when learning comes _hard_ that it's crucial to identify where and what the fault is, and to either correct it or bypass it.

In my current studies -- economics, political theory, ecology, energy, systems, and more -- what I'm finding most useful is to cover a great deal of ground, much of which is essentially circling a central problem sphere, but giving views on it from different directions. I'm quite literally finding myself re-acquainting myself with concepts, lessons, materials, and more, from the past 40+ years, and both dis-integrating and re-integrating them. I've described it as "refactoring my worldview" (mentioned on HN in a comment recently, also at [https://dredmorbius.reddit.com](https://dredmorbius.reddit.com)), more to describe what the experience is like.

But the crucial element is _not_ simply to repeatedly encounter facts until they're memorised, _it is to create the structure into which they naturally fall._ Or at least that's what I've found.

Some "systems" are less systemic than others. Virtually all have at least some path dependency, so history, law, politics, and literature will, in aggregate, at least follow some sort of path of low energy, if not an entirely logical route. In maths, logic, physics, chemistry, and electical engineering, the structure is more overt.

Again: Oakley approaches this concept, but never quite gets there. I found that disappointing.

<comment><USER26> Yes, this resonates with me. I thought the article lumped together multiple different types of understanding, and attacked an "understanding first" approach by using a very limited definition. From the specific examples in the article, you can see that practice is useful to gaining a systemic understanding. But there's a bit of a claim that _repetition_ leads to useful understanding, which is simplistic. Juggling the terms of F=ma is not what I would call repetition. It is _practice_ , certainly, but to me repetition pretty strongly implies the _absence_ of tweaking things according to the understanding you have so far. And that, I would assert, is a very slow and ineffective way of building up knowledge and deep understanding. (It will works, but only because our brains will get bored and sense patterns and start inferring some level of understanding no matter what. Although I'd gamble that a disinterested student who only needs to make it through all 50 problems on a worksheet will be pretty successful in avoiding any learning.)</comment></comment>


Patent US7779046 - Web server and method to provide web-pages to manage devices - <AUTHOR> https://www.google.com/patents/US7779046 <comment><USER2> Prior art much? It's fascinating how the system feeds on itself and frivolous "inventions" are patented to protect companies from similarly frivolous claims (and also that the patent office grants them). Of course, none of this is new, but the issue continues to manifest itself and waste billions of dollars in settlements to frivolous litigation threats and to support the whole legal machinery associated with patents.

<comment><USER3> > Prior art

I remember the good ole days, when that phrase had meaning.

</comment></comment><comment><USER4> It's owned by Samsung but I don't think they'll use it. They've been in many law suits and most if not all companies suing them are infringing this patent. They could just counter-sue with this but they haven't. Even if they sue some one for this I doubt a judge would take it seriously, but I don't live in the US so I guess anythings possible.

<comment><USER5> I read statements like this and imagine large companies playing a game like Pokemon or Magic: The Gathering, but instead of monsters they have patents.

"I choose you Patent of Phone which uses Glass!"

"I'm going to counter with the Patent of Electronic Things"

<comment><USER6> That is sadly a very apt analogy for the current patent situation in software.

</comment></comment></comment><comment><USER7> The supporting graphics with the patent are ridiculously awesome. Nothing like an image that refers to "RAM", "ROM" and "Web Browser" as equal parts of input to clear things up.

</comment><comment><USER8> Nice, every single network device _ever_ with a web interface (think of your home's router) infringes this patent.

This is plainly bullshit.

PS: Of course also printers, but I feel like that is what they were actually trying to patent. Which is bullshit too, though.

<comment><USER9> Nope. All networking devices outside US are not infringing this patent.

<comment><USER8> Well, yes, you are right. Still, a patent war in the US can have worldwide consequences.

</comment></comment></comment><comment><USER10> My first summer job in 1990 was with a company than had then contract (then) to digitizing all USPTO patent applications.

As a shipping clerk I got to see a lot of hair-brained patent apps. Picture a diagram of a shoebox decorated to look like a mailbox and the words "KIDDIE MAIL" scrawled on the side. Yeah, somebody was trying to patent that. Most applications were like that one--complete wastes of everybody's time and money.

Seems like we've replaced "Kiddie Mail" with "RAM" and "ROM" but not much else has changed, except, presumably, the volume.

<comment><USER11> I think you mean "hare-brained" although I admit, the patent we're talking about now could also be called "hair-brained" :-)

</comment></comment><comment><USER12> Was this Patent granted? Is that what the Publication Date specifies? I really hope not, it's very generic and poorly written.

<comment><USER13> Well, the Publication Type is Grant so...

At least the priority date only goes back to 2006, so hopefully there's plenty of prior art.

</comment></comment><comment><USER14> I wanna smoke whatever USPTO guys smoke

<comment><USER15> Patent US420420420: Water filled smoke cooling device. A storage device that can hold water. A cylinder, square, or tube like structure that acts both as a pipe and transmitter of smoke and air into the water storage device. Another access/control point into the water storage for sucking. Storage device can be any water storing devise : vase, hollowed out pumpkin, yard gnome, etc. Device specialized for USPTO anxiety medication found in break room by Mario Cart.

</comment></comment><comment><USER16> Even if this was granted, it would be easy enough to defeat with prior art references from all over the place. Windows WMI management framework includes transport over http for example.

<comment><USER3> > it would be easy enough to defeat with prior art references

Yes in theory. In practice, it all depends on how much the parties want to lawyer up, and not settle out of court.

</comment></comment><comment><USER17> Software is inherently modular - the whole point is to combine and produce unique configurations that might produce business value. The USPTO likens this to an invention, but its really more the like creating a unique looking house - and obviously you can't patent the act of making a house.

</comment><comment><USER18> That's how companies work, you count the amount of patents you have, and that's part of what you're worth. You can ignore this...

</comment><comment><USER19> This sounds alot like a client server architecture with the web as a business object server.

</comment><comment><USER20> Is it just me or does the abstract seems like it was written by some grammar retard?

<comment><USER3> Patents, and their abstracts, are written in very particular language, that was originally meant for mechanical devices and configurations. It's law + engineering, basically.

</comment></comment><comment><USER21> What's a workform? Look at the claims, people.

<comment><USER22> I tried to read the patent summary with an open mind, but that was some convoluted phrasing. I have idea what claims they are making beyond that a web server and terminal devices are involved, and some information is used to do something.

[updated] BTW, reading the "getting started" doc for "SmarTrhu Workforms" provides a clearer picture of what Wokforms are:

[http://www.samsung.com/au/newsletters/dealers/october08/pdfs...](http://www.samsung.com/au/newsletters/dealers/october08/pdfs/Getting%20Started%20with%20SmarThru%20Workflow%202.pdf)</comment></comment>


Four Simple Reasons Smart People Shouldn't Believe in Races - <AUTHOR> http://www.psychologytoday.com/blog/about-thinking/201312/four-simple-reasons-smart-people-shouldnt-believe-in-races?tr=MostViewed

<comment><USER2> I leave my initial thoughts here as more of a reference to my initial thinking. However, after reading this link, I couldn't help but change my mind [http://en.wikipedia.org/wiki/Race_(human_classification)](http://en.wikipedia.org/wiki/Race_\(human_classification\))

I disagree with the whole premise of this article. Why would we choose not to believe in Race? Isn't that promoting ignorance? Where the author suggests race is 'learned' and that people are 'put into boxes', ignores that fact that chilren, having never seen people of other races, recognize the differences instantly, and ask questions as to why one person looks different than the next.

Rather than ignoring Races, we need to learn to celebrate race and diversity. Seeing as we have LGBT Celebrations world wide, is it likely Racial Celebrations? Apparently Singapore has a 'Racial Harmony Day', not quite the same, but maybe a step in the right direction.

The thing is, children know that Race is only physical and often appreciate the differences, I know I did. Sadly, it seems many adults teach them otherwise.

<comment><USER3> > Why would we choose not to believe in Race? Isn't that promoting ignorance?

Not believing in things that aren't real isn't promoting ignorance.

> Where the author suggests race is 'learned' and that people are 'put into > boxes', ignores that fact that chilren, having never seen people of other > races, recognize the differences instantly, and ask questions as to why one > person looks different than the next.

They ask that about visual differences between people who are ascribed the same "race" by the society, too. The division of certain differences as defining "races" and others as not racial is arbitrary.

> Rather than ignoring Races, we need to learn to celebrate race and > diversity.

Celebrating diversity of cultural heritage does not requiring believing that races are real.

<comment><USER2> Negating my initial comment, this is a good read [http://en.wikipedia.org/wiki/Race_(human_classification)](http://en.wikipedia.org/wiki/Race_\(human_classification\))

</comment></comment></comment><comment><USER4> I have mixed feelings about this article. First of all, I strongly support the dissemination of the knowledge that race has little-to-no basis in biology. I think every American should be taught this. I'm a black person, and I wasn't taught this until take a college course that specifically concerned race and ethnicity.

But I disagree that we'd all be better off if we just forgot about race altogether. Despite the lack of basis in biology, race is actually a real thing, even if it is merely a social construct. Race is real in both self- identification and in how we perceive and treat others.

Culture alone does not explain everything. There is no unified culture shared by all Americans who self-identify as black. And yet, there are aspects of the experience of living in this country that are quite common to black people. This is because the racial identity other people ascribe to you also affects your life.</comment>


How to Catch When Proxies Lie [pdf] - <AUTHOR> https://www.andrew.cmu.edu/user/nicolasc/publications/Weinberg-IMC18.pdf <comment><USER2> A very thorough and relevant piece of network measurement work! Awesome.

An interesting result not related to the title is some scary disagreements between popular geoip databases and the active probes the authors used(§6.2):

> All five of the IP-to-location databases are more likely to agree with the > providers' claims than either active-geolocation approach is. As discussed > earlier, we are inclined to suspect that this is because the proxy providers > have influenced the information in these databases. We have no hard evidence > backing this suspicion, but we observe that there is no pattern to the > countries for which the IP-to-location databases disagree with provider > claims. This is what we would expect to see if the databases were being > influenced, but with some lag-time.

The paper does call out the geoip databases in question (DB-IP, Eureka, IP2Location, IPInfo, MaxMind) -- but not the VPN providers, which is unfortunate.

Also, the code looks quite good: [https://github.com/zackw/active- geolocator](https://github.com/zackw/active-geolocator)

<comment><USER3> They missed one which is used by lots of ad networks including Google and Facebook: digital element's ip location DB.

<comment><USER4> Why Google and Facebook will need external vendor for geo IP DB? They have GPS data (or location based on WiFi / Cellular triangulation if GPS is switched off) and can name own geo IP DB. Given number of users this DB will be more accurate than most other vendors can provide.</comment></comment></comment>


Cognitive Behavioral Therapy as a Treatment for Insomnia - <AUTHOR> https://www.sleepedy.com/cbt-for-insomnia/ <comment><USER2> I did CBT-I after reading this post a year ago - [http://ilya.sukhar.com/blog/an-algorithmic-solution-to- insom...](http://ilya.sukhar.com/blog/an-algorithmic-solution-to- insomnia.html)

Was very effective even though it sounds a little crazy.</comment>


Origami - Design prototyping with Quartz Composer - <AUTHOR> http://facebook.github.io/origami/ <comment><USER2> Given the little commitment I see from Apple regarding Quartz Composer I wonder if this isn't an opportunity to build a new, better Quartz Composer with a stronger focus on UI Design and release it as an app. Actually, given the current state of what's possible in the browser, I suppose most of that should even be possible in a browser so that it runs on all platforms.

The things that come to mind that would not work in the browser are also the things that UI designers hardly need like Midi, OSC, low level IO, Webcam (and that even kinda works).

<comment><USER3> I made an app called PixelConduit which is fundamentally a lot like Quartz Composer, although the specific use cases ended up being rather different:

[http://pixelconduit.com](http://pixelconduit.com)

The app became free last year, and I've also been thinking about open sourcing most of it, but haven't got around to it... (Well, some of the base libraries are on Github, but that's as far as I got.)

The code base would probably work nicely for something similar to Origami. If someone out there happens to be interested in building something new on top of the PixelConduit code, don't hesitate to get in touch!

(The major reason why I didn't finish opening the code is that some of it is quite old; there's lots of unused stuff lying around that should be cleaned out before a public release. But I'd be happy to share the code privately.)

<comment><USER4> Wow. I don't work in the video production space, but this looks really powerful. Why did you end up making it free?

<comment><USER3> Decreasing sales death spiral. There was some good word of mouth happening, but too little to break the cycle. I wanted to prevent it from becoming commercial abandonware.

The background story is that I kind of screwed up with v2 of the product. It took years to develop and tried to answer every need that I had observed among users... But I didn't quite realize that the answers I came up with were at a level of abstraction that didn't directly solve those problems. The product became an abstract toolset that can bend to almost anything, but integrating it into a workflow requires a certain vision of how to harness those abstractions.

In other words, I made a visual programming tool for users that were not really programmers and had other things to do than learn the new stuff. I just didn't understand the v1 users well enough, and they didn't get excited about v2, so it lost the important thrust of existing users talking about the upgrade.

</comment></comment></comment></comment><comment><USER5> In the get started section, the background style you have doesn't seem to work properly on Firefox (fine on Safari), so it appears as white text with a drop shadow against an all white background.

Looks like an interesting tool though.

</comment><comment><USER6> Excited to try this out. I showed my designer your blog post on how you used Quartz Composer to sketch out your iOS app redesign. By itself, the Quartz Composer is pretty intimidating.

One nitpick, the .pkg isn't signed and Gatekeeper is blocking it from running.

</comment><comment><USER7> Thanks for sharing.

</comment><comment><USER8> Not knowing what Quartz Composer was, I was really hoping for an origami design application. It would have been a lot cooler.</comment>


How We Doubled Our Android Install Rate in One Hour - <AUTHOR> http://www.dwellable.com/blog/How-We-Doubled-Our-Android-Install-Rate-in-One-Hour

<comment><USER2> It helps that the design of the new Dwellable is _very_ similar to the popular magazine Dwell. I wonder how much of the gain is due to brand recognition of a different brand?

\- Similar san-serif lowercase font

\- Large-format images of modern homes

\- Almost-identical name :-)

Of course, you should always be A/B testing, and congrats on the conversion increase.

[edit: formatting]

<comment><USER3> If one data point matters: I occasionally rent vacation homes and am probably in the target demographic for that app. But I've frankly never heard of "Dwell" and certainly wouldn't recognize their brand artwork.

This is an app targetted at essentially the whole of the US upper middle class; is copying a niche magazine really going to matter much?

<comment><USER4> > _This is an app targetted at essentially the whole of the US upper middle > class;_

That is pretty much _Dwell_ 's market demographic, too.

<comment><USER3> Sure, but that's not the same thing as saying everyone in the demographic has seen it. Wikipedia has an old number giving their circulation at 260k. That's just noise. There's no benefit gained by copying their artwork, so I think positing that as the reason for the effect just has to be wrong.

Now, this would change if this was an app for a small niche market and the magazine targetted the same people. Then the target users would likely have seen it and there would be benefit. But not here.

</comment></comment></comment></comment><comment><USER5> I'm not sure if it is the artwork or the message. The previous promo art had tagline "Vacation rentals and reviews" which targets a specific audience, while second artwork just says "Dwellable" which is more mysterious and so you might have more people download it to check it out. Maybe it helps to have a broader message to get more people to try it, but expect to have a higher % of those curious windoshoppers try it and then shelve it/uninstall it.

<comment><USER6> That's the way it seems to me as well. With the second one that has no tag line I'd think that Dwellable might be a competitor for Trulia, Zillow, or Redfin.

</comment></comment><comment><USER7> Note that the most important factor here is that they already were being featured on the front page. Making awesome promo art is a good idea, but if they weren't featured on the front page, this promo image wouldn't make a whole lot of difference.

<comment><USER8> I disagree: it seems clear that the CTR on the new design was 2x the old. Now, granted that 2x of a featured spot is a much bigger absolute number than 2x of typical placement. But 2x is 2x. This is a great reminder of the impact of design for anyone trying to optimize their app store presence (large or small).

<comment><USER9> I'm not sure, honestly: I imagine the differential of a new design varies depending on how users come across it. If when not being featured Dwellable mostly gets new installs from word-of-mouth, say, I bet that the new design doesn't have as much impact. (I'm sure it would still be a big difference, but maybe on the order of 1.5x instead of 2x, say.)

</comment></comment></comment><comment><USER10> This just shows how pictures communicate more efficiently than text. On a busy screen filled with apps, the words "Vacation reviews, photos and more" don't get read, they just get tuned out. But a picture of a beautiful vacation home grabs the eye. There's almost an automatic "I want that" response.

</comment><comment><USER11> Without telling us the install rate, "doubled" is just lying with statistics. Did you go from 10 to 20 daily or from 10k to 20k? Play says that you have 10k+ installs total (not a lot), so it looks more like the former.

If your initial number is really low, minimal work can double it. If you are doing well, the same work may give you a small percentage improvement, or even nothing. It's called "law of diminishing returns."

What I learn from this post: you had lots of low-hanging fruit, and probably still do.

</comment><comment><USER12> Really simple and effective example, thank you for sharing!

I wonder how much of it has to do with the objective "quality" of the design versus the effect on the audience's psychology of connecting "real life" (vacation rentals) to an app that lives in your phone.

I'd love to see further experimentation with:

1\. Lower quality "real life" asset designs.

2\. Higher quality abstract designs.

<comment><AUTHOR> I'm sure that's a huge part of it. Aspirational vs. functional. Since the app was designed to be in large part aspirational, the new artwork actually matches our intent better than the orange monstrosity.

</comment></comment><comment><USER13> I don't think I learned anything from the blog post. It was already being featured by Google. May be this is just an ad.

</comment><comment><AUTHOR> Inept designer here. Happy to chat.

<comment><USER14> Way to advertise yourself :)

<comment><AUTHOR> I'm an engineer/entrepreneur type guy. Everything else is just by accident.</comment></comment></comment>


Exploring Zork (2012) - <AUTHOR> https://www.filfre.net/2012/01/exploring-zork-part-1/ <comment><AUTHOR> Also see:

Exploring Zork, Part 2: [https://www.filfre.net/2012/01/exploring-zork- part-2/](https://www.filfre.net/2012/01/exploring-zork-part-2/)

Exploring Zork, Part 3: [https://www.filfre.net/2012/01/exploring-zork- part-3/](https://www.filfre.net/2012/01/exploring-zork-part-3/)

The Roots of Infocom: [https://www.filfre.net/2012/01/the-roots-of- infocom/](https://www.filfre.net/2012/01/the-roots-of-infocom/)

The Birth of Infocom: [https://www.filfre.net/2012/01/the-birth-of- infocom/](https://www.filfre.net/2012/01/the-birth-of-infocom/)

ZIL and the Z-Machine: [https://www.filfre.net/2012/01/zil-and-the-z- machine/](https://www.filfre.net/2012/01/zil-and-the-z-machine/)

Selling Zork: [https://www.filfre.net/2012/01/selling- zork/](https://www.filfre.net/2012/01/selling-zork/)

</comment><comment><USER2> Zork* - My gateway drug, my portal to another world... to storytelling, grammar, language, academics, programming, entrepreneurship, engineering, business, imagination, creativity, magic. I still feel it's incredibly positive impact many decades later.

* includes enchanter, spell breaker, and all the infocom games

<comment><USER3> I wonder - did you not play other types of games before?

I tried getting into IF several times and never really managed to get very far - both the frustration of trying to get the parser to understand me & the "gameplay" (puzzles I guess) just not being very interesting.

Maybe it's one of those things where "you had to be there at the time".

<comment><USER4> > "you had to be there at the time".

^yes. this, and access to technology. there was a pretty significant time where low-end PC tech could support little of the more "advanced" gaming trends. i played many text-adventure, MUDs and 2d platforming games (PoP, chopper commando, etc) because that was what would run on the machine i had access to. my neighbor had a pentium with a cd-rom...which is where i learned of myst ;)

i have a deep love of text gaming (online and off) because of this...and i can 100% see why it may not resonate so well with others

<comment><USER5> I still occasionally play a MUD called Shattered Kingdoms. I played that game for 15 years: really nice ANSI color and you sort of can't beat it because of the roleplaying.

</comment></comment></comment></comment><comment><USER6> > Zork was updated about a dozen separate times between 1980 and 1984, to add > polish and/or to fix bugs.

It's funny how my first passing thought was "pushed-to-clients", but no, they had to batch bug fixes, QA, regression test (probably manual play?), see if it all fit back on floppies, create a master image, mail to factory, update printed literature and box design with version numbers, have retail boxed product delivered to Babbages (or whatever), possibly with instructions for removal of old inventory.

Hard to fathom just how much easier it is to iterate in this age.

</comment><comment><USER7> I learned to type by playing Zork on an Apple IIGS. When you couldn't look up the answers to puzzles on internet it really made for a different gaming experience.

<comment><USER8> I had a similar experience playing it on an Apple II when I was 12. Not having much guidance but just spent hours exploring and trying different commands--it was about 15 years later that I learned the ultimate goal was collecting treasures and putting them in the trophy case. I remember being at the gates of Hades trying so many combinations, thinking this must be the end game--so close!

</comment></comment><comment><USER9> The Zork series (particular Zork 1) are very fond childhood memories for me. I still pull it out every year or two, and try to "speedrun" it, by completing it in the least possible moves. There are some great methods for pulling this off, but you are sometimes at the mercy of the RNG with respect to the roaming thief and the troll fight. Save scumming doesn't seem to work in most versions I've tried since the RNG state appears to be stored in the save game file.

When I started messing with UE4 about 4 years ago, the very first project I wanted to try was recreating Zork I, as I pictured it in my mind.

I was still learning the ropes in terms of creating good assets for UE4 (and still am to a lesser degree), and formulating my own art style, but there are some examples (Living Room and Entrance to Hades) as well as a sample treasure (Platinum Bar) here:

[https://imgur.com/a/7XnzvY0](https://imgur.com/a/7XnzvY0)

Other than that, I had a large part of the overground/underground map done in greybox form, and were starting to add interactive components like the rug, trapdoor, and lamp.

From time to time, I feel like going back and starting over, it's still something I would like to do one day. The conceptual problems I faced were:

1) whether to limit the game to "on rails" style game play when moving between locations, or to allow the player to freely roam in normal first-person fashion; and

2) the original game relies so heavily on the players imagination to flesh out the environment on their mind. If you take that away from them by providing a visual interpretation, would the game be as fun or interesting?

I never answered those questions, so I gave up on it and moved onto another equally as ridiculous concept (and then another, and another...)

</comment><comment><USER10> Very early Infocom history, maybe even a genesis of the company, can be traced to Robert Supnik (DEC engineering/research, SIMH [https://en.wikipedia.org/wiki/SIMH](https://en.wikipedia.org/wiki/SIMH)) porting "Dungeon" to fortran/PDP-11 (LSI-11, pretty much a desktop PC with 2 floppies) in ~1978 to lighten the load of big iron PDP-10 time sharing system : Oral History of Robert Supnik [https://youtu.be/lk7ygEZxV9Q?t=2h32m28s](https://youtu.be/lk7ygEZxV9Q?t=2h32m28s)

</comment><comment><USER11> (2012)</comment>


Equifax to Pay at Least $650M in Largest Data-Breach Settlement - <AUTHOR> https://www.nytimes.com/2019/07/22/business/equifax-settlement.html <comment><USER2> Ok, so this means it's costing them less than $5/person, So I assume this still means they are turning a per-person profit for accumulating and failing to protect user data.

</comment><comment><USER3> The fine should be more, a lot more. At least double that since the article said they are currently paying about the same as their quarterly profits.

But I am glad to see they aren't getting out with a slap on the wrist.

</comment><comment><USER4> More big companies punished by payment of pocket change. Makes one wonder why they don't skirt laws on a more regular basis.

Perhaps soon they will.

<comment><USER5> What makes you think they don't?

</comment></comment><comment><USER6> [https://news.ycombinator.com/item?id=20483591](https://news.ycombinator.com/item?id=20483591)</comment>