Network Programming with Go Language : Essential Skills for Programming, Using and Securing Networks with Open Source Google Golang 2nd Edition Jan Newmarch instant download
Network Programming with Go Language : Essential Skills for Programming, Using and Securing Networks with Open Source Google Golang 2nd Edition Jan Newmarch instant download
https://ebookmeta.com/product/network-programming-with-go-
language-essential-skills-for-programming-using-and-securing-
networks-with-open-source-google-golang-2nd-edition-jan-newmarch/
https://ebookmeta.com/product/network-programming-with-go-
language-2nd-edition-ronald-petty/
https://ebookmeta.com/product/software-development-with-go-cloud-
native-programming-using-golang-with-linux-and-docker-nanik-
tolaram/
https://ebookmeta.com/product/anoikis-how-the-extracellular-
matrix-regulates-life-or-death-decisions-1st-edition-steven-m-
frisch/
IoT, Machine learning and Blockchain Technologies for
Renewable Energy and Modern Hybrid Power Systems 1st
Edition C. Sharmeela
https://ebookmeta.com/product/iot-machine-learning-and-
blockchain-technologies-for-renewable-energy-and-modern-hybrid-
power-systems-1st-edition-c-sharmeela/
https://ebookmeta.com/product/national-geographic-traveler-
florence-and-tuscany-3rd-edition-tim-jepson/
https://ebookmeta.com/product/fates-and-furies-lauren-groff/
https://ebookmeta.com/product/mountain-daddys-milk-honeymoon-
spice-in-the-mountains-book-2-1st-edition-elena-dawne/
https://ebookmeta.com/product/the-bastard-complete-series-1st-
edition-jack-porter/
Forming Humanity Redeeming the German Bildung Tradition
1st Edition Jennifer A. Herdt
https://ebookmeta.com/product/forming-humanity-redeeming-the-
german-bildung-tradition-1st-edition-jennifer-a-herdt/
Jan Newmarch and Ronald Petty
Ronald Petty
San Francisco, CA, USA
The publisher, the authors and the editors are safe to assume that the
advice and information in this book are believed to be true and accurate
at the date of publication. Neither the publisher nor the authors or the
editors give a warranty, expressed or implied, with respect to the
material contained herein or for any errors or omissions that may have
been made. The publisher remains neutral with regard to jurisdictional
claims in published maps and institutional affiliations.
This Apress imprint is published by the registered company APress
Media, LLC, part of Springer Nature.
The registered company address is: 1 New York Plaza, New York, NY
10004, U.S.A.
I dedicate this to my family.
Preface to the Second Edition
While an age has passed in Internet years, Go remains a primary
destination for programmers. Go conquered the container technology
space. It continues to find affection in Cloud Native development. Go
strives to remain true to itself, backward compatible, yet adding new
language features like Generics. Tooling improvements such as Fuzzing
allow for more secure application development.
Go has changed, and so has this book. The first edition used Go 1.8;
we are now on Go 1.18. The code has been updated to reflect this new
reality. The examples have been largely developed to show a particular
feature of Go networking without forcing complexity like managing
several projects or packages scattered across the book; the associated
repository can be found here
https://github.com/Apress/network-prog-with-go-2e.
The first version of this book assumed familiarity with Go, and that
remains in this edition. We expand slightly what we are willing to
discuss in this book with the inclusion of more third-party modules,
tools, and techniques. Jan was correct to keep the focus on Go and not
to be distracted with the ecosystem at large.
If you desire to learn about implementing networking concepts with
Go, I hope this book serves you well.
As a point of comparison, what follows is Jan’s original preface,
reflecting Go in 2017.
Preface to the First Edition
It’s always fun to learn a new programming language, especially when it
turns out to be a major one. Prior to the release of Go in 2009, I was
teaching a Master’s level subject in network programming at Monash
University. It’s good to have a goal when learning a new language, but
this time, instead of building yet another wine cellar program, I decided
to orient my lecture notes around Go instead of my (then) standard
delivery vehicle of Java.
The experiment worked well: apart from the richness of the Java
libraries that Go was yet to match, all the programming examples
transferred remarkably well, and in many cases were more elegant than
the original Java programs.
This book is the result. I have updated it as Go has evolved and as
new technologies such as HTTP/2 have arisen. But if it reads like a
textbook, well, that is because it is one. There is a large body of
theoretical and practical concepts involved in network programming
and this book covers some of these as well as the practicalities of
building systems in Go.
In terms of language popularity, Go is clearly rising. It has climbed
to 16th in the TIOBE index, is 18th in the PYPL (Popularity of
Programming Language), and is 15th in the RedMonk Programming
Language rankings. It is generally rated as one of the fastest growing
languages.
There is a growing community of developers both of the core
language and libraries and of the independent projects. I have tried to
limit the scope of this book to the standard libraries only and to the
“sub-repositories” of the Go tree. While this eliminates many excellent
projects that no doubt make many programming tasks easier,
restricting the book to the official Go libraries provides a clear bound.
This book assumes a basic knowledge of Go. The focus is on using
Go to build network applications, not on the basics of the language.
Network applications are different than command-line applications, are
different than applications with a graphical user interface, and so on. So
the first chapter discusses architectural aspects of network programs.
The second chapter is an overview of the features of Go that we use in
this book. The third chapter on sockets covers the Go version of the
basics underlying all TCP/IP systems. Chapters 4, 5, and 6 are more
unusual in network programming books. They cover the topics of what
representations of data will be used, how a network interaction will
proceed, and for text, which language formats are used. Then in Chapter
7, we look at the increasingly important topic of security. In Chapter 8,
we look at one of the most common application layer protocols in use,
HTTP. The next four chapters are about topics related to HTTP and
common data formats carried above HTTP – HTML and XML. In
Chapter 13, we look at an alternative approach to network
programming, remote procedure calls. Chapters 14 and 15 consider
further aspects of network programming using HTTP.
Any source code or other supplementary material referenced by the
author in this book is available to readers on GitHub. For more detailed
information, please visit
https://github.com/Apress/network-prog-with-go-2e.
Acknowledgments
I want to share my appreciation for Jan Newmarch for collaborating on
this book. This project has offered me a tremendous sense of
achievement and allowed me to cross a much-anticipated item off my
bucket list. I would also like to thank Eldon Alameda for his thoughtful
approach at letting me know when I am off the mark and for providing
me with solid advice.
Additionally, I owe gratitude to my partners at Apress, both Steve
Anglin for the opportunity and Mark Powers for the guidance to help
see this through. Thank you to my colleagues at RX-M, including Randy
Abernethy, Christopher Hanson, Andrew Bassett, and Anita Wu. Our
work over the years has allowed for my participation in a project such
as this book.
Finally, I want to thank my wife Julie and daughter Charlotte. Julie’s
capacity to manage the world while I hide out on a computer is
unmatched and most appreciated. Charlotte’s energy, abilities, and
creativity inspire me to become better every day.
—Ronald Petty
Table of Contents
Chapter 1:Architectural Layers
Protocol Layers
ISO OSI Protocol
OSI Layers
TCP/IP Protocol
Some Alternative Protocols
Networking
Gateways
Host-Level Networking
Packet Encapsulation
Connection Models
Connection Oriented
Connectionless
Communications Models
Message Passing
Remote Procedure Call
Distributed Computing Models
Client-Server System
Client-Server Application
Server Distribution
Communication Flows
Synchronous Communication
Asynchronous Communication
Streaming Communication
Publish/Subscribe
Component Distribution
Gartner Classification
Three-Tier Models
Fat vs.Thin
Middleware Model
Middleware Examples
Middleware Functions
Continuum of Processing
Points of Failure
Acceptance Factors
Thoughts on Distributed Computing
Transparency
Access Transparency
Location Transparency
Migration Transparency
Replication Transparency
Concurrency Transparency
Scalability Transparency
Performance Transparency
Failure Transparency
Eight Fallacies of Distributed Computing
Fallacy: The Network Is Reliable
Fallacy: Latency Is Zero
Fallacy: Bandwidth Is Infinite
Fallacy: The Network Is Secure
Fallacy: Topology Doesn’t Change
Fallacy: There Is One Administrator
Fallacy: Transport Cost Is Zero
Fallacy: The Network Is Homogeneous
Conclusion
Chapter 2:Overview of the Go Language
Types
Slices and Arrays
Maps
Pointers
Functions
Structures
Methods
Multithreading
Packages
Modules
Type Conversion
Statements
GOPATH
Running Go Programs
Standard Libraries
Error Values
Conclusion
Chapter 3:Socket-Level Programming
The TCP/IP Stack
IP Datagrams
UDP
TCP
Internet Addresses
IPv4 Addresses
IPv6 Addresses
IP Address Type
Using Available Documentation and Examples
The IPMask Type
Basic Routing
The IPAddr Type
Host Canonical Name and Addresses Lookup
Services
Ports
The TCPAddr Type
TCP Sockets
TCP Client
A Daytime Server
Multithreaded Server
Controlling TCP Connections
Timeout
Staying Alive
UDP Datagrams
Server Listening on Multiple Sockets
The Conn, PacketConn, and Listener Types
Raw Sockets and the IPConn Type
Conclusion
Chapter 4:Data Serialization
Structured Data
Mutual Agreement
Self-Describing Data
Encoding Packages
ASN.1
ASN.1 Daytime Client and Server
JSON
A Client and A Server
The Gob Package
A Client and A Server
Encoding Binary Data As Strings
Protocol Buffers
Installing and Compiling Protocol Buffers
The Generated personv3.pb.go File
Using the Generated Code
Conclusion
Chapter 5:Application-Level Protocols
Protocol Design
Why Should You Worry?
Version Control
The Web
Message Format
Data Format
Byte Format
Character Format
A Simple Example
A Stand-Alone Application
The Client-Server Application
The Client Side
Alternative Presentation Aspects
The Server Side
Protocol:Informal
Text Protocol
Server Code
Client Code
Textproto Package
State Information
Application State Transition Diagram
Client-State Transition Diagrams
Server-State Transition Diagrams
Server Pseudocode
Conclusion
Chapter 6:Managing Character Sets and Encodings
Definitions
Character
Character Repertoire/Character Set
Character Code
Character Encoding
Transport Encoding
ASCII
ISO 8859
Unicode
UTF-8, Go, and Runes
UTF-8 Client and Server
ASCII Client and Server
UTF-16 and Go
Little-Endian and Big-Endian
UTF-16 Client and Server
Unicode Gotchas
ISO 8859 and Go
Other Character Sets and Go
Conclusion
Chapter 7:Security
ISO Security Architecture
Functions and Levels
Mechanisms
Data Integrity
Symmetric Key Encryption
Public Key Encryption
X.509 Certificates
TLS
A Basic Client
Server Using a Self-Signed Certificate
Conclusion
Chapter 8:HTTP
URLs and Resources
i18n
HTTP Characteristics
Versions
HTTP/0.9
HTTP/1.0
HTTP 1.1
HTTP Major Upgrades
HTTP/2
HTTP/3
Simple User Agents
The Response Type
The HEAD Method
The GET Method
Configuring HTTP Requests
The Client Object
Proxy Handling
Simple Proxy
Authenticating Proxy
HTTPS Connections by Clients
Servers
File Server
Handler Functions
Bypassing the Default Multiplexer
HTTPS
Conclusion
Chapter 9:Templates
Inserting Object Values
Using Templates
Pipelines
Defining Functions
Variables
Conditional Statements
The html/template Package
Conclusion
Chapter 10:A Complete Web Server
Browser Site Diagram
Browser Files
Basic Server
The listFlashCards Function
The manageFlashCardsFunction
The Chinese Dictionary
The Dictionary Type
Flashcard Sets
Fixing Accents
The ListWords Function
The showFlashCards Function
Presentation on the Browser
Running the Server
Conclusion
Chapter 11:HTML
The html/template Package
Tokenizing HTML
XHTML/HTML
JSON
Conclusion
Chapter 12:XML
Unmarshalling XML
Marshalling XML
Parsing XML
The StartElement Type
The EndElement Type
The CharData Type
The Comment Type
The ProcInst Type
The Directive Type
XHTML
HTML
Conclusion
Chapter 13:Remote Procedure Call
Go’s RPC
HTTP RPC Server
HTTP RPC Client
TCP RPC Server
TCP RPC Client
Matching Values
JSON
JSON RPC Server
JSON RPC Client
Conclusion
Chapter 14:REST
URIs and Resources
Representations
REST Verbs
The GET Verb
The PUT Verb
The DELETE Verb
The POST Verb
No Maintained State (That Is, Stateless)
HATEOAS
Representing Links
Transactions with REST
The Richardson Maturity Model
Flashcards Revisited
URLs
ServeMux (The Demultiplexer)
Content Negotiation
GET /
POST /
Handling Other URLs
The Complete Server
Client
Using REST or RPC
Conclusion
Chapter 15:WebSockets
WebSockets Server
The golang.org/x/net/websocket Package
The Message Object
The JSON Object
The Codec Type
WebSockets over TLS
WebSockets in an HTML Page
The github.com/gorilla/websocket Package
Echo Server
Echo Client
Conclusion
Chapter 16:Gorilla
Middleware Pattern
Standard Library ServeMux Examples
Customizing Muxes
gorilla/mux
Why Should We Care
Gorilla Handlers
Additional Gorilla Examples
gorilla/rpc
gorilla/schema
gorilla/securecookie
Conclusion
Chapter 17:Testing
Simple and Broken
httptest Package
Below HTTP
Leveraging the Standard Library
Conclusion
Appendix A:Fuzzing
Fuzzing in Go
Fuzzing Failures
Conclusion
Appendix B:Generics
A Filtering Function Without Generics
Refactor Using Generics
Custom Constraints
Using Generics on Collections
How Not to Use Generics?
Conclusion
Index
About the Authors
Jan Newmarch
was head of ICT (higher education) at
Box Hill Institute before retiring, and still
is adjunct professor at Canberra
University, and adjunct lecturer in the
School of Information Technology,
Computing and Mathematics at Charles
Sturt University. He is interested in more
aspects of computing than he has time to
pursue, but the major thrust over the last
few years has developed from user
interfaces under UNIX into Java, the Web,
and then into general distributed
systems. Jan developed a number of
publicly available software systems in these areas. For the last few
years, he had been looking at sound for Linux systems and
programming the Raspberry Pi’s GPU. He is now exploring aspects of
the IoT and Cyber Security. He lives in Melbourne, Australia, and enjoys
the food and culture there, but is not so impressed by the weather.
1. Architectural Layers
Jan Newmarch1 and Ronald Petty2
(1) Oakleigh, VIC, Australia
(2) San Francisco, CA, USA
Protocol Layers
Distributed systems are hard. There are multiple computers involved,
which have to be connected in some way. Programs have to be written
to run on each computer in the system, and they all have to cooperate
to get a distributed task done.
The common way to deal with complexity is to break it down into
smaller and simpler parts. These parts have their own structure, but
they also have defined means of communicating with other related
parts. In distributed systems, the parts are called protocol layers, and
they have clearly defined functions. They form a stack, with each layer
communicating with the layer above and the layer below. The
communication between layers is defined by protocols.
Network communications require protocols to cover high-level
application communication all the way down to wire communication
and the complexity handled by encapsulation in protocol layers.
OSI Layers
The function of each layer from bottom to top is as follows:
The Physical layer conveys the bit stream using electrical, optical, or
radio technologies.
The Data Link layer puts the information packets into network
frames for transmission across the Physical layer and back into
information packets.
The Network layer provides switching and routing technologies.
The Transport layer provides transparent transfer of data between
end systems and is responsible for end-to-end error recovery and
flow control.
The Session layer establishes, manages, and terminates connections
between applications.
The Presentation layer provides independence from differences in
data representation (e.g., encryption).
The Application layer supports application and end-user processes.
A layer in the OSI model often maps to a modern protocol; for
example, the IP from TCP/IP maps to the Network layer, also known as
layer 3 (Physical is layer 1). The Application layer, layer 7, maps to
HTTP. Some protocols like HTTPS seem to blend layers, 5 (Session) and
6 (Presentation). No model is perfect; alternatives exist to the OSI
model that maps closer to a given reality, such as the TCP/IP protocol
model.
TCP/IP Protocol
While the OSI model was being argued, debated, partly implemented,
and fought over, the DARPA Internet research project was busy building
the TCP/IP protocols. These have been immensely successful and have
led to The Internet (with capitals). This is a much simpler stack, as
shown in Figure 1-2.
Figure 1-2 The TCP/IP protocols
Networking
A network is a communications system for connecting end systems
called hosts. The mechanisms of connection might be copper wire,
Ethernet, fiber optic, or wireless, but that won’t concern us here. A local
area network (LAN) connects computers that are close together,
typically belonging to a home, small organization, or part of a larger
organization.
A wide area network (WAN) connects computers across a larger
physical area, such as between cities. There are other types as well,
such as MANs (metropolitan area networks), PANs (personal area
networks), and even BANs (body area networks).
An internet is a connection of two or more distinct networks,
typically LANs or WANs. An intranet is an Internet with all networks
belonging to a single organization.
There are significant differences between an internet and an
intranet. Typically, an intranet will be under a single administrative
control, which will impose a single set of coherent policies. An internet,
on the other hand, will not be under the control of a single body, and
the controls exercised over different parts may not even be compatible.
A trivial example of such differences is that an intranet will often be
restricted to computers by a small number of vendors running a
standardized version of a particular operating system. On the other
hand, an internet will often have a smorgasbord of different computers
and operating systems.
The techniques of this book are applicable to internets. They are
also valid with intranets, but there you will also find specialized,
nonportable systems.
And then there is the “mother” of all internets: The Internet. This is
just a very, very large internet that connects us to Google, my computer
to your computer, and so on.
Gateways
A gateway is a generic term for an entity used to connect two or more
networks. A repeater operates at the Physical level and copies
information from one subnet to another. A bridge operates at the Data
Link layer level and copies frames between networks. A router operates
at the Network level and not only moves information between
networks but also decides on the route.
Host-Level Networking
On a single host, we have additional concerns when designing,
debugging, or deploying network-based software. Some of these items
include the following:
DNS (domain name system, i.e., human-friendly naming)
Firewalls (e.g., blocking inbound or outbound traffic)
Routing (e.g., figuring out which network to place a packet)
Host Identity management (e.g., IP address)
Performance controls (e.g., traffic shaping or retries)
Connection issues (e.g., missing network adapter, intramachine
process communication)
Through examples, we will see how a host misconfiguration might
manifest in our software.
Packet Encapsulation
The communication between layers in either the OSI or the TCP/IP
stacks is done by sending packets of data from one layer to the next and
then eventually across the network. Each layer has administrative
information that it has to keep about its own layer. It does this by
adding header information to the packet it receives from the layer
above, as the packet passes down. On the receiving side, these headers
are removed as the packet moves up.
For example, the TFTP (Trivial File Transfer Protocol) moves files
from one computer to another. It uses the UDP protocol on top of the IP
protocol, which may be sent over ethernet. This looks like the diagram
shown in Figure 1-3.
Figure 1-3 The TFTP (Trivial File Transfer Protocol)
Connection Models
In order for two computers to communicate, they must set up a path
whereby they can send at least one message in a session. There are two
major models for this:
Connection oriented
Connectionless
Connection Oriented
A single connection is established for the session. Two-way
communications flow along the connection. When the session is over,
the connection is broken. The analogy is to a phone conversation. An
example is TCP.
Connectionless
In a connectionless system, messages are sent independent of each
other. Ordinary mail is the analogy. Connectionless messages may
arrive out of order. Messages do not have an impact on each other. An
example is the IP protocol. UDP is a connectionless protocol above IP
and is often used as an alternative to TCP, as it is much lighter weight.
Connectionless is also known as unconnected or stateless.
Connection-oriented transports may be established on top of
connectionless ones – TCP over IP. Connectionless transports may be
established on top of connection-oriented ones – HTTP over TCP.
Messages over a connection-oriented transport protocol have some
kind of relation, for example, a sequence number used to keep order.
Having state allows for functionality and optimizations; it also has an
associated cost of storage and computing.
There can be variations on these. For example, a session might
enforce messages arriving but might not guarantee that they arrive in
the order sent. However, these two are the most common.
Connection models are not the only way a protocol can vary. One
often desired feature is reliability; this is where the protocol has logic to
fix some types of errors; for example, TCP resends a missing packet. It’s
pretty common to assume connection-oriented protocols are reliable;
this is not always the case (e.g., MPLS). Additional features of a network
protocol could include message boundary management, delivery
ordering, error checking, flow control, etc. These features can exist in
one protocol layer and not another, partly why there are so many
network protocol stacks.
Sometimes, these features are reworked throughout the protocol
stack. An example of this kind of feature rework is with HTTP/3. In
HTTP/2, reliability is provided using TCP at layer 4. In HTTP/3, TCP is
being replaced with UDP, which is not reliable. Instead, reliability will
be provided with another protocol known as QUIC. While QUIC is
considered a Transport layer, like TCP or UDP, it works on top of UDP.
As you can see, the layer model is not an exact science.
Communications Models
In a distributed system, there will be many components (i.e., processes)
running that have to communicate with each other. There are two
primary models for this, message passing and remote procedure calls.
In the context of networking, these models allow interprocess (and/or
thread) communication with intent to invoke behavior on the remote
process.
Message Passing
Some languages are built on the principle of message passing.
Concurrent languages (and tools) often use such a mechanism, and the
most well-known example is probably the UNIX pipeline. The UNIX
pipeline is a pipeline of bytes, but this is not an inherent limitation:
Microsoft’s PowerShell can send objects along its pipelines, and
concurrent languages such as Parlog can send arbitrary logic data
structures in messages between concurrent processes. Recent
languages such as Go have mechanisms for message passing (between
threads).
Message passing is a primitive mechanism for distributed systems.
Set up a connection and pump some data down it. At the other end,
figure out what the message was and respond to it, possibly sending
messages back. This is illustrated in Figure 1-4.
Figure 1-4 The message passing communications model
Event-driven systems act in a similar manner. At a low level, the
programming language node.js runs an event loop waiting for I/O
events, dispatching handlers for these events and responding. At a
higher level, most user interface systems use an event loop waiting for
user input, while in the networking world, Ajax uses the
XMLHttpRequest to send and receive requests.
Client-Server System
Another view of a client-server system is shown in Figure 1-7.
Client-Server Application
Some applications may be seamlessly distributed, with the user
unaware that it is distributed. Users will see their view of the system, as
shown in Figure 1-8.
Figure 1-8 The user’s view of the system
In order to function, both components must be installed, how
seamless this complexity will vary by application (and its usage).
Server Distribution
A client-server system need not be simple. The basic model is a single
client, single server system, as shown in Figure 1-9.
Communication Flows
The previous diagrams have shown the connection views between
high-level components of a system. Data will flow between these
components, and it can do so in multiple ways, discussed in the
following sections.
Synchronous Communication
In a synchronous communication, one party will send a message and
block, waiting for a reply. This is often the simplest model to implement
and just relies on blocking I/O. However, there may need to be a
timeout mechanism in case some error means that no reply will ever be
sent.
Asynchronous Communication
In asynchronous communication, one party sends a message and,
instead of waiting for a reply, carries on with other work. When a reply
eventually comes, it is handled. This may be in another thread or by
interrupting the current thread. Such applications are harder to build
but are much more flexible to use.
When thinking of these protocol layers and related
implementations, it’s not always obvious how you describe
communication flow. For example, TCP, is it synchronous or
asynchronous? When designing network applications, communication
flow is used to describe the applications logic (Are you waiting for a
response or are you not waiting for a response?). When we provide the
Transport layer (TCP) data, we don’t wait for it to send and respond,
our application keeps moving. In that light, we say TCP is
asynchronous.
Streaming Communication
In streaming communication, one party sends a continuous stream of
messages. Online video is a good example. The streaming may need to
be handled in real time, may or may not tolerate losses, and can be one-
way or allow reverse communication as in control messages. This is
why TCP is often used over UDP, even if that ordering comes at a cost.
Publish/Subscribe
In pub/sub systems, parties subscribe to topics, and others post to
them. This can be on a small or massive scale, as demonstrated by
services like Twitter and software like Kafka. Designing a multitier
system to include pub/sub allows producer and consumers to be
decoupled. Decoupling allows us to become more fault tolerant and
generally improves the ability to grow the system (e.g., more producers
and consumers). Storage of messages on a third party (i.e., remote
queue) provides this ability. How the queue performs and grows is its
own area of study and distributed computing (and storage).
Component Distribution
A simple but effective way of decomposing many applications is to
consider them as made up of three parts:
Presentation component
Application logic
Data access
The presentation component is responsible for interactions with the
user, both displaying data and gathering input. It may be a modern GUI
interface with buttons, lists, menus, etc., or an older command-line style
interface, asking questions and getting answers. It could also
encompass wider interaction styles, such as the interaction with
physical devices such as a cash register and ATM. It could also cover the
interaction with a nonhuman user, as in a machine-to-machine system.
The details are not important at this level.
The application logic is responsible for interpreting the users’
responses, for applying business rules, for preparing queries, and for
managing responses from the third component.
The data access component is responsible for storing and retrieving
data. This will often be through a database, but not necessarily.
Gartner Classification
Based on this threefold decomposition of applications, Gartner
considered how the components might be distributed in a client-server
system. They came up with five models, shown in Figure 1-12. These
models conceptualize various purposes on the client or server. While
high level, they still enumerate numerous possibilities regarding
placement of functionality.
On the Web the client may have logic in JavaScript (in the past Java
Applets or even Adobe Flash) while the server has logic in CGI scripts
or similar (Ruby on Rails, etc). This is a distributed hypertext system,
with many additional mechanisms.
H
ENNION came back from seeing Wood laid away (where
other men were lying, who had been spoken of in their day,
whom Port Argent had forgotten or was in process of
forgetting) and saw the last bricks laid and rammed on Lower Bank
Street. There was satisfaction in the pavement of Lower Bank Street,
in knowing what was in it and why. The qualities of sand, crushed
stone, and paving brick were the same yesterday and to-day. Each
brick was three inches and three-eighths thick, and not one would
be ambitious of four inches to-morrow. If it were broken, and
thrown away, there would be no altruistic compunctions. One built
effectively with such things.
Charlie Carroll whispered to Hennion as they came out of the
cemetery:
“It's all right. The boys are satisfied.”
“Why are they?”
“They'd be scared not to do what Wood said now. It wouldn't go
down.”
“Go down where?”
“Well, they seem to like the idea too. They will have it.”
But why should he be congratulated over a prospective invitation
from “the boys” to labour in their interests? He was not sure why he
had not already refused, by what subconscious motive or scruple.
Properly there should be scruples about accepting. The leadership of
the organisation was an unsalaried position, with vague perquisites.
Wood had taken honorariums and contributions, spent what he
chose on the organisation, and kept what he chose. Apparently he
had not kept much, if any. He had seemed to care only for influence.
He had liked the game. He had left only a small estate. But whether
he had kept or passed it on, the money was called unclean.
If one went into politics to effect something—and Hennion could
not imagine why one went into anything otherwise—the leadership
of the organisation seemed to be the effective point. The city had a
set of chartered machinery, ineffectually chartered to run itself; also
certain subsets of unchartered machinery. It voted now and then
which of the subsets should be allowed to slip on its belt. The
manner in which the chartered machinery was run depended
somewhat on the expedients that were needed to keep the
unchartered machinery going. There must be dynamics and
mechanics in all that machinery. To an engineer's criticism it seemed
oddly complicated. There must be a big waste. But almost any
machine, turning heat force into motion, wasted sixty per cent. Still
these sets and subsets seemed loosely geared. It looked like an
interesting problem in engineering, that had been met rather
experimentally. As mechanics, it seemed to be all in an experimental
stage. Hennion wondered if there were any text-books on the
subject, and then pulled himself up with a protest.
What did politics want of an engineer and a business man? As an
engineer and a business man, he had been asking something of
politics, to be sure, but he had only asked it in the way of business.
In his father's time politics had called for lawyers. Nowadays lawyers
too were mainly a class of business men. If political machinery had
any dynamic and mechanic laws, they must be original. Those who
succeeded in running it seemed to succeed by a kind of amateur,
hand-to-mouth common sense.
Wood had been an interesting man. After all, he might have been
as important in his way as Henry Champney had been. If you were
talking of the dynamics of politics, you were estimating men as
forces.
The amount and direction were a good deal matters of guess.
Wood had thought Hennion's father a better man for results than
Champney.
Wood himself had been a man for results, with some impersonal
ambitions for Port Argent. He had known it better than almost
anyone else, more of its details and different aspects, from the
wharves to Seton Avenue. Those who criticised him generally had
seemed hampered by knowing less about the matter than he did.
They fell back on principles, and called him corrupt, which meant
that, if the unchartered machinery needed fuel, the chartered
machinery was set to turning out some bit of legislation to suit those
who furnished the fuel. Hennion thought the prosperity of Port
Argent had always been a motive with Wood. Only it was a
complicated motive, half private, hardly confessed.
Hennion entered another protest against the direction of his
thoughts, and noticed the big foreman, Kennedy, close beside him.
The workmen were gathering their tools.
“All right, Kennedy. Come around tomorrow. We'll begin that
grading on the east side next.”
Kennedy looked after him wistfully, and the workmen stood still,
holding their tools and looking after him. He noticed it as he turned
away, and it occurred to him to wonder how it happened that he
knew so many men like Kennedy, who seemed to have a sort of
feudal attachment for him.
He passed through Tecumseh Street on his way home, and
noticed where the policeman had ripped off the advertising boards.
Hicks must be a queer specimen, he thought. But relatively to
mechanics, every man was an eccentric.
Tecumseh Street was absorbed in its daily business. It seemed to
have no conscience-smitten, excited memories. A mob and a flash of
gunpowder, a runaway horse, the breaking down of a truck,
everything went the way of incident. “Everything goes,” was the
phrase there, meaning it is accepted and goes away, for the street
has not time to remember it.
Hennion glanced up at the window of the little room in The Press
building. Why had Wood chosen an engineer and contractor to make
of him a machine politician? Machinery made of men, with the
notions of men to drive it—what kind of machinery was that to work
with! Aidee, the enthusiast, was a man! Hicks, the mad, was
another; Freiburger, the mollusk, another. Wood, with his
complicated sympathies and tolerances and hand-to-mouth flexible
common sense, was a specially developed type to run that kind of
machinery. Wood was dead, and as for his “job,” and what “the
boys” wanted, why, they wanted their “jobs,” like everybody else.
Hennion wanted his own.
Carroll came flitting around the corner of Hancock Street at that
moment, and nearly ran into him.
“Oh! Committee meets to-morrow night.”
“I don't want it.”
“Come off! You can't help it.”
Carroll flitted away in the direction of The Press building.
Before seven o'clock the sparrows in the dark maples were
forgetting in sleep all the great issues of their day.
Hennion left his rooms, in the apartment building that was
splendidly called “The Versailles,” and came out in the street. It was
too early to see Camilla. He walked a few blocks north, and turned
down Maple Street presently, past St. Catherine's Church, and
Freiburger's saloon across the street from the church. They were the
seats of the two rulers of the Fourth Ward, church and state—Father
Harra and Frei-burger.
Maple Street instead of tumbling down the bluff like other streets,
to be chopped off short at the wharves, seems to lift itself there with
a sense of power beneath, becomes a victory and a spirit, and so
floats out over the brown Muscadine. The bridge was always to
Hennion more like his father than the canal or the C. V. Railroad. The
railroad was a financial cripple now, absorbed in a system. The great
day of the canal was long past. The elder Hennion had seemed a
soul for daring and success, and that was the bridge. It stood to
Hennion for a memorial, and for the symbol of his father's life and
his own hope in the working world. He liked to stand on it, to feel it
beneath and around him, knowing what each steel girder meant,
and what in figures was the strength of its grip and pull. There was
no emotional human nature in it, no need of compromise. Steel was
steel, and stone stone, and not a bolt or strand of wire had any
prejudice or private folly. In a certain way he seemed to find his
father there, and to be able to go over with him their old vivid talks.
The Muscadine reflected up at him, out of its brown turbulence,
shattered fragments of the moon and stars. A quavering voice spoke
in his ear: “Got a light?”
Besides himself and the inebriate, who held up by the nearest
girder, there was only one other person on the bridge, a small, thin
figure, creeping from the distance toward them in the moonlight, a
half-grown child, who leaned her shoulders to one side to balance a
basket on the other.
“Pretty full, Jimmy Shays,” Hennion said, giving him a match.
“You'd float all right if you fell into the river.”
“Tha'sh right, tha'sh right! I drinks to pervent accerdents, myself.”
He lit the match, seemed to gather the idea that he had
succeeded with the pipe, and sucked at it imaginatively; then started
suddenly for the basket girl. “Hi!”
The child stopped and looked at him.
“I gets one end. Tha'sh right.”
She accepted the offer with matter-of-fact gravity, and they moved
away over the bridge unsteadily. The glamour of the moon was
around them. Hennion heard Shays lift his voice into husky
resemblance of a song.
A queer world, with its futilities like Shays, its sad little creeping
creatures like the basket girl!
Down the river some distance was the P. and N. Railroad bridge.
The west-bound train shot out upon it, a sudden yell, a pursuing
rumble, a moving line of lit windows.
Whatever one did, taking pride in it purely as a work, as victory
and solution, it was always done at last for the sake of men and
women. The west-bound passenger train was the foremost of
effectual things. It ran as accurately to its aims in the dark as in the
light, with a rhythm of smooth machinery, over spider-web bridges.
Compared with the train, the people aboard it were ineffectual. Most
of them had—but mixed ideas of their purposes there. But if no
passengers had been aboard, the westbound train would have been
a silly affair.
Hennion came from the bridge and down Bank Street, which was
brilliant with lights. He turned up an outrunning street and came out
on the square, where stood Port Argent's city hall and court house
and jail, where there was a fountain that sometimes ran, and beds
of trimmed foliage plants arranged in misguided colour-designs.
Several lights were burning in the barred windows of the old jail.
He stopped and looked at the lights, and wondered what varieties of
human beings were there. The jail was another structure which
would have been futile without people to go in, at least to dislike
going in. The man who shot Wood was there. Why did he shoot
Wood? What was his futile idea in that?
The jail was old and dilapidated. Some of the bricks had crumbled
under the barred windows.
Hennion walked into the entrance, and rang the bell.
The jailor was middle-aged, bearded, and smoking a short pipe.
“Can I see Hicks, Sweeney?”
“Got a permit? Oh! Mr. Hennion! Well, it ain't regular, you know.”
“You can stay by.”
“Well, all right. No, but I'll have to lock you in. It's the rules.”
They went up a flight of dark stairs, through a corridor, where a
watchman passed them. They stopped at a door, and the jailor
turned the key.
“Hicks, gentleman to see you.”
CHAPTER IX—HICKS
H
ICKS was sitting within by a plain board table, reading. It was
a whitewashed room and had a window with rusted bars. The
door banged, and the key again creaked in the lock. The
jailor walked to and fro in the corridor.
Hicks looked up from his reading, and stared in a half-
comprehending way.
“I have a selfish thirst for knowledge, Mr. Hicks,” said Hennion.
He took the chair on the opposite side, and looked at the book on
the table. The feeble gas jet stood some six inches out from the
wall, directly over the table.
“It's the Bible,” said the other. “It needs to be made modern, but
there's knowledge in it.”
“I didn't mean that.”
“Lazarus and Dives. That's fanciful justice. A trick to pacify
Lazarus. But there's knowledge. Notice what the dogs did. That's
satire.”
It seemed a trifle uncanny, the place, the little man with the
absorbed manner, metallic voice and strange language, black hair
and beard, intent black eyes. Hennion had never interviewed a
criminal before.
“I'm not a reporter, Mr. Hicks, nor a lawyer.”
Hicks marked his place and closed the book.
“I know who you are.”
“I was a friend of Wood's, in a way, but I'm not here in malice. I
gathered you hadn't anything personal against him. It seemed to
follow you had some sort of a long-range motive in it. I wanted to
ask you why you shot Wood.”
Hicks' gaze grew slowly in intentness as if his mind were gathering
behind it, concentrating its power on one point. The point seemed to
be midway between and above Hennion's eyes. Hennion had an
impulse to put his hand to the spot, as if it were burnt, but his habit
of impassiveness prevented. He thought the gaze might represent
the way in which Hicks' mind worked. A focussing mind was a good
thing for anyone who worked with his brains, but it might have
extravagances. An analysis concentrated and confined to an infinitely
small point in the centre of the forehead might make an infinitely
small hole to the back of the head, but it would not comprehend a
whole character. A man's character ran to the ends of his hands and
feet.
“I'm an engineer,” Hennion went on, “and in that way I have to
know the effectiveness of things I handle and apply. And in that way
men too are to me so much effectiveness.”
“I know about you,” said Hicks sharply. “Your men like you. You've
never had a strike.”
“Why—no.”
Hicks' manner had changed. It was quick, excited, and angular.
“You're wrong. They're something more to you, that you didn't
count in. Why do they like you?”
“I don't know.”
“Exactly. But it's something effective, ain't it?”
Hennion paused and felt confused. A man of such sharp analysis
and warped performance as this, how was one to get to understand
him? He leaned back in his chair and crossed his knees. The sharp
analysis might be a trick Hicks had caught from listening to Aidee's
speeches. It sounded like Aidee.
“Well, anyhow, Mr. Hicks, in the way of effectiveness, why did you
shoot Wood?”
Hicks' eyes were little pin-points of concentration.
“He sold the people to the corporations.”
“Well. But suppose he did. Will the next man do any better? If not,
where's the effectiveness?”
“He won't be so sharp.”
“You thought Wood was too sharp to be downed Aidee's way?”
“He was the devil's latest scheme. I sent him to the devil.”
“And shoulder the consequences. I like that. But the next man.
Suppose I were the next man.”
Hicks' teeth clicked together. His hands moved across the table.
They were thin and claw-like, and the nails scratched the boards. He
said softly:
“Look out what you do.”
“What shall I do? I'm looking around for advice. Does it seem
queer if I ask some of you?”
Hennion felt brutally master of the situation. There seemed
something unfair in his greater size, his colder nerves and more
untroubled brain, unfair to the little man opposite, with his hot
impulses, his sad and sordid tragedy. Hennion felt so much at ease
as to wonder why he did not feel more repulsion for Wood's
murderer, and consoled himself by thinking Wood himself had been
tolerant of hostilities and extremities, and would probably feel no
repulsion for Hicks. Perhaps the key to Hicks was that he was
created without tolerance. He was made up of intense convictions
and repulsions and inflamed nerves. Whatever goal his purpose fixed
on would become a white-hot point, blinding him to circumstances.
And this focussing nature, which acted like a lens to contract general
heat into a point of fire, was a natural phenomenon in dynamics. It
seemed a characteristic of better service for starting a fire, and
furnishing the first impulse of a social movement, than for running
steady machinery. Some people claimed that society was running
down and needed a new impulse. If so, it needed the Hicks type. If
not, the trouble with Hicks might be that he was a phenomenon
occurring at the wrong time, a fire that had to be put out.
“You ask me!”
“Then it does seem queer? But I ask it. Could a man be a party
boss, and satisfy you?”
Hicks' gaze was now troubled and wild, as if he were trying to find
the centre of the conception with his focus, and could not; as if the
attempt to look at the conception with other than a set hostility was
to break up the organisation of his mind. He drew back, his finger
nails scratching across the table, and hid his face. Hennion rose.
“I beg your pardon.”
“You ask me!”
“Well, I don't think your method is the right one. If a clock's out of
order, I don't think shooting into it is the right method. I dare say it
expresses the way a man feels, but I don't see that it mends the
clock. But if I were undertaking to mend it, and didn't know any too
much about it, I might like to ask the man that was for shooting
what his idea was. I told you I had a selfish thirst for knowledge.
Under the circumstances, I beg your pardon.”
“Why do you ask me?” Hicks' fingers shook on the table. “There's
a man who can tell you. He can lead you. He led me, when I wasn't
a fool.”
“Who? You mean Aidee?”
Hicks nodded, and fell to glowering at his nervous fingers, absent
and brooding.
“He didn't tell you to shoot Wood. I know better than that.”
“No, he didn't.”
“Why, there's another thing I'd like to know. What did Aidee do?”
“Do! He held me back! He was always holding me back! I couldn't
stand it!” he cried sharply, and a flash of anger and impatience went
over his face. “He shouldered me like a log of wood on his back.
Maybe I liked that papoose arrangement, with a smothered damn
fire in the heart of me. No, I didn't! I had to break loose or turn
charcoal.”
Hennion wondered. The man reminded him of Aidee, the same
vivid phrase, the figures of speech. But Aidee had said that he did
not know him. It appeared that he must know him. If Aidee had
been lying about it, that opened sinister suggestions. Hennion did
not like Aidee, neither did he like in himself this furtive sense of
satisfaction in the suggestions.
“Aidee told me he didn't know you. I hadn't thought he would lie
about it.”
“By God, don't call him a liar to me!” Hicks jumped to his feet, and
had his wooden chair swung over his back in an instant.
“I don't. I want it explained,” Hennion said coolly. “You can't do
anything with that. Sit down.”
“He's the only man alive that dares tell the truth. You're all
hounds, cowards, thieves! He's a saint in hell!”
“Likely enough. You're a hot disciple. Still, I'm waiting for an
explanation.”
“Don't you call him a liar!”
“Haven't. Sit down.”
Hicks sat down, his thin hands shaking painfully. His eyes were
narrowed, glittering and suspicious. Hennion tipped his chair back,
put his hands into his pockets, and looked at the weak, flickering gas
jet, and the ripples of light and shadow that crossed the
whitewashed ceiling. They were wild, disordered, and fugitive, as if
reflections from the spirit behind Hicks' eyes, instead of from the jet
at the end of a lead pipe.
“I'll help you out with a suggestion,” Hennion said slowly. “You
don't mean to leave Aidee in that shape, since you feel about him in
this way. But you don't know whether your story would go down
with me, or whether it might not get Aidee into trouble. Now, if I'm
forecasting that story, it's something like this. You knew each other
years ago, not in Port Argent.”
Hicks said nothing.
“Carried you around papoose-fashion, did he? But there's some
likeness between you. It might happen to be a family likeness.” Still
no comment.
“If it so happened, you might be related. You might be twins. And
then again you might not. You might have been his first convert.
Partners maybe in Nevada. That: was where he came from,—silver
mines and what not. It's no business of mine.”
He paused and meditated, looking at the pulsating light; then
brought his chair down and leaned forward.
“I take the liberty to disagree with you. I'm no exception to the
run of men, and I'm neither a hound, nor a coward, nor a thief, nor
yet a liar.”
“I know you're not.”
“However, your story, or Aidee's, is no business of mine. I gave
you those inferences because they occurred to me. Naturally you'd
suspect they would. So they do. Gabbling them abroad might make
some trouble for Aidee, that's true. I shan't gabble them.”
“I know you won't.”
“I wanted your point of view in shooting Wood. If you don't see
your way to give it, all right. I judge it was the same way you were
going to club me with a chair. Simple enough and rather silly.
Goodnight, then. Is there anything I can do for you?”
“Yes.”
Hennion leaned back and studied the gaslight, and disliked
himself. Hicks clasped and unclasped his hands on the table.
“It won't hurt him,” he said hoarsely, “between you and me.
Besides, you can do that for me. He's my brother, old Al. But I cut
away from him. I kept off. I kept away from him for a while, but I
couldn't live without seeing him. You see? I couldn't do it. Then he
came here, and I followed him, and I lived with a shoemaker across
the river and cobbled shoes. But I heard every speech he made in
Port Argent, though he never saw me. He thinks I'm dead, don't he?
I dodged him pretty slick.” He flushed and smiled—“I liked it,” he
whispered, growing excited. “It was better'n the old way, for we got
along all right this way. You've heard of him! Ain't he wonderful?
Ain't he a great one, hey? That was Al. I liked it, but he didn't know.
You see? How'd he know when he thought I was dead, didn't he? I
watched him, old Al!”
His face was lit up with the warm memory of it. He clicked his
teeth, and swayed to and fro, smiling.
“We got along all right this way. All right. My idea. Wasn't Al's. I
kept the other side the river, mostly. Nobody can touch him when
he's fired up, can they? They didn't know Al like I knew him. They
called him the Preacher. He scared 'em like prairie fire. He's got his
way. I've heard him. I watched 'em, and I knew him, but they didn't,
did they?”
He focussed his excited eyes suddenly on Hennion.
“You! I know you; I know your men that live on the east side. I
heard a man say you'd got a heart like a baked potato and don't
know it. That fat-headed foreman of yours, Kennedy, he can tell you
more 'n you ever thought of. Think you're a composite of steel and
brick, set up according to laws of mechanics, don't you? Oh, hell! Go
and ask Al. He's a wonder. Why do your men like you? Go and ask
'em. I've told you why. Why'd I shoot Wood? Al wouldn't have let
me, but it 'll do good. He scares 'em his way, I scare 'em mine. You
wait and see! It 'll do good.”
Hennion studied the gas jet, until he could see nothing but an
isolated impish dancing flame, until it seemed as if either the little
man across the table were chattering far away in the distance and
darkness, or else he and the gas jet were one and the same.
Aidee had been four years in Port Argent, and so Hicks had been
following and watching him, cobbling shoes, living a fanciful, excited
life, maniacal more or less. Hennion fancied that he had Hicks' point
of view now.
“You wait and see! It'll do good.”
“Well,” said Hennion, “I dare say you've answered the question.
You haven't told me yet what I can do for you.”
Hicks' excitement died out as suddenly as it had risen. He reached
a trembling hand across the table, and whispered:
“I thought—— What do you think they'll do to me?”
“I can't help you there. You'll have counsel.”
“No, no! It's this. I thought I'd write a letter to Al, and you'd give
it to him afterwards, a year afterwards—supposing—you see?”
He hesitated pitifully.
“All right, I'll do that.”
“I won't write it now.”
“I see.”
“You'll keep it still? You won't tell? You won't get a grudge against
Al? If you do! No. I know about you. You won't tell.”
“No, I won't. Well, good-night, then.”
“Good-night.”
His voice was husky and weak now. He put out his hand,
hesitating. Hennion took it promptly. It felt like a wet, withered leaf.
Hennion went and knocked at the door, which Sweeney opened.
Hicks sat still by the table, looking down, straggling locks of his black
hair plastered wet against his white forehead, his finger nails
scratching the boards.
The door clanged to, and the noise echoed in the corridor.
“I heerd him gettin' some excited,” said the jailor.
“Some.”
“Think he's crazy?”
“That's for the court to say.”
“Ain't crazier'n this old jail. I need a new one bad, Mr. Hennion.
Look at them windows! I seen mighty clever boys here. A sharp one
could dig out here some night, if he had the tools.”
“Then you'd better not suggest it to Hicks.”
“Ho! He ain't thinkin' of it. He's a weakly man.”
“No, probably not.”
“He ain't got the tools, either. I know the business. Look at the
experience I've had! But I need a new jail, Mr. Hennion, bad, as I
told Mr. Wood.”
“Better write out a statement of the case. Good-night. Much
obliged for your trouble.”
The jailor talked busily till they came to the outer door. Hennion
broke away, and left him in the doorway smoking his short pipe.
He came presently to sit in the tall Champ-ney library, and heard
Henry Champney speaking in that tone and accent which made an
ordinary remark sound like one of the Ten Commandments. Camilla
was silent.
“Do you then, ha! cross the Rubicon?” Champney asked.
“Wood's organisation, sir? Carroll and the city jailor both seem to
think it a foregone conclusion. Sweeney thinks if one of his 'boys'
had a crowbar, or chisel, or a pair of tongs, he'd return to the
community; so he wants a new jail, thinking it might include a new
salary.”
CHAPTER X—MACCLESFIELD'S
BRIDGE
H
ENNION knew Wood's organisation intimately enough. He
had been a part of it on the outside. Wood had been
chairman of the “General Committee,” a body that had total
charge of the party's municipal campaigns, including admission to
caucuses, and local charge in its general campaigns. Local
nominations were decided there. It was only less active between
elections than during them. It had an inner ring which met by habit,
socially, in Wood's office. Whatever was decided in Wood's office, it
was understood, would pass the Committee, and whatever passed
the Committee would pass the City Council, and be welcomed by a
mayor who had been socially at the birth of the said measure. Port
Argent was a ring-led city, but it claimed to have a better ring than
ordinary. Probably it had. Probably this was due in the main to
something peculiar in Wood.
Hennion's election to the chairmanship was followed by a meeting
in his office that forced a sudden investment in chairs. It was
Thursday. Carroll was there; Mayor Beckett, a neatly dressed man
with a long neck and close-trimmed black beard, talkative,
casuistical, a lawyer by profession; Ranald Cam, President of the
Council, solid, grim, rugged, devoid of grammar, grown grey in the
game of politics, and for some reason unmatched in his devotion to
Wood's memory; John Murphy, saloon-keeper from East Argent, not
now in any office, an over-barbered, plastered, and gummy-looking
person, boisterous and genial; J. M. Tait, small, thin, dry, of
bloodless complexion, sandy hair, and infrequent speech, a lawyer,
supposed to represent corporate interests; Major Jay Tuttle,
President of the School Board, white-moustached and pompous.
Port Argent's school system was thought too military by the
teachers who suffered under it. The Major stood high among Masons
and G. A. R.'s. Endless gossip and detail might be given of all these
men. Hen-nion knew them well, some of them as far back as he
could remember. Each of them held the corner threads of a
spreading network of influences and personal interests. In Hennion's
office they smoked and discussed. They varied discussion with
anecdotes of Wood.
Major Tuttle wanted two of the ward schools enlarged, and offered
plans and estimates of competing architects.
“Any preference, Major?” asked Hennion.
“I have given it some consideration,” said the Major puffily, and
stated considerations.
“Well,” Hennion suggested, “why not give one to Smith and one to
Hermon, and tell them to compete for glory. It might stir them up.”
The circle laughed and nodded.
The North Shore R. R. had put in a large proposition involving a
new bridge and station, street crossings, and various rights of way.
Tait read a document signed “Wm. R. Macclesfield, President.”
Hennion suggested that they offer a counter-proposition.
“We don't want any more grade crossings down there. What
makes him expect his right of way for a gift?”
“You know what they chipped in this spring?” said Tait, looking up.
“Pretty much. But Wood never sold out that way, did he?” He
turned to Ranald Cam.
“Marve Wood ain't never made the city a bad bargain yet,”
growled Cam, “for all they gas about it.” Tait was silent. The others
disputed at length on obscure historic points in Wood's policy. The
shadowy influence of the “old man” was still so strong in the circle
that no one ventured to put any doubt on the guiding wisdom of
whatever he had done. They only disputed points of fact.
“He kept things solid,” said Carroll, “that's the point.”
“I should say Macclesfield would have to come up,” said Hennion
at last. “I'll bring you in a counter-estimate next week.”
When the circle broke up an hour later, Tait lingered behind the
rest. Tuttle, Beckett, and Cam went up Hancock Street together.
“I guess Dick's going to shut down on Tait,” said Beckett. “Suit me
all right if he does. Depends on how he handles Macclesfield, don't
it? He's rather prompt, eh? I wouldn't exactly say brusque, but it
won't do to rough Macclesfield. Guess you'd better advise him,
Major. Say, why not?” Hennion seemed to him not so
companionable, so comfortable as Wood.
“Possibly, possibly,” said the Major.
Ranald Cam growled in his beard. Wood's death was a heavy blow
to him. Both the elder men had felt the touch of Hennion's
deference toward them. They did not like Tait.
“Want to go over there with me, Hennion?” said Tait, puffing his
black cigar rather fast. “See Macclesfield?”
“Not that I know of.”
“Suppose I bring him over here?” Hennion stared at the top of his
desk for a full moment. “All right. Come in an hour.”
Tait went out, and Hennion fell to figuring.
William R. Macclesfield was a cultivated gentleman, whose
personal courtesies to all men seemed to be returned by fortune in
personal courtesies to him. Macclesfield's attractiveness would be
evident at first knowledge. Persuasion of his astuteness would follow
not long after. Precipitate judgments on his character, based on the
interview which here dropped into Hennion's experience of men and
things, were as well unmade. Hennion preferred to whistle and
consider it.
“Should I congratulate or commiserate?” said Macclesfield, smiling
and shaking hands.
“Commiserate, thank you.”
Macclesfield sat down and talked on pleasantly.
“Yes, yes. Well, it may not be so bad as you think. It calls for great
judiciousness. Wood, now, was a remarkable, I should say a
judicious, man. I know. Your profession, of course. Times have
changed since your father and I met thirty, yes, forty years ago. He
was proud of his profession. Rightly so. Of course, rightly so. We
enjoyed ourselves, too, we young men. The times were perhaps a
little, I might say, rugged. Port Argent has grown. There have been
remarkable developments in politics and engineering. Nowadays
municipal affairs seem to call for a manager in the background. If
he's apt to be there, it must mean he is needed, but it's a peculiar
position. You are quite right. But you were Wood's choice, and he
was a very judicious man. You find it takes time and labour. Yes, and
it calls for ability. Now, it is curious that some people seem to think
one in that position ought not to get anything for his trouble. I call
that absurd. I always found in railroading that time, labour, and
ability had to be paid for. By the way, you learned engineering from
your father, I think. Yes, an old friend of mine. I was thinking coming
over the street just now with Tait—I was thinking what fine things he
did in his profession. Very bold, and yet very safe. Remarkable. And
yet engineering was almost in its infancy then.”
“Yes,” said Hennion, “the changes would have interested him.”
“Indeed they would! So—the fact is—I was thinking that, if you
cared to submit plans, I should personally like to see you build that
bridge of ours. I should personally like to see what Rick Hennion's
son can do. An elderly man like me can be forgiven a little
sentiment, even in business.”
Hennion laughed. Macclesfield glanced up suddenly, but saw
nothing in the young man's somewhat impassive face to trouble him.
“I'd like to build the bridge, of course. You don't think the
sentiment needs any forgiveness from me?”
“My dear boy, it's perfectly sincere! You'll submit plans, then?”
“If you continue to want them.”
“Good! Now—oh! Tait said something about the crossings. You
think the figures too low. Tait said something of the kind. Perhaps
they are a little. I'll look them over again. At the same time, you
realise the feasibility depends on expense. We want to be fair. But
considering how much more convenient to the public this new
station will be, considering the benefit of that arrangement, you
think the city ought to be moderate?”
“Moderate in its generosity.”
“Ah—I don't know—I was thinking that we understood each other
—that is—the situation.”
Hennion swung in his chair.
“I was thinking, Mr. Macclesfield, of the advantages of candour,
and I was wondering what my father would have said about the
situation. Wouldn't he have said, in his candid way, that a personal
contract and the representative disposal of either city or trust
properties were two transactions that had better not be mixed?”
“My dear boy, who's mixing them?”
“Well, I'm proposing to separate them. We'll take your station
scheme. Considering the benefit and convenience, as you say, the
city can afford to be moderate, but it can't afford any more grade
crossings down there. You'll have to come in by a subway.”
Macclesfield shook his head smilingly.
“We can't afford that, you see.”
“Can't? Well, you can afford what you have to. May I ask what you
expect to get through for, from Roper's front to Maple Street?”
“Oh, well—isn't this a little inquisitorial?”
“Not necessary, anyway. I know, about.”
He named a figure. Macclesfield looked surprised.
Hennion went on slowly:
“The offer you have made Roper I happen to know that he won't
take at all. You'll suspect, then, that the P. and N. are bidding
against you. There'll be a mess, and you'd better not be in it. You
might as well suspect it now. The P. and N. can afford anything they
choose.”
Macclesfield said nothing.
“I'm going to make a suggestion, Mr. Macclesfield, if you like.”
“By all means!”
“I'm going to suggest that you put your bridge a half mile lower
down, below the boathouses, and come up back of the Gas Works.
If you don't know the holdings down there I'll give them to you.”
He plunged, without waiting, into a stream of ordered and massed
figures, following the suggested line from point to point, massed the
figures of the Roper's front to Maple Street plan, compared them,
and went on.
“The Gas Works people will be all right. A. J. Lee will make you
some trouble. Dennis Dolan, being one of your stockholders, won't.
You'll save about half on your right of way. Construction will be
considerably more. You get an easy water-front instead of having to
bid against the P. and N. By stopping beyond the Gas Works instead
of going on to Maple Street you'll save seventy thousand at least.
You'll have the marshes to develop your freight yards without much
limit. The station's preferable there, probably, from the city's
standpoint. It will front on the Boulevard, if the Boulevard ever gets
down there, and it will. You have a better curve, same connection
with the P. and N., and this one here with the L. and S. You'd have
to buy right and left on Maple Street. Here you get your site in a
lump from Dolan and the Gas Works. Now, we'll take your approach
on the east side.” More details massed and ordered. Macclesfield
listened intently. Tait half closed his eyes and swung one nervous
foot. Hen-nion concluded and paused a moment.
“Now, Mr. Macclesfield, allow me a little more candour. It amounts
to this—first, if you can't touch me with a bridge, you can't touch me
with anything.”
“If I seemed to attempt it,” said Macclesfield, “I owe you an
apology for my awkwardness.”
“None at all for anything. Secondly, a subway and no grade
crossings this side the Gas Works or on Lower Bank Street is final, so
far as I can make it so. Thirdly, your proposal that I put in plans for
the new bridge can now be very properly withdrawn.”
Macclesfield smoothed his face thoughtfully.
“I don't deny a certain amount of surprise. You have discussed the
subject very ably. I'd rather you'd let me have that in the form of a
report.”
“All right.”
“And you'll add a preliminary estimate on the bridge? I—don't, in
fact, withdraw it.”
He rose and shook hands with Hennion.
“So you think the sentiment wasn't sincere? Well, I don't know. I
sometimes have them.”
“Tait,” he said, as they went down the stairs. “That young man—
for God's sake don't let's have any trouble with him.”
“Is he going to bite or build?”
“Build! Bless my soul, I hope so! A young man—a—that won't lose
his temper! He didn't turn a hair! Bless my soul, Tait, I hope so!”
Hennion was left to swing in his chair, to whistle and consider, to
wonder what, in fact, might be the true sentiments of William R.
Macclesfield, who had retreated neatly, to say the least. A slippery
man, a little fishy, who slid around in a situation as if it were water.
Perhaps that was injustice. Whether it were sincerity, or neatness,
he had left Hennion with a sense of having done him an injustice.
He turned to his desk and figured and wrote for half an hour; then
pushed aside the papers and went out. He thought he would go over
to East Argent and see how Kennedy was getting on with the
grading. Before he had gone far he changed his mind.
The grading job was not interesting. Kennedy could look after it. It
might be better to let him work alone for a day or two, without
watching; it would cheer up Kennedy not to feel eternally disgraced
for blundering with his sand layer, or to feel that he had to go
around acting like a desolate orphan about it.
He took a car down Lower Bank Street, past the boathouses, and
there paced the high wet and weedy river bank. Then he turned
west through some miles of empty acres. Low marshy lands lay on
his right, misty and warm in the distance, vividly green nearby. Now
and again he crossed a street that had been thrust out speculatively
from the vague verge of the city to tempt inhabitants. Cheap new
houses were strung along them at wide intervals. The Gas Works
had huge furnaces and a cluster of built-up streets about them. He
followed the line of the Boulevard surveys, absorbed, often stopping
and making notes. He came through a stretch of cornfield and
pasture. If the city bought it in here before it began to develop the
section, it would be shrewd investment. The marshes would be
crossed by an embankment.
A half mile further on he vaulted over a high fence and plunged
into the wet woods and open spaces, scrubby and weedy, of Wabash
Park, a stretch of three hundred acres and more, bought
spasmodically by the city some years back and then left to its own
devices. It was useful now mainly to small boys, who speared frogs
in the broad, sluggish creek that twisted through between banks of
slippery clay.
The Boulevard was another spasmodic vision of a forgotten
commissioner. It was planned to run somewhat in the shape of a
half circle, around the city, from a river-bank park on the north to a
river-bank park on the south, with Wabash Park midway. Hennion
tried to fancy himself a landscape gardener. He stood a long while
staring down at the creek, which was brimful with the spring rains.
Pools of brown water lay all about the bottom lands and in the
brush.
To build a bridge as it should be built, to shape a city as it should
be shaped, to make Port Argent famous for its moonshaped
Boulevard, to accomplish something worth while, to make a name—
it looked like a weedy road to travel in, and no small trick to keep
out of the mud. Still, after all, the mud was mostly in the ruts.
People said you couldn't get ahead there without splashing through
the ruts. Maybe not. There would be blackguarding probably. But
Macclesfield had been handled anyway.
Wabash Park was a scrubby-looking place now. Beckett would
have to be sent after the Park Board, to tell them to clean it up. By
the way, Macclesfield was on that effortless, or otherwise busy Park
Board. The rest of the commissioners didn't know a landscape from
a potato patch. Macclesfield was the man. He might be persuaded to
have a sentiment on the subject.
Hennion followed the creek out of the park to a lately
macadamised road. A wide, straight, half-made highway started
from the other side of the road and stretched a half mile across
country, with small maples planted regularly on either side. It was all
of the Boulevard and the spasmodic commissioner's vision that had
ever been realised. So it remained a fragment, of no use to anyone,
one of Port Argent's humourous civic capers.
Beyond this, following the surveys, he came through a rough and
noisy neighbourhood—factories, and unkempt streets, empty lots
strewn with refuse—and came to the canal, the great Interstate
Canal, built by Hennion the elder. It was idle now. The water
splashed musically from its lock gates, and the towpath was
overgrown. Then followed pastures with cattle in them, and fields
where men were ploughing. He came to the river bank at last, where
Wyandotte Park lay, popular already for Sunday afternoons, popular
somewhat on any afternoon in spring and summer for picnics and
boating. It was dotted with stalls of the sellers of hard drinks and
cigars, sellers of soft drinks and chewing gum. It possessed a band
and an incipient menagerie, a merry-go-round, a boathouse, and
several flamboyant restaurants. It was the cheerfullest place in Port
Argent on a Sunday afternoon.
The day was almost gone. Hennion's notebook was half-full of
mysterious jottings, and his shoes caked with clay, the slimy blue
mud that sticks and stains and is the mother of harvests. The river
had a swifter current here than lower down, and there were marshy
islands, steep bluffs on either side, and up-stream a vista of deeply-
wooded shores.
He stood near the merry-go-round and watched the crowd. He
wondered if it were not peculiar for a man to know so many people
as he did, to know almost everyone in Port Argent. It had always
been a fact to some extent. But Port Argent was getting to be a
large city. Still, he had an impression that strange faces and
unnamed were rather an exception. Most faces that he saw were
familiar. He looked around him in the park.
Here were three young girls sipping soda water. He did not know
them. Wait! They were all three daughters of Kottar, the baker on
Maple Street. They'd been growing up. And here came Kottar himself
with the rest of the flock, taking an afternoon's pleasure. Here were
two men getting on the trolley car. They appeared to be mainly
drunk. No use! He knew them too. One of them was Jimmy Shays,
shoemaker, on Muscadine Street, east side; the other was Tom
Coglan, one time a drayman, another time one of a batch of John
Murphy's, which batch Hennion had helped John Murphy to get jobs
for with the Traction Company. Coglan and Shays lived in a house on
Muscadine Street, with an outside stairway. Hicks, who shot Wood,
used to live there too; grocery store underneath, grocer named
Wilson. Names of Kottar's children, remembered to have once been
so stated by Kottar, Nina, Katherine, Henry, Carl, William, Adela, and
Elizabeth. One appeared to remember things useful, like the price
per gross of three-inch screws at present quoting, as well as things
useless, like the price three years ago. Hennion thought such an
inveterate memory a nuisance.
Coglan and Shays appeared to be happy. Everybody appeared to
be happy in Wyandotte Park. Hennion concluded that he liked
Wyandotte Park and its people. When you knew them, you found
they differ little for better or worse from Herbert Avenue people,
Secors and Macclesfields—all people, and a mixed, uncertain article
to deal in.
He sat down on the roots of a tree. It grew on the edge of a bluff
over the river, a survival of that fraternity of trees which had covered
the whole section but a few generations back.
“Mighty good luck to be young, Dick,” the “Governor” had said,
and died, calling his life on the whole satisfactory, on account of the
good times he had had, and the work that he knew he had done as
it should be done.
Hennion thought he would go and tell Camilla about the
Boulevard. He caught a car and went back to the centre of the town.
When he came to the Champney house late in the evening, Alcott
Aidee was there, though about to leave. It struck Hennion that
Aidee's being about to leave was not an absolute compensation for
his being there, but he did not have time to examine the impression.
Camilla had been reading Charlie Carroll's sinister paragraphs on “a
certain admired instigator of crime.” She dashed into the subject as
soon as Aidee was gone.
“He says he doesn't care about it,” she cried, “but I do!”
“Do you? Why?”
“Why!”
Camilla paused, either from stress of feeling or inability altogether
to say why. Hennion had seen the paragraphs, but had not thought
about them.
“Well, if you mean it's not just, Milly, I don't suppose Carroll ever
bothers about that. There's a good deal of give and take in politics.
Aidee has given it pretty sharply himself. I dare say he knows how to
take it.”
“It's wicked!” cried Camilla passionately.
Hennion laughed.
“Well—he needn't have called Wood names—that's true.”
“If you're going to laugh about it, you can go away!”
“'Instigator of crime,' isn't so strong as 'thief,' is it? It's a pity they
can't get along without blackguarding each other, but probably they
can't.”
Camilla turned away. Her indignation was too genuine, and
sobered him.
“My dear girl! I don't suppose Wood was properly called a 'thief'
nor Aidee 'an instigator of crime.' Probably Aidee believes what he
says. Probably Carroll hasn't the remotest idea what he believes.
What of it? I've been tramping the wilderness of Port Argent all day
and seeing visions, Milly, and I'd rather not quarrel. Did Aidee say he
was going to do anything in particular?”
“He said he was going to see Mr. Hicks.”
“What!”
“To see Mr. Hicks to-night. Of course he'll go to comfort someone
that nobody else will,” cried Camilla breathlessly, “and of course
you'll say he'd be wiser to keep away and nurse his reputation,
because people will talk. Perhaps you think it proves he's an
anarchist, and makes bombs.”
“You go too fast for me.” He thought he did not dislike Aidee so
much that he would not have stopped his going to see Hicks, if he
could. He was not quite clear why he disliked him at all.
It was a turn of mind, characteristic of the Hennions, somewhat of
the grimly philosophical, which set him to thinking next that Aidee's
situation now, in the whitewashed cell with the alias Hicks, must be
confusing and not pleasant, that his own situation was vastly more
comfortable, and that these, on the whole, were not bad situations.
He set himself to the fascinating task of making Camilla's eyes
shine with excitement,—but he did not seem to succeed,—over the
subject of a moon-shaped Boulevard, strung with parks, like a
necklace around a lady's throat.
“I worked out that figure of speech for you, Milly. It's a beauty.
Port Argent is the lady. A necklace ought to raise her self-respect.
She'll have three hundred acres of brooch in the middle called
Wabash Park. She's eight miles on the curve from shoulder to
shoulder. I walked it today. It struck me she needed washing and
drying.”
True, Camilla's indignation seemed to fade away. She said, “That's
tremendously nice, Dick,” and stared into the fire with absent wistful
eyes.
He drew nearer her and spoke lower, “Milly.”
“No, no! Don't begin on that!”
Presently he was striding up Lower Bank Street, hot-hearted with
his disappointment.
“Well, Port Argent shall have her necklace, anyhow. Maybe I
shan't. But I will, though!”
He went through the Court House Square past the old jail, glanced
up under the trees at Hicks' barred window.
“Aidee's getting a black eye too in there,” he thought. “That's too
bad.”
When he reached his rooms he was already thinking of
Macclesfield's bridge.
CHAPTER XI—THE BROTHERS
M
AY I see Hicks?”
The stout, bearded jailor nearly-filled the doorway. He
puffed his short pipe deliberately, and stared at Aidee. The
smoke floated up and around the gas jet over his head.
“Ain't you the Preacher?”
“So they call me.”
The jailor stepped back, either in surprise or consent. Aidee
walked into the opening and passed on. The jailor followed him.
“Where is his cell?”
“Spiritual consolation! That's it. That's the word,” said the jailor
thoughtfully. “Some folks has the gift of it. Oils a chap up, don't it,
so he'll slip out'n his corpse, like he was greased. Well, there's
som'p'n in it. But I seen in the Press this mornin'—say, you ain't goin'
to instigate him again?”
Aidee laughed, and said:
“They have to be lively.”
“That's right, Preacher. Folks say a thing, but what they got in
their heads is the thing they don't say, ain't it?”
“You're a philosopher.”
“Oh, I do a pile of thinkin',” said the jailor complacently.
He mounted slowly to the upper corridor, knocked at a door, and
unlocked it.
“Hicks, gentleman to see you.”
Hicks looked up, blinking and shading his eyes.
The jailor locked the door noisily behind Aidee, and walked away.
At the end of the corridor he stopped and listened, and heard the
murmur of low voices. He sat down and tipped his chair against the
wall and meditated.
“Spiritual consolation! That's the word.”
Alcott leaned his back against the wall, and stared at Allen, who
ran to his side and grasped his arm and whispered, “Don't you yell
out!” while Sweeney was locking the door noisily. Sweeney's steps
receded in the corridor.
“What do you come here for? Keep quiet!”
“Lolly!”
“Who told you it was me?”
He pulled him over to the table. They sat down and gripped hands
across and looked dumbly at each other. Allen broke down first. He
dropped his head on the table and gave soft, dry sobs.
“Lolly, boy!”
“Did he tell you it was me?”
“Who?”
“Hennion!”
“Nobody told me it was you.”
“You came to see Hicks!”
He looked up suddenly with an impish grin. “Hey! I know! You
wanted to ask me what I shot Wood for? That's what they all want
to know.”
It was the same twisted smile that Alcott knew so well, two-thirds
on one side of his face, the same shy, freakish look in the eyes as of
a cornered animal. They used to laugh at home over Lolly's queer
smile—Lolly the original, the unexpected, the sudden and fierce in
his small resentments, yet how passionately loving, and how lovable
and clever! They used to think so at home. Here he was, then, with
his twisted smile, and hot, black eyes and jerking, vivid speech. His
thin, straggling beard had changed his looks. He had aged fast in
the six years. Alcott thought he would hardly have recognised him at
a little distance. So—why, Hicks!—Carroll said Hicks used to drink
down Alcott's own speeches like brandy! Hicks had killed Wood!