Sorry, I don't have any links to share off hand. But I do have some comments:
Of course we all have to deal with state, otherwise our programs are essentially useless.
As a casual FP practitioner, I try to make web-based design decisions that minimize the number of places where I handle state. The majority of the functions that I write just take values and return some referentially transparent transformation of their inputs.
So for me it's really more about black-boxing and forgetting (once it's thoroughly tested) about 90% of my code, thus hopefully limiting the scope of my state related wtf moments to the other 10%.
There was a time in my life where I thought that this sort of design was obvious and everybody was doing it. I've since learned, through lots of painful maintenance and debugging, that this is not at all the case :/
Sure, I agree that that's the proper, academic, and purely functional way to handle state. Whether or not that introduces its own set of problems I'll leave as a thought exercise for the reader.
The key phrase in my comment was "casual FP practitioner." I'd only hoped to show OP a way to painlessly introduce some principles from the FP world , ones with, IMO, real and immediately obvious benefits, without cramming "monads and combinators and category theory oh my!" down his or her throat.
I tend to prefer simple, dumb, readable code to academic elegance, and I've found that treating data as immutable (whether it actually is or not under the covers) and preferring data transformation to state manipulation are two ways to get closer to that goal.
Doesn't the simple act of accepting a (free or otherwise) license from someone imply that that you accept their right to grant said license?
Both parties I'm sure are aware of this; it's simply posturing on FlightPrep's part with the hope that RunwayFinder will be dumb enough to accept it and thereby lose in the long run.
The classic case of a license in common law is permission to enter someone's property. Consider this case:
Me, opening the door to my apartment: Oh shit! There's a burglar in my living room!
Burglar: I'm not a burglar! This is my apartment! I've owned it for ten years.
Me: This isn't your apartment! It's my apartment! I bought it from Hugo López last year!
Burglar: Hold on a second. As long as you don't lay your hands on me, I'll allow you to remain in this living room to discuss this with me, but López never actually owned this apartment. He rented it from me for a while, but I evicted him five years ago for not paying rent. It was a fraudulent sale.
Me: Really? Shit. Listen, are you armed?
Burglar: No. Does this catsuit look like it has space for a gun? [Holds up hands, turns 360°]
Me: I guess not. I'm still calling the police.
Burglar: Go ahead.
Me: [pulls out cellphone and starts dialing]
Now, the burglar has granted me a license to remain on what he claims is his property. He could still be a burglar hoping to fool me long enough to get away, or he could be telling the truth and be the legal owner of the place, or in fact he could be telling the truth but López might have become the legal owner of the place through adverse possession, but in none of these cases am I accepting his claim and ceding the property to him simply by remaining in my own living room, or by not bodily throwing him out.
But if RunwayFinder intends to attack the validity of the patent by claiming obviousness or something similar, I see the analogy as more like:
me: This was no-one's apartment when I got here. There are thousands like it, in fact an infinite supply. Get your own.
burglar: Well, we'll work that out in court. In fact I own all of them.
me: No, it was public land and I just built my apartment here.
burglar: Well, how about you sign this lease. Just put your John Hancock here, and I won't give you any trouble about staying here. I won't even charge you any rent this month.
With the above dialog, doesn't the signing of the lease imply an acceptance of the burglars ownership of not only this apartment but all of these apartments?
I am not a lawyer, obviously, just someone who likes analogies.
If you have to sign something, it's probably a contract, not a license. It might turn out to be an invalid contract if you're already entitled to what the burglar offers you.
Analogies to real property are problematic because of the excludable and rival nature of real property.
I think different standards apply because there's a rather significant difference in the urgency between a dispute about an intruder in one's living quarters and a patent or intellectual property lawsuit. It looks like RunwayFinder is not even trying to dispute the case and is giving up pre-emptively because they don't have the funds to fight the case.
Accepting a temporary license to postpone the lawsuit does not sound smart to me, it sounds like a ploy to allow RunwayFinder to stay online longer while FlightPrep continues to pursue licensing agreements (which the owner has no ability to pay) or legal allegations that will result in additional damages as well as an admission of the validity of the patent. But I guess now we'll just have to wait for someone who knows what they're talking about to correct one or both of us. :)
The biggest new features in SDK3.1 were related to video, the rest were minor additions. A lot of developers target 3.1 accidently though because it's the default.
Of course we all have to deal with state, otherwise our programs are essentially useless.
As a casual FP practitioner, I try to make web-based design decisions that minimize the number of places where I handle state. The majority of the functions that I write just take values and return some referentially transparent transformation of their inputs.
So for me it's really more about black-boxing and forgetting (once it's thoroughly tested) about 90% of my code, thus hopefully limiting the scope of my state related wtf moments to the other 10%.
There was a time in my life where I thought that this sort of design was obvious and everybody was doing it. I've since learned, through lots of painful maintenance and debugging, that this is not at all the case :/