How knowing Lisp destroyed my programming career (2006) - <AUTHOR> http://coding.derkeiler.com/Archive/Lisp/comp.lang.lisp/2006-04/msg01644.html <comment><USER2> I learned C and LISP pretty much at the same time (back when rocks were young and you needed a PDP-11 if you wanted to run Unix). Then I went to college and the first course in the Computer Science major was a "killer" they taught in Pascal. Okay, so Pascal is a kind of screwed-up C, and I could deal with that.

That "killer" course had a semester-long, multi-phase project that was a kind of symbolic calculator (with sets and operations on them). It was maybe a couple hundred lines of LISP . . . so I wrote a LISP interpreter in Pascal (with a garbage collector, natch), then wrote the meat of the project in LISP, embedded in the Pascal source. Was the only person in a class of 300 or so who completed the project that semester, but the professors were not amused with the approach I took. Can't imagine why :-)

I've never used a functional language in production, but I've stolen LISP techniques and used them in quite a few products. I never felt frustrated by the fact that I couldn't use LISP or Scheme or whatever in <product> and had to use C/C++/Pascal/Java/C# instead, but have seen it happen in other engineers (notably when the Apple Newton switched from Dylan -- an object- oriented variant of Scheme -- to C++; there were a bunch of forlorn looking ex-Scheme hackers wandering the hallways, clutching copies of the C++ Annotated Reference Manual and trying not to cry).

<comment><USER3> Technically, both Pascal and C are derivatives of Algol. Pascal is a variation on Algol. C is a screwed-up Algol.

<comment><USER2> Point taken. Though "call by name" still makes me twitch :-)

</comment></comment></comment><comment> phoe-krk _The conclusion was inescapable: the problem wasn 't Perl or C++ or Java, it was me. I just wasn't a very good programmer any more. Lisp's power had made me complacent, and the world had passed me by._

Lisp can't help you if you're too smug for your own good.

Disclaimer: I'm a Lisper.

<comment><USER4> Non-English speaker.

What does "smug" mean?

<comment><USER5> It means "smartass".

<comment><USER6> Not quite. "Smartass" generally implies you go around showing off your (perceived) knowledge. "Smug" implies you sit quietly in a corner feeling good about your (perceived) knowledge.

<comment><USER7> Also smug is less specific than knowledge, it's more about thinking you're better (in some or all ways) or more well achieved. The opposite of humble.

<comment><USER8> I would say that smugness has almost nothing to do with knowledge, and everything to do with attitude.

I have seen people being smug that they know nothing about a given subject.

That is smugness is almost exclusively about "thinking you're better…".

If someone thinks they have more knowledge, or thinks they have achieved more; it is easier for them to become smug in that belief. People can also become smug even if they know that neither is true.

</comment></comment></comment></comment></comment></comment><comment><USER9> The problem wasn't lisp... The problem was he didn't want to leave his comfort zone.

You can love lisp, Smalltalk, and all those beauty languages, but you should never stick to a single language. NEVER. Go to another, look it's strenghts, and if it's a bit weak on some sides, try to use the nice techniques you learned back to make it better.

To solve any problem, you can use different languages. Of course would be nice to use the nicest languages, but in some contexts they're not the right tool, and in others, you should have to consider outside factors like, how many people will maintain that software. All of them knows how to use the powers of those nice languages? Also, do you think would be easier to rotate people on that project using those languages instead of another ones?

Everyone can learn to use some tool, but experience using others may help you to discover better ways to use new tools.

</comment><comment><USER10> Worked at Google Pre IPO, worked at the Jet Propulsion Lab, became an Angel Investor, acquired Startups, founder and CEO of Spark Innovation Labs....

....I hope to one day have my career destroyed as badly as this.

<comment><USER11> Maybe he didn't leave his mark as a programmer/engineer the way HE wanted to, but you definitely have to admire his ability to identify good opportunities. He laments choosing and then using LISP for so long and in a way seems to blame the language for adversely affecting his perspective on programming, but it really seems like it served him well when it was useful. I think the same intuition that helped him choose LISP for solving problems (because it was a nice set of tools at the time) probably ended up helping him choose good professional opportunities, too. If he's frustrated about the way his perspective changed then I have to agree with the other commenters that he would need to work on changing that perspective and not remain complacent.

</comment></comment><comment><USER12> Honestly curious why Lisp has so much admiration and praise on HN. I played around with Scheme some long time ago, read SICP, learned a lot. And I know Lisp inspired many programmers like the founder of Ruby. But I would not think of Lisp when it comes to solving day to day problems. I rather pick Python because it helps me solve all kinds of problems. There are many more solutions I can think of (Ruby, Node, Go, even Perl).

<comment><USER13> Your confusion will go away once you recognize that Scheme is not Lisp. For most purposes, Lisp means Common Lisp, or one of the Lisps that ended up merging into Common Lisp. That means that Lisp does all of these things and more, which you might not expect if you've only seen Scheme/SICP:

* Multi-paradigm programming (functional programming in the immutable sense is not dominant, the Lisp OOP system is top class, mutable state can be everywhere)

* Rich looping mechanisms that don't require tail call contortions

