100% found this document useful (1 vote)
8 views51 pages

Source Code Analytics With Roslyn and JavaScript Data Visualization Mukherjee pdf download

The document provides an overview of the book 'Source Code Analytics With Roslyn and JavaScript Data Visualization' by Sudipta Mukherjee, which discusses various aspects of code analysis and visualization using the Roslyn Syntax API. It includes chapters on code quality metrics, design quality metrics, performance metrics, code mining, and code forensics. Additionally, it lists related resources and books on data visualization and code generation.

Uploaded by

cbhkuzt8835
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
8 views51 pages

Source Code Analytics With Roslyn and JavaScript Data Visualization Mukherjee pdf download

The document provides an overview of the book 'Source Code Analytics With Roslyn and JavaScript Data Visualization' by Sudipta Mukherjee, which discusses various aspects of code analysis and visualization using the Roslyn Syntax API. It includes chapters on code quality metrics, design quality metrics, performance metrics, code mining, and code forensics. Additionally, it lists related resources and books on data visualization and code generation.

Uploaded by

cbhkuzt8835
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 51

Source Code Analytics With Roslyn and JavaScript

Data Visualization Mukherjee download

https://textbookfull.com/product/source-code-analytics-with-
roslyn-and-javascript-data-visualization-mukherjee/

Download full version ebook from https://textbookfull.com


We believe these products will be a great fit for you. Click
the link to download now, or visit textbookfull.com
to discover even more!

Code Generation with Roslyn Nick Harrison

https://textbookfull.com/product/code-generation-with-roslyn-
nick-harrison/

D3.js in Action: Data visualization with JavaScript 2nd


Edition Elijah Meeks

https://textbookfull.com/product/d3-js-in-action-data-
visualization-with-javascript-2nd-edition-elijah-meeks/

D3 js in Action Data visualization with JavaScript


Second Edition Elijah Meeks

https://textbookfull.com/product/d3-js-in-action-data-
visualization-with-javascript-second-edition-elijah-meeks/

Data Visualization with Python and JavaScript Scrape


Clean Explore Transform Your Data 1st Edition Kyran
Dale

https://textbookfull.com/product/data-visualization-with-python-
and-javascript-scrape-clean-explore-transform-your-data-1st-
edition-kyran-dale/
Begin to Code with JavaScript 1st Edition Miles

https://textbookfull.com/product/begin-to-code-with-
javascript-1st-edition-miles/

Data Visualization Toolkit Using JavaScript Rails and


Postgres to Present Data and Geospatial Information
Barrett Clark

https://textbookfull.com/product/data-visualization-toolkit-
using-javascript-rails-and-postgres-to-present-data-and-
geospatial-information-barrett-clark/

Practical Python Data Visualization: A Fast Track


Approach To Learning Data Visualization With Python
Ashwin Pajankar

https://textbookfull.com/product/practical-python-data-
visualization-a-fast-track-approach-to-learning-data-
visualization-with-python-ashwin-pajankar/

Neuroimaging, Software, and Communication: The Social


Code of Source Code Edison Bicudo

https://textbookfull.com/product/neuroimaging-software-and-
communication-the-social-code-of-source-code-edison-bicudo/

Data Visualization with D3 4 x Cookbook Nick Zhu

https://textbookfull.com/product/data-visualization-
with-d3-4-x-cookbook-nick-zhu/
Source Code
Analytics With
Roslyn and
JavaScript Data
Visualization

Sudipta Mukherjee
Foreword by Dr. Darius Blasband
Source Code Analytics
With Roslyn and
JavaScript Data
Visualization

Sudipta Mukherjee
Foreword by Dr. Darius Blasband
Source Code Analytics With Roslyn and JavaScript Data Visualization
Sudipta Mukherjee
Varthur Hobli, India
ISBN-13 (pbk): 978-1-4842-1924-9 ISBN-13 (electronic): 978-1-4842-1925-6
DOI 10.1007/978-1-4842-1925-6
Library of Congress Control Number: 2016961817
Copyright © 2016 by Sudipta Mukherjee
This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the
material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation,
broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage
and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or
hereafter developed.
Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with
every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an
editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark.
The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are
not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to
proprietary rights.
While the advice and information in this book are believed to be true and accurate at the date of publication,
neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or
omissions that may be made. The publisher makes no warranty, express or implied, with respect to the material
contained herein.
Managing Director: Welmoed Spahr
Lead Editor: Todd Green
Technical Reviewer: Abhishek Gupta
Editorial Board: Steve Anglin, Pramila Balan, Laura Berendson, Aaron Black, Louise Corrigan,
Jonathan Gennick, Todd Green, Robert Hutchinson, Celestin Suresh John, Nikhil Karkal,
James Markham, Susan McDermott, Matthew Moodie, Natalie Pao, Gwenan Spearing
Coordinating Editor: Jill Balzano
Copy Editor: Corbin Collins
Compositor: SPi Global
Indexer: SPi Global
Artist: SPi Global
Distributed to the book trade worldwide by Springer Science+Business Media New York,
233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail
[email protected], or visit www.springer.com. Apress Media, LLC is a California LLC and the sole
member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is
a Delaware corporation.
For information on translations, please e-mail [email protected], or visit www.apress.com.
Apress and friends of ED books may be purchased in bulk for academic, corporate, or promotional use. eBook
versions and licenses are also available for most titles. For more information, reference our Special Bulk
Sales–eBook Licensing web page at www.apress.com/bulk-sales.
Any source code or other supplementary materials referenced by the author in this text are available to
readers at www.apress.com. For detailed information about how to locate your book’s source code, go to
www.apress.com/source-code/. Readers can also access source code at SpringerLink in the Supplementary
Material section for each chapter.
Printed on acid-free paper
To Mou, for never giving up on me
Contents at a Glance

Foreword��������������������������������������������������������������������������������������������������������������� xiii
About the Author�����������������������������������������������������������������������������������������������������xv
About the Technical Reviewer�������������������������������������������������������������������������������xvii
Acknowledgments��������������������������������������������������������������������������������������������������xix
Introduction������������������������������������������������������������������������������������������������������������xxi


■Chapter 1: Meet Roslyn Syntax API����������������������������������������������������������������������� 1

■Chapter 2: Code Quality Metrics�������������������������������������������������������������������������� 15

■Chapter 3: Design Quality Metrics����������������������������������������������������������������������� 45

■Chapter 4: Code Performance Metrics����������������������������������������������������������������� 71

■Chapter 5: Code Mining��������������������������������������������������������������������������������������� 91

■Chapter 6: Code Forensics��������������������������������������������������������������������������������� 131

■Chapter 7: Code Visualization���������������������������������������������������������������������������� 155

Index��������������������������������������������������������������������������������������������������������������������� 167

v
Contents

Foreword��������������������������������������������������������������������������������������������������������������� xiii
About the Author�����������������������������������������������������������������������������������������������������xv
About the Technical Reviewer�������������������������������������������������������������������������������xvii
Acknowledgments��������������������������������������������������������������������������������������������������xix
Introduction������������������������������������������������������������������������������������������������������������xxi


■Chapter 1: Meet Roslyn Syntax API����������������������������������������������������������������������� 1
Syntax Tree Methods�������������������������������������������������������������������������������������������������������� 1
GetRoot��������������������������������������������������������������������������������������������������������������������������������������������������� 1
DescendantNodes����������������������������������������������������������������������������������������������������������������������������������� 2
DescendantTrivia������������������������������������������������������������������������������������������������������������������������������������ 2
DescendantTokens��������������������������������������������������������������������������������������������������������������������������������� 2
Ancestors ����������������������������������������������������������������������������������������������������������������������������������������������� 3

Important Types ��������������������������������������������������������������������������������������������������������������� 3


MethodDeclarationSyntax ��������������������������������������������������������������������������������������������������������������������� 3
ClassDeclarationSyntax ������������������������������������������������������������������������������������������������������������������������� 4
SructDeclarationSyntax ������������������������������������������������������������������������������������������������������������������������� 5
InterfaceDeclarationSyntax ������������������������������������������������������������������������������������������������������������������� 5
IndexerDeclarationSyntax����������������������������������������������������������������������������������������������������������������������� 5
PropertyDeclarationSyntax �������������������������������������������������������������������������������������������������������������������� 6
ForStatementSyntax������������������������������������������������������������������������������������������������������������������������������� 7
ConstructorDeclarationSyntax���������������������������������������������������������������������������������������������������������������� 7
ForEachStatementSyntax����������������������������������������������������������������������������������������������������������������������� 8
SwitchStatementSyntax������������������������������������������������������������������������������������������������������������������������� 8

vii
■ Contents

