Le 2010-11-16 à 19:43, Chuck Hill a écrit : > On Nov 15, 2010, at 8:43 PM, Ian Joyner wrote: >> On 16 Nov 2010, at 14:52, Chuck Hill wrote: >>> On Nov 15, 2010, at 6:51 PM, Ian Joyner wrote: >>> >>>> That's a good distinction about quickly. Seems most get a kick from the >>>> first learning of something to get it quickly happening. Hence >>>> lowest-common-denominator languages like BASIC become popular. It's good >>>> to get people into things quickly, as long as they get the intellectual >>>> impetus to learn something better. But often these languages are treated >>>> with scorn and derision as teaching languages or moralistic in some way >>>> because people don't understand why more complex solutions are needed as >>>> the problems "scale up". >>>> >>>> There was an interesting viewpoint article in Communications ACM recently >>>> by Ben-Ari about "Objects Never, well hardly ever", where he advocated >>>> teaching procedural programming before OO. But I think it's the same thing >>>> as we teach kids variables and assignments and how to crash programs >>>> because "that's exciting", rather than techniques like functional >>>> programming because that requires more reasoning. >>>> >>>> So while WO might be better for complex applications, perhaps WO hasn't >>>> addressed the entry level enough so that people get their "hit" early of >>>> seeing something working. While WOnder added a lot of stuff that was >>>> needed to keep WO up-to-date, it made entry level even more difficult. >>> >>> I don't know that it did. I think what has made the entry level more >>> difficult is the lack of printed material and a tutorial. >> >> Yes, I think I had a gripe about that a month ago or so. All Apple's pages >> say is "Legacy Document". > > Yes and not likely to change. > > >> What happened to Janine's tutorial. > > She is starting to revive it. In-between bouts of life. > > >> Yes, you need a Hello World example you can get going in five minutes >> (including installing the software). (Although, about 7 years ago I had >> terrible trouble getting Heelo World to work because I had a space in the >> project name "Hello World". These little things are killers. Most of our >> students used Django this year, rather than RoR because RoR was a pain to >> install, particularly on Windows (even on a Mac if you don't have Xcode >> installed). >> >> One student in his experience report mentioned that professional programmers >> should spend extra time on making their stuff usable and easily installable >> if they are going to expect people to use their systems. Salient advice all >> around and I think he scored 100%. > > I think an important distinction here is between "expect people to use their > systems" and "allow people to use their systems". Wonder largely falls in > the second category. "I made this because I found it interesting and you can > use it if you want." Neither WO nor Wonder are now marketed products and > there is little incentive to make them appear like they are.
Wonder was marketed in the past?? > > >>> Before, you could follow the Apple tutorial and get something working >>> fairly quickly and in an understandable form. The problem was that it was >>> poor code and had a number of unmentioned bugs in it. To a large part, >>> using Wonder at the same level (vs trying to understand what it is doing or >>> fixing a problem) reduces the number of potential problem and occasions to >>> pick up poor coding practices. At present there is no good tutorial or >>> introductory level documentation. If there was, a much higher quality >>> application could be built more quickly than without. >> >> Yes, there should be a core and then add more complex, specific >> technologies, so you can go in any particular direction as needed. >>> >>> WO has become a series of learning cliffs: first WO proper, then Wonder, >>> then D2W, then the outlying parts of Wonder, then ERRest, then... >>> WebObjects all in is HUGE. Add poorly or inconsistently documented to that >>> and learning it is a problem we still struggle with. There is too much >>> legacy technology for a volunteer community to deal with. >> >> Jobs has always been good at taking a mess and rationalising it, but I think >> for WO, there is nothing forcing Apple to do it. > > > Nor any incentive to do so. > > >> Another Barton quote (about FORTRAN in 1963): "a user-cult formed which is >> now quite effectively hampering progress in the adoption of improved >> scientific languages." > > :-) > > > Chuck > > > >>>> I like Bob Barton's quote (via Alan Kay I think) that "Systems programmers >>>> are high priests of a low cult." >>>> >>>> Ian >>>> >>>> On 16 Nov 2010, at 13:29, Mike Schrag wrote: >>>> >>>>> I think "quickly" has two interpretations ... There's "quickly from >>>>> knowing nothing about the technology and starting an app from scratch" >>>>> and there's "quickly from understanding the technology and starting an >>>>> app from scratch." If you interpret "quickly" as not knowing anything at >>>>> ALL, it's probably faster to bootstrap a rails app. If you interpret >>>>> "quickly" as understanding WO and just starting a new app from scratch, >>>>> there are a lot of classes of apps that you can produce faster as a WO >>>>> app. >>>>> >>>>> Of course, the sad reality is that our industry loves to just >>>>> syntactically masturbate with different languages and pretend that we're >>>>> much better for it when the reality is that basically nothing has changed >>>>> in 30 years in terms of how we actually solve problems. >>>>> >>>>> ms >>>>> >>>>> On Nov 15, 2010, at 8:50 PM, Ian Joyner wrote: >>>>> >>>>>> I agree with this too. Problem or fixed complexity must be dealt with >>>>>> somewhere in the system, and arguments often abound as to where that >>>>>> should be done (almost always without people recognizing that fact). I >>>>>> wrote on that recently too: >>>>>> >>>>>> http://www.ianjoyner.name/Ian_Joyner/Complexity.html >>>>>> >>>>>> so am in vehement agreement. >>>>>> >>>>>> It's always a problem getting something to run quickly, like Twitter, to >>>>>> see if it succeeds or fails, before committing significant resources, >>>>>> and then like Twitter maybe rewriting your message queues in Scala for >>>>>> speed. (Something done by WO, I think?) >>>>>> >>>>>> But getting something quickly done in WO, might be a problem. Pascal's >>>>>> words about "learning cliff" still ring in my ears ;-) >>>>>> >>>>>> Ian >>>>>> >>>>>> On 16 Nov 2010, at 12:20, Mike Schrag wrote: >>>>>> >>>>>>> I think you also have to weigh the dramatically more complex security >>>>>>> and protocol required to handle state on the client. You get a huge >>>>>>> amount for free with WO in terms of state transition management that >>>>>>> you have to build yourself if you use almost any other system. You also >>>>>>> get a large amount for free with WO with respect to security because >>>>>>> you can count on "that you called this action means you were allowed to >>>>>>> see this action," whereas a traditional restful system requires >>>>>>> security enforcement for every action. Also consider that your site >>>>>>> isn't iTunes, Google, or Twitter. Most applications don't have to scale >>>>>>> all that much, and almost certainly are within the realm of a few >>>>>>> servers and dumping ram into your box. >>>>>>> >>>>>>> I also don't care what tools and frameworks you built your system with. >>>>>>> If you DO become iTunes, Google, or Twitter, your app won't scale. >>>>>>> Period. I've never seen a system that scales without investing >>>>>>> substantial engineering effort in profiling and rearchitecture after >>>>>>> deployment. If you built your app with rest, all you're doing is >>>>>>> shifting your load in other ways. Like Chuck said, you get a lot of >>>>>>> caching for free with WO that you have to figure out how to get back >>>>>>> with stateless architectures. And the most common method? Shared object >>>>>>> caches -- Memcached, Coherence, etc. WO/EOF essentially has this >>>>>>> architecture (on the persistence side), but with local caches in the >>>>>>> snapshot cache that serve whatever sessions you send to it. With a >>>>>>> little bit of work with sharding your users, you can take advantage of >>>>>>> that by routing users to appropriate instances. >>>>>>> >>>>>>> The moral of the story is that every technology sucks, so you might as >>>>>>> well just build it fast so it can suck in production faster and you can >>>>>>> move on with your life. >>>>>>> >>>>>>> ms >>>>>>> >>>>>>> On Nov 15, 2010, at 8:02 PM, Chuck Hill wrote: >>>>>>> >>>>>>>> >>>>>>>> On Nov 15, 2010, at 4:53 PM, Ian Joyner wrote: >>>>>>>> >>>>>>>>> On 16 Nov 2010, at 11:35, David LeBer wrote: >>>>>>>>> >>>>>>>>>> >>>>>>>>>> On 2010-11-15, at 7:09 PM, Ian Joyner wrote: >>>>>>>>>> >>>>>>>>>>> (Not that I'm doing any WO these days, but I still like to follow.) >>>>>>>>>>> >>>>>>>>>>> One thing that has always worried me about scalability is keeping >>>>>>>>>>> the per user "application state" on the server in WOSession. >>>>>>>>>>> Knowing more about REST now, this is very unrestful and not >>>>>>>>>>> stateless, which means will not scale. >>>>>>>>>> >>>>>>>>>> I don't see why something being unrestful and not stateless >>>>>>>>>> automatically equates to not being able to scale. Perhaps you could >>>>>>>>>> explain. >>>>>>>>> >>>>>>>>> The problem is that once you get 1000s and millions of users you have >>>>>>>>> the problem of memory size storing all that session information in >>>>>>>>> memory on the server. >>>>>>>> >>>>>>>> As with any system, the number of concurrent users that can be handled >>>>>>>> on a given server depends on both the application and the technology >>>>>>>> that it is built on. I will grant you that WO probably uses more >>>>>>>> memory per user than many technologies. But memory usage is only one >>>>>>>> part of the equation. >>>>>>>> >>>>>>>> >>>>>>>>> Server must also manage all these sessions - clean them out every so >>>>>>>>> often. And (in middleware systems I worked on in the 80s) keep track >>>>>>>>> of state transitions with FSMs, etc. >>>>>>>>> >>>>>>>>> Yes you need session state, ie context, but it should be kept on the >>>>>>>>> client, which sends it along with each request. Thus user state is >>>>>>>>> kept only on the client which makes recoverability easier too, >>>>>>>>> because if the server is rebooted, client can continue oblivious to >>>>>>>>> any problem. >>>>>>>> >>>>>>>> Yes, recoverability is a nice to have feature, but really how often is >>>>>>>> it actually needed? Restarts should be planned with the instances >>>>>>>> being set to Refuse New Sessions so that there are no active sessions >>>>>>>> on a machine when it is rebooted. So recoverability is only strictly >>>>>>>> needed for accidental restarts, kernel panics and such. >>>>>>>> >>>>>>>> The problem with keeping the WO state on the client is that WO keeps a >>>>>>>> LOT of state (EO, changed attributes, page cache, etc). You would >>>>>>>> need to have a finely tuned way of getting that back and forth from >>>>>>>> the client, otherwise performance would suffer mightily. >>>>>>>> >>>>>>>> Chuck >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>>> >>>>>>>>>>> How is this problem dealt with these days? WOnder? >>>>>>>>>>> >>>>>>>>>>> Thanks >>>>>>>>>>> Ian >>>>>>>>>>> >>>>>>>>>>> On 16 Nov 2010, at 03:43, Greg Lappen wrote: >>>>>>>>>>> >>>>>>>>>>>> Hi everyone, >>>>>>>>>>>> >>>>>>>>>>>> Based on using WO for the last 7 years, I have observed a couple >>>>>>>>>>>> of things that seem to be a performance bottleneck in WebObjects. >>>>>>>>>>>> I know that Apple uses WebObjects on a large scale for iTunes and >>>>>>>>>>>> ecommerce, so there must be solutions to these. >>>>>>>>>>>> >>>>>>>>>>>> #1 - Only one thread can be processing at once. I seem to recall >>>>>>>>>>>> that this is a limit in EnterpriseObjects but it's been a while. >>>>>>>>>>>> >>>>>>>>>>>> #2 - EnterpriseObjects caches every object from the database. >>>>>>>>>>>> >>>>>>>>>>>> With that being said, how can you horizontally scale your >>>>>>>>>>>> application layer? If you setup more instances of your app, they >>>>>>>>>>>> each have their own caches, which will be out of sync with each >>>>>>>>>>>> other. Is there a commonly used framework for doing distributed >>>>>>>>>>>> cache management? And is it possible to make your applications >>>>>>>>>>>> multithreaded so page requests can be processed concurrently? >>>>>>>>>>>> >>>>>>>>>>>> Thanks! >>>>>>>>>>>> >>>>>>>>>>>> Greg >>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>> Do not post admin requests to the list. They will be ignored. >>>>>>>>>>>> Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) >>>>>>>>>>>> Help/Unsubscribe/Update your Subscription: >>>>>>>>>>>> http://lists.apple.com/mailman/options/webobjects-dev/ianjoyner%40me.com >>>>>>>>>>>> >>>>>>>>>>>> This email sent to ianjoy...@me.com >>>>>>>>>>> >>>>>>>>>>> _______________________________________________ >>>>>>>>>>> Do not post admin requests to the list. They will be ignored. >>>>>>>>>>> Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) >>>>>>>>>>> Help/Unsubscribe/Update your Subscription: >>>>>>>>>>> http://lists.apple.com/mailman/options/webobjects-dev/dleber_wodev%40codeferous.com >>>>>>>>>>> >>>>>>>>>>> This email sent to dleber_wo...@codeferous.com >>>>>>>>>> >>>>>>>>>> ;david >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> David LeBer >>>>>>>>>> Codeferous Software >>>>>>>>>> 'co-def-er-ous' adj. Literally 'code-bearing' >>>>>>>>>> site: http://codeferous.com >>>>>>>>>> blog: http://davidleber.net >>>>>>>>>> profile: http://www.linkedin.com/in/davidleber >>>>>>>>>> twitter: http://twitter.com/rebeld >>>>>>>>>> -- >>>>>>>>>> Toronto Area Cocoa / WebObjects developers group: >>>>>>>>>> http://tacow.org >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> _______________________________________________ >>>>>>>>> Do not post admin requests to the list. They will be ignored. >>>>>>>>> Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) >>>>>>>>> Help/Unsubscribe/Update your Subscription: >>>>>>>>> http://lists.apple.com/mailman/options/webobjects-dev/chill%40global-village.net >>>>>>>>> >>>>>>>>> This email sent to ch...@global-village.net >>>>>>>> >>>>>>>> -- >>>>>>>> Chuck Hill Senior Consultant / VP Development >>>>>>>> >>>>>>>> Practical WebObjects - for developers who want to increase their >>>>>>>> overall knowledge of WebObjects or who are trying to solve specific >>>>>>>> problems. >>>>>>>> http://www.global-village.net/products/practical_webobjects >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> Do not post admin requests to the list. They will be ignored. >>>>>>>> Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) >>>>>>>> Help/Unsubscribe/Update your Subscription: >>>>>>>> http://lists.apple.com/mailman/options/webobjects-dev/mschrag%40pobox.com >>>>>>>> >>>>>>>> This email sent to msch...@pobox.com >>>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> Do not post admin requests to the list. They will be ignored. >>>>>> Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) >>>>>> Help/Unsubscribe/Update your Subscription: >>>>>> http://lists.apple.com/mailman/options/webobjects-dev/mschrag%40pobox.com >>>>>> >>>>>> This email sent to msch...@pobox.com >>>>> >>>> >>>> _______________________________________________ >>>> Do not post admin requests to the list. They will be ignored. >>>> Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) >>>> Help/Unsubscribe/Update your Subscription: >>>> http://lists.apple.com/mailman/options/webobjects-dev/chill%40global-village.net >>>> >>>> This email sent to ch...@global-village.net >>> >>> -- >>> Chuck Hill Senior Consultant / VP Development >>> >>> Practical WebObjects - for developers who want to increase their overall >>> knowledge of WebObjects or who are trying to solve specific problems. >>> http://www.global-village.net/products/practical_webobjects >>> >>> >>> >>> >>> >>> >>> >> >> _______________________________________________ >> Do not post admin requests to the list. They will be ignored. >> Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) >> Help/Unsubscribe/Update your Subscription: >> http://lists.apple.com/mailman/options/webobjects-dev/chill%40global-village.net >> >> This email sent to ch...@global-village.net > > -- > Chuck Hill Senior Consultant / VP Development > > Practical WebObjects - for developers who want to increase their overall > knowledge of WebObjects or who are trying to solve specific problems. > http://www.global-village.net/products/practical_webobjects > > > > > > > > _______________________________________________ > Do not post admin requests to the list. They will be ignored. > Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) > Help/Unsubscribe/Update your Subscription: > http://lists.apple.com/mailman/options/webobjects-dev/probert%40macti.ca > > This email sent to prob...@macti.ca _______________________________________________ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com