Post #283,635
5/2/07 10:08:45 AM
8/21/07 6:05:11 AM
|

Other thoughts
I happen to be at the Smalltalk Solutions conference in Toronto this week and attended a talk by the Smalltalk Industry Council - sort of a lobbying group for Smalltalk. Also here were some Ruby types giving "Rails for Smalltalkers". The latter was pretty entertaining as the audience frequently pointed out questionable design decisions and better ways to do stuff. In the end the general feeling was "too many files to keep track of".
A consulting company that does a lot of Smalltalk consulting (along with other kind) shared some of their costing model they use when estimating projects. To develop the model, a bunch of metrics from Capers Jones, Humphreys, SEI, etc were examined (over 4000 projects). A couple things stressed:
1) J2EE is just about the most expensive way to develop a web application that there is, largely due to Java's low productivity. Cost is about 5x a similar smalltalk project.
2) Defects per function point are also pretty high in J2EE (about 3x most anything else). ----- A couple other observations: HTML/Code Templates are fragile and produces buggy HTML. Builder pattern document generation is definitely the way to go.
XHTML is a dead end. HTML 5 has traction.
Boilerplate obfuscates
Smalltalk is not a "repository based" system. It is a machine based system. All source code is in memory (or in a swap file but you can't tell). Files are an unnecessary distraction and interfere with refactoring. Which is why things like eclipse work hard at making it look like all your source code is right at hand.
Just because Zope's repository system sucks, doesn't make it representative.
None of the aforementioned systems provide any kind of help for application management/monitoring/hot updating/load balancing/periodic cycling across a fleet of machines.
We posture as apostles of fair play, as good sportsmen, as professional knights-errant-- and we throw beer bottles at the umpire when he refuses to cheat for our side...We save the black-and-tan republics from their native [statesmen]--and flood them with "deserving" democrats of our own. We deafen the world with our whoops for liberty--and submit to laws that destroy our most sacred rights...We play policeman and Sunday-school superintendent to half of Christendom--and lynch a darky every two days in our own backyard.
H.L. Mencken, 1914
Other thoughts
I happen to be at the Smalltalk Solutions conference in Toronto this week and attended a talk by the Smalltalk Industry Council - sort of a lobbying group for Smalltalk. Also here were some Ruby types giving "Rails for Smalltalkers". The latter was pretty entertaining as the audience frequently pointed out questionable design decisions and better ways to do stuff. In the end the general feeling was "too many files to keep track of".
A consulting company that does a lot of Smalltalk consulting (along with other kind) shared some of their costing model they use when estimating projects. To develop the model, a bunch of metrics from Capers Jones, Humphreys, SEI, etc were examined (over 4000 projects). A couple things stressed:
1) J2EE is just about the most expensive way to develop a web application that there is, largely due to Java's low productivity. Cost is about 5x a similar smalltalk project.
2) Defects per function point are also pretty high in J2EE (about 3x most anything else). ----- A couple other observations: HTML/Code Templates are fragile and produces buggy HTML. Builder pattern document generation is definitely the way to go.
XHTML is a dead end. HTML 5 has traction.
Boilerplate obfuscates
Smalltalk is not a "repository based" system. It is a machine based system. All source code is in memory (or in a swap file but you can't tell). Files are an unnecessary distraction and interfere with refactoring. Which is why things like eclipse work hard at making it look like all your source code is right at hand.
Just because Zope's repository system sucks, doesn't make it representative.
None of the aforementioned systems provide any kind of help for application management/monitoring/hot updating/load balancing/periodic cycling across a fleet of machines.
We posture as apostles of fair play, as good sportsmen, as professional knights-errant-- and we throw beer bottles at the umpire when he refuses to cheat for our side...We save the black-and-tan republics from their native [statesmen]--and flood them with "deserving" democrats of our own. We deafen the world with our whoops for liberty--and submit to laws that destroy our most sacred rights...We play policeman and Sunday-school superintendent to half of Christendom--and lynch a darky every two days in our own backyard.
H.L. Mencken, 1914
|
Post #283,643
5/2/07 10:44:38 AM
|

Other other thoughts...
Agree on the productivity/bugs/boilerplate observations.
Disagree on templates. I *hate* document generation. I need to be able to see the structure of the document in an editor. Generation obfuscates that, and it's one step removed from string catenation. I've used such systems before and they're ugly. Although having said that, I don't know what you mean by "builder pattern".
On repositories: note that I said they can really, really suck. YMMV. However, I have to say that with Squeak at least the editor is ass. Sorry. Probably personal preference, but it's not Emacs.
On files being a distraction: you and I will disagree on this to the end of time, I'm sure. :-) Don't confuse Java's many nasty files with something like Python, though. Dired is sufficient to manage source files.
Regards,
-scott anderson
"Welcome to Rivendell, Mr. Anderson..."
|
Post #283,652
5/2/07 11:32:55 AM
8/21/07 6:05:30 AM
|

Builder pattern
It is detailed in Object Design Patterns. In squeak, html rendering looks like: \nrenderContentOn: html\n\nhtml heading level:2; with: 'Title of My Page'.\nhtml orderedList cssClass: 'tab-bar'; with:\n[\n collection do: \n [:item | \n html listItem cssClass: 'tab-item'; with: \n [\n html anchor \n cssClass: 'tab-link'; \n callback: [self call: (ItemEditor on: item)]; \n with: item asString. \n ]\n ]\n] html produces objects - one per logical construct ( or tag ), each tag supports several methods for filling in various attributes, plus the with: takes either a String or a Block of code that is executed. The tag object writes the open tag to the stream, executes the block, then writes the close tag. HTML output is simple. All visual appearance is done using CSS. Using this technique, it is simply impossible to produce a malformed document. The code looks something like the HTML, and you can have subcomponents. As to squeak's editor - it has improved a lot recently and now sports coloring, auto-completion, and of course, refactoring. Plus the monticello version control system is light years ahead of text based solutions. I think someone did emacs and vi key bindings too. When dissing too many files - I was thinking of Rails. If I want to rename a method, I want the system to understand where all the method calls are and show me so I can update them. Ditto class name, variable names, etc. It just isn't generally there in file based systems although things like IDEA do a fair job of faking it.
We posture as apostles of fair play, as good sportsmen, as professional knights-errant-- and we throw beer bottles at the umpire when he refuses to cheat for our side...We save the black-and-tan republics from their native [statesmen]--and flood them with "deserving" democrats of our own. We deafen the world with our whoops for liberty--and submit to laws that destroy our most sacred rights...We play policeman and Sunday-school superintendent to half of Christendom--and lynch a darky every two days in our own backyard.
H.L. Mencken, 1914
|
Post #283,657
5/2/07 11:45:42 AM
|

Not impressed.
Looks like every other one I've seen, other than the Smalltalky bits. I really dislike systems that conflate HTML with code. I find them difficult to debug (where is this HTML coming from?) and difficult to rearrange when I want the page to look like something else.
I don't want it to look "something" like the HTML... I want to look at it and immediately understand what I'm getting. Difficult stuff can be put in a tag and called from the template.
Django's template system has a thing called [link|http://www.djangoproject.com/documentation/templates/#template-inheritance|blocks] as well:
In a parent template: {% block foo %}This is the default.{% endblock %}
Then inherit that parent, and replace the 'foo' block if you want to specialize: {% block foo %}This is not the default.{% endblock %}
Very useful. Django templates have the added bonus of being output-neutral: use them for emails, CSV, whatever.
Regards,
-scott anderson
"Welcome to Rivendell, Mr. Anderson..."
|
Post #283,735
5/2/07 10:23:42 PM
8/21/07 6:07:07 AM
|

You still don't get it
First, your example can produce broken html - just forget one of those endblock thingys.
Second, Seaside has components - like widgets. You don't put the whole thing in one page, you have components like WebObjects or conventional GUI's had them.
Then there are halos. You can turn on halos in your page (from a set of links at the bottom) and boxes get drawn around all the component boundaries so you can see what part of the page is produced by which component. When halos are on, there are switches that let you render the HTML source for any PART of the page (or all of it). See below. Clicking the R shows you the Rendered html. S turns on the source view (see lower left).
The wrench opens a source code browser on the component. The eye is an inspector on the image where you can view/edit all the fields in the object. The crayon allows you edit css for that page region. I have no trouble telling where every bit of html comes from.
[image|http://www.inextenso.com/misc/blogs/sw2-halos/1.jpg||||]
We posture as apostles of fair play, as good sportsmen, as professional knights-errant-- and we throw beer bottles at the umpire when he refuses to cheat for our side...We save the black-and-tan republics from their native [statesmen]--and flood them with "deserving" democrats of our own. We deafen the world with our whoops for liberty--and submit to laws that destroy our most sacred rights...We play policeman and Sunday-school superintendent to half of Christendom--and lynch a darky every two days in our own backyard.
H.L. Mencken, 1914
|
Post #283,749
5/2/07 11:12:10 PM
|

No, I get it just fine.
I just don't agree with you that it's as useful as you seem to think it is, and I dislike the paradigm itself. Don't confuse disagreement with ignorance.
I prefer my HTML widgets to be written in HTML and markup, thank you very much. Not some unrelated language.
And if I forget and endblock, I produce a trace showing me that I forgot an endblock... not broken HTML.
Regards,
-scott anderson
"Welcome to Rivendell, Mr. Anderson..."
|
Post #283,753
5/2/07 11:25:03 PM
8/21/07 6:07:34 AM
|

Been there before - maintenance Hell - not going back
We posture as apostles of fair play, as good sportsmen, as professional knights-errant-- and we throw beer bottles at the umpire when he refuses to cheat for our side...We save the black-and-tan republics from their native [statesmen]--and flood them with "deserving" democrats of our own. We deafen the world with our whoops for liberty--and submit to laws that destroy our most sacred rights...We play policeman and Sunday-school superintendent to half of Christendom--and lynch a darky every two days in our own backyard.
H.L. Mencken, 1914
|
Post #283,754
5/2/07 11:33:17 PM
|

Your experience differs from mine.
Regards,
-scott anderson
"Welcome to Rivendell, Mr. Anderson..."
|
Post #283,789
5/3/07 9:56:31 AM
8/21/07 6:08:11 AM
|

Apparently so
We posture as apostles of fair play, as good sportsmen, as professional knights-errant-- and we throw beer bottles at the umpire when he refuses to cheat for our side...We save the black-and-tan republics from their native [statesmen]--and flood them with "deserving" democrats of our own. We deafen the world with our whoops for liberty--and submit to laws that destroy our most sacred rights...We play policeman and Sunday-school superintendent to half of Christendom--and lynch a darky every two days in our own backyard.
H.L. Mencken, 1914
|
Post #283,747
5/2/07 11:03:43 PM
|

Builder pattern... :-O
The problem with such a builder pattern is two-fold: 1. Can I trust whoever wrote it did everything 'right'? 2. What happens when I need it to do something it can't do - what sort of magic do I do to fix that? OTOH, I'd like see what it is like to actually use.
I've found that real HTML isn't something you want to get too far away from. Creating broken markup is the risk of staying close. But often it's an acceptable risk.
Wade.
Is it enough to love Is it enough to breathe Somebody rip my heart out And leave me here to bleed
| | Is it enough to die Somebody save my life I'd rather be Anything but Ordinary Please
|
-- "Anything but Ordinary" by Avril Lavigne. | · my · · [link|http://staticsan.livejournal.com/|blog] · · [link|http://yceran.org/|website] · |
|
Post #283,752
5/2/07 11:22:09 PM
8/21/07 6:07:31 AM
|

Two things
First - there' s nothing it can't do. Consider at its lowest level it uses something like
html tagNamed: 'exotic'
which means you can create any kind of tag you like.
Second you have the source code - extend it. There are several extensions floating around already that support things like yahoo web kit, scriptaculous effects, and so forth.
It doesn't take you far from the html however it makes you describe the document structure, not just spew bytes. Which means the structure can be verified and guaranteed.
HTML is a tree, not a stream. I've used many "templating systems". They all suck rocks for maintainability and are terribly fragile. They also don't generally enable component reuse.
We posture as apostles of fair play, as good sportsmen, as professional knights-errant-- and we throw beer bottles at the umpire when he refuses to cheat for our side...We save the black-and-tan republics from their native [statesmen]--and flood them with "deserving" democrats of our own. We deafen the world with our whoops for liberty--and submit to laws that destroy our most sacred rights...We play policeman and Sunday-school superintendent to half of Christendom--and lynch a darky every two days in our own backyard.
H.L. Mencken, 1914
|
Post #284,089
5/6/07 4:14:00 PM
|

Oi! Even if your screen is six foot wide, not everyone's is!
Could you break that fat-ass innermost line of the loop up into at least two chunks, so the less fortunate among us can read the fucking thread without scrolling hori-fucking-zontally?
Thank you.
[link|mailto:MyUserId@MyISP.CountryCode|Christian R. Conrad] (I live in Finland, and my e-mail in-box is at the Saunalahti company.)
Ah, the Germans: Masters of Convoluted Simplification. — [link|http://www.thetruthaboutcars.com/?p=1603|Jehovah]
|
Post #284,090
5/6/07 4:40:00 PM
|

Do you have a 1886 Volvo CRT, too?
It looks fine here on my laptop screen at 1400 x 1050. Are you running CGA or something?
;-)
Cheers, Scott.
|
Post #284,121
5/7/07 3:30:26 AM
|

El Cheapo older(ish) HP laptop, 1024 x 768 I think.
And I like to use slightly larger(ish) fonts than most browsers default to.
[link|mailto:MyUserId@MyISP.CountryCode|Christian R. Conrad] (I live in Finland, and my e-mail in-box is at the Saunalahti company.)
Ah, the Germans: Masters of Convoluted Simplification. — [link|http://www.thetruthaboutcars.com/?p=1603|Jehovah]
|
Post #284,105
5/6/07 7:58:24 PM
8/21/07 6:16:45 AM
|

Yah sure - done
We posture as apostles of fair play, as good sportsmen, as professional knights-errant-- and we throw beer bottles at the umpire when he refuses to cheat for our side...We save the black-and-tan republics from their native [statesmen]--and flood them with "deserving" democrats of our own. We deafen the world with our whoops for liberty--and submit to laws that destroy our most sacred rights...We play policeman and Sunday-school superintendent to half of Christendom--and lynch a darky every two days in our own backyard.
H.L. Mencken, 1914
|
Post #284,122
5/7/07 3:30:48 AM
|

Great, Thanks.
|
Post #283,949
5/5/07 12:58:53 AM
|

Document generation in code
Works really, really, really well for XML, and is in fact the only way anyone should ever try to generate XML. \r\n\r\n For document formats which don't slaughter all the firstborn children in your city because you forgot to encode an ampersand, Builder-style document generation is often more cumbersome than other solutions, and the time spent fixing any stray errors is often less than the time spent re-jiggering a bunch of document-builder classes when the boss tells you the navigation has to be on the other side, in reverse alphabetical order. \r\n\r\n For HTML to be used in production on the web: \r\n\r\n \r\n- If you are Amazon, Google, Yahoo, Microsoft, eBay or a handful of other companies: not so bad, but still really cumbersome.
\r\n- If you are anyone else: blows great big steaming donkey balls. Having to develop the in-code document structures to represent the prototype for tomorrow's meeting, and not having the designer be able to even look at it until you've gotten it to compile and output the right structure will kill the average web shop. Having designers able to mock up the frontend in an HTML-ish language with little or no logic, while programmers build the backend to supply content bits, is really the only way such a shop can survive.
\r\n \r\n\r\n Let markup be markup. It was designed to be written by humans (or, at least, it was until XML came along and introduced the aforementioned child-slaughtering technique for error handling), and it's pretty good at that.
--\r\nYou cooin' with my bird?
|