ParameterSyntax������������������������������������������������������������������������������������������������������������������������������������ 9
DoStatementSyntax�������������������������������������������������������������������������������������������������������������������������������� 9
UsingStatementSyntax������������������������������������������������������������������������������������������������������������������������� 10
IfStatementSyntax�������������������������������������������������������������������������������������������������������������������������������� 11
TryStatementSyntax����������������������������������������������������������������������������������������������������������������������������� 11
ConditionalExpressionSyntax��������������������������������������������������������������������������������������������������������������� 13
ParenthesizedLambdaExpressionSyntax���������������������������������������������������������������������������������������������� 13
WhileStatementSyntax������������������������������������������������������������������������������������������������������������������������� 13

Summary������������������������������������������������������������������������������������������������������������������������ 14

■Chapter 2: Code Quality Metrics�������������������������������������������������������������������������� 15
Setting Up LINQPad to Use Roslyn��������������������������������������������������������������������������������� 16
Magic Numbers in Mathematics������������������������������������������������������������������������������������ 18
Magic Numbers Used in Index ������������������������������������������������������������������������������������� 20
Magic Numbers Used in Conditions ������������������������������������������������������������������������������ 21
Ladder if Statements ����������������������������������������������������������������������������������������������������� 24
Fragmented Conditions ������������������������������������������������������������������������������������������������� 25
Hungarian Names for Variables ������������������������������������������������������������������������������������ 27
Lots of Local Variables in Methods��������������������������������������������������������������������������������� 30
Methods Not Using All Parameters��������������������������������������������������������������������������������� 31
Multiple Return Statements ���������������������������������������������������������������������������������������� 32
Long Parameter Lists����������������������������������������������������������������������������������������������������� 33
goto Labels �������������������������������������������������������������������������������������������������������������������� 35
Large Class �������������������������������������������������������������������������������������������������������������������� 37
Lines of Code ����������������������������������������������������������������������������������������������������������������� 38
Control Flags������������������������������������������������������������������������������������������������������������������ 40
Code-to-Comment Ratio ������������������������������������������������������������������������������������������������ 42
Summary������������������������������������������������������������������������������������������������������������������������ 44

viii
■ Contents


■Chapter 3: Design Quality Metrics����������������������������������������������������������������������� 45
Deeply Nested Loops ����������������������������������������������������������������������������������������������������� 45
Out Parameters�������������������������������������������������������������������������������������������������������������� 47
Deeply Nested if Blocks (Bow and Arrow)���������������������������������������������������������������������� 49
Long List of Switches ���������������������������������������������������������������������������������������������������� 51
Data Classes (That Aren’t Classes) �������������������������������������������������������������������������������� 52
Local Classes����������������������������������������������������������������������������������������������������������������� 54
Refused Bequest������������������������������������������������������������������������������������������������������������ 55
Lots of Overloaded Versions of a Method����������������������������������������������������������������������� 58
Empty Interfaces ����������������������������������������������������������������������������������������������������������� 60
Too Many Parameters on Generic Types������������������������������������������������������������������������� 61
Static Members on Generic Types���������������������������������������������������������������������������������� 63
Abstract Types with Constructors ���������������������������������������������������������������������������������� 64
Sealed Class and Protected Members��������������������������������������������������������������������������� 66
Object Obsession ����������������������������������������������������������������������������������������������������������� 67
Summary������������������������������������������������������������������������������������������������������������������������ 69

■Chapter 4: Code Performance Metrics����������������������������������������������������������������� 71
Avoid Boxing ������������������������������������������������������������������������������������������������������������������ 71
Avoid Using dynamic by Default������������������������������������������������������������������������������������� 73
Avoid Excessive Local Variables������������������������������������������������������������������������������������� 74
Prefer Literals Over Evaluation��������������������������������������������������������������������������������������� 75
Avoid volatile Declarations��������������������������������������������������������������������������������������������� 77
Don’t Use an Object Array in params����������������������������������������������������������������������������� 78
Avoid Unnecessary Projections ������������������������������������������������������������������������������������� 79
Value Types Should Override Equals and GetHashCode ������������������������������������������������ 81
Avoid Using Empty Strings to Find Zero Length Strings������������������������������������������������� 83
Prefer “Jagged” Arrays over Multidimentional Arrays���������������������������������������������������� 85

ix
■ Contents

Don’t Return Array from a Property ������������������������������������������������������������������������������� 86


Don’t Use Thread.Abort or Thread.Suspend������������������������������������������������������������������� 88
Summary ����������������������������������������������������������������������������������������������������������������������� 90

■Chapter 5: Code Mining��������������������������������������������������������������������������������������� 91
Useful Patterns in Code Mining�������������������������������������������������������������������������������������� 91
Identifying Near Duplicate Code����������������������������������������������������������������������������������������������������������� 91
Plagarism Detection����������������������������������������������������������������������������������������������������������������������������� 92
Source Code Forensics������������������������������������������������������������������������������������������������������������������������� 93
Knowledge Mining�������������������������������������������������������������������������������������������������������������������������������� 93

SmartDiff: A Smart Code Comparer�������������������������������������������������������������������������������� 93


Anatomy of a Code Block����������������������������������������������������������������������������������������������� 94
Anatomy of a Property Declaration ������������������������������������������������������������������������������������������������������ 94
Anatomy of a Method��������������������������������������������������������������������������������������������������������������������������� 95
Anatomy of a Class����������������������������������������������������������������������������������������������������������������������������� 100

Detecting Plagarism����������������������������������������������������������������������������������������������������� 103


Completely Duplicate Code����������������������������������������������������������������������������������������������������������������� 103
Almost Duplicate Code����������������������������������������������������������������������������������������������������������������������� 105

Knowledge Mining ������������������������������������������������������������������������������������������������������� 108


Design Pattern Mining������������������������������������������������������������������������������������������������������������������������ 108
Mining Frequent Nested Patterns in Code������������������������������������������������������������������������������������������ 123
API Mining������������������������������������������������������������������������������������������������������������������������������������������ 127

Summary���������������������������������������������������������������������������������������������������������������������� 130

■Chapter 6: Code Forensics��������������������������������������������������������������������������������� 131
What Is Developer Style?��������������������������������������������������������������������������������������������� 131
Elements of Style��������������������������������������������������������������������������������������������������������� 132
MethodsPerClass�������������������������������������������������������������������������������������������������������������������������������� 132
ClassesPerNamespace����������������������������������������������������������������������������������������������������������������������� 133
PublicMethodsPerClass���������������������������������������������������������������������������������������������������������������������� 133
PrivateMethodsPerClass��������������������������������������������������������������������������������������������������������������������� 133

x
■ Contents

ProtectedMethodsPerClass���������������������������������������������������������������������������������������������������������������� 133
OverriddenMethodsPerClass�������������������������������������������������������������������������������������������������������������� 133
ParametersPerMethod������������������������������������������������������������������������������������������������������������������������ 133
StaticClassesPerNamespace�������������������������������������������������������������������������������������������������������������� 133
SealedClassesPerNamespace������������������������������������������������������������������������������������������������������������ 133
PercentageOfMethodsWithVerbs�������������������������������������������������������������������������������������������������������� 134
PercentageOfEnglishWordsUsed�������������������������������������������������������������������������������������������������������� 134
CodeToCommentRatio������������������������������������������������������������������������������������������������������������������������ 134
Vector Representation of Style ���������������������������������������������������������������������������������������������������������� 134

Getting the Data for Experimentation��������������������������������������������������������������������������� 134


Creating the Profile Vector������������������������������������������������������������������������������������������� 135
Finding MethodsPerClass������������������������������������������������������������������������������������������������������������������� 136
Finding ClassesPerNamespace���������������������������������������������������������������������������������������������������������� 137
Finding Methods That Are of a Given Type������������������������������������������������������������������������������������������ 137
Finding ParametersPerMethod����������������������������������������������������������������������������������������������������������� 138
Finding Sealed and Static Classes ���������������������������������������������������������������������������������������������������� 139
Finding PercentageOfMethodsWithVerbs������������������������������������������������������������������������������������������� 139
Finding PercentageOfEnglishWordTokens������������������������������������������������������������������������������������������ 140
Finding CodeToCommentRatio������������������������������������������������������������������������������������������������������������ 142
Generating CSV from the Profile �������������������������������������������������������������������������������������������������������� 142

We Have Profile Vectors—Now What?������������������������������������������������������������������������� 144


kNN (k nearest neighbor) ������������������������������������������������������������������������������������������������������������������� 144

Demo on Troelson and Freeman’s Code����������������������������������������������������������������������� 147


Calculating Accuracy of the System����������������������������������������������������������������������������� 148
Demo on GitHub Repositories��������������������������������������������������������������������������������������� 149
Non-Obvious Usages of Code Forensics����������������������������������������������������������������������� 150
Mentor-Mentee Association���������������������������������������������������������������������������������������������������������������� 150
Data-Driven Developer Rotation��������������������������������������������������������������������������������������������������������� 152

