How Lisp is Going to Save the World - <AUTHOR> http://landoflisp.com/#guilds <comment><USER3> Great story. Unfortunately, the API documentation and tutorial writing guilds went extinct decades ago and has never been able to return to Lispland. :)

<comment><USER4> Seriously, this is a great point. One of the big problems with a small community of programmers who all think of themselves as elite, is that tasks like documentation and tutorial writing go by the wayside. This comment should be a wake-up call to any smart and far-sighted individuals who want to promote a language.

<comment><USER5> Yep. They have time to draw elaborate cartoons, but not elaborate documentation! Funny how that works.

<comment><USER6> The author (Conrad Barski) wrote a book: Land of Lisp ...

</comment></comment></comment></comment><comment><USER7> I love lisp. I use/used it to build my web service product[1] and anything else I can.

=how do I do X?=

java: something similar to X is already done in Y. add abstract class and redo X and write Y. +200 LOC

lisp: something similar to X is already done in Y. realize you can generalize X and Y into a new pattern and use it for ABC too. -70 LOC

=there is a bug in function X=

java: open X.java. edit line. restart program. X seems to be working correctly.

lisp: two hours later, ah ha! I understand this code. fix X. write unit test. eval unit test. X works correctly.

[1] demo: <https://a.keeptherecords.com/demo>, source: <https://github.com/ThomasHintz/keep-the-records>

<comment><USER8> look I like lisp as much as the next guy, but you can "spend two hours" reading java code, write a unit test; eval said test and then woohoo! You can do that in basically any modern language.

And your first example is something that most modern languages are sold on. The truthiness of those statements can be debated, but your examples are flawed to say the least.

Point is: you can generalize and write unit tests in _any_ language.

<comment><USER7> That is true to a degree but you really can not generalize very well at all in java. You will also be hard pressed to find java code written functionally enough that you can just run a unit test and know it is working correctly. Usually you have to instantiate many other classes and stub in test data via something like guice. There are many places for those bugs to hide in that type of setup.

</comment></comment></comment><comment><USER9> With the deepest reverence to John McCarthy, I regret to say that Lisp is our cosmological constant. It creates a static universe that is otherwise expanding; it reduces the problem to a solvable one and then declares victory. The truth is, it's all state. All of it.

Remember that movie "Boy in the Plastic Bubble," about a boy with an immune system deficiency who lives instead a hermetically-sealed, sterile bubble? That's not the answer. We instead need to create immune systems (read: robust systems) rather than simply avoiding them.

[I know I'm simplifying things, and this is not meant to be a slight.]

<comment><USER10> _"The truth is, it's all state. All of it."_

The problem is not state. The problem is being able to recreate the state: both for testing and for business purposes.

The bigger problem is that most programmers, like you, are knee-jerking before the issue of "recreating the state" and declaring that _"It cannot be done, because it's all state"_.

And hence we have both languages who are build by considering mutability to be a virtue and back-end databases (your typical CRUD SQL DB) build upon the same false premises.

I'll give you one example: monday morning the service desk calls because one user of your app, at 3:07pm on friday, experienced a bug.

Can you "recreate the state" your application was in at that time as to be able to figure out what triggered the bug?

You probably can't. Because your DB has changed meanwhile: you're SOL because the 'U' and the 'D' in CRUD are destructive. It's mutability. It's the ennemy of determinism.

So now you're stuck calling your DB admin asking for a dump of the prod DB on last thursday evening and a dump of the log of the transactions that happened on friday... And you're spending hours and hours trying to recreate the state the environment was in when the sh _t hit the fan. And you may or may not be able to do it.

It's just one hypotethical scenario but things like that is the daily lot of _many* programmers.

But software development, in many cases, shouldn't be that painful. If you were to use a CRA DB (Create Read Append) and languages favoring immutability and a more functional approach overall, you'd have a much much easier time recreating the state.

If you think of it, it's all a gigantic determistic machine.

So why can't we accept that the notion of time is an important one?

Why can't you realize that the battle the likes of Rich Hickey are fighting are worth it?

It _is_ possible to use programming languages and DBs (or wrappers like Datomic in front of SQL DBs) that do definitely make it easier to reason about programs and that make it just so much easier to recreate the state _and_ to query the past (which has a lot of business value).

Why do you react like this: _"The truth is, it's all state"_. Saying that as if nothing could be done and as if every single programmer's life should be Java/C# + ORM + XML + SQL hell?

There are people trying to make our life as devs easier. Why not try to listen to what their saying?

Is Rich Hickey "seeing things" with Clojure + Datomic?

To me the combination of a functional language (or at least a language that can be used in a mostly functional way) and a CRA DB (Create Read Append) which incorporates the notion of time from the start is a godsend to our industry.

Why do you close your eyes?

<comment><USER11> Try googling around for "cqrs". There are many ideas on how to do exactly this effectively.

All it takes is to swap "write" operation with "event" entity (all is state). Combine that with intention revealing commands (customer_died instead of delete from customers where id=1) and you hit jackpot.

End result is nice stream of events which is ultimate source of truth and enables crazy queries you never thought you would ever need [http://abdullin.com/journal/2010/6/3/time-machines-should- su...](http://abdullin.com/journal/2010/6/3/time-machines-should-support- linq.html)

<comment><USER12> This is quite interesting. In practice though, the lags between command/query models when the datastores are different(almost always, for large data) becomes a real concern

<comment><USER13> Pardon my pedantry, but CQRS doesn't necessitate eventual consistency. Denormalization of domain events into can happen synchronously. It all depends on the needs of the project. If the project information architecture and processes can support a degree of latency (which is implicit in almost any technology providing static screens anyway), then the performance gains of eventual consistency can be realized.

A good, nuanced explanation of CQRS is here: <http://codeofrob.com/entries/cqrs-is-too-complicated.html>

</comment></comment></comment></comment></comment><comment><USER14> Wow, that went from a supposed linkbait title to a surprisingly amusing and interesting explanation of Lisp

<comment><AUTHOR> Thank you. Admittedly, I intentionally worded it to look like one :)

<comment><USER15> Was that with the intent of baiting clicks, or as satire?

<comment><AUTHOR> Neither - I cannot measure how many times it gets clicked, since it's not my website, and I didn't really mean it in the satirical sense.

I guess I just wanted to see how many points it collects. So far it has exceeded my wildest expectations, although that is mainly due to the content, not the title.

<comment><USER16> In the _Explanation_ on Brevity Guild Micro Fighter, you use "i" as the variable, but the code snippet uses "n". I only found this because I was having fun following along! :)

<comment><AUTHOR> That's not my comic, unfortunately :)

You'd better let the website owners know.

</comment></comment></comment></comment></comment></comment><comment><USER17> I had Haskell as the subject in my intro course at university (my first experience with functional programming). I've tinkered a bit with it since then as well, and I'm at the "somewhat intuitive grasp of monad transformers" state.

I tried Clojure some week ago through the Clojure koans that were posted here. Compared to Haskell I found the syntax very obtuse and it was not obvious why Lisp would be more powerful than Haskell. The bare-bones syntax felt more like a "proof of concept" than an actual strength.

