text:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE erlref SYSTEM "erlref.dtd">

<erlref>

    <copyright>
      <year>2004</year><year>2014</year>
      <holder>Ericsson AB. All Rights Reserved.</holder>
    </copyright>
    <legalnotice>
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
      You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

      Unless required by applicable law or agreed to in writing, software
      distributed under the License is distributed on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      See the License for the specific language governing permissions and
      limitations under the License.

    </legalnotice>

    <title>ssh</title>
    <prepared></prepared>
    <docno></docno>
    <date>2007-10-06</date>
    <rev></rev>

  <module>ssh</module>
  <modulesummary>Main API of the ssh application</modulesummary>
  <description>

Interface module for the <c>ssh</c> application.

  </description>

    <title>SSH</title>
    <marker id="supported"/>
    <list type="bulleted">
      <item>For application dependencies see <seealso marker="SSH_app"> ssh(6)</seealso> </item>
      <item>Supported SSH version is 2.0.</item>
      <item>Supported public key algorithms: ssh-rsa and ssh-dss.</item>
      <item>Supported MAC algorithms: hmac-sha2-256 and hmac-sha1.</item>
      <item>Supported encryption algorithms: aes128-ctr, aes128-cb and 3des-cbc.</item>
      <item>Supported key exchange algorithms: diffie-hellman-group1-sha1, diffie-hellman-group14-sha1, diffie-hellman-group-exchange-sha1 and diffie-hellman-group-exchange-sha256.</item>
      <item>Supported compression algorithms: none, zlib, zlib@openssh.com,</item>
      <item>Supports unicode filenames if the emulator and the underlaying OS support it.
      See section DESCRIPTION in the
      <seealso marker="kernel:file">file</seealso> manual page in <c>kernel</c>
      for information about this subject.</item>
      <item>Supports unicode in shell and CLI.</item>
    </list>

    <title>DATA TYPES</title>

Type definitions that are used more than once in
    this module, or abstractions to indicate the intended use of the data
    type, or both:

    <taglist>
      <tag><c>boolean() =</c></tag>
      <item>
<c>true | false</c>
</item>
      <tag><c>string() =</c></tag>
      <item>
<c>[byte()]</c>
</item>
      <tag><c>ssh_daemon_ref() =</c></tag>
      <item>
opaque() -
      as returned by <c>ssh:daemon/[1,2,3]</c>
</item>
      <tag><c>ssh_connection_ref() =</c></tag>
      <item>
opaque() - as returned by <c>ssh:connect/3</c>
</item>
      <tag><c>ip_address() =</c></tag>
      <item>
<c>inet::ip_address</c>
</item>
      <tag><c>subsystem_spec() =</c></tag>
      <item>
<c>{subsystem_name(),
      {channel_callback(), channel_init_args()}}</c>
</item>
      <tag><c>subsystem_name() =</c></tag>
      <item>
<c>string()</c>
</item>
      <tag><c>channel_callback() =</c></tag>
      <item>
<c>atom()</c> - Name of the Erlang module
      implementing the subsystem using the <c>ssh_channel</c> behavior, see
      <seealso marker="ssh_channel">ssh_channel(3)</seealso>
</item>
      <tag><c>channel_init_args() =</c></tag>
      <item>
<c>list()</c>
</item>

      <tag><c>algs_list() =</c></tag>
      <item>
<c>list( alg_entry() )</c>
</item>

      <tag><c>alg_entry() =</c></tag>
      <item>
<c>{kex, simple_algs()} | {public_key, simple_algs()} | {cipher, double_algs()} | {mac, double_algs()} | {compression, double_algs()}</c>
</item>

      <tag><c>simple_algs() =</c></tag>
      <item>
<c>list( atom() )</c>
</item>

      <tag><c>double_algs() =</c></tag>
      <item>
<c>[{client2serverlist,simple_algs()},{server2client,simple_algs()}] | simple_algs()</c>
</item>
     </taglist>

 <funcs>

   <func>
     <name>close(ConnectionRef) -> ok </name>
      <fsummary>Closes an SSH connection.</fsummary>
      <type>
	<v>ConnectionRef = ssh_connection_ref()</v>
      </type>
      <desc>
Closes an SSH connection.

      </desc>
    </func>

    <func>
      <name>connect(Host, Port, Options) -> </name>
      <name>connect(Host, Port, Options, Timeout) -> {ok,
      ssh_connection_ref()} | {error, Reason}</name>
      <fsummary>Connects to an SSH server.</fsummary>
      <type>
        <v>Host = string()</v>
	<v>Port = integer()</v>
	<d><c><![CDATA[22]]></c> is default, the assigned well-known port
	number for SSH.</d>
	<v>Options = [{Option, Value}]</v>
	<v>Timeout = infinity | integer()</v>
	<d>Negotiation time-out in milli-seconds. The default value is <c>infinity</c>.
	For connection time-out, use option <c>{connect_timeout, timeout()}</c>.</d>
      </type>
      <desc>

Connects to an SSH server. No channel is started. This is done
	by calling
	<seealso marker="ssh_connection#session_channel/2">
	ssh_connection:session_channel/[2, 4]</seealso>.

Options:

	<taglist>
	  <tag><c><![CDATA[{inet, inet | inet6}]]></c></tag>
	  <item>

IP version to use.

	  </item>
          <tag><c><![CDATA[{user_dir, string()}]]></c></tag>
	  <item>

Sets the user directory, that is, the directory containing
	    <c>ssh</c> configuration files for the user, such as
	    <c><![CDATA[known_hosts]]></c>, <c><![CDATA[id_rsa,
	    id_dsa]]></c>, and
	    <c><![CDATA[authorized_key]]></c>. Defaults to the
	    directory normally referred to as
	    <c><![CDATA[~/.ssh]]></c>.

	  </item>
	  <tag><c><![CDATA[{dsa_pass_phrase, string()}]]></c></tag>
	  <item>

If the user DSA key is protected by a passphrase, it can be
	    supplied with this option.

	  </item>
	  <tag><c><![CDATA[{rsa_pass_phrase, string()}]]></c></tag>
	  <item>

If the user RSA key is protected by a passphrase, it can be
	    supplied with this option.

	  </item>
          <tag><c><![CDATA[{silently_accept_hosts, boolean()}]]></c></tag>
	  <item>

When <c>true</c>, hosts are added to the
	    file <c><![CDATA[known_hosts]]></c> without asking the user.
	    Defaults to <c>false</c>.

	  </item>
	  <tag><c><![CDATA[{user_interaction, boolean()}]]></c></tag>
	  <item>

If <c>false</c>, disables the client to connect to the server
	    if any user interaction is needed, such as accepting
	    the server to be added to the <c>known_hosts</c> file, or
	    supplying a password. Defaults to <c>true</c>.
	    Even if user interaction is allowed it can be
	    suppressed by other options, such as <c>silently_accept_hosts</c>
	    and <c>password</c>. However, those optins are not always desirable
	    to use from a security point of view.

	  </item>

	  <tag><c><![CDATA[{disconnectfun, fun(Reason:term()) -> _}]]></c></tag>
	  <item>

Provides a fun to implement your own logging when a server disconnects the client.

	  </item>

	  <tag><c><![CDATA[{unexpectedfun, fun(Message:term(), Peer) -> report | skip }]]></c></tag>
	  <item>

Provides a fun to implement your own logging or other action when an unexpected message arrives.
	    If the fun returns <c>report</c> the usual info report is issued but if <c>skip</c> is returned no
	    report is generated.

<c>Peer</c> is in the format of <c>{Host,Port}</c>.

	  </item>

	  <tag><c><![CDATA[{public_key_alg, 'ssh-rsa' | 'ssh-dss'}]]></c></tag>
	  <item>
	    <note>

This option is kept for compatibility. It is ignored if the <c>preferred_algorithms</c>
	      option is used. The equivalence of <c>{public_key_alg,'ssh-dss'}</c> is
	      <c>{preferred_algorithms, [{public_key,['ssh-dss','ssh-rsa']}]}</c>.

	    </note>