Summary���������������������������������������������������������������������������������������������������������������������� 154

xi
■ Contents


■Chapter 7: Code Visualization���������������������������������������������������������������������������� 155
Parts of a D3.js Script�������������������������������������������������������������������������������������������������� 155
Creating a Bubble Chart����������������������������������������������������������������������������������������������� 158
Finding the Aspect Ratio of Methods ������������������������������������������������������������������������������������������������� 158
Generating JSON from the List of Tuples ������������������������������������������������������������������������������������������� 159

Re-using the Same Code for Other Types of Charts ���������������������������������������������������� 163
A Different Graph to Show Dense Namespaces����������������������������������������������������������� 164
Summary ��������������������������������������������������������������������������������������������������������������������� 165

Index��������������������������������������������������������������������������������������������������������������������� 167

xii
Foreword

The world of programming used to be simple.


We had merely our own stuff to care for. We could proudly claim we knew everything there was to know
about the code we wrote and maintained. At worst, all we had to do was to go and peek. It was all in the
source code, in small enough volumes for us to massage it, understand it, master it entirely. We knew what to
look for. We knew where to look.
It was a much simpler world indeed.
Because things have changed dramatically. We routinely manage code we inherit, code we download,
code other people write. Even the code we write ourselves is growing much faster than it did before. We are
way past the stage where our knowledge is a reliable-enough oracle for the facts buried in our code. We are
also long past the stage where we can perform changes across the board, just by being super good with a text
editor, macros, shortcuts, and all. Because of volume, because of complexity, large-scale refactorings have
turned to software projects in their own right.
For a long time, metaprogramming (writing programs that operate on other programs) has been a
nerdish way for software engineers to keep busy, but it has now come to industrial relevance. One cannot
rely on human knowledge and work power to gather accurate information about software systems, and even
less transform them systematically. They have just gotten too big, too complex, and are evolving too fast for
the roll-your-sleeves-up-and-get-going attitude to be an option any longer. One must be able to automate
many tasks that analyze and/or transform non-trivial software systems.
To compound the difficulty, until recently, metaprogramming required highly specialized tools and
equally specialized languages. That should not come as a surprise: Would you really want to write COBOL
code to process a COBOL program in any non-trivial way? Or even C for C programs? This gap of abstraction
and sophistication between the languages one processes and the languages one uses to develop such
metaprograms has seriously limited the adoption of metaprogramming in the industry. It was a niche thing.
This book, together with Roslyn, are major contributions to get metaprogramming out of this niche
status. They don’t just advocate and demonstrate metaprogramming as a generic technique, but focus on
circular meta-programming, where a widely used general-purpose language is used to manipulate real-
world programs written in this same language.
It is not the first such circular effort though: The now defunct Jackpot project aimed to do exactly that
for Java, and I can only think of the market’s maturity as an explanation for Roslyn’s momentum and success
in comparison. Even before Jackpot, circular metaprogramming was not unheard of, but was limited to more
marginal languages such as Prolog, Lisp, Smalltalk, or YAFL (developed by yours truly).
Sudipta’s demonstration is only marginally about what he achieves using C#, Roslyn, and LINQ,
building on his previous book on the topic. Anyone (including myself ) could argue about the merits of the
problems he solves, his approach, and his solutions, but that would be missing the whole point. His book
is all about demonstrating how Roslyn and LINQ have made metaprogramming simple. It does not have to
be a highly specialized activity any longer. It can and should be part of every serious software developer’s
toolbox.

xiii
■ Foreword

Nowhere is this point about DIY metaprogramming more obvious than in the chapter about
visualization, where he shows how one can connect with existing (often freely available) software
components to best depict whatever it is he wants to emphasize, demonstrate, isolate—in a nutshell,
visualize. In a few dozen lines of code, he shows how the most intricate, project-specific metric or factoid can
be rendered effectively.
In this area, I am personally into arrow and graphs more than dots of varying magnitude, pie, and bar
charts. All a matter of taste. Quite logically, graphviz is my logical favorite rendition tool.
But my opinion is irrelevant. And with all due respect, so is Sudipta’s. What really matters is your
opinion, and how you can put metaprogramming to the best use possible to solve the problems you face,
address your concerns, integrate in your environment, and adapt to your ways of working and thinking. And
on your way to get there, this book is an invaluable contribution.
—Dr. Darius Blasband, CEO raincode.com

xiv
About the Author

Sudipta Mukherjee is an experienced programmer, born in Shibpur, a


