From: JXStern on
On 14 Jan 2007 11:49:42 -0800, "topmind" <topmind(a)technologist.com>
wrote:

>> It's an issue of what is done with the tools. The tools are fine.
>> OK, static HTML with common controls limits what you can do, but
>> here's a very BASIC thing that bugs me: everyone uses pull-downs, both
>> for huge lists and for small lists, when it would often improve a GUI
>> dramatically to use listboxes (scrolling list showing many at a time)
>> instead.
>
>Sound like that is a case where one would want to use a two-column
>table grid with the first column being a check-box and the second a
>description. However, if there are thousands, then going to a "pop-up"
>modal selection screen where one uses QBE etc. to pick them and then it
>puts the picks back at the original screen. But this is tricky and
>time-consuming to pull off with web browsers.

Sure, fancy grids are a great way to go, but aren't supported in
standard form across current browsers (hint, hint). And pop-ups to
present a modal choice from complex data are a basic mechanism for
rich-clients, don't believe they're enforceable with standard browser
features, at some cost you can morph the current window into a modal
choice one, but yeah it's work.

But anyway it's so frequent to see the basic mistake made, the current
timekeeping system I'm using is a prime example.

Getting back to the main topic, it's just the case that a
well-educated developer doesn't see it as encapsulating function in a
component, so much as utilizing the available components.

J.

From: topmind on

JXStern wrote:
> On 14 Jan 2007 11:49:42 -0800, "topmind" <topmind(a)technologist.com>
> wrote:
>
> >> It's an issue of what is done with the tools. The tools are fine.
> >> OK, static HTML with common controls limits what you can do, but
> >> here's a very BASIC thing that bugs me: everyone uses pull-downs, both
> >> for huge lists and for small lists, when it would often improve a GUI
> >> dramatically to use listboxes (scrolling list showing many at a time)
> >> instead.
> >
> >Sound like that is a case where one would want to use a two-column
> >table grid with the first column being a check-box and the second a
> >description. However, if there are thousands, then going to a "pop-up"
> >modal selection screen where one uses QBE etc. to pick them and then it
> >puts the picks back at the original screen. But this is tricky and
> >time-consuming to pull off with web browsers.
>
> Sure, fancy grids are a great way to go, but aren't supported in
> standard form across current browsers (hint, hint). And pop-ups to
> present a modal choice from complex data are a basic mechanism for
> rich-clients, don't believe they're enforceable with standard browser
> features, at some cost you can morph the current window into a modal
> choice one, but yeah it's work.
>
> But anyway it's so frequent to see the basic mistake made, the current
> timekeeping system I'm using is a prime example.
>
> Getting back to the main topic, it's just the case that a
> well-educated developer doesn't see it as encapsulating function in a
> component, so much as utilizing the available components.

This may be related:

http://www.c2.com/cgi/wiki?HelpersInsteadOfWrappers

As far as "list boxes", do you mean the kind that you have to press
something like Ctrl-Shift to select an item? Those are goofy
keystrokes. The browser makers should have used checkboxes next to the
descriptions (IOW, tables :-)

>
> J.

-T-

From: Robert Martin on
On 2007-01-02 08:48:59 -0600, Thomas Gagne <tgagne(a)wide-open-west.com> said:

> I suspect he and Martin Fowler (it is reported) both share the opinion
> that if memory was both infinite and infallible that databases would be
> unnecessary. Well, perhaps they would be if you never needed to share,
> duplicate, or transport them.

Database engines are powerful tools that are very useful for many
different kinds of applications. In some cases whole applications can
(and should) be written using nothing but the tool.

I am in the mist of writing a two simple applications for small
businesses at the moment. Both use a database back end. Both are web
driven. Both have interesting business rules. One is written in Java,
the other in Rails.

My philosophy of programming guides me to ignore the database in the
early portions of these designs. I was quite able to do that in the
Java application, with very good results. But Rails is more tightly
coupled to the database; and my inexperience with the framework caused
me to aquiesce to this coupling. In short, I allowed the business
rules and the database to become coupled.

The Java applications worked out quite nicely. The business rule layer
is indendent of the database layer and the GUI layer. They all work
nicely together and the implementation was simple and fast.

The Rails application has led to complications. There are forms I want
to display that don't seem to corespond to any particlar database
table, and yet the framework is tuned to the idea of
one-form-one-table. I fell into this trap, and now I have to dig my
way out.

BTW, this is not a blast on Rails. I think if I had had a bit more
experience with Rails I would have sidestepped this trap pretty easily,
and simply separated the business rules from the database.

To sum up. Though I agree that database engineers are powerful and
necessary tools, and though I understand that they are often critical
to the success of many project, from a design perspective they are
details that need to be decoupled from the business and presentation
rules of most applications.
--
Robert C. Martin (Uncle Bob)��| email: unclebob(a)objectmentor.com
Object Mentor Inc.� � � � � ��| blog:��www.butunclebob.com
The Agile Transition Experts��| web:���www.objectmentor.com
800-338-6716� � � � � � � � ��|



From: Robert Martin on
On 2007-01-13 17:00:24 -0600, JXStern <JXSternChangeX2R(a)gte.net> said:

> Page 351, second paragraph: "Instead of starting with the data of the
> system, let's start by considering the behavior of the system. After
> all, it is the system's behavior that we are being paid to create."
>
> Says who?

Says me! ;-) The problem being discussed is Payroll. If we are
writing a payroll application we are being paid to create payroll
behaviors.

I am quite happy to agree that there are applications that are more
about data storage and provisioning, than any actual processing. But
that was not the case under study.
--
Robert C. Martin (Uncle Bob)��| email: unclebob(a)objectmentor.com
Object Mentor Inc.� � � � � ��| blog:��www.butunclebob.com
The Agile Transition Experts��| web:���www.objectmentor.com
800-338-6716� � � � � � � � ��|



From: Robert Martin on
On 2007-01-13 21:08:35 -0600, "topmind" <topmind(a)technologist.com> said:

> RCM definitely appears to not be a RDBMS fan and is happier the more he
> wraps it away.

It has nothing to do with fan-dom. I consider RDBMSs to be valuable
and important components of many systems. Like any component, it
should be isolated from the others. This is just good software
practice. (see Information Hiding).
--
Robert C. Martin (Uncle Bob)��| email: unclebob(a)objectmentor.com
Object Mentor Inc.� � � � � ��| blog:��www.butunclebob.com
The Agile Transition Experts��| web:���www.objectmentor.com
800-338-6716� � � � � � � � ��|