Sets the preferred public key algorithm to use for user
	    authentication. If the preferred algorithm fails,
	    the other algorithm is tried. The default is
	    to try <c><![CDATA['ssh-rsa']]></c> first.

	  </item>

	  <tag><c><![CDATA[{pref_public_key_algs, list()}]]></c></tag>
	  <item>
	    <note>

This option is kept for compatibility. It is ignored if the <c>preferred_algorithms</c>
	      option is used. The equivalence of <c>{pref_public_key_algs,['ssh-dss']}</c> is
	      <c>{preferred_algorithms, [{public_key,['ssh-dss']}]}</c>.

	    </note>

List of public key algorithms to try to use.
	    <c>'ssh-rsa'</c> and <c>'ssh-dss'</c> are available.
	    Overrides <c><![CDATA[{public_key_alg, 'ssh-rsa' | 'ssh-dss'}]]></c>

	  </item>

	  <tag><c><![CDATA[{preferred_algorithms, algs_list()}]]></c></tag>
	  <item>

List of algorithms to use in the algorithm negotiation. The default <c>algs_list()</c> can
	    be obtained from <seealso marker="#default_algorithms/0">default_algorithms/0</seealso>.

Here is an example of this option:

{preferred_algorithms,
 [{public_key,['ssh-rsa','ssh-dss']},
  {cipher,[{client2server,['aes128-ctr']},
           {server2client,['aes128-cbc','3des-cbc']}]},
  {mac,['hmac-sha2-256','hmac-sha1']},
  {compression,[none,zlib]}
}

The example specifies different algorithms in the two directions (client2server and server2client), for cipher but specifies the same
algorithms for mac and compression in both directions. The kex (key exchange) and public key algorithms are set to their default values,
kex is implicit but public_key is set explicitly.

        <warning>

Changing the values can make a connection less secure. Do not change unless you
	  know exactly what you are doing. If you do not understand the values then you
	  are not supposed to change them.

	</warning>
	  </item>

	  <tag><c><![CDATA[{dh_gex_limits,{Min=integer(),I=integer(),Max=integer()}}]]></c></tag>
	  <item>

Sets the three diffie-hellman-group-exchange parameters that guides the connected server in choosing a group.
	    See RFC 4419 for the function of thoose.  The default value is <c>{512, 1024, 4096}</c>.

	  </item>

	  <tag><c><![CDATA[{connect_timeout, timeout()}]]></c></tag>
	  <item>

Sets a time-out on the transport layer
	    connection. For <c>gen_tcp</c> the time is in milli-seconds and the default value is
	    <c>infinity</c>.

	  </item>
	  <tag><c><![CDATA[{user, string()}]]></c></tag>
          <item>

Provides a username. If this option is not given, <c>ssh</c>
	    reads from the environment (<c><![CDATA[LOGNAME]]></c> or
	    <c><![CDATA[USER]]></c> on UNIX,
	    <c><![CDATA[USERNAME]]></c> on Windows).

          </item>
	  <tag><c><![CDATA[{password, string()}]]></c></tag>
          <item>

Provides a password for password authentication.
	    If this option is not given, the user is asked for a
	    password, if the password authentication method is
	    attempted.

          </item>
	  <tag><c><![CDATA[{key_cb, atom()}]]></c></tag>
	  <item>

Module implementing the behaviour
	    <seealso marker="ssh_client_key_api">ssh_client_key_api</seealso>.
	    Can be used to customize the handling of public keys.

	  </item>
	  <tag><c><![CDATA[{quiet_mode, atom() = boolean()}]]></c></tag>
	  <item>

If <c>true</c>, the client does not print anything on authorization.

	  </item>

	  <tag><c><![CDATA[{id_string, random | string()}]]></c></tag>
	  <item>

The string that the client presents to a connected server initially.  The default value is "Erlang/VSN" where VSN is the ssh application version number.

The value <c>random</c> will cause a random string to be created at each connection attempt.  This is to make it a bit more difficult for a malicious peer to find the ssh software brand and version.

	  </item>

	  <tag><c><![CDATA[{fd, file_descriptor()}]]></c></tag>
	  <item>

Allows an existing file descriptor to be used
	  (by passing it on to the transport protocol).
</item>
	  <tag><c><![CDATA[{rekey_limit, integer()}]]></c></tag>
	  <item>

Provides, in bytes, when rekeying is to be initiated.
	    Defaults to once per each GB and once per hour.

	  </item>
	  <tag><c><![CDATA[{idle_time, integer()}]]></c></tag>
	  <item>

Sets a time-out on a connection when no channels are active.
	  Defaults to <c>infinity</c>.
</item>
	  <tag><c><![CDATA[{ssh_msg_debug_fun, fun(ConnectionRef::ssh_connection_ref(), AlwaysDisplay::boolean(), Msg::binary(), LanguageTag::binary()) -> _}]]></c></tag>
	  <item>

Provide a fun to implement your own logging of the SSH message SSH_MSG_DEBUG. The last three parameters are from the message, see RFC4253, section 11.3. The <c>ConnectionRef</c> is the reference to the connection on which the message arrived. The return value from the fun is not checked.

The default behaviour is ignore the message.
	    To get a printout for each message with <c>AlwaysDisplay = true</c>, use for example <c>{ssh_msg_debug_fun, fun(_,true,M,_)-> io:format("DEBUG: ~p~n", [M]) end}</c>

	  </item>

	</taglist>
      </desc>
    </func>

    <func>
      <name>connection_info(ConnectionRef, [Option]) ->[{Option,
      Value}]</name>
      <fsummary>Retrieves information about a connection.</fsummary>
      <type>
        <v>Option = client_version | server_version | user | peer | sockname </v>
	<v>Value = [option_value()] </v>
	<v>option_value() = {{Major::integer(), Minor::integer()}, VersionString::string()} |
	User::string() |  Peer::{inet:hostname(), {inet::ip_adress(), inet::port_number()}} |
	Sockname::{inet::ip_adress(), inet::port_number()}</v>
      </type>
      <desc>

Retrieves information about a connection.

      </desc>
    </func>

    <func>
      <name>daemon(Port) -> </name>
      <name>daemon(Port, Options) -> </name>
      <name>daemon(HostAddress, Port, Options) -> {ok,
      ssh_daemon_ref()} | {error, atom()}</name>
      <fsummary>Starts a server listening for SSH connections
      on the given port.</fsummary>
      <type>
        <v>Port = integer()</v>
	<v>HostAddress = ip_address() | any</v>
	<v>Options = [{Option, Value}]</v>
        <v>Option = atom()</v>
	<v>Value = term()</v>
      </type>
      <desc>

Starts a server listening for SSH connections on the given
        port.

Options:

        <taglist>
	  <tag><c><![CDATA[{inet, inet | inet6}]]></c></tag>
	  <item>
IP version to use when the host address is specified as <c>any</c>.
</item>
	  <tag><c><![CDATA[{subsystems, [subsystem_spec()]}]]></c></tag>
	  <item>

Provides specifications for handling of subsystems. The
	    "sftp" subsystem specification is retrieved by calling
	    <c>ssh_sftpd:subsystem_spec/1</c>. If the subsystems option is
	    not present, the value of
	    <c>[ssh_sftpd:subsystem_spec([])]</c> is used.
	    The option can be set to the empty list if
	    you do not want the daemon to run any subsystems.

	  </item>
	  <tag><c><![CDATA[{shell, {Module, Function, Args} |
	  fun(string() = User) - > pid() | fun(string() = User,
	  ip_address() = PeerAddr) -> pid()}]]></c></tag>
	  <item>

Defines the read-eval-print loop used when a shell is
	    requested by the client. The default is to use the Erlang shell:
	    <c><![CDATA[{shell, start, []}]]></c>

	  </item>
	  <tag><c><![CDATA[{ssh_cli, {channel_callback(),
	  channel_init_args()} | no_cli}]]></c></tag>
	  <item>

Provides your own CLI implementation, that is, a channel callback
	    module that implements a shell and command execution. The shell
	    read-eval-print loop can be customized, using the
	    option <c>shell</c>. This means less work than implementing
	    an own CLI channel. If set to <c>no_cli</c>, the CLI channels
	    are disabled and only subsystem channels are allowed.

	  </item>
	  <tag><c><![CDATA[{user_dir, string()}]]></c></tag>
	  <item>

Sets the user directory. That is, the directory containing
	    <c>ssh</c> configuration files for the user, such as
	    <c><![CDATA[known_hosts]]></c>, <c><![CDATA[id_rsa,
	    id_dsa]]></c>, and
	    <c><![CDATA[authorized_key]]></c>. Defaults to the
	    directory normally referred to as
	    <c><![CDATA[~/.ssh]]></c>.

	  </item>
          <tag><c><![CDATA[{system_dir, string()}]]></c></tag>
          <item>

Sets the system directory, containing the host key files
            that identify the host keys for <c>ssh</c>. Defaults to
            <c><![CDATA[/etc/ssh]]></c>. For security reasons,
            this directory is normally accessible only to the root user.

	  </item>

	  <tag><c><![CDATA[{auth_methods, string()}]]></c></tag>
	  <item>

Comma-separated string that determines which
	    authentication methods that the server is to support and
	    in what order they are tried. Defaults to
	    <c><![CDATA["publickey,keyboard-interactive,password"]]></c>

          </item>

	  <tag><c><![CDATA[{auth_method_kb_interactive_data, PromptTexts}]]>

where:

PromptTexts = kb_int_tuple()  | fun(Peer::{IP::tuple(),Port::integer()}, User::string(), Service::string()) ->  kb_int_tuple()

kb_int_tuple() = {Name::string(), Instruction::string(), Prompt::string(), Echo::boolean()}</c>
	  </tag>
	  <item>

Sets the text strings that the daemon sends to the client for presentation to the user when using <c>keyboar-interactive</c> authentication. If the fun/3 is used, it is called when the actual authentication occurs and may therefore return dynamic data like time, remote ip etc.

The parameter <c>Echo</c> guides the client about need to hide the password.

The default value is:
	    <c>{auth_method_kb_interactive_data, {"SSH server", "Enter password for \""++User++"\"", "password: ", false}></c>

          </item>

	  <tag><c><![CDATA[{user_passwords, [{string() = User,
	  string() = Password}]}]]></c></tag>
	  <item>

Provides passwords for password authentication. The passwords
	    are used when someone tries to connect to the server and
	    public key user-authentication fails. The option provides
	    a list of valid usernames and the corresponding passwords.

          </item>
          <tag><c><![CDATA[{password, string()}]]></c></tag>
          <item>

Provides a global password that authenticates any
              user. From a security perspective this option makes
	      the server very vulnerable.

	  </item>

	  <tag><c><![CDATA[{preferred_algorithms, algs_list()}]]></c></tag>
	  <item>

List of algorithms to use in the algorithm negotiation. The default <c>algs_list()</c> can
	    be obtained from <seealso marker="#default_algorithms/0">default_algorithms/0</seealso>.

Here is an example of this option:

{preferred_algorithms,
 [{public_key,['ssh-rsa','ssh-dss']},
  {cipher,[{client2server,['aes128-ctr']},
           {server2client,['aes128-cbc','3des-cbc']}]},
  {mac,['hmac-sha2-256','hmac-sha1']},
  {compression,[none,zlib]}
}

The example specifies different algorithms in the two directions (client2server and server2client), for cipher but specifies the same
algorithms for mac and compression in both directions. The kex (key exchange) and public key algorithms are set to their default values,
kex is implicit but public_key is set explicitly.

        <warning>

Changing the values can make a connection less secure. Do not change unless you
	  know exactly what you are doing. If you do not understand the values then you
	  are not supposed to change them.

	</warning>
	  </item>

	  <tag><c><![CDATA[{dh_gex_groups, [{Size=integer(),G=integer(),P=integer()}] | {file,filename()} }]]></c></tag>
	  <item>

Sets the groups that the server may choose among when diffie-hellman-group-exchange is negotiated.
	    See RFC 4419 for details.

If the parameter is <c>{file,filename()}</c>, the file must exist and have one or more three-tuples terminated by a dot. The interpretation is as if the tuples had been given directly in the option.  The file is read when the daemon starts.

	  </item>

	  <tag><c><![CDATA[{pwdfun, fun(User::string(), password::string()) -> boolean()}]]></c></tag>
	  <item>

Provides a function for password validation. This function is called
	      with user and password as strings, and returns
	      <c><![CDATA[true]]></c> if the password is valid and
	      <c><![CDATA[false]]></c> otherwise.

	  </item>

	  <tag><c><![CDATA[{negotiation_timeout, integer()}]]></c></tag>
	  <item>

Maximum time in milliseconds for the authentication negotiation.
	    Defaults to 120000 (2 minutes). If the client fails to log in within this time,
	    the connection is closed.

	  </item>

	  <tag><c><![CDATA[{max_sessions, pos_integer()}]]></c></tag>
	  <item>

The maximum number of simultaneous sessions that are accepted at any time
	    for this daemon. This includes sessions that are being authorized.
	    Thus, if set to <c>N</c>, and <c>N</c> clients have connected but not started
	    the login process, connection attempt <c>N+1</c> is aborted.
	    If <c>N</c> connections are authenticated and still logged in, no more logins
	    are accepted until one of the existing ones log out.

The counter is per listening port. Thus, if two daemons are started, one with
	    <c>{max_sessions,N}</c> and the other with <c>{max_sessions,M}</c>, in total
	    <c>N+M</c> connections are accepted for the whole <c>ssh</c> application.

Notice that if <c>parallel_login</c> is <c>false</c>, only one client
	    at a time can be in the authentication phase.

By default, this option is not set. This means that the number is not limited.

	  </item>

	  <tag><c><![CDATA[{parallel_login, boolean()}]]></c></tag>
	  <item>

If set to false (the default value), only one login is handled at a time.
	    If set to true, an unlimited number of login attempts are allowed simultaneously.

If the <c>max_sessions</c> option is set to <c>N</c> and <c>parallel_login</c>
	    is set to <c>true</c>, the maximum number of simultaneous login attempts at any time is
	    limited to <c>N-K</c>, where <c>K</c> is the number of authenticated connections present
	    at this daemon.

	    <warning>

Do not enable <c>parallel_logins</c> without protecting the server by other means,
	      for example, by the <c>max_sessions</c> option or a firewall configuration. If set to
	      <c>true</c>, there is no protection against DOS attacks.

	    </warning>
	  </item>

	  <tag><c><![CDATA[{minimal_remote_max_packet_size, non_negative_integer()}]]></c></tag>
	  <item>

The least maximum packet size that the daemon will accept in channel open requests from the client.  The default value is 0.

	  </item>

	  <tag><c><![CDATA[{id_string, random | string()}]]></c></tag>
	  <item>

The string the daemon will present to a connecting peer initially.  The default value is "Erlang/VSN" where VSN is the ssh application version number.

The value <c>random</c> will cause a random string to be created at each connection attempt.  This is to make it a bit more difficult for a malicious peer to find the ssh software brand and version.

	  </item>

	  <tag><c><![CDATA[{key_cb, atom()}]]></c></tag>
	  <item>

Module implementing the behaviour
	    <seealso marker="ssh_server_key_api">ssh_server_key_api</seealso>.
	    Can be used to customize the handling of public keys.

	  </item>

	  <tag><c>{profile, atom()}</c></tag>
	  <item>

Used together with <c>ip-address</c> and <c>port</c> to
	    uniquely identify a ssh daemon. This can be useful in a
	    virtualized environment, where there can be more that one
	    server that has the same <c>ip-address</c> and
	    <c>port</c>. If this property is not explicitly set, it is
	    assumed that the the <c>ip-address</c> and <c>port</c>
	    uniquely identifies the SSH daemon.

	  </item>

	  <tag><c><![CDATA[{fd, file_descriptor()}]]></c></tag>
	  <item>

Allows an existing file-descriptor to be used
	  (passed on to the transport protocol).
</item>
	  <tag><c><![CDATA[{failfun, fun(User::string(),
	  PeerAddress::ip_address(), Reason::term()) -> _}]]></c></tag>
	  <item>

Provides a fun to implement your own logging when a user fails to authenticate.

	  </item>
	  <tag><c><![CDATA[{connectfun, fun(User::string(), PeerAddress::ip_address(),
	  Method::string()) ->_}]]></c></tag>
	  <item>

Provides a fun to implement your own logging when a user authenticates to the server.

	  </item>
	  <tag><c><![CDATA[{disconnectfun, fun(Reason:term()) -> _}]]></c></tag>
	  <item>

Provides a fun to implement your own logging when a user disconnects from the server.

	  </item>

	  <tag><c><![CDATA[{unexpectedfun, fun(Message:term(), Peer) -> report | skip }]]></c></tag>
	  <item>

Provides a fun to implement your own logging or other action when an unexpected message arrives.
	    If the fun returns <c>report</c> the usual info report is issued but if <c>skip</c> is returned no
	    report is generated.

<c>Peer</c> is in the format of <c>{Host,Port}</c>.

	  </item>

	  <tag><c><![CDATA[{ssh_msg_debug_fun, fun(ConnectionRef::ssh_connection_ref(), AlwaysDisplay::boolean(), Msg::binary(), LanguageTag::binary()) -> _}]]></c></tag>
	  <item>

Provide a fun to implement your own logging of the SSH message SSH_MSG_DEBUG. The last three parameters are from the message, see RFC4253, section 11.3. The <c>ConnectionRef</c> is the reference to the connection on which the message arrived. The return value from the fun is not checked.

The default behaviour is ignore the message.
	    To get a printout for each message with <c>AlwaysDisplay = true</c>, use for example <c>{ssh_msg_debug_fun, fun(_,true,M,_)-> io:format("DEBUG: ~p~n", [M]) end}</c>

	  </item>

	</taglist>
      </desc>
    </func>

    <func>
      <name>default_algorithms() -> algs_list()</name>
      <fsummary>Get a list declaring the supported algorithms</fsummary>
      <desc>

Returns a key-value list, where the keys are the different types of algorithms and the values are the
	algorithms themselves. An example:

20> ssh:default_algorithms().
[{kex,['diffie-hellman-group1-sha1']},
 {public_key,['ssh-rsa','ssh-dss']},
 {cipher,[{client2server,['aes128-ctr','aes128-cbc','3des-cbc']},
          {server2client,['aes128-ctr','aes128-cbc','3des-cbc']}]},
 {mac,[{client2server,['hmac-sha2-256','hmac-sha1']},
       {server2client,['hmac-sha2-256','hmac-sha1']}]},
 {compression,[{client2server,[none,zlib]},
               {server2client,[none,zlib]}]}]
21>

      </desc>
    </func>

    <func>
      <name>shell(Host) -> </name>
      <name>shell(Host, Option) -> </name>
      <name>shell(Host, Port, Option) -> _</name>
      <fsummary>Starts an interactive shell over an SSH server.</fsummary>
      <type>
        <v>Host = string()</v>
	<v>Port = integer()</v>
	<v>Options - see ssh:connect/3</v>
      </type>
      <desc>

Starts an interactive shell over an SSH server on the
	given <c>Host</c>. The function waits for user input,
	and does not return until the remote shell is ended (that is,
	exit from the shell).

      </desc>
    </func>

    <func>
      <name>start() -> </name>
      <name>start(Type) -> ok | {error, Reason}</name>
      <fsummary>Starts the SSH application.</fsummary>
      <type>
        <v>Type =  permanent | transient | temporary</v>
	<v>Reason = term() </v>
      </type>
      <desc>

Utility function that starts the applications <c>crypto</c>, <c>public_key</c>,
	and <c>ssh</c>. Default type is <c>temporary</c>.
	For more information, see the <seealso marker="kernel:application">application(3)</seealso>
	manual page in <c>kernel</c>.

      </desc>
    </func>

    <func>
      <name>stop() -> ok | {error, Reason}</name>
      <fsummary>Stops the <c>ssh</c> application.</fsummary>
      <type>
        <v>Reason = term()</v>
      </type>
      <desc>

Stops the <c>ssh</c> application.
	For more information, see the <seealso marker="kernel:application">application(3)</seealso>
	manual page in <c>kernel</c>.

      </desc>
    </func>

    <func>
      <name>stop_daemon(DaemonRef) -> </name>
      <name>stop_daemon(Address, Port) -> ok </name>
      <fsummary>Stops the listener and all connections started by
      the listener.</fsummary>
      <type>
	<v>DaemonRef = ssh_daemon_ref()</v>
	<v>Address = ip_address()</v>
	<v>Port = integer()</v>
      </type>
      <desc>

Stops the listener and all connections started by
	the listener.

      </desc>
    </func>

    <func>
      <name>stop_listener(DaemonRef) -> </name>
      <name>stop_listener(Address, Port) -> ok </name>
      <fsummary>Stops the listener, but leaves existing connections started
	by the listener operational.</fsummary>
      <type>
	<v>DaemonRef = ssh_daemon_ref()</v>
        <v>Address = ip_address()</v>
	<v>Port = integer()</v>
      </type>
      <desc>

Stops the listener, but leaves existing connections started
	by the listener operational.

      </desc>
    </func>

  </funcs>

</erlref>


text:
Wise Acres. Harley watching a storm coming in, Mighty Mouse grazing.
Upended Stock Tanks, Empty Feeders.
All the wonderful horse friends have left Wise Acres. Amy, the last one to depart, was a Tim Trabon intervention, a companion for Harley who was bereft and needed some company. When Harley passed away (a week before Tim did) it signalled the emphatic end of an era. Freddie had bought him for me well over thirty years ago as a colt. His good friend Amy made it through the last awful winter, then gave up the ghost on her friend Harley's grave. It was the last place she'd seen him, and she chose to graze there a lot. It's where she died and is buried. Sweet and gentle, she was an Argentine Criollo, an agile polo pony in her previous life.
Then the rains came. The storm season. But the damned tornadoes are no longer a threat to the horses.
I had a big beautiful Appaloosa with rust spots who loved storms. In driving rain and hail he'd be out there grazing. I think it must have felt like a massage to him. He looked like a war horse, but what a gentle old soul. Dutch.
Tanks for the memories.
I turned the stock tanks over, no need for them anymore.The salt blocks have melted away. The barn swallows are the only inhabitants of the loafing shed all the horses had liked for shade and shelter. They gathered there and seemed to conspire, to plan. When the little guy comes out with the fly spray, you all surround him and I'll walk in front of him—don't let him go until he knuckle-rubs our backs, and scratches our bellies.
Blue, Roxy, Dutch, Jack Ford, Mighty Mouse, Red, Lopez, Harley and Amy. The denizens of Wise Acres. Before them, Percy, Senor, Bullseye, Mr. Walker, Belle, and a dozen others. All with distinct personalities. Marvelous creatures with dignity, humor, a bit of crankiness, and all incredibly giving when it came to that. Harley was an actor. Ears back when I'd feed him. I'd laugh and pull his ears and he'd say, sotto voce, stop that, you'll ruin my pasture cred in front of the herd.
He was also a joker. I'd be in his pasture intent on some chore, tightening some fence wire, and he'd come up behind me and tap me with his nose, causing me to jump, startled. He loved that. Any tools I would lay in the grass he'd pick up and run away with, hammer, pliers.
Anyway, end of an era, and a fine one at that. Before the latest and final loss, they had all taught me plenty. As I say in the upcoming book, Chickens One Day, Feathers The Next, their teaching methods were varied but fell mainly into one of two camps: The "Bad things happen fast" method, and the "Don't do that again" method. Often the two were combined. I've been kicked, bitten, rolled on, dragged, chased, bucked off, run off with, tree branched and humiliated. I always came back for more. "The Horse Worrier" in the afore-mentioned book will explain a whole lot about the G-equine epoch which started when I was a little kid in Tulsa, and then haunted me all my days. I did love me some fine, fine horses.
Town for sale. Cal-Nev-Ari, Nevada.
The cropduster I wrote into the book
I've never been there but I wrote about it in Ruined Days, a thriller that got good reviews and few sales. I was there in my mind. Felt the dust and grit whipped up by the wind, saw the lone biplane, a yellow cropduster, rocking on its wheels until the desert wind subsided. Tri-cornered colored flags fluttered and snapped at an abandoned fireworks stand, and a lone telephone booth stood in the cheatgrass fifty feet from the flagged lot in its own version of abandonment.
The doors squealed on rusty hinges when Travis, my protagonist, entered the booth, and wouldn't quite close but who could hear him anyway? He made a call in that wood and glass booth, read off some coordinates from the cell phone he took in with him. The glass on the phone booth windows was somewhat frosted from the constant barrage of wind-borne grit. A half hour later a Cessna landed on the makeshift runway, but that's another part of the story.
I noired the community down some--it's bustling compared to what I wrote about it, but I needed it to be a bit more desolate.
Town comes with casino, volunteer fire department
The town is real. In the book it was for sale for fifteen million dollars. It went to seventeen mil a few months after Ruined Days was published, and now it can be had for eight million. Its name (pronounced CalNevAir) derives from its location in Nevada close to the California and Arizona borders. A couple named Slim and Nancy Kidwell pioneered the place about fifty years ago, Slim passed on, and now Nancy is ready to sell. As a successful prospect you'd buy the town, airstrip, casino with slots, a diner and a bar. Listed is a motel and various other businesses including a convenience store.
Of the 350 residents, some are pilots who keep their planes in their driveways and taxi to the nearby airstrip.
When the Kidwells came not much existed but a dusty military airstrip. They had to haul water from the Colorado River. They planted barley, dug a well, got a land patent from the BLM and the town was born. None of that was easy. They were true pioneers, the last of the breed some say. If she sells Cal-Nev-Ari, she plans to stay. She's been there over fifty years, and likes the view, the vibe. And the town likes Nancy, from what I've read.
Book plug, of course
If you're interested, there are reasons to buy. It's a casino town with its own airstrip. There's a motel. The highway, US Route 95, connects to Las Vegas less than 70 miles away. It's on the market and the listing is here. If you buy it, tell 'em I get six percent for pointing you there. Nevada is the only state where prostitution is legal, but don't think Cal-Nev-Ari is ripe for a bunny ranch, as it's in Clark County where they're strictly prohibited. As of 2018, there's no income tax collected in Nevada. No corporate tax, no franchise tax, and no inventory tax. If I had eight mil, I'd be there. Writing and sculpting. I bet Freddie would even consider it. Great place for her jewelry and perhaps she'd learn to do a little cropdusting.
And it's sixty-eight degrees on this March third, compared to 20 in southeast Kansas. Maybe some of you well-heeled readers would like to go in with me. If you have a plane we could buzz over there.
This is as good a place as any to pitch Ruined Days, a pretty decent thriller. It can be accessed here.
A book for 2019, and maybe two
This may be the cover…
A book of essays, Chickens One Day, Feathers The Next, has muscled its way into line ahead of the thriller L.A. Hardscape, and some of the pieces are pretty sober. Some aren't. "Publishers Never Call," for instance, is downright silly. The title piece is about death, though the quote itself comes from the subject, USMC Captain A. Rudolph Green, who was a close friend and one of those crazy buddies for whom no escalation of whimsy was ever too much.
I recall the time he stood on the mat outside a grocery store which kept the glass door from opening outward until a gaggle of angry customers and the store manager were all shouting at him. He handed me the keys to his Jaguar and said, "We may need a fast getaway from this one," studying the effect of his experiment on the faces pressed against the glass. As I drove up, he stepped aside, and the crowd at the door fell outside upon one another. He leaped into the Jag roadster with the steaks he'd bought, and it was off to another adventure. I loved him for these outrageous moments and for the whiskey-fueled talks that lasted into the morning hours and may have involved philosophy of a very high level.
He once visited me at the University of Arkansas and, at a Razorback football game, was beside himself, helpless with tear-causing laughter, when the fans erupted with the victory cry, "Whooooo PIG, Soooooeyyyyy," "Did they really yell that," he'd say every time. "And you chose this school."
There are essays, memoirs, about horses, Louisiana, motorcycles,Tulsa, KC, Van Gogh, Cormac McCarthy, rejections, rodeoing, birds, advertising, boxing. Oh, it's varied and faceted, as we say when neglecting themes altogether.
Ben Carmean is working on a cover, which means the book will look professional, inviting, of interest. I hope you'll find it all of those and more. All my books have marvelous covers because they're all done by Ben. I don't know what I'll do when he finally says, "I'm not doing any more covers for you. You never paid me for the first one."
It's good enough to have merited a contract from the publisher who did Ruined Days and Resume Speed, and it will join those books on Amazon, Barnes & Noble and other sites.
John Paul Drum, thinking about this…
So, if all goes right, 2019 will feature two more G-books. I just need to finish the other one. And, first friday in May, The Hilliard Gallery opening is a G-solo show, with a title from the Chickens book, "A Love Letter To Tensas Parish." Some of the sculpture is inspired by some boyhood time spent in St. Joe, Louisiana, and there will be deep south blues harp and guitar and drum music by John Paul Drum and The Big Three. Louisiana finger food and Mudbug Beer, too.
Some men and women from the parish will be presented in pictures and short bios; the mayor, a poet, a young distiller, a lady entrepreneur. I'm working on sculpture now and it's more fun than it probably should be. I saw things down there, or believe I did, that direct me in the welding of these pieces, some of which are effigial, some metaphorical. Bayou freedom informs them. I can't explain it. Perhaps the pieces will speak for themselves. John Paul Drum's music will surely help. It should be quite fun and I hope you can make it. Six to nine, and later, May 3rd, Hilliard Gallery, 1820 McGee, Crossroads. Just follow the strains of southern blues in off the sidewalk. (Click this for a youtube of him and Nine Below Zero)
They just go on an on. Until they go off.
The Double Dog Dare of Christmas Lighting
That's a fuse? Good luck with that.
There. I proved it. The lighting exists. I swagged lights across the front of the small pasture by the road, and they all worked. All fourteen strands of them. For years, Then, this year, the lighting scheme defied me. It kept blowing the first strand and they'd all go out. The definition of insanity was invoked. I replaced the first strand again and again. Pow. So I bought all new lights. This after installing those tiny fuses into the blown strand only to have it go out again. Have you ever tried to mess with those little fuses?
All new lights shone satisfactorily and I turned around to walk back inside. I paused to savor the lights one more time before I shut the door. No lights. Darkness taunted me.
It has become a...thing. Freddie likes to see them when she drives home at night. A beacon of warmth and Christmas cheer to greet her after the long drive. It's the least I can do for the woman who supports my writing and sculpture habits. The last few nights, no lights. This is unacceptable.
I shorten the string daily, taking the farthest string and replacing the first blown string. Sure, the box says three strings only. But for years I've strung together fourteen of them with no problem. Now it's as if they're daring me to just try that again. Double dare. The double dog dare even, and I have taken them up on it. I have stepped up, put my tongue on the frozen flagpole. You dasn't dismiss a double dog dare and risk that shadow of humiliation. Always with you, starting upon awakening. He backed down from the DDD.
They're still on. Tread lightly.
Two nights ago the male aussie puppy chewed a strand. They popped and all went out and he shrieked, ran to the house. This was an act of dog. I could live with it. I replaced that strand. There was no mystery to it. I didn't have to be smarter than the lights this time. I can handle this, I felt. And the pup had a moment of training, to boot.
I just looked outside. They're still on. I'll look once before bedtime. Shh.
The compensatory richness of writing.
Nominations don't mean you're in, just closer…
Sculpture paid little better than a hobby this last year, and the writing bought me a lunch or two. Fifty bucks here, five bucks there. Not enough to keep it up if I didn't love it. The poetry paid off in other ways though. This year brought three nominations for the Pushcart Prize, and the year before paid off in one nomination.
I'll try to put that in perspective; once a poem or piece is accepted in a journal or review, that's a bit of an award all its own. It means I got through the slush piles to acceptance, which means I became one of the few to be published in that issue. Maybe I was in the one percent to three percent. Then, out of the hundreds of poems published in that journal during the year, that poem was chosen to represent the review as a nomination for the Pushcart Prize. Each publication sends six nominees. Six.
The nominations are their own reward; to actually be included in the prize book is further winnowing of many entries. Sort of a pipe dream, but it could happen.
This poem was one of the six that the editor of Shot Glass Journal/Muse Pie Press sent this year. It's an introspective little poem that just popped out the day after my sister's funeral, when I was winterizing, titled Time to Think
Turn the pots over so they don't freeze and break.
Cold season again, each year the big flower pots of
concrete and glazed clay get heavier. The season got
heavier yesterday when my sister was buried, frigid
day, it snowed a bit just a shot across the bow, a
warning from the slate gray frigate bearing down.
Time to put the stock tank heaters out. Time to
think about time. Not so much of it left I think.
The following day an email informed me that No Tokens had submitted "Grapette" as one of their six nominations. It, too, deals with age, and my sister, though from a lighter angle.
The best for a hot kid on a hot Louisiana day. RC is a close second. Then Nehi.
Grapette
I pour grape juice into an old bottle
one I've cleaned and judged suitable
for pretending the contents are Grapette
and I'm a small boy in Louisiana
I drink and see pecan trees and the
edge of the bayou where I ventured to
find a dead cow, legs up, vultures
busying about looking like old men in
feathery overcoats the smell overpowering
and I ran home chased by swamp things
like The Heap, a comic book I allowed
into my fears and troubled dreams
then, the sunshine again. Some safety by
the front stoop, a dog that would guard me,
my annoying sister who told me I was
in trouble, but she always told me that.
The only thing missing is the fizz that
made me belch when I drank too fast and
and then I see the satellite dish in the
farmyard on a post and I'm old again.
The poem that Ramingo's Porch sent is dystopian, much longer, practically an epic poem titled The Undefeatist, and rather than reproduce it here, I'll just provide this link. You can access it if you wish. (It first appeared in Longshot Island as a set of poems titled Thunderbolt Poems—it's the second poem down.)
Other things happened on the writing front. I submitted some guest blogs that were accepted, and some articles. I made a foray into film with an article that Stage 32 liked enough to publish. Click here for that one.
I'm happy to say I made it into Rattle twice in one year, no small accomplishment for me as I've been trying to crack that ceiling for a couple of years. The latest attempt won Editor's Choice in their monthly Ekphrastic Challenge where you pair up a poem with a supplied piece of art. Its title is Locked Brakes on Blacktop, and both the poem and the artwork can be found here.
The downside? 314 rejections. That can get old, especially in an unbroken string week after week. But it's like mining, I guess. You just keep chipping away--the vein might be a few feet ahead in the dark tunnel. You can't stop now. And with each written word, hopefully, you're getting better at the game. Who knows, that next novel might be what I need to strike it middle class.
A Room with a Vision
The Sears Vallonia could be configured for five or eight rooms, one bath. The line forms here.
When my folks moved to Tulsa in 1949, was our first house there a Sears kit home? Could be. It sure looked like this one described as "Offered for a mere $1,465 in 1921, the Sears Vallonia could be configured to include five or eight rooms, depending on whether the owner wanted a second floor. The exterior is characterized by its large porch and a broad dormer with a three-paned window." (Compliments of Bob Vila, in an article on vintage catalog kit houses.)
Vallonia or not, wherever we moved, I always got the topmost floor with leaning ceilings that would bump my head if I wasn't careful.
The folks went to the trouble of selling me on this particular upstairs attic-like room. ("Hell, boy, I wish I'd had a room like this when I was your age." I'm betting he had a better one. This was my stepfather who called me "boy" because it was kind of John Wayne-ish back then. Or was he calling me Hellboy, which would have been way cooler.)
I was born too late. I could've had a Caddy with paper route savings.
The Sell. That's how I knew it was a raw deal. Hot as hell in summer, stuffy in winter. But there was no wiggle room, I knew I was stuck. My sister got a room with the adults downstairs. The Sell. They used it for broccoli, for "applying yourself" at school. For acting more like polite kids who are probably doing time in Leavenworth if they're still alive.
But I learned to deep-read in this room thanks to stuff the previous owner left as not worth carting away. In this Vallonia-like house on Wheeling Ave. in Tulsa, a huge stack of old Saturday Evening Posts and Fortunes was my inheritance. Fascinating stuff. They'd been there since the 20's, and bore the owner's name on mailing labels on the covers.
The gateway drug to motorcycles…
I looked at every page of every magazine, marveling at the low costs of automobiles in the 1930s (Cadillacs for $800 up) and reading wonderful fiction stories about Alexander Botts and the Earthworm Tractor Company. I probably read my first F. Scott Fitzgerald story in one of them. There were also some Ladies' Home Journals in there, but the Fortunes and Posts captured my interest. The covers were thrilling and the stories and ads whirled me back in time. They were musty smelling but the inks were bright due to their time-capsule-like storage.
I read that "the war to end all wars" was WWI, and it puzzled me greatly because the year was 1949 and WWII had ended four years before. Why hadn't the first big war prevented the second? But I didn't dwell on existential questions for long. By the dormer windows in a cabinet I found a neat pile of vintage Popular Mechanics with ads for Velocette motorcycles, Whizzers and King Midget automobiles. How to make your own Jet Pack. I could fly out that dormer window and buzz the neighbors, zoom over to Utica Square, strafe the mean dog on Peoria with my Red Ryder BB gun.
I was introduced to flying automobiles and a car that would become a boat as you drove into a lake or the ocean. Cooking with radar and microwaves—like that would ever happen.
1949 was the year, Truman was president, and a wildly inventive car had just come on the scene, one with an enveloped silhouette without bulbous fenders, the 1949 Ford. The Sears Roebuck catalogs listed televisions and it looked like we might get one. Tulsa was a boomtown, Oil Capital of the World, and I was infected for life with the optimism of the era.
To this very day, I think "It's a Tulsa kind of Day," when things are going right and I'm relatively free of aches and pains, and the dogs are playing as we walk. The 1949 Ford in the driveway somehow reifies and bridges the feeling first encountered in the maybe-Vallonia on Wheeling Avenue. A room with jetpacks, cheap Cadillacs and F. Scott Fitzgerald—and outside that room, an infectious boom town attitude and blue skies and the world on a string.
As Kurt Vonnegut said, "Enjoy the little things in life, because one day you'll look back and realize they were the big things."
"Where do you get your ideas?
I was heading out on the road from my driveway to walk. A truck stopped, disgorged four or five people who were, it seems, there for the farm tour and the winery store down the road. A man stood looking at me, fists on his hips, rared back, said, gruffly, loudly. Even accusingly. "You do all this stuff?" He looked around, surveying an expanse of pasture, fence, house, vehicles, maybe two sculptures. I'd been asked that in the past, and learned the shortest answer suffices. "Yessir!" I answered matching volume and gruffness. He looked around more. Meanwhile a woman had sidled up. Her question was, "Where do you get your ideas?"
Now, this is a benign though broad query impossible to answer. I have a story concocted about conjuring. "I build a fire of sage and hedge, read the smoke. I import pigeons from New Orleans, hexed birds from a priestess down there, and I roast one over the fire. Then I conjure over it. It tells me what to do and I do it."
Everything is connected. It's in the book.
Instead I said, "I don't know. It just sort of happens." That amused all of them, and they conferred over it as I walked away. I played with the thought that the lady was quite serious. Maybe she thought there was an idea store, where silly ideas cost maybe fifteen cents, good ones ten bucks and up. An idea box store.
Where did I get ideas anyway? When I started out in advertising, a notorious sucker-upper of ideas, in a small agricultural print agency in Omaha, I wondered if I would have enough ideas to make a career of it. Daily I scoured the ideascape of my mind for anything that might apply to the problem at hand. Usually how to present grain bins or pesticide or hoof-rot cures to farmers and ranchers. Boilerplate describes the accepted approach.
Cows in galoshes and gun-toting ag sprays masqueraded as ideas for awhile, but I wanted more substantial stuff. I wanted Bill Bernbach Volkswagen ideas.
An unprepossessing little book…
This was about 1961. I frequented old book stores and thrift shops back then, as now. A book printed in 1940 titled "A Technique for Producing Ideas" found me. It was by James Webb Young, an ad icon. A slim hardback of about forty pages with a ho-hum dust jacket. The designer hadn't read the book. I read some of it there, the rest sitting in my shitty old Valiant. I read it again at home. At work. In bars, waiting rooms, lunch counters.
It's a great book. Great. As with a lot of the really great books, people "update" it, improve it, write new forewords to it--my advice, get the original. A first edition can be found for around $25. Five bucks if you're thrift-shop lucky. If it's in hardback it'll always be an old one. One of them has a foreword by Bill Bernbach--you can't go too wrong on that one. The original's foreword is by Reinhold Niebuhr, and it needs no refurbishing, even by a giant like Bernbach. But many things ain't broke, and they get fixed anyhow (in the book you'll find the Pareto principle and some Paretoisms which deal with that a bit).
I'm not going to tell you what's in the book, but here's a rather too-long review of it, the later edition, by a 2012 Brain Picking. Worth a scan if not a read. Get the book.
It's called "Everything is Connected."
On the day the lady asked me "Where do you get your ideas?" I had begun a sculpture. It's called "Everything is Connected," and, as you'll discover by reading Young's book, it's a bit of a coincidence. Or is it? I had started the piece desultorily, not knowing where it might be going. I had a couple of nicely closed pieces of square tubing from Machine Head, and thought I might use them as the base for the piece. They ended up sort of swinging around in the air instead.
So, where did I get that "idea?" From the past. Connections. Some applied physics. Some things that worked and knowing I could weld mild steel to cast iron if it penetrated well enough. Stuff like that. And a certain lack of fear of being wrong, or being derided. In sculpture as in writing there's their way, there's my way, and there is no "the" way. Get the idea? You will if you get the book. Guaranteed. It's not full of a lot of BS or convoluted exercises.
May your ideas be many and bright.
I'm going back someday, come what may, to Blue Bayou
Looks like sculpture to me…
If only in my mind and sculpture and MacBook. Back before the beginning of time, or so it seems, I roamed St. Joseph, Louisiana, the parish seat of Tensas Parish. (Pronounced ten-saw, by the way, like Arkansas) As we get older, I'm told, we become more in touch with our youth and more aware of the distance between now and then. That particular season of my existence began to surface after a spring storm this year which downed some fair-sized trees at Wise Acres. Too large and too heavy to drag off to the brush pile, I resigned myself to sawing them up into manageable chunks.
But the more I looked at them, the more they reminded me of something. Something I had seen many years ago. Tupelo and cypress trees in the bayou, reaching barkless dead fingers out of backwaters and sloughs. And something else. Art made of these expressive pieces of nature. Primitive art, all the more powerful for its lack of, or even avoidance of, artistic sophistication.
I was also experiencing writing blockage on a novel I'm trying to finish for publication in 2019. A switch to sculpture often frees up creative inertia in writing so I began making pieces influenced by childhood memories of Tensas Parish. I became so immersed in it that I didn't much care about the writing; it has become an idée fixe, and the show even has a name this early in the game. "A love letter to Tensas Parish."
A fascinating man, Mayor Fields…(Washington Post Photo)
Four pieces in, I decided to contact some people from there. A talented poet/librarian named Garland Strother surfaced online. He agreed to send me a picture and a short bio. I will be posting his Tensas-oriented poems and materials at the show. I found a young entrepreneur from Tensas Parish, an LSU grad, Joel Brannan, who is building a distillery for his Magnolia brand vodka. I talked to the Mayor, Elvadus Fields, for a delightful hour. The list of honorees is growing.
If you come to the show (Hilliard Gallery, KC crossroads, May, 2019, First Friday May-June) expect to see representatives of Tensas Parish and St. Joe, the parish seat, on the walls. These are interesting people. All the more so, because they belong to an exclusive club: the least populated parish in Louisiana, and they're all making marks.
A little about that neck of the bayou: there are three towns in the parish, St.Joseph, Newellton and Waterproof. The parish butts up to the Mississippi River, and has a couple of big oxbow lakes. Lake Bruin is about 3,000 acres of extremely clear water.
Among the celebrated from Tensas Parish is a bodyguard for Huey P. Long who was present at the "assassination." That's in quotes because it's looking less and less like a murder and more like a ricochet accident. The assailant may not even have been armed, but the gun (they say) he had was a .32 revolver. Long died from a .38 caliber wound. Check it out here for some fascinating history.
Part of what makes Louisiana, Louisiana…
I shot my first duck in the parish bayou, a merganser. We were in a johnboat among the cypress trees, my stepfather, me, and a sweet water spaniel named Suzy who lived with us later in Tulsa. The shotgun was nearly as tall as I was, an Ithaca 16 guage pump that still hangs on the wall all these years later. The duck hit the water but was alive enough to slip in among the cypress roots and evade us. Suzy jumped into the water and caught it, swam back to the boat. It was the only duck we got that day.
So, a rite of passage occurred down there. But I quit hunting altogether about forty years ago. Blasting unarmed creatures when you don't need to do that to survive was counter to my idea of myself. Many things are. But the good people of St. Joe and nearby towns own qualities I would do well to aspire to, even at this late date.
Tensas Parish keeps declining in numbers, in income, in solutions. But I'm thinking with notables like those I've mentioned and those I'll meet, that may start to reverse itself. The mayor mentioned a lady named Vivian who left St. Joe to get a top nursing degree in Maryland. She came back and is investing in the town. She runs a restaurant and is rehabbing a derelict mansion as a home for women who need a sanctuary. I want to get her bio and a photo for the show. And others. I hope to have a nice wall of fame for the show in May. Y'all come, hear?
And I hope that book is on Amazon by then, and you've got a copy and recommended it to your book club and Oprah, and my royalties are better than the $12.74 I got last quarter.

redpajama_set_name: RedPajamaCommonCrawl


Landing pages don't want to be unpleasant. Genuinely, they want to stare arresting rattling gripping in categorical to own the specified have an effect on. On this tutorial, I'm going to coach you exactly recommendations on assemble large touchdown pages in your trade the make use of of a expansive software referred to as Leadpages.
Leadpages is one in all primarily essentially the most well-appreciated touchdown web page instruments accessible this present day. It's simple to make make use of of, ambiance gracious and takes the guesswork out of taking footage leads. It's additionally a heck of much more simple than making an attempt to create a touchdown web page from scratch the make use of of your WordPress or Squarespace theme.
Trust me, I've been there. After I first started designing our on-line web page, Residing to Drag, it took quite a bit longer than I assumed. I designed each touchdown web page from scratch. I would possess been far higher off making the tiny funding into touchdown web page software and saving myself a ship-load of time.
Taking footage leads is one in all THE most vital capabilities that your on-line web page needs to abet. E-mail advertising and marketing is getting an increasing number of vital and in categorical to create your electronic mail guidelines, you want strong touchdown pages.
…And while you examine the whole plan until the tip, you'll additionally examine recommendations on get a vital 'thanks' web page!
Need to be taught extra about touchdown pages and the plan during which they will allow you and your trade?
Enlighten me inside the suggestions under, how will you spend touchdown pages in your on-line web page?
Want extra Residing to Drag?
I really have a question, I try to position my hoplink from CB where the button is and it repeatedly comes up "no longer avalable is there one thing im doing heinous?
really greatstuff, enjoy how you navigated the total thing, really apt. thanks!!


Salming Distance has been with Salming since the very first start and was awarded best debut by Runners World when it first was released. So what has happened over the years with Distance? Distance became immediately my favorite Salming shoe. The fact that Distance worked really for my faster day, longer days and for race day, got me hooked. Salming original was streamlined had a three layer upper that wrapped you foot perfect. Over the two next editions, Salming tweaked a bit with the uppers and lost some of streamlined feel. Version 2 felt a bit too wide and 3 a bit too long for me. Then out of the blue, a few months after D3 was released, Salming released the all black D4! The original feel was back, this time with a two layer upper and with a more responsive Runlite midsole. Now D5 has been out for a while and the original feel is still very much there. Introducing Todd Baranoski (instagram Todd_ultrarunner) who will also give his opnion on D5!
have one shoe, this would be it. Its enough for long days, tempo/work out days and race day. The new lighter and more responsive Runlite works really well for all this categories of running and it is very responsive. A torsion unit in the mid foot helps you with some stability and heel/toe transition. I have used Distance for marathons and recently I used D5 for the last 10 miles of a trail 50K race. D5 would be light enough for a fast 5K but also give you enough protection for a marathon without slow you down. I often get the question what shoe can you compare Salming to. D5 would be comparable with Adidas Adios/Boston, Nike Elite and New Balance 1400.
Being primarily a trail runner my first shoes with Salming were their Trail shoes which I love and carried me across thousands of training and race miles. Since I kinda came into their shoes from different direction than most people I wanted the same awesome fit and feel to match for a daily road trainer. That being said I'm a huge believer in matching trail shoes to the road shoes. You don't want to have to change your cadence or style to get the same speed out of your shoes. That is also how I recommend shoes to people that ask me, as a set to use together. The D series especially the D5's are that shoe to me. With the D5's I get a seamless transition from D5's for fast road training and the T3's for fast trail running. Yet the I still use them for the odd road race I do. I can't wait to see what upgrades Salming come up with the D series to help get even faster.
Where do Salming go from here?
Oh wow thank you soo much for sharing your review with us. I have been looking for a perfect pair of runners lately and you just eased my headache.
G club A simple betting game. Every day at home to make money.
G club Online gambling games play live. The player is interested in playing gambling games with our online casino is open. The gambling games at our online casino are open to the gamblers directly from the casino in Cambodia. The player to play with. At home of the players directly. And our gambling game is a simple gambling game.
Guarantee that the player will be gambling and fun when playing gambling games with our online casino, of course. For anyone who has any doubts about betting on baccarat, online poker, slots, online poker, online poker And our other gambling games, you can ask the team of our g club download online it.
Beautifully suited for hiking, he really walks.


 Watch Horton Hears a Who! (2008) full movie.
Watch Horton Hears a Who! (2008) full movie.
Horton Hears a Who! (2008) storyline: Animated elephant Horton (Jim Carrey) finds a speck of dust floating in the Jungle of Nool. Upon investigation of the speck, Horton discovers the tiny city of Who-ville and its residents, the Whos, which he can hear but cannot see. Horton forms a friendship with the mayor of Who-ville, Ned McDodd (Steve Carell), and promises to transport Who-ville to safety. However, Horton encounters opposition from his jungle neighbors, who don't want to believe in the existence of Who-ville.
Directors: Jimmy Hayward, Steve Martino.
Writers: Ken Daurio, Cinco Paul.
Watch Horton Hears a Who! (2008) online full episodes cartoons. Horton Hears a Who! (2008) watch online free in high quality at watchcartoonsonline.la.
Watch Horton Hears a Who! (2008) full movie, Watch Horton Hears a Who! (2008) online free, Horton Hears a Who! (2008) full movie youtube, Horton Hears a Who! (2008) watch online.


Set of 7 MOTTAHEDEH "Canton" Blue and White 10 1/4 Dinner Plates MINT HC88. This listing features a Set of 7 MOTTAHEDEH "Canton" Blue and White Dinner Plates. Blue Oriental Garden Scenes, Blue Bands; active pattern: 1985. Plates measure approximately 10 1/4" X 1".
Blue & white china truly never goes out of style. Whether your aesthetic is bohemian, chic and modern, or country farmhouse, classic blue and white Mottahedeh Canton dinnerware will help you create the perfect table. Please see our other store listings for more pieces in the Mottahedeh Blue Canton pattern.
The item "Set of 7 MOTTAHEDEH Canton Blue and White 10 1/4 Dinner Plates MINT HC88" is in sale since Wednesday, November 28, 2018. This item is in the category "Pottery & Glass\Pottery & China\China & Dinnerware\Mottahedeh".


I am having to use the laptop mouse. I really don't like it. Am I alone in this feeling?
Late because I was busy listening to British 'You've Got Talent' Susan Boyle. Amazing!
I was late cause kids need tending. I'll be glad when they are in school again next week!
She really surprised everyone on Saturday evening Shiela. What a voice, and a good example of never jdging a book by its cover.
GMo. What laptop mouse are you talking about? We have a tiny little mouse that I think is a laptop mouse. We got it with the kids in mind. It is easier for their little hands to reach the buttons. I am not a fan of the little touch pad on hubbies laptop. I am always brushing past it at the wrong time!
I was late because I had to take a shower. I only have 7 1/2 hours to get ready to take the girl to Grandmas.
Steve is busy getting a new desk top computer for me, I can tell there are a few difficulties by the clouds of blue which accompany the occasional shouts and grunts.
I refer to the touch pad Jill. It seems to take on a life of its own whenever I am near. Scrolling when I don't want it too, jumping all over the page etc. I normally use a separate mouse but my live in computer wizard has taken it to set up the new compter.
Great picture this morning. Do you have a song for us, Dan?
That's kinda of funny Mo. I have a relatively young(16 month old) desk top. But just yesterday Karen and I were discussing laptops. I mentioned that a laptop could be carried to a bed or a couch so I can obey the doctors orders and lay low while still maintaining a connection to the world.
I thought London Bridge was in Arizona??????
The picture is NOT London Bridge. That is Tower Bridge next to The Tower of London.
The caption SAYS London Bridge.
London Bridge has been sold and rebuilt many times Heidi. I cannot remember which number was sold to Arizona.
Good morning all! Beautiful day here! Have a great one!
That picture is definitely Tower Bridge, which happens to be in London but is one of many. This is the one nearest tpthe estuary and the lower level that you can see opens upwards to allow sea going vessels into the Pool of London, which is the highest point they can reach in the River Thames.
Phew, a girl turns her head for a second and whoosh there goes the hare. Although it would appear I am a reverse turtle, cause my hump is on the front.
There are, in fact, 34 bridges which cross the river Thames in London. London Bridge was the first to be built in 1209 from wood. This bridge has been demolished or sold and dismantled several times and the present one was built in concrete in 1973 when the old one was removed to USA.
Oh dear. Too many days away from sudoku and my brain has turned to mush. My time was absymal!
You wonder why I am so sure, Heidi? It is because I was born about 1 mile from here and can truly call myself not just a Londoner but a cockney as I was born within the sound of Bow Bells.
Judy, maybe you can explain. Why would anyone want an old Thames bridge in the middle of a desert? Why not build one there? It has always been beyond my comprehension why?
We have a beautiful day here in Michigan. It is suppose to reach 70 (F). We will take it! Have a great day everyone!
My other half accepted an invitation to apererifs at 17.30 when I was out. I now have to go change and put on some glad rags...well smart casual clothes. It is no fun going to these things when you can't drink.
I heard once that Lake Havasu thought that the Tower Bridge was the "London Bridge" and that is what they had bought and surprised when it arrived.
Judy - you and I are on the same wave length.
If that's so, Eve ... may the gods help you!