town in the Howrah district of West Bengal in India. He grew up in Bally,
another small town in the Howrah district. He has been working with
Roslyn since the first CTP release and is an enthusiastic advocate for
building source code analysis systems. Sudipta is a prolific author. His
previous books include Data Structures Using C (http://goo.gl/pttSh),
.NET 4.0 Generics: Beginner’s Guide (http://goo.gl/LwVmZ5), F# for
Machine Learning Essentials (http://amzn.to/2bAUG5i), and Thinking in
LINQ (http://amzn.to/2e2YEUq). His interests include data structures,
algorithms, text processing, machine learning, natural language
processing, programming languages, and tools development. When not
working at his day job or writing books, Sudipta likes to spend time with
his family and follow his passions of sketching and painting. Sudipta lives
in Bangalore and can be contacted via email at [email protected] or
on Twitter, at @samthecoder.

xv
About the Technical Reviewer

Abhishek Gupta is an Azure and Xamarin Specialist with seven years of


corporate work experience, including three years at Microsoft Hyderabad.
His knowledge areas include algorithms and data structures, operating
systems, basics of machine learning, cloud computing, and smartphone
app development for Android, iOS, and Windows Phone. He is interested
mainly in Microsoft technologies. Abhishek loves learning new
technologies and frameworks, and most of the time finds himself getting
his hands dirty in new APIs. Whenever he has free time, he loves driving
to places full of nature, trekking, and writing blogs (which you can read at
http://cloudandmobile.in).

xvii
Acknowledgments

First, I want to thank the Microsoft Roslyn team for constantly evolving the API to make it cover more
features of C#. As this book is being written, the next version of the C# compiler is being built using Roslyn.
If you have ever tried to create analyzers for source code and been faced with the enormous challenge of
writing your own parsers, then this book is for you, and Roslyn is your savior.
Although my name appears on the book as author, this book wouldn’t have been possible without
the support from my editors at Apress. I especially want to mention Jill Balzano and Todd Green for being
patient and supportive when I missed some of the deadlines for chapter delivery. Thank you both for being
nice and kind.
I want to thank Dr. Darius Blasband, CEO of Raincode (www.raincode.com) for kindly writing the
foreword.
Last but not the least, I want to thank my wife Mou for always being there and being supportive. Since
last time, my son graduated. He’s now potty trained. So much has changed since this picture was taken. He is
taller, sharper.

What hasn’t changed, though, is his love for computers and typing. Here is what he typed, sitting on my
computer.

xix
Another Random Scribd Document
with Unrelated Content
The Project Gutenberg eBook of Airiselän
tukinajossa: Kuvaus Lapin rajoilta
This ebook is for the use of anyone anywhere in the United States
and most other parts of the world at no cost and with almost no
restrictions whatsoever. You may copy it, give it away or re-use it
under the terms of the Project Gutenberg License included with this
ebook or online at www.gutenberg.org. If you are not located in the
United States, you will have to check the laws of the country where
you are located before using this eBook.

Title: Airiselän tukinajossa: Kuvaus Lapin rajoilta

Author: Väinö Kataja

Release date: July 4, 2017 [eBook #55043]

Language: Finnish

Credits: Produced by Tapio Riikonen

*** START OF THE PROJECT GUTENBERG EBOOK AIRISELÄN


TUKINAJOSSA: KUVAUS LAPIN RAJOILTA ***
Produced by Tapio Riikonen

AIRISELÄN TUKINAJOSSA
Kuvaus Lapin rajoilta

Kirj.

VÄINÖ KATAJA
Helsingissä, Kustannusosakeyhtiö Otava, 1915.

1.

Järvi oli jo vahvassa jäässä. Pounikot ja jänkät olivat kylmettyneet


hevosen kantaviksi, niin että kiveliön asukaskin pääsi liikkumaan.
Tänä syksynä näytti pehmeillekin maille tulevan luja pohja, kun
ennen lumen tuiskuamista piti näin kovia ja pitkällisiä pakkasia. Oli jo
ollut kaksi viikkoa yhtämittaa pakkasta. Parempaa talven pohjaa ei
Ahvenjärven Antti muistanut eläissään nähneensä.

Ei ainakaan ollut talvi näin hyvä- ja lujapohjaisena alkanut niinä


kahtenakymmenenä vuotena, joina Antti oli tämän yksinäisen
Ahvenjärven rannalla asunut.

Sen hän muisti varmaan, kun raudankovaa jänkkäpolkua asteli


laukku selässä Meltoskylään päin. Varhain aamulla hän oli lähtenyt
kotoaan, ja kiire hänellä oli. Sillä edellisenä päivänä oli
Ahvenjärvessä käynyt Kettu-Iisakki, linnunpyyntiretkelle menossa. Oli
levähtänyt ja tiennyt uutisena kertoa, että Vänttinen, maankuulu
tukinajattaja, oli käynyt kylässä ja sanonut, että Airiselkään tulee
suuri tukinajo. Kelpo tukinajajia oli tiedustellut raittiita ja rivakoita
miehiä. Niin oli kertonut Kettu-Iisakki ja maininnut vielä, että
Ahvenjärven Anttia oli Vänttinen muistellut. Antti oli ollut poissa
heinän nounnissa toisella puolen järveä, niin ettei ollut saanut itse
Kettu-Iisakkia puhutella, eikä Selma, asioita ymmärtämätön
vaimoihminen, ollut älynnyt sen enempää Iisakilta Vänttisen olosta
kysellä.
Ja Vänttisen puheille kylään oli Antilla nyt kiire. Sillä niin oli Iisakki
arvellut, että Vänttinen oli hyvinkin voinut yöpyä kylään, kun yö ja
pitkä taival oli edessä. Jospa sen siellä vielä kohtaa ja pääsee
puheille! toivoi Antti hyvillä mielin. Saisi tuumata tukinajosta
valmiiksi… ja kun sen Vänttisen kirjoihin saapi hyvän nimen, niin se
saattaa monella tavalla puoltaa.

Viime talvena Antti oli osunut Vänttisen ajoon. Rehellinen,


säntillinen mies on, mietti Antti. Ylen tuliluontoinen ja paljon vaativa,
mutta hyvissä väleissä Antti hänen kanssaan oli pysynyt ja kiitokset
häneltä saanut. Ja viinamiehille se oli vihainen kuin peto. Joka vain
viinan vuoksi rokuliin joutui, niin seuraavana päivänä Vänttinen
ilmoitti, että olla hyvä ja tulla konttoriin, että saapi rätingin. Ei siinä
sen enempää…

Antti joudutti askeleitaan, noudattaen kuivilla mailla kesällistä


polkua, joka kierteli leväisiä jänkkiä. Mutta hän oikaisi nyt jänkät
suoraan halki pikemmin joutuakseen. Hänen teki kyllä mielensä
poiketa kuusikkosaajoihin, joissa hänellä oli loukkuja ja satimia,
pyydyksensä kokeakseen, mutta päätti poiketa vasta palatessa.

— Vai oli maininnut minunkin nimeni! No, se tiesi sitä, että hyvät
välit jäivät!

Kun Antti jänkän halkaistuaan nousi vaaralle, näkyi sen laelta jo


Meltosjärvi ja kylä sen rannalla. Marraskuun aurinko silloin nousi ja
paistoi kirkkaasti huurteiseen, talvijäykkään luontoon. Sinne näkyi
kotijärvikin, Ahvenjärvi, ja Antin torppa kyyrötti pienenä harmaana
pilkkuna kuin sääski erämaan laidassa. Kylläpä näyttikin pieneltä ja
avuttomalta! Ei ollut sitä sen paremmaksi jaksanut saada, ei vaikka
parhaansa oli koettanut.
Antti lähti taas astumaan ja osui polulle, joka vei kylään asti ja oli
kovaa kivikkorovaa.

Kirkkaaseen aamuilmaan nousivat kylältä aamulämmitysten savut,


vaikkei mitään muuta elon merkkiä näkynyt. Rantakeroon, joka oli
kylän paras ja rikkain talo ja jossa Iisakki oli kertonut Vänttisen
olleen, Antti meni. Pihalla hän tapasi isännän, joka oli halkoja
noutamassa.

"Taisit lähteä Vänttistä puhuttelemaan", sanoi hänelle isäntä, halot


sylissä. "Vaan on jo ehtinyt illalla lähteä… Tästä on kyyditty
Pasmajärveen… Tulehan sisälle, niin kuulet."

Isäntä läksi itse edellä nousemaan halkosylystä halaten portaita


ylös, ja Antti seurasi perässä.

"Sepä nyt oli… Vai jo ehti mennä. En tiennyt, että liikkeellä oli",
päivitteli Antti.

"Keneltä kuulit, että on täällä ollut?" kysyi isäntä mennen jo pirtin


ovella.

"Oli käynyt Kettu-Iisakki siinä meillä ja Selmalle kertonut."

"Tässähän se näkyi kaljattelevan Iisakkikin Vänttisen aikana."

Isäntä laski halkosylyksen lattialle, niin että pirtti jymähti.

Antti istahti käskemättä penkille ja alkoi päästellä laukkuaan irti.

"Jopa se nyt oli, kun en saanut puhutella", päivitteli hän,


pyyhkäisten laihoista kasvoistaan hikeä, ja kysyi sitten yhteen
menoon:
"Lieneekö siinä puheessa ollut perää, että tukinajoon oli ollut
miehiä hakemassa? Iisakki oli Selmalle sanonut…"

"Perä siinä on", alkoi isäntä puhua, yskien kuivaa yskää. "Perä
siinä on. Kuuluu tulevan valta-ajo nyt Airiselän maille, ja nyt pitäisi
miesten aloittaa, vaan lumen vähyys on esteenä. Vänttinen tulee
ylijohtajaksi, puulaaki luottaa Vänttiseen, kuulemma, ja on antanut
hänelle kaiken vallan Airiselän mailla… On se semmoinen
turhantarkka mies, Vänttinen. Ei kuulu ottavan ajoonsa yhtään
viinaanmenevää miestä, raittiita hakee… Kuuluukin olevan taas se
Pirtu-Santeri viinoineen liikkeellä… eikä sille voi virkakuntakaan
mitään… Tulee, kuulemma, niin suuri ajo, ettei ole takatalvina niin
suurta ollutkaan… Ja kuuluvat olevan Airiselän puut järjestään
jättiläispuita… että kysyy miestä jos hevostakin…"

"Kysyypä tietenkin", myönsi Antti, mutta lisäsi sitten


huolestuneena: "Olisin minä puhunut Vänttiselle… jos hyvinkin olisi
ottanut minutkin ajoon… kun jäivät meillä niin hyvät välit viime
talvena… ja jos oma poika tulisi kumppaniksi…"

Isäntä ryiskeli kuivaa yskäänsä ja sanoi: "Maltahan nyt, kun


kerron.
Terveiset pani sinulle ja käski tulla…"

Antin kasvoille ilmestyi kuin päivänpaiste.

"Sanoi jääneensä hyvin pitämään, että oli rehti ajaja ja hoiti hyvin
hevosensa… Ja moneen kertaan muistutti, että toimittaa
Ahvenjärven Antille sana, jotta tulla niin pian kuin… vaikka heti, että
työhön pääsee… Vaikka kuuluu olevan kovin paljon pyrkijöitäkin…"
Antti ei hyvillään osannut mitään virkkaa. Itsekseen hän ajatteli,
että tulipahan kerran puulaakiin semmoinen työnjohtaja, joka näkee,
kuka hevostaan hoitaa ja muuten rehellisesti menettelee.

Isäntä ryiskeli.

"Kelpo mies se on Vänttinen", sanoi Antti. "Hänen ajoonsa minä


kyllä pyrin, vaikka onkin kaukana Airiselässä asti."

"Tarkka ja visu kuuluu sentään olevan palkkaa maksamaan",


virkkoi isäntä, Vänttistä moittien?

"Lie mitä lie. Vaan rennosti minulle maksoi sen mitä puhe oli… eikä
minun enempää sopinut vaariakaan… Hyvä on mies ja
suoraluontoinen", kehui Antti.

"Vaan mistähän se ne viinattomat miehet näppää, kun monta


sataa olla pitää", moitiskeli isäntä yhä.

"Tästä saapi yhden", sanoi Antti ja nousi piippuaan sytyttämään.


"Antaisi nyt hyvä Jumala lunta pehmikkeeksi tälle lujalle pohjalle,
että pääsisi lähtemään", sanoi hän sitten ulos silmäten.

"Joo, joo, sepä se… lunta tarvitsee pehmikkeeksi", myönsi isäntä.

Antti vaipui ajatuksiinsa. Ei ollut niinkään lähteä köyhästä kodista


ja jättää lapset ja vaimo keskelle kiveliötä. Olisi tarvinnut saada
ruokaa kotiväelle varatuksi ainakin jouluun asti, jolloin jo voisi
tukinajosta lähettää… Pienet olivat oman pellon antimet, eivät
riittäisi jouluun asti, kun semmoinen joukko jäisi nakertamaan.

Antin äskeinen hyvä mieli katosi. Pitäisi koettaa saada täältä


kylältä jauhosäkki velaksi, sitten tulisivat toimeen jouluun asti…
Antille oli ennenkin velkaa uskottu. Tämä Rantakeron isäntäkin oli
monasti auttanut.

"Vai aiot ottaa poikasi tukinajoon", alkoi isäntä hetken päästä


jutella. "Kuinka tullevat kotona toimeen, kun se vaimosikin kuuluu
olevan kivulloinen ja yksi lapsi sairaana?"

"Niin olemme siinä tuumailleet, vaikka kyllähän se raskaalta


tuntuu… Mutta toisaalta taas houkuttelee se, että Yrjö jo pystyy
hakkuumieheksi ja niin jäisi koko ansio omaan kukkaroon… Nykyään
kun hakkuumiehet ovat kovin kallispalkkaisiakin", selitteli Antti. "Ja
olen minä siinä nyt syysaikana ajanut heinät kotia ja varannut puita
koko talveksi…"

"Oikeahan se on tuuma ja oikein puhuttu", myönsi isäntä. "Mutta


kuinka niille jääpi ruokatavaraa?"

"No niukalta jääpi — ovat jo siksi kasvaneet syömään lapsetkin",


vastasi Antti alakuloisesti. "Olisi tarvinnut elon puolta saada… Olisiko
ketään, joka velkaa jouluun asti uskoisi… Jouluksi tuota jo ehtinee
jonkun verran ansaita, jos terveenä pysyy."

Nyt vasta isäntä ilmoitti, että Vänttinen oli hänelle jättänyt rahaa
Antille matkaa varten annettavaksi.

"Uskovan se näkyy sinua", puheli isäntä ottaen avaimen ja alkaen


loukkokaapista ottaa Vänttisen jättämiä rahoja. "Vaan täytyisi tässä
olla todistaja, kun minä rahat annan, etten joudu välikäteen…"

"En minä kiellä kerran saatua", sanoi Antti, tullen sanomasta kovin
hyvilleen. "On se miesten mies se Vänttinen…"

Mutta isäntä tenäsi:


"Saattaahan tapahtua, että sinä kuolet, niin millä minä sitten
näytän toteen, että olen rahat sinulle antanut…"

"No, on niinkin", myönsi Antti, ja sovittiin, että talon renki ja piika,


jotka eivät olleet sukua kumpaisellekaan, käskettiin vieraiksimiehiksi.

Ja vesissä suin, silmät kiiluen isäntä luki Antille rahat kouraan, ja


tyytyväinen hymy huulillaan Antti otti setelitukun.

Toimitettuaan asiansa kylässä Antti läksi nopein askelin takaisin


järvensä rannalle. Hän oli hyvillään ja asteli keveästi, vaikka raskas
laukku painoi hartioita. Ei saattanut kyllin mielessään Vänttistä
kehua. Nyt sai leipäainetta kotiväelle ja jäi vielä matkaakin varten
yllinkyllin tarverahaa.

Mutta polkua kulkiessa muistuivat monet asiat mieleen, entiset ja


vasta tulevaiset. Koko se eletty elämä täällä Ahvenjärven rannalla,
josta kylään karttui runsas puoli penikulmaa eikä toisille
ilmansuunnille ollut asukasta kuin penikulmain päässä.

Siihen aikaan kun hän, Kuusiston Antti, siihen haki kruunulta


asumaoikeutta, ei Ahvenjärven rannalla ollut kuin kalasauna, jossa
kyläläiset kesäisin majailivat kesäkalan pyynnissä ollessaan. Sillä
vaikka Ahvenjärvi olikin yksinäinen, suurien vaarojen ympäröimä
kiveliön järvi, viihtyivät sen kirkkaassa saivovedessä erinomaisen
lihavat siiat ja kookkaat ahvenet, jotka jälkimäiset olivat tulleet
maankuuluiksi ja joiden hyvyyden vuoksi järvikin oli nimensä saanut.

Siellä oli Anttikin, siihen aikaan naimaton Kuusiston torpan poika,


kesäkalan pyynnissä kulkenut ja silloin jo ruvennut asiaa miettimään.
Kun toiset pyyntimiehet läksivät saaliineen kotikyliinsä, jäi Antti yksin
kalastusta jatkamaan ja viipyi retkellään niin kauan, kunnes järvi
jäätyi.

Kun yksin öitään vietti kalasaunassa, rupesi hän omaa kotia


ajattelemaan. Eräänä yönä hän oli nähnyt merkillisen unen, jota piti
hyvänä enteenä ja johon sitten uskoi.

Ja aamulla herätessä oli hänen päätöksensä valmis.

Hän viipyi sitten vielä viikon päivät järven rannalla, maita ja


talonpaikkoja tarkastellen. Pian mieluisan paikan löysikin
pohjoisrannalta, jossa oli järveen asti loivaa, etelään viettävää
myötälettä. Maanlaatu oli lihavaa savimultaa, kivetöntä ja helppoa
viljellä. Loitompana järvestä oli vahvaheinäinen, harvametsäinen
korpi, joka työnsi polvenkorkuista luhtaa, verestä kuin rieska, ja
ojanvarsi, jonka korkeat törmäkamarat olivat maaheinän peittämät.

Siinähän oli jo valmista niittyä aluksi! Hän muisti, että toisen,


Meltosjärven rannalla oli eräs, joka häntä odotti ja joka niinikään
toivoi omaa kotia.

Ja niin hän siellä kelmeinä syyspäivinä, kun yökylmä oli järven


jäädyttänyt, sen rantoja kierteli ja suunnitelmiaan laati. Ja niin hän
hyvässä uskossa ja kirkkain toivein palasi saaliineen kylään.

Mutta samaa vauhtia hän painui rantamaille, missä tuumansa ja


toiveensa metsäherralle esitti.

Metsäherra suostui.

Hän tunsi Antin kelpo mieheksi ja lupasi avustaa. Oli itsekin


Ahvenjärvellä leimausmatkoilla käydessään ajatellut, että siihen tulisi
elettävä talo.
Ja sanansa oli metsäherra pitänytkin. Samana talvena Antti jo
ryhtyi tuvan tekoon, ja kun järvi kesän tullen lainehti sulana, saapui
Antti sinne nuoren, vastavihityn vainionsa kanssa.

Siitä oli nyt kaksikymmentä vuotta aikaa.

Antti oli mietteissään kulkenut hyvinkin puoli matkaa, kun hän


erään saajon — Lastusaajoksi nimitetyn — päässä kääntyi metsään
linnunpyydyksiään kokemaan.

Aurinko oli peittynyt pilveen, ja pohjoisesta kävi kipakka tuuli. Taisi


tulla tuisku!

Edempänä olevia pyydyksiä hän ei joutanut kokemaan, sillä


päiväkin alkoi jo käydä lopulleen. Erään loukun alta hän veti esiin
suuren ikämetson, jonka nokka oli käyrä kuin paininpuu ja kulmat
tummanpunaiset. Suu hymyssä Antti heitti saaliin olalleen ja lähti
takaisin polulle päin.

Mutta ennenkuin hän ehti järven rantaan, alkoi tuulen muassa


tuiskuta lunta niin sakeasti, ettei järven poikki enää maan rantaa
erottanut.

Mutta suoraan kotiaan Antti osasi kulkea, iloiset sanomat, hyvät


suuhunpantavat matkassaan.

Varhain seuraavana aamuna hän nousi vuoteeltaan ja meni


hevostaan ruokkimaan. Hän sytytti kyllä tulen takkaan, mutta ei
hennonut vielä herättää vaimoaan Selmaa, joka oli kaiken yötä
valvonut nuorimman, sairastelevan lapsen kanssa.

Ulos tultuaan Antti silmäsi taivaalle. Tuisku oli tauonnut, ja maassa


oli rekikeliksi lunta. Taivas tähdessä, ja kuun kylmä puolikas oli
vaipumassa metsänrannan taakse.

Pakkanen siitä tulee, nyt sopii jo lähteä tukinajoon.

Antti käveli talliin.

Hänen hevosensa oli vankka musta, joka kesälaitumella oltuaan ja


nyt syyskauden melkein joutilaana syötyään oli hyvässä lihassa, niin
että kouru lautasella. Sopii sillä, tuossa lihassa olevalla hevosella,
lähteä tukinajoon! myhähti Antti hyvillään ja alkoi tehdä apetta
hevoselleen. Hän tahtoi osoittaa hyvää mieltään uskolliselle
työtoverilleenkin. Sillä nyt tänään hän aikoi laittautua matkalle.
Airiselkään, tukinajopaikalle, oli pitkä ja vaivalloinen matka, oli
Vänttinen kylällä kertonut. Ei ollut Anttikaan koskaan niin kaukana
Lapissa käynyt, eikä sielläpäin ollut tukinajoja vielä monena talvena
ollutkaan.

Sitä Antti mietiskeli hevostaan vaaliessaan. Mietiskeli ja laski.

Vanhin poika Yrjö, joka vasta oli täyttänyt kahdeksantoista vuotta,


oli nyt lähtevä hänelle kumppaniksi, hakkuumieheksi.

— Se on jo vankka mies ja semmoinen yrittämään, että hakee


vertojaan, — ajatteli Antti. — Ei tarvitse nyt maksaa kallista palkkaa
hakkuumiehelle, saadaan pitää kaikki ansiot itse.

Antti hymähti.

— Tuli toki terve ja vankka tuosta pojasta!

Mutta sitten hänelle muistuivat mieleen muut pirtissäolijat. Paljon


niitä oli. Kymmenen Yrjöä nuorempaa. Kuinka ne täällä pitkän talven
tulevat toimeen, kun Yrjö ei enää ole auttamassa? Yrjöä nuorempi
tytär oli vaivainen, eikä nuoremmistakaan vielä ollut ulkosalla apua.
Ja Selma sitten, joka ei sairaalta lapselta paljon mihinkään päässyt.

Hän sammutti pärevalkean, sulki oven ja käveli pirttiin.

Selma oli jo noussut ja oli kahvinkeittohommassa. Ei ollut moneen


pitkään viikkoon ollut kahvia keittää, mutta nyt oli Antti tuonut
kylästä tuliaisiksi vaimolleen pussillisen papuja ja valkoisen
sokerimöhkäleen. Vänttistä saivat kiittää nyt tästä herkusta. Oli vielä
niin varhainen, ettei ollut navettaanmenon aikakaan.

"Pakkanen taitaa olla?" kysyi Selma.

"Pakkanen on, ja kuun sirppi on terävä kuin keihään kärki", vastasi


Antti mennen loisteen luo lämmittelemään.

Ahvenjärven emäntä, Selma, oli laiha, kuihtuneen näköinen


nainen, jonka silmissä paloi sairaalloinen tuli. Antti itse oli vielä mies
parhaissa voimissaan, leveäselkäinen ja vankkarakenteinen, mutta
jonkunlainen alakuloisuus häntäkin painoi, sillä hänen katseensa oli
kuin jotakin ikävöisi tai niinkuin joku raskas murhe aina mieltä
painaisi.

He istuivat lämmittävän liesitulen ääressä ja olivat kumpikin pitkän


aikaa vaiti. Selma tuijotti palaviin puihin, ja Antin katse oli tähdätty
lattiaan. Kaikki lapset nukkuivat vielä. Nuorinkin, sairas, joka oli
vikissyt koko yön, oli nyt vihdoin aamupuoleen rauhoittunut ja
nukkunut. Mitä he miettivät, yksinäisen Ahvenjärven yksinäiset
asukkaat?

Antti muisti, kuinka suurin toivein hän silloin oli Selman tänne
tuonut, kun kesä oli kirkkaimmillaan ja järvi kalaisena. Eivät olleet ne
silloiset toiveet toteutuneet. Ei ollut ehtinyt eikä jaksanut maata
viljellä niin kuin silloin oli aikonut ja luulotellut jaksavansa. Ei ollut
ehtinyt korpia perkaamaan eikä ojanvarsia niityksi raivaamaan,
niinkuin oli luullut kerkiävänsä ja jaksavansa. Ja kaksikymmentä
vuotta oli siitä jo kulunut, yhdeskolmatta alkanut…

Pirtin sai rakennetuksi ja sen päähän kamarin ja porstuan.


Navetan, johon olisi mahtunut viisi lehmää, mutta jossa ei ollut kuin
kaksi, ja tallin, josta oli tullut kovin pieni ja matala, ja pienen
eloaitan ja lammasläävän. Oli toki vielä riihikin, kivikkorovalla vainion
laidassa, ja saunapahainen, pieni ja musta, melkein järvenrannassa
kiinni.

Siinäpä ne sitten talon rakennukset olivatkin, lukuunottamatta


muutamaa niittylatoa.

Ei ollut ehtinyt, ei jaksanut, ei kyennyt enempää.

Vaikka kyllä oli koettanut.

Mutta ruoka oli alkuvuosina muualta hankittava, oli kannettava


kesäisin polkua pitkin selässä, sillä muuta neuvoa ei ollut. Ja kun
talvi tuli, täytyi rientää ansioihin tukkityömaille. Keväät sitten kuluivat
tukinlaskuissa ja kesät lauttahommissa…

Niin ne olivat vuodet vierineet, ja lapsilauma oli lisääntynyt. Ei ollut


saanut viime kesänäkään kerätyksi heiniä kuin kahdelle lehmälle,
hevoselle ja kolmelle lampaalle.

— Vaan jos tänä talvena ansiot ovat hyvät — ja hyvät oli Vänttinen
vakuuttanut niiden olevan — niin koko ensi kevään, kesän ja
syksynkin saisi rauhassa olla maatyössä. Saisi tehdä ja kerätä heinää
enemmän, kuokkia peltoa ja raivata ojanvarsia, kun ei olisi ruoka
hakemisessa, jatkoi Antti mietteitään. — Nyt ei enää kulu ansioista
mitään vieraalle, kun oma poika on kumppanina, niin että kyllähän
tässä nyttemmin joutaa talontöitäkin tekemään.

Hän muisti samalla tätä uutta metsäherraa, joka kuului ankaralla


kädellä pitelevän kruununmaan asukkaita, niitä, jotka eivät ole
kyenneet torppaansa perintökuntoon saamaan. Kuuluu uhanneen
häätää pois semmoiset asukkaat…

Milloin osunee käymään täällä Ahvenjärvessä? Sitä hetkeä Antti oli


pelännyt ja pelkäsi. Paljon olivat huhut kertoneet tämän uuden
metsäherran ankaruudesta. Mutta sitten hän taas muisti lähtöään.

Oli toki hyvä, että tuiskusi lunta, jotta pääsi matkaan. Niinkuin
taivas olisi tiennyt hänen tulisen kiireensä.

Siellä ehkä jo olivat täydessä tukinajohommassa Airiselässä.

Silloin hän nosti silmänsä ja kohtasi vaimonsa kärsivän, surullisen


katseen…

"Tänäänkö siis jo aiotte lähteä?" kysyi Selma.

"Niin olen päättänyt. Ei sovi enää viivytellä. Matka on pitkä,


Vänttinen tietenkin vartoo… Jos ei ala kuulua, niin ottavat minun
sijalleni jonkun muun. Olen jo tässä matkaa varten minkä mitäkin
valmistellut…"

"Olihan Vänttinen luvannut vartoa", sanoi Selma.

"Oli luvannut, vaan kun nyt näin pian rekikeliksi tuiskusi lunta, niin
ei sovi vitkastella. Lähteä täytyy. Luottaa siihen saapi Vänttiseen, se
on kerrassaan taattu. Mutta huolettaa minua nyt jättää sinut tänne
turvattomaksi lasten kanssa, kun tuo nuorin vielä on kipeä…"

"Älähän nyt meistä… kyllä me, kun ovat puut, heinät kotona ja
ruokaakin on pitkäksi aikaa. Ja eikö poikine Lainakin parin viikon
päästä… Mutta se minua huolettaa, kuinka te siellä tukkimetsässä…"

"Mikä sinua huolettaa?" kysyi Antti. "Olenhan ollut joka talvi


tukinajossa. Mikäpä siinä nytkään on!"

"Kun se on niin kaukana tunturien takana se Airiselkä, saaneeko


sieltä mitään tietoja teistä tänne koko talvena… Ja muutenkin
minusta tuntuu nyt niin raskaalta…"

"Älähän nyt kiusaa itseäsi…"

Mutta melkein itkusilmin Selma kertoi:

"Oli niin kummaa. Lienenkö unta nähnyt?"

"Viime yönäkö?" kysyi Antti, aivan kuin epäilisi, ettei Selma ollut
unta nähnyt.

"En tiedä oliko yö vai aamu", jatkoi Selma. "Mutta tuntui, että olin
tulossa navetasta tänne pirttiin. Oli olevinaan pimeä ja taivas
paksussa pilvessä. Kun sitten katsahdin taivaalle… niin tähti lensi
toiselta taivaan rannalta toiselle ja tuli yhtäkkiä niinkuin kesäkirkas
päivä… Ja kun ehdin portaille, näkyi toiselta puolen järveä musta
kuorma tulossa, mutta ei yhtään ihmistä kuormalla eikä kuorman
perässä…"

"No, ne nyt ovat niitä sinun joutavia uniasi. Kesä oli olevinaan ja
reessä kuorma!" koetti Antti lyödä leikiksi.
Mutta Selman silmissä oli vakava ilme ja hän virkkoi:

"Ei se unta ollutkaan! Minä näin aivan selvään!"

"Ethän sinä tänä aamuna ole vielä ulkona käynytkään!" koetti Antti
yhä leikiksi lyödä.

Selma jäi sanattomaksi ja tuijotti palaviin halkoihin.

Hetken päästä Antti alkoi kuin lohduttaen puhua:

"Kyllä minä jo jouluksi lähetän elämisen apua, ja jouluun asti teillä


nyt on kaikkea kylliksi. Rantakeron isäntä lupasi näinä päivinä
toimittaa jauhosäkin…"

"Kyllähän sinä meistä huolen pidät", sanoi Selma raskaasti


huoahtaen.

Hän nousi sitten istumasta, otti päreitä orrelta ja lähti navettaan.

Antti jäi yksin lieden ääreen. Eivät olleet hänenkään ajatuksensa


nyt hauskat. Jos olisi sittenkin jättää Yrjö kotia. Jos se sitä Selma
tuolla raskasmielisyydellään tarkoittaa, vaikka ei sano. Mutta pojalla
on kova halu, ja Selma on itse niin esitellyt…

Kaikki lapset nukkuivat vielä, Yrjökin nukkui.

— Nukkukoon, ajatteli Antti. — Ei lepo nuoressa hukkaan mene.

Hän alkoi loisteen lämpimässä voidella sekä omia että Yrjön


kenkiä. Haki sitten siepakat ja lapikkaat ullakolta ja kokoili suureen
puuarkkuun kaikenlaisia tukkimetsässä tarvittavia pikkutarpeita:
äimiä, naskaleita, paikkanahkaa, neuloja, hamppua ja käärön vanhaa
liinaa, haavakääreeksi. Arkku oli jo puolillaan, mutta vielä oli siihen
pantava monenlaista, saippuahitusesta tulitikkuihin asti.

Mutta arkkua täyttäessä kulkivat hänen ajatuksensa muualla, ja


hän oli tavallista hajamielisempi.

— Näkee se Selma sitten, kun me Yrjön kanssa palaamme… niin


on kuormallinen ruokaa ja lompakko täynnä rahaa! lohdutteli hän
apeata mieltään, sillä nyt hän vasta selvään tunsi, että ikävä oli
jättää Selma kotia kymmenen avuttoman lapsen kanssa. Yrjöstä oli
ennen ollut turva, nyt ei.

Mutta muutakaan keinoa ei ollut. Se vähäinen ohrasato, mikä


omista pelloista oli saatu, oli jo melkein kaikki syksyllä syöty, eikä
entisiä säästöjä ollut minkään vertaa, siemeniksi olivat jo keväällä
viimeiset menneet, ja koko kesä oli syöty ostoeloa, Liipaun säkkiä.

Hätä tulisi, ellei nyt ansaitsemaan lähtisi. Ja sen tiesi Selmakin.

Kun hän mietteissään oli arkkuun kerännyt kaikkea, mitä sattui


muistamaan, seisahtui hän keskelle lattiaa ja alkoi muistella, oliko
mitään unohtunut…

Silloin Yrjökin heräsi ja nähtyään isänsä valmistukset nousi


nopeasti vuoteeltaan.

Isän ja pojan välit olivat aina olleet erittäin hyvät. Antti rakasti
koko perhettään hellästi, ja monta murheen hetkeä hän oli viettänyt
sen vuoksi, ettei kyennyt lapsiraukoilleen lämpöisiä vaatteitakaan
laittamaan. Puolialastomina olivatkin nuorimmat, vähän riekaleita
ympärillään, ja nukkuivat rivissä lattialla, lähellä uunia.
Yrjö oli kuitenkin jo parina kesänä ollut tukkijoella ja viime kesän
kylässä kesämiehenä, niin että oli ansainnut hyvät vaatteet ylleen.
Olipa siskoillekin ostanut paitakankaat.

"Olisit nyt vielä nukkunut", alkoi isä pojalleen puhella lempein


äänin. "Tästä kun lähdemme, niin ei taida oikeaa lepoa tulla matkan
varrella, eipä ennen kuin perillä, Airiselässä vasta, kun saamme
oman kotarustingin…"

"Jopa tuo nyt riittää", arveli Yrjö ja alkoi pukeutua siinä mielessä,
että matkaan tulee lähtö.

Tukkireet olivat jo korjatut aikoja sitten ja kesäkuumilla tervatut,


niin että välkkyivät kiiltävässä voiteessaan.

Yhdessä he rupesivat tukkirekien päälle asettamaan häkkiä, johon


hevosen ja miesten eväitä oli pantava. Heiniä poljettiin häkki täyteen
ja monta säkkiä täytettiin silpuilla.

Siinä hommassa kului aamu, ja päivä alkoi koittaa.

Kun kuorma jo oli valmiiksi pantuna, kysyi Antti ikäänkuin


sivumennen
Yrjöltä:

"Puhuiko se äiti sinulle mitään, kun minä kylällä olin?"

"Puhui se. Sanoi, ettei hänen ole koskaan ennen ollut niin ikävä
jäädä kotia kuin nyt…"

Antti seisahtui, mutta ei virkkanut mitään. Hän katsoi järven yli


etelän taivaanrannalle, joka pakkasen-punertavana heloitti.
"Taitaa senvuoksi tuntua äidistä ikävältä, kun sinäkin nyt lähdet",
arveli hän hetken päästä pojalleen. Mutta samalla hänen mieleensä
jysähti joku outo, painava tunne, josta ei ymmärtänyt, mikä oli.

Yrjö oli juuri köyttämässä silppusäkkejä heinähäkin päälle. Hän oli


kookas ikäisekseen, isänsä pituinen, ja kasvot olivat vielä lapselliset
ja silmät samanlaiset kuin äidillä, suuret ja tummansiniset.

"Taitaapa se nyt jo olla lähtövalmiina kuorma", virkkoi isä, kun Yrjö


sai silppusäkit köytetyksi kiinni.

"Eiköhän ole", arveli Yrjö, ja isä ja poika kävelivät pirttiin, jossa


lapsetkin nyt alkoivat heräillä.

2.

Aamiaiseksi Selma oli valmistanut Antin eilen saaman metson,


jotta miehet lähtöateriakseen saisivat voimakkaan keiton.

Syödessä oli jo päivä valjennut, ja lumisiin, kuolonhiljaisiin metsiin


paistoi marraskuun aurinko alakuloisen kylmästi. Monta sanaa ei
syödessä vaihdettu.

Antti silmäsi silloin tällöin järvelle, joka nyt paistoi tasaisena,


valkoisena kenttänä. Emännän silmistä näkyi, että hän oli itkenyt
yksin navetassa ollessaan.

"Jos joku puute sattuisi tulemaan, niin Rantakeron isäntä lupasi


auttaa ja aikoi joskus muutenkin hiihdellä tänne teitä katsomaan,
että jos mikä hätä olisi", sanoi Antti vihdoin aterian loppupuolella.
"Hyvä ja auttavainen mieshän se on aina ollut Rantakeron isäntä",
myönsi Selma hiljaisella äänellä. Taas aterioivat pitkän aikaa ääneti.

"Kulkevat sieltä kirjeet, ja kirjoittakoon Yrjö heti, kun perille


Airiselkään pääsemme, jotta kuulet sanomia meistä… Kylältä kyllä
tänne kirjeet saat, on siellä aina joku, joka tuopi, ja sattuu joskus
kauttakulkuakin", puheli Antti.

"Kaipa ne kirjeet kylältä tänne kulkevat, ja pääsen minä itsekin


käymään, jos tuo nuorin alkaisi parata", vastasi Selma, ja hänen
surullisilla kasvoillaan näkyi nyt iloisempi ilme.

"Jouluksi jo lähetämme rahaa", lisäsi Antti, hyvillään vaimoonsa


silmäten.

Antti nousi syömästä, mutta osui samalla silmäämään järvelle,


sinnepäin, mistä talvitien reikä aukeana linjana lähti kylään päin.
Sieltä ajoi hevonen suoraan jäälle ja näytti kääntyvän taloon päin.

Selma ja lapsetkin riensivät ikkunaan.

Ne olivat oudon näköisiä kulkijoita. Reen perässä istui kaksi


susiturkkiin puettua miestä, ja kuskipenkillä istui kolmas.

"Herroja ovat", sanoi Selma.

Antti säpsähti. Jokohan olisi metsäherra? Hevonen lähestyi vinhaa


vauhtia jäätä pitkin, ja kun oli ehtinyt puolijärveen, tunsi Antti
hevosen Rantakeron ruskoksi ja ajajan Rantakeron isännäksi. Silloin
hän arvasi, että susiturkkiset miehet olivat herroja, joita Rantakeron
isäntä oli lähtenyt Ahvenjärvelle kyytiin.

Metsäherra siinä oli, kukaan muu se ei voinut olla!


Selma alkoi korjailla aterian jätteitä pöydältä ja komenteli lapsia
loukkoon.

Antti itse seisoi miettiväisenä keskellä lattiaa eikä osannut sanoa


mitään. Yrjö kuitenkin tointui ja lähti ulos kuormaa viimeistelemään.

Poikki järven tuli hevonen juosten, mutta talon rantaan,


venevalkamaan päästyään se hiljensi vauhtiaan, ja ajaja hyppäsi
reestä kävelemään. Järveltä taloon olikin ylämäkeä, ja rantapolulla
vastailivat vielä maakivet rekirautoihin.

"Metsäherrapahan näkyy olevan", sanoi Antti, kun tulijat nousivat


järveltä pihaan.

Metsäherra ja vallesmanni olivat yksin matkoin laitapitäjällä


liikkeellä. Kesän aikana oli tänne kovin vaivalloinen kulku, kun teitä ei
ollut ja polutkin useiden kylien välillä vajottivat polvia myöten. Mutta
nyt tänä syksynä, kun maa ja jänkät olivat syvältä kylmettyneet,
uskalsivat herratkin lähteä laitapitäjälle.

Illalla he olivat saapuneet Meltoskylään Rantakeroon ja pyytäneet


isäntää Ahvenjärveen kyytiin, kun olivat kuulleet, että sinne jo näin
vähän lumen aikana pääsi reellä melko tasaisia maita kulkevaa
talvitietä.

Molemmat herrat olivat nuoria miehiä, jotka kumpikin olivat vasta


muutaman vuoden olleet pitäjässä. Antti oli heidät sentään
kumpaisenkin nähnyt ja tunsi heidät, mutta Selma ei ollut nähnyt
kumpaakaan.

Metsäherra oli ylpeän ja kiukkuisen näköinen, vallesmanni oli


sävyisämpi ja puettukin paljon vaatimattomammin. Ei ollut
vallesmannilla kovaa kaulusta, ja pitkävartiset pieksut oli hänellä
jalassa. Mutta metsäherra oli pysty kuin seiväs korkeine
kauluksineen ja tuoksui vahvasti hajuvedeltä.

"Mutta merkillisen vähän te olette saanut valmista", sanoi hän


Antille tyytymättömällä äänellä, kun oli tiedustellut torpan eduista,
"ja nyt olette asunut jo kaksikymmentä vuotta kruunun maalla."

Hän kaivoi sitten torppaa koskevat paperit taskustaan.

"Laiskoja te olette… oikea mies olisi jo tehnyt suuren talon tästä…"

"Ei ole ollut varoja eikä aikaa", sanoi Antti.

"Mutta onhan teillä aikaa olla puulaakin töissä kaiket talvet,


vieläpä kesätkin!" tikasi metsäherra.

"Pakko on olla, ja hyvä on, että puulaakeilla on ollut työtä… hätä


tässä muuten olisikin ollut…"

"Jaa, jaa… minä olen kuullut… se on se vanha virsi…"

"Nälkä se on semmoinen virsi, joka komentaa", vastasi Antti


alakuloisesti. "Milläs elät, jollet muualta leipää ansaitse."

Metsäherra näytti tyytymättömältä.

"Kruunu häätää pois maaltaan sellaiset, jotka eivät tee maan


päälle työtä", sanoi hän.

Antti ei vastannut mitään.

"Taidatte olla tukinajoon lähdössä nytkin?" sanoi metsäherra


hetken päästä.
"Niin on aikomus. Millä minä muuten joukkoni jaksaisin elättää.
Vähäiset ne ovat ne hyvät, mitä tämmöisestä torpasta syötäväksi
saapi…"

Metsäherra silmäsi lapsilaumaa.

"Herra Jumala… Näin paljonko teillä on lapsia!… Sehän on


sikamaista!"

"Niin monta niitä on", sanoi Antti, ja hänen äänensä vähän vapisi.
"Kuinkahan monta niistä pitäisi olla poissa, että olisi kruunun ja
teidän mielestänne parhaiksi?" lisäsi hän sitten katkerasti.

Metsäherra vilkaisi Anttiin vihaisesti.

"Låt barnen vara", sanoi vallesmanni nuhtelevasti.

Mutta metsäherra käveli turkki yllään edestakaisin lattialla.

"Siihen ne ovat… laittamaan lapsia… muuhun ei", sanoi hän.

Vallesmanni puhui hänelle jotakin, jota muut eivät ymmärtäneet.


Mutta
Antin kasvoille nousi tumma puna, ja ohimosuonet pullistuivat.

Vallesmannin puheista metsäherra näytti tyyntyvän. Ehkäpä alkoi


ymmärtää, ettei täällä kiveliön keskellä tainnut olla helppo elää, kun
maasta lähti niukasti syötävää. Mutta hän ei malttanut vieläkään olla
lapsista herjaamatta, vaan virkkoi nyt puoleksi pilkallisesti:

"Joko niitä nyt on kylliksi, vai vieläkö tulee lisää?"

Antti oli luonnostaan tyyni mies, mutta nyt oli sattunut solvaus niin
arkaan paikkaan, ettei hän enää voinut hillitä itseään.
"Tuli lisää tahi ei", sanoi hän nousten seisomaan, "se ei kuulu
teihin! Minulla ovat lapset tässä näkösällä kaikki… lienevätkö niin
forstmestarillakin… Ja minä tunnustan ja tiedän ne omikseni…"

Jo punastui metsäherra korviin asti. Olivatko ne kamalat huhut


hänestä ehtineet tännekin asti!

"Mitä tarkoitat, lurjus?" kivahti hän.

Mutta taas alkoi vallesmanni puhua ruotsiksi, ja vihdoin


metsäherra asettui.

Vallesmanni sai nyt puheenvuoron ja alkoi asioitaan Antille selittää.


Olisi ollut tarkoitus pitää lain määräämä katselmus nyt tässäkin
Ahvenjärven kruununtorpassa, mutta vallesmanni aikoi sen lykätä
ensi kesään, kun lumikin jo oli maassa eikä sitten viime
katselmuksen ollut paljoa tehty.

"En ole kyllä rakennuksia kyennyt tekemään, mutta niittyä on


raivattu tänäkin syksynä neljän häkin ala ja uutta peltoa olemme
tehneet vankankin puolen tynnyrin alan… Ensi kesänä sekin jo
auttaa… Ja jos nyt tänä talvena, niinkuin on toivoa, sattuu
tukinajossa ansaitsemaan vähän enemmän, niin ensi kesänä saapi
sitten rauhassa tehdä maatöitä…"

"Niinpä vainkin", myönsi vallesmanni.

Mutta metsäherralle tuli yhtäkkiä kiire pois, niin että hän istui
reessä, ennenkuin vallesmanni ehti uloskaan.

"Mahtoikohan hyvinkin suuttua?" kysäisi Antti vallesmannilta.


"Minäkin satuin suuttumaan, kun lapsista…"
"No no, ei se niin vaarallista ole", naurahti vallesmanni. "Se on
semmoinen pikainen mies, vaan kyllä se siitä ajan oloon talttuu…"

"Jokohan tuo kantelee kruunulle?"

"Eikö mitä. Onhan niitä tämmöisiä torppia muitakin…"

Vallesmanni hyvästeli kädestä ottaen ja toivotti onnea tukinajoon.

Antti seurasi perässä portaille.

Jo oli metsäherran pahin kiukkukin mennyt ohi, sillä hän vastasi,


kun
Antti hyvästeli, ja näytti naurahtavan.

Antti katsoi heidän jälkeensä, kun ajoivat jäälle.

— Olisikohan se maistellut — lieneekö viinamiehiä — kun oli noin


oikullisena? arveli Antti metsäherrasta.

Kun Antti palasi pirttiin, puhalsivat lapset loukostaan ikkunaan


menijöitä katsomaan. Semmoinen herraskuorma oli todellakin
näkemisen arvoinen täällä erämaassa.

"Jokohan nyt suuttui?" kysyi Selma huolekkaana.

"Suuttukoon jos tahtoo. Vallesmannilla on tämän talon asioihin


enempi sanomista kuin metsäherroilla… sen sanoi aikoinaan vanha
vallesmanni, joka tämän kruunulta minulle haki", sanoi Antti.

Mutta herrojen äkkiarvaamaton käynti erämaassa, jossa ei ollut


totuttu vieraita näkemään pitkiin vuosiin, vaikutti kuitenkin sen,
etteivät Antti ja Yrjö ottaneet tointuakseen matkalle, vaikka kaikki oli
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

textbookfull.com

You might also like