* Explicit typing that leads to optimized code and compile time warnings! ([https://news.ycombinator.com/item?id=13389287](https://news.ycombinator.com/item?id=13389287))

* Warnings at compile time (not run time!) about things like undefined functions/vars/wrong args/unused vars ([https://news.ycombinator.com/item?id=14780381](https://news.ycombinator.com/item?id=14780381))

* A pretty good set of libraries et al that (once you set up quicklisp) are just a function call away from trying out ([https://notabug.org/CodyReichert/awesome-cl](https://notabug.org/CodyReichert/awesome-cl))

* (edit: one more since I like it a lot) Out of the box the Lisp system contains features you have to get from IDEs in other languages like breakpoints, tracing, inspection, code location questions like "who calls foo"... of course working with that system via emacs or something is nicer but it's basically all there in the base system ([http://malisper.me/debugging-lisp-part-1-recompilation/](http://malisper.me/debugging-lisp-part-1-recompilation/))

<comment><USER14> To add to the confusion, this Wikipedia article says that Scheme is "one of the two main dialects of Lisp." [https://en.wikipedia.org/wiki/Scheme_(programming_language)](https://en.wikipedia.org/wiki/Scheme_\(programming_language\))

<comment><USER15> Well, it was true, at least until clojure. Now we've got clojure, common lisp and scheme.

<comment><USER16> Lisp user base is so small enough that these categories largely look pointless to people outside.

For all practical purposes CL, Scheme, Clojure and Elisp are all lisps.

<comment><USER17> > For all practical purposes CL, Scheme, Clojure and Elisp are all lisps.

Since only CL and Emacs Lisp can and do share actual Lisp code, I call only them Lisp for practical purposes.

For 'unpractical' purposes - they share no source code but are influenced by practical Lisp - , Logo, Javascript, Ruby, Clojure ... are also Lisp.

<comment><USER16> >>Since only CL and Emacs Lisp can and do share actual Lisp code

But what exactly is 'actual lisp'. I mean what is this strict definition?

Forgive me, I understand calling Scheme and CL as same might feel like saying Java and C++ as same. But one would be right in saying Java and C++ both come from a C based paradigm.

On the same lines one could say CL and Scheme come from lisp paradigm. At this point in time both communities compared to any major language community are so small that one could refer to both as Lisp.

<comment><USER17> The problem is that both CL and Scheme communities have very little to do with each other.

For practical purposes Lisp dialects are those directly inheriting back to Lisp I from McCarthy. You can run programs from 1960 in Common Lisp with very little changes (unless it uses machine interfaces). To port them to Scheme is possible. To port them to Logo, Clojure, Javascript or other languages considered to be dialects in a wider sense mostly means a rewrite.

Thus for me Lisp means the dialects of Lisp and their respective communities which can share code, libraries, applications by relatively simple ports. For example Emacs Lisp has Common Lisp enhancements, which are semantically very similar. ISLISP could be directly integrated into a Common Lisp - Kent Pitman mentioned that he actually did that to see that they are culturally compatible.

Languages who don't directly share code are maybe part of an abstract family, which has no agreed on definition - thus this is for practical purposes relatively useless.

<comment><USER18> >The problem is that both CL and Scheme communities have very little to do with each other.

At first I thought this was absurd, but after some time learning Lisp this was more obvious.

Scheme and Common Lisp are built around totally different philosophies, and thus not only the languages diverge, but also the way you program in them.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER19> For a while now I've had a feeling that all the comments about lack of engineers(especially in software) are vastly underestimated. Probably around 10% of us is capable of doing actual software development. The rest writes plumbing and can handle the project for only as long as abstractions available through libraries can hold the complexity.

If we assume most of us don't really know what we're doing, that totally explains language preferences. We don't choose the best tools, we choose the best tooling. And best tooling is the one which we can comfortably fit in our minds, so advanced concepts are mostly ignored and the hype wheel constantly turns. To put it shortly - smart people write better and better tools, so the rest can handle bigger and bigger projects writing mediocre code.

Of course, as every programmer, I live in constant fear that I am part of the plumbing crowd waiting to be exposed.

<comment><USER20> Maintaining a distinction between "actual software development" and "plumbing" is elitist, even if you're placing yourself on the downside of that comparison and setting yourself up for imposter syndrome.

You can get an awful lot done by "plumbing". Entire businesses like SAP are built on it. It can also be mission critical; in SpaceX, is the literal plumbing of hydraulic fluid and fuel flow unimportant? No.

<comment><USER19> I'm not trying to impose that one is more "noble" than the other. As you said yourself, businesses usually run on plumbing.

I'm trying to understand the industry, as it appears to be(at least to me) different than what I thought was true. I believe it to be important if we're going to do better and there is a ton of metrics showing we should do better(percent of projects failing, percent on projects exceeding budget and time, percent of projects becoming unmaintainable).

If you could prove that only a handful of people is capable of actually developing software project pass the stage of 'piggy-backing' on libraries, that would probably distinctly change the way we develop software. Maybe we could prevent death marches better. Maybe we could improve our working environments so nobody has to crunch or have a depressing spaghetti-code maintenance job.

It doesn't mean in any way that 'plumbers' should/would be treated worse. If anything, I would expect the opposite.

<comment><USER21> Indeed, the "plumbing" role is getting more and more important as there are more reusable software out there, so less need to write it from scratch.

It reminds me of how MIT changed their intro-to-programming course, from the Scheme-based one to a python based one, because "the SICP curriculum no longer prepared engineers for what engineering is like today. Sussman said that in the 80s and 90s, engineers built complex systems by combining simple and well- understood parts. The goal of SICP was to provide the abstraction language for reasoning about such systems. [...] programming today is "More like science. You grab this piece of library and you poke at it. You write programs that poke it and see what it does. And you say, 'Can I tweak it to do the thing I want?'. The analysis-by-synthesis view of SICP — where you build a larger system out of smaller, simple parts — became irrelevant." ([http://www.posteriorscience.net/?p=206](http://www.posteriorscience.net/?p=206))

Also reminds me of Vernor Vinge's "Zones of Thought" novels, where in the far future, the starships don't have exactly programmers, but rather a kind of software archelogists who assemble systems from software components that may be a thousand years old.

<comment><USER22> Yes, and virtually all software job postings/interviews are tests for experience with specific fittings (abstractions/frameworks)

</comment></comment></comment></comment></comment><comment><USER23> I came to Lisp (Scheme/Racket) from that another side (C++, Java, Perl) and it was an enlightening experience.

Now I use Lisp nearly everywhere in a form of a small .NET runtime module.

Lisp is excellent at templating tasks. Just for comparison: StringTemplate for .NET is a whooping 400 kB of compiled binary code while my implementation of Lisp is just 35 kB (!). Sure enough, Lisp does the very same thing as StringTemplate, but in just 1/10 of the code. There is more: Lisp is Turing- complete while StringTemplate doesn't. I can add a .NET function to Lisp environment and then call it in my template. I cannot do that with StringTemplate. I repeat, this is a 35 kB Lisp David vs 400 kB StringTemplate Goliath.

Isn't Lisp beautiful?

But wait, there is more. Lisp is excellent for natural language processing because you can intersperse a human text with Lisp. Suppose the first % character enters into Lisp mode and subsequent % character exits back to text. The example of Lisp NLP would then look like:

        "Hello %name%. It is time to do some math. Assume A + B = %(+ a b)%. What is the value of A when B is %b% ?"

You then fill Lisp environment with desirable values:

        env["name"] = "David";
        env["a"] = 15;
        env["b"] = 85;

Evaluating aforementioned template will produce the following result:

        "Hello David. It is time to do some math. Assume A + B = 100. What is the value of A when B is 85 ?"

With that tool at hand, you can build a user-configurable quiz system in no time. Or maybe a configurable Virtual Assistant. Or a chat bot. Or anything else, you name it.

Lisp is small as the Universe before Big Bang. Nevertheless it provides nearly endless possibilities when you have a need, a fit and imagination for them.

<comment><USER24> Although that approach to string creation tends to fall apart quickly in non- English languages: adjectival agreement, plural rules etc.

<comment><USER23> No, no, it doesn't fall apart! Lisp is Turing-complete. You can do (in English):

      "David has %n% apple%(when (> n 1) "s")%."

You can move that rule to function etc. You can tweak that for the language you use in an endless number of ways.

<comment><USER25> so you're going to ask your translater to learn Lisp?

<comment><USER26> No; you just give an example about how to customize the suffix based on the number, but don't say that it is "programming" or "software development" or anything like that.

[https://www.gnu.org/gnu/rms-lisp.en.html](https://www.gnu.org/gnu/rms- lisp.en.html)

 _" Multics Emacs proved to be a great success — programming new editing commands was so convenient that even the secretaries in his office started learning how to use it. They used a manual someone had written which showed how to extend Emacs, but didn't say it was a programming. So the secretaries, who believed they couldn't do programming, weren't scared off. They read the manual, discovered they could do useful things and they learned to program._

</comment></comment></comment></comment></comment><comment><USER27> > knowing Lisp made me all too keenly aware of Java's shortcomings, and I had > a very hard time not being angry at how stupid it was that I was being > forced to use it.

I would take this as a the thing to remember from this. When you are too angry at something, you cant learn it. I have seen the emotional refusal to learn new inferior thing (or read comments that amounted to the same) many times already.

It is something to be aware of and avoided.

<comment><USER28> I'm interested in knowing your secret to finding inferior new things interesting.

<comment><USER27> Often times it is inferior, because you are acutely missing things it does not have, but did not yet learned to use things it does have effectively.

So, the secret is to be alone in a room, so you can swear freely. Walk around when angry and complain to yourself. But always go back and continue using it and eventually, that phase will pass. After that you will build new set of habits that work around disadvantages and use advantages.

<comment><USER29> This just seems like being around something awful long enough that you develop a form of stockholm syndrome.

<comment><USER27> Unless of course your perception that it is "objectively" awful is not objective at all. The "awful" categorization is oftentimes just your emotional reaction to not understanding something immediately and not knowing how to use it effectively.

<comment><USER27> I would add one more thing - even if the technology is objectively awful, it is worth learning if it serves some practical purpose. Learning something is not value judgement of its objective quality, it should be in part rational choice.

</comment></comment></comment></comment></comment></comment><comment> d--b This is from 2006 though.

Since then functional programming has picked up a lot of steam again, and I'm pretty sure having been a lisper for 30 years gets you good jobs. If not in Lisp, haskell, F#, clojure or whatever...

<comment><USER30> I don't know. My industry (defense/aerospace contracting) is still infatuated with Java/C++ and Object-Oriented Design as the universal solution to all problems. It's like being stuck in the 1990s.

This is the flip-side to age-discrimination - it's much less of a problem in my industry. Which, as a 37-year-old I find comforting. But when you're stuck working for 50-something pathologically risk-averse architects who built their careers on the over-hyped tech of the previous century and refuse to listen to new ideas, it's quite frustrating. I'm basically waiting for the previous generation to die/retire so I can have the chance to build software the way I think it should be built.

I may just leave the field altogether and hack on Lisp in my spare time :)

<comment><USER31> > I'm basically waiting for the previous generation to die/retire so I can > have the chance to build software the way I think it should be built.

And by the time you'll be able to do that you'll be the 50-something who keeps using functional programming while the 37-year-olds want to use dilithium crystal programming :p

<comment><USER32> While you're joking, one thing that appeals to me about my recent dive into functional programming is that it strikes me as knowledge that is 'fundamental' enough that it'll never disappear or become irrelevant.

<comment><USER33> Exactly like OOP!

<comment><USER30> Though, I'll point out that my problem is not necessarily with OOP, but OOD. OOP can be quite useful in _some_ situations, such as modeling and simulation :)

Of course the design of the Java language is predicated around the idea that OOD is the one true way to design large software systems and thus must be forced by the language itself, and that is the primary reason I hate it.

</comment></comment></comment></comment></comment></comment><comment><USER34> The point of this article can be compared to JavaScript devs fatigue story:

1\. Many JavaScript devs were focused on 'getting job done' in their current workplaces, where they were using jQuery-related stuff mostly.

2\. After some time they want to change job.

3\. They realize that the js market has changed (or maybe they were aware of it, but they just didn't care before/didn't have time to take a closer look before).

4\. They try to keep up and learn tons of stuff to be employable as js/front- end devs (npm/webpack/js frameworks).

It's just a personal opinion. I was at that point in my life before too (and realized that it was my personal cause of my js fatigue)

</comment><comment><USER35> > I saw people whip things up in Perl in a couple of hours that would have > taken me days or weeks to do in Lisp.

Perl, my first and only love.

<comment><USER36> Mine too. Until Erlang, and now Ada. I'm building myself a harem.

<comment><USER37> That's the second time I've seen Ada mentioned in as many days. Before that, I did Ada as an undergrad about 1989 and never heard of it again. Is it becoming a thing again?

<comment><USER38> In Europe yes, Ada has been a constant presence at FOSDEM in the last decade and many universities.

This has taken off since we finally got an open source Ada compiler (GNAT) without the typical enterprise/military prices.

Also Ada 2012 is quite different from Ada 83.

Then we have this, [https://www.cvedetails.com/vulnerability- list/opmemc-1/memor...](https://www.cvedetails.com/vulnerability- list/opmemc-1/memory-corruption.html) increasing exponentially every day thanks networked computers.

</comment></comment></comment></comment><comment><USER39> A required thought-piece for all JavaScript devs. Enjoy monopoly while it lasts, but be humble.

<comment><USER40> Fortunately JavaScript doesn't have the problem described by the OP:

 _" With a secret weapon like Lisp in my arsenal in 1986 I could blow my competition out of the water with one hand tied behind my back and holding a martini in the other."_

A present-day JavaScript practitioner will have his left hand busy trying to figure out what's this week's fashionable way to pass around some data in this month's fashionable framework and his right hand busy trying to make npm and Webpack work, leaving no time for martinis or blowing anyone out of the water.

<comment><USER41> JavaScript is for HN what sex is for highscool : those who talk the most about it are those who practise it the less.

If JS devs were not able to focus on bringing value they wouldn't be able to hold jobs, build products nor profitable companies. If JS was so impratical there would not be so many people choosing it over various alternatives for building GUIs, games, websites, WebGL/WebVR, back-end services and so on.

If there is a warning in this story, it is a warning to people looking down on rising languages and frameworks. Those are the people risking to become irrelevant because of a mix of smugness, gatekeeping and ivory tower syndrome.

This attitude is exactly what lost Ron Garret when C++ and Java happened. This also prevented him to see (before the very end of his programming career) that the competition was actually doing just fine with the new tech. You and grand- parent totally missed the point of this story.

PS: You don't make npm "work"

<comment><USER40> _JavaScript is for HN what sex is for highscool : those who talk the most about it are those who practise it the less._

I was using JavaScript professionally in 1999 and still write it almost every day. Not sure what that makes of your sex analogy: maybe I'm the middle aged guy who goes "free love used to be much better in my day"?

You probably know what I meant by "make npm work" — dealing with the messy dependency ecosystem and the less than ideal tooling.

<comment><USER41> I concede that I know what you meant by "make npm work" but I am sorry to hear that you have your _left hand busy trying to figure out what 's this week's fashionable way to pass around some data in this month's fashionable framework_ and your _right hand busy trying to make npm and Webpack work_.

More than 18 years of it must have been such a chore. I am glad this is not how either my coworkers or I spend our time using JavaScript professionally. Maybe I am very lucky, or maybe I just can spot a stereotype when I read one.

More seriously if you still use JavaScript after all those years that very likely proves the point that you can actually be productive with it.

<comment><USER40> Yes, you can be productive in JavaScript. But it's not a magic bullet like Lisp supposedly was for the OP's author in 1986.

I find I'm roughly as productive in JavaScript as in C. Webpack feels more complex than CMake. That's a rather low bar for productivity.

</comment></comment></comment></comment></comment></comment><comment><USER42> Using any language for twenty years straight is going to make you complacent - but goodness, how many languages would have given you that luxury?

<comment><USER40> The APL / J / K family of languages seems to be very strong with this effect. If it fits your problem domain, it's (apparently) so powerful that using anything else feels like a frustrating waste of time.

<comment><USER43> Those of you interested in APL/J/K might find Iverson's book Elementary Algebra interesting where he defines lots of operations in array notation. I dug up this PDF looking for one that was out of print:

[http://www.softwarepreservation.org/projects/apl/Papers/Elem...](http://www.softwarepreservation.org/projects/apl/Papers/ElementaryAlgebra)

<comment><USER44> Texts of that era remind us of the brilliance of Knuth. [http://en.wikipedia.org/wiki/TeX](http://en.wikipedia.org/wiki/TeX)

</comment></comment></comment></comment><comment><USER45> On a tangential topic : I am intimidated by how myriad experiences with programming languages HN commentators on this thread have. I have been in this industry for about 8 years and am considered an above average developer in my current company. I have primarily worked with Java, while fiddling with others here and there. No experience with pure functional languages such as Lisp or Haskell. Am I missing out some important part of the developer experience?

<comment><USER46> I like to think of each programming language as a separate musical instrument.

If Java is a tuba, then maybe Python is a trumpet. They're two very different instruments, but they share a lot of the same underlying intuitions. In fact, I would say that C-style languages are probably equivalent to the collection of brass instruments. There are major variations from trombones to trumpets to french-horns, but not as large as you'd think.

So if you've only played tuba, what happens when somebody hands you a violin? You may understand "music theory" (or computer science) pretty well, but actually sitting down to learn the violin will give you strange insights that aren't apparent on brass instruments. For instance, violins' strings are tuned perfect-fifths apart -- certain scale patterns naturally jump out at you. In the same way, let's compare Haskell/Idris/R to stringed-instruments. It's easy to switch between them when you realize that a viola is a cello is an upside- down bass-guitar. And at a higher level, learning violin and tuba together will make you better at BOTH instruments! As a bonus, playing music is more fun when you can antipate the habits and difficulties of your peers' instruments.

As a side-note, I think Lisp is either a piano or a theremin. I'm not sure why.

Anyway, I think learning each "family" of languages is a worthy aim for every engineer. Here are the groups that I personally hope to master over my lifetime:

      - Hard         : Assembly
      - C-Like       : C, Java, Python, JS, PHP, etc.
      - Pure Fun     : Haskell, Idris, OCaml, Elm, etc.
      - Distributed  : Erlang, Elixir
      - OO           : Smalltalk
      - Lispy        : Scheme, CL, Clojure
      - Stringy      : BASH, Perl, SNOBOL
      - Code-Golfy   : APL, J, K, AntLang
      - Stacky       : Forth, Joy
      - Data-Driven  : R, Mathematica, Wolfram Language
      - Logic-Driven : Prolog

This list is long, but don't let it discourage you! Every family has plenty of magical ideas that make the next one easier to master.

Best of luck on your journey!

<comment><USER47> Perl fits into C-Like, Pure Fun and Code-Golfy in addition to Stringy.

<comment><USER8> In general languages tend to focus on one thing, where Perl tend to focus on many things. So it is difficult to classify.

In addition almost everything that is easy in Perl 5 is also easy in Perl 6, but it also makes a wide variety of additional things easy. For example there is are several meta operators for dealing with lists.

      (1,2,3) Z+ (10,20,30); # (11, 22, 33)
      [Z+] ( (1,2,3), (10,20,30), (100,200,300) ); # (111, 222, 333)

      [Z*] (1,2,3,4,5), ( 10 xx Inf ), ( i xx Inf ); # (0+10i, 0+20i, 0+30i, 0+40i, 0+50i)

      ((1,1),(2,2),(3,3)) «+» ((40,50,60),)
      # ((41, 51, 61), (42, 52, 62), (43, 53, 63))

So it has a lot in common with data-driven languages.

There are also features which you might expect to see in a distributed language.

Basically if there is a choice between A and B, Perl tends to choose both. With Perl 6 doing this to a greater extent than previous Perls.

</comment></comment></comment></comment><comment><USER48> Unless you truly are a one-man army - one must absolutely be paying attention to the tiobe index. Even if the worst possible language is on top, its the one language that can't "destroy your career". It's 10 times more valuable to be programming the same language in a company than be the one Lisp or D or Erlang guy that writes side programs that no one will help you maintain - and will definitely be re-written in Java when you leave.

</comment><comment><USER49> derkeiler.com gets blocked by uMatrix: the domain appears in Dan Pollocks hosts-file [http://someonewhocares.org/hosts/](http://someonewhocares.org/hosts/) in the 'ads' section.

<comment><USER50> The post on Google Groups:

[https://groups.google.com/d/msg/comp.lang.lisp/GMx6gjESVZw/-...](https://groups.google.com/d/msg/comp.lang.lisp/GMx6gjESVZw/-j-YNe4QbGkJ)

</comment></comment><comment><USER51> Man. That's a refreshingly humble outlook.

</comment><comment><USER52> It reads like a tortoise and the hare story.

I have only minimal exposure to Lisp, Prolog, and ML in a programming languages concepts class in the mid 90s.

I really enjoyed using Prolog in the class and had an opportunity to use it professionally twice.

</comment><comment><USER53> I was a C++ fanboy, before I had to deal with Lisp in college. While Lisp itself seemed unusual with all the parentheses, it had a few good ideas I really missed in C++ . That was the point where I looked for languages similar to Lisp and that lead me to what I'm working today with: Haskell.

</comment><comment><USER54> > Lisp's power had made me complacent, and the world had passed me by.

This is very true, especially now. With all the available tools, and libraries, and infrastructure tools, and ..., and ..., and ... the choice of a programming language hardly matters anymore [see caveats below]. What matters is how comfortable you are working with a particular language and set of technologies you chose, and if your choices do not impede you.

[caveats]

Of course, you you want to crunch numbers, or work in a memory/CPU-constrained system, or develop avionics software, then your choice of programming language matters. But let's be honest: the vast majority of us don't do any of those things, and you can whip up a geographically-distributed, auto-scaling cat meme delivery system in any language in a matter of hours.

<comment><USER17> The eco-system largely defines the programming language to use. There are some ways to escape that and people try to do that all the time with huge costs, but on the JVM the majority of software is written in Java, on .net it is written in C# and on iOS it is Objective-c / Swift.

</comment></comment><comment><USER55> Yeah, I totally agree with the sentiment of the article. While Lisp my have been cool in the 80s, it's not the 80s anymore and nobody wants to write AST directly.

No matter how powerful the technique , it's way too low level for the modern world.

<comment><USER56> Pecking out the ASCII tokens and punctuation of mainstream languages isn't a 'high-level' experience either.

Syntax is _way_ down the list of difficult things in the craft of programming, compared to properly understanding problem domains, internalising techniques for robustness, etc.

</comment></comment><comment><USER57> > Sun, 23 Apr 2006

I think it matters since languages like clojure are everywhere, including at Google.

</comment><comment><USER58> Oh wow, I was first introduced to Java in my undergrad and somehow I had some serious issues with the whole OOP stuff.

Thankfully, I took some AI courses, which came with LISP and I was so excited to use it everywhere.

Unfortunately, however, doing basic I/O, networking (this is around 2006) and testing was too complicated for me so I dropped it again in favor of C++ in grad school (performance was also an issue, we needed to crunch a lot of data fairly quickly).

I would love to go back again and give it a shot - any pointers on the best way to learn/start?

<comment><USER59> Practical Common Lisp[0] remains the near-standard text, I believe. It's amazingly good, and shows how useful it can be to develop one's own syntactic abstractions with the practical example of an MP3 ID3 parsing system. I can't recommend it highly enough.

Peter Seibel's second book Coders at Work is also excellent.

0: [http://www.gigamonkeys.com/book/](http://www.gigamonkeys.com/book/)

<comment><USER60> I agree about both. What I liked about Coders at Work are some of the questions he asked the folks. 1) Do you like/program in C++ 2) Have you read TAoCP?

Knuth (interviewed last) claimed that he hadn't really read it. And only one person interviewed did. Oh, also, there seemed to be a general disdain for IDEs.

</comment></comment></comment><comment><USER61> I think the problem there was complacency, as the author mention in their mail. On the other hand, I totally do recommend that everyone picks up some tutorial or guide or book on LISP and learns what the fuzz is all about.

Even today, I feel like a lot of people could learn a lot from LISP and S-Expressions, both of which are powerful constructs.

(Note: I'm not saying you should use LISP productively, it's something you should learn for the heck of it, not to actually use it)

<comment><USER62> People really should learn Racket through this book: "How to Design Programs, Second Edition" [http://www.ccs.neu.edu/home/matthias/HtDP2e/](http://www.ccs.neu.edu/home/matthias/HtDP2e/)

Dense and very complete into learning a Lisp. The one HUGE benefit is I see Racket moving into the most modern programming Lisp. Racket really looks like it has a future.

1) Concurrency and Parallelism (Without pull all your hair out) - [http://docs.racket-lang.org/reference/concurrency.html](http://docs.racket- lang.org/reference/concurrency.html)

2) Great Documentation [http://docs.racket- lang.org/reference/index.html](http://docs.racket- lang.org/reference/index.html)

3) It will make you a better programmer in other languages

Racket's biggest problem - It's fun to use so everyone has their own solutions for many common problems.

<comment><USER63> +1 for HtDP. I think it is also a really valuable book for anyone coming from JavaScript who wants to actually learn how to do functional and reactive programming properly.

</comment></comment></comment><comment><USER64> So me being entrepreneurial-minded, I read this as: He was no good for the common programming languages of the day used by many employers. But if he would have struck out on his own, he would have crushed the competition who were writing page after page of code when his own one page would do just fine.

Disclaimer: Not a Lisper

<comment><USER65> Except by the end of the post he finds programmers in those "inferior" languages (by measure of verbosity which was a main criteria he used to rule them out for himself) were keeping up with him. And some, like the Perl coders, were faster than him on some tasks.

<comment><USER64> Thank you, I only skimmed the post.

</comment></comment></comment><comment><USER66> The biggest issue we are facing as a profession is abstractions. Most of us are good at abstracting things because this is the way we cope with complexity. But the moment we need to face that abstraction and need to understand what is hiding behind it we can reach some limit. A very common example I noticed with Java developers who use frameworks like spring, they use spring tooling to cope with code complexity and are able to put together a functional piece of code in minutes, but as soon as you get them out of the spring framework and ask them to code without using their toolbox, you can see difference between a java programmer and a "spring" programmer. One of the things I like to do in interview is giving people a piece of code in a language or at least using a library or framework they don't know and see how they cope with the complexity of it. It can tell which is just learned to use a tool and which know the basics and can adapt depending on the set of tools available

<comment><USER44> _I have struggled with complexity my entire career. One of our key approaches for managing complexity is to 'walk away' and start fresh. Often new tools or languages force us to start from scratch which means that developers end up conflating the benefits of the tool with the benefits of the clean start. The clean start is what is fundamental. The simplest way of controlling complexity growth is to build a smaller system with fewer developers._ \- Terry Crowley

An informed perspective: [https://www.quora.com/Programming-is-all-about- managing-comp...](https://www.quora.com/Programming-is-all-about-managing- complexity-Do-you-agree-with-that-statement/answer/Keith-Bentley)

</comment></comment><comment><USER67> > I really detest the use of the word "training" in relation to professional > activities. Training is what you do to dogs. What you should be doing with > people is educating them, not training them. There is a big, big difference

I feels this person's pain.

</comment><comment><USER68> > Java and Perl came along (and later, Python).

Perl 1987, Python 1991, Java 1995 (cf. Wikipedia "first appeared" info).

But yeah, the "coming along", i.e. gaining traction, may be said in that order.

Minor nit, a very level-headed assessment.

</comment><comment><USER69> It wasn't "Knowing Lisp" rather it was "not learning any other languages as the industry changed", and he still got a developer job at Google. Why is this here?

</comment><comment><USER70> All of it probably to be taken with a grain of salt.

<comment><USER71> any particular reason?

<comment><USER72> See: [https://news.ycombinator.com/item?id=16584028](https://news.ycombinator.com/item?id=16584028)

<comment><USER71> I'd like my career to be destroyed too please

</comment></comment></comment></comment><comment><USER73> Lisp isn't any more powerful than Javascript. Sorry.

<comment><USER18> >Lisp isn't any more powerful than Javascript. Sorry.

Would you please elaborate?

</comment></comment><comment><USER74> "Training is what you do to dogs. What you should be doing with people is educating them, not training them. There is a big, big difference."

big truth...

</comment><comment><USER75> Half-seriously—but could it actually be true? Because by using a high level language most of the time, you will miss the practice it takes to _effortlessly_ program manually what these languages automate.

Between "GC, full numeric tower, CLOS, incremental development" and especially the ease of metaprogramming in Lisp, you may eventually lose the ability to perform the very programming tasks you have automated away for yourself, whenever you lose access to your own macros.

The true Curse of Lisp would be that Lispers are constantly de-skilling themselves.

<comment><USER60> Having written a significant number of lines of assembler early in my career, I am happy to delegate the task of register allocation (an NP-complete problem) to a compiler. I don't miss that manual task, and don't think the rest of my career suffers for that.

I also don't particularly miss worrying about malloc/free in my programs, nor having to write multi-precision floating point arithmetic routines.

</comment></comment><comment><USER37> Horses for courses, surely? I've never coded in Lisp except for one undergrad assignment in the early 90s... but I know it's good for functional, heavily recursive, algorithmic type problems.

But the world is far messier than that and if, like me, you come from a systems or real-time programming background then Lisp basically did not exist and you were using C-based languages (or even assembler) that were close to the metal so you could code interrupt handlers, asynchronous I/O drivers and the like. Obviously trying to tackle those kinds of problems from a Lisp- centric viewpoint would seem slightly crazy, so why bother?

<comment><USER13> Sounds like you coded in Scheme, not Lisp. ([https://news.ycombinator.com/item?id=16584082](https://news.ycombinator.com/item?id=16584082)) Common Lisp was designed for the messy real world, it's a workhorse, even at the cost of 'prettiness' that Scheme fans like to point out as a benefit for Scheme. So it's been used (either directly or to output a lower level machine code) for all sorts of real world things like OSes (see the Lisp Machines), video games, CAD systems, Mars rovers (subject of this submission), etc...

From the most basic level of syntax, something like [https://github.com/TeMPOraL/cl- wiringpi2/blob/master/example...](https://github.com/TeMPOraL/cl- wiringpi2/blob/master/examples/blink.lisp) doesn't seem that different to me than the C equivalent I've written for embedded devices.

<comment><USER37> Yeah, I remember very little about it except a _lot_ of parentheses. Interesting to hear it is a lot more "real world" than I thought - seems my understanding is flawed... but equally interesting that I was unaware of it, having never once encountered it in my entire career.

<comment><USER26> The average engineer has some dozen things they encountered in their career, and everything else is something that they haven't encountered once.

Off the top of my head, I've never encountered such tools as: Visual Basic, PowerShell, VHDL, and IBM 370 assembly language.

<comment><USER60> Ah, but think of what you are missing!</comment></comment></comment></comment></comment>


Should 'Race' Be Taught in High School Biology? - <AUTHOR> https://undark.org/article/biology-textbooks-race-high-school/ <comment><USER2> I argue, no. Not because of the weighty, complex social issues, but because wading into that subject area means addressing larger, more difficult ontological dilemmas in biology that aren't suited for examination in a high school biology class.

For example, the teacher's preferred answer to this question was false:

      5. True or False: When several traits are combined they can
      be used to distinguish one racial group from another.

Technically, the answer is true. It's only false if trait only refers to the caricatured stereotypes of some particular racial classification system. But even if trait means readily identifiable phenotypes, you absolutely can break global populations into identifiable groups using traits like ear wax & perspiration, eye color, hair color & type, skin elasticity, and various other traits. The groups may not perfectly reflect traditional racial classification systems, but that's of no matter. The old Victorian system is but one among many around the globe, and all cultures are adept at redefining the contours of race. The racial classification system of modern American culture is nothing like the Victorian system. Disproving the inconsistency of Victorian- era race is like disproving phrenology--nobody cares. (We say "race" was a Western invention but that's just because Western Europe was the birthplace of modern phylogeny and biology. Race is a meme that was and is easily adopted and localized.) A shallow approach risks piquing students interest without dispelling the notion that any system of socially constructed racial categorization is broken and unproductive.

The counter-point to typical racial classification systems about the degree of genetic diversity of African populations doesn't resolve the question at all, because once you open the door to sophisticated genetic variations it becomes trivial to track populations.

There's just too much complexity for a high school biology class to really wrestle with. It would be awesome if it was explored in a science-centered high school class because it's a perfect way to really drill down into fundamental concepts in science, but it'd have to be a seminar with a low student-to-teacher ratio. And the subject is a minefield, particularly in an age where people are primed to be outraged. It's just not practical for most schools.

Incomplete and inconsistent answers are the perfect environment for breeding pseudo-scientific concepts. There's something to be said for not asking the question unless your prepared to invest yourself in finding the answer.

<comment><USER3> I don't really remember exactly what we covered in high school. I'm not sure if we ever got into race specifically but we definitely got into genetic traits and phenotypes. We definitely went over Mendel's pea experiments and talked about human physical characteristics. I'm honestly not sure if we really got into race in a classical Victorian sense though.

I don't really like the term race anyway. It's not a proper biological classification and really shouldn't be taught in biology. We're all the same species with a good amount of genetic variation that comes from lots of things. Teaching anything about race in a science class seems unscientific to me.

</comment></comment><comment><USER4> I think the baity headline words "Taught in" should be changed to "Covered by".</comment>


Turkey's Free Press Withers as Erdogan Jails 120 Journalists - <AUTHOR> http://www.nytimes.com/2016/11/18/world/europe/turkey-press-erdogan-coup.html <comment><USER2> I wonder how much he will be a good "ally" to get crack-down-data from the CIA.

Problem is, this kind of "president" destroy civil society usually so much, that in the end, they get replaced by someone worser.

</comment><comment><USER3> Erdogan is concerned about "fake news" in Turkey as well. /s</comment>


The Cross-Examined Life: Socrates Debates the Laws - <AUTHOR> https://www.laphamsquarterly.org/roundtable/cross-examined-life <comment><USER2> Keep in mind this is all base don Plato's semi-fictionalized depiction of Socrates. In real life Socrates may have supported, and was certainly seen as supporting the Thirty Tyrants who briefly took over Athens, including one of his former students.

<comment><USER3> You're referring to the thirty tyrants he disobeyed, his apparent sin in the public mind was staying in the city at that time - but since he also stayed in the same city after it condemned him to death, this isn't much of a demonstration of his loyalty to the tyrants. [https://en.wikipedia.org/wiki/Thirty_Tyrants#Socrates_and_th...](https://en.wikipedia.org/wiki/Thirty_Tyrants#Socrates_and_the_Thirty)

<comment><USER2> Well the tyrants killed or exiled everyone they thought were disloyal to them, and they let Socrates stay. This along with him being Critias teacher meant that the Tyrants at least considered Socrates to be on their side, even if Socrates didn't see it the same way. As far as disobeying the Tyrants Socrates said that he was ordered, along with three others, to bring another citizen to the tyrants where he would have been killed. Socrates said he disobeyed and just went home, refusing to help or to warn the man. I'm not aware of anyone who did corroborate this, and even best case scenario it's still a pretty weak form of disobedience which wouldn't have won him many friends among the families and friends of those executed.

<comment><USER3> I don't follow the logic; the tyrants didn't kill the majority of the population. He didn't start a one-man war with them, that's not proof of support.

</comment></comment></comment></comment><comment><USER4> What if the Laws of Athens, as personified in the dialogue, were subject to change over time, like our social contracts? Would they deserve such treatment that one would prefer death over harming them?

As I see it, this view of purity and absolute objectivity in law doesn't conform to our world, at least in its current state.

Edit: To add, the possible change in the Laws is also governed or driven by entities who are neither objective nor just: powerful individuals, corporations, parties, lobbies, etc.

<comment><USER5> As tempting as it is, I don't see it as useful to compare Socrates' Athens to any of our modern nations. IMO this is what's wonderful and exasperating about Plato: all of his arguments are based on a bulletproof ideal, a mental concept, that he himself never actually finds in real life. First principles, I guess, to reason from. In several of his dialogues, when Socrates himself is pressed to locate these ideals in real life, he has to recourse to myth or folklore. This doesn't _invalidate_ them, in my opinion; but it's an important context for discussion. I guess what I'm saying is, it's a thought experiment; presumably even Socrates' Athens is not actually Socrates' Athens.

I guess as I sit here writing and thinking these thoughts, I'm coming to see it as actually kind of a strength. If, like Robert Kegan [0], we see identification with abstract systems (like laws, principles, constitutions, etc) as developmentally more sophisticated than identification merely with tribes, then like him we can also see it as still more developmentally sophisticated to learn _not_ to restrict one's identity to a tightly-defined set of abstract principles; we can hopefully learn to adapt our identity to our circumstances with best intentions and a lightness of spirit. I think Plato's Socrates, with the occasional recourse to myth and folklore, is a pretty inspiring example of this.

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

<comment><USER6> I agree with most your grounding points but not with your interpretation. It sounds too risky of unnecessary apologism to me. I guess I feel I would have to question myself of fraud. This is in consideration of the incentive to justify immoral behavior, and the lack of evidence that more tribalism would have anything to offer society.

So, how do you reconcile with the apparent correlation between a lack of faith in philosophical ideals and dishonesty, neoliberalism, lack of nuance, late capitalist culture, etc.? Do you reconcile this with simple unfettered individualism? It seems to me that this sort of cartooning of Socrates is more than unnecessary; of course it isn't provable and would undermine the already limited value it could otherwise have, and which it seems our society would do best to use make use of.

<comment><USER5> Solid questions, thanks for the thoughtful response. I can try to speculate. I should observe that I haven't studied developmental psychology or philosophy above an undergrad level, so I'm likely to misstep with both logic and terminology.

> the incentive to justify immoral behavior, and the lack of evidence that > more tribalism would have anything to offer

First I can say that I don't think Kegan means that the relaxation of identification with abstract systems means devolving back into identification with tribe. I think it refers more to the ability to engage in good faith with criticisms of one's abstract systems, one's ideologies, and recognize their weaknesses and inconsistencies much as one did with one's tribe--that is, a transcendence of the need to associate weaknesses of the system with weaknesses of the self, with the associated defensiveness. I think anyone who uses those inconsistencies and weaknesses to justify immoral behavior probably didn't reach the abstract-system phase to begin with, though it doesn't seem unlikely that someone would feign that to display tribal identification. I'm guessing that's what people mean by the term "virtue signaling."

> the apparent correlation between a lack of faith in philosophical ideals and > dishonesty, neoliberalism, lack of nuance, late capitalist culture, etc.?

I'm with you on this one. I don't think Kegan would advise sacrificing all faith in abstract systemic thought, and I don't think that's what Socrates is doing when, e.g., at the end of a long series of questions, he shrugs and tells a story he heard one time about the gods. I think what's at issue is whether one can separate oneself from one's ideals well enough to critique them, to balance conflicting ideas thoughtfully and not feel obliged to defend your system to the death when it butts up against other systems. I think what I called "lightness of spirit" above is key here, and we see it all the time in Socrates - the wisest in Athens not because he knew more, but because he knew that he didn't know more. I mean, so he says. There's obviously abundant lightness of spirit there too.

The charge of individualism is a good one. I hope that there's a stage past the militant adherence to first tribe and then ideology that doesn't necessarily entail individualism. Maybe it just looks like a relaxed broad view of the human tragicomedy that takes the good with the bad, sympathizes with the suffering, and makes choices according to conscience.

As for cartooning Socrates, I hope not. I'm certainly not caricaturing him mean-spiritedly. I admire his enterprise and methods, including when he has to set rationality aside and tell a good story. I think those moments make him more humane, more relatable, more realistic. I realize that my current representation of him is at odds with the point made in the article, but even here, choosing death according to conscience, it's still not about making some grotesque martyr of himself. I think it's admirable.</comment></comment></comment></comment>


Another Spanking for Apple from Judge Posner - <AUTHOR> http://www.groklaw.net/article.php?story=20120704142749867 <comment><USER2> The great thing about patent-a-geddon is that its really bringing the problem out front and center, both to the judiciary who are learning how the patent office failed us around the turn of the century and Congress where companies are crying out for relief and promising campaign money if they get it. I predict it will do a lot to make this stuff saner.

<comment><USER3> Agreed, although it's always a risky bet hoping Congress will turn corruption (promises of campaign money, cozy ties with lobbyists) into good legislation. I'm sure it happens on occasion, but we could just as easily wind up with laws that gave relief only to a few very large companies in certain (ill-defined) industries.

But here's hoping!

</comment></comment><comment><USER4> Somehow Apple forgot that he was borrowing (let's not use stealing) many ideas from other companies. The "Slide to unlock" probably was inspired by Sony walkman's "slide to open". Surely, they must have got a lot of experience in suing other people over ideas they borrowed back from the windows GUI case in 80s.

<comment><USER5> You don't even have to look that far back - pre iPhone, it was used on the Neonode N1m:

<http://youtu.be/7ru2GjBTHRY?t=3m56s>

Even if the iPhone were the first to use it, the patent is still ridiculous. If you tasked 100 engineers to come up with an unlocking solution for touch screens before the iPhone existed, I'd bet good money at least 50 of them would consider it an option. That's not non-obvious.

Patents in software are no longer about inventions, they're about being the first do obvious technique x in context y.

And sometimes, that's not even necessary - I've had a technique I used for displaying cross domain ads in Flash that I considered obvious at the time patented out from under me later on. The "in Flash" bit being the novel part, I assume - I try not to spend too much time dissecting insanity.

At least we're starting to see notable investors rally against them, like pg and Fred Wilson - the very people who should be benefiting the most from a non broken patent system.

Edit: Clarified line about the 50/100 engineers.

<comment><USER6> Sure 100 engineers would come up with the idea "slide to unlock". After you see and use something it's always easier to find _this said solution_. BUT before Apple it seems that none of the 100 engineers you mentioned came up with the idea and it was never build and that means it was never obvious before Apple created it.

Saying things are obvious after someone already _invented_ a dead simple and good solution for a problem we had for years is always easy.

EDIT: Grammer.

<comment><USER5> Come on, I clearly meant _before_ Apple first used it. Today, 100 out of 100 engineers would consider it.

You are right that obviousness changes over time, and it's important to consider it from the perspective of the time of the invention.

But some things genuinely _were_ obvious at the time of their 'invention'.

<comment><USER7> The obvious question is why didn't it appear on ANY of the major OEM's phones before the iPhone ?

<comment><USER8> Because the previous touchscreens was resistive and used with a pen/nail. And their UIs wasn't at all about dragging stuff but rather clicking on them.

Once you define your UI around a capacitive touchscreen "slide to unlock" becomes trivial.

<comment><USER9> Which is really the key aspect to all of this.

Technology moves forward enabling new behaviors that were never possible before, and much of the "innovation" that people declare is nothing more than a land-rush (see the "on a computer" that was the invention of countless patents). The iPhone stood on the backs of the GPS industry, for instance, that pushed much of the innovations in mobile chips, GPUs (OpenGL ES and mobile GPUs were made for the in-car GPS industry), screen and touchscreen technology. Suddenly the technology was there to do things that couldn't be done before and the land grab was afoot. Is a land grab innovation?

I don't discount that Apple invented and refined a lot, or that some companies seem to be addicted to simply cloning (Samsung is particularly guilty of this), but a lot of what Apple is credited with isn't much more evolved than "on a computer". And now that we have all sorts of innovations in battery technology, chipsets, etc, things like Google's glasses are possible, but only a fool would imagine that they created them out of the ether, instead of simply moved to where technology had brought them.

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> Why isn't there a bill circulating in the house or congress for patent reform yet? It's reasonably common in my country for companies to sponsor bills. Company having problems with legislation -> pays lawyers to write a bill -> lobby a few congressman to put bill to vote -> bill gets voted -> if no one opposes it, company gets its new law approved.

Is it too different in the US? Why hasn't Google done this yet? They're sure under a lot of pressure, have a lot of interest in patent reform and have enough lawyers to write a great bill. Just getting something like this to get voted, so it would show up on media, that would be huge. The MAFIAA is doing it to defend their interests. Why isn't Google doing the same to defend theirs?

<comment><USER11> There are many powerful interests on the other side of the issue. For example, pharmaceutical companies have very different desires for the patent system than Google would.

<comment><USER10> I can think of a bazillion of more problems like that. I can also think of a bazillion solutions (ex: reform only for software). An initial draft doesn't need to be perfect. But it would be great to get the conversation started. I'm not optimistic that a patent reform bill would be approved anytime soon, nor in it's first few attempts. But we have to start somewhere, right?

<comment><USER12> A proposed bill to ban software patent would be great, but maybe Google, Apple and co. actually "like" the status quo ? It's a kind a dissuasion weapon that only huge companies can get, so even if they don't like to fight with each other, at least they prevent new competition to arise

</comment></comment></comment></comment><comment><USER13> Patent lawyers everywhere are laughing all the way to the bank. This is a phenomenal time for them to cash in on the dozens of giant lawsuits that are happening every single day. The customers are enormous and willing to pay however much it takes to make sure that their billion dollar investments are not removed from the market. What's a few hundred million dollars compared to the kind of money that Apple is reaping from their devices? Fortunes are being made as we speak.

These folks have a lot to gain from the patent system not changing. I'm going to guess that their spin will be "defending America's ingenuity" and "letting creators benefit from the fruits of their labor".

</comment><comment><USER14> There was a Castlevania game for the DS where you had to swipe patterns to unlock some doors (among other things), does that count? I forget which one, but definitely pre-iPhone.

<comment><USER15> <http://en.wikipedia.org/wiki/Castlevania:_Dawn_of_Sorrow>

</comment></comment><comment><USER16> I dont know why people dont getting the reality of the whole patent thing. If apple not patenting things, someone other does and come back to kick apple in the nuts. Its just one of the many legal capitalism games. Stop the patent laws and nobody does it. Just simple as that. If Samsung or Google would lead the mobile Race, they would act the same (and they do already).

<comment><USER17> >If apple not patenting things, someone other does...

No, not at all. Patents are only granted if there's no prior art and as such if apple uses anything (such as slide to unlock) in one of their devices without patenting it that also removes the possibility for anyone else to patent it.

>If Samsung or Google would lead the mobile Race...

There are already more android devices than iOS devices. Google also leads in various other internet spaces and isn't nearly as aggressive patent-wise as Apple.

You're right that patent reform is the real solution, but I don't think it's us who "dont [sic] get the reality of the whole patent thing" but you.

</comment></comment><comment><USER18> Could someone explain to me why NeXT Software/NeXT Computer is listed as a co- plaintiff, on a lawsuit that was only recently filed? Did Apple and NeXT not fully merge in some capacity? As-is, this would be like reading Attachmate, Inc., Novell, Inc., and WordPerfect Corporation had just sued Microsoft.

</comment><comment><USER19> Is a point not a zero length line?

edit: it's going to have to be line segment isn't it. Since nobody drags infinite lines across a screen.

<comment><USER20> This has irked me because those who don't know anything about touch screen technology don't seem to understand that 'taps' are actually small swipes. The sensors have a far higher resolution than your fingers ability to stay still, so the system rounds down small 'swipes' based on x time over y legnth into what the user meant as taps. It senses the touch down (start point) and the touch up (end point) which may or may not be a zero length swipe or even a small distance swipe.

At a a hardware level and strictly speaking, taps are swipes, Apple just abstracted tiny swipes away into a tap function.

<comment><USER21> It irks me that some people who don't know anything about the physics of touch screen technology and don't seem to understand that 'taps' are actually small changes of capacitance of an array of capacitors. [0]

At a a physics level, and strictly speaking, taps and swipes don't exist.

Patents are pragmatic and full of abstractions. You are not required to specify a patent at every level of abstraction all the way down to its mathematical or quantum properties.

(I have to read a number of mechanical patents each week as part of my job).

[0] <http://en.wikipedia.org/wiki/Capacitive_sensing>

<comment><USER20> This is very interesting, thanks for the perspective.

</comment></comment></comment></comment><comment><USER22> > 'Another Spanking'

What does that mean, exactly?</comment>


Apple needs to change iPhone's call UI because robocalls are killing us (2018) - <AUTHOR> https://spencerdailey.com/2019/12/31/in-2020-apple-needs-to-change-iphones-call-ui-because-robocalls-are-killing-us/ <comment><USER2> Is "Silence unknown callers" released to the public already, under Settings > Phone?

EDIT: The help text says:

 _Calls from unknown numbers will be silenced, sent to voicemail, and displayed on the Recents list._

 _Incoming calls will continue to ring from people in your contacts, recent outgoing calls, and Siri Suggestions._

<comment><AUTHOR> Looks like it, thanks I'll update the top of the article. The basic and disruptive full-screen UI is still the only option for receiving calls

</comment></comment><comment><USER3> I'd like to see Apple buy Truecaller and then actively keep a database of spam callers.

Here In the UK I've lost count of the amount of robocalls that say "We heard you were in an accident".

</comment><comment><USER4> In my opinion this is mostly a telco problem. They are the provider of phone calls and infrastructure and should own this for their customers.</comment>


Ask HN: How long can you code before got stuck and start googling? - <AUTHOR> Is this a good trend? I mean, there's too much knowledge to pick up, technologies are changing too fast, and you can find good enough solutions for problems in google, so why bother solving it on your own?<p>I'm wondering to get into something algorithmic stuff just for kicks to ease my greed for REAL programming :) <comment><USER2> I used to open books to find answers to my questions. Programming books were a permanent fixture in my desk. Its difficult to remember everything. I now use bookmarks for online documentation. How often do I use it? As often as required.

There is a point with solutions posted online. You still have to document and write tests. In the end, you might have not come up with the actual solution, but you still have had to learn how it works in order to test and document it. It will usually make you refactor it a little bit. Thus ending with your own solution. Programming is funny.

</comment><comment><USER3> You are likely not paid by your company to write lines of code, but rather to solve problems, and thus create value. Using a standard library rather that rewriting you own solution is just sound business.

You need to Google a topic before starting anything you are not familiar with. If you have already started, it is too late!

PS : if you are coding as a hobby this is another matter, do what you want.

</comment><comment><USER4> I do plenty of googling, but this reminds me of the time I spent one summer working at a defense laboratory. Many of the coworkers in my group spent most of their time in zones for doing classified work without access to the internet, and thus couldn't really google (without leaving to go somewhere else.) One of them burned a book titled something like "The Python Cookbook" onto a CD to take into their office in the classified zone and the security asked them why they were bringing in a cookbook.

</comment><comment><USER5> Perhaps a better question: How long do you have to Google before you're not stuck and can start coding? :)

<comment><USER6> Perhaps a better better question: How long do you spend procrastinating on HN before you can start coding? :)

<comment><USER7> I have HN in one monitor and work in the other so I can do both.

<comment><USER6> XKCD for that: [http://xkcd.com/303/](http://xkcd.com/303/) ;-)

<comment><USER7> Now how to make this excuse work when i'm working with PHP and JS....

</comment></comment></comment></comment></comment><comment><USER8> If the project is just for shits and giggles and I basically know what I'm doing I tend to try holding off googling for a while, leads to more source code reading and allows for accidentally discovering unrelated but helpful stuff. If it's for an actual project that I'm expected to move on I tend to google after I try only a few ways (max 10-15 minutes total) around the problem. Definitely makes side-projects take forever but I feel like it's productive in the long run.

</comment><comment><USER9> Often enough, when I get stuck I realize that plenty of other programmers have gotten stuck at that point too. And now I wonder if this has a detrimental effect on the developer community.

By that I mean if a common problem has such a common workaround, then the workaround becomes accepted as a valid solution, and the original problem doesn't get resolved. Ever.

</comment><comment><USER10> Even on problems I already have a solution for, I usually google it to see how other people are solving that same sort of problem. Often I find that my solutions may work, but are not that efficient. I have a lot of little code snippets I've saved for various tasks, etc...

<comment><USER11> Yep, I'm always googling. No shame in that.

</comment></comment><comment><USER12> Copy/Paste/Edit is the most widely adopted API :) If someone could improve copy/paste workflow, it would have a wide impact. E.g. improve search for code snippets that are similar, or finding other devs who are using similar code snippets.

<comment><USER13> Microsoft already did something like this: [http://codesnippet.research.microsoft.com/](http://codesnippet.research.microsoft.com/)

Stack Overflow and MSDN search embedded in Visual Studio.

<comment><USER6> That is so cool. I use Visual Studio every day, and I can't believe I haven't seen this before!

</comment></comment></comment><comment><USER14> Yes, we're moving more and more into what Verner Vinge coined as "software archeology". Instead of writing you you're finding code that does what you need.

</comment><comment><USER15> I consider googling part of my programming and not a last resort solution but actually a workflow.</comment>


Show HN: Tuleap – Open-source application lifecycle management - <AUTHOR> https://demo.tuleap.org/ <comment><USER2> "Invalid Password Or User Name"

<comment><AUTHOR> You need to click on one of the three buttons and you'll get an automatic login that will get you on a demo project. Scrum, Kanban or Waterfall. Happy to help with any additional information</comment></comment>


New study provides evidence that we need different drugs for men and women - <AUTHOR> https://www.wired.com/story/womens-pain-is-different-from-mens-the-drugs-could-be-too/ <comment><USER2> Some takeaways that underscore the fact that it took the NIH until 2016 to require animal research to feature both male and female animals -

"Women greatly outnumber men among migraine sufferers, and women made up about 85 percent of the participants in the Phase 3 clinical trials of the three anti-CGRP drugs approved by the Food and Drug Administration in 2018. Price wonders if the anti-CGRP drugs aren't specific to migraines—but to women. His work with mice suggests that the drugs don't work in males, but block pain in females.

Mogil once emailed a researcher, asking whether a pain drug worked better in men than women. The researcher didn't know, and couldn't pursue the question because the data was controlled by the pharmaceutical company. Mogil was left wondering if drugs that looked promising in male-only animal studies might have failed in clinical trials when the results were blended with those in women, depriving men of a viable treatment...

[Meanwhile] medicines that could work best for women wouldn't make it into the pipeline at all when basic science excluded female animals. Price wonders if unresolved pain among women might have led to their higher levels of chronic pain."

</comment><comment><USER3> So slowly, it seems we are going back to the primitive healer's approach where they did not had a specific drug for a specific disease, but rather they made a individual combination of drugs (and other methods) for every individuals problems.

Because, of course men and women are different so it should not be surprising that they react differently to drugs, but also men or women in itself are very different, depending on their genes obviously, but also their age, their routines, their diet etc.

So good to hear, that we are going one more step away, from the generalistic approach. Which was a cheap way, thats why it did produced results as well, but maybe not the best results.

<comment><USER4> Yes. Ayurveda does treat every individual differently and does customized medicine on case-by-case basis after observing the patient carefully asking questions that provide root cause and then make a medicine that only works for that individual for that issue alone. No side effects. Modern medicine treats every one equal and prints a list of side effects on drugs as if they are nothing. But it is the body's way of saying it is not happy with whatever external chemical he has taken is not for that body! Finally it's a good step which modern medicine is ignoring for ages even after advised by a few before.

<comment><USER5> Ayurveda hasn't been shown to work better than placebo as far as I know.

<comment><USER4> Then you don't know anything about true ayurveda. Have you ever met someone practicing ayurveda for anything and got treated? I got cured for 2 things, one of which has no known medicine (only repeated surgery for life) and it never got back in past 18 years.

<comment><USER5> I don't know very much about medicine either, but it's easy to find double blind studies that show efficacy for all kinds of medical procedures. Is there anything similar for Ayurveda?

<comment><USER4> That's not how it works. Ayurveda is not a medical pharmacy. It's a way of treating individuals. Like I said earlier, each case is different. There are no common medicines other than a few (6 or 7), which are known to work for any body type. For anything that doesn't get cured through them needs customized medicine. I am no expert either. But there are no lobbyist pharmas backing studies on Ayurveda medicine as they are like open source, free. Since you asked I know one, KSM-66, if you know anyone with depression/insomnia/high heart rate etc. they can try it. That's one of the common one of the 6 or 7 I mentioned above.

<comment><USER6> Of course you could study it. Give 50% of the participants individualized Arurdvedic medicine and 50% the standard medicine. Give both groups the consultation Adudveric style as a control measure. See if there is a statistically significant difference in results, then you have an answer. (Your starting point will be people with the same problems/symptoms).

Or am I missing something?

(Your answer comes across as implying "no one is the same we can't possibly disprove / prove this stuff")

<comment><USER3> "(Your starting point will be people with the same problems/symptoms).

Or am I missing something?"

I don't know much about Ayurveda, but the general idea is, that there are no people with the exact same problems/symptoms.

Which is not, how far I would take it, so you have to do generalisations, but maybe much finer grained.

</comment></comment></comment></comment></comment></comment></comment></comment><comment> curry-castaway Direct link to the study – "Electrophysiological and transcriptomic correlates of neuropathic pain in human dorsal root ganglion neurons": [https://academic.oup.com/brain/article- lookup/doi/10.1093/br...](https://academic.oup.com/brain/article- lookup/doi/10.1093/brain/awz063)

</comment><comment><USER7> It is interesting, but since quite a few examples here pertain the brain. By accepting the conclusions of the article we must also accept the idea - presently under attack - that there are indeed clear biological differences between the male and female brains.

<comment><USER8> I don't think it's as black-and-white as that.

There can be statistical differences on average, without requiring that every brain is unambiguously classifiable as "male" or "female" on a biological level based on that trait.

For example- if a drug works well for 80% of women and 15% of men, that implies that there are some men whose brains utilize the "female" pain pathway and some women who use the "male" pain pathway. It also suggests that that drug might be a good first line of treatment for female patients and a secondary or tertiary line of treatment for male patients. Trying to classify brains like this is like trying to classify sex based on height- on average it sort of works, but there's enough overlap between the heights of women and men that you can't actually do it reliably on an individual level.

So tl;dr I don't think that "clear biological differences between the male and female brains" is actually a reasonable conclusion that can be drawn from this research.

<comment><USER9> Yes, except practically nobody claims that it's black-and-what. This idea which is under attack (for which James Damore got fired, for example) is that measuring equality by setting 50/50 female-to-male ratio as an ideal doesn't reflect reality, because _in general_ sex differences very likely exist beyond culture, and they logically should lead to different representation in various fields of occupation.

</comment></comment></comment><comment><USER10> The article starts out with saying that drug development begins with studies on male rats and mice, but then goes on to describe difference the biological pathways for pain in men and women. That creates some obvious question. How similar is the pain pathways between humans and rats, and is it more similar than between women and men?

There should basically be 6 sources of differences. Animal M vs Human M, Animal F vs human F, Animal M vs Human F, Animal F vs Human M, Animal F vs Animal M, and last Human M vs Human F.

A difference in any of those could potential cause a wrong conclusion in a study. The question I hope researcher has is which of those are more likely to have a significant difference in pain research

<comment><USER11> Different model animals are picked for different types of medical studies, or at least they are supposed to be, based on similarities between the model and humans within the context of the functionalities under test.

</comment></comment><comment><USER12> Link to another recent study related to pain differences between men and women (Male-Specific Conditioned Pain Hypersensitivity in Mice and Humans) [https://www.cell.com/current- biology/fulltext/S0960-9822(18)...](https://www.cell.com/current- biology/fulltext/S0960-9822\(18\)31496-9)

</comment><comment><USER13> And women also display different cardiac symptoms from men [https://outline.com/aYwSJV](https://outline.com/aYwSJV)

</comment><comment><USER14> The mechanism of action of analgesic drugs is very simple and well-understood.

Considering the fact that the very same painkillers that humans use are effective on _drastically_ different organisms, such as snails or crustaceans, I find it extremely unlikely that gender plays any significant role in their effectiveness.

To be honest, it feels like this study was politically motivated.

<comment><USER15> > The mechanism of action of analgesic drugs is very simple and well- > understood.

[https://academic.oup.com/bjaed/article/14/4/153/293533](https://academic.oup.com/bjaed/article/14/4/153/293533) (2013)

 _the exact mechanism of action of paracetamol_ [ie acetamophen] _remains to be determined. There is evidence for a number of central mechanisms, including effects on prostaglandin production, and on serotonergic, opioid, nitric oxide (NO), and cannabinoid pathways, and it is likely that a combination of interrelated pathways are in fact involved._

That's the most widely-used analgesic in the world, and its mechanism is evidently neither simple nor well-understood.

</comment></comment><comment><USER16> I'd ask everyone who came to this article with the assumption that someone would object to or get offended by this finding, to actually observe if anyone does.

<comment><USER17> Right above you, someone getting offended that there aren't enough trans people in the study. I thought that was an interesting coincidence.

[https://pasteboard.co/I6fhTWy.jpg](https://pasteboard.co/I6fhTWy.jpg)

<comment><USER16> Seems like a reasonable comment to me, and not an objection to the finding.

</comment></comment></comment><comment><USER18> I was told that the clinical studies of birth control pills were done on male subjects.

<comment><USER19> I guess they had 100% success rate.

<comment><USER20> I'd assume it was mostly just to test their ability to harm/toxicity?

<comment><USER18> I believe the fundamental reason was that testing on women of childbearing age was not recommended, so they tested on men.</comment></comment></comment></comment>


Simtec Entropy Key - <AUTHOR> http://www.entropykey.co.uk/

<comment><USER2> I doubt me or my business happens to have any real, justifiable need for this now. But the enthusiastic geeky kid in me thinks this is super cool :)

Looks like it may be available by my birthday in a few months, maybe I'll suggest it if someone asks what to get me as a gift.

<comment><USER3> The first thing I thought of was shuffling cards for online poker sites.

</comment></comment><comment><USER4> I made something like this myself a while ago, albeit much simpler, for some crazy project. Generated a couple of CDs of data in not very long - the RS232 link was the bootleneck.

A couple of good links for those that want to give it a try:

<http://robseward.com/misc/RNG2/>

<http://www.cryogenius.com/hardware/rng/>

I lost track of the actual links that I used but it's all roughly the same principle. One of the links I lost track of had a paper describing how random avalanche noise is, had some favourable things to say.

</comment><comment><USER5> If you want the real thing, get a beam splitter. I'm not naming names or really saying anything credible at all, but electronic noise isn't in the same ballpark.

These folks have them available for PCI and USB: <http://www.idquantique.com/products/quantis.htm>

(no I'm not affiliated in any way)

<comment><USER6> The only thing they're not in the same ballpark for is quantity of generated data. If you don't need much, this is as good.

</comment></comment><comment><USER7> Hmm. This might be a good way to deal with entropy starvation on VM guest OSes. Kind of a niche concern, but one I happen to have.

</comment><comment><USER8> Can I expect real performance benefit for a single server that does some SSH and HTTPS transfers as well as encrypted filesystems?

<comment><USER6> Possibly. If your SSH and HTTP daemons and encrypted file systems use /dev/random, and you're running Linux, then possibly. Look in /proc/sys/kernel/random/entropy_avail, and possibly graph this over time. Also, some modern Linux distributions use data from the random pool at exec() (to randomise linkage), and so it's possible you could be running low already. TLS email also consumes huge amounts, and anybody running virtual servers might be having a problem.

<comment><USER9> Is there anyway to speed this up without hardware? My server has a laughably low amount of entropy available and I think it is why a lot of the connections are slow.

If not what is a cheapish way to get hardware entropy?

<comment><USER10> If you have a sound chip on your server which is capable of disconnecting itself from the microphone socket on the back then you might be able to use low-order bits from that and a tool such as the audio entropy daemon or 'randomsound' (the latter is packaged in Debian) however I'd not recommend that as anything other than a stopgap until you can get something more effective.

Simtec expect to release their Entropy Key for around GBP42 delivered in the UK. (worldwide postage costs will obviously inflate that a bit).

<comment><USER9> Wow, that is a pretty reasonable price. When do they expect to ship?

<comment><USER6> If I have anything to do with it, in the next month or so :)</comment></comment></comment></comment></comment></comment>


Ask HN: Karma thresholds? - <AUTHOR>

As a relative newb, I have noticed that there are apparently karma thresholds for upvoting/downvoting, and (yay) changing the color of the top bar without a script.<p>Just curious if these are published anywhere (I found some numbers from well over a year ago that are apparently no longer accurate). <comment><USER2> I do not know the answer, but threshholds are adjusted as the amount of karma in the system increases. Although I do not if the threshold must be changed manually or if it is set to a percentage of the the overall karma.

<comment><AUTHOR> Yeah I did see some reference to that as well, which certainly makes sense. Karma inflation, it was called.</comment></comment>


Ask HN: Which functional programming book? - <AUTHOR>

Programming in Haskell, Graham Hutton.
Functional programming in Scala, Bjarnason.
Discrete Mathematics and Functional Programming, VanDrunen.
What would be your recommendation? <comment><USER2> Functional programming in Scala, one of my favorite functional programming books if you take the time to do each and every exercise. Coupled with it's solid Github repo ([https://github.com/fpinscala/fpinscala](https://github.com/fpinscala/fpinscala)) and companion book ([https://leanpub.com/fpinscalacompanion](https://leanpub.com/fpinscalacompanion)), it's a winner.

</comment><comment><USER3> I would recommend you follow the order of courses listed in [https://github.com/bitemyapp/learnhaskell](https://github.com/bitemyapp/learnhaskell) because simply reading won't get you far enough. The Penn CIS194 (2013) course is excellent, try working through it and reading Learn You A Haskell as a supplement.

</comment><comment><USER4> I have read most of Functional Programming in Scala. It is a very good and well thought out book. I understand FP concepts way more now. The books has practice exercises you can do as you read through the it and solutions are in a Github repo if you want to compare your solutions.

</comment><comment><USER5> _SICP_ , in part because it's not entirely functional and so it goes on to explain the issues that arise with mutation.

</comment><comment><USER6> Thinking Functionally with Haskell, Richard Bird</comment>


Google invests $1B into Lyft - <AUTHOR> https://www.axios.com/google-invests-1-billion-into-lyft-2498537658.html <comment><USER2> Also being discussed in the thread "Alphabet's CapitalG Leads $1B Round in Lyft": [https://news.ycombinator.com/item?id=15508603](https://news.ycombinator.com/item?id=15508603)

</comment><comment><USER3> Most conversation on this topic is occurring in [https://news.ycombinator.com/item?id=15508603](https://news.ycombinator.com/item?id=15508603)

</comment><comment><AUTHOR> @Mods: Please mark as dead</comment>