(of course, the koans took less than a day to do so I'm not dismissing Clojure because they didn't impress me, but I got the idea that the koans were an attempt to showcase Clojure's strengths)

<comment><USER18> "Compared to Haskell I found the syntax very obtuse and it was not obvious why Lisp would be more powerful than Haskell."

Language "power" is ill-defined, and basically means "good".

If you think that homoiconicity is good, then you probably like lisp. If you think that referential transparency is good, then you probably like haskell. Those are mutually exclusive, so one language can't really have both. But either one could be considered "powerful" and either one could be said to help prevent bugs.

<comment><USER19> How is it that referential transparency (the ability to swap a reference with it's value: no hidden inputs) and homoiconicity (both the source and the resulting syntax tree sharing the same structure) are mutually exclusive?

What homoiconicity offers is the macro system, the ability to operate on the syntax tree as a regular language data structure.

The difference is a language like Haskell enforces referential transparency where in a lisp it is up to the developer whether or not a function will be referentially transparent.

<comment><USER18> "How is it that referential transparency..."

That was incorrect, I meant: "the kinds of metaprogramming associated with homoiconicity are mutually exclusive with referential transparency".

A macro could not, for instance, take a variable name as an argument and return a result that's based on the value of that variable and maintain referential transparency. So that would be a pretty weak macro system.

I suppose there may be other uses for homoiconicity, but I don't know enough about lisp to comment on that.

<comment><USER20> Maybe I don't understand referential transparency, but why not? `or` is a macro in Clojure:

(def a 10) (def b 20) (or a b) => 20

Is `or` not referentially transparent?

<comment><USER18> (please excuse my poor knowledge of lisp... check out the wikipedia page if my explanation falls apart: [http://en.wikipedia.org/wiki/Referential_transparency_%28com...](http://en.wikipedia.org/wiki/Referential_transparency_%28computer_science%29))

My clojure interpreter gives "10" not "20".

The function "or" is referentially transparent, because if you call it with the same argument values you are going to get the same result every time. (or 10 20) is the same as 10.

However, the following function is not referentially transparent:

      (defn incx [] (do (def x (+ x 1)) x))

Because subsequent calls return different results:

      (def x 2)
      (incx)
      (incx)

Things like side effects and many kinds of metaprogramming break referential transparency.

<comment><USER21> It seems to me that what you've demonstrated is that side effects are possible in Clojure, esp. with sufficiently obfuscated (read: un-idiomatic) code. But you're working too hard anyway; Clojure explicitly admits mutability already, through various concurrency pieces like atoms and refs.

That said, if any admission of mutability is sufficient to disqualify a language from claiming to encourage or support referential transparency, then Haskell fails the test, too. unsafePerformIO is a trivial example. I'm sure if you were determined to introduce nondeterminism, you could find a lot more. But that's not the point, is it?

Maybe there's a way to demonstrate your point, but what you've shown here doesn't involve homoiconicity or macros at all.

<comment><USER18> I should have known that my poor knowledge of lisp would not be excused on HN ;-)

Anyway, I tried learning enough clojure to prove that routine metaprogramming would often be not referentially transparent.

First, note from the wikipedia page that "referentially transparent" essentially means that the same function with the same arguments will always produce the same result, and that you can call it more (throwing away the result) or fewer (replacing calls with the result) times without affecting the meaning of the program.

So, mutating variables (assignment) violates it, as does reading mutable variables other than the arguments. So, using "def" on a variable that already has a value is not referentially transparent.

But let me show you something closer to what I had in mind when I said that referential tranparency and metaprogramming are essentially inconsistent.

Take the simple macro:

      (defmacro swapargs [x]
        (list (nth x 0) (nth x 2) (nth x 1)))

First, I'll show that the argument that it takes must be the code itself, rather than the result of evaluating the code. The "or" macro before made it hard to tell whether it was taking the code as arguments or the result of evaluating the code as arguments. But with the macro above, it's easy to see:

      (swapargs (mod 7 5)) => 5
      (swapargs (mod 10 8)) => 8

If we are trying to show that swapargs is referentially transparent, we assume that it will return the same result given the same arguments. Because (mod 7 5) = (mod 10 8), then we know it must not be taking the result as an argument (because the result of the mod is 2 in both cases, but the result of swapargs is different). So it's taking the code itself.

Next, we show that give the same code-as-an-argument, it may return different results in different contexts. That's easy to show:

      (defn foo [a b] (swapargs (mod a b)))
      (foo 7 5)
      (foo 10 8)

Now, we can't replace the call to swapargs with its result, because it changes depending on the values of "a" and "b" at the time, even though the argument is always the same code "(mod a b)".

So, this kind of advanced metaprogramming doesn't seem compatible with referential transparency. Perhaps some subsets are, but I don't even think the C macro system could be supported in a referentially-transparent way.

I also think that kind of metaprogramming tends to defeat many kinds of static analysis, such as advanced type systems. I'm less sure of that one, but for practical purposes now it seems to be true.

So, I think lisp and haskell are close to local maximums for their particular philosophies, but neither one is any kind of epitome of programming or "more powerful" than the other.

Personally, I think lisp-style metaprogramming is _very_ cool, and I am happy I spent a few minutes trying out clojure. However, I don't think it is solving a problem that is very important to me at a practical level. I am trying to learn haskell because it is trying to solve the kinds of problems that I actually have -- mainly software engineering problems (greater confidence in code, more readability and maintainability). Not sure whether it will help solve those problems for me, but they are trying very hard to do so, and make some pretty compelling arguments.

<comment><USER22> As presented, the example macro doesn't demonstrate referential transparency, but then again, the example appears to be incorrect.

The issue is invoking "(swapargs (mod 7 5))". I tried this in the Scheme REPL (Chicken to be precise), in which the macro was defined:

      (define-syntax swapargs
        (syntax-rules ()
          ((_ ls) (list (list-ref ls 0) (list-ref ls 2)
                        (list-ref ls 1)))))

      (swapargs '(a b c)) => (a c b)
      (swapargs (swapargs '(a b c))) => (a b c)

In other words, the macro does show referential transparency.

However, the following doesn't work:

      (swapargs (modulo 7 5)) => Error: (list-tail) bad
                                 argument type: 2

The problem is the argument is evaluated first, and "2" is not a list. (The macro requires a list-of-3 argument.)

      (modulo 7 5) => 2

Probably, what was intended was like this:

      (swapargs '(module 7 5)) => (modulo 5 7)

And again:

      (swapargs (swapargs '(module 7 5))) => (module 7 5)
      (eval (swapargs '(module 7 5))) => 5
      (eval (swapargs (swapargs '(module 7 5)))) => 2
      (eval (swapargs (swapargs '(module 10 8)))) => 2

It looks like confusion between literal and evaluable lists prompted the wrong conclusion, but in this case it's simple to rectify.

Of course, macros in Scheme/Lisp can easily become convoluted and bug-ridden as much as any code, even aside from arguments about the virtues of "hygienic" vs. "unhygienic" systems. Properly constructed, macros remain an essential feature of Lisp/Scheme languages.

BTW, if we're comparing qualities of programming languages, here's a real-life example showing the particular merit of Scheme. I took on the task of creating a complex application (a web server supporting multiple hosts) and decided to write it primarily in Scheme (and some C). The first version was up and running in less than half a year.

Inevitably, months after the project was deployed changes were necessary. Despite the length of time since last seen, the code wasn't obscure to me, it was easy to understand and pick up where I'd left off before. Definitely different from prior experiences.

The crux is getting a good grasp on its core, macrology perhaps among the harder parts. But understood, Scheme allows enhanced productivity, as I've known it more so than other languages "under load" in parallel situations.

<comment><USER18> Thank you for the detailed reply.

When you say my example is incorrect, do you mean that it's incorrect in clojure, or only in scheme? I tried my examples in clojure and they appear to work and appear to demonstrate a lack of referential transparency. I assume that clojure is a valid lisp to make a point about metaprogramming and macros.

Also, it looks like it's fairly easy in scheme to show the same thing, which it looks like you started to do (I'm not sure whether you agree with me about that or not):

      (define-syntax swapargs
        (syntax-rules ()
          ((_ ls) (list (list-ref ls 0) (list-ref ls 2)
                        (list-ref ls 1)))))

      (define a 7)
      (define b 5)
      (eval (swapargs '(modulo a b))) => 5
      (define a 10)
      (define b 8)
      (eval (swapargs '(modulo a b))) => 8

The two calls to "eval" are identical, yet return different results. That breaks referential transparency.

"showing the particular merit of Scheme"

From what I know, I like lisps of various flavors. I just said that they didn't really speak to the kinds of problems that I deal with. Maybe if I wrote more lisp I would see why it does so, but currently I do not.

<comment><USER22>
      > The two calls to "eval" are identical, yet return
      > different results. That breaks referential transparency.

You are right, I don't know much about the syntax of clojure, but the Scheme version works as I'd expect. Yes, the eval calls return different results, but then again, we'd expect to compute a different output for _different_ inputs.

What I tried to show is that calling (swapargs (swapargs '(a b c))) will always return the original list, that is, demonstrates referential transparency. In the case of '(modulo a b), result of evaluation returns a the same result when repeatedly given the same a, b inputs.

The point of the macro was exchanging the second and third elements of the input list. Naturally for the modulo operation, the order of the inputs is significant, and exchanging the operands will give the "opposite" remainder as the result.

In your example the two calls to (eval ...) are _not_ identical and the "different results" are perfectly correct, without implications for referential transparency.

Don't know what kind of applications you might have in mind, but of course, no PL is optimum in all domains. For the kinds of programs I've tackled, Lisp/Scheme has been a good fit. Or maybe it has to do with the way my brain works just as much as the purposes I am applying the language to. That wouldn't surprise me a bit.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER23> I am a intermediate programmer with just over one year experience.

Everywhere I read about the power of lisp and really want to use it. If it is so good why ain't it is used more?

It is very easy to get sites running using ASP .NET, wordpress, RoR or Django. I have worked on production sites using the first two. And personally tried on small projects on the last two.

Is there a way to use Lisp professionally?

<comment> muuh-gnu > If it is so good why ain't it is used more?

* Weird syntax (for most people).

* No free implementations existed during a key period (80s, 90s) so no initial traction, no useful libraries and killer apps which would pull the whole ecosystem. Implementations didnt even exist for commodity hardware.

* The commercial implementations cost too much, so they suffocated the ecosystem. People preferred coding for free in C or Perl, than paying an arm and a leg for Lisp. So they wrote all the useful libs in C, Perl, Java and Python instead of Lisp.

* No canonical implementation, late and incomplete standardisation, which led to extreme fragmentation, which further killed off the growth of the ecosystem. Instead of writing useful libraries, Lispers wasted effort writing 1001 incompatible implementations of the same basic system.

So to summarize, I'd say the Lisp ecosystem is _still_ suffering the consequences of the bad strategic decisions made 30-40 years ago.

But it is slowly but steadily healing and improving, especially the last few years. It has a high-quality free implementation with SBCL [1], consolidated CPAN-like library management with Quicklisp [2] and a IDE with Emacs-based SLIME [3]. Everything is getting better.

[1] <http://www.sbcl.org/>

[2] <http://www.quicklisp.org/beta/>

[3] <http://common-lisp.net/project/slime/>

<comment><USER24> > * No free implementations existed during a key period (80s, 90s) so no > initial traction, no useful libraries and killer apps which would pull the > whole ecosystem. Implementations didnt even exist for commodity hardware.

Emacs LISP (OK, a limited dialect) was available and so was CMUCL (full implementation), which I believe was used for teaching in 1992 when I first got in contact with LISP at our uni ...

Also, back then (80's and 90's) most people still paid an arm and a leg for C, Modula and Pascal on their platforms, so that can't have been an issue. My take is that LISP implementations were too slow to justify their use for most people over faster compiled languages. Whether you paid for the language or not, you expected to be able to get the most out of your hardware.

<comment><USER25> > faster compiled languages

Lisp _is_ a compiled language.

For that matter, it's a damn fast one, too. The Lisp implementation of PCREs are actually faster than Perl's, by some benchmarks.

I don't want to start a tangent about benchmarks and their relevance, but it's clear that Lisp performance isn't a limiting factor.

<comment><USER24> C is still faster at common tasks and back then, code from readily available C and Pascal compilers was much faster than CMUCL or ELISP (both had a bytecode interpreter only AFAIR). My point is that in the 80s and 90s, computers were much slower and a factor of 2 was a big deal then, especially for professional developers who had to write well-performing applications, though nowdays a good language is "fast enough" if it's only half as fast as C.

<comment><USER26> cmucl has native code generation for a VERY long time.

</comment></comment></comment></comment></comment></comment><comment><USER27> I fail to see how this is going to convince anybody who hasn't tried lisp to give it a shot. This cartoon can be summarised as "All languages are accumulating bugs while lisp has some magic X and Y that provide a way around them."

A blub user will think "yeah whatever", IMHO.

<comment><USER28> My thoughts exactly, but I'd add this: I love and respect Lisp; I've written my fair share of it. There is absolutely nothing inherently magical in Lisp that prevent you from introducing bugs. You can just as easily make a logic error in your code that results in a bug. Bugs happen. Bugs will happen. There is no silver bullet. The only way to reduce bugs is to test thoroughly.

tl;dr: nice cartoon, "lisp means no bugs" == total BS, bugs can totally exist in Lisp code

<comment><USER27> Yeah, I think the link posted here is doing little to make lisp popular, especially compared for example to a nice tutorial like the Seesaw example one to build GUIs in Clojure [0]. There, you can see how interactive Clojure is, and how fast it can be to develop stuff. Note that I took this example because it's on the top of my mind, but I am sure similar proves of interactivity can be made for other lisps.

[0] <https://gist.github.com/1441520>

<comment><USER28> Holy crap, Seesaw looks awesome! See, that's far more powerful - I had no idea that even existed, and now I'm excited to play around with it. This is great!

I don't need a cartoon to sell me on something. I need to see how something can be used.

</comment></comment></comment></comment><comment><USER29> I'm missing something; how does LISP enable bug-free programs?

<comment><USER30> Did you click on any of the blue links in the comic? They contain articles on language features with sections: 'Synopsis', 'How it kills bugs', 'Explanation' and 'Weakness'.

<comment><USER31> Whoa, hopefully I'm not the only one who missed that. I thought it was just animated text, not a link.

</comment></comment></comment><comment><USER32> Great intro. Any comments on "Land of Lisp" as a book for a "want to learn Lisp" journey?

<comment><USER33> Excellent book to discover and learn Lisp, maybe the best one actually. It covers all aspect of Lisp and provides lot of examples code based on games. This is somehow more fun than the math example of SCIP (even if this is another great book I deeply appreciate too)

<comment><USER34> Thanks for this -- I've been thinking about taking up SICP but I'm not that math-oriented (I do want to change that, though!) I think that I'll pick this book up first.

</comment></comment></comment><comment><USER35> Superb. I went on to read the sample chapter, which was equally amusing and interesting. I think I'm going to order the book, despite the fact I can't really think of any practical applications for Lisp in my day job - <USER2> who knows.

</comment><comment><USER4> Most of the time, you don't want to save the world because this presents scaling problems. Instead, save a little corner of the world and be open about how you are doing it. If you do this right, then you will garner lots of imitators. Then if your way of "saving the world" is well documented and robust enough to avoid the "cargo cult" pitfall, you will convince some large part of the world to save itself.

Note the implication: You don't save the world by telling it, "You're doing it wrong." You save the world by getting the world to covet your success.

</comment><comment><USER36> There is less insane way to personal insights - <http://www.paulgraham.com/onlisptext.html>

</comment><comment><USER37> Am I the only one having a hard time reading lisp?

Non-functional programs read like plain English. Particularly Python but I just can't get my head around the functional ones.

<comment> loup-vaillant Imperative programs read like English. Functional ones read like Apache.

The Main difference is, a functional programs mainly talks about what things _are_ , not what they _do_. For instance:

      // C(++)
      int square(int n)
      {
        return n * n;
      }

      -- Haskell
      square :: Int -> Int
      square n = n * n

The C code reads like a procedure to follow: "return n times n to whoever called you" (I'm anthropomorphising square(), here). The Haskell code reads like a description: "the square of n is n times n".

That was the first major difficulty. Now the second one: functional code is often like reversed imperative code:

      // C(++)
      int compute(int n)
      {
        int x = foo(n);
        int y = bar(x);
        int z = baz(y);
        return z;
      }

      -- Haskell
      compute :: Int -> Int
      compute n = baz (bar (foo n))

      -- alternate definition
      compute n = baz . bar . foo $ n
        where g . f = \x -> g (f x) -- function composition
              f $ x = f x           -- function application

So, in the Haskell code, you see that the data flows from right to left, instead of top to bottom. Like Unix pipes, only reversed.

The final difficulty is getting used to the fact that functions are passed around _directly_. In C++, Java, or Python, we often pass around _objects_ , who may or may not hold the same methods than the others that where passed around in the same way (that's polymorphism). Subtype polymorphism is neat, but most often, you need it because you want _one_ method to change depending on various factors. A simpler way to do this is pass around the function directly.

That leads to some powerful, though uncommon in the imperative world, idioms. For instance, you can write your own customized loops. Imagine for instance that you want to process lists in Haskell:

                                    -- A List is either
      data List a = Empty           -- an empty node,
                  | Cons a (List a) -- or a cons cell,
                                    -- with an element and a list.

Now let's process the list

      inc-all :: List Int -> List Int
      inc-all Empty      = Empty
      inc-all (Cons e l) = Cons (foo e + 1) (inc-all l)

      dbl-all :: List Int -> List Int
      dbl-all Empty      = Empty
      dbl-all (Cons e l) = Cons (foo e * e) (inc-all l)

See how much they have in common? There's a way to factor out that, with a map:

      map (a -> b) -> List a -> list b
      map f Empty      = Empty
      map f (Cons e l) = Cons (f e) (map f l)

Note that the first argument is a function, hence the (a -> b) between parentheses. Using it is very simple:

      inc-all l = map (λe -> e + 1) l
      dbl-all l = map (λe -> e * e) l

And Haskell can make it even more concise, with what we call partial application. Haskell functions actually have only one argument. Multiple arguments are simulated by having the function return another function. Here:

      add :: Int -> (Int -> Int)
      add x = λy -> (x + y)

Which is the same as:

      add :: Int -> Int -> Int
      add x y = x + y

Or even

      add :: Int -> Int -> Int
      add = λx -> (λy -> (x + y))

So, inc-all and dbl-all above can be written as:

      inc-all = map (λe -> e + 1)
      dbl-all = map (λe -> e * e)

Without those fundamentals, one doesn't stand a chance at understanding real world functional code. It's just too different. It's no harder, though. The main difficulty here is to change your mindset.

Now I haven't talked about macros…

</comment></comment><comment><USER38> I have no problem believing in insectoid domination of earth. Bug-free software, Lisp or otherwise, does strain my credulity.

</comment><comment><USER39> This book seems inspired by _why's poignat guide to ruby book [http://mislav.uniqpath.com/poignant- guide/book/chapter-1.htm...](http://mislav.uniqpath.com/poignant- guide/book/chapter-1.html) Not that that's a bad thing, but I'm just surprised, no one else has mentioned the same.

</comment><comment><USER40> This looks like a comic from the 70s, photocopied and hanging on the bulletin board in the computer lab.

</comment><comment><USER41> Typical Lisp propaganda: many brave non lispers are part of the functional, brevity, continuation and DSL guilds. And it chooses to ignore that the biggest battle was won by the type system guild...

</comment><comment><USER42> I thought Lisp is the pinnacle of programming until I discovered Haskell.

<comment><USER26> There is a lot of cool stuff out there. Haskell is one of them.

</comment></comment><comment><USER43> A Fantastic metaphor!

</comment><comment><USER44> apart from the excellent comic, i loved the insight into how laziness helps fight bugs. i'd never thought about it in those terms before.

</comment><comment><USER45> who write this crap? i wrote in lisp (scheme), this is the most bugged language i ever used. and i used more then 5.

this is non debugable language, it it makes it bug full. you have to follow complex ideas, and keep scores of ideas, this is not for normal humans.

when you pass the wrong type and not support it, it goes to hell, and as a programmer you start to flame.

list, is a piece of shit for the masses, its useful for handful, who didn't distribute the ideas well, and people when to the place where it was easier to write code, and less is needed for getting your path going.

<comment><USER46> I enjoy Lisp, but I got to agree with you about scheme debugging. MIT/GNU scheme has to be most unhelpful interpreter I've ever used. Error messages are loud, completely unhelpful, and by the end of it I was convinced the REPL was actively trying to make me feel stupid.

<comment><USER47> Did you read the manual? [http://www.gnu.org/software/mit- scheme/documentation/mit-sch...](http://www.gnu.org/software/mit- scheme/documentation/mit-scheme-user/Command_002dLine- Debugger.html#Command_002dLine-Debugger)

It's not as easy as setting breakpoints in an IDE like Eclipse and using a visual debugger there, but it's definitely a workable command-line debugger. You just need a little patience in order learn how to use it, and also probably have a pretty good understanding of Scheme's execution model, but that would be true for debugging any programming language.

<comment><USER46> > Did you read the manual?

For real?

> It's not as easy as setting breakpoints in an IDE

I don't use an IDE. I'm comparing against command line tools for scripting languages, Haskell and Common Lisp. Some fail more helpfully than others.

<comment><USER47> Sorry for my tone, I guess YMMV... I just never had any issue with MIT Scheme's debugger, although I admit that CL with SLIME is a bit more useful, especially compared to MIT's weird Emacs-clone (or -fork?) "Edwin".

<comment><USER48> For a slime like repl for scheme, you might want to check out geiser: <http://www.nongnu.org/geiser/>

It works great for guile and racket.</comment></comment></comment></comment></comment></comment>


A Good GUI Tool for Relational Databases (PostgreSQL, MySQL...) - <AUTHOR> https://tableplus.io/ <comment><AUTHOR> I'm a Mobile developer and I hard to find a Native Relational Tool with good UX and Retina support so I made it. It's free for using and will be free forever but if you want to support us to develop, I'm very appreciate.

PSEquel is a good one but didn't support multab, shortcut keys and still using open-ssh outside the app.

TablePlus currently Supports: PostgreSQL, MySQL, RedShift, MariaDB... High-end security ensured.

Features: Connection tags: development, product, staging, testing, Highlight syntax SQL, indent SQL, Customize font size, themes (support dark themes), Many shortcut keys, safe mode, lock your production database, quick view, quick open table via spotlight.

Road map: Will make plugin for export data and render chart from query, JSON viewer and many more... (Windows version is under developement)

</comment><comment><USER2> Your app is oddly popular among just-created accounts.

</comment><comment><USER3> Nice app. Very smooth and elegant UI.

</comment><comment><USER4> Nice native app with great ux.

</comment><comment><USER5> Great app, great ux</comment>


Confucius loses face in China's new surveillance regime - <AUTHOR> https://aeon.co/ideas/how-confucius-loses-face-in-chinas-new-surveillance-regime <comment><USER2> "Instead of looking within to understand, assess and craft my thoughts and feelings in an ongoing effort to cultivate myself, I am forced to organise myself and my life around the aim of pleasing the state and its AI overseer. Under such conditions, I lose sight of what I actually believe about goodness and virtue, and my independent judgments about such matters lose motivational power. Our personal responsibility for ourselves and our collective effort to understand, shape and improve our shared social life are outsourced to the state, in particular to the CPC, and delegated to an algorithm."

Well said.</comment>


Automation to replace every job under the sun, eventually - <AUTHOR> https://www.itweb.co.za/content/nWJadvb8lQKMbjO1 <comment><USER2> Well, the last paragraph says it all. For me it's crazy that people fight for jobs which could be done by robots just so an enslaved human can get his fair share of food.

Let's shift focus to how we can provide this in a world where not everybody has to work. (And we can start with the current situation where not everyone has work or can't work).

<comment><USER2> Also want to add that I don't believe all jobs can be automated but resolving the issues would allow us to actively working towards more automation and not only because companies want to reduce their costs to maximise profits.

</comment></comment><comment><USER3> When the robots can create meaningful art, color me impressed.

But all in all, what a silly article. Sure we have been automating all mundane work since time beginning, but the article doesnt really give credit to the sheer complexity of the tasks humans are capable. We are a product of billions of years of evolution so any neural network used to simulate our brains has a lot of catching up to do. But I guess as a CEO of AI startup you have to build up the hype with non-informative predictions like this. Thank goodness they didnt throw out dates for specific tasks to be fully automated. They dont really explain the major problems what stops us from doing these super-duper robots already.

<comment><USER4> Art is in the eye of the beholder.

Just like it ain't only "mundane" work that is being replaced [0].

Imho right now most of humanity is still in denial about the consequences of these changes, just like with climate change.

But in the long-term automation will leave us with a whole ton of "surplus humans" that will struggle to find any meaningful economic activity to engage in to finance their own survival.

Right now a whole economy exists around these mundane jobs: All of the warehouse workers [1], delivery personnel, and a ton of others do their "mundane" jobs in the logistics chain, because that's what they can do. For many people, their driver's license is the only real qualification they have. But in the long term, not even a pilot's license will be a qualification that ensures employment [2].

What happens to these people once autonomous driving becomes adopted on a larger scale? Are they all gonna start working at Boston Dynamics, creating more autonomous tools? Will they all learn to code and start writing apps? Will they become successful artists? I seriously doubt that.

Will they work in newly created auxilareily industries? Maybe a few of them, but the "new jobs created" from this will never make up the number of jobs lost because the change to automation is also an increase in efficiency of productivity, meaning that the same work can now be done with way less effort.

[0] [https://www.technologyreview.com/s/603431/as-goldman- embrace...](https://www.technologyreview.com/s/603431/as-goldman-embraces- automation-even-the-masters-of-the-universe-are-threatened/)

[1] [https://youtu.be/5iV_hB08Uns](https://youtu.be/5iV_hB08Uns)

[2] [https://pressroom.ups.com/pressroom/ContentDetailsViewer.pag...](https://pressroom.ups.com/pressroom/ContentDetailsViewer.page?ConceptType=PressReleases&id=1569933965476-404)

<comment><USER3> By purely speculating, just like the article, I guess everything that can't be replaced by robots (or let me reword it: isn't as fun without humans) will be left for humans. Meaning arts, entertainment, sports and artisan products. Probably influencing too and whatever jobs our fledgling mind-control apparatuses require. Sure not everyone can make the change so I guess they'll end up doing maintenance work or something, social services or just sit on their ass playing video games. I don't think the problem is as bad as it seems, I mean I can't recall anyone complaining about doing less mundane work. In my mind the problem isn't that there isn't enough "work" for everyone. We can make up more work given enough time. It's the redistribution of the wealth of the owners of these mega corporations that is the most puzzling problem. Especially if all the wealth falls to only a couple of those companies.

Going forward I think whatever that is what makes us human will be our most prized commodity. In a world full of synthetic products it's the ones that are real which stand out. And if we can't tell the difference between synthetics and reals, well. I guess we are screwed then. Perhaps it's just the next step in our evolution to become one with the machine, legacy flesh-versions will be left as curiosities, put in museums.

<comment><USER4> Imho this isn't just pure speculation, it's simply extrapolating trends that have already been going on for centuries.

And one of the most dangerous non-answers to it is this:

> Sure not everyone can make the change so I guess they'll end up doing > maintenance work or something, social services or just sit on their ass > playing video games.

Because it assumes that societies will properly respond to it with social reforms accounting for these changes. But unlike the automation trend, the social changes that need to accompany it are a far cry away from even being recognized as a requirement.

In that context I do not see a future where people without a job will be "sitting at home playing video games", it's far more likely that people will be living on the street and won't even be able to afford food, because their gig-economy job got replaced by a fleet of corporate bots, just like most other menial and low-income jobs.

Will such a society recognize that not everybody can find a meaningful [0] place to work? Will it maybe force people, to work underpaid just to keep up the appearance of "pulling them bootstraps"? I mean, there's already a whole lot of that going on.

Maybe it's just the pessimist in me, but I just don't see the kind of "utopia" emerging from this many people imagine it to be. At least not in the way we are currently going about it, where the societal impact of massive tech- advances is regularly relegated to something that will be fixed post-release.

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

</comment></comment></comment></comment><comment><USER5> I hate the usage of the word 'inevitable' like this. _Nothing_ is inevitable. There are some events that are going to be hard to prevent, like say the Earth being swallowed by the Sun (unless we could move the Earth out of harm's way?), but automation is not one of those. That's an easy one to prevent. We can just decide not to.

<comment><USER6> > but automation is not one of those. That's an easy one to prevent. We can > just decide not to.

I agree with you in sentiment, however that last sentence contains a deceptive concept in it- who is the collective "we" that would have to do the deciding, and do they have a history of taking such choices?

<comment><USER5> Of course I was trying to keep the comment brief, but "we" in this case is humanity. And the "choice" in this scenario is not automating _every_ job, as the article suggests. If we automate 99% of jobs, it would still not meet the proposed conclusion of the article.

In a more realistic sense of 'choosing' not to automate, it will largely come from disagreements over the subject itself. It will not be that all humans get together and decide it, but rather that a significant portion of humans won't have any part in it.

But from a pure historical viewpoint, inevitability is a fallacy.

</comment></comment></comment><comment><USER7> Replacing humans with human level AIs isn't really automation, is it? Their work will not be automatic.

Also, humans will eventually start improving their biological capabilities, so human level AI is a moving target.

</comment><comment><USER8> Does this really need to be on the front page

<comment><USER9> The people who upvoted it certainly think so.</comment></comment>


Monoses: Machine Translation without parallel corpora - <AUTHOR> http://www.mikelartetxe.com/publication/2018e-emnlp/ <comment><AUTHOR> As crazy as it may sound, this SMT engine proposal ma be able to performa translation without preexisting bilingual corpora.</comment>


Ask HN: How does a tech person work well in a fire-all-developers style company? - <AUTHOR> Recently Travis CI was acquired by Idera, and it's been followed by widespread firing of developers. (Same thing happened with Sencha, same company.) The model is a large company that takes loans led by private equity, acquires companies, fires all developers, replaces them with outsourced development claiming they are 'investing' in the product. This is not only Idera; other companies do the same. HN discussion here: https://news.ycombinator.com/item?id=18978251<p>Let's suppose you're one of the few remaining after this has occurred. You're a tech-literate manager, or one of the few developers left. How do you work effectively? If you wanted to change business strategy to persuade the value of developers knowledgeable in the product area, how would you? How do you respond when sales slow after seeing the results of outsourced development? How do you communicate with that kind of corporate leadership? How can you rescue the product that you've spent so much time on and love? <comment><USER2> Why are you trying to "rescue the product"? It's not your product. And whoever owned "your" product didn't value it nearly as much as you do, since they sold it to Idera.

The ship has sailed, it's time to move on.

<comment><AUTHOR> Why? Because you're invested in it. Or you feel a responsibility to the users, some kind of ethical sense for your fellow developers. Or maybe just wanting to do the best in your job in the new company.

We all have things we love, or responsibilities we feel.

<comment><USER3> Sounds like your in a cult not a company. NPR had a piece the other day about how companies are having trouble retaining people. They are offering added incentives like paying student loans. Why do they have this problem? Because they have spent so many years laying off people to increase profits they now have to spent more money to retain people that no longer trust them to provide steady employment and move on to other employers every 2 years. If you really value those things find a company that values them also. You will be happier. [https://www.stitcher.com/podcast/national-public- radio/how-i...](https://www.stitcher.com/podcast/national-public-radio/how-i- built-this/e/patagonia-yvon-chouinard-48508362)

<comment><AUTHOR> > Sounds like your in a cult not a company

I don't think that's fair at all. Idera acquires developer tools companies, and the tools are used by many developers - people here on HN. Let's suppose you built a tool used worldwide by your peers: would you just shake your head and go "yep, don't care"?

Have you read the tweets by the departing Sencha devs? They were desolate.

<comment><USER4> Tools come and go. Companies come and go. Developers will find new ways to work. The world keeps turning.

Yep, don't care.

<comment><AUTHOR> "Don't care" is not something to live your life by. You should care about your fellow developers and peers, and if you spent years of your life building respected technology, it is natural to care about it.

The answers on this thread (along the lines of 'don't care, give up') shock me. I see HN as an audience of passionate, tech-loving people - people who would not want to be in the position described in this question and people potentially with the passion and drive to do something about it.

<comment><USER2> It's not about not caring, it's about realizing being the one person who cares in a company who doesn't isn't helping anyone, and that you could better apply your time and skills to one that does.

If there are a lot of people in need of medical attention, the compassionate doctor stops working on the dead one, and saves those she can. We're all trying to tell you your patient is dead. You loved your patient, but it's too late, and now it's time to move onto another.

</comment></comment></comment></comment></comment></comment></comment><comment><USER5> From the land of 'Been there, done that'

2 choices: 1) Wake up, find a new job, before you get laid off too. 2) Wake up, find a job working on their product, before you get laid off too.

I worked for a company that had about 3000 employees. We were bought by a competitor. Layoffs came often as they tried, with some success, to convert our customers to their product. But many liked ours better. Eventually to kill our product and force acceptance of theirs, they laid off all the developers. The only ones not laid off were the cool aid drinkers who switched.

Myself, I was taken out when it went from 200 people to 100. The next year they closed our place. It put my career back a good 5 years.

Smart people left early on their own, not laid off, and found much better jobs.

All the while as we were being squeezed the place kept getting more and more depressing.

Another friend was in a company he loved on a product he loved. The parent company just outright killed the project. He and a few others quit and started working on the project. He worked another job to feed his family. He works 60 to 100 hours a week. Has recently found out the others are screwing him and if it takes off he gets nothing.

Moral of the stories: do not fall in love with a project so much that you cannot walk away.

2nd moral, get it in writing.

</comment><comment><USER6> If you want to stay, you are going to have to learn to speak the language of business. When you propose something, you will need to give estimates on how this will affect business metrics. In particular you'll want to focus on how this project either increases revenue or decreases costs. Additionally make sure that you network with your new management company. Essentially, you need to look for executive sponsors who will step in and say _I need this person._ Particular effective ones tend to be Marketing/Sales or Finance.

At the end of the day, an acquirer is making an investment and hoping to make a profit on that investment. If you can help the company make money and do it more effectively than an outsourced partner you are likely to stay. You will need to put on your business hat and talk and walk the business walk to be successful.

<comment><AUTHOR> Excellent advice.

Do you have resources on how to learn USA C-level and board-level corporate speak? And how to learn American corporate financing to understand their revenue reports and expectations?

<comment><USER7> Check out ProductHunt, it has a few "MBA in a day/week/month" sort of apps and sites which will help

<comment><AUTHOR> Thanks! I will check it out.

</comment></comment></comment></comment><comment><USER8> The least worst move is to get out. If that's not an acceptable answer, then your question is basically, "how do I become an expert deck chair arranger on my sinking ship?"

<comment><AUTHOR> I get what you say. But are you also saying it is not possible to communicate with that style management team, and not possible to educate them about the effects of lost institutional knowledge, etc?

I feel it must be possible. The question is how. How do you survive well in such an environment?

<comment><USER9> Do you really think a fire-all-developers style management team is interested in being educated by someone in your position?

<comment><USER10> s/interested/capable/

They have no love of the product. They have no love of or loyalty to customers. They have one target, to make money, and they have their system for doing it.

The _only_ chance you have of changing them is showing them that they can make more money doing it differently. And, because they have their system that they think works, they're not likely to listen even to that.

</comment></comment></comment></comment><comment><USER11> Honestly, I think the best career advice I've learned is to not be idealistic or over invest in a product or company. At the end of the day you're hired labor unless you own the company. You can go join a competitor who is working on a similar product. It's so easy to get wrapped up in your own hype about how great the product you're working on is. Not saying it's not a great product loved by customers, but by doing this you miss the completely transactional nature of yours and your employers relationship.

</comment><comment><USER12> > How can you rescue the product that you've spent so much time on and love?

Start a company, get a few hundred million (or a billion+) of dollars together, and buy it.

> How do you communicate with that kind of corporate leadership?

At the end of the day in any situation, you have to learn to speak their language, which is informed by their values. These questions always boil down to "X doesn't have my values, how do I change that?" If you can't make your values align with theirs, the ship has sailed.

</comment><comment><USER13> I'll leave the company and will stop using any product or service owned by Idera. But I don't think you would do that given your situation.

If I were you I would find out who the key decision makers are of the company. What they are like and how they do things. Befriend them and lobby hard. Not thank it would do much if you are not already well connected. God pointy- headed bosses are worst.

Anyway, thanks for the heads up. Not that its going to affect me much as I use CircleCI and not TravisCI.

</comment><comment><USER14> Idera has a pretty simple goal you can work towards: make the company as profitable as possible. You might not like this goal as much as purely serving the target audience, but in the long run, the example positive example of Travis CL turning into a sustainable profit will lead to further investment in the sector. This behavour will probably be incentivized by bonuses, and any stock you had most likely just had a liquidity event, so you stand to benefit.

</comment><comment><USER15> The company I work for has been acquired by the same equity firm as Idera. This happened recently (it's public news, so I'm not giving away any secret). What should I expect, given I have a responsibility role and in my country you can't easily fire an employee (in my case, I can be fired only if I misbehave severely or the company goes bankrupt)?

<comment><USER16> What country is this? You can only fire an employee if he misbehaves or company goes bankrupt ? Wtf? What if the employee is a bad fit? What if they trying to replace with soemeone better????

<comment><USER15> Italy. Factually it is like that, the law was meant to protect against unfair dismissal but over the years it has become quite clear that if you work all the time you're meant to, and you don't intentionally harm the company (or its business) you're very unlikely to be fired. And if you are, you can sue the company and AFAIK most of the times (I have no direct experience though) you are likely to win.

This law has been modified and partially canceled in 2014-2015, but people that has been hired before that date still benefits of this law.

EDIT: Look at third page (numbered 70), second column half way, to get a better explanation. [https://preserve.lehigh.edu/cgi/viewcontent.cgi?referer=http...](https://preserve.lehigh.edu/cgi/viewcontent.cgi?referer=https://www.google.com/&httpsredir=1&article=1008&context=perspectives-v21)

</comment></comment></comment><comment><USER17> The only realistic answer is to leave and go somewhere else or start your own thing.

You won't change the attitude of the company, they won't bring development back in house - even if you had the best argument in the world the investors would block it.

From the comments it looks like you are desperate to stay, if that is right then you have a choice either accept it for what it is or leave.

The only way you could make genuine changes that you are looking to make is if you were part of the investment crew.

We have all seen this played out time and time again, either there will be no more updates or it will slowly turn to shit - if you stick it out and your name is "mr product" you will be associated with that shit, if the product is good today then run.

</comment><comment><USER18> You already know how this is going to end. How long do you wish to remain personally involved?

</comment><comment><USER19> You don't. You stay and get paid well, or you leave.

Work is a business transaction. That's all it is. You're overinvested.

</comment><comment><USER20> This is a no brainer. Run!

To make this more substantive: unless your dream is managing remote offshore teams (maybe it is?) who all lack the institutional knowledge of how the product works (so expect a lot of time teaching and rejecting code reviews), then I reckon your career would be better served by another company.

</comment><comment><USER21> Quit. ASAP.</comment>


More lawyers to opt for accepting payments in cryptocurrencies - <AUTHOR> https://coinpedia.org/news/lawyers-accepting-payments-cryptocurrencies/ <comment><USER2> Hey kids, don't forget those 8300 forms.</comment>


Europe has good reasons to fear Google - <AUTHOR> http://www.theverge.com/2014/11/28/7301681/europe-is-right-to-fear-google

<comment><USER2> How could EU enforce the break? Google doesn't need branches in EU to exist. It could do all business with EU customers via Switzerland. Sure, no more Google jobs in EU, but that's surely a better outcome than being forced to split?

It could only work if EU pushed a law forcing all ISPs to block all requests to google, but that's never going to happen.</comment>


Hedy Lamarr - <AUTHOR> https://en.wikipedia.org/wiki/Hedy_Lamarr <comment><USER2> Sometimes its hard to know what to believe. On the surface, this sounds like a pretty plausible argument that her contributions leading to WiFi is almost entirely a clickbait invention

[https://skeptics.stackexchange.com/a/23755](https://skeptics.stackexchange.com/a/23755)

<comment><USER3> There's a tendency to credit some singular person for an invention like TV, the steam engine, etc. The reality is usually a lot messier in that there is usually prior art, variations that didn't work as well, predecessors of various sorts, etc. But we like having a nice simple trivia night answer.

<comment><AUTHOR> Yes, it was an abstraction of a completely different use case into something never thought before. [1]

[1] »Player Pianos, Sex Appeal, and Patent #2,292,387» ELIZA SCHMIDKUNZ 2006/09 (in Inside GNSS) [https://web.archive.org/web/20160827181419/http://www.inside...](https://web.archive.org/web/20160827181419/http://www.insidegnss.com/node/303)

</comment></comment></comment><comment><USER4> Fun trivia not mentioned on that page: in Half Life 2, the scientist's pet headcrab Lamarr is named after Hedy Lamarr and is referred to as "Hedy" at one point... "There's only one Hedy"

</comment><comment><USER5> That's Hedley!

<comment> mark-r Hah! I recognize that reference, too bad it's totally off topic.

</comment></comment><comment> globular-toast The gender doesn't seem relevant here, unless you think it's unusual for women to invent things. It's quite interesting for someone to be both an actor and an inventor in weapons research, though.

<comment><USER6> I think the gender really is key here, since Heddy's sole contribution was co- authoring a single patent to use piano rolls to generate coded messages. I guess you can call this "weapons research" in the sense that cryptography is sometimes considered munitions. But it wasn't very good cryptography and didn't end up being used, so I don't think anyone would care about this except for Heddy being turned into a type of "women in science" icon, with people then claiming that the piano roll was really spread spectrum, so Heddy invented spread spectrum, and others claiming that the piano roll meant she invented GPS, cell phones, etc. It's really out of control.

This is unfortunate as there are many accomplished women in science who are real scientists and who made real contributions, but are not well known because there is no Hollywood star angle to tie in, just actual science. For example my favorite female researcher would have to be Karen Uhlenbeck, whom no one in popular culture has heard of, but who was (IMO) the most brilliant female mathematician of the last 100 hundred years. There are many such examples of unknown women scientists if we look for real inventors and real scientists, rather than looking for someone "sexy" to make into an icon for our favorite causes.

<comment><USER7> It was using piano rolls to control frequency hopping, not as cryptography. The intent was to make radio-controlled torpedoes more difficult to jam. That's far more munitions than just "cryptography is munitions".

<comment><USER6> In modern parlance, it's not munitions at all. But yes, Antheil and Lamarr's proposed device was trying to hide the signal so that it would be harder to jam by hopping along one of 88 frequencies which were marked in the piano roll.

This is a form of cryptography. Any algorithm meant to authenticate, sign, or hide information is cryptography, and any attempt to break such techniques is cryptanalysis. Currently we do not like to think of cryptography as munitions due to the crypto wars of the 90s. But however you fall on that debate of whether cryptography is munitions, it is misleading to consider someone volunteering their time in an unprofessional capacity to send an unsolicited patent to the Navy, which the Navy rejected, as being equal to working in "munitions research"</comment></comment></comment></comment>


Ask HN: Is reverse engineering a saleable skill? - <AUTHOR> Wanting to make (for purely personal use) CLI tools out of commonly used apps, I got into discovering undocumented APIs a couple years ago and it's been a lot of fun.
Recently, I got into decompiling android apps and hunting through source code to find how their security works and mimicking it on my end.
The pay-off is so little (e.g. instacart automated delivery, jimmy johns cli ordering etc.), but I'm absolutely in love with the process.
My day job is an odd mixture of managing operations and logistics at our warehouses and writing code (python/django), so I have limited exposure to software companies.
There was a recent thread on unofficial APIs, so I ask --
Is this a skill that saleable in any way? Are there roles for this kind of thing? <comment><USER2> "Malware analysis" is a subfield you're likely becoming qualified for, but it's a relatively small field, especially compared to your Django skilset.

Joining a CTF team (e.g. the team I play on! OpenToAll) would be a good way to build on the skills and meet some professional reversers to network with.

<comment><AUTHOR> >> Joining a CTF team

Thanks for that! I just submitted the registration form for OTA, looking forward to it!

</comment></comment><comment><USER3> I'm surprised that bug bounties haven't been mentioned yet. Sites like HackerOne and BugCrowd allow you to use (and improve) your skills while also potentially making some money while doing it. While HackerOne has a lot of web bounties there are a few mobile and desktop application bounties as well.

<comment><AUTHOR> Thanks, going to check out both.

</comment></comment><comment><USER4> Yes, but you need a reputation to get paid.

Ifixit is a company that is built around reverse engineering consumer electronics. I also read about a company that completely breaks down cars to determine the cost of manufacturing. And we see it all the time with "Security specialists" who do their best to find security faults by partially reverse engineering apps and such.

The early IBM clones were built by reverse-engineering the first machines from IBM.

To get a reputation, I would start a blog, break down and explain whatever you find interesting. Keep in mind that it will take a lot of work to get started but if you love it, it might be lots of fun. It's important to focus and be consistent.

<comment><AUTHOR> >> Ifixit, IBM, Cars

Brilliant examples, I never thought about it like that!

</comment></comment><comment><USER5> Yes, but if you aren't formally trained in this, you have to build a reputation in order to get a good job.

I did really neat things as a kid, but because I didn't broadcast it or document it, it doesn't seem to matter much to employers.

Start a blog & track your progress. Discuss your hobby with other people that like it. Try to help others.

<comment><AUTHOR> >> Start a blog & track your progress.

Thanks for that. Writing is a skill that I have failed time and again to develop. The 6 months I blogged, I still refer to those notes after 2 years. It's so valuable.

</comment></comment><comment> non-entity There a definitely RE and software roles than involve RE roles out there, but I imagine you have to be pretty good at it. Thebreverse engineering subreddit has job threads. Not sure how a hobbyist could break in, givenbthat most side projects probably toe the legal side of things outside of CTF challenges and such

<comment><AUTHOR> >> reverse engineering subreddit

Thanks for this resource, I just joined.

</comment></comment><comment><USER6> Find 0Days. Sell them.

Edit: Also, you can try to find info leaks from public companies. For instance, back when Fitbit only sold one device for one price. Roughly one user profile meant one sale. The profile page was just /profile/[Base58 Encoded Number] and the number was a sequential ID. I was able to predict their earnings pretty well for a quarter or two but then they started selling more devices and the correlation was made more uncertian. If you find something like that. A tangible signal, it's on inherent worth to *funds.

<comment><AUTHOR> I found zerodium.org for selling 0days among other hacks.

Are there other marketplaces for this?

</comment></comment><comment><USER7> Look into the security side of things.

I did some research a few years ago doing the same sort of thing with jruby and android APKs and it is a lot of fun but the main applications of it are going to be in security, competitive analysis, and occasionally hacking things for one-off integrations.

Be able to tell a story or two about doing it. If you can go 5 minutes deep on a couple of subjects and be at least a little entertaining while you do it, you'll get some job offers.

<comment><AUTHOR> >> Be able to tell a story or two about doing it

That's a great rule of thumb for anything! Thanks for that.

</comment></comment><comment><USER8> >managing operations and logistics

>Is reverse engineering a saleable skill?

Do you really want a pay cut?

<comment><AUTHOR> Wouldn't security pay a lot more in the long run?

My impression was security researchers (good ones), get paid at or above a software engineer?

<comment><USER8> 'managing operations and logistics' is not software engineering. Its a management position with clear and direct positive influence on the bottom line of the company and well defined promotion track all the way up to CEO (for example Apple).

As for security work, ask someone on top of the game like Charlie Miller [https://www.washingtonpost.com/world/national- security/secre...](https://www.washingtonpost.com/world/national- security/secrecy-surrounding-zero-day-exploits-industry-spurs-calls-for- government- oversight/2012/09/01/46d664a6-edf7-11e1-afd6-f55f84bc0c41_story.html) The only clear path to serious money leads to black market.

Security, maintenance, even software engineering are most often booked as business expense. Nobody invests in security, they incur it.

<comment><AUTHOR> Right, that it is and possibly I'll make a good amount of money that way.

However, we're a small company with lots of dependencies. E.g. To make $10M in revenue we need ~30 employees, forklifts, trucks, warehouses etc. and are able to run it at 10-20% margins. That's a lot to manage.

I'd rather be able to command a skill-based $300-$500K a year solo, no?

That article is 8 years old. Is it still as valid?

Would security, as a contractor, not be worth much more without</comment></comment></comment></comment>


You've been kicked in the nuts: signing up in iPhone apps - <AUTHOR> http://iphone.broadersheet.com/2009/11/youve-been-kicked-in-the-nuts-signing-up-in-iphone-apps-2/

<comment><USER2> Of course, since the user already went over the "hill" and downloaded or maybe even paid for the app, they will be unlikely to back out. They've already put in effort and they don't want it to go to waste. The most powerful tools against annoying web signups are the back button and bugmenot, in that order. Neither exists for the iPhone. Amazing that you are not cargo culting a signup screen. Maybe save the email address once they first input it.

</comment><comment><USER3> OpenID is a good solution for this. Single login and the service can pull your email info from it. I haven't seen anyone do OpenID in an iPhone App yet.

<comment><USER4> OpenID is an _awful_ solution for this -- you have to type a long URL, get redirected to an arbitrary page in a WebKit view ( _hello 17+ Mature Sex Drug Gambling Violence rating!_ ), type at least your password on that page, and eventually get redirected back.

No, the service can't "pull your email info from it" -- OpenID provides no information about an authenticated user to the service beyond "yes, they are that identifier".

<comment><USER3> Yes OpenID it does provide your email address. That's why my gravatar icon shows up wherever I login with OpenID.

You don't need to type in a long URL to login using OpenID. If you have a domain you can use it to delegate the OpenID provider to use for logins. So you need something like openid.mydomain.com and a username and login. One set of authentication information to remember instead of different ones for every website or application you use.

You wouldn't want to use Webkit to implement OpenID on the iPhone anyway. You would want to integrate it into your application so that was a seamless process.</comment></comment></comment>


Show HN: Drive traffic when sharing 3rd party content on social media - <AUTHOR> http://linkplugapp.com/

<comment><USER2> A screenshot or video will help a lot. I registered and created an ad and still didn't know what the website/service is for. Why doesn't the homepage say it's a link shortener that adds an interstitial with a 15 second countdown and then link to the target page?

In your HN comment you write "Solution: Embed "interstitial" ad space into 3rd party content (e.g. [http://lnkplg.co/RGPp)"](http://lnkplg.co/RGPp\)") Perfect, write that on your homepage including the link.

<comment><AUTHOR> Yeah that definitely makes sense. The reason we haven't put much work into the homepage is we are not focusing on consumers or even SMB, instead focusing on bigger brands and influencers who will create a pleasant interstitial UX. Those types of clients are white glove and are dealt with personally by us.

Any thoughts on the interstitial experience?

</comment></comment><comment><AUTHOR> Hi, guys im co-founder of this project, here's a summary

Problem: Sharing 3rd party content on social, despite relevance or value, does not yield a positive ROI for influencers.

Hypothesis: If an influencer had full-control of an interstitial ad space then they would be incentivized to share more 3rd party content

Solution: Embed "interstitial" ad space into 3rd party content (e.g. [http://lnkplg.co/RGPp](http://lnkplg.co/RGPp))

Current Stage: Building case studies with highly visible social accounts with a focus on improving public facing UX.

Remote Team: 1 full-stack dev (Tampa, FL) 1 sales/hustler (DeLand, FL)

Kevin & ShowHN: We realize our website and dashboard need work, however, we feel improving our interstitial ad's Atarimae Hinshitsu (function) and Miryokuteki Hinshitsu (enchantment) is paramount.

Any advice on demo UI/UX would be appreciated! Demo: [http://lnkplg.co/RGPp](http://lnkplg.co/RGPp)

<comment><USER3> Pretty neat!

However, I think there might be a tiny bit too much friction in using it.

First, I have to remember how to get to your app again. Then I have to login. Then I have to paste a link in a box, & then I get another link that I take somewhere else.

I'm probably not going to remember your app until I'm about to post something into a social network somewhere else, & I'm not sure how much anticipated- friction I would tolerate in that situation.

Maybe a chrome extension would be neat down the road, or maybe if I could prepend something like <user- name>.plug.to/news.ycombinator.com/item?id=10063441

It's really interesting though! You should keep working on it!

<comment><AUTHOR> yeah I see what you mean, we built an oauth signup option in v1.0 that we might bring back that allows you to just automatically "switch" the links you post.

We also have the chrome extension on deck ;)

So no major issues with the public facing UI/UX in your opinion? example: [http://lnkplg.co/RGPp](http://lnkplg.co/RGPp)

<comment><USER3> The widget itself is pretty slick (for the final end-user), and the Chrome extension is probably too much effort on your part to justify building at this point. OAuth helps, but it would only reduce friction for first-time users.

</comment></comment></comment></comment><comment><USER4> This is an interesting feature for content and brand marketing.

The url might be challenging for audiences. Is there a way to use our own shortners (ie mybrand.com/RGPp) so this whole service is white label?

<comment><USER5> We can completely white-label the service for large clients.

The only alternative domain currently available in our public facing proof-of- concept is poli.link. You can sign up with this link to create an account using the poli.link domain: [http://poli.link](http://poli.link)

<comment><USER6> So that's the only current domain but any short link domain can probably be purchase by say godaddy and integrated I presume

<comment><USER5> Yes. Shoot me an email if you're interested in setting it up (Brian at LinkPlugapp.com)

</comment></comment></comment></comment><comment><USER7> This seems to certainly have some marketing potentially. But I can also see it getting abused. If someone seems to be more spammy than just provided more value (ie coupons, emails, etc). I would love to see it in the hands of someone with a large following. I wonder what percentage of people would click in so to speak.

What would you say is the hardest part about initially implementing this is?

<comment><AUTHOR> we definitely can see how the average consumer could use this for ill purposes which is why we haven't marketed this product to the public.

We have a public facing product for our personal use and for quality feedback, like that from the HN community ;)

Finding users who will use this software in an quality manner is our main goal, showing that these interstitials can be used to add a lot of value (limited time offers, events, AMA's, periscope/meerkat notifications etc.)

Implementing this product is really easy because we are essentially a short linking service.

1) find a 3rd party article 2) designate what you want display (e.g. landing page, kickstarter page etc.) 3) generate the short link and share it</comment></comment>


College students lost access to legal pot and started getting better grades - <AUTHOR> https://www.washingtonpost.com/news/wonk/wp/2017/07/25/these-college-students-lost-access-to-legal-pot-and-started-getting-better-grades/ <comment><USER2> It's sad to see such a brigade of hate/insecurity around any pot study. It's a shame. Every time there is some inkling of negativity the panic sets in, they criticize the study (which is valid, but how often is the criticism valid), they bring up how alcohol is worse, when this wasn't even a comparison to alcohol.

Marijuana should absolutely be legalized. But we can't just ignore its effects. I get it-weed helps a lot of people out, and it isn't that bad of a drug. But you can't just simply dismiss everything that you don't like that comes out.

<comment><USER3> >Every time there is some inkling of negativity the panic sets in, they criticize the study

Source? Is there any empirical evidence that this is happening or is this just what you're telling your self? IMHO, it's quite the opposite -- anytime cannabinoids are shown to have medical value people claim "correlation does not imply causation" and "we need more studies" and "this only works in a lab!!1".

<comment><USER4> I think the parent poster is just referring to negativity in this thread, not claiming a statistically significant sentiment trend in comments sections about marijuana studies.

I agree that among policy makers, unfounded anti-cannabis bias is predominant, despite the studies you mention.

</comment></comment></comment><comment><USER5> Weed is not a panacea. Some people foolishly think otherwise. It should still be legalized, but we have to be realistic about its negatives

<comment><USER6> Nobody believes weed will make you better at studying.

Nobody.

<comment><USER7> Nothing is absolute - I'm a medical user (with anxiety/ADHD/depression) and it's been a complete lifesaver for me, working where pharmaceuticals did not. I did not respond well to traditional stimulants (they only made me more anxious and racy) but medical cannabis is literally the only reason why I was able to function through my PhD program which I had completed two years ago at a top-tier U.S. institution.

FWIW, I am very selective with my strains - only certain types actually help, and my dosage is mild enough to not have strong psychoactive effects (higher CBD-strains). Medical cannabis has truly had a significant impact on the trajectory of my life.

<comment><USER8> _only certain types actually help_

Out of curiosity, what are those? I'm not an expert and I'm really only aware of the sativa/indica divide.

<comment><USER9> From the GP: "higher CBD-strains"

Here's a description of how CBD differs from THC: [https://www.leafly.com/news/cannabis-101/whats-the-deal- with...](https://www.leafly.com/news/cannabis-101/whats-the-deal-with-these- high-cbd-strains) and I can attest to what it says. I don't like feeling high, but I do like feeling mellow. It's sort of like the difference between having a glass of wine and pounding shots to me.

</comment></comment></comment></comment></comment><comment><USER10> I believe it. However, there's more to life than squeezing maximal efficiency and productivity out of human beings.

<comment><USER11> Exactly. You could probably do the same thing for alcohol. Or video games.

<comment><USER12> Wasnt the article comparing pot users with non pot users? Presumably the control group included people who drink same play video games as well?

<comment><USER11> This is one of the problems with recreational drug studies. Its hard to find people who only do one drug and then people who live similar life styles to them but sober. I remember and MDMA study that looked at ravers in Utah because a large number of them were sober to study the effects of MDMA while accounting for the raver lifestyle of staying up for many hours dancing and often dehydrated.

</comment></comment></comment></comment><comment><USER13> Would love to see the same experiment repeated somehow, but for alcohol / partying. Then compare the two.

<comment><USER14> In college I was a residence hall advisor in a dorm that was advertised as being more studious, including a zero-tolerance policy on alcohol (students could be kicked out if seen even holding an empty beer can). I'm sure the grades in the dorm were higher, but hat dorm tended to attract students who were going to be more studious/less drunkenly already.

<comment><USER15> I have an anecdote about a religious college that bans alcohol, and students would get drunk outside and drive back drunk, so there's a lingering question about whether the policy saves more lives in sum.

I don't see the same complexities or side effects with banning video games, TV, or even weed.

<comment><USER16> The similar complexity with weed is that you push people to find it through illegal channels, dealing with drug dealers of various levels of severity

</comment></comment></comment></comment><comment><USER17> I'll just reiterate what a great deal of other sensible folks have already said: I think it's quite silly to try and use this study to draw or support any overarching conclusion about whether weed should be legal or not.

Of course your grades will be affected if you smoke when you ought to be studying.

Of course your grades will be affected if you drink when you ought to be studying.

Of course your grades will be affected if you study (the wrong course material) when you ought to be studying.

Basing decisions about legality and restraints on individual freedoms on things like _average_ academic performance reduces individualism and pushes, by default, a sort of nationalistic view. "No you may not do X because it makes you a less valuable asset to the nation state, and you are meant for nothing more than service to the nation state."

Even innocent studies like this hide dangerous potential ideologies and subterranean reductions of individual freedom that politicians will try to push.

</comment><comment><USER18> Of course, the largest flaw with any sort of marijuana-based study is that the effects of marijuana on the user vary based on the strain and THC content. The authors admitted that the level of THC content in Maastricht's strains of marijuana tend to be around double that of the US.

Unfortunately any real controlled studies are going to be difficult as long as Marijuana remains such a vilified topic, which results in studies like this being used as ammo rather than another point of data.

<comment><USER19> I agree. Not real strongly opinioned on either side, but I encourage data based research and rational discussion. A specific semi-common irrational opinion I've noticed with the growing percentage of states to legalize marijuana: The mentality that we must change regulation in order to keep 'stoned' drivers off the road (be able to issue DUI's). It's my understanding that marijuana had a negligible impact on the motor-cortex and reaction timing wrt operating a motor vehicle. Many professional athletes testify to using it before performing some of the most coordinated, reaction timing dependent physical activities of anyone on earth. DUI's were a result of the fact that drunk people tend get in more car wrecks, especially fatal ones.

</comment></comment><comment><USER20> This the main reason I quit use of THC for pain relief. It wrecks your memory recall abilities. You lose a good 10 IQ points. Not good for devs.

<comment><USER21> Source? Or did you forget?

<comment><USER20> I'm talking from personal experience. Your ability to keep a train of thought is impaired, you struggle to build the house of cards in-memory to do any kind of extended analysis, the cards you put down simply vanish from memory. You feel empirically dumber.

At its worse, you start to talk about a topic, branch into a subtopic, and are unable to find your way back. You find yourself asking people "what was I talking about?" all of the time, imagine doing this in the middle of a presentation or while talking to a client.

Relevant Study: [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3931635/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3931635/)

<comment><USER22> You mean, while you're actually intoxicated? No kidding!

Or do you mean while NOT impaired, as a result of regular "after-hours" use?

<comment><USER20> Not only while medicated. The memory issue is cumulative, it is slow onset and stays with you until at least 3 months after complete abstinence.

</comment></comment></comment></comment></comment><comment><USER23> It might be interesting for them to keep track of how long it takes the black market to reappear, and see whether the negatives that come along with allowing criminals to monopolize the business of dealing drugs to people in the area reappear also.

<comment><USER23> Come to think of it, given that they state in the article:

      drug tourism was posing difficulties for the city

I wonder if they take into account the fact that these "problems" could've been affecting students and their grades as well. What happens if only the "drug tourism" disappeared?

<comment><USER24> This was controlled for by the native students, who also experienced any improvement in the city's environment, but did not experience the ban.

<comment><USER25> Not entirely.

The students who were banned were those visiting from out of country so it's possible to argue that the students performance is increased by preventing them from being drug-tourists. Not sensible, but possible.

</comment></comment></comment></comment><comment><USER26> Still less detrimental to a life than prison, because let's face it - legal or not, students will smoke pot.

<comment><USER27> I don't think you go to prison for smoking pot. The only way I can imagine you end up in prison is if police catch you with some massive amount of weed which means you are a big time dealer / manufacturer.

A student with few grams of pot on him/her will not go to prison for sure.

<comment><USER26> Probably depends on your background.

I'm pretty sure people are regularly imprisoned for marijuana possession due to 'three strikes' laws (in many states, possessing what I would consider to be a reasonable quantity for personal use would qualify as a felony).

</comment></comment></comment><comment><USER23> Here's the study in question:

[http://www.restud.com/wp- content/uploads/2017/03/MS20610manu...](http://www.restud.com/wp- content/uploads/2017/03/MS20610manuscript.pdf)

</comment><comment><USER28> I bet banning refined sugar products would have a more significant effect.

<comment><USER29> Honest question: is there any evidence that refined sugar has a deleterious effect on brain function? I can find this: [1], but I'm not sure how to interpret it.

Yes, weed and sugar are both addictive, but it is my understanding that the reduction in performance is not due to the addiction itself.

[1] [http://neuro.hms.harvard.edu/harvard-mahoney-neuroscience- in...](http://neuro.hms.harvard.edu/harvard-mahoney-neuroscience- institute/brain-newsletter/and-brain-series/sugar-and-brain)

<comment><USER30> While I'm not aware of any study that ties intake of excess sugar to a decline in cognitive function, there was a study that linked diets with a high glycemic index to higher rates of depression, specifically post menopausal as the participants were new mothers:

[http://m.ajcn.nutrition.org/content/early/2015/06/24/ajcn.11...](http://m.ajcn.nutrition.org/content/early/2015/06/24/ajcn.114.103846.abstract?papetoc#aff-1)

</comment></comment></comment><comment><USER31> I come from a place (Jaipur, IN) where weed is legal since a very long time, there are people I've met who are 90 and still consuming marijuana on daily/weekly basis and don't regret about it, I hadn't listen any incident/accident that happened because of weed. neither to folks are underachievers, they are respected professors, artists or daily wage workers. meanwhile, drink and drive accidents are very common here, and consuming liquor is considered a malignant.

</comment><comment><USER32> The sole reason I don't smoke pot even when my friends are to is because in addition to my existing ADD, my memory span on pot is diminished significantly.

<comment><USER7> I've found the opposite - certain strains have been remarkable for my ADHD (although out of reach for anyone in a non-medical state). The strains I generally use have low psychoactive properties and alleviate anxiety without sedative effects.

</comment></comment><comment><USER33> Thanks to scare tactics and the never ending publicity that wants us to believe it's a miracle drug. We've lost sight that pot really has it's downside. We need fact based education, no bs scare tactics, to emphasise that to users. Pot has its strong benefits but we can't lose sight of its bad side and users need to understand that. Specially now that it's being legalized in so many states.

</comment><comment><USER34> Seems like no one's commenting that the study isn't actually about marijuana - it's regarding the access to the cafes. My instinct tells me that they're probably not entirely off on the conclusion but it seems like a more complicated relationship - if I couldn't get into the place where all my friends hung out, of course I'd have more time to study!

<comment><USER23> Appears they accounted for whether amount of study time increased as a result of the ban.

From the study:

      We find no change in reported study hours, which suggests
      that we can eliminate effort adjustments as one channel of
      our results. [1]

My thought on this is focused mostly on the fact that the city was apparently filled with "problematic drug tourism". In other words it appears they're saying the city was becoming (if not already) a "college party town". I'd be curious to know what kinds of "distractions" ended up leaving the city because of the ban.

[1] [http://www.restud.com/wp- content/uploads/2017/03/MS20610manu...](http://www.restud.com/wp- content/uploads/2017/03/MS20610manuscript.pdf)

</comment></comment><comment><USER35> I knew a couple of semi-heavy users that were great students but they were probably the exception. Similar to alcohol, young people tend to fall into the 'more is better' fallacy and overdo it. Especially with things like concentrates or edibles. I think there is a bit of a 'ballmer peak' to help with certain tasks but it requires some diligence around strain and dosage and it's not for everyone.

<comment><USER36> There are obviously exceptions - the last bit of the article kind of explained that.

>But what the Maastricht study can do is provides highly credible evidence that marijuana legalization will lead to decreased academic success — perhaps particularly so for struggling students

Basically good students will continue to.be good, but the bad students will suffer.

</comment></comment><comment><USER27> Another anecdote from personal experience. Smoking pot decreased my cognitive abilities quite dramatically (not only while intoxicated but for days/weeks after).

I am certain it is detrimental to your intellectual abilities at least temporarily. It would definitely lower your grades and I think it is also detrimental to any job where you do mental labour (e.g. software engineering).

</comment><comment><USER37> so the study compared international students who didn't have access to pot legally versus students who were citizens? Am i misinterpreting something? It seems more likely that international students are simply better students. I doubt it would be that hard for them to get weed anyway.

<comment><USER38> No, it compared individual students' grades before and after they lost access to recreational marijuana. They mention the local students because it was a group where no event happened so it helps show that there wasn't some other factor that brought up everyone's grades over that time.

</comment></comment><comment><USER39> My friend who wanted to become a doctor was blowing it in his undergrad science classes.

He took my suggestion to turn the music off while studying for his next test.

And got an A.

Just saying...

</comment><comment><USER40> Huh, I'm surprised they could do it, ban EU-citizen while still allowing Ditch nationals. I thought they aren't allowed to do that within the EU.

<comment><USER41> It is allowed, see EU court results here:

[http://curia.europa.eu/juris/liste.jsf?pro=&lgrec=nl&nat=or&...](http://curia.europa.eu/juris/liste.jsf?pro=&lgrec=nl&nat=or&oqp=&dates=&lg=&language=en&jur=C%2CT%2CF&cit=none%252CC%252CCJ%252CR%252C2008E%252C%252C%252C%252C%252C%252C%252C%252C%252C%252Ctrue%252Cfalse%252Cfalse&num=C-137%252F09&td=%3BALL&pcs=Oor&avg=&page=1&mat=or&jge=&for=&cid=735144)

</comment></comment><comment><USER24> Does anybody know if you can take the pot out of the cafes or if you have to smoke it there? I wonder if it's not less pot smoking but less going out.

</comment><comment><USER42> What happened when the students lost access to Adderall?

</comment><comment><USER43> "The most rigorous study yet"

I searched the article for placebo and didn't find any mention.

<comment><USER44> How would you propose a placebo in this context?

<comment><USER43> well it would be hard with marijuana leaf. But you could have a vaping placebo, and compare that with vaping the real thing. Maybe the vaping placebo material could be made from marijuana but with the cannabis removed. I don't know enough how marijuana works, tbh, but something along those lines.

<comment><USER38> Except this isn't an experiment, where they control the conditions. It's monitoring natural behavior. Just saying "placebo" makes no sense for this kind of study. That'd be like asking for a placebo in a national poll.

The kind of thing you're talking about would be an experiment, where they bring people in and use various measures to quantify various types of intelligence after smoking marijuana. In that situation yes you could use a placebo as one group. But even then it's not always appropriate, and just skimming an article and dismissing it by saying "no placebo!" makes no sense. Not all experiments do use or should use a placebo as part of their methodology, and _this isn 't even an experiment_.

<comment><USER43> > "this isn't an experiment"

Well then this "study" is just an observation. So it probably doesn't warrant the amount of attention it is getting, to say nothing of people using this "study" as evidence. Observation is an early step of the scientific method, but now they need to perform a scientific experiment in order to make this newsworthy. (Well I guess it is "newsworthy" in that it makes for high click- through...)

<comment><USER38> >Well then this "study" is just an observation.

Yes. Many studies are.

> So it probably doesn't warrant the amount of attention it is getting, to say > nothing of people using this "study" as evidence.

It seems like you lack an understanding of how science works? Because the fact that this is an observation doesn't mean that it isn't evidence. Observation is like one of they key kinds of evidence.

>but now they need to perform a scientific experiment in order to make this newsworthy

No they don't. That's not how this works, at all. It's still valid meaningful evidence. I mean, do you ever read stories about stellar discoveries? Do you think they aren't worth reading because they didn't do an experiment to re- create the black hole they discovered in a lab?

</comment></comment></comment></comment></comment></comment><comment><USER45> I haven't read the study, but I would be willing to suggest that another effect could be that removing access to marijuana meant students spent less time high, and correspondingly more time productive.

</comment><comment><USER46> Significance and size of the effect.

Ban Netflix (and all other video and movie entertainment) and you'd get a bigger for both, less emotive than "Illegal Drugs!!!11!" though.

</comment><comment><USER47> I quit smoking weed years ago when I noticed when I was reading that I had forgotten the meaning of some words that I once knew. Smoking is great until it makes you stupid.

<comment><USER48> How do you distinguish what you forgot from smoking weed with what you just plain forgot?

It's amazing what you can forget, even stuff that has been drilled into you. I'd forgotten how to do long division until recently, despite doing it over and over again in primary school to pick one example. The brain is very much "use it or lose it".

<comment><USER47> I had known these words for years. The feeling of knowing that you used to know what, say, "superannuated" or "collusion" or "hegemony" meant, but right now you haven't a clue, is distressing.

These words were in long-term memory. My memory was slowly restored after I quit. Smokers will readily admit that their short-term memory is damaged by marijuana use, but not much is said about damage to long-term memory.

</comment></comment></comment><comment><USER49> Better to keep it illegal, so that if students get caught with it, they lose their student aid and federal loans instead.</comment>