Curebit (YC W11) Raises $1.2 Million For Online Referral System - <AUTHOR> http://techcrunch.com/2012/01/27/yc-alum-curebit-raises-1-2-million-for-online-referral-system <comment><USER2> Your new designer will be able to have a crack at an original homepage ;)

<http://i.imgur.com/fRI8Q.jpg>

<http://i.imgur.com/KbQo0.jpg>

<comment><AUTHOR> Hey - I'm one of the founders of Curebit, and yes - it was a boneheaded move..

We had a different homepage, were a/b testing different pages, came across the 37signals post and were like 'wow we should see how that converts!' We are big fans of rails and what 37signals is doing and did not really think through the implications of what we were doing. We just kind of thought about it as a fun test to run.

Clearly it was stupid. It was not meant to offend anyone and we are adding credit where due. (We'll take it down if DHH insists!)

Our new designer will take a crack at more than our homepage... we need all our UI "designed".. not redesigned, but designed - because we're primarily backend guys. Yes, this landing page variation was heavily inspired (read: blatantly ripped off) from Highrise -- because these are the peeps we aspire to, and they've done a lot of testing to figure out what works: [http://37signals.com/svn/posts/2991-behind-the-scenes-ab- tes...](http://37signals.com/svn/posts/2991-behind-the-scenes-ab-testing- part-3-final)

We're running a "ghetto test" - this homepage variant does not even share a common CSS file with the rest of the code base. It's been live less than a week.

The idea was to just see how the conversion characteristics were before investing a lot of time into making a "real design" out of the lessons (prominent testimonial, light copy focused on value props). Hence the hot linking, inline styles, etc. It is personally my fault for not including a credit to Highrise for the design.. that credit is well deserved and will be added shortly - a big oversight on my part.. we launch some stuff fast (other things deliberately), and this was one of those fast things.

Lesson to us: add credits, and be more explicit what we're testing... ask permission instead of asking for forgiveness. In the meantime, please forgive us? :)

<comment><USER3> Close, but no cigar: <http://mee.la/28983>

<comment><USER4> Wow, they copied both of their designs. Ouch.

</comment></comment></comment></comment><comment><USER5> I was super excited to see the data presented and understand its implications for my business and then when I read the comments on YC and TC, all that washed away as I realized that the credibility of the data was probably about as good as the credibility of the designers...

Initially, I was excited to check them out because their referral rates look a lot better than mine. Then as I paused to consider what was really going on, brought on by the design controversy, I realize that there was a strong likelihood that these rates couldn't be all that solid because as an MVP, their sample size is probably immaterially small.

I wouldn't say that I'm writing Curebit off, but it will be a while before I'm excited about them again...

</comment><comment><USER6> Serving the assets was a big mistake, but isn't this the same forum that overwhelmingly says copying isn't stealing and that no harm is done to the original creator when you duplicate their work? Now, suddenly everyone's a hard ass about IP? In this case more than all the others argued here, if you exclude the assets problem, there was zero detriment caused by using this design. It's not a competing product, and it did nothing to the value of the original work. If you can write off the assets issue as a bad mistake, and it was, I just don't see how 99% of the HN crowd can suddenly take the high road on appropriation of creative work. Have some consistency.

<comment><USER7> Sure, people argue on the semantics of IP infringement and while many feel that intellectual property laws are woefully one sided, most of what I've seen suggests that at least a fair number of people feel that copying material in contrary to the creator's wishes is wrong. Do some folks do it anyway? No doubt. Regardless, I think much of the hard assedness has been in response to the media companies and lawmaker's approaches in addressing the issue--- poor legislation that overreaches, failure to address the actual issues that leads to piracy, copyright length extension, circumvention provisions & fair use implications, etc. In the end, I can be against efforts like SOPA while also being against ip infringement. Similarly, I would assert that it is not inconsistent to feel that curebit's approach to publicly using another other company's design w/o permission directly in their commercial product is unfortunate while also feeling like IP in the US needs to be retooled.

Ultimately though, this forum compromises many viewpoints. While there will be trends, consistency when dealing with large numbers of folks seems unrealistic (but again, I don't think having issues with contemporary IP law and being against using another site's design in a commercial product demonstrates a consistency issue. It's more of a "dude, not cool" thing to me.).

In regard to the lack of detriment, certainly at least one representative of 37Signals is unhappy with it. If it were my design, I'd prefer that my efforts remain tied solely to my products given the time and money spent on them since I think there is marketing and branding value in developing a reasonably unique look and feel even if the products themselves are not direct competitors. Do I recognize that designs will inspire other designs? Certainly. The line between a copied design and inspired one is blurry. Would I personally give more leeway to someone who was just experimenting for a non- commercial, personal project? Probably. This, however, was a commercial entity that just received a big check for their (and 37signals') efforts. That said, if I were an employee of curebit, I'd probably have felt uncomfortable with the approach they took regardless of any legal implications that may exist. It would just kinda feel wrong, ya know?

Anyway, my initial reaction was along the lines of "well, that was stupid of them" and progressed to "WTF is wrong with this guy?" due to Allan's tweets in response to dhh. Some of his tweets have almost felt like he was trolling for controversy/publicity. Regardless, I really think he should simply stop tweeting at this point and let further public responses come from someone better equipped to NOT dig themselves deeper.

<comment><USER8> > It's more of a "dude, not cool" thing to me.

I think it's more of an issue that calls into serious question their integrity, motivations and skills. It's pretty hard to start a company out of an incubator with community support when you'e signaled that you've no ethical regard for the very community that supports you.

<comment><USER7> I can see how the 'dude, not cool' comment likely made it seem like I found it less reprehensible than I really did. For what it's worth, I agree with your comment.

</comment></comment></comment></comment><comment><USER9> This is really upsetting for so many reasons. The intent to use these site designs took time and effort to implement. There had to be hours of time that they knew without a doubt they were stealing work they did not produce. To feign ignorance in this case in unacceptable.

Furthermore these guys have raised 1.2 million dollars. To think that someone in this position would raise that amount in capital and pull this kind of bullshit is offensive. This is a black eye for the valley.

</comment><comment><USER4> It's pretty amazing that you guys would do something so stupid and post it here to HN.

</comment><comment><USER10> "And it was the same way with design. I was totally psyched to copy a Müller- Brockmann poster, a Designgraphik composition, or an Apple UI. Merely executing the copy was a thrill. But now every design is supposed to be the next great thing. And as days and weeks and months go by, the design level stays the same while the aspiration goes higher and higher.

So maybe it's time to take one of these Fridays off and just copy something."

([http://37signals.com/svn/posts/2412-how-do-you-turn- inspirat...](http://37signals.com/svn/posts/2412-how-do-you-turn-inspiration- into-skill))

</comment><comment><USER11> Just visited CureBit.. Hmm I think your landing page needs some work. The typography looks a little amateurish (get your customers to refer your friends). The product looks intriguing though. Just fix your landing page because it probably will turn off a lot of customers.

</comment><comment><USER12> Congrats guys!

</comment><comment><USER13> Great job guys!

</comment><comment><USER14> Awesome job to Allan and team. Can't wait to try it for our own software.

</comment><comment><USER15> Very immature!

</comment><comment><USER16> go curebit! Nice work

</comment><comment><USER17> Congrats!!!

</comment><comment><USER18> Just subscribed to Curebit $50 / Month plan ... it seems like the product i've been waiting for all ...

<comment><USER18> Hey, guys i really like your product ... but i think you could spend your newly found venture fund to invest on a good designer.

(PS: Even your email template is exact ripoff from Groupon ... i think you guys can do better than this.)

(Suggestion: Could you please add "Contacts" connector on top of your email widget ... now i have to type in emails one by one for inviting friends)

</comment></comment><comment><USER19> How lame is that. Jesus it's not hard to come up with your own design. Crackers.</comment>


Chinese schools monitor students activities with 'intelligent uniforms' - <AUTHOR> http://www.globaltimes.cn/content/1132856.shtml <comment><AUTHOR> [https://www.theepochtimes.com/chinese-school-tracks- students...](https://www.theepochtimes.com/chinese-school-tracks-students-by- requiring-them-to-wear-chip-enhanced-uniforms_2748391.html) is another one on the topic. The uniform can activate an alarm when the sensor detects that a student has fallen asleep in class. Wish I had this when I was in school.</comment>


Inventing Monads - <AUTHOR> https://stopa.io/post/247 <comment><USER2> > This begins to get us to the fundamental abstraction of a monad: a box, with > an interface for map, and flatMap

Before I understood monads, I read variations of the above sentence a million times, always got stuck here: [https://i.imgur.com/McThkuh.png](https://i.imgur.com/McThkuh.png)

How does this abstraction let us perform IO, do in-place destructive updates, etc? The answer is that it _doesn 't_. These must be primitives supplied by the runtime. A monad like IO has its two functions (return+bind), _and a bunch of other magic functions_. It's obvious now but that fact is hardly ever stated.

I wonder if anyone has tried explaining from the other direction? Rather than building up to Maybe, try building down from a desire to print Hello World.

<comment><USER3> What you say is correct, but let me try and explain a little further. The Haskell function `getChar` is used to get a character from stdin. It has the type `IO Char` and is a totally, 100% pure. In fact, it isn't even a function, it's just a value.

You can write `getChar` as many times as you want, and you will get the same result every time, and it will have nothing to do with whatever character is being sent to stdin. Instead, what you will get is an instruction, saying "please get a character from stdin".

What the IO monad allows you to do is to compose instructions together. For example, you could write `getChar >> getChar". This makes a new instruction that says "please get a character from stdin, discard it, then get a character from stdin". The `>>` operator means "follow the instruction on the left, discard the result, then do the instruction on the right".

Your _entire_ program is made by composing instructions like this, into one new huge instruction that specifies your entire program's behaviour. You assign that to the special name `main`. At runtime, the instruction is executed.

The only bit of compiler magic that's necessary is the code for interpreting the instructions and actually executing them. In theory, although haskell doesn't let you do this, you could write `getChar` yourself, and just return the same thing that `getChar` does, and it would behave identically.

This I feel is the simplest explanation for why monads are necessary in Haskell. They allow you to conveniently specify what you want your program to do, using only pure functions and values. Why do you want all values to be pure? Many don't because it's kind of a pain, but Haskell kind of exists to see if a lazy, pure functional language can be fun to use and many find that it is. Hope this helps someone!

<comment><USER2> Great description of IO, but I think it doesn't actually motivate monads. Your example of `getChar >> getChar` could be simply `[getChar, getChar]`. Why can't we just compose instructions into an ordinary list?

The answer is that we can, and Haskell used to work this way [1]! So as 'chowells' observed the monad-part of IO is almost incidental.

1: [https://stackoverflow.com/questions/17002119/haskell-pre- mon...](https://stackoverflow.com/questions/17002119/haskell-pre-monadic-i-o)

<comment><USER4> > Your example of `getChar >> getChar` could be simply `[getChar, getChar]`. > Why can't we just compose instructions into an ordinary list?

Because you can't pass results from a earlier list element into the computation of a later element. You'd need a list with existentially- quantified element types such as:

      {-# LANGUAGE ExistentialQuantification, GADTs #-}
      foreign import ccall "exit" exit :: Int -> IO ()
      infixr 1 :>

      data IOList a = forall b. (:>) (a -> Act b) (IOList b)
      data Act b where
        Getchar :: Act Char
        Print :: String -> Act ()
        Exit :: Int -> Act ()

      main' :: IOList ()
      main' = (\_->Getchar)
           :> (\c->Print ("Got '"++[c]++"'\n"))
           :> (\_ -> Exit 0)
           :> undefined

      runio :: a -> IOList a -> IO ()
      runio a (f:>fs) = flip runio fs =<< case f a of
        Getchar -> getChar
        Print s -> putStr s
        Exit n -> exit n

      main = runio () main'

where f :> g :> h :> ... is your list of instructions (rather than f : g : h : ..., which doesn't allow the response type of f to be related to the argument type of g).

</comment></comment></comment></comment><comment><USER5> In various places on the web one can find the quote that 'Dependency injection is a 25-dollar term for a 5-cent concept'.

I feel it is the same with monads including all the false suggestions that one might need to understand category theory and similar such nonsense.

<comment><USER6> If only DI had a clear definition like "monad" does, I might be able to understand what it is.

<comment><USER7> It just means passing a dependency as an argument to method or constructor. Seriously, it is just that!

<comment><USER8> Which, in FP, is all but invisible: the arguments to a function literally are its dependencies.

I think OOP has more primitive concepts (and more mutation) than FP, so dependency injection in OOP also includes object construction and often mocking effectful operations. That's why it gets its own name in OOP, while being more of an ambient idea in FP.

<comment><USER7> I don't think I agree with that. In scheme you can write (display "hello world") inside a function and this is directed to some globally configured port. If either the port or the display function was passed as a parameter to the function, then it would be dependency injection.

<comment><USER8> On its face, you're right. You can formalize this approach using dynamically- scoped variables, which is a step on the road toward coeffect systems in typed functional languages. But in a coeffect system, the type of `display` would explicitly call out that its environment must provide the necessary dynamic variables, which brings us back to dependency injection. `display`'s dependencies would be injected _via_ dynamic scope, which you can override in the caller by defining a dynamic binding.

As an alternative, I would suggest that `display` is special, and that instead of thinking of passing an extra parameter to `display`, that the module that calls it should instead have `display` _itself_ injected.

<comment><USER7> Yes that is actually what I meant, I guess I was not being clear. The function calling "display" could have "display" passed as an argument rather than calling it as a globally defined function.

Relying on dynamic variables would probably not be considered dependency injection. A major purpose of DI is that dependencies should be declared in the signature, making it explicit which dependencies a unction or object depends on.

<comment><USER8> > A major purpose of DI is that dependencies should be declared in the > signature

Yes, and a coeffect system would cause dependencies on dynamic variables to be declared statically, even if they're provided by "the environment" at runtime.

Tomas Petricek's PhD project page is a good introduction to coeffect systems, and it illustrates dynamic variables as an example. [http://tomasp.net/coeffects/](http://tomasp.net/coeffects/)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> There's also the classic [http://blog.sigfpe.com/2006/08/you-could-have- invented-monad...](http://blog.sigfpe.com/2006/08/you-could-have-invented- monads-and.html)

Written by a 3-time Oscar winner, no less!

<comment><USER10> > Writen by 3-time Oscar winner, no less!

Sorry, what? Their About page is blank.

<comment><USER11> The author is Dan Piponi: [https://pwlconf.org/2018/dan- piponi/](https://pwlconf.org/2018/dan-piponi/)

[https://www.imdb.com/name/nm0685004/](https://www.imdb.com/name/nm0685004/)

<comment><USER12> 2015 - Technical Achievement Award, shared with Kim Libreri, George Borshukov: For their pioneering work in the development of Universal Capture at ESC Entertainment.

2014 - Technical Achievement Award, shared with Olivier Maury, Ian Sachs: For the creation of the ILM Plume system that simulates and renders fire, smoke and explosions for motion picture visual effects.

2001 - Technical Achievement Award, shared with George Borshukov, Kim Libreri: For the development of a system for image-based rendering allowing choreographed camera movements through computer graphic reconstructed sets.

</comment></comment></comment></comment><comment><USER13> To understand monads, I think it helps to know a language where expressing such a concept is more natural. Although I do not claim to know 100% what monads are yet, coming across these features made it easier for me to understand the concept a little bit.

\- Algebraic data types

\- OCaml's let expressions

\- F#'s computation expressions

I also think that it is important to write something that naturally requires the use of monads. One thing that spring to mind is Parser Combinators.

\- [https://fsharpforfunandprofit.com/posts/understanding- parser...](https://fsharpforfunandprofit.com/posts/understanding-parser- combinators/)

\- [https://www.youtube.com/watch?v=N9RUqGYuGfw](https://www.youtube.com/watch?v=N9RUqGYuGfw)

</comment><comment><USER14> I really like how this article builds up from a simple real life use case.

Shameless plug for my own article that did something similar about a week ago: [https://medium.com/@ameltzer91/an-easy-to-understand- monad-g...](https://medium.com/@ameltzer91/an-easy-to-understand-monad-guide- fdad10356a9c)

<comment><USER15> Nice article, I linked to it from my tumblelog [https://plurrrr.com/archive/2020/08/19.html](https://plurrrr.com/archive/2020/08/19.html) 10 days ago. Thanks for writing this.

</comment></comment><comment><USER16> I think the hard part for most people is moving beyond Maybe/Either. It's hard to find motivating examples when most languages lack denotational semantics and everything implicitly happens inside IO all the time.

<comment><USER17> That is something I've struggled with as well. Do you have any suggestions for resources, that could help overcome that challenge?

<comment><USER18> If you come from a C# background, this book is excellent: [https://www.manning.com/books/functional-programming-in-c- sh...](https://www.manning.com/books/functional-programming-in-c-sharp)

It does have some minor shortcomings in my opinion (e.g. if you haven't already started on the path of reinventing monads yourself you may struggle to immediately understand why this is a big deal and how it will save your life, the author should have used LanguageExt instead of their own library as LanguageExt is actively maintained and extremely well thought out, the book stops just short of becoming practical in the sense of "here's how to start a new C# project while thinking in functions", etc.).

You might also consider the LanguageExt guide itself: [https://github.com/louthy/language-ext/wiki/Thinking- Functio...](https://github.com/louthy/language-ext/wiki/Thinking-Functionally)

<comment><USER17> I actually found the LangExt package a few months ago, when I started a new job and had to use C# as the default language (I've primarily been using Python, Typescript, and Rust in my previous jobs)

I spent some time explaining the advantages of an FP approach to my colleagues and LangExt has started to pop up in their PRs, which I'm very happy about

It's definitely a great library and I'm really impressed with the effort that's being put into it!

I'll give the book you're suggesting a read. I think it might help cover some of the gaps in my knowledge, which is exactly what I'm looking for, so thank you for the suggestion

</comment></comment></comment></comment><comment><USER19> As someone who isn't familiar with functional programming, what benefit does this give us over throwing an error when trying to access a resource that doesn't exist?

<comment><USER20> A monad's special function application lets you write much simpler code in certain situations.

Say you're working with some data structure that contains/emits numbers: a pointer to a resource containing a number. A list of numbers. A function that returns a number. An optional number (or null).

A common operation is unpacking that structure to get a number, applying a function to the number, and packing it back up: Reading from the pointer, applying the function, and returning a pointer of the result. Applying the function to each element of the list and returning a list of the results. Composing a function with another function. Applying a function to the optional number or just returning the null.

When you're writing code on this, it's error prone to do the unpacking, application, and repacking. It's much simpler if you can write code that looks like `def f(x): return exp(x)/x + 23`. Much more testable too. If you have two or more of these structured things, it might get even more error prone. It's much easier to write code that takes three integers and does stuff, instead of writing code that takes three pointers/lists/functions/optionals.

Monads are part of a hierarchy that abstracts that. Anything that defines that sort of function application in a particularly convenient way is a monad. There's more to it, but that's why it's useful.

It lets you write code dealing with the things in your data structure, letting you mostly ignore the structure itself.

\</comment></comment><comment>-

In this specific situation, say you want to replace your error handling with something else. Maybe it writes to a log file then errors. Or maybe it does something fancier. Or maybe you even change the way you get the resource as well as the erroring to something fancy. As you swap out the "structure" code, with a monad it's just switching to a new monad, rather than refactoring the business logic related code. It's a nice separation of concerns.

<comment><USER21> > Anything that defines that sort of function application in a particularly > convenient way is a monad. There's more to it, but that's why it's useful.

Aaand with this statement you skipped over what IMO is the most important missing piece, because everything above it fits higher-order functions such as map(), which as far as I understand aren't monads.

<comment><USER20> I disagree. Map (or a functor) alone can't do everything I've said. There are a few reasons. I assume you're already familiar with the subject matter, so I'm going to cross my fingers that you know it in haskell and use that notation and terminology to save us time.

tl;dr map works for applying the simplest functions to "containers." To apply more interesting functions, you need bind, pure/return, and/or whatever applicative's <*> is called.

Let's say you're working in something like Maybe. You might want to write some code like

        f :: Float -> Float
        f x = 5 + x

In that case map is fine. fmap lets you focus on simple code like that. Or maybe you want to write

        f :: Float -> Maybe Float
        f x = if x == 0
              then None
              else 5 / x

In that case you need more than map, because you don't want to deal with what map would give you: a Maybe (Maybe Float). (>>=) lets you still focus on simple code like this, since you dont have to deal with any unpacking/flattening, which was what I'm saying is why monads are so useful.

More importantly, you need more of the FAM hierarchy than map if you care about multivariate functions, which I'd say is most code. Lets say we're working with

        f :: Float -> Float -> Float
        f x y = x + y

We want to write code like that and use some version of function application (like map). If we just use map, we get the following

        f <$> maybeX :: Maybe (Float -> Float)

which isn't at all what we want, because we can't apply it to a maybeY (or even to a float y, which `pure`/`return` lets us treat as a maybeY). If we define an additional way to apply that Maybe (Float -> Float) to a Maybe Float, we've defined Applicative, forcing us to go beyond a functor.

The motivation and usefulness is the same throughout: we just want to write code and apply functions that don't care about the structures emitting/containing our inputs and outputs. It just turns out that there are three cases depending on the kinds of functions we're writing and applying

       f :: a -> b  -- functor is sufficient, like you say.
       f :: a -> b -> c -- functor isn't sufficient. applicative is.
       f :: a -> m b -- functor and applicative aren't sufficient. monad is.

I wrote a series of posts ages ago deriving all these from that one motivation (in a more fleshed out manner) [http://imh.github.io/2016/05/26/why- monads.html](http://imh.github.io/2016/05/26/why-monads.html)

<comment><USER21> > I assume you're already familiar with the subject matter

Nope. I think this is why you don't see where the previous post falls short, too much familiarity so you don't realize you're skipping over important aspects.

> so I'm going to cross my fingers that you know it in haskell and use that > notation and terminology to save us time.

I get just enough Haskell to understand the first 3 code blocks, and can guess what the 4th is depicting, but am not sure.

<comment><USER20> Sorry, I thought when you said missing piece in your previous message, that you meant the missing piece of what makes monads unique (arguing from a place of knowledge about "no THIS is what makes monads important"), rather than the missing piece of the explanation. Either way, hopefully the posts I wrote and linked are written assuming nothing more than the basic Haskell syntax, so if you're curious about the rest of the explanation, hopefully it's clearer there. If it's not clear there, I'd appreciate any feedback.

</comment></comment></comment></comment></comment><comment><USER22> That code that "is getting pretty ugly" seemed ok to me.

<comment><USER23> Sure, that example wasn't that bad. But if your specific monad is somewhat more complicated - e.g state, either, promise - and you're using it all over the place all that boilerplate is going to obscure your domain logic pretty quickly.

Monads can help readability by focusing on the composition of your domain logic instead of writing out the same low-level boilerplate over and over again.

</comment></comment><comment><USER24> I had a similar example today in the functional programming slack.

> hello, quick question: i feel like there's a more elegant way to express > this, but I'm struggling to come up with one:

        foo :: (a -> Bool) -> (a -> Bool) -> a -> Bool
        foo f g x = f x && g x

For those who aren't as familiar with Haskell, that is taking a function f and a function g, passing argument x to both, and then doing a binary and on their boolean result.

One answer suggested:

> You can get fancy, but the "simple" version is almost always more readable:

        (not . null . f $ x) && (not . null . g $ x)

Which I find myself agreeing with in many ways, but for some reason leaves me desiring more.

The answer to that desire complements this article I think:

> if f and g returned Maybe you could have:

        > f _ = Nothing
        > g _ = Just ()
        > x = ()
        >  (f x) <*> (g x)
        Nothing
        > import Data.Maybe
        >  (f x) <*> (g x) & isJust
        False
        > -- or to avoid <*> you can do
        > liftA f g x
        Nothing

If that's not clear, let me know what's confusing and I'll try to explain further

<comment><USER25> So, I'm a bit rusty on haskell but I have some notes on a similar concept. Essentially, fmap with a twist - instead of applying the same function to a list of values, you have a list of functions that you want to evaluate on the same value. "fpam". In this case, we're dealing with a list of size 2

      fpam :: [(a -> b)] -> a -> [b]
      fpam fns v = fns <*> pure v

after that then fold the list with boolean &&

      foo :: (a -> Bool) -> (a -> Bool) -> a -> Bool
      foo f g x = foldr1 (&&) ( fpam [f,g] x)

or alternatively with no helper functions

      foo2 :: (a -> Bool) -> (a -> Bool) -> a -> Bool
      foo2 f g x = foldr1 (&&) ( [f,g] <*> pure x)

for example

      Prelude> foldr1  (&&) ( [ (==3), (==4) ]  <*> pure 3 )
      False

Alternate implementations:

        import Data.List
        import Data.Function
        import Control.Monad.State
        import Data.Foldable
        import Control.Arrow((>>>))
        import Control.Monad.Reader
        import Control.Monad.List

        applyList :: [(a -> a)] -> a -> a
        applyList list = execState $ for_ list modify

        applyList2 :: [(a -> a)] -> a -> a
        applyList2 = foldr1 (>>>)

        fpam :: [(a -> b)] -> a -> [b]
        fpam fns v = fns <*> pure v

        fpam2 :: [(a -> b)] -> a -> [b]
        fpam2 fns = runReader $ forM fns reader

        fpam3 :: [(a -> b)] -> a -> [b]
        fpam3 fns v = fmap (\f -> f v) fns

        fpam4 :: [(a -> b)] -> a -> [b]
        fpam4 fns = runReaderT $ do
          fn <- lift fns
          reader fn

<comment><USER24> Also see this related discussion: [https://www.reddit.com/r/programming/comments/ij0qzl/comment...](https://www.reddit.com/r/programming/comments/ij0qzl/comment/g3dzohz)

</comment></comment></comment><comment><USER26> How many Monad explanations need to be written before we admit that the Monad is an unsatisfactory abstraction for practical purposes?

<comment><USER27> These things are monadic:

Functions, continuations, state, IO, parsers, futures, streams, lists, transactions, LINQ, observables.

I can only think of one abstraction more useful - the function.

<comment><USER26> I didn't say that monads aren't useful; I said that the abstraction is unsatisfactory. The world needs a new clearer concept to use instead of the monad, just as raft can be used instead of paxos.

<comment><USER28> Monads are literally the simplest/smallest abstraction that makes all these examples compose nicely. It will be hard to come up with something clearer I think.

What is so unsatisfactory about them?

</comment></comment></comment></comment><comment><USER29> I wrote an article with the same name! [1] The problem solving based approach seems to be the most relatable and easy for people to get an idea of what monads are. Nice work.

[1] [https://blog.kabir.sh/inventing-monads](https://blog.kabir.sh/inventing- monads)

<comment><AUTHOR> Great work Kabir! : )

</comment></comment><comment><USER30> I think, the main benefit of FP is alsoits main problem.

Patterns like the monad are so abstract, that ob its own nobody knows what to do with it, but it makes them so very powerful.

OOP patterns, on the other hand, come from a more inductive source. They are more concrete, but also not as powerful. Easier to grasp, but less concise.

We need a step (or more) between the definition of FP concepts and their application, to make all this more approachable for the average programmer.

</comment><comment><USER31> I thought I understand monad after reading the article, but then I read the comment and now I am confused what is monad (again)?

<comment><USER32> I recommend reading the original "Monads for Functional Programming" paper by Phil Wadler, it's in a tutorial style and IMHO still better than any blog post explanation I have seen:

[https://homepages.inf.ed.ac.uk/wadler/papers/marktoberdorf/b...](https://homepages.inf.ed.ac.uk/wadler/papers/marktoberdorf/baastad.pdf)

</comment></comment><comment><USER33> I wonder why it isn't ever described as a design pattern? For me, it is one..

<comment><USER27> I would call the State Monad a design pattern, I wouldn't call the List Monad a design pattern.

</comment></comment><comment><USER34> [Edited away]

</comment><comment><USER35> So do you need monads in Haskell because that's the only way you could do some of the things that are trivial in an imperative language (albeit verbose and arguably inelegant)?

<comment><USER36> Yes. (For example, ML, being impure, does not need this.)

<comment><USER37> Haskell only "needs" monads for IO (there are other alternatives to implement io in a pure language too though). The reason that they are popular in haskell is that they are convenient and the reason that they are not popular in ML is that it lacks higher order types and things like typeclasses.</comment></comment></comment>


Popcorn Time DMCA takedown of code hosted on github - <AUTHOR> https://github.com/popcorn-official/popcorn-app

<comment><USER2> The DMCA notice is dated to July of last year.

<comment><USER3> Previous (lengthy) discussion from 7 months ago is here: [https://news.ycombinator.com/item?id=8450145](https://news.ycombinator.com/item?id=8450145)

</comment></comment><comment><USER4> Time to move to a GitLab repository hosted on server you've bought with bitcoin.

</comment><comment><USER5> What? Is this DMCA takedown a claim that someone owns the copywrite of the Popcorn Time code? Surely if people hosted something that broke copywrite regulations (potentially a torrent app or pirate bay source code), they cannot take it down right?

<comment><USER6> No, this takedown clearly states the claim that the mentioned projects infringe their rights by making copyrighted material (illegally) available to others.

 _Attached as Exhibit A is a series of screenshots taken from within the applications of each Project that includes images of copyrighted works available through the Projects._

and

 _The Projects blatantly infringe the MPAA Member Studios' copyrights and countless other copyrights. Indeed, copyright infringement is so prevalent within the Projects that infringement plainly is their predominant use and purpose._

However, I too am surprised that this is enough to get a repository taken down, since the infringement obviously is not in the contents of the repository itself, but rather occurs solely when building and executing them. But then again, I hardly know anything about U.S. law...

<comment><USER7> They are citing a case against Grokster as a source for the second quote. Moreover they are asking for the repository to be taken down due to DMCA infringement OR breach of terms of service.

</comment></comment></comment><comment><USER8> Wouldn't using the screenshots be fair use?</comment>


The /bin/true Command and Copyright (1990) - <AUTHOR> http://trillian.mit.edu/~jc/humor/ATT_Copyright_true.html <comment><USER2> This is really silly. Not fun or interesting at all. Gnu coreutils wants all the command line utilities to respond to --help and --version. The version number is that of the coreutils package, if your ls is Gnu ls, it'll say the same number too:

        [2] g@alpha (0)$ /bin/true --version
        true (GNU coreutils) 8.26
        Copyright (C) 2016 Free Software Foundation, Inc.
        License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
        This is free software: you are free to change and redistribute it.
        There is NO WARRANTY, to the extent permitted by law.

        Written by Jim Meyering.
        [3] g@alpha (0)$ ls --version
        ls (GNU coreutils) 8.26
        Copyright (C) 2016 Free Software Foundation, Inc.
        License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
        This is free software: you are free to change and redistribute it.
        There is NO WARRANTY, to the extent permitted by law.

        Written by Richard M. Stallman and David MacKenzie.
        [4] g@alpha (0)$

WRT AT&T true(1), well they probably were required to put a header in a certain format in every source file, and they put that in this one to. Probably the implementor just copied from a template and left it like that. Also I don't beleive they manually edit the years in copyright notices, one usually has a script to do that.

<comment> racer-v > Also I don't beleive they manually edit the years in copyright notices, one > usually has a script to do that.

It's not clear if you're referring to the copyright notices displayed to the user, or the copyright notices embedded in the source code. In the former case: I have been told to programmatically print $CURRENT_YEAR in a program's displayed copyright notice, which I refused to comply with. After all, someone running the program 200 years in the future should be able to determine that the copyright has long since expired.

<comment><USER3> At the rate things are going, nothing since Mickey Mouse will ever again have expired copyright, as lawmakers will keep extending the copyright term.

<comment><USER4> Well, think about us in Europe who have a chance to have a sane copyright reform one day.

</comment></comment></comment></comment><comment><USER5> There is a lot of space between (1) a copyright notice, (2) a valid copyright, and (3) a valid claim against a third party for copyright infringement. On (1), authors can attach copyright notices to their work, but it isn't necessary to secure their copyright interests, nor is it sufficient to make the work protectable. On (2), validity will depend on whether the work is protectable expression and whether or not the expression merges with the idea. On (3), there are a whole host of defenses to infringement including Fair Use and a de minimis defense (copying is so small it doesn't matter).

Here, I'd expect that an expression of an empty program would merge with the idea of an empty program, which would make it not copyrightable. Of course, that doesn't stop someone from putting a copyright notice on it anyway.

<comment><USER6> This is entirely the right way to see things.

I'd like to emphasize that a copyright notice' purpose is to serve as evidence, should a copyright claim be made. As you said, it is neither necessary nor sufficient to establish a copyright. There's no harm in putting a copyright notice on uncopyrightable material. With that understanding, including a copyright notice just makes sense.

If you're AT&T you have two options. You can tell your engineers to just always include the copyright notice, or you can ask your engineers to understand copyright law well enough to decide whether the notice is called for. The decision is pretty obvious.

EDIT: Ohh, there is a third option. You can pay lawyers to review every code file.

</comment></comment><comment><USER7> From a strictly legal perspective I suspect /bin/true (or at least AT&Ts implementation) do not live up to the law's requirements of originality and expressiveness.

<comment><USER8> Considering that they were the copyright holders for unix at the time, and that this 'default interpreter processing'/ return code mechanism was part of the kernel/userland interface, I'm not so sure that's the case..

not to defend AT&T over unix, as a BSD guy..

<comment><USER9> My guess is that the copyright is for the whole body of work, and not just for the single file. The copyright notice in the single file is probably not a requirement from a legal standpoint and is merely indicative.

</comment></comment></comment><comment><USER10> These days most IDEs automatically add a copyright/license default text to the top of each new file. It makes sense to instruct software engineers to follow a simple copyright rule rather than expecting them to play JDs and keep up with all the standards and developments in what was at the time (and still is) quickly changing copyright laws.

</comment><comment><USER11> I find the man pages descriptions of both true and false zen like and have wanted to make t-shirts out of them for years. On Ubuntu, the man page copyright is claimed by FSF, can I make a shirt?

<comment><USER12> Only if you provide the source code for the shirt upon request

<comment><USER13> It's provided on the shirt itself (self-evident), so it should be fine to distribute copies of the shirt.

<comment><USER14> The GPL also requires providing a copy of the license.

<comment><USER15> You could include it on the care instructions tag in tiny tiny print.

<comment><USER14> Problematic if you wear the shirt in public and allow someone to take your picture. You must provide them a copy too or your license to wear the shirt is revoked.

<comment><USER16> > ... your license to wear the shirt is revoked.

Well, you have 30 days time to comply.

</comment></comment></comment></comment></comment></comment></comment><comment><USER17> It's more interesting that they incremented the version of the script. Apparently modifying comments justifies increasing the minor version.

<comment><USER18> The number is placed there automatically by some old version control system (probably SCCS or RCS) and is incremented on every commit. The commits were likely just adding a new year to the copyright line.

<comment><USER8> "@(#)true.sh 1.6 93/01/11 SMI" /* SVr4.0 1.4 */

is an sccs id.

Anecdotally (wasn't there at the time): sccs was more common everywhere before RCS because sccs was part of all unix (e.g including BSD UNIX).. it was encumbered as part of the UCB USL suit and rcs use grew after that, then cvs, then svn, then git

</comment></comment></comment><comment><USER19> What's even more interesting is to see how much code is needed in the GNU true.

[http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/true...](http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/true.c)

4 includes, 3 ifdefs or define blocks, the whole thing is 80 lines, more than half of it code!

<comment><USER20> By comparison, OpenBSD's version:

      /*      $OpenBSD: true.c,v 1.1 2015/11/11 19:05:28 deraadt Exp $        */

      /* Public domain - Theo de Raadt */

      int
      main(int argc, char *argv[])
      {
            return (0);
      }

<comment><USER21> Which is, actually, far too large due to the standard library, program state initialization, and stack frame management. If there's ever a practical use for code golf, this is probably it. /bin/true should be a bare minimum ELF executable with no stack or heap that does nothing except immediately make the system call to terminate.

<comment><USER8> As mentioned in the article:

" This can be done with an empty file that's marked executable, and that's what it was in the earliest unix system libraries. "

        $ uname -sr
        OpenBSD 6.1
        $ install -m 755 /dev/null /tmp/muhtrue && /tmp/muhtrue && echo yup
        yup

not sure why it was ever switched.. probably the 'return 0;' version is cheaper than a shell fork? hmm..

<comment><USER21> She'll forks are expensive. Very expensive.

Of course the system could have special cased a zero length executable file.

<comment><USER21> *shell forks

</comment></comment></comment></comment></comment></comment><comment><USER22> I was hoping this would also go into whether AT&T actually acted to enforce this copyright, as copyright covers "The work" and "significant subsets", but will not cover things like newlines. For that kind of content (as well as "int i= 0" and the like) there is both prior art, and the claimed-copied content cannot be used to identify the work, and where in that work, the line would have been lifted from.

The article seems mostly about the fact that AT&T intentionally added a copyright notice in their otherwise empty program's comment block, in an era that predates the era of widespread availability of software and copyright wars. Which is honestly not really all that surprising.

<comment><USER8> > The article seems mostly about the fact that AT&T intentionally added a > copyright notice in their otherwise empty program's comment block, in an era > that predates the era of widespread availability of software and copyright > wars. Which is honestly not really all that surprising.

This page was likely written exactly because of the 'era of widespread availability of software and copyright wars' \- e.g. the statement:

"One of the fun examples among all the copyright fuss"

combined with the edit dates (90,93) seem to me to indicate this was written exactly as a response to the UCB vs USL suit..

[https://en.wikipedia.org/wiki/UNIX_System_Laboratories,_Inc....](https://en.wikipedia.org/wiki/UNIX_System_Laboratories,_Inc._v._Berkeley_Software_Design,_Inc).

as well as the 'unix wars'

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

</comment></comment><comment><USER23> There is essentially no downside to overclaiming, whether in copyrights or patents. Worst consequence is wasting several dozen bytes.

<comment><USER24> So you could say that the algorithm for "should I claim any given intellectual property right?" is the one implemented by /bin/true.

</comment></comment><comment><USER25> I recall last I looked at Solaris, it was far bigger than that. Microsoft was even in there (due to Xenix.)

</comment><comment><USER26> Random thought: it's pretty absurd to claim copyright on an empty program, but if this behavior was sufficiently innovative, could one patent an empty program?

<comment><USER5> Patentable subject matter under U.S. law consists exclusively of "any new and useful process, machine, manufacture, or composition of matter, or any new and useful improvement thereof". 35 USC 101. So, a program may implement a patented process or it may be a piece of a patented machine, but it won't be patentable in itself.

</comment></comment><comment><USER27> I love seeing pieces of history like this, thank you for sharing it.

</comment><comment><USER28> > I've pointed this out publicly on numerous occations, in various technical > forums, since the early 1980's. So far I haven't heard a word from any AT&T > lawyers. Anyone have any idea why they are ignoring such a violation?

Ah, one of _those_ people.

<comment><USER13> Imagine what a wonderful world it would be if someone took lawyers to task for every absurdity!

<comment><USER29> We'd have to do the same for developers. A program that does nothing is an absurdity. The equivalent function, `id`, is an absurdity. I'm sure I could think of more if I tried.

ninjedit: I understand that they are a logical consequence of a reasonable way of doing things; my point is that law is basically the same (you could argue that a law is unreasonable, but a seemingly absurd law is not prima facie unreasonable).</comment></comment></comment>


The Google Lorem Ipsum Phone - <AUTHOR> https://store.google.com/intl/en/lorem-ipsum/ <comment><USER2> I don't like this phone since lorem ipsum dolor sit amet, sed do eiusmod videus chatum incididunt ut labore et dolore magna aliqua.

Seriously, does it even support rutrum tellus pellentesque eu tortor lowlightena capturum nulla? Apple Iphone eget blurtutate bokehus at tellus at urna condimentum mattis pellentesque?

</comment><comment><USER3> Lorem ipsum dolor sit amet, ut labore et dolore and vitality, but some important things to do eiusmod video chats. Regional Chanel makeup football macro lowlightena no catch. Blurtutate Bokeham sauce pot but the earth but need a lot of beating.

Westinghouse smile at anyone, but that he hated Vulputate. And a lot of megapixels, but the court of the bed, but he wishes to longlasting batter.

</comment><comment><USER4> I found the mock latin with mobile words hilarious. Also, devices needs more checkers...</comment>


How to Start a Startup Lecture 2: Full Transcript - <AUTHOR> http://tech.genius.com/Sam-altman-lecture-2-ideas-products-teams-and-execution-part-ii-annotated

<comment><USER2> "As an example of how intense Brian Chesky is, he's the Airbnb CEO, he used to ask people if they would take the job if they got a medical diagnosis that they have one year left to life (sic)"

This is essentially asking - are you willing to lie to get this job.

<comment><USER3> Ideal gamed answer, both true and good enough to satisfy AirBnB: "no I would spend all my savings traveling around the world to exotic and unusual places, and hacking on open source projects as time and net access permitted."

</comment></comment><comment><USER4> I've never seen this before, but on the site it is wrapping lines mid-word. Here is how the first paragraph looks for me:

        Before I jump into today's lecture, I wanted to answer a few questio
        ns people had emailed me about the last lecture that we didn't hav
        e time for. So, if you have a question about what we covered last ti
        me, I am welcome to answer it now, starting with you.

<comment><USER5> Caused by the CSS rule word-break: break-all

"Word breaks may be inserted between any character"

<comment><USER6> Yep this is a problem with the CSS from embed.ly. I've already notified the engineers at Genius and I'm hoping they can get it fixed soon.

EDIT: also, because of some weird mixture of CSS rules, this is only a Firefox thing, so you might want to try chrome. Sorry about that!

EDIT2: Okay this should be fixed now! Thanks guys.

</comment></comment></comment><comment><USER7> I've marked lines I think need to be further analyzed; would be amazing if people dropped knowledge! e.g. [http://tech.genius.com/4101810](http://tech.genius.com/4101810)</comment>


Being everywhere is a killer feature - <AUTHOR> http://www.obsceneart.com/?p=27 <comment><USER2> Somebody discovers the value in positive network externalities...

More here:

<http://www.dedasys.com/articles/programming_language_economics.html>

</comment><comment><USER3> "I believe that a PHP application will initially get ten times the users of a Ruby On Rails application that does the same thing. I don't have numbers to back up this bold assertion, of course, but I'm pretty sure that's the way it will play out, unless and until Ruby On Rails is as pervasively available as PHP (which is unlikely to ever happen)."

I don't get it. A PHP library might get more developers using it, it might be faster, etc etc... by why would it get more users? that makes no sense. There's no user-level barrier to entry.

<comment><AUTHOR> The article is about installable applications, rather than hosted ones. I'll update that sentence to re-iterate that fact.

<comment><USER3> Ah. When I hear php or RoR I immediately think of hosted web apps. my bad.</comment></comment></comment>


WWDC 1997 Video: Steve Jobs Handles A Public Insult - <AUTHOR> http://mikecanex.wordpress.com/2011/06/08/wwdc-1997-video-steve-jobs-handles-a-public-insult/

<comment><USER2> Jobs talks about engineering management. Seems like the perfect explanation for what might be going wrong at other companies such as Microsoft, or even Google.</comment>


Patent troll on the verge of winning 1% of iPhone revenue - <AUTHOR> http://arstechnica.com/tech-policy/2014/06/apples-last-ditch-effort-to-dodge-a-368m-patent-verdict-has-backfired/ <comment><USER3> Have you guys looked at the patents in this case? They look thick and serious, but if you actually read the claims, you will soon realize that it's nothing but an obvious and straightforward procedure for deciding when and with whom to establish a VPN. None of these patents make sure that a VPN connection is more secure, more reliable, or in any way better.

Majority of the patent is explanation on how a VPN works, different mathematical explanations on how to generate random numbers, the theory behind secure communications. But none of that stuff is actually covered by the patent, so don't be impressed by it. What is covered is basically the straightforward and logical application of the explained VPN concepts, but the VPN concepts them selves are not patented.

I am not sure if the patent examiner of this patent was dazzled by the 50+ pages of VPN theory and just granted this thing. To me it's stunning! It's like filing a patent that in intricate detail explains how an automobile works and than sneaking in a claim that you invented that an automobile can be used to move personal belonging from place to place.

<comment><USER4> You mean they are just a little less baseless than the patent for 'rounded corners'?

<comment><USER5> Apple doesn't have a patent for rounded corners.

They have a design patent for the ornamental design of the iPad. Just like Google has design patents for the ornamental design of a smiley face, a usb cable, a "computer icon" etc etc. Just like Samsung has a design patent for the ornamental design of a "Terminal for portable mobile communication", which based on the images looks like a tablet.

In 1981 some company got a design patent for the ornamental design of a briefcase, with rounded corners.

Please stop talking shit.

<comment><USER6> D670,286 is, quite literally, a design patent on a rectangle with rounded corners (it's about the solid lines in the drawing). And they sued Samsung over it and Samsung was forced to make the rounded corners on the top and bottom of their phone different sizes. Despite the fact that multiple phones and tablets predated the iPad and iPhone and were rectangles with rounded corners.

<comment><USER5> They sued samsung over a number of combined similarities:

"Closely comparing Apple's patented design with Samsung's products reinforces the conclusion of substantial similarity. Samsung copied every major element of Apple's patented design:

* a flat, clear, black-colored, rectangular front surface with four evenly rounded corners [emphasis mine];

* an inset rectangular display screen centered on the front surface that leaves very narrow borders on either side of the display screen and substantial borders above and below the display screen; and

* a rounded, horizontal speaker slot centered on the front surface above the display screen,

* where the rectangular front surface is otherwise substantially free of ornamentation outside of an optional button area centrally located below the display."

<comment><USER6> And _ALL_ of that already existed in the marketplace before the iPhone. Heck, the things that are claimed to be unique in what you quote above is an almost exact description of the LG Prada which came out before the iPhone.

Seriously, look at this a moment: [http://i.imgur.com/iBD3A1z.jpg](http://i.imgur.com/iBD3A1z.jpg)

Remove the phone answer/end keys from the bottom row, and it basically is the front of the iPhone. Re-read what you wrote above and look at that picture of the LG Prada. That design patent should have never been issued.

<comment><USER5> Its not about whether those individual attributes existed already.

Samsung blatantly copied apple product designs, from the physical appearance of the device, to the design of the packaging right down to the design of the chargers and cables.

This is not speculation, it's fact.

I don't deny that most modern smartphones, including the iPhone, look __vaguely __similar to that LG. No way you would confuse them for the same product though.

Now look at this image: [http://i.imgur.com/TmUj2.jpg](http://i.imgur.com/TmUj2.jpg)

This isn't some case of "oh but Apple's design is obvious how can it not be the same?"

This is Samsung's business model.

Motorola RAZR (copied Samesung Blade) - even the name is a pun on the fact that its a copy (hint: razor blade)

Blackberry (copied as Samsung BlackJack) - again the even the name is a ridiculous rip off. This one went to court and funnily enough RIM won.

Samsung Innov8 (copied from Nokia N96)

In 2012 Samsung released their Chromebox, which copies the circular cover on the 2 year old MacMini. The MacMini has it there to allow RAM upgrades. The ChromeBox has no reason for it, besides copying the MacMini design.

In their advertising they have a history of either reproducing Apple ads (e.g. the way a phone and the earbuds are arranged). In one case, they literally photoshopped the iOS Google Maps app onto their own device.

Their "iRemote Control 4" is a ridiculously blatant copy of the iPhone 4

Do a quick search for "Dyson Samsung clone"

There is no question that Samsung copies it's competitors designs, packaging and advertising. Apple was granted a design patent and used that in its fight with Samsung.

Show me a case where Apple has used its design patent against a competitor that is not obviously trying to blatantly copy their devices?

<comment><USER3> The most obvious example of trying to copy the design is the charge cable of the galaxy tab. Apple's charge cable was ridiculously and unnecessarily wide, as is evident by the fact that later on they switched to the new design of the lightning cable. Samsung made their cable plug also very wide, and very similar that I personally, on one occasion have grabbed an off brand white Samsung cable, tried to shove it into my iPad, and was rather surprised when it did not fit.

Rather then looking at weather or not Samsung copied apple, let's look at the motivations. Because I believe that imitating someones design because you think its the best and the most practical way to do something should be perfectly ok. However, it is wrong to copy a design of your competitors in the hopes that consumers will confuse your product for your competitors. For instance, I would call BS on Apple arguing that a black rounded rectangle with rounded corners is somehow their design. It's just the most obvious and straightforward way of making an glass touch tablet. But then look at the power / sync cord. Can you justify that choice? No, there is no practical reason to make your cord look like that other than to make your product look more like an iPad.

They do say that imitation is the sincerest from of flattery, and I do tend to believe it, as long as the motivation is right. A company can look at the fact that iPads are doing really well in the market and tell it's designers and engineers: "Let's get a few of those iPads, play with them, figure out why people love them, and than make better one our selves, incorporating some of the features that we thing people really love about the iPad." I think that's what ASUS did with their Transformer line. They observed that a lot of people liked the simple and clean look of the iPad, and they made it even cleaner by removing all buttons. They also decided that people really want a option to have a keyboard on a tablet, as evidenced by the abundance of the keyboard cases for the iPad, so they added that function as well.

On the other hand, Samsung told its engineers: "Here is an iPad, copy it! No, don't bother figuring out why people like it, use those ideas, build on them, and maybe come up with something better. Just copy it. You see that idiotic, unnecessarily wide connector that only made any kind of sense when it was first installed in the original iPod, and not even then really. Copy that too."

So, to finish my thought, yes Apple is a bit bitchy when people copy their stuff. In case of most manufacturers I think they are wrong. In case of Samsung, I can see it, they copied Apple, and they did it for all the wrong reasons.

<comment><USER5> I think the complete unabashed copying is specifically why Apple sued Samsung.

Companies have been getting design patents on generic looking devices for years, this one just got a lot of attention because it actually ended up in court. If Samsung's devices were simply the same shape as the iPad but weren't otherwise so similar, Apple would have had no case to argue, (and probably never filed the lawsuit) and no one would care about this patent.

For reference, the 30 pin connector wasn't actually on the first iPod - it was introduced with the 3rd gen. Previously they used a full sized Firewire 400 (1394A) port on top next to the headphone port.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> At some point, the patent trolls will force software companies like Apple, Google, and IBM to admit to themselves that software patents themselves have no value and cause more bad than good.

So we need more of these patent trolls to win substantially more and more revenue from these companies, until the pain is so great that the big companies do something about it.

<comment><USER8> In this case I don't think this is a patent troll. They are an NPE but they aren't trying to bully small companies to settle out of court. If they win maybe more people will want to join the dark side and make large corporations pay. Maybe then they will put pressure on Congress to finally pass the bipartisan bill that Leahy and Harry Reid forced to be shelved.

<comment><USER9> Are patent trolls only patent trolls if they go after small businesses?

<comment><USER8> They are patent trolls if they push the business to settle out of court, which usually is only possible with small businesses.

<comment><USER10> A lot of patent suits are settled out of court. Look up the IBM/Sun case, or the Apple/Microsoft cross licensing deal. All settled out of court.

<comment><USER8> An NPE which pushes to settle out of court.

</comment></comment></comment></comment></comment></comment><comment><USER11> I don't know if it's fair to call VirnetX a "patent troll." They're an NPE, but there's no indication that they're abusing the process or trying to get a low-ball settlement just to avoid actually going to court. Furthermore, the patents aren't just something they churned out. The technology in question was developed by SAIC for the CIA. SAIC is a major defense contractor and R&D company: [http://www.washingtonpost.com/business/capitalbusiness/contr...](http://www.washingtonpost.com/business/capitalbusiness/contracting- giant-saic-takes-final-step-in-split-into-two-public- companies/2013/09/30/f9c95b74-277e-11e3-ad0d-b7c8d2a594b9_story.html).

Also, the inventor listed on the patents, Dr. Robert Short, who previously worked at SAIC, is CTO at VirnetX: [http://virnetx.com/company/executive- management](http://virnetx.com/company/executive-management) ("Dr. Short has been the Chief Scientist for VirnetX since May 2007 . . . . From February 2000 to April 2007, Dr. Short was Assistant Vice President and Division Manager at Science Applications International Corporation, or SAIC. . . . Dr. Short is named as a co-inventor on substantially all of the patents in the VirnetX patent portfolio.")

I haven't studied the patents in question and am not commenting on whether they're any good or not. But considering how much of the core internet technologies were developed by private defense contractors working for the government, it's not far-fetched that some of them would hold key patents.

<comment><USER12> If it was developed for the CIA, why aren't the resulting patents owned by the government?

<comment><USER13> It's not clear if _this particular_ "invention" was developed for CIA, but there are also different types of government contracts, some of which assign IP to the government, some of which do not.

<comment><USER14> [IANAL]

My understanding is that the US Federal government cannot be sued for patent infringement. If correct, there would be no value for it to acquire patent rights and if the technology was to be controlled, classifying the design would be better than filing patents.

<comment><USER15> 1) yes, you can sue the government or contractors fir patent infringement.

2) the government can issue secret patents

IANAL, but I was a government contractor for many years.

<comment><USER16> Secret patents that can be accessed by anyone with a high-enough classification?

It seems to defeat the original purpose of patents, which was to promote openness of inventions rather than secrecy.

</comment></comment></comment></comment></comment></comment><comment><USER17> In this overwhelmingly depressing article, I saw a ray of hope, an enchanting possibility .. a silver lining if you will:

> _Instead, two other mysterious companies came forward seeking to challenge > VirnetX 's patents. First was a shell company called New Bay Capital, which > filed an IPR and then reportedly asked VirnetX for 10 percent of its massive > jury award in exchange for backing off. New Bay dropped its case on April 4 > without getting any money—and without revealing who was behind the claim.

Then came RPX, a defensive patent aggregator that has become increasingly well-known, and increasingly profitable, in recent years. RPX works by selling memberships to companies that feel harangued by patent trolls, including Apple and many other tech companies._

How wonderful it would be if the ultimate demise of patent trolls was brought about by _other patent trolls_ :)

</comment><comment><USER18> At this point I honestly believe the only way the patent system gets any better is by becoming so overbearing that it collapses under its own weight. The lobbying machine in place to protect patents essentially as they are now (with maybe some token changes to look like progress) is way too big and way too strong for reform otherwise.

So in that sense, I'm happy about this.

<comment><USER19> That was my emotional reaction too, but my thought was different. I saw the article and thought, "Maybe if 2 or 3 more trolls win big against Google, Microsoft and GM or GE, we'll see some legislative action."

<comment><USER20> I remember RIM was nearly brought down with patent litigation. I expected some backlash since a lot of people in US government were affected by the potential outage.

Sadly nothing happened. Rim paid up I believe.

</comment></comment></comment><comment><USER21> I actually hope the trolls win.[0]

I believe that the current state of IP law does far more to stifle innovation than to support it, and I fear that it will only change when sufficient monied interests become inclined to support a change.

Put another way, I believe change will come when the juggernauts like Apple stand to lose more than they gain from the current state of the law. Until then, I suspect that the status quo will continue.

[0] Others have made similar arguments, including Mark Cuban in re: Yahoo's patent suit vs. Facebook: [http://blogmaverick.com/2012/03/13/i-hope-yahoo- crushes-face...](http://blogmaverick.com/2012/03/13/i-hope-yahoo-crushes- facebook-in-its-patent-suit/)

</comment><comment><USER22> > The patents (1, 2, 3, 4) originated at a company called Science Applications > International Corporation, or SAIC; they are now owned by VirnetX.

It's worth mentioning that SAIC is not a lightweight. It is a large government contractor with $4 billion in annual revenue.

</comment><comment><USER23> On a mobile device, so can't research much, but a couple of things:

1) The claims are incredibly broad, and I'm surprised they have held up so far. Many such patents issued back then (it happens much more rarely these days) but even by those standards this is broad. Without indulging too much in the sin of simplifying claims, they basically cover detecting if a server supports secure connections, and if so, establishing a VPN instead of a normal connection. One of the patents covers a DNS server which indicates whether a server supports secure connections.

2) One of the comments on TFA, which is significant if true (would be good if someone could verify):

 _> If you read through the court docs, the actual royalty imposed was 0.52%. It was Apple's various shenanigans and lies (partial and outright) to the court that prompted additional penalties up to a 0.98% rate._

Similar things have happened in the past, e.g. In i4i, where a Microsoft lawyer was sanctioned for insisting plaintiff was a patent troll. However, in that case the lawyer paid the price rather than the company as a whole. In any case, even 0.52% is incredibly high a single minor feature. I guess the lesson here is clear: don't piss off the court.

</comment><comment><USER24> We shouldn't blame patent trolls for acting the way they do in the same way that we shouldn't blame banks and stockbrokers for acting the way they do.

If there is big money to be made, and it's legal, _somebody_ is going to do it - and if it's not you, well, your loss.

This is, and always has been, a problem of _bad legislation_. It is a structural problem in _the system_. The human race would save so much time, money, and energy if it tackled problems at their root instead of dossing around in the details, oblivious to the actual issue.

<comment><USER25> This line always comes out, for some reason, regarding patents. In other discussions we get completely different logic - eg: people get terribly riled up about whether Google is "evil" or not and it is rarely connected to whether it's legal or not.

The ultimate with your logic is that it would call for massive legislation to cover every facet of our lives - everything bad must be made illegal, otherwise nobody can even be criticised for doing it. I don't want to live in a world like that. Laws are far too crude for that, they can only work at extremes where it is clear you can put down a blanket rule. In between, people and companies behaving badly should be held to account through criticism and public pressure. We should expect companies to behave honorably and ethically and criticise them heavily when they don't.

<comment><USER26> Google gets grief over being "evil" because they publicly claimed not to be, and got a lot of popularity and goodwill in the marketplace as a result. When people get "riled up" about Google, they are threatening to take away that popularity and goodwill, that's all. It's not the same thing.

Also, what makes you think we don't already _have_ "massive legislation to cover every facet of our lives"? Have you ever heard of the book "Three Felonies a Day"?

</comment></comment></comment><comment><USER27> If VirnetX were on the verge of winning 1% of iPhone revenue, their stock price would reflect it. However, it does not.

[https://www.google.com/finance?q=NYSEMKT%3AVHC&ei=h-WTU4DYNs...](https://www.google.com/finance?q=NYSEMKT%3AVHC&ei=h-WTU4DYNs_TqAGN_4DQCA)

VirnetX's market cap is $850 million, which would be a very steep discount if the company were "on the verge" of being paid $340 million/year from Apple.

<comment><USER28> Good catch, will be interesting to see how this plays out. I tend to believe indicators like this over news reports.

</comment></comment><comment><USER29> The real problem is that patents have become an intellectual land grab, no matter how obvious, whether or not violators were even aware of the patents, and whether or not the patenting company has any interest whatsoever is using the patent in an actual product. The majority of inventions are not strokes of genius - when the time is right, ideas emerge naturally and tend to be invented by multiple people around the same time.

</comment><comment><USER30> Could someone explain what the thing with East Texas is?

A district where juries and judges are more favorable than usual towards patents? This sound kind-of ridiculous, no? Can't the defending companies find similar anti-patent areas and file counter-suites there?

<comment><USER31> > Could someone explain what the thing with East Texas is? A district where > juries and judges are more favorable than usual towards patents?

It started a bit randomly, based on the politics of the region the judges/juries were slightly more favorable toward patents than anywhere else. Then it became self perpetuating since it helps the local economy & the judges own careers.

> This sound kind-of ridiculous, no?

Absolutely ridiculous. Patents are federal law, but 1 small region is effectively making serious changes to that legislation.

> Can't the defending companies find similar anti-patent areas and file > counter-suites there?

They do. There are a range of locations, never in east texas. No one place has emerged as THE anti-patent location. For example, Microsoft files suit in Seattle since it's based there, has influence, people want it to win since it's a benefit to their local economy, etc.

</comment></comment><comment><USER32> The core of the issue (if any) is that historically, the patent system is inextricably tied into the free-market/laissez-faire economic system, which for all its flaws, did create the world as we know it for the last ~ 200 to 300 years which led to an exponential rise in technological development - <USER2> unique phase started in the Western world, where now some of the 'successful and well-developed' countries in the Eastern world (e.g. Japan, South Korea, Singapore) have incorporated into their respective systems.

From Stallman's article which did show up here:

[https://www.gnu.org/philosophy/not- ipr.html](https://www.gnu.org/philosophy/not-ipr.html)

"Patent law was intended to promote the publication of useful ideas, at the price of giving the one who publishes an idea a temporary monopoly over it—a price that may be worth paying in some fields and not in others."

The real question is does _all_ software patents come in the last part of the aforesaid sentence: ".....—a price that may be worth paying in some fields and not in others."

A knee-jerk reaction to throw out the baby out with the bathwater by abolishing the whole patent system may not be the right solution here.

<comment><USER33> > A knee-jerk reaction to throw out the baby out with the bathwater by > abolishing the whole patent system may not be the right solution here.

To further that analogy, if that bathwater is a toxic brew with, at least in the software industry, a serious chilling effect on innovation and enterprise is that really a bathwater the baby should be in?

If you can point out to me more success stories because of software patents than nightmare scenarios like the above and the X-Plane saga, then I might agree. But as it stands, the biggest success story, Uniloc, that's relevant to Australia, which is where I am, makes me just pissed off.

<comment><USER32> Sorry to get back too late for the response as I hadn't seen it earlier.

I do agree that the patent system as it is applied to software (and possibly other areas too like biotechnology) needs to be reformed. I am not defending the status quo but just pointing out that people who argue for abolishing the whole system needs to first understand its historical role before taking a drastic action.

At the risk of over-simplifying, there is a tussle between 'software as a collection of algorithms which in turn are defined as a special class of mathematics' which is not patentable, vs software as a 'product' that provides useful functions which is in-line with how patents have been applied in other areas. Things get a little more complicated with 'process patents' as applied to software.

It is hard to draw a fine line here and I don't claim to have any answers except looking at each case individually and deciding to apply it, sort of like the early definition of art vs porn: "I know it when I see it" (or something to that effect).

Even if you were to grant a expansive protection for functional cases or business methods (implemented by the software), you will still have ridiculous ones like the 'Amazon one-click patent'.

Regarding examples of 'success stories', I am not sure if these apply but the entire model of software business was driven on licenses during its critical growth period in the 1980s. One example is the core functionality of Excel which is probably one of the most successful software ever built:

[http://www.google.co.in/patents/US5272628](http://www.google.co.in/patents/US5272628)

Even Google's core search ranking algorithm was patented:

[https://www.google.com/patents/US6285999](https://www.google.com/patents/US6285999)

I should leave with this comment from PG:

[http://www.paulgraham.com/softwarepatents.html](http://www.paulgraham.com/softwarepatents.html)

"Frankly, it surprises me how small a role patents play in the software business. It's kind of ironic, considering all the dire things experts say about software patents stifling innovation, but when one looks closely at the software business, the most striking thing is how little patents seem to matter."

</comment></comment></comment><comment><USER34> If this happens, then maybe Apple will get behind real patent reform.

<comment><USER35> You mean, like they publicly stated they would when the Googlrola Android lawsuits were settled just recently?

<comment><USER6> Lip service from the company that patented a rectangle with rounded corners (D670,286).

</comment></comment></comment><comment><USER36> Could someone explain to me how companies are suppose to avoid infringing on patents?

With a device as complicated as a smartphone it's inevitable that someone holds the patents for numerous parts of the device and the software.

Is there a lawyer that is supposed to check out every single aspect of a device and check for prior patents? If so, then shouldn't the lawyer be responsible in this instance?

Note: I personally don't care if Apple loses patent cases, they've done enough damage with their own frivolous patent lawsuits.

</comment><comment><USER37> The fact that this is being heard in court and the patent holder is winning means, according to my definition, they aren't patent trolls.

I define "patent troll" as an entity that has a sliver of a chance of winning, but 100% chance that they will impose high costs on the defendant at little cost to themselves. They use this assymetry as a form of legal extortion. They limit their downside by holding few assets aside from the patent.

EDIT: I am in no way commenting on the merit of the case or the 1% figure.

<comment><USER38> The "definition" of a patent troll (per google search):

"A patent troll, also called a patent assertion entity, is a person or company who enforces patent rights against accused infringers in an attempt to collect licensing fees, but does not manufacture products or supply services based upon the patents in question."

This is always the definition that I understood.

<comment><USER39> So sort of like Universities?

<comment><USER40> _Some_ universities are absolutely on the list of most aggressive and abusive patent trolls. _Some_ universities are also among those fighting hardest to keep the status quo in place so they can continue to harm the US economy with frivolous patents and milk a broken system.

<comment><USER39> Yes! We need to get rid of those fat cats in Washington! LULZ.

</comment></comment></comment></comment></comment><comment><USER41> There will be great irony if Apple complains about patent reform after this.

<comment><USER42> Live by the sword, die by the sword. It won't come that far, but Apple certainly has no leg to stand on when it comes to spurious patent claims. Given the size of their war chest, legal department and political clout (reaching as far as the current president of the US, it seems) they'd have a good chance at instigating effective patent reform. Now all that is needed it the will to do so.

</comment></comment><comment><USER43> If patents are in any way good (bullshit, but assume true for now) then I'm ok with this. Why can one person own imaginary property and another cannot? If Amazon can one-click some bullshit, why cannot someone else have exclusive rights to another idea?

</comment><comment><USER44> Good. When the big companies have to pay real money, they'll fix the software patents problem.

</comment><comment><USER45> Well, at least they are hitting _other_ (albeit larger) patent trolls... Karma!

</comment><comment><USER46> What? Apple already get more than 1% of iPhone revenue!

</comment><comment><USER47> Read "Patient troll on The Verge, winning 1% of iPone revenue"

</comment><comment><USER48> This is a good illustration for Karma, or "what goes around, comes around". Apple have only paid lip service (at best) to patent reform, so now there might be some serious consequences to that decision.

</comment><comment><USER49> what goes around comes back around - Justin Timberlake</comment>


Why and how the Cryptobubble will burst - <AUTHOR> https://medium.com/@dennyk/why-and-how-the-cryptobubble-will-burst-de9bc7fc5332 <comment><USER2> Great post. Essentially the IPO disaster of the dot.com era is now the "ICO disaster". But it still means success in the long term (so think 15 years out).</comment>


The History of the Handshake - <AUTHOR> http://www.penelopejcorfield.co.uk/discussion-point.htm

<comment><USER2> I wish shaking hands would go away in the modern office. There are still a significant number of people who dodge soap and sometimes even water when they leave the bathroom, then go on to shake a whole load of hands. I have found senior people some of the worst.

Don't get me started on people who mine their ears and nose for nuggets of horribleness, then flick, and go onto shake hands.

</comment><comment><USER3> Interesting. I wonder if the current Ebola outbreak is going to lead to major, lasting changes in how people greet each other.

E.g. Liberia loses its handshake: [http://m.bbc.co.uk/news/world- africa-29260185](http://m.bbc.co.uk/news/world-africa-29260185)

<comment><USER4> Supposedly one of the reasons that Mussolini preferred the old Roman salute was that he had a thing about handshakes and germs.

</comment></comment><comment><USER5> I thought this was going to be about a different kind of handshaking[0], still interesting nonetheless.

0.[http://en.wikipedia.org/wiki/Handshaking](http://en.wikipedia.org/wiki/Handshaking)</comment>


Chrome & Safari Claim Facebook May Be a Phishing Site  - <AUTHOR> http://www.techcrunch.com/2008/12/03/google-chrome-claims-facebook-may-be-a-phishing-site/

<comment><AUTHOR> Can anyone tell me the benefits of using fbcdn.com instead of cdn.facebook.com? I've seen a lot of sites using secondary domain names to control their CDN and wasn't sure the benefits of that or the inefficiencies of just using sub-domains.

<comment><USER2> This is not my area of expertise so this may be 100% wrong, but my understanding is that the separate domain is pointed at a completely different DNS entry where as a subdomain still uses the same DNS and is routed per the subdomain.</comment></comment>


Show HN: newsola - top news stories at a glance - <AUTHOR> http://www.newsola.com <comment><USER2> Was instantly reminded of this: <http://newsmap.jp/>

<comment><USER3> Seems to be a very direct clone, down to the colours, but using a different back-end system.

<comment><USER4> It's a different front-end too (JS instead of Flash). But the author not even mentioning Newsmap in the about is low.

<comment><AUTHOR> You're right, that was an error on my part. I have added a new comment.

</comment></comment></comment></comment><comment><USER5> My first few reactions were "why can't I X" only to discover I could in fact X: Select my country, eliminate categories, etc. The only thing left is to perhaps rearrange the categories (business, then national, then world, e.g., but that's a quibble).

Zooming the page increases/decreases the number of stories per category, which is quite cool (if perhaps counter-intuitive, but OK). But would it be possible to have an absolute "no smaller than" minimum size for the menu? (I've zoomed in a few times via "ctrl -" and the menu bar is now unreadably small.)

On a related note, as I zoom in, I get more stories, but the font for existing stories remains the same as before the zoom, with their blocks occupying roughly the same amount of screen space as before the zoom; this means that newly added stories are in tiny blocks and tiny fonts: as I zoom, new stories become unreadably small.

It would be good to have an absolute "no smaller than" minimum for newly added stories as well, scaling down the size of existing stories; I'm OK with different font sizes for relative importance, but existing stories should decrease in size to accommodate new stories as I zoom to add more.

EDIT -- It would also be nice to be able to close particular boxes (display an X in the top right corner when I hover there?) and have that story replaced with another from that category.

(And it would be waaaay cool if there was some way to mark stories as seen and to not display them again... ...when I revisit the page, I only see things new since the last time, or not displayed the last time. That way, the page is always new. No idea how to do this without a server/account on your end, but it could be cool....)

Cool app. I am adding it to my regularly checked folder of news sites.

<comment><AUTHOR> I had not considered zoom functionality at all. I'm not sure that it's possible to specify that an element shouldn't be resized (the menu), I'll have to investigate.

Your suggestions are great, I will try to implement them, thanks.

<comment><USER5> The more I use newsola, the more I like it. Do you have a donation page? I will gladly cough up $$ for features I like.

I'd like to be able to get the unique union of two feeds, i.e., the union of

www.newsola.com/#/ca/tc

and

www.newsola.com/#/us/tc

without any duplicates.

That way, I would have three bookmarks:

<http://www.newsola.com/#/ca/w,n,b> \- my default Canada-centric news page

<http://www.newsola.com/#/ca/tc/UNION/#/us/tc> \- for tech

www.newsola.com/#/ca/s/PLUS/#/ca/e/UNION/#/us/e - for sports and entertainment (emphasis on CDN sport, i.e., more hockey, less baseball, with US and CA entertainment - in fact, I could add Britain too, e.g., to keep up with Blake's 7 and Red Dwarf news).

Make any sense? Not sure how this might work, but I'll play PHB and throw impossible features at you as a challenge! :->

(I'm not sure why "Romney, Santorum battle in Michigan" is such a large business item in my CA/B feed, but OK, I can live with that... :->)

<comment><AUTHOR> Combining multiple countries shouldn't be a problem, but I'll have to modify the UI a bit.

Sports subcategories I've looked at as well, but it starts to get messy and I wanted to keep everything simple.

I don't think I could accept donations, but I'll try to add those features when I have time!

Thanks

</comment></comment></comment></comment><comment><AUTHOR> I should mention that this is essentially a clone of the excellent NewsMap (www.newsmap.jp), but written in JS instead of Flash.

</comment><comment><USER6> Looks nice, I would recommend it to my friends for a quick glance of news. But I would like to bring the attention of the author to the comment of nuttendorfer. The two sites seem very similar and you should either mention it somewhere, or try to differentiate yours in the design part

<comment><AUTHOR> I have added a comment reflecting this.

</comment></comment><comment><USER7> i like the design - i don't think the animation adds much though. For all the stuff that's going on in the world and how the other aggregators behave, i think that just 5-6 stories showing up is not enough when I click sometimes. Your categories are a little weak "Lin" shows up in news of the World, Apple shows up in National. Keep tweaking - there is definitely room for a better news aggregator and being able to easily switch to other national editions is great!

</comment><comment><USER8> How do you decide which stories are more important? Would be interesting if you let users curate and present their own newsola frontpages.

<comment><AUTHOR> The stories are taken from Google News who themselves aggregrate stories from news sources. The "importance" is defined by the number of media outlets covering a particular story.

</comment></comment><comment><USER9> I'd like it more if apple-mobile-web-app-capable was set. But nice work!

<comment><AUTHOR> I experimented with that, but if you click a link from the "app" it loads the browser, with no easy way back to the app.

</comment></comment><comment><AUTHOR> Should work cross browser / device. Any comments would be welcomed.

</comment><comment><USER10> On iPhone, when I click about, the contact section is cut off.

</comment><comment><USER11> Colorful!

</comment><comment><USER12> Looks awesome. How are you seeding the stories?

<comment><AUTHOR> They are taken from the Google News RSS feeds.

<comment><USER5> Any chance of integrating the "Top Stories" section?

<comment><AUTHOR> Indeed - it is on my todo list.</comment></comment></comment></comment>


Paul Graham's Participatory Narcissism (2008) - <AUTHOR> http://blog.codinghorror.com/paul-grahams-participatory-narcissism/

<comment><USER2> Needs a [2008] in the title. I remember the original discussion this engendered, and while I disagreed with the PG article in question, the title is needlessly inflammatory.

</comment><comment><USER3> I would argue that the 'blub programmer' concept so beloved on HN indicates that HN is populated by participating narcissists.</comment>