suggestions for new module name
suggestions for new module name
am 22.06.2005 04:13:11 von Michael Hendricks
I've got a module with the working title Text::Effort. It calculates
roughly how much physical effort is required to type a given text. I
wasn't able to find any modules on CPAN that did this, but most of the
text statistics modules seem to be under the Text namespace. Does
anyone have a suggestion for a name better than Text::Effort?
The current documentation for the module is below.
Thanks for any input,
Michael
---------------
NAME
Text::Effort - calculate the effort required to type a given text
SYNOPSIS
use Text::Effort qw/effort/;
my $effort = effort("The quick brown fox jumps over the lazy
dog");
$effort will be a hashref something like this
$effort = {
characters => 43, # the number of characters in the text
presses => 44, # key presses need to type the text
distance => 950, # millimeters the fingers moved while
typing
energy => 2.2..., # the energy (Joules) used while typing
};
DESCRIPTION
Text::Effort is used to calculate how much physical effort was
required
to type a given text. Several metrics of effort are used. These
metrics
are described in detail in the "METRICS" section.
This module is useful for determining which keyboard layout is more
efficient, for making API/language design decisions, or to show
your
boss how hard you're working.
FUNCTIONS
effort $TEXT | \$TEXT
The parameter should be a scalar or a reference to a scalar which
contains the text to be analyzed. Leading whitespace on each line
of
$TEXT is ignored since a decent text editor handles that for the
typist.
Only characters found on a standard US-104 keyboard are tallied in
the
metrics. That means that accented characters, unicode, etc. are not
included. If a character is unrecognized, it will be silently
ignored.
effort %PARAMETERS
effort() may also be called with a list of named parameters. This
allows
more flexibility in how the metrics are calculated. Below is a list
of
acceptable (or required) parameters.
text
file
One of these two options must be specified. If neither is
specified,
effort() will "die". The value of text should be a scalar or
reference to a scalar containing the text to analyze. The value
of
file should be a filehandle which is open for reading or a file
name.
layout
Default: qwerty
This parameter specifies the keyboard layout to use when
calculating
metrics. The value of layout should be either 'qwerty' or
'dvorak'.
If a value different from those is specified, the default value
of
'qwerty' is used.
Calling effort like: "effort($text)" is identical to calling it
like
this
effort(
text => $text,
layout => 'qwerty',
);
METRICS
characters
The number of recognized characters in the text. This is similar in
spirit to the Unix command "wc -c". Only those characters which are
encoded in the internal keyboard layout will be counted. That
excludes
accented characters, Unicode characters and control characters but
includes newlines.
presses
The number of keys pressed when typing the text. The value of this
metric is the value of the characters metric plus the number of
times
the Shift key was pressed.
distance
The distance, in millimeters, that the fingers travelled while
typing
the text. This distance includes movement required for the Shift
and
Enter keys, but does not include the vertical movement the finger
makes
as the key descends during a press. Perhaps a better name for this
metric would be horizontal_distance, but that's too long ;-)
The model for determining this metric is very simplistic. It
assumes
that a finger moves from its home position to the destination key
and
then returns to the home position before moving on to the next key.
Of
course, this is not how people actually type, but the model should
result in an upper-bound for the amount of finger movement.
energy
The number of Joules of energy required to type the text. This
metric is
the most inclusive in that it tries to accomodate the values of
both the
presses and the distance metrics into a single metric. However,
this
metric is also the least accurate at modeling the real world. The
calculations are roughly based upon the *The Compendium of Physical
Activities* (or rather hearsay about it's contents since I don't
have a
copy).
The physical charactersistics of the keyboard are assumed to be
roughly
in line with ISO 9241-4:1998, which specifies standards for such
things.
SEE ALSO
Tactus Keyboard article on the mechanics and standards of keyboard
design -
AUTHOR
Michael Hendricks,
TODO
* Add an 'accumulator' option which allows effort() to add it's
results
to those from a previous call to effort().
* Count the unrecognized characters
* Allow keyboard layouts other than QWERTY and Dvorak
* Allow keyboards other than US-104
* Add options for specifying the characteristics of the keyboard
such as
key displacement and the force required to depress the keys.
COPYRIGHT AND LICENSE
Copyright (C) 2005 by Michael Hendricks
This library is free software; you can redistribute it and/or
modify it
under the same terms as Perl itself, either Perl version 5.8.4 or,
at
your option, any later version of Perl 5 you may have available.
Re: suggestions for new module name
am 22.06.2005 08:01:01 von skearney
Michael Hendricks wrote:
> I've got a module with the working title Text::Effort. It calculates
> roughly how much physical effort is required to type a given text. I
> wasn't able to find any modules on CPAN that did this, but most of the
> text statistics modules seem to be under the Text namespace. Does
> anyone have a suggestion for a name better than Text::Effort?
>
> The current documentation for the module is below.
>
> Thanks for any input,
> Michael
>
> ---------------
>
> NAME
> Text::Effort - calculate the effort required to type a given text
>
> SYNOPSIS
> use Text::Effort qw/effort/;
>
> my $effort = effort("The quick brown fox jumps over the lazy
> dog");
>
> $effort will be a hashref something like this
>
> $effort = {
> characters => 43, # the number of characters in the text
> presses => 44, # key presses need to type the text
> distance => 950, # millimeters the fingers moved while
> typing
> energy => 2.2..., # the energy (Joules) used while typing
> };
>
> DESCRIPTION
> Text::Effort is used to calculate how much physical effort was
> required
> to type a given text. Several metrics of effort are used. These
> metrics
> are described in detail in the "METRICS" section.
>
> This module is useful for determining which keyboard layout is more
> efficient, for making API/language design decisions, or to show
> your
> boss how hard you're working.
>
> FUNCTIONS
> effort $TEXT | \$TEXT
> The parameter should be a scalar or a reference to a scalar which
> contains the text to be analyzed. Leading whitespace on each line
> of
> $TEXT is ignored since a decent text editor handles that for the
> typist.
> Only characters found on a standard US-104 keyboard are tallied in
> the
> metrics. That means that accented characters, unicode, etc. are not
> included. If a character is unrecognized, it will be silently
> ignored.
>
> effort %PARAMETERS
> effort() may also be called with a list of named parameters. This
> allows
> more flexibility in how the metrics are calculated. Below is a list
> of
> acceptable (or required) parameters.
>
> text
> file
> One of these two options must be specified. If neither is
> specified,
> effort() will "die". The value of text should be a scalar or
> reference to a scalar containing the text to analyze. The value
> of
> file should be a filehandle which is open for reading or a file
> name.
>
> layout
> Default: qwerty
>
> This parameter specifies the keyboard layout to use when
> calculating
> metrics. The value of layout should be either 'qwerty' or
> 'dvorak'.
> If a value different from those is specified, the default value
> of
> 'qwerty' is used.
>
> Calling effort like: "effort($text)" is identical to calling it
> like
> this
>
> effort(
> text => $text,
> layout => 'qwerty',
> );
>
> METRICS
> characters
> The number of recognized characters in the text. This is similar in
> spirit to the Unix command "wc -c". Only those characters which are
> encoded in the internal keyboard layout will be counted. That
> excludes
> accented characters, Unicode characters and control characters but
> includes newlines.
>
> presses
> The number of keys pressed when typing the text. The value of this
> metric is the value of the characters metric plus the number of
> times
> the Shift key was pressed.
>
> distance
> The distance, in millimeters, that the fingers travelled while
> typing
> the text. This distance includes movement required for the Shift
> and
> Enter keys, but does not include the vertical movement the finger
> makes
> as the key descends during a press. Perhaps a better name for this
> metric would be horizontal_distance, but that's too long ;-)
>
> The model for determining this metric is very simplistic. It
> assumes
> that a finger moves from its home position to the destination key
> and
> then returns to the home position before moving on to the next key.
> Of
> course, this is not how people actually type, but the model should
> result in an upper-bound for the amount of finger movement.
>
> energy
> The number of Joules of energy required to type the text. This
> metric is
> the most inclusive in that it tries to accomodate the values of
> both the
> presses and the distance metrics into a single metric. However,
> this
> metric is also the least accurate at modeling the real world. The
> calculations are roughly based upon the *The Compendium of Physical
> Activities* (or rather hearsay about it's contents since I don't
> have a
> copy).
>
> The physical charactersistics of the keyboard are assumed to be
> roughly
> in line with ISO 9241-4:1998, which specifies standards for such
> things.
>
> SEE ALSO
> Tactus Keyboard article on the mechanics and standards of keyboard
> design -
>
> AUTHOR
> Michael Hendricks,
>
> TODO
> * Add an 'accumulator' option which allows effort() to add it's
> results
> to those from a previous call to effort().
>
> * Count the unrecognized characters
>
> * Allow keyboard layouts other than QWERTY and Dvorak
>
> * Allow keyboards other than US-104
>
> * Add options for specifying the characteristics of the keyboard
> such as
> key displacement and the force required to depress the keys.
>
> COPYRIGHT AND LICENSE
> Copyright (C) 2005 by Michael Hendricks
>
> This library is free software; you can redistribute it and/or
> modify it
> under the same terms as Perl itself, either Perl version 5.8.4 or,
> at
> your option, any later version of Perl 5 you may have available.
Any chance you could create a 'text effort' module for a keyboard that
transposes dfjk with the letters etni, which are almost five times more
common?
Aset keyboard
It has been said that the most common letters were taken off the home
row of the first typewriter keyboard to slow down the typist and
prevent jamming.
On a Dvorak keyboard almost sixty percent of average text is typed from
the home keys. Transposing the letters 'etni' with 'dfjk' would put
more than 55% of text on the home keys, up from only 26% on the qwerty
layout. Thats more than twice the text typed without lifting a finger.
The change is quite pleasant and easy to learn. I hope you will pass
this on.
To put e, t, n and i back where they belong, there is a keyboard
remapping program that is free, downloads quickly and is very easy to
use. I am typing this post on a keyboard remapped to the 'etni'
transposition layout. The program is called 'Keytweak 2.11' and can be
googled up by that name. It is available from several sites, including
PC magazine.
1) After you have loaded the program click start.
2) Click the "KeyTweak" icon and a graphic of a keyboard will appear.
3) Click the "Full Teach Mode" at the bottom of the screen.
4) A box will appear. Click "Begin Teach Mode".
5) Press the key you want to reassign, then the key you want it
reassigned to, in this case D to E.
6) Click "Remap Key#1 to Key#2"
7) The box will disappear and the scancodes of the keys will appear in
the "Pending Changes" window at the bottom right.
8) Follow the same procedure (from 3) for E to D, and the remaining
six remaps.
9) Click "Apply" and you will be asked if you want to turn off the
computer to apply the changes.
At the top there is also a clickable "Restore Defaults" to give
you back your qwerty layout.
I was able to remap in under three minutes and restore qwerty in
thirty seconds, not including the restart.
You can try out the sample lines of text below to discover that your
fingers already know where etni should go.
nineteen lean little saints settle in a nest
jkjdfddj ldaj lkffld sakjfs sdffld kj a jdsf
an alien eats an ant antenna in atlanta
aj alkdj dafs aj ajf ajfdjja kj aflajfa
elite sense entails a siesta in a satin seat
dlkfd sdjsd djfakls a skdsfa kj a safkj sdaf
a stain is seen at a linen sale
a sfakj ks sddj af a lkjdj sald
a latent latin talent tast tests in seattle
a lafdjf lafkj faldjf fasf fdsfs kj sdaffld
insane santa sails in sea salt
kjsajd sajfa sakls kj sda salf
Many thanks
Re: suggestions for new module name
am 22.06.2005 10:45:23 von Ron Savage
On Wed, 22 Jun 2005 12:13:11 +1000, Michael Hendricks wrote:
Hi Michael
> I've got a module with the working title Text::Effort. It
Looks good. I would call it Text::TypingEffort just in case someone comes up=
with some other sort of error metric.
Re: suggestions for new module name
am 22.06.2005 17:27:20 von Michael Hendricks
The internal design of Text::Effort can easily accomodate the keyboard
layout you've mentioned. I've added the 'aset' keyboard to my to-do
list and will implement it after I've made the first upload to CPAN.
Michael
Re: suggestions for new module name
am 23.06.2005 02:37:18 von skearney
Michael Hendricks wrote:
> The internal design of Text::Effort can easily accomodate the keyboard
> layout you've mentioned. I've added the 'aset' keyboard to my to-do
> list and will implement it after I've made the first upload to CPAN.
>
> Michael
How difficult would it be to come up with a program that tracks
learning speed and error rates?
Re: suggestions for new module name
am 28.06.2005 17:30:11 von Michael Hendricks
skearney@accessbee.com wrote:
> Any chance you could create a 'text effort' module for a keyboard that
> transposes dfjk with the letters etni, which are almost five times more
> common?
I've implemented the ASET keyboard in version 0.20 of the Text::TypingEffort
module. It's available on CPAN now.
--
Michael