I call this page The Text.
It is a series of short posts on a range of subjects.
Subjects cover coding and technical matters, food and lifestyle, family and activities, drafts of ideas for further exploration, and more.
I include a sprinkle of personal reflections and commentary.
Peruse the ToC to skip around.
Use the RSS feed to monitor new posts.
As of November 2024, this page contains 60,059 words.
reduced electrical usage by 712 kWh, which is a 72.06% reduction,
reduced water usage by 2800 gallons, which is a 57.14% reduction, and
reduced gas usage by 4.6 Mcf, which is a 45.1% reduction.
The Terror of Men
My girlfriend ordered a new fridge. After measuring the door frame, she chose a fridge that would fit through her doors.
Two men delivered it today and challenged her about the fit. They threw tantrums, throwing boxes in the street, yelled at her, and cussed a lot.
The fridge fit through the door frame perfectly.
She called the big box store and put in a complaint. I encouraged her to file a police report.
On the PageRank Algorithm
The implicit early bias in the PageRank algorithm is that it modeled itself on citation analysis and bibliometrics, and specifically on two concepts in citation analysis: bibliographic-coupling and co-citation. Bibliographic coupling occurs when two or more works reference a common work. For example, Paper A and Paper B both cite Paper C. Co-citation occurs in the other direction. It happens when two or more documents are cited together by other documents. For example, Paper C cites Paper A and Paper B. These concepts assume a theory of similarity. If Paper A and Paper B both cite Paper C (bibliographic coupling), then Papers A, B, and C share similarities or a similarity. Likewise, if Paper A and Paper B are cited by Paper C (co-citation). While vastly useful, the concepts are not granular enough to show how these papers are specifically similar. Their similarities could be based on shared theories, shared methods, shared findings, or even something more specific. Here is where other information retrieval methods, such as text analysis and tf-idf, bolster relevance in search.
In one of Page and Brin's early papers on PageRank, the authors refer to the library and information scientist Eugene Garfield, the founder of what is now the Web of Science, and then other works on citation analysis and by librarians. Garfield and many others had developed a citation analysis literature based on the assumption that citing behaviors, like described above, can represent similarity. This is helpful because similarity is an important part of relevance ranking. And then Garfield built what is now the Web of Science (WOS) based on that literature and used WOS to test this and related theories. Page and Brin, I suppose being academics first, were influenced by this literature and the Web of Science database, which they surely used in school.
In their paper, Page and Brin highlight the concepts of backlinks (inedges) and forward links (outegdges). Although not perfectly aligned, these concepts correspond to bibliographic-coupling and co-citation. Backlinks occur when a web page is linked to by others, and forward links are the links in a web page to other web pages. Backlinks most resemble co-citation. For example, if web page A and web page B both link to web page C, then they co-cite web page C. Thus, backlinks represent a type of relevance of influence---the more backlinks, the more influential.
These concepts work well for academic literature, because in comparison to the wild web, we can lightly assume a homogeneity in quality, given the peer review process. However, this assumption has faults because there are all sorts of biases in peer review, and these biases are only exacerbated on the web, which doesn't have any gatekeeping.
Although Page and Brin are concerned about the quality of web content, which they discuss in their paper, they argue that "backlinks...provide a kind of peer review." This is like saying that co-citations provide quality control. And this assumption gets promoted when accounting for frequency; i.e., it assumes that more backlinks correlate to more quality control. Even if that works for academic literature, it's a big leap to make the assumption that it works for web content. PageRank cannot measure or account for quality.
The problem with the PageRank algorithm is that it assumes people who publish on the web are, on average, information literate: that they know when information is needed, how to access and evaluate that information through critical thinking and analysis, and how to incorporate that information into new information. It's the information science version of economic's homo economicus but instead a kind of homo informatio. This is an okay if strong assumption to make when it comes to academic literature (researchers cite for a whole host of reasons and these reasons are often biased, too), but it turned out to be a dangerous assumption for ranking web content, where linking is much lazier, at best, and nefarious, at worst. For example, the PageRank algorithm assumes that people link based solely on content and not based on generating sales or ad revenue. In the end, there is much more self-interest involved in linking than in citing, although self-interest has long been a problem in citing behavior, too.
The problem with both citing and linking, as measured above, is not that they assume similarity, it's that they also assume influence (co-citing/backlinking plus frequency) is a proxy for quality. It's a big leap because neither is even a perfect measure of influence, either.
Pancake Resilience
I make pancakes often. I whisk 1.5c flour, 2t baking powder, 1t baking soda, and a pinch of salt, or 1/4t. Then I stir in 1.5c milk, 2 eggs, and 2T of oil. These ingredients form the batter.
Sometimes I don't have all of the ingredients. When a thing like that happens, I adjust. I've subbed water for milk, extra oil for a missing egg, melted butter for oil, or whatever.
Each time, the batter turns out alright. The pancakes are good. They're pancakes regardless of the adjustment. How far can I take this before they're not? Pancakes are so resilient. And why do I think about this so much!
There's a serious problem with what people know in this country, and our lack of education and ability to learn hurts us badly.
Harder to Accommodate than to Assimilate
Let me borrow from Jean Piaget's theory of cognitive development and apply it at the macro level. It's probably not valid but so be it. I'm thinking about collective cognitive development or collective learning, folks!
Here's what I'm brainstorming...this is a very rough sketch and maybe a bit harebrained.
What if we apply Piaget's theory to society rather than to the individual? Let's define society as a people that share some substantial mental frameworks or models or schemas of the world and how the world works. More pointedly, let's think of society as a person. Per Piaget, when new information is presented to a person, the person either integrates the new information into an existing schema, or the person modifies an existing schema or creates a new schema to accommodate the new information.
Let's take it as a given that the world is changing quite rapidly and that this entails confrontation with constant new information. Well then, society-as-person has two options: assimilate or accommodate. By far, the more difficult of the two is accommodation. Accommodation is an uncomfortable process because it challenges our worldviews. To accommodate new information, our worldviews or our schemas of the world must change. Or we create new schemas. Assimilating new information is simpler and easier because it requires inserting new information into existing, immutable schemas.
Piaget's theory originally aimed at children, who are much more flexible and open to new information. But adults are not often so adaptable. And so adults struggle to accommodate. They get stuck in a mode of assimilation and try to fit the complexities of a changing world into an unchanging, rigid schema. It's safer for them this way. It's safer to maintain their existing narratives or schemas and contort new information, deny it, or adopt conspiratorial thinking so that their schemas remain stable.
Assimilating new information is not bad, per se. Per Piaget, equilibrium between assimilation and accommodation is needed, otherwise we would neither learn new concepts (constant assimilation) nor would we maintain a stable worldview (constant accommodation).
Under this view, we might ask: what if human development, at the societal level, is at some disequilibrium between assimilation and accommodation? What if in fact there is a battle between these two processes? What if the make-you-know-what-great-again represents an assimilating move? There are all sorts of fears that would motivate half of the country to make that move.
I don't know. This might be harebrained, but it's helping me to think about last week in a more empathetic and non-cynical light. So perhaps I'll continue to think through it for a bit and make the thesis more substantial and sophisticated.
In Praise of the Wealthy
America has achieved new heights in praise of the ultra-wealthy.
The cultural narrative has fully shifted. Wealth signals wisdom and virtue. Deeds and words are not signals of wisdom and virtue. Only wealth is. The wealthy are prophets. Their amassed wealth is evidence of their prophetic visions and their moral triumphs. This is the only evidence needed. Wealth is a yardstick for wisdom and character.
The wealthy have superior epistemological claims. They know what we do not know. They make better decisions than the non-wealthy. Their expertise is unlimited.
The wealthy possess greater credibility than the non-wealthy. They contribute more than the non-wealthy. They work harder than the non-wealthy.
I love beets. If I was given a choice for a final meal, I'd eat
boiled or roasted beets, with buttery rice doused in Worcestershire, and
sauteed beet greens.
My children like beets, too, and every week I make beet burgers. The
burgers are made with ground boiled beets, ground oatmeal, and cooked
and then ground, dried black beans. They're pretty delicious. My oldest
generally eats three of these burgers. My youngest resisted them for the
longest time, but then discovered that they liked them with potato chips
layered on the burger. I suppose they needed a bit of texture!
Recently I learned about beet kvass, which is a fermented drink made
from fermenting beets in salt water. I ferment other things, and thought
we'd give this a try. I brought a few bunches of beets home, cubed them
up, added them to several mason jars, and then covered them with salt
water. They've been fermenting for about seven days now. We tasted it a
couple of days ago, but unfortunately it tasted like salted beet water.
Hopefully it works out because by all accounts, beet kvass is
awesome.
Overloaded
The more I talk with people about their use of LLMs, the more I think
it's used because people are overloaded with a lot of small work. They
use it so that they have more time with more meaningful work but will
also use it for meaningful work when they still feel strapped for time.
Or when there are other pressures on them.
Some folks decry the use of LLMs as well as the environmental damage.
But I think the real problems are because we're overloaded and under
various pressures to keep producing even though small work keeps rising.
This all makes me think that LLMs are mostly a band aid on more systemic
issues. We're a band aid culture.
In the end, even though I don't subscribe to it, I get the appeal of
libertarianism. There's just so much bureaucracy. I get why that there's
so much bureaucracy, too. It's because there's been too much abuse. We
did this too ourselves, but the end result is that we live in a world
where trust isn't or can't be the default.
On Inefficiency
I'm simplifying and decontextualizing, but there's a lesson here:
In The Birth of the Republic, the historian Edmund Morgan
showed that inefficiency in governance corresponded with more
freedom and more prosperity.
I just can't help but think about that with respect to academia. Or,
I can't help but think about the inverse or the implication of the
inverse:
A more efficient (and ergo more hierarchical?) governing model
corresponds with less (academic?) freedom and less (teaching?,
research?, learning?) prosperity.
lrs8
Last week we hosted the eighth Library Research Seminar, and it
seemed to be a smashing success. I don't remember the last time I
enjoyed so many presentations at a single conference. It was a joy, too,
to see old comrades and meet many new people.
My dissertation adviser and friend stayed at my place. I spent the
last morning of the conference catching up on work, and my friend spent
that time playing games with my kids. I'll cherish that memory.
Dead Hangs
I've been working on my dead hangs for a couple of years. My children
and I have a kind of competition with it. Even though they generally
crush me, I can hang for a long time now. It feels good, and dead hangs
feel good. I try to do them all the time -- like whenever I walk past a
tree branch low enough for me to grab, I'll dead hang. I don't have any
pull up bars in the home, but there are a couple of spots to hang from
in my home, and I use them daily.
Despite all this progress, I have had the hardest time dead hanging
by one arm. I realized I hadn't tried it at all when my middle child
started hanging by one arm. They could just do it for forever, and it
looked super fun and natural. When I first tried it, though, I couldn't
last a second.
So I started working on it. Then yesterday, I was by a tree talking
with a friend, and I gave it another shot. And it worked! I hung by one
arm for a good twenty seconds or so. Then I switched arms and hung by
that one also for a good twenty seconds. It was super exciting, and a
day later, I'm still joyful about it.
Self Deprecation
Self deprecation is a great way to stay humble, and it's also a way
to stay accessible to people. I realized last year, though, that toxic
people don't understand self-deprecation, including self-deprecating
humor. Toxic people instead interpret self-deprecation literally. When
people make self-deprecations, either out of humility or humor, they
interpret it as confessions of ineptitude. Consequently, they think the
person is weak.
This has an unfortunate effect on many things, from faculty meetings
to politics. It suppresses expressions of humility by the humble. And we
need humility more than ever.
Humility is neither a weakness nor does it signal ineptitude. It's a
virtue.
16,000 Steps
It was a beautiful day to be outdoors. So my girlfriend and I went on
a hike at the Raven Run Nature Sanctuary.
Our hike was just over five miles. I took my shoes off and probably
hiked at least a mile and a half with my bare feet. Maybe even two
miles. Walking barefoot and using the foot muscles felt wonderful. It
also changed my gait. I took shorter steps and used more of my body to
walk and to feel the ground. When I got home, I took a deep 45 minute
nap.
I've been barefooting more often recently. Last year I started to
take my shoes off to walk to and from work. I haven't done that
everyday, but I think I'll do it more often now. It's especially nice
when it's raining.
I've long loved barefoot walking. In the summer of 1991, just before
I left for college, I only wore shoes twice that summer. I worked as a
lifeguard then, so it was feasible, but I kept my shoes off even when I
wasn't working.
Today was a good walking day. Overall, I walked over seven miles,
which as I estimated,
equated to about 16,000 steps, or just over. I'm not sure I could get
that many steps in everyday, but hopefully I can make it happen more
often than not.
Chilling Out
Last month I used the lowest amount of power since I started trying
to reduce usage. Specifically, I used 57% less electricity than I did
the same month of last year. That's 505 kWh of power compared to last
year's 1175 for the month of August (Sep bill date). That's a personal
record for this household.
I think I might break my record this month, too. The other day I
adjusted the fridge's temperature to the highest cooling setting. I'll
be curious how much of an impact it makes. Plus, we've had some really
mild temperature recently, and I've been keeping the windows open even
more than normal. It looks like the next three days will be hot again,
but I imagine that September will be noticeably cooler overall compared
to August. So that'll help.
I have one more idea to reduce usage. I usually leave my laptop on
and plugged in when I got to bed. I think I'll start to shut it down and
unplug it, just so it doesn't draw any power overnight.
Month
2023 Usage (KWH)
2024 Usage (KWH)
Change in Usage (KWH)
2023 Avg Temp (F)
2024 Avg Temp (F)
Change in Temp (F)
May
831
612
-219 (-26.35%)
58
60
+2 (3.45%)
Jun
799
513
-286 (-35.79%)
66
70
+4 (6.10%)
Jul
942
570
-372 (-39.39%)
72
76
+4 (5.60%)
Aug
1499
551
-948 (-63.24%)
78
79
+1 (1.30%)
Sep
1175
505
-670 (-57.02%)
77
77
0
Being Pedantic
I read scientific literature for facts, but I read novels
for truth. Right now I'm reading Donna Tartt's novel The
Secret History. It's engrossing.
The main characters are college students at a small liberal arts
college in the northeast. There's this one line that struck me
deeply:
the young scholar is much more a pedant than his older counterpart"
(p. 84).
Pedant can have a pejorative meaning, but it can also just
refer to someone who is overly focused on rules and minor details in
academic learning. I think that's often just part of the journey of an
academic or a scholar. It certainly was part of mine. I think it's an
important part of the journey, too, but I'm glad I'm past it.
nothing more than doing one's damnedest [...], no holds barred (p.
24).
I've been reflecting on that line for well over a decade now. To me
it means that there are multiple methods to get the facts and
that being pedantic doesn't necessarily entail being rigorous.
It's complicated
As faculty, we have to report whether a student attended, engaged, or
participated in a course between certain dates near the start of each
semester.
We were recently informed of a new reporting requirement. Now, we
also have to report whether a student attended, engaged, or participated
in a course if they withdrew from the course before a specified
date.
I thought it was kind of funny that I had to read the new requirement
a couple of times to make sense of it. I didn't want to spend any more
time on this, though, so for the lolz, I asked ChatGPT to
represent the logic of these reporting requirements in Python code.
For your reading pleasure:
#!/usr/bin/env python3
from datetime import datetime
# Define the reporting period
reporting_start_date = datetime(2024, 9, 10)
reporting_end_date = datetime(2024, 9, 16)
drop_deadline = datetime(2024, 9, 15)
# Simulated student data
students = [
{"name": "Alice", "drop_date": datetime(2024, 9, 12), "attendance_dates": [datetime(2024, 9, 11)]},
{"name": "Bob", "drop_date": datetime(2024, 9, 14), "attendance_dates": [datetime(2024, 9, 13), datetime(2024, 9, 14)]},
{"name": "Charlie", "drop_date": datetime(2024, 9, 10), "attendance_dates": []},
{"name": "Diana", "drop_date": None, "attendance_dates": [datetime(2024, 9, 12), datetime(2024, 9, 15)]}
]
def check_attendance(student):
"""Check if a student attended on or before their drop date."""
if student["drop_date"] is None:
return None # Student didn't drop
for date in student["attendance_dates"]:
if date <= student["drop_date"]:
return "YES"
return "NO"
def report_attendance(students, reporting_start_date, reporting_end_date, drop_deadline):
"""Report attendance for all students."""
for student in students:
drop_date = student["drop_date"]
if drop_date is not None and drop_date <= drop_deadline:
attendance_status = check_attendance(student)
print(f"Student: {student['name']}, Drop Date: {drop_date.strftime('%Y-%m-%d')}, Attended: {attendance_status}")
else:
print(f"Student: {student['name']}, Drop Date: Not Dropped or after deadline, Attended: --")
# Run the reporting logic
report_attendance(students, reporting_start_date, reporting_end_date, drop_deadline)
Tasteless in Comparison
I don't each much meat. But sometimes when I go out to eat I crave
something like a burger or some chicken. It feels less habitual and more
like a compulsion when I do this.
I'm always disappointed though. It never fails that I am completely
underwhelmed by the dish and wished that I had gotten some vegetarian
meal instead. The vegetarian options are usually as good (which means
they're "meh") or better than the meat option.
I suppose I'm posting this here to help me be more intentional about
what I eat and about eating more vegetarian dishes.
Markdown Vs. Asciidoc
I like Markdown a lot because of its simplicity. But that simplicity
means a loss of some functionality. For example, Markdown can only
create the most basic of tables. Basic tables are fine for many things,
but sometimes tables need (multi-column) headers, footers, titles, and
notes and not only basic rows and columns. These things are important
because tables are an important visual organization of data.
The need for more functionality has long spurred me to consider using
Asciidoc more. I've only played
around with it and perused its docs, but I
like what it has to offer. It is mostly as straightforward as Markdown
(but not quite).
My current annoyance with Markdown started yesterday with my Just
Chilling post below. I didn't like the table I created, which I
wrote in markdown originally, and so I restructured it in HTML. But it's
no fun writing in HTML, especially HTML tables. I think Asciidoc might
be a better way forward.
Go the Distance
Yesterday Fitbit informed me that I walked 1,600 miles in the last
twelve months. I'd like to increase this to 16,000 steps per day. That
would equate to about 7 miles per day or 2,555 miles per year.
I only have so much time, though. Seven miles per day would mean
nearly two hours of walking per day. I'm not sure if I can do that, but
I think I'll try.
Just Chilling
The average temperature last month increased by one degree compared
to the same month last year. Yet I've decreased my electricity usage by
2.72 times, or by -63.24%. Furthermore, I've managed to reduce my electricity usage
month over month for the last four months. That's pretty cool!
I enrolled in budget billing long ago. This means I pay about the
same amount each month. Currently, $132 per month.
I'm not sure when this amount will be adjusted, but my account reports a negative balance of $226.04.
I suppose this means that the electricity company will adjust my bill
soon and that I might not have to make a payment for a couple of
months!
Usage (KWH)
Avg Temp (F)
Month
2023
2024
% change
2023
2024
Change
May
831
612
-26.35%
58
60
+2
June
799
513
-35.79%
66
70
+4
July
942
570
-39.49%
72
76
+4
August
1499
551
-63.24%
78
79
+1
Note: Based on my reading of my electricity bill, each month
represents the previous month's usage. That is, May represents April
usage, and so forth. I suppose then I'll be able to report September
(August usage) later this week.
I'm really very curious if I can keep this reduction going during the
winter months, especially with the gas bill.
A simple Python function to calculate percentage change:
def perchange(x,y):
c = ((x - y) / y) * 100
return c
Ice Bath
Ice punctured my ice bath tub last winter. I finally patched the tub
and took an ice bath last night. It felt great and was sorely needed. I
sat in it for ten minutes.
The tub is just big enough for me to sit. I think it holds about 75
gallons altogether when full. I filled it with water about halfway and
added 50lbs of ice. The water temperature was 50F after a bit. The kids
tried it, too, and the two oldest each did a couple of rounds at a
minute each. I was impressed.
It felt cold but not nearly as cold as 32F, the temp it would drop to
in the winter when I took regular ice baths. Ice is expensive and so
I'll only do this once every week or two until the weather changes.
I'm looking forward to the colder months. In the meantime, I still
take daily (not cold enough) cold showers.
Composing a Tune
One of my children has been learning the violin. They composed a tune
for it, and today my child and their teacher played it together. It was
so fun and incredible.
Essays with ChatGPT
Every once in awhile, I'll have a playful idea that I want to think
through, something that's not related to my work at all. If the idea has
any kind of substance, or if I just want to think through it more, I'll
go talk with ChatGPT about it, and if I feel playful, I'll ask
ChatGPT to generate an essay based on my prompts and conversations with
it. It's become kind of a fun hobby.
In light of this, I've created a new section of my site that's
dedicated to essays generated by ChatGPT. The essays were based on my
prompts to it and these prompts were based on various playful theses
that I've had.
Currently, I've added two essays to the page. The first one is a
comparison of two dystopian novels and the second one is on the causes
of monsters in film and other creative works. I'll add more at some
point. In the meantime, and if interested, see Essays with ChatGPT.
One Year
She has children, dogs, cats, and chickens. I have children. My
children vie for her attention and she gives it without wavering. It's
because she loves so much.
I once thought I would be disappointed about something, but I hated
the idea of that and just felt love instead. It's so radical it's
bonkers, to do that automatically. It makes the love flourish even
more.
I love her children, dogs, and cats.
I love her.
Who knew that you could learn so much about how to be by learning so
much about how to be with someone? That's a regalo.
It's all a gift, like everyday is a gift.
In The Rain
Two days ago it rained heavily, and it seemed like one of those rare
rainstorms that wasn't accompanied by lightning and thunder. The kids
and I took our bare feet to the street and jumped, splashed, and played
while it rained on us. I stood in the rain, raised my arms out, and sent
love to my dying cousin. We played in the river of water that ran
against the curb. We formed a human dam to see how high the water would
rise. While I monitored traffic, the children laid down on the street to
feel the water flow around their heads.
RIP Josh
Over two years ago, soon after we left Texas, some of my extended
family there were swimming in a pool. My Mom said to my cousin, who had
put us up while we were in Texas, that he looked yellow. She had had her
own liver problems and thought something might be wrong with his.
Later, he received a diagnosis of bile duct cancer. His Mom was there
and helped him and his family through the initial process. A few months
later, she died from cardiac arrest. I last saw my cousin at her
memorial.
Josh put up a hell of a fight. He had two young children, both of
which were his delight and his Mother's delight.
I last spoke with my cousin eleven days ago. The last several months
were hard, and I'm not clear on what happened, but something caused some
brain damage. My Mom put me on speaker phone, I called out to him, and
he called back to me, repeating my name. Then I told him I loved him,
and he told me he loved me, over and over again.
My cousin and I grew up with each other, and he was more like a
little brother. We spent most of our summers with our common
grandparents, and then my brother and I would often stay with him and my
aunt and uncle.
Josh sometimes aggravated the hell out of me. He wanted things,
fiercely, and that kind of desire worked well for him in life. My
aggravation with him went away when I realized that I didn't want things
like he did.
But even during those times, he was also someone that I wanted to
live near when we would be old people. I don't think that would have
happened, but I'm sorry that it's not even possible now. Josh, I'm sorry
you didn't get the one thing you most wanted, to grow old with your
husband and raise those two dear children of yours.
My little cousin, I have so many fond memories of us growing up,
hanging with Jo and Papa, and spending our summers at the pool. You were
so generous and obnoxious and a source of tremendous fun and gusto. I
will miss you quite dearly. The world already feels less complete
without you in it.
Win Win
I wanted a rocking chair for my front porch, but I didn't want to buy
a rocking chair for my front porch.
Someone left a rocking chair on the curb a few houses down.
Now it's on my front porch.
It's in great condition.
Print Books or pbooks
I've been reading again. I'm currently about a third of the way
through John Kagg's book American Philosophy: A Love Story.
It's an enjoyable book. In an alternate universe, I became a professor
of early 19th century American literature and philosophy. This book is
satisfying that craving.
Instead of using my eReader, I bought the book from an online used
book seller. I've found it really enjoyable to read pbooks
again and haven't touched my now quite uncharged eReader in a few
months. The eReader is great, but it's nice to have a book in hand.
Vim as File Manager
I use vim all the time. However, I have a tendency to
close the application when I'm done with a particular file. I don't
think this is very efficient.
A better use of vim would be to keep it open and use
more of its potential. The first step is to start using it as a file
manager with netrw.
One of the most basic file management actions is to move or copy a
file. It took me a moment to understand the process. To move or copy a
file:
Open the current directory: vim . Or if already in
vim, use <Esc>:e . to open the current
directory.
Navigate to a target directory and mark it: mt
Navigate to source file and mark it: mf.
Press mc or mm to copy / remove
(respectively) the source file to the target directory.
I've been using vim for twenty-something years, and I'm
still learning new things about it.
Breaking Bad Habits
To help me break my bad habit
of checking email first thing in the morning, I wrote a Python script to
limit my email usage to one hour a day, from noon to 1pm.
It's a pretty simple script and is mainly just enough to remind me to
not check my email first thing in the morning. And it only
deters me from using mutt, my email client. If I
keep the client open, then I can check email anytime. I could also get
around it by calling mutt using the full path to the
executable: /usr/bin/mutt.
But, it's been enough so far to keep me focused, which is what I
want.
I call this Python script in my .bash_functions
file:
mutt() {
$HOME/bin/mutt.py
}
Keep Staying Cool
I continue to make headway in
reducing power usage. Compared to last month (June 2024), the
average temperature this month (July 2024) increased by 8.6% (70F to
76F) and my electricity usage increased by 11.1% (513 kWh to 570 kWh).
However, comparing July 2024 to July 2023, although the average
temperature increased by 5.6% (72F to 76F), I reduced my electricity
usage by 39.49% (942 kWh to 570 kWh)! This is pretty exciting to me.
Month
2023 Usage (kwh)
2023 Avg Temp (F)
2024 Usage (kwh)
2024 Avg Temp (F)
May
831
58
612
60
June
799
66
513
70
July
942
72
570
76
I've also managed to reduce my water usage by about 55%. In fact, I
received a $10 and change refund on my water bill this month.
The difference in gas usage hasn't changed much year to year yet, but
gas usage is fairly negligible in the summer months. I did turn down my
water heater thermostat to about 110F, which should help a lot. I'll
also aim to keep my heating bill low by setting a lower temperature on the
thermostat during the winter months and will track it more closely
starting in October.
Lots of Walking
So far this year, I've walked 842.88 miles, which is about 120 miles
per month. At this pace, I could end up walking over 1440 miles by the
end of the year. That's like walking to Santa Fe, NM and then some from
my home. Or I could circle the earth in just over 17 years.
But it's just a bit under four miles per day, which doesn't seem like
that much.
Maybe I'll aim for five miles per day. My average for this week is
4.6 miles but only 3.7 for the month. On this last day of the month, I'd
have to walk 41 miles to bump July's daily average to five miles.
Probably not going to happen.
More Bad Traffic
I might becoming a bit obsessed about traffic, especially with how people
drive. A recent article in The New York Times (Badger &
Blatt, 2024) reported that road deaths have risen considerably since the
pandemic. The article doesn't mention it. It's more about the decline in
traffic enforcement since the pandemic. But in my view, I've never seen
more people drive with their phones in front of their faces (as well as
sitting in idling
cars with their phones in their faces). People and their phones are
a problem.
Source: Badger, E., & Blatt, B. (2024, July 29). Traffic
enforcement dwindled in the pandemic. In many places, it hasn't come
back. The New York Times.
Sitting in Idling Cars
Is it a new thing or have I just noticed it more often, that people
sit in their idling cars for long periods of time? That seems like a lot
of gasoline to burn through. I don't get it.
On Annual Rituals
I have only street parking where I live, and street parking where I
live requires a parking permit, and mine expires at the end of this
month. So every year I walk down to the parking authority to renew my
permit and to purchase a guest permit. It's like an annual
tradition.
I could do this online, just like I could update my car's
registration online every year, too. But I like the excuse to walk the
mile and a half walk it takes to get downtown from my home and to take
care of these things in person.
Of Madness in Books
I finally finished a book this year. I read Paul Auster's City of
Glass. I remember where and when I've read most of the books I
have, but I can't recall when I purchased this copy. Probably because I
never read it. But I must have bought it at least (two?) decades ago.
It's been sitting there all these years and moved in boxes however many
times. But I finally read it, and it was great. It's the first work I've
read by Auster, and I was probably motivated to read it because of his
recent passing.
Don Quixote makes its appearance in the work. That's a book
I couldn't finish because Quixote's madness made me too sad. This book
made me sad for the same reason, but I felt less connected to and more
detached from the main character. Which surprises me because I enjoyed
reading it quite a lot.
I'm way behind on reading this year. My goal is one more fiction work
before the semester begins.
A Disturbing Trend
I haven't participated in social media for years, but I've commented
on three YouTube videos this year. I don't like where this is
headed!
I Want To Hold Him
I spoke with my cousin yesterday, probably for the last time. I just
want to hold him in my arms.
Bad Habits
I generally start the day early by reading the news and checking
email. I need to break these habits because they set the tone for the
day and derail getting started on what matters: teaching and
research.
For example, my plan this morning was to get some work done on a
textbook that I'm writing. But I checked my email first, and that led to
a series of tasks. And those tasks took up the majority of my
morning.
The tasks could have waited, but I can't help it sometimes because I
have this compulsion to keep my inbox clean. I've tried various hacks,
but they don't stick. For example, since I use the mutt
email client, I wrote a bash script to prevent me from
using mutt during certain time frames. But then I
eventually just use workarounds to my own efforts to hack my behaviors.
Silly me!
I'm going to just have to break these habits by BRUTE
FORCE.
I'm envious of the people who don't have such compulsions. Like, when
I notice that a colleague has an inbox with hundreds or thousands of
emails (or even tens or hundreds of tabs in their browser), I'm
seriously a bit jealous of that ability to handle that kind of
chaos.
Kicked Out
I was perusing the abstracts of the last three issues of a journal,
and then I was kicked off the site for malicious activity. So there's
that.
The Error page states:
Please contact us immediately if you believe your IP
has been blocked in error.
The contact us text is a link. But that link doesn't
work because my IP is blocked from the entire site. Hilarious.
I Get It
Lots of changes at my workplace this last semester. In trying to make
sense of it, I thought, follow the money. That finally made me
realize that we think about universities wrong these days. Or that I've
been thinking about my university wrong. I realized that my university
is not a university first. It's a hospital system first but with a
university attached to it.
Now I understand the changes to all the regulations and policies.
Just now, I went outside to remove some vines that were growing on
the window screen. The temporary neighbor was sitting outside on
their door step looking at his phone. He looked up at me as I
walked down the side of my house. I waived hello. He turned away and
went inside.
Of On
When I began this page, I had Michel de Montaigne's Essays in
mind. And this inspired me to begin the titles of many of my posts with the word
On because that's how I remembered the beginnings of the titles of many of
Montaigne's essays. Turns out, he started the titles of many of his essays with the word
Of instead. As Montaigne might write, LOL.
Reading for Fulfillment
I haven't read a single book this year for fun. I tried to read a few
books last semester, but that semester was overwhelming. I would make it
partway or about halfway through a book, but I would run out of time on
my loan from the public library. Then I would renew or rejoin the wait
lists for those books. I decided to pause things after multiple attempts
at that.
I will read at least two novels before the end of the summer, though.
I need that.
Set the Tone
Yesterday we went to the pool for the first time. It made it feel
like the summer has finally begun. Which is sad since the summer is
mostly over with.
It also made me realize the fatal error I made this summer. I didn't
set the tone.
Next May, I'm setting the tone.
On Memory and Time
It seems like time goes by quickly. But now I think it's just that
some memories feel more recent than they are. Sometimes that's
disorientating.
Process Substitution
I use the pipe
| operator all the time to "pass" the output of one
command to the input of another command. For example, one time I needed
to check which directories the SHELL used for executables. To do that, I
can check my $PATH variable. However, the output is one
long line of directories, where each directory is separated by a colon.
This is not a very readable output.
To make the output readable, I pipe it to the sed
command to replace colons with newlines:
echo "$PATH" | sed 's/:/\n/g'
We can keep adding pipes to the output. If I want to pipe the above
output to list executable directories only in my home directory, I
simply add the $HOME variable to the grep
(aka, search) command:
echo "$PATH" | sed 's/:/\n/g' | grep "$HOME"
In the above cases, piping is a way to filter the data.
In other cases where I need to filter multiple data at the same time,
I can use process
substitution.
Here is an example where I use sed to filter out
specific lines in multiple files, specifically, lines 7-10 in
file1 and lines 1-3 in file2. The
cat command joins the output together:
It's stuff like this that makes working on the command line so
efficient, especially when working with data.
Searching for R
My first years learning R started in the R Console. This
was back in 2008, two to three years before RStudio launched. I remember
installing R for the first time and then having a hell of
time launching the R Console before I realized that I had to type
capital R and not simply r in the terminal. I
laughed hard when I caught my error. It's one of the annoying things
about the otherwise great package management system in Debian-based
Linux systems: the names of packages (e.g., r-recommended
on Debian-based distros) are not the same as the executables.
I also remember being confused by the R package install
process. For example, I wasn't sure if I should start R as
an admin (e.g., sudo R) or as a regular user (e.g.,
R) before running the update.packages()
command. And then I was confused by which download mirror to select.
Eventually I figured out how things worked.
When RStudio came out, I started using that for most projects. Even
though it's a fine application, has nice functions, and its editor has
Vim keybindings, I much prefer the command line and actual Vim. Thus,
I've barely used it in recent years and haven't installed it in a while
on my systems. My workflow has long been command line centric, but I've
been making an effort over the last several years to double down on a
command line workflow.
The problem is that nowadays it seems like every web search for how
to do something in R turns up how to do something in
RStudio. For example, I like knitr for processing documents
written in Markdown and R code. This approach to producing
reports aligns with Donald Knuth's idea of literate programming, which I've long
found interesting. It's completely fine to knit a document directly in
Vim. However, a default search for how to use knitr or
other packages means you get a tutorial on using it in RStudio. In fact,
most web searches these days on anything R related yields
results on using tidyverse content in RStudio. It's kind of
annoying, and it illustrates how search is largely a function of content
and popularity.
On Soup
Soup is my favorite food. If all I could eat for the rest of my life
was soup, I could live with that. I worked as a cook for about 18 years.
I never seriously wanted my own restaurant, but when I imagined opening
one, I imagined opening a soup and sandwich shop.
I don't often buy canned soup because soup is the easiest thing to make
in the world. This is what I do for the most basic soup:
Add broth to pot (or bouillon to water).
Add vegetables (whatever I have on hand).
Bring to boil.
Add noodles.
Lower the boil.
Salt to taste.
And that's all there is to it.
Making creamy soups is not much more involved. Blend and add
cream.
I like unblended soups, but that's easy, also. Just blend it.
In my fridge, I had a small piece of onion, some carrots, some
celery, some tomato, and some cooked beets. I added it to some broth in
a pot. Brought it to a boil. Added some spaghetti, which I broke up into
pieces as I dropped it into the broth. Then let it low boil for about
ten minutes. So good.
Staying Cool
I am working hard to reduce my electricity usage. I set my AC at a
higher temperature than I have in the past. I hang dry my clothes more often.
Etc. I am seeing some payoffs.
Let's compare last year's usage to this year's. According to my power
usage history, I used the following amounts of power this time last
year:
Average electrical usage during two summer months in 2023
Date
Usage (kwh)
Average Temp (F)
May 2023
831
58
June 2023
799
66
In the last two months, I used:
Average electrical usage during two summer months in 2024
Date
Usage (kwh)
Average Temp (F)
May 2024
612
60
June 2024
513
70
Thus, comparing May 2023 and May 2024, despite a 3.4% increase in
outside temperature, I dropped my power usage by over 26%.
And comparing June 2023 and June 2024, though we experienced a 6%
increase in outside temperature, I reduced my power usage down by almost
36%.
I'm looking forward to keeping this up (or down)!
On Loneliness
I'm a big time introvert, and I lived a solitary life before I had
children.
I never felt lonely in those days. Didn't even understand it, even if
I would go days without being very social.
Then I had children. And when they are away, I understand and feel
what I didn't before.
Drinking Beets
I make beet burgers about once a week. They are made with a mixture
of ground oatmeal, ground baked black beans, and boiled beets. They are
pretty yummy. Two out of three of my children think so!
Before I boil the beets, I save the leaves for another dish, like a
pasta or sautéed veg. After the beets are boiled, I compost the skins. I
thought I was getting a pretty good use out of the whole beet.
Then the kids and I watched a sourdough video. In this video, someone
reserved the juice from some colorful vegetables and added that juice to
their sourdough. Their baked bread had this really wonderful color as a
result.
The children and I loved this idea. Yesterday I reserved the boiled
beet water as a substitute for regular water in my sourdough. I made the
dough this morning. It is super beet red and very beautiful. I'm excited
to see what it looks and tastes like tomorrow when I bake it.
In the meantime, I had more leftover beet water. The children and I
went for a long bike ride today. When we got back, I had this idea to
drink it. I squeezed half a lemon into it and added a bunch of ice. We
slurped it up. It was so delicious and very refreshing. I'm excited to
get more out of my favorite vegetable!
Coding with ChatGPT
Using ChatGPT to create some code can be useful at times, especially
for quick one-off commands in bash. But I find that I'd
prefer to code myself. I enjoy writing code, and using ChatGPT (or some
other GPT) takes away the fun.
That said, it's helpful in explaining some code that I don't
understand or checking the code that I write for errors or optimizations
(that I then check for accuracy). However, I prefer to write the code
myself, especially when I'm working on a project.
Small Dreams
My ten year goal is to not have a car anymore or ever again. I'd
prefer to walk or ride a bike, and if I need a vehicle, to use a service
or rent a car. I might even try to reach this goal sooner. Maybe I can
do it in five years.
HTML Email is Bad
HTML
email — is
awful. Quite
awful. So I've been sending a lot of HTML emails lately, because I
think it's funny. Don't worry. I've made them absolutely horrible
looking.
I prefer to send email as plain text and to render email as plain
text in my email client (mutt).
My adventure with composing HTML emails was only temporary,
fortunately. Email clients shouldn't act like web browsers. Just
the text.
Areas of Expertise
The new regulations were posted today. They decided to define
academic freedom, which I don't think, but am not sure, was
defined in the prior regulations. It says a lot that they decided to add
this definition, especially if I am correct that it wasn't defined in
the prior regs.
I find the definition to be a bit vague. Specifically, I have some
initial questions:
What are the boundaries around our domains of expertise?
Who gets to say what my domains of expertise are? Do I get to say?
How do we interpret personal viewpoints, especially in
contrast to the ability to express our views and perspectives on
issues related to our academic expertise?
I think this is all rather confusing.
Family Cycling
My kids and I ride bikes a lot in the summer. My youngest had been
riding in a bike seat with me, but yesterday and today they started
riding on their own. It was pretty awesome.
I had to learn how to teach them to ride, but they all learned pretty
quickly. I can only take a little credit because it helped that they
each started on a balance bike.
But I learned some important lessons in teaching them to ride. When I
thought my first child was ready to move to a regular bike, we started
in all sorts of places: on the sidewalk at the park, in an empty
basketball court... But the sidewalk was too narrow for them and the
basketball court was too short. The thing that helped was to start them
on the street. They needed space on each side to feel safe to meander,
and they needed more distance before having to turn around.
I'll remove the child's seat from my bike soon. I'm happy to get rid
of the bulky thing, but I'm kind of emotional about it, in a mixed way.
Yet it's so cool. My children and I are going to be riding around town
altogether.
Won't You Be My Neighbor
My neighbor died about six and a half years ago. New people bought
and renovated it and have since used it "for short- and long-term
homestays".
Of all the people who have stayed there over all these years, less
than a handful have said hello, even after I have said hello or nodded
or attempted some kind of greeting. This is hundreds of people, I would
guess. Most of those people just turn away. It's very weird.
Custom YAML
I'm editing a manuscript and marking it up with markdown. This is not
an Rmarkdown file. It's just plain markdown. I have a YAML in the header
with metadata like this:
title: "This is the title"
subtitle: "This is the subtitle"
author:
- name: "C. Sean Burns"
affiliation: "University of Kentucky"
- name: "Generic Name"
affiliation: "University of Generica"
date: "June 5, 2024"
abstract:
This is the abstract of the manuscript. It goes here.
lang: "en"
I was having a problem generating HTML from this file using
pandoc. The metadata would render to HTML except for the
author names and affiliations, which would simply return
true:
pandoc file.md -s -o file.html
The solution was to create and use a custom template for the YAML. I
had read about this before but hadn't investigated it enough. But now I
have! Here's my custom template for the above example file:
It's pretty simple. For every field in the YAML that I want in the
HTML output, simply enclose the field name in the custom template file.
In the case of multiple fields with the same field name, such as with
the author and affiliation fields, then use a for loop in
the custom template file. And note that the field names are
hierarchical, such that affiliation is a child of
author and should thus be ${author.affiliation},
and so forth.
Of course, the file names could be descriptive of the project. And
the custom template could do more with the metadata, like using the YAML
metadata to add HTML <meta> tags in the HTML
<head>.
Accidental Redirect
I was editing an HTML file and wanted to list the
<h2> tags in the file with the grep
command.
And I made a big MISTAKE because I typed too fast
and pressed Enter too fast:
grep "<h2"> index.html
Astute observers will notice that the > tag is outside the right
quote mark. Which means I accidentally zeroed out the file because
that's a bash redirect! I had done a lot of work on that
file, too. Oh, the pain!
The correct grep command is:
grep "<h2>" index.html
But next time I'll just do:
grep "h2" index.html
Fortunately I had the HTML file open in my browser. But when I
right-clicked and selected View Page Source, I got
nothing. Because I emptied the file!
What did the trick was pressing Ctrl-a to select all in the browser
window and selecting View Selection Source. That opened
up the HTML code, and I was able to paste that into my editor.
I'm using git on this file, but I hadn't yet committed
my changes. Argh!!
On Writing Longhand
I went (late) to a writing retreat this morning. Writing retreats are a great way to focus and get work done, and I need them sometimes, especially since I'm working on a scholarly book.
But, per my decision a few weeks ago, I didn't carry a backpack. By entailment of a late early 21st century life for a professional in the US, that means I didn't bring my laptop. And because the retreat was not near our offices, I didn't have access to my desktop machine.
Instead, I brought a notebook and a pen, and when I sat down to write, the ideas came flowing out. I developed an aspect of my thesis for my book that was implicit in what I had already developed, but writing it out by hand helped me make a more explicit, stronger connection than what I had developed before. It was thrilling.
Make Install
On Debian-based distros, including Debian but also Ubuntu and other derivatives, the common way to install software is through the apt command. And there are corresponding package management systems on other Linux families, like dnf on Red Hat-based systems. These are great software management systems, but using them generally means installing older versions of software (albeit, patched for security updates). That's usually fine, but in some cases, I would like the latest versions of software. For example, Vim 9 was released almost two years ago and is much better than the last stable release, which was Vim 8.2. But Vim 8.2 is the default version on my Linux box right now when installing using apt. Furthermore, there are some plugins that I use a lot that expect Vim 9. Some of those plugins also expect Python3 support, and the apt version of Vim isn't configured for that. These factors mean that the best way to install Vim is by downloading and compiling the source code.
Installing Vim 9
The steps to install Vim 9 (after perhaps removing Vim 8.2 using apt) are:
Install dependencies needed to compile Vim 9 with Python3 support. I already had build-essentials installed but for reproducibility on a new system:
The process is fairly similar when updating Vim, but there are a few differences. First, I don't need to clone the repo, but I do need to pull it for updates. I also need to run make distclean to cleanup prior build files. The whole process is:
cd ~/bin/vim
make distclean
git pull origin master
cd src/
./configure --with-features=huge --enable-python3interp --prefix=/usr/local
make
sudo make install
And then I can check the installed version number.
Being Cool
One of my goals this summer is to avoid using the AC as much as possible. I've done some reading, and I think I have the windows, shades, and fans configured to keep the house cool and breezy even when it's hot outside. Plus, I ordered a small window fan to help create a better cross breeze.
I'm pretty excited about this experiment and am also curious by how much it impacts (lowers) my electrical bill.
Also, when it's hot, I'll have a great excuse to take an ice bath. Not that I need an excuse to take an ice bath. I haven't taken once since the winter, and I'm seriously missing it.
By the way, I did my daily WH breathing yesterday, but it was a weird day for reasons, and I forgot to take my cold shower. Yesterday was thus the first time I've missed a daily cold shower in about two and a half years. I was fretting about it last night as I lay down to sleep, but I decided to let it go and be fine with it. Maybe I'll take a second one today to make up for it. :)
On Distance
My friend heard the thunderclap before I did. We were on the phone, and they live a little less than three miles away.
I wish I had the presence of mind to count how many seconds passed before I heard the thunder, but I think it was only two to three seconds.
Given the speed of sound at 74 degrees Fahrenheit, it would have taken about 13+ seconds for the sound to travel to my ears. But that's assuming the sound came from a direction directly beyond them.
However, if I am correct that the time it took the sound to reach me after them was only a couple of seconds, then that means the thunder originated between us but closer to them than to me. More specifically, it was a bit less than half mile closer to them.
Traffic
More and more often, it seems to me, I find people driving recklessly and without consideration of others on the road. Today, I was running an errand, and traffic was fairly congested. There were a couple of drivers who cut in front of me, with little wiggle room, and without signaling. One of these people drove very erratically. This kind of experience often sours the whole driving experience and makes me worry about getting in a wreck. And I am already not a fan of driving or being in cars.
Yet, 99% of all the other drivers would drive okay or would be kind. I just now realized there's no reason I need to let the 1% sour the experience. Instead, I can appreciate that most people were cool.
Same for other areas of life.
Still, that small minority of inconsiderate people can do a lot of damage. So it remains important to be careful.
Same for other areas of life.
End of Life
I guess these were the words the doctor used, conveyed to me by my Mom, that my younger cousin is in "end of life."
I kind of despise crossover terminology, even though it has its metaphorical uses, and even though I can't present a better alternative. And I'm not sure who borrowed the phrase from the other, but I'd guess it was the tech field that borrowed it from the medical field. Indeed, a quick, non-rigorous search on Web of Science limited to computer related categories shows that the phrase appears as early as 1998, and as early as 1983 in the health care sciences.
I love you, Josh.
Say Less
Back in 1998, I had an office job. My boss instructed me to write a response to a client's letter, and I wrote a two-page, single-spaced reply. When I showed it to him, he laughed and told me to edit it down to a couple of sentences.
I learned the same lesson years later in a graduate philosophy course. In both cases, the main point was: the more you say, the more you accept responsibility. That kind of responsibility might mean greater commitment to do something or more admittance of fault.
Twenty-six years later, I am still having to learn this lesson.
It's hard because sometimes I want to write a whole lot about something, to get it out of my system or to think through the issue. But the key for me is: once I've done that and made my point, edit out all but the point that I want to make.
Mouse Infestation
I found a lot of mouse feces on my pantry shelves the other day. I had to throw away a lot of spoiled food. Then I cleaned up the pantry and laid some traps, unfortunately. This morning I found the traps were empty and more feces on the shelves. I'm completely bewildered by how the mouse (or mice) is getting on the shelves. I suppose it could be climbing up something, but I removed anything that would facilitate that. My next guess is that it's coming from the wall somewhere, but I can't locate where that might be.
Rmarkdown
I use Vim as my primary environment for R development. This setup uses the following Vim plugins:
With the Nvim-R plugin, I can run Rcommands directly within the document. But the plugin shines when writing Rmarkdown (Rmd) files. To produce a report written from an Rmarkdown file in Vim, I use the following command: :Rmarkdown. This command generates the configured output as specified in the Rmarkdown YAML header. (It also assumes that the rmarkdown package is installed in R and pandoc on your system.)
I successfully used this process for a paper recently accepted by Scientometrics.
Another efficient way to create reports from Rmd files is by using a Makefile. I've been using Makefiles to generate my textbooks using mdbook, and I thought I'd apply it to this workflow. This approach allows you to share your research workflow as you intended it, and that's better for reproducibility than just sharing your code and data.
As an example, let's say I have a file named test.Rmd with the following YAML (imagine some R code and text after the YAML):
---
title: "Rmarkdown from the command line"
author: "C. Sean Burns"
date: "May 20, 2024"
output:
html_document:
theme: united
keep_md: false
df_print: paged
code_folding: hide
toc: true
toc_depth: 2
word_document: default
pdf_document: default
always_allow_html: yes
---
[insert text and R code here ...]
With the following Makefile, I can auto generate PDF, HTML, and DOCX files:
To generate all three files, run make all in the shell. Or to generate only the HTML file, run make test.html.
Seasonal Habits
I use the mutt email client running in a tmux window. It's an efficient and fast way to manage my email workflow. And that's really important because sometimes a semester can be particularly email heavy. The less time I'm in email, the more time I'm doing something more rewarding and productive.
Now that we're about to start our summers, I don't need to check email that frequently. But as is normal when switching seasons, I'm having a hard time breaking that habit. The mental switch will happen, but it sometimes takes a few weeks.
It's important to break the email checking habit because email interrupts focus. Summers are for reading, writing, and researching, and I need focus for those activities.
Changing a habit often takes simple measures. To curb my email checking habit more quickly, I closed that tmux window for the summer.
Sentence Line Breaks
Over the years, I have found that writing in a text editor frees me up to explore ways of writing. For example, a couple of years ago I discovered semantic line breaks. It's an old convention that originated in the early days of computing. The process involves adding line breaks to sentences after clauses, conjunctions, and other natural breaks in sentences. It works when writing in a text editor because I write using Markdown. When the file is converted to HTML or some other format, the sentences will render as natural paragraphs. I like using semantic line breaks because it makes text editing and version control easier.
However, lately I find that I prefer writing one sentence per line. It still makes text editing and version control easier, but it has other benefits. It discourages me from adding too many clauses and conjunctions, which I tend to do. Consequently, it encourages me to write shorter sentences or sentences with less breaks. I find this funny because I tend to skip over parenthetical clauses when reading but I tend to use them a lot in my writing. So it feels good to write in a way that aligns with how I prefer to read text.
Archiving Email
I archive most of my work email in maildir format, and use notmuch to index and search it. Sometimes I use these tools to look for patterns in my email. At the most basic, I sometimes wonder how much email I've archived.
So far, here's the breakdown. The current year is obviously not over with, but since 2013 when I started my current job, I've archived the following number of emails:
Email counts per year
Year
Emails
2013
2319
2014
6286
2015
7513
2016
5682
2017
4383
2018
4604
2019
3817
2020
5721
2021
3425
2022
4805
2023
4924
2024
2762
Total:
56232
I archive based on the calendar year and not the academic year. Therefore 2013 was only a partial year because I started in August 2013. The spike for the years 2014 and 2015 were due to being on a big search committee. I thought at the time that the pandemic slowed email down (2021), but I was on sabbatical during the spring 2021 semester, and I'm sure that explains the big dip. Alternate forms of communication via Teams, Zoom, etc have increased since I started but not enough it seems to put a major dent in the overall average. I used to but for a long time haven't archived email from the learning management system (Blackboard in the early years and then Canvas to today). I could probably still clear some of that out of my archives. Not counting 2013 (half-year) and 2024 (not over with), I've archived an average of 20.6 emails per day in the email heaviest year (2015) and an average of 9.4 emails per day in the email lightest year (2021).
On Traffic Jams
Turns out it only takes an approximate drop of about 7% of the local population to clear up traffic in Lexington. (The university students left last week.)
I still see people driving with their phones in their faces, all the time.
Two Years
I'm a bit of a slow researcher, but I tested that characteristic this morning when I submitted a revision of a paper on a project that I started working on two years ago. Of course I'm not sure if it'll be accepted, or if this means that I'm almost done with this paper, but at least it feels good to make some progress.
One of the nice things about it recently was that I got to totally immerse myself in writing code for the (re)-analysis and editing the paper. I don't often get to do that during the school year. I look forward to being more immersed this summer on other projects.
No More Backpack
I walk to campus when I go to the office, and for a long time now, I've carried my backpack with me. Lately, I've also brought my laptop in the backpack.
But, I've had a great desire to not have to carry anything. So, I moved my old desktop computer back to the office, and installed a fresh new version of Debian Linux so that I could keep my laptop at home. And today I went to the office without carrying anything. This might all seem trivial, but it was very nice to be unencumbered.
Tough Year
This has been a tough year, like very tough. Like push me down to my knees tough.
But I'm thankful. Because this year has also been a gift.
The gift has been, that each time I've been thrown a curve ball, I am quickly reminded by someone or something that there is so much goodness, too.
Falling Asleep
I fall asleep pretty quickly, and I think coherent breath work helps with that a lot.
But recently, I've had these experiences, just as I'm in that early dream state, of standing on the precipice of some chasm, which causes me to jolt awake with a surge of adrenaline.
It's been a pretty frequent going-to-sleep experience, almost predictable.
Five Years
I happened to notice recently that I started this page five years ago today. I've had some kind of website for well over 20 years now, and when blogging became a thing, I tried that multiple times. It never stuck because I thoroughly disliked every blogging platform that I tested out, and I tested many of them.
I don't know if this page counts as a blog, but whatever it is, posting here has worked out for me. I like that it's one page, that it's only HTML and CSS, but most of all, posting here follows a workflow of my own design. It's a work flow that already matches my general workflow, which is heavily based on command line utilities, command line text editors (Vim/Ed), and Bash scripting.
This page, after five years and 236 posts, has a count of nearly 46,000 words and over 6,500 lines of text, not including the table of contents. I like that, and I look forward to adding to it for the foreseeable future. Perhaps one day it'll be the longest, single webpage on the web (that actually has content)!
(Edited on 4/25/2024)
Lost in Code
One of the challenges with being a professor is that your time (or my time) is split among different kinds of jobs: consider the standard teaching, research, and service division of labor. Even within those respective areas, there are specific kinds of work that require different skill sets: writing, analyzing data, lecturing, creating classroom excersises, grading, etc etc.
So, it seems, particularly during the school year, that I don't get the chance to spend a substantial amount of time on any one task that requires a lot of skill. That is, it often feels like I'm jumping around from one thing to another. It's one of my least favorite aspects of the job.
But today I got to spend a substantial amount of time writing code. It seems like it's been forever since the last time I was able to do that.
And I forgot how glorious it feels. The time has whooshed by.
So Far So Good
I'm still doing daily breathwork and cold showers, and I still haven't gotten ill since early November 2021. However, I did get really mucousy this last week, but I felt completely fine. So, not sure what that was about.
Food Waste
Things have changed on the home range, which means that I have total control of the grocery situation. I'm happy to report that, as of now, my food waste is at a near minimum.
I think this achievement was doable for me because of years of experience working in and managing kitchens and restaurants.
Pre-2007
I use my phone a lot, of course, but I'm also tired of it. Oftentimes nowadays, whenever I'm sitting around and waiting on something, I like to just sit, without the phone. It feels good.
And doing so reminds me of life before smartphones. I'm not a nostalgic person, but I'm glad I had that experience for much of my existence.
So far. I'll be 70 before I've lived longer with ubiquitous digital technologies and connectivity than I lived without that.
Boo Boo
Most of the time, I think the peer reviews I receive help me to revise a paper that can be more clearly written. In those papers, the main problem with them is that they don't get my message across well enough.
But a recent review caught an ugly error in my data. It's a revise and resubmit, and after fixing the error, the findings will likely be different. I don't know thus if the paper will be rejected, but I'm really glad it didn't get accepted.
On Scat
I have this weird ability to recall when and where I learned things.
The word scat came up recently in a conversation. I immediately recalled learning that word in 1989 in Larry McMurtry's novel, Moving On: A Novel. I checked Google Books, and the word is indeed in that book. Memory verified!
I have a fairly decent book collection. Sometimes I think I'd like to rid myself of the collection. It's just a lot of stuff. But, it's also how I index many of my memories. I can look at one of my books and say exactly when and where I was when I read it. I wonder if I rid myself of my collection, I'd rid myself of those memories. So, for now, I keep them.
As an aside, it's this connection with physical books that makes me wonder if I should stop reading ebooks and stick with pbooks. In the meantime, until I decide on that course, I've found that keeping a list of books that I've read has worked just as well.
Reading does so much good, either way.
Floor Sleeping
I didn't intend to start sleeping on the floor, yet I started doing just that a couple of years ago. But my setup was a bit lousy. So recently I invested in a proper floor sleeping setup. I got a bed slat for a futon mattress and a nice futon mattress to go with it. Two plus years into this, I'm digging it even more than when I started.
Multi Posting
The script that I use to automatically generate this page, the RSS feed, etc., allowed for only one post a day (because the way I set up the id attributes in the script).
I've modified the script to allow for multiple posts in a day. This is only a test.
See Also
For the most part, I think peer review is important. In my experience, it's been helpful in making sure that I write clearly. However, sometimes reviewers can make trivial comments. One reviewer was adamant that I clean up an in-text citation. I had placed the in-text citation before the end of the first part of a compound sentence. It looked used something like this:
something or other (Name1, Year), but other or something (Name2, Year).
And they wanted me to rewrite it like:
something or other, but other or something (Name1, Year; Name2, Year).
I thought that suggestion obscured the relationships between the parts of the sentence and their connections the in-text citations. To me, the in-text citation should be attached to the claim in the sentence and not just tacked on to the end.
Their motivation, I believe, was to adhere to the journal's style guide. Rules, as style guides, are useful of course, but they're useful because they provide consistency and help to clarify meaning. When rules are followed for their own sake, then the point is lost, in more ways than one.
I think we should just get rid of in-text citations anyway. We should be hyperlinking text as much as possible. It's more specific. And, I probably think that because writing for the web has conditioned me to do so. That is, hyperlinking text is more common, in everyday practice, than using in-text citations.
Reconfigure
A couple months ago I stopped serving this site at cseanburns.net. My hosting service raised the price (again), and the SSL costs also increased. Since the basic code for this site is in one of my GitHub repos, I just let the site default to that URL.
But, I've had cseanburns.net since around 2010, and I realized that I like that longevity. It feels nice in the way that living in the same neighborhood for the past eleven years feels nice. So instead of defaulting the URL to the GitHub repo, tonight I pointed my domain name (cseanburns.net) to the repo.
I might do it all differently someday, but I'm happy for now.
Parkour
The kids and I have taken on parkour. The idea here, at least for me, is not to become any kind of expert at this. I simply like using my environment and my body to get exercise rather than going to a gym. More importantly, it's an outside activity to do with the kids, and it's been a lot of fun so far with them.
But, wouldn't be it be dang awesome to do a Kong vault aka cat pass? Perhaps someday.
My kids and I went to the playground. A little boy wanted to play with my youngest. Five minutes in, he asks,
Want to be best friends?
Wow.
And On This Day
My children could be having a sleepover tonight, but that would feel differently than it does. It wouldn't feel so sad.
Funk
Work has a been a little toxic because of a couple of people who seem to like to sow chaos and who seem to care nothing about other people but themselves. And my personal life has reached a new level of complexity. Combined, I finally fell into a bit of funk this weekend.
I decided to snap out of it. As I prepared to take my cold shower this morning, I set an intention to lift my mood. I turned the water to full cold. Then I exhaled deeply and emitted guttural vocalizations as the cold water washed over me. It felt great.
Sometimes the cold water alone is not enough to do the trick. Sometimes you have to set an intention, to embrace the experience as a mindful one and not just a physical one. I did that, and my strength is renewed.
Influence
Decisions in group settings are not always made based on rational arguments alone. Emotional responses, social dynamics, and the desire to avoid conflict can also influence outcomes. The physical presence and assertiveness of the coalition members might have created an environment where opposing their views felt more daunting, leading to a consensus that aligned with their preferences, even among those who might have had different reasons for their choices. - ChatGPT
HIIT
I have a new exercise idea for people.
Let three lean, fast dogs out, all with high prey instincts for chickens, into a yard with a dozen or more chickens on the loose.
Then, try to get the chickens back in their coop before the dogs can kill them.
You'll never run so fast, I promise.
4303 Days
It won't be over for a long while yet, but today marks the end of a big chapter in my life. So be it. It also marks the beginning of many new possibilities. And I'm looking forward to that.
Eyebrows
One of the novels I haven't been able to finish this year is Zadie Smith's On Beauty. I'm a good way through it, though, and laughed when I read the following:
"Dean French, I just don't see why my opportunity for advancement in the creative fields should be stymied" — French raised his eyebrows at 'stymied' ...
I laughed because I have these memories of me saying something or asking a question to some of my professors in college, and they would raise their eyebrows in the exact way that I imagine Dean French does.
Copying
Sometimes I need to copy a few lines from a file but don't want to open the file because, well, I don't know why. I'd rather just stay on the command prompt.
Since I'm using Wayland nowadays, I use wl-copy to copy to the clipboard. To copy some lines from a text file, just start with sed and pipe to wl-copy:
sed -n '/regex/p' file.md | wl-copy
Not Reading
I haven't been able to finish a book since the start of the year. Part of it is just how I am being in the world. A kind of mode. Sometimes I'm in a learning-by-doing mode. Sometimes I enter more of a reflective-passive mode. Right now I think I'm in the learning-by-doing mode, and a lot of that is work-related but also a lot is going on personally.
I imagine that by the time the semester ends, I'll be sick of computers again and for a while, and will finish the several novels that I have already started.
On Digital Minimalism
I removed most CSS from this site and am letting it default to the basic browser settings.
I'm sure to change it again someday. I like playing with CSS. But for now, I'm in the mood for a basic digital aesthetic.
Reload
There's an annoying browser behavior where if you return to a tab after moving away from it for a while, upon reopening the tab, the entire web page will reload, and so you lose your place on the page.
Ditch JavaScript and its frameworks 99% of the time.
On Personal Websites
It could just be me, but I think I'm seeing a growing interest among people in leaving social media but maintaining a presence on the web by creating their own personal websites. Not that I think social media is in any real danger of extinction, unfortunately, but I think it would be nice if some of the cooler things about the early web were resurrected, and that we once again had a web with personality, and that looked weird and resembled less like a common WordPress / Squarespace / Some JS Framework / etc template. See for example: mmm.page and digital gardens.
R Base
I met a civil engineer recently. She uses R for her job, but here's the catch: her and her colleagues are restricted to using the R Base Package, without the allowance for any additional libraries or packages. I find this fascinating and can't wait to ask her more questions.
I also find this setup inspiring. While the tidyverse and similar alterations for other languages offer some conveniences and a more Python like syntax, my first experiences with R predate their existence (outside of ggplot, which was available then). The problem with the R alterations is that they are unstable, and the endless deprecation warnings I get when using them are disconcerting. I'd wager that I could still run my scripts from my early days with R without issue, but I wouldn't wager any such thing for scripts that I wrote just a year or two ago that use those add-ons. (See also: dependencyhell.)
The enduring reliability of the Base R package highlights the challenge, for open science and more, with relying on add-ons. I think this is true for much of the software ecosystem. I'm getting a sense that more people are pushing back against software frameworks that contort the basic languages they build upon, like React with JavaScript. We'll have to wait to see if that push back gains momentum.
What's interesting to me is that programming libraries and frameworks have long existed and were created to help programmers develop applications for specific contexts. For example, ncurses helps C programmers develop command line applications. But the difference here is that C is a general purpose programming language; ncurses provides a context or domain for C programming (the command line environment). Programming languages like R and JavaScript are more single-minded languages. That is, they were built specifically for statistics and web development, respectively. The add-ons do not change that context or domain. Contextual enhancement is fine and is not the same thing as fundamental alteration.
I think the fundamentals of languages are way more important to learn than the alteration frameworks. Back in the 90s, I remember watching an interview with Michael Jordan. He was asked about how he practices, and whether he spends most of his time on jump shots. His response was that he spent most of his practice on the fundamentals: passing, dribbling, shooting, etc., and he seemed to strongly believe that it was this focus on the fundamentals, along with practicing them a lot, that helped him excel. I've seen other great players make similar claims, like Kobe Bryant.
There might be some utility in learning frameworks that alter programming languages that were already created for specific purposes, but in the end, I will always argue that it is so much more important to develop a deep understanding of the fundamental aspects of a programming language and that doing so is crucial for excellence in coding and for maintaining a healthy and robust software ecosystem. Add-ons might be useful for specific tasks, like pandas for Python for contextual enhancement, but not replacements for the fundamental languages themselves: not for open science, for learning, or for a healthy software ecosystem.
Bashing Bash
There are legitimate criticisms against writing complex programs in Bash, but when it comes to working with text in files, using bash with other languages like sed and awk seems to me unrivaled.
Background: I spent some time rewriting the code I use to automate posting to this page. I thought I'd rewrite the code in Python, and while I have most of it working, it is so much more verbose and unwieldy than its bash counterpart.
Plus, languages like bash, sed, and awk are much more stable than Python and its various dependencies. I already can't count how many times I've been burned by a dependency update that breaks code in Python or R.
Older Friends
Like the idea of learning styles, I find generational labels highly annoying in their stickiness because they are misleading and unscientific. But that doesn't mean that that we don't share experiences, cultural touchstones and life stages with people our own age.
I am therefore happy that I am making acquaintances with local people of my own age. I find a special joy in this—in spending time with these folks, and I am very surprised by how much I wanted it.
First In First Out
I was a line cook for nearly two decades. It seems like a lifetime ago. By the end of this year, I'll have been out of restaurants longer than I was in them, but I still have some of the old habits.
For example, perhaps because of decades of unloading delivery trucks, I still rotate food in the pantry and in the fridge when I add new groceries. First in, first out.
Other habits: I always keep a clean workstation, have my mise en place when I cook, and all my cooking dishes and utensils are washed and drying by the time the meal is on the table.
Water Temp
I take cold showers every day. I don't think I've missed a day in two years, and I have only missed two days in two in a half years.
This experience has allowed for neat observations. As an example, it becomes clearer how the cold water temperature markedly changes throughout the year. It's usually in October when you feel the water temperature get much colder. There's like a day when that happens, when the water feels more biting than it did the day before. It's a really wonderful experience.
Today, that happened in the other direction. Today it felt like the water was less biting than it was yesterday.
There are other changes. My sourdough bread, which I make about five days a week, started to rise much more quickly than it did throughout the winter. This is even though the temperature inside the house is not really much different than it was when I had the heater on.
We're technically a couple of weeks away from the start of spring, but I like how I feel how seasons change differently and more personally through these experiences.
On Interviewing
Pro-tip: If you're interviewing for a job, it's good advice to do your research on the place you're interviewing. It shows that you can prepare, do basic research, and are interested in the place.
Also, when the people interviewing you ask if you have any questions, have some questions.
resize
I use the alacritty terminal. I can zoom in and out in alacritty (change size) like other terminals with ctrl +/-.
However, I'd mostly rather change the font size directly. To do that, you edit the $HOME/.config/alacritty/alacritty.yml configuration file. For example, to change from a 13 point font size to a 14 point font size, you change 13 to 14 in the config file: size: 14 from size: 13.
Rather than open that configuration file, I wrote a little bash script to make it easier:
Now, to do something like change the font size to a 14 point, I only have to type something like:
resize 14
Phones Down
I walk to work, and I get to see lots of people driving. I'm worried, upset, and angry by the many people I see with their phones up and often near their faces as they drive. It's dangerous and stupid.
Put your phones down.
syslog
Last night stuff on my computer started to break in a weird way. The laptop fan started to run at full blast right as I was walking away from it to take my children some where. I didn't think anything of it, but when we returned home four hours later, the fan was still running.
After investigating for a bit, I found that Firefox was using over a 100% of a CPU core and that /var/log/syslog had grown to a 120G with errors related to Firefox on Wayland.
I cleared the syslog file with:
sudo truncate -s 0 /var/log/syslog
And then edited /etc/logrotate.d/rsyslog to prevent the syslog file from taking up so much space in the future. I also found that someone had submitted a bug report on this exact problem to launchpad.net. I added a confirmation to the bug report.
In the meantime, I'm switching to another browser until this is resolved. This is unrelated to the bug, but I prefer Firefox and yet it's becoming increasingly clear that this is a Chrome-based world. I'm starting to think that I might have to make a permanent switch because many websites that I use for work are not as functional with Firefox as they are with Chrome-based browsers. I dislike that, a lot.
Breathe and Sleep
My daily breath work exercises include coherent breathing, 4-7-8
breathing, and Hof breathing, and they've all done me wonders in their
own ways. I credit these excersises and daily cold water immersion with
avoiding getting sick, despite living with three children, all of whom
have had a rotation of the regular illnesses, since October 2021.
However, I sleep terribly. There have been a couple of times since
October 2021 that I felt like I was going to be unwell. Even though they
were momentary, and I always ended up feeling fine after a short bit and
some breathwork, each time directly correlated after a string of nights
of very poor sleep (like three to four hours of restless sleep each
night for several nights in a row).
Last week I had a medical checkup, and we discussed this sleep
problem. Instead of medication, which I didn't want, I was encouraged to
keep a sleep diary to help me focus on my sleep hygiene. I think this is
a great idea. I'm going to get a grip on this and learn how to sleep
well in the coming weeks and months.
Database Interfaces
Hey bibliographic vendors (e.g., EBSCOhost), my students really care
if the interface to your bibliographic databases look like they are from
the 1990s.
I care too. Please update.
The Word
Today I learned the definition and history of a word that I first
heard in 1992 from my college English professor, Professor Watson.
Thirty-two years later, today, I was reading a book that suddenly
introduces this word and discusses it at some length.
Finally.
No dictionary ever provided a satisfying definition.
Alternate Computer History
I like to imagine a world where computing developed differently.
In this world, there would be a focus on a static web and on command
line applications. We would spend more time learning about our computers
rather than engaging the web. Computing would prioritize simplicity and
efficiency. We would acquire a different form of digital literacy in
this world.
Command line skills would be more important in this world. We would
start early in developing skills with scripting languages.
The web would be composed of static pages and would prioritize
content over form. Websites would serve more as repositories of
information rather than the dynamic, interactive, and bloated platforms
of today.
Digital aesthetics would lean towards minimalism and functionality.
My text based web browser would excel in this world. Hardware would
become obsolete at a much slower pace.
Social interactions on the web or the internet would occur through
forums, chat rooms, and BBSes. This would change the social nature of
the web or the internet, and may even be more slow-paced.
Computer resources could be devoted to other tasks rather than
rendering bloated JavaScript websites.
Education in computing would be more rooted in understanding the
underlying OS through the command line. There would be, I imagine, a
stronger emphasis on computational thinking and problem-solving. Perhaps
this would result in a different approach to teaching programming and
computing in general.
Site Change
For the foreseeable future, I've decided to migrate this site to a
new URL:
cseanburns.github.io/csb/
The Move
I started working at my job over ten years ago, and I've been in the
same office the entire time.
For years I have been thinking that I should move to a new office.
Finally, last semester, I asked to move across the hall. It's a much
smaller office, and I lose windows, too, but I think it'll be a good
move.
Still, I'm weirdly emotional about the move. Ten plus years is a lot
of history. It's a lot to witness.
In other news, I noticed that this is my 200th post on this page and
that it took nearly three years to get from 100 to here.
The Thaw
Yesterday snow crystals fell from the tree and scattered through the
air, reflecting the sunlight, and it was really beautiful.
Today the temperature is above freezing. The other side of the block
thaws first since it has more direct sunlight. It's been interesting
living in one place for so long and to be able to observe this pattern.
It's the little things, like that, that make me feel like this is my
home.
Frozen Doors
It's two degrees outside. The children had lessons this morning, but
we weren't sure the studio was open. Two snow days this week.
We were running late, too. The car doors were frozen shut. The frozen
doors proved to be the deciding factor. Defeated.
Winter Walking
It's been a good couple of days walking to work and back in the
snow.
Winter 2023 / 2024
I want to be more intentional about what I want to do this winter.
One of my main goals is to spend as much time outside as possible. So,
here's a list of winter 2023-24 things I want to do:
take my daily cold water immersion in outside tub
go on long bike ride
go winter camping
go winter hiking
clean up backyard vegetation (maybe start a flower garden?)
I also want to see if I can make FreeBSD my prime operating
system.
Screen Recording
I need screen casting software to record videos for my classes. The
problem is that I use the Sway window
manager and Wayland, but ever since the switch from i3 and X11, I have had trouble finding good
screen recording software. OBS Studio is great, but it often crashes in
Sway (but not in Gnome).
I'd prefer to stay in Sway, and I found wf-recorder,
which works great. However, sometimes I need to pause the video when I
am recording. Since wf-recorder is a commandline program, I
can't just hit the pause button.
But, ctrl-z works perfectly! When I'm ready to
unpause, I just type fg to bring it back up.
I invoke wf-recorder as screen_rec, which
saves the recording in my home Videos directory,
screen_rec is called by the following function in my
.bash_functions file:
screen_rec() {
if [ -x "$(command -v wf-recorder)" ] ; then
cd "$HOME/Videos" || { echo "Videos directory not found"; return; }
wf-recorder --audio
else
echo "wf-recorder not found or not executable."
return
fi
}
On Classification Systems
Every classification system shares one trait: universal
dissatisfaction.
An Insight
As I finished reading Never Let Me Go by Kazuo Ishiguro, I
was struck by this passage:
You and me, right from the start, even when we were little, we were
always trying to find things out. Remember, Kath, all those secret talks
we used to have? But Ruth wasn't like that. She always wanted to believe
in things.
I can't help but think how simple but big that observation is about
people in general.
Reading Music
One of my younger children made leaps today in reading music during
their lessons. Their instructor and I were teary-eyed. It was a
beautiful thing to witness.
Groff Docs
I am reading the groff
manual for fun. Also, because I want to learn more about how to use
groff.
I'm endlessly fascinated with document formatting. It's the whole
reason I started using Linux in the first place. Back then, I was trying
to find something to mimic WP 5.1. What a world Linux has opened for
me.
FreeBSD on the Laptop
I've long considered switching to FreeBSD as my main OS, and I
decided to make a go of it. I'm using a ten year old System76 laptop for
testing. So far, I've tested parts of my workflow, and it's gone well.
There are still a few things to investigate before I can make the full
switch. Perhaps more on that later.
FreeBSD is a nice experience. The OS is much cleaner and more
rational than Linux. Others have written about this, but long story
short, I'm digging it.
This post was written on my FreeBSD laptop.
Hiccup: The Bash script I use to automate deployment of these posts
is, it turns out, not *BSD friendly! I'll have to think about what I
want to do with that.
Learning and Identity
People really want to say that they are X kind of learner. I was
talking about what we really know about learning in one of my courses,
and how there's no real support for the idea that matching instruction
to so-called learning styles improves learning outcomes, and
people still want to say that their style is X.
That learning style mumbo jumbo really sticks. I suppose it's
because people are desperate to latch onto anything that offers an explanation
of who they might be and that highlights their uniqueness, and learning
styles offers something that sounds like a scientific explanation, as
opposed to a pseudo-scientific one (cf., astrology).
Friendships in Academia
One of the coolest benefits about working in academia is that you get
to know people who do cool things, like become novelists.
Thus, I'm excited that my old friend has published a novel: Straw
Dogs of the Universe / Ye Chun. It arrives at my doorstep tomorrow.
Pass it on!
Winter Bread
Last winter when I was baking my bread, I'd make the dough in the morning, and let it rise all day. Before bed, I'd shape the loaf, and place it in a cast iron dutch oven. I'd place the dutch oven in the fridge for the night. I'd leave the starter out overnight, too, so that it would be ready in the morning. I'd pull the dough out of the fridge in the morning, and bake it.
When the weather warmed up last spring, I had to change the timing. I started the dough later in the morning or early in the afternoon. The starter would not be pulled out of the fridge till the morning, either. The warmer weather simply changed the entire workflow.
The weather is cooling, and it took me a couple of days to recall that bread making is seasonal, too.
A Decision
I started taking daily cold showers over two years ago. It's always a glorious experience, but it's also always a decision every single time. A big part of me likes that it is a decision. That, even though it is a habit in a way, stepping into the cold water is a daily choice, always intentional.
The Graciousness of Others
The other day my friend and I were on a walk. We passed a guy cleaning his jeep in front of his house, and I mentioned how nice his jeep looked and said something about not ever driving one.
Then he said, "The keys are the ignition, go ahead and take it out around the block."
I didn't take him up on the offer, which he repeated again before we left and after chatting for a little while, but he was sincere, and it was pretty cool.
The Accused
The other day I took my children to their ballet lessons. I had all of them, but only the older ones had lessons that evening. I prepared dinner ahead of time, to eat between lessons, and since it was a very nice evening, the youngest one and I headed out to the van to eat.
The van back door is wide open, and the little one is eating in the back of the van and we're chatting. There are people in the car parked next to us, and they are getting ready to leave. Another car pulls up and blocks our cars. This new car has tinted windows, so I can't see inside.
At first I think that the person in the new arrival is about to turn into a space, but they just idle there, primarily behind my car but far enough ahead to block the other people. I get a bit nervous, because there are lots of spaces in the lot, and it makes me wonder what their intent is.
Finally they roll their passenger window down. There's a woman. She starts yelling at me.
What are you doing with that kid?
What do you mean what am I doing with this kid?
I said, what are you doing with that kid?
What do you mean?
Her voice gets louder and her face angier:
What are you doing with that kid?
What? Mind your own business.
It's my business if you're doing something wrong with that kid.
I'm her Dad. Drive on.
She glared at me for a minute. The people parked next to us were waiting for her to move out of the way. Finally she drove to the other end of the lot, rolled her window down, and watched us. I took my child into the studio, and we waited there for the rest of the evening till we could go home.
Waiting for the Rain
The house next door was occupied by short term renters for three months. They had several children who were all around the same ages as mine. And so for three months, and for the first time since we have lived in this house, we had wonderful neighbors and lots of play dates with people next door.
The neighbors had to leave for their next job last week, but before they left, the children used sidewalk chalk to draw on the driveway. The drawings are still there, a remnant of the last three months with these wonderful neighbors. The rain is coming, though, and soon those drawings will be washed clean.
A Jarring Scene
I witnessed a student yesterday in the crowded, bustling campus cafeteria reading a printed book, and I was struck by the jarring experience. I thought I might see a payphone, or a carburetor lying around, or a smoking section, since I was obviously time traveling.
Old Friends and New
Last night I had dinner with old friends, and a new friend. The food was good, and the conversation was positively inquisitive. Then I went for a long walk with the new friend, at a park, during dusk. It grew too dark for us to be confident of the way back to the car, which felt adventurous.
A Delight
The Book of Delights by Ross Gay is a wonderful read.
Perhaps the book placed me in a good frame of mind when a friend texted me that their friend was going to be at the art fair down the street last weekend and was texting me, and not the friend, because the friend's phone wasn't working. There were like thousands of people at the fair, and I thought, without their phone, how would I find them? And the thought of looking for them, with my own children in tow, amidst that sea of people, made me laugh with delight.
On Hold
This is the process. I review a list of recommended or best of books on some website. I look the ebook up using my public library. It's inevitably checked out to someone else. Put book on hold and search for another book that was listed on that some website. It's available. I check it out, but I don't read it quickly enough. The book on hold becomes available, and since I'm facing a due date on the current one, I select 'deliver later'. By the time I am ready for the next book, I can't remember how I learned about it. It becomes like a surprise book.
Sourdough Bread
I created my first sourdough started in 2001 when I worked at a small cafe. I remember it being very delicious and used it to make all sorts of bread for the restaurant. It lasted less than a year, until I moved on to a new restaurant far, far away.
Last summer, because my children goes through so much bread, I decided to create a new starter and bake bread again to save some dough (ahem) and just to have really delicious bread. It took a couple of months to get the baking process nailed down, but it's turned out great. The crust is superb, dark, chewy, and the sourness comes through sharply but not overly so. The house smells great every morning, which is when I normally bake it. I'm making a loaf about five or so days a week, which is fine because it means I don't have to discard starter ever.
Oftentimes, five or so loaves a week is too much, but that's okay. I like give the extra loaf to a friend or colleague. Yesterday I knew I'd have an extra loaf today, and so I took today's loaf to my neighbor. I really hope they enjoy it. They seemed really excited to get it, which made really happy. It's like my favorite gift to give.
Lunch, Shopping, and a Movie
Today was a special day with one of my children. For the rest of my life, I'll see them sitting across the table from me. My loves.
Back to i3, Again
My prior laptop was seven plus years old, and my work offered to provide me with a replacement. I requested a system76 laptop, and I really enjoy it and their version of a tiling window manager.
But then I logged into i3 again, and it's just so fresh and clean. Back to i3.
Automake
I use a set of scripts to automate publishing to this page. For fun, I wrote the scripts using a lot of ed commands, and now I want to update the scripts using a more manageable language and workflow.
I started reworking the scripts by asking ChatGPT to create a Python script to handle the process. The code it produced looked fine, on the surface, but I didn't give it a chance. Instead I thought I'd implement the existing Bash scripts with a Makefile. I described the list of scripts that I used to ChatGPT and asked it to create a Makefile for me. We went through several iterations, but it didn't pan out. To get a functional Makefile working, I realized that I would need to change how the project folders are organized and change how variables and arguments are used in the Bash scripts. As an aside, ChatGPT highly discouraged me from using ed commands (haha).
In the end, I started rewriting the scripts using mostly sed commands. There's still some ed commands to scrub, but when I'm done, I should be able to write a simple Bash container script that will call the other scripts as dependencies.
In the end, I asked ChatGPT 25 questions for this exercise. Even though it didn't pan out, it's a far more enjoyable process than conducting a bunch of web searches.
Summer 2023
Summer to do lists.
Work:
finish and submit title paper
finish and submit syslib paper
setup erm/syslib research project for fall
update fall courses
Personal:
finish teaching youngest how to ride a bike
ride bikes with children
take children to pool often
read three books, at least
continue slow jogging
On Transitions
I thrive on routines. Transitioning from fall semester to spring
semester and to the summer feels disruptive every time. I need to figure
out a way to smooth these transitions over.
No More Podcasts
I removed the podcast app from my phone and decided to start
listening to music more. I enjoyed podcasts, but I want less information
these days, and I want to feel more. Music helps me feel.
I'm maybe back after a break, if I can
remember how I automated posting here.
Back to the Books
I read 25 books for my own pleasure in 2021, and it was great.
But dang it, I haven't completed a single book in 2022. That's partly
because it's been a fairly disruptive few months, but it's also because
I started watching the GOT, which is great but also exhausting and
brutal. I was at a faculty council meeting yesterday, and I couldn't
help but project GOT themes onto the meeting, with all the discussions
of battles, diplomacy, etc. It was kind of hilarious.
I've nearly completed the GOT series and picked up a short book to
kick start the habit. I won't read come close to 25 books this year, and
that is okay, After GOT, I'll take a break from TV and refresh the
spirit with literature.
On Vulnerability
I'm experiencing some emotional vulnerability, and I've decided to
handle it like I try to handle pain, which is to say, to appreciate it
for what it is, for what it means, and for what it allows.
Plain Text Research
I submitted a juried paper proposal to the ALISE 2022 annual
conference on the topic of ungrading. Since this is a solo
project, I was able to use a plain text research
workflow. Essentially, I wrote the paper in markdown, added
citations using the ZotCite plugin for Vim, versioned the file with Git
and added it to a GitHub repo. It was a
really enjoyable process.
When the paper was about ready, I used my Bash function to convert the file
to an ODT file (see first link above) following the APA style guide. I made
some minor style edits to conform to the conference guidelines for paper
proposals and removed some library proxy URLs. Then I submitted it as a PDF
file, which I exported from LibreOffice.
Sometime in the early 1990s, my religious studies professor lamented
that we, as a society, avoided discussions on sex, politics, and
religion. I think he was sad that we didn't talk about these topics
because we didn't know how to talk about them. I agree. Today these
topics seem to be all that we talk about, even though we seemed to not
have learned how to talk about them.
731 Days
March 13, 2020 was 731 days ago. Today marks two years since the
first day of quarantine.
I mainly remember the faculty meetings we had on the 13th. That means
I'll always remember that it was a Friday.
I remember thinking this would be a two-year event simply because the
1918 flu pandemic lasted about two years. But I really had no way of
knowing.
I read today that another wave might be forming in Europe. If so, I
believe this would be the sixth wave.
We're largely behaving like it's pre-pandemic days now, and that might be
okay for most of us who have taken advantage of those tools that reduce our
risk and are fortunate to have those tools available to us. But it's still
a hazard for many in the world.
I really don't want to forget how surreal it felt then, before we
knew the Illness was transmitted through the air rather than via
surfaces.
And how sad it was after quarantine time kept going on and on, for my
family, and for others too, especially those who lost people.
I remember the Governor's daily briefings. I kept my own log of deaths and
hospitalizations, emailed from his office, in order to examine the data myself.
But it wasn't eye opening. The data seemed too messy. Instead, it was just
tragic, all those deaths and hospitalizations.
My youngest was still a baby when the pandemic struck, but they were
eventually full toddler and walking and being toddler funny within a year.
I was able to witness that for my two older children but probably way more so
with the youngest.
There were momemts of joy. The streets were void of activity. Like liminal
spaces. But that made them fun to take my young children on bike rides around
town. It felt safe but also grand, and my second oldest learned to ride during
this time period.
We've long cut our own hair in our household, but in those early months, we
made some bold choices with our hair styles.
The world feels like it's falling apart still, but I also like to remember
how supportive people seemed to be of each other in those first few months. It
didn't take long before it was all politicized, though. I don't miss that.
I remember there was loads of fear, and that for some, there still is. The
other day I was walking home. A man was walking in my direction. He was wearing
a mask. As we approached to pass each other, he scooted so far from me that he
almost fell into the bush adjacent to the sidewalk. I was sad for his
trauma.
As usual for early March, we received some snow after a couple of
weeks of spring-like weather. I took advantage of it and started
Saturday and Sunday mornings with seven and six rounds, respectively, of
Wim Hof breathing. I usually only have time for three rounds during the
week, so it was nice to go longer and deeper. I wanted to go seven this
morning, but six was hard to complete because the little one kept
jumping on my belly.
Afterwards I went in the backyard wearing only a pair of shorts and
flip flops, and stood there for ten minutes. It was 21 degrees on
Saturday and 26 on Sunday morning, but seven degrees with windchill on
both days. When ten minutes passed, I went inside and took long ice cold
showers, which felt warm more quickly than usual, and finished with hot
water, which felt kinda okay but not as fantastic as I anticipated.
Months ago I got to the point where I thought I enjoyed cold showers
more than hot showers, and somehow, in my experience, hot showers
started to feel a bit gross and slimy. But it's still a mental effort to
make the switch permanent. My brain still says that I don't want to be
in the cold, even though it turns out great every single time.
Second mdBook
Following up on my post from yesterday, I used mdbook to
create an ebook out of my lectures and notes from my Linux Systems Administration
course.
This book and my electronic resource management book are very rough
drafts, but I plan to complete and polish them up during the fall
semester when I teach these courses again.
First mdBook
I have lectures and extensive documentation for all my courses. They
are all written with markdown and versioned
controlled on GitHub. I've finally gotten around to using mdBook to create my first
markdown generated book. It's still an early and rough draft, but I very
much like the outcome so far.
So throughout this year, my plan is to use mdBook to create books for
the rest of my courses out of the material I've written for those
courses.
Let's say you're visiting a friend, and you spend a few hours at
their place. It's a good visit, but you forgot something in your car.
You say, "be right back," then you run out to the car, and you re-enter
the house without knocking. That should be fine, right?
Or, let's say it's someone close that you're visiting. It is, in
fact, someone you visit quite often, maybe even a family member of some
sorts. But otherwise, it's the same scenario: You forgot something, get
it, and return and re-enter the house without knocking. That should
still be fine, I would think.
In any kind of situation like this, how long can you leave before you
have to knock again? Or is it not (only) a matter of time but also of
the in-between events that take place? Like the things that may happen
between stepping out and returning? Or is it whether there is closure
when stepping out?
Anyway, these are rhetorical questions, but they are ones I feel like
I'm facing, albeit in a much more abstract way.
On Disruption
On top of what was already a fairly disruptive couple of years, these last four months have been kind of insane.
And, there's still work to do to get back into a routine. It's been so non-routine lately that I am drooling for mundanity right now.
But the last four months have also shown me how fortunate and grateful I am for what I have and for who I have.
I have an aunt, my oldest one, has always been kind of a mystery to me, largely because I've known her a bit less than some of my other extended family. But recently I got to ask her about a time in her life that was legend, and I'm so glad I did.
I won't share her story here. It's her story. I'll only say that she is as magical and as cool as legend hinted.
Smaller in the World
We went someplace today that is quite historically significant, at least in the US. And it struck me, as I almost walked past it, how geographically small of an area the place occupied. But, it helped to see it. It made sense of the historical narrative that I knew. I think that says a lot about how we mentally model the world when that model has largely been shaped by mediators.
On This Day
The kids and I went on a four mile hike today. They climbed trees, traipsed through the bush, played in river mud, and the little one fell asleep in the stroller shortly before we returned to the car. When we got home, the two older children went inside. I sat in the car with the little one, who napped.
Posting Here
I've blogged off and on since blogging was a thing, but it never stuck. I think that was because I've despised every blogging platform that I've ever used. The platform matters for such things. The closest I came to liking a blogging platform was when I used Octopress to log my reading of The Library Quarterly. Octopress was fun to use for a while, but as the posts accumulated, it became annoying to rebuild it every time I added more. So I put all those posts on my wiki and gave up blogging for the nth time.
Even though I didn't stick with blogging because I disliked the available platforms, in my moments of doubt, I wondered if my failure to keep going indicated that I didn't have a voice, or something to say. That really bothered me at times. But of course I have a voice, it was simply that the toolchains and the platforms I used never matched my voice. This toolchain and this platform I've created to post here are my expressions, too. I think that is why I write here about the process of automating this site. It was as important to develop the site to post here as it was to post here for me to keep posting here. Haha!
But even so, I created this page about a year before the March 2020 lockdown, but I only added 16 posts to this page in that first year. In the last two years since lockdown, I've added 140 more, or about 4 posts per month in 2020 and about 7 posts per month in 2021. I don't know what that means. Except to think that, besides the pandemic, other big things happened in those last two years. I don't write about them here. A vast majority of what I put on this page is superficial, I guess. But I think, maybe, it all left me a bit reflective.
On Trust
I gave the toddler a bath last night, and as usual, when I asked her to lay her head back, she was scared to go under the water. I've taught the two older children how to swim, and it was the same in that setting, too. They have all, at first and for a while, been scared to put their heads under the water. And this is despite that I hold them all when they take a bath or learn to swim.
This fear struck me as odd because when they are scared of something in the world, they will come and hold and hide behind my legs. So I had thought that they see me as someone who would protect them. Who they trust themselves to. But this water thing made me realize that, even though I am their father, that trust is not absolute. That their fear of going under the water is greater than their trust in me to protect them. Instinctually, at least.
When it first happened, with my oldest, and then my middle child, I have to admit, I felt a little hurt. I thought, "why doesn't this child trust me completely?" But over time, it made me, not happy really, but in awe perhaps, that I have to earn their trust. And I felt proud that it wasn't given to me completely without having to earn it.
This lesson made me realize something about earning trust among other people, too. In fact, I don't think I ever understood trust before becoming a parent for a long while. Maybe not even until very recently.
Automating This Site
I've added a page to this site detailing how I post to this page using a series of bash scripts.
I wrote the scripts to convert the original markdown file into an HTML file, modify the HTML file in specific ways, insert the HTML file into this page, create a table of contents item for this page and the homepage, create a RSS entry, insert that entry into the index.xml file, and then deploy the site to the remote server.
It's nice to have this all done, but I'm sure I'll keep polishing these scripts.
Re-reading Thomas Merton
About thirty years ago, I devoured Thomas Merton's works. I even wrote a (bad) thesis on him as a student fellow at the Newberry Library in Chicago. But I haven't read or re-read anything of his since the mid to late 1990s. I tried some years ago, soon after we moved to Kentucky. I thought being in Kentucky, not far from his abbey, would be inspiring. But I couldn't get back into it.
I don't know why his writings became so inaccessible to me. Why does that happen? Why does a book or a thought or a way of thinking become distant? In this case, I don't think it has anything to do with Merton. I think something changed with me around the turn of the century. (I have some ideas about what happened.)
Maybe I'm ready this time. It feels like it's getting closer.
Obsession
A couple of days ago I posted here that I had nearly automated the site. If you are reading this post, then it means that I've fully automated the site. I think this is called obsessing. Anyways, now I can write a post in markdown, and then run some commands to process the site and copy it to the remote server.
My approach has me cracking up a bit because the scripts (all five of them plus two functions stored in my .bash_functions file) are pretty ridiculous in some ways. Most of the code draws upon the following:
ed
sed
various bash utilities
All of this would likely have been a lot easier if I had used JavaScript in a lot of places, but I really, really wanted to use ed(1) as much as possible, and I really, really want to avoid using JavaScript on this site. It was tricky, too, because I had to use ed(1) to insert text in the middle of lines. Since ed(1) is a line editor, that's not something it was really meant to do. But I did it, and I learned a lot.
Here's an example script that primarily uses ed(1) to add additional HTML elements, attributes, and values to an existing HTML file:
#!/usr/bin/bash
# Original date: 2022-01-28
# After running ``makepost`` (in .bash_functions), which will convert the
# markdown file into an HTML one. This ed(1) commands below add some additional
# HTML elements etc to make the post ready for the main index.html file.
# Usage: ./make-article post-name.html
post="$1"
ed -s "$post" << 'EOF'
0i
<article id="
.
1r !date +\%Y\%m\%d
1,2j
1a
">
.
1,2j
3s/[0-9]\">/\
&\
.
4r !date +\%Y-\%m-\%d
4a
<time datetime="
.
6a
">
.
8s/<\/h3>/<\/time><\/h3>
3,8j
$a
</article>
.
wq
EOF
The code is super specific to my site, but I could probably generalize it someday as a flat-file blogging application and then make it available as an open source project.
I'll write a separate page about the scripts and post a link to that page on my homepage, which needs more clutter.
New Site Redesign
It was time for a site redesign. I'm teaching a web development course this semester, and working on that course inspired me to do something fun with this site. It may be less attractive than the prior version, but I like the busy-ness of this new look. In fact, the goal for this current version was to mimic, at least on the front page, those old Pennysaver-like ad rags that were fun to skim through. I think those things were fun, in part, because they contained so little white space. They screamed abundance. I plan to add more on the front page to fully realize that look.
I also updated my automation scripts (see GitHub repo) for this site:
I updated the WWW-toc-generator script because I have a table of contents in two locations now: the home page and this page. The script therefore needed to insert the most recent entry in both places.
In the prior version of the make-rss script, I used the xmlstarlet program to parse and extract values for the RSS feed from this index.html file. It's bothered me to depend on xmlstarlet. It's a nice program, but I wanted to rely on the fundamentals. So I finally did some digging and figured out a way to use GNU grep to replace it. make-rss is still quite a wonky script, but it's more interesting now, I think.
Finally, I crossed off a big item of my to-do list. In the past, my make-rss script would simply generate the XML I needed for my index.xml (RSS) file and store it in a temporary file. To use that XML, I'd manually insert it into the proper places in index.xml. I wrote a script, insert-xml that would automate that process. The script primarily contains ed(1) commands.
Since I write these posts in separate, markdown files, the last item to accomplish before this site is fully automated is to write a script that will insert new posts in the proper place of this index.html file. Once I get around to that, whenever I write a new post, I will be able to type one command to process the site and copy it to the remote server. Almost there!
High School
The other day I reunited with one of my closest friends from high school and also my favorite high school teacher, and it was marvelous. My former teacher gave me a top ten lifetime hug, and I cried a bit.
My former teacher is now 80 years old and is as sharp as she was 31 years ago. She remembered my Mom's name, my siblings' names (even though they never had her as a teacher). She recounted old stories, some of which I had forgotten.
She told me that, not too many years ago, she and her partner were once driving through Illinois when she saw a sign pointing to Monmouth, and she told her partner to take a detour there. She wanted to see where I went to college. She told me that she saw the building where I worked my first year as, among all things, a boiler room attendant. That I had such a job made her laugh. My task was to sit in this boiler room in a football field size basement on Friday nights from 11pm to 7am, and watch the pressure gauges. If the pressure got too high, it meant a boiler was going to explode and I was supposed to call someone. I had homework and a 7-inch black and white TV that picked up one station, but mostly static, to keep me occupied. I'd watch Friday Night Videos and nod off to sleep when the station signed off for the night.
I went to college, and that specific college, because of that teacher. One of my favorite authors is someone she told me I would want to read. I was in the speech club because of her, and on the debate team. She was a critical reader of my homework assignments. In 1987 she taught me my first lesson: not to spell "a lot" like "alot". I don't know why that memory stuck, but to this day I can't write "a lot" without thinking of her.
We talked about that time period and the people then. We talked about all the debate tournament shenanigans we caused in protest of the new trend in speed reading (spreading). It didn't help calm our passions that the teams employing this distasteful practice came from the wealthy schools. I once walked out of a debate because of that foolishness. She remembered it all, and we laughed.
She created those kinds of opportunities and made those kinds of introductions for me and for countless other students during her career, including my close, beautiful friend who arranged the reunion. We all came from pretty humble, and sometimes frightening or challenging backgrounds. It was a very marginalized area of San Antonio, but I couldn't tell you how many PhDs, MDs, and other teachers came out of my class alone, because of her and a few other amazing teachers. I couldn't imagine how many lives she made better in her decades long career. People love her. I do, too. A lot.
Thank you for being in my life and for shaping so much of it, Ms. Bailey.
Reading Patterns
I've noticed that I do not like to read nonfiction lately. My last book before the new year was a work of fiction, and I finished it fairly quickly. Then I picked up a work of nonfiction, and I barely touch the book even though it's a good book by someone I really like.
The last time this happened I had to abandon the nonfiction work and take up a work of fiction before I started to read consistently again. In fact, this has happened several times. It's been hard to get through nonfiction.
Maybe I just want stories. I stopped reading fiction for a few years, and maybe I starved myself of something by doing that. I'm enjoying the change, though. Feels like my old, pre-grad school self in some ways, when I used to read a lot of fiction.
Semantic Line Breaks
I learned about semantic line breaks today. This might be a game-changer for me and my use of the ed(1) text editor, along with a markup language like markdown. See the link to read more.
The goal with using semantic line breaks is to make it easier to revise text with ed(1) (or any other editor) since it means using easier commands to edit the text.
I first learned about using shorter input lines a few months ago when I was reading about troff. But I was visually turned off from the idea because the examples I saw were difficult to read. Using semantic line breaks should solve that problem. I am using them now to write this post, and I can tell it will take a while to get used to but that it might be worth it to explore.
Something New
The SSL certificate for this site needs to be renewed soon, and the price is getting a bit expensive. Because of that, I'm thinking about nixing this domain and either 1) not having a website or 2) using GitHub to host the non-wiki part. I'll probably do the latter, but we'll see.
Regardless of (1) or (2), I'll host the DokuWiki part of the site locally on my desktop. The wiki has been a useful note-taking tool, but I'm okay keeping it local.
Rejuvenate
About once a year I grow bleary of using computers for creative or like purposes, and this year, it's that time of the year. I can tell when the feeling begins. It begins when it feels like my brain turns off simply by sitting in front of my computer but wakens back up when I walk away. I sometimes try to push through it, but I'm getting better at recognizing it and stepping away for a while.
So, time to rejuvenate.
On to 2022.
My Friends
There are people that I think about everyday and would like to see everyday but that I don't get to see anymore. I love and miss you.
Lately I have been thinking about people I haven't thought about in ages. Memories are coming back, and it's nice to recall.
I feel like I've had a lot of lives in my nearly 50 years. I feel very fortunate for that even if also a bit sad.
'Peace and long life,' and love to you all.
On Papers as Assignments
I don't ask students to write essays or papers in my undergraduate classes, and that's mostly because they are not those kinds of classes.
The graduate courses I teach are those kinds of classes, but I want to think about them differently. So, in addition to ungrading, I'm going to start replacing paper assignments with other kinds of assignments in those classes. I had implemented this kind of change a while back but not fully. I have some ideas about what to do instead of papers, and I'm looking forward to seeing how it'll play out next semester.
I also am completely rethinking the undergraduate class I teach in the spring. I meant to have that revision done way before now, but it looks like I may not get it done until right before the semester starts.
As an aside, I can't believe it's almost 2022. That seems weird.
On Smiling
Someone smiled at me yesterday as they waited on me to finish parking my car so that they could get to theirs, which was adjacent to ours. When they smiled, I gotta tell you, there was something about it that was so unbelievably pure and good. It just lit me up and filled me with great joy for a moment.
This is the third time I've seen this kind of smile in my life from a complete stranger. The last time was over 20 years ago. Like those, I'll probably remember this one for a long time. Thank you whoever you are, and I hope you smile like that for always.
Breakthrough Case Update, Day 10
Feeling much better. Still have a bit of a cough, but it feels like it's lessening. Last time I posted, I felt the cough becoming a chest cough, and I wrote how I re-engaged with the breathing technique that I'm following. It seemed to do the trick. The cough feels like it's due to a nasal drip, and it does not feel like it's migrating down to my chest. In the past, when I've had coughs become chest coughs, it would take forever to heal. So things appear to be looking up.
By the way, I meant to add this last time, but my sense of smell started to return at about day 7 or so.
Breakthrough Case Update, Day 6
Felt very tired today. Had a lot of work to do, too. Got through it. Slept for a little bit in the evening, which is why I'm still awake at 11:39pm. I'd like to be asleep now, but I'm thankful for the short nap. It helped improve my mood and sense of well being quite a bit. I was feeling rather depressed, in fact.
Cough has moved down to the chest. I hate that so much. I thought that the breathing exercises should have helped prevent this somewhat, and I've kept up with those exercises and cold showers. But I also felt like I had gone off track with the former. It felt like I wasn't doing them right. I wasn't getting the high-ish feeling nor was my breath retention long enough. I also wasn't relaxing when doing them. Could never not feel stressed.
So tonight I re-watched one of the how-to videos that Hof has on YT, and followed the instructions to the letter. Two things happened. First, it confirmed that I had gone off track. I wasn't relaxing enough nor was I really breathing in well enough. The video helped guide me back, and correcting these two things enabled me to lengthen my breath retention considerably. Second, after I re-learned the lesson and completed four rounds, my cough subsided substantially. I'll repeat the process in the morning before my next cold shower. If I ever feel like I'm going off track again, I can re-watch those videos.
Breakthrough Case Update, Day 5
Feel much better today. Didn't wake up with a fever. Did have lower back pain all night, which is not normal, and it meant a fairly sleepless night. It's better now, though. Got to go back to sleep after being up for a bit this morning, and that helped. Still a bit tired and beat up. Still have the cough, and my voice is hoarse because of it. It's a dry cough. I've had worse.
I want to think I'm coming out of this thing, but it's the day 5 and after period that I've wondered about. Just have to be patient, I guess, and try not to worry.
Breakthrough Case Update, Day 4
It's still about the same as it was a couple of days ago, but maybe a little yuckier. Yesterday and today I woke up with a very low grade fever. Still have horrible headaches, but ibuprofen makes them go away quickly. Still a cough. Still no smell. Breathing is fine, otherwise.
I was hopeful that since I've been vaccinated, that this would last only a few days; like when I get the flu, it usually lasts a total of 3 days. I'm now expecting this to last the reported ten days, and I'm guessing if the vaccine has had a positive effect, it's that it's limited the severity of this virus but not the duration.
I'm writing this all down just to remember but making it public in case anyone stumbles upon this and benefits from my experience somehow. Also, I was pretty sure I would get covid someday, and it feels like a big deal to me after having it hang over our heads for so long. Anyway, looking forward to getting through it.
Breakthrough Case Update
My second covid vaccine shot was on 5/14/2021--about 5 1/2 months ago.
I had a big burst of feel-good energy earlier today. It was right after a cold shower, and I wonder if that was the reason. I'm still doing my breathing exercises, too. Every day.
About an hour after the cold shower I laid down and slept most of the afternoon. I woke up about 6pm.
I can't smell any of the essential oils we have laying around. Or coffee grounds--I tried that, too. Nothing. But earlier when I was laying down, my partner was boiling water in the kitchen, and the water boiled away when she wasn't looking. I could sense the hot metal from the other side of the house. It felt like I could smell it. It felt like it went through my nose and into my stomach and it made my stomach turn. That made me realize that our sense of smell is complicated--like eyesight and blindness.
Other than that, I'm a bit tired, I'm coughing up mucous, and I still have a bit of a headache and a bit of a sore throat, which I think is from the mucous. I'd say that's not too bad given what other people have experienced. Here's hoping I'm on the mend.
The Inevitable Happened
I guess it's because of last Friday. My two oldest children participated in a ballet performance, which was held at the Opera House downtown. We were told that people would be spaced out and masked. I think most people were masked, but we were packed in there like sardines. But it may have happened before that. My oldest woke me up in the middle of the night around that time to let me know that they had a headache and weren't feeling well. So that could mean that the infection was earlier.
Anyway, I am a breakthrough case. So far, fortunately, it feels like a head cold, albeit a very strong and painful one, but that could be the massive headache, too. Other than that, there's a bit of a cough. I haven't had a fever or any chest issues, which I'm quite thankful about, and my children seem to be doing well, and I'm tremendously thankful about that. My wife got it, too, but she seems to be recovering.
I am looking forward to receiving a clean bill of health. I was not remotely prepared to work from home again on the fly, and that bites because it's the most intense and heaviest part of the semester. I guess it is what it is, though, and I'm making do.
Update: Lost smell :(
Groff and Troff
I started learning LaTeX a long time ago, within the first few years of using Linux. I liked learning LaTeX, but because I wasn't in school or higher education at the time, I mostly used it to create silly documents. When I did go to graduate school, I used it for it's intended purpose, which was to typeset papers. I also used it to markup notes in some classes, like my ANOVA class. As a result, I have ANOVA notes that look very nice and are very readable, I think.
It must have been around that time that I learned about groff, troff, and nroff, the document typesetting utilities that have been with Unix since the earliest of their days (well, groff is a GNU addition that came much later), but I didn't learn them at the time.
I already don't remember what motivated me, but I started to learn groff and the groff_mm macro a couple of weeks ago, and I love it. I mailed a letter to a friend the other day, and I used the man 7 groff_mm macro. This is a bit of what the source code looks like:
\" This is a comment
\" Set Writer Address
.WA "Sean"
Street Address
City, State ZIP
.WE
\" Set Addressee Information
.IA
Addressee
Street Address
City, State ZIP
.IE
\" Set salutation
.LO SA "Dear Addressee,"
\" Format letter as Semi-Blocked
.LT SB
.P
This is a paragraph.
\" Add an italic to a word in another paragraph
.P This is another
.I
paragraph.
.R
\" Set closing
.FC
\" Insert Signature Line
.SG
There's a lot more to learn, and I think I'll keep exploring. The system is very Unix-y, and I find that appealing.
On Forgetting
I do not have a good memory, and I am thankful for that.
On Ungrading and Learning
I have fully embraced ungrading this semester.
This has been my approach so far:
Assignments have due dates, but these are flexible. If students get behind, I make a point to communicate with them often. Regardless of how flexible my policy is, we still have an end to the semester.
I mark work as Complete (100%) or Incomplete (0%). Incomplete work is work that is unsatisfactory per the assignment requirements or work that hasn't been completed by the due date. In either Incomplete case, students can still submit or they can resubmit after revision. I encourage resubmission.
I provide lots of feedback on all assignments.
Final grades are calculated as the total completed work divided by the total work assigned, and also weighted by assignment type. This allows students to skip some (but not much) work and still do well in the course.
The process has really invigorated me, and I think it's been good for the students, too. And that's not just because I've removed grades but because I've forced revisions. I think I'm also getting quite a bit more responses from students to my feedback, and that's been super cool and interesting because it's spawned some conversations after completion.
The goal with all this is to center learning and decenter grading. Let's see how it continues to go.
Some Automation
I have an installation of Omeka that I manage for some colleagues who use it for a course they teach, but it's on a server that can't do email (long story, and I can work around it, but I don't want to). So the challenge has been how to create 50 to 60 accounts for students at a time. But because I used Omeka on a project a long time ago (the site is still running, but the link goes to a 2008 version, which is about the time we launched it), I knew that I could work with the MySQL database it uses. And so a couple of years ago I wrote a small shell script to help me generate SQL statements that I could use to create accounts. This saved having to do it manually from the Omeka admin interface.
However, I had only partially automated the process. It saved a lot of grunt work and time, but I still had to do some of the work manually (hey, it's not my full time job!). So each semester, I'd tackle a little bit more of that task, and I'm glad to say that I have it fully automated. After clearing out the previous semester's content and accounts in the MySQL database, all I have to do is download the course rosters, which are exported from my university as XLSX files, save those as CSV files, and then run the script. The script then generates three files of SQL statements. One SQL file creates the accounts, the second one updates the tables with salted passwords, and the third adds the salts for the passwords. Then I can source those files after logging into the MySQL database. The code is one of my GitHub repos.
It's an early version of the script, and I'm sure I'll come across a bug or two eventually, but it works perfectly now. The main bug I'll watch for is how it handles variations with student names. I think it's robust against that, but there are times when students have "Jr.", "III", or four or more names, and I'll need to watch for how it handles those. I also want to make it function-based too, which will make it easier to maintain.
I've had this on the back burner for a while, and it feels good to be pretty much done with it, maintenance and tweaks aside.
OpenURL
My university's library uses OpenURL and Primo/Alma's discovery service/link resolver to request sources via various bibliographic databases. Or more accurately, the university library uses Primo/Alma, which uses an OpenURL compatible link resolver.
Basically, the technology is meant to help library users gain access to a library's (usually paywalled) electronic resources (or locate items in the catalog). E.g., if you're searching on Google Scholar and you see a View Now @ [YOUR LIBRARY] link next to a search result, and you click on that link, then you are using, or triggering, a link resolver to request the source. As a library user, you have to add your institution in Google Scholar via their settings, but if you're using a bibliographic or citation database directly provided by your library, then it should be available by default.
Because OpenURL compatible link resolver technology is partly based on query strings, it's fun to glean all sorts of information by examining the URL: the query string component that contains the metadata for the source but also the base component that contains the vendor and institutional information and also the URL type. Namely, it turns out that Primo/Alma uses two URL types to request resources: a search URL and an OpenURL. At my institution, the base search URL looks like this:
The base search URL appears when searching the university's online catalog (or discovery service). However, the OpenURL appears only in transit between the original resource and before reaching the final source; e.g., after clicking on a View Now @ link and before being redirected to the full text version of the article that might be available at the original location (an open access location) or via the proxy location (e.g., EZproxy). Because the redirect happens quickly, I had to quickly copy my institution's specific OpenURL when I clicked on a View Now link before it redirected to the EZproxy page.
My students often identify great problems to solve or are the source of great ideas. One of my students in my electronic resource management class noticed that Zotero has a locate menu that uses OpenURL resolvers to look up items in a library. By default, Zotero uses WorldCat, but it can use a specific institution's OpenURL resolver, too. I had completely forgotten about this. I think I stopped trying to use it years ago because the WorldCat default stopped working. Anyway, when I investigated, I noticed that my institution wasn't available via Zotero or listed on their page of OpenURL resolvers.
At the time, I didn't know what my institution's exact OpenURL was, but I was able to figure it out by comparing the syntax and values from other Primo URLs listed on Zotero's page of OpenURL resolvers and because I had just written a lecture on link resolvers. So by comparing OpenURLs and by using the info from my lecture, where I had discussed the components of link resolver URLs, I was able to derive my institution's specific OpenURL (base component plus institutional info), which is:
I added that to Zotero, and it worked, and then I posted the OpenURL info to Zotero's forum, and they've added it to their OpenURL resolver page. That's pretty cool.
If anyone who comes across this post and is curious about how to add this info to Zotero, another library has created a video on this. The directions cover adding a specific OpenURL to Zotero and on how to use Zotero's Library Lookup functionality.
My students are awesome, and I thank them for challenging me.
Cold Showers
I'm really enjoying the Wim Hof method, both the breathing and the cold showers.
It's been a couple of months, at least, since I started this method, but I've been inconsistent about it up until the last week. I'd do the showers and the breathing, just not everyday or only a few days in a row.
I've been much more consistent about it this last week, and a few days ago I decided I was ready for immediate cold immersion. Up until this week, I'd get in the shower after the water had warmed and then slowly turn it to a colder setting. But earlier this week I stood in the shower with the water off, took a few deep breaths, and turned the water on to the cold setting. It was pretty intense, but it was also okay, and pretty exhilarating, too. And after a few big breaths, I got accustomed to it pretty quickly. I felt great all day. It's been like that ever since.
The real test will come this winter when the water temperature in the pipes drops considerably. Yikes!
Anyway, I think the key to all this is to practice it everyday. I've been doing the meditative breathing every night, and sometimes during the day. It's great for calming the nerves. I think that plus the Wim Hof method, everyday, will make a big health difference over time (PNAS); that is, minus some of the extravagant claims made by Hof himself and plus a dab of skepticism to boot. In the future, I'd also like to explore Tummo breathing practices a bit more than I already have---the aim being to get to the root of these breathing practices.
Vim, Ed, and also Markdown
Some things I like doing in /usr/bin/vim, /usr/bin/nvi, or /usr/bin/ed:
Use the % (percent sign) to run a sh command on the current buffer.
For example, from within Vim or ed, I can convert a markdown file to an HTML (or whatever else pandoc supports):
# save file; run pandoc from sh, output markdown file to a file named file.html
w !pandoc % -o test.html
# view the file with the w3m text browser
!w3m test.html
This behavior is buried in the info ed documentation. Vim inherits this behavior as a descendant of ed, but I first learned about it in a tweet. From info ed:
an unescaped '%' is replaced by the default filename
More often when I'm generating an HTML file from a markdown file, which I do a lot because I write lectures and other content in markdown, I use a function that I wrote and keep in my .bash_functions file. I like this function because it keeps smart formatting out of my HTML.
Alternatively, I could do this within ed(1) or Vim. In command mode:
w !pandoc -f gfm -t html % > somefile.html
When I exit the editor, I can do makepost somefile.md to generate somefile.html. To copy that file from the command line, I use the following function that copies the contents of a text file to my clipboard. Then I can paste that (via Ctrl-v) in Canvas or wherever I want the HTML:
clip () {
xclip -selection clipboard -i "$1"
}
To use that, I do clip somefile.html.
I use /usr/bin/ed quite often. I've found that it's a great editor for writing because I find it easier to simply stay in insert mode longer (i.e., Vim, as a screen editor, faciliates mode switching). I have also found that ed(1) is great for editing because it helps me focus on one line at a time. I'll usually go back to Vim when I want to make some big passes through a work.
Rest
Last night I went to sleep at around 7:30pm. I woke up a couple times during the night, but just for moments, and then got up for the day a little after 7 this morning.
I needed that nearly 12 hour sleep. Sometimes, we need just the basics, just like an infant.
Breathing
Yesterday was a sad day for me. It sucks to just feel down. Anyway, I did my Wim Hof breathwork this morning, and it made me feel much better. I hadn't done it all week, which is not good since it's been one of the key things that have kept my spirits up these last few months.
I have consistently practiced slow breathing, though. I practice that at least once but often several times per day. I usually do it when I lay down to go to sleep, but it's great for calming me down and keeping me from getting too anxious in certain scenarios. For example, the other day I had my annual allergy checkup. I always get anxious when I go to a doctor's office, and as I sat in the waiting room, I started the slow breathing exercise. My heart rate dropped from 99 beats per minute to 77 beats per minute within five minutes, and I felt super calm and relaxed, which was reflected when they took my blood pressure measurements a little bit later. Sometimes I do this kind of breathwork just at random points of the day; mostly when I am feeling stressed.
In short, these are the two breathwork exercises that have helped me considerably these last few months. I do Wim Hof (including cold showers) to keep my spirits up and to feel good, and I do slow breathwork to keep me from getting anxious and to help me be calm. They've been miraculous. I just need to stay consistent with Wim Hof (and still am looking forward to therapy) to help with some of the deeper issues.
When I Feel Best
I feel best, like good about myself, when I am not around people. I feel like when I'm around people, I say dumb or offensive things or things told in confidence. I hate that so much. The nice thing about my life as a cook, with the occasional side stint as a groundskeeper or a janitor, was that I spent most of my time in those jobs not talking, and I rarely socialized, and ergo, I mostly felt okay about being me. Nowadays, I don't often feel that way.
The good news is that I think I might be able to get into therapy soon. I was having a hard time finding someone, but I have a good lead now.
My youngest just leaned over and kissed me on the cheek. That felt good.
Measuring Food with Pandas
I wanted to reproduce in pandas and Python some of what I did with my tortillas post a couple of months ago, when I ran a small test in R to see how consistent I was measuring dough for tortillas. I'm doing this to learn pandas better.
Pandas has additional data objects or structures, and they each have distinct attributes and methods. This is something that I've had to learn coming from R; specifically, that R is more like pandas than it is like Python. Here are some tables comparing pandas and R.
I can use NumPy with default objects like lists and tuples, but there are three pandas specific data structures. The first two are the main structures for analyzing data:
import pandas as pd
import numpy as np
# create data as *list*
tortillas = [2.1, 2.0, 1.9, 1.7, 2.3, 2.2, 2.0, 2.4, 2.1, 1.9, 2.1, 2.3, 2.0, 2.4]
# get basic stats on *list*
np.mean(tortillas)
np.median(tortillas)
np.max(tortillas) - np.min(tortillas)
np.std(tortillas)
round(np.std(tortillas), 2)
# get basic stats on list converted to pandas Series
tort2 = pd.Series(tortillas, copy = True)
pd.Series.mean(tort2)
pd.Series.median(tort2)
pd.Series.mode(tort2)
pd.Series.max(tort2) - pd.Series.min(tort2)
pd.Series.describe(tort2)
# However, here's the shorthand:
tort2.describe()
tort2.le(2.0) # return Booleans less than 2.0
To perform a t test, we need another library, and here SciPy is common. For a one sample t test, I wanted to know if the observed mean was different from a mean of 2.0, which is what I was aiming to get when I was measuring out the dough:
from scipy.stats import ttest_1samp
# works on pd.Series or Python Lists
ttest_1samp(tort2, 2.0)
ttest_1samp(tortillas, 2.0)
# These results agree with my R results:
Ttest_1sampResult(statistic=1.8358568490953695, pvalue=0.08934987597048166)
# Save the results
tscore, pvalue = ttest_1samp(tort2, 2.0)
print('t test equals: ', round(tscore, 3))
print('p value equals: ', round(pvalue, 3))
It seems that I'd have to calculate the confidence intervals myself if I only used SciPy, but there's a library called pingouin that can report the important details for the test:
import pingouin as pg
pg.ttest(tort2, 2.0)
T dof alternative p-val CI95% cohen-d BF10 power
T-test 1.835857 13 two-sided 0.08935 [1.98, 2.22] 0.490653 1.015 0.397749
And the results are the same for the R version of this.
Mushroom Hunting
We were watching this short video about a mushroom/truffle dealer last night, and it reminded me of this guy I cooked with when I lived in Seattle and when he took me mushroom hunting with him up around Mt. Rainier. It was a great time, and I enjoyed looking for mushrooms and camping. I think we only found lobster mushrooms. But the video reminded me of the threat we faced when hunting. My friend told me that there were people up there looking for matsutake mushrooms and would get violent if they thought you were a threat. It all sounded very brutal and dangerous. Also, we had to be wary of bears.
I slept in a tent, and my friend slept in his old VW van, which held a bed that he built for himself. We cooked steak and some of the mushrooms in a cast iron pan that we placed on a fire. It was delicious.
Mt. Rainier is a beautiful place.
diff, ed, patch
Sometimes I like to do things using the old ways, largely because it’s sometimes interesting how thing were done a while back. But also because even though I write some scripts in R and Python, I’m not any kind of software developer and have not had any real training in computer science.
This is all just to say that right now I’m learning a bit more about the diff command. I’ve used it quite a bit over the years to visually compare two or more text files, but I’ve never used it the way a programmer might use it; that is, by using it with the patch command or with an ed script. (I have, however, used RCS to edit web pages on a multi-user NetBSD based public access UNIX system. I remember how fun it was when I first had to use it back around 2004 or 2005.)
Anyways, to use ed and patch with diff, let’s say there are two files: file1.py file2.py, and file2.py is a modification of file1.py.
Last night I made some pretty good vegetarian red bean soup. It’s pretty basic but delicious. Here is what I did:
Beans
Two cups dried red beans, soaked in salted water the night before.
After cooking the next day, I drained, rinsed, and set them aside.
Broth
I added some leftover vegetable scraps that I keep in the freezer to a large pot, along with a bit of rind from parmigiano reggiano, and added about two plus quarts of water. Brought this to a boil, and then let simmer for about an hour.
Soup
I chopped two small, yellow onions (or one big one would have worked), about half a bulb of garlic, and diced two red bell peppers.
I poured a good amount of olive oil along with a tablespoon or two of butter in a large soup pot. Turned the burner to medium-high, and when hot, added the onion.
Cooked the onion until just beginning to caramelize, and then added the red bell pepper, the garlic, and some salt. Cooked this until the red pepper was softened.
I added some dried seasonings, specifically some sofrito mix we get from TJs, and stirred this to release its fragrances.
Added the drained red beans, stirred, tasted, and added a bit more salt.
Then I poured the hot broth through a strainer and into the soup pot. I brought this up to a low boil but quickly turned it to a high simmer after it started to boil.
I let this simmer and meld for about 15 minutes, and then I used my handheld burr mixer and blended some of the soup. I stirred in a bunch of fresh spinach.
That was it. It was a nice soup.
We also had some leftover baked mahi mahi and some leftover soup, and today I added the fish to the soup and heated them up for lunch.
Comical Kids
My kids can be hilarious, and the youngest one is really funny right now. Last night, from the other room:
KA-THUMP!
2 yr old: "I'm okay! I'm okay, Daddy! I fell head! I'm okay!"
Then about ten minutes later:
"I'm okay! I'm okay! OW! I'm okay! I hurt my leg! I'm okay!"
Then this morning the 2-year old was sitting all alone in the front room and had a light organza-like piece of fabric over their head. They pulled it off their head and yelled, "Boo!" And then they pulled it back over, and then I pretended not to see them, and kept asking where they went, and they were cracking up. We kept this up for a couple minutes.
Ha, just now they tripped while was running down the hallway and yelled, "ow!" for real and then yelled, "I'm okay! I'm okay!", as they ran off.
Knots
Today I had to unknot a chained necklace. I used to love unknotting people’s jewelry when I was a kid. I would volunteer to unknot whenever anyone had anything knotted, and after a while, folks would bring their stuff to me unsolicited. I loved it, perhaps because it made me feel useful. More basically, I think I just liked to figure out how to unknot things. I did this so often that for a while I thought it would be a good idea to open an unknotting store. I would have opened one of those booths that you see in a mall. Imagine that.
No deep message here. I still just like to unknot things.
I Got Rice
I figured out how to make great brown rice. This had been bothering me for many years, and I’m super excited because I never really enjoyed my brown rice until I learned how to cook it well.
The first insight came after watching a What’s Eating Dan video about the appropriate ratio of rice and water. Specifically, this video convinced me to try the first knuckle method. But Dan used white rice in that video, and I wasn’t sure if the first knuckle method would work for brown rice. I tried it, and it did, but it wasn’t enough to make brown rice great.
I did some searching for other brown rice recipes to see what else I could learn, and I came across a great brown rice recipe. However, I was only sold on a couple parts of that recipe and not the whole thing. For example, the recipe calls for a ratio of 2 parts rice to 3 parts water, but given the first knuckle method, that seems like way too much water. One thing we learn from Dan’s video is that water/rice ratios don’t work. That is, you can’t double the amount of rice and also double the amount of water.
Instead, I borrowed two things from that recipe. First, I used their rinsing technique. I usually rinse my rice in water, but I had been using a strainer to run the rice under the faucet. Per the above recipe, I added the dry rice (a couple of cups for dinner) to a large mixing bowl and flushed the rice with water, swirling it with my hand and draining as I went, until the water was fairly clear in the bowl. This seemed to do a better job. When it was ready, I drained the water, put the rice in a pan, and added filtered water up to my knuckle. And then I let it soak for a couple of hours. That soaking really did the trick. It also reduced the cooking time to about 30 minutes, which includes 15 minutes on the burner and another 15 minutes with the burner off but the lid in place.
So here’s what I got. I usually make two cups of rice at dinner, for a family of five.
Ingredients
2c brown rice
1T butter or (olive) oil
Salt
Method
Add rice to large mixing bowl and flush with water, mixing with your hand and letting the water drain by tipping the bowl until the water in the bowl is fairly clear.
When the water is pretty clear, drain it and add the rice to the cooking pot.
Add water to pot up to first knuckle (see Dan’s video for subtleties and full explanation).
Let soak for about 2 hours. Longer is okay.
After soaked, stir it up, add butter or (olive) oil, salt, and bring to a boil, and then turn to low. Give it another stir and let cook at low until the water is absorbed. That’s been about 15 minutes for me.
After water is absorbed, turn off burner and let sit, with lid on, for another 15 minutes.
Remove lid, and fluff rice with a fork. Let sit for a few more minutes, and serve.
Solo Camping in a Thunderstorm
We didn’t camp last summer because the campgrounds were closed, and we haven’t camped this summer because, I guess, we got out of the habit of it. I miss it, and I hope we pick it back up again next summer or this autumn when the weather is cool and the campgrounds are less busy.
Our family camped quite a bit for three summers in a row. One time, a few years ago, we went to a week long festival here in Kentucky. We went with some other families, and a few of us headed out there early to snag a good spot and set up camp before the crowds arrived.
We found an idyllic area beneath some trees and near a creek. As we set up camp, the wind began to pick up, but the sky was still mostly clear. I had the notion that I was supposed to stay overnight, mind the camp, and wait for the families, including mine, to arrive the next day. So, my friends left, and I set up my tent and settled down for the night.
The wind grew stronger and the sky darker, and about an hour later, one of my friends came roaring back in his truck to let me know that a big storm was approaching. We didn’t have radio or cell phone reception in the holler, which meant that he didn’t find this out until he had driven a few miles away. The storm was not on the forecast.
We secured our campsite (not quite well enough we found out the next day), and I still thought I was staying. My friend left, and darkness arrived with a big thunderstorm. The lightning would periodically brighten the pitch black night, and the thunder and heavy rain kept me awake. I was concerned that the water from the creek would flood the camp, or that a tree branch would fall on the tent. I laid there awake, hoping that I would survive the night and see my family again. I found that night both exhilarating and terrifying.
I look back at that night with fondness. Even though I don’t necessarily want to repeat the camping alone in a thunderstorm experience again, I wouldn’t mind camping solo more often, even if it’s just for a night.
Ten Miles
The children and I rode our bikes on the Legacy Trail today. We did a ten mile ride: five miles in and five back. They were great. I was very proud of them.
We went to this trail once before. This was about two years ago, and my middle child was too young at the time. I think we rode a mile then---maybe even less.
Today was a lot of fun. It's a fine, scenic trail. We usually ride bikes on the streets and through campus. It was great not to have to worry about traffic.
I just want to remember this first trail ride.
When Did I Learn
Sometimes when I learn something, it changes my behavior or it changes how I see things. But then I'll read some note to myself or some journal or letter I wrote years and years ago, and I'll find that I had come to learn this thing then (whatever that thing is---I am intentionally being vague about it because it could be about anything). That raises the question: why didn't learning that thing then change my behavior then or change how I see things then? Am I just forgetting, or did I not really learn the thing in a meaningful way?
I think I'm focused on this because I feel like a late bloomer, and I can sometimes feel a bit envious of those who seemed to have it figured out at a younger age. For as long as I can remember, I've felt like the people in the room got things quicker than I did, but that the only reason I've been able to go as far as I have is because I've believed that I'd eventually get it, too. For example, when I was in third grade, and at my fourth school, I remember the teacher explaining something. The other kids in the class all seemed to understand what the teacher wanted, but I was completely confused. I remember thinking that if the other kids could get it, though, then I could also---that I'd figure out a way to catch up to them. I still have this kind of experience.
I have no idea where that belief in my self originates, especially given the belief that I was not up to par, but I think, albeit feeling slower than most, that it's that belief in my self that has kept me relatively afloat all these years. If I'm going to be a slow learner, I'm at least thankful for the self-confidence, wherever it came from.
First Day Energies
One of the nice things about working in academia is all the incredible energy and excitement that comes with the beginning of the school year. I miss that. Regardless how this year goes, I hope we get at least a little bit of that energy this year.
Quotes from Didion
I've been meaning to read something by Joan Didion for a long while. I finally got around to it with The Year of Magical Thinking.
Note to self: the spider web on the front porch the night before:
Survivors look back and see omens, messages they missed (Chapter 12).
Second note to self: the tacit.
I never actually learned the rules of grammar, relying instead only on what sounded right (Chapter 11).
Some other quotes that I want to remember. This one reminds me of Sportcoat from Deacon King Kong by James McBride:
Some people who have lost a husband or wife report feeling that person's presence, receiving that person's advice. Some report actual sightings, what Freud described in "Mourning and Melancholia" as "a clinging to the object through the medium of a hallucinatory wishful psychosis." Others describe not a visible apparition but just a "very strongly felt presence." (Chapter 17).
Here's another that I'd like to remember:
"you can love more than one person [John says]." Of course you can, but marriage is something different. Marriage is memory, marriage is time (Chapter 17).
This is related to an inside joke I have with my spouse:
When I was clearing out a file drawer recently I came across a thick file labeled "Planning." The very fact that we made files labeled "Planning" suggest how little of it we did. We also had "planning meetings," which consisted of sitting down with legal pads, stating the day's problem out loud, and then, with no further attempt to solve it, going out to lunch (Chapter 19).
For self-reflection:
Do you always have to be right? He had said that. Is it impossible for you to consider the possibility that you might be wrong? (Chapter 20)
As time since the death of John grows longer:
The craziness is receding but no clarity is taking its place (Chapter 22).
I do this, too:
All year I have been keeping time by last year's calendar ... (Chapter 22).
A beautiful ending:
You had to feel the swell change. You had to go with the change (Chapter 22).
Wim Hof Guided Breathing
I've been following the Wim Hof method, all of it, including the breathing exercises, the cold showers, and the meditations, and I like it. I've been using one of the videos for the guided breathing session, but sometimes I like to follow the video without any sound. So, if I'm not using sound, I thought I'd create another script that mimics the breathing method so I can run this on the command line.
This is a pretty basic script and it's like version 0.25. Later I'll upgrade this to make it print the text pretty (maybe add bubbles like in the video, but ASCII only) and also to add command line arguments that allow for different numbers of rounds, etc.
#!/usr/bin/env python3
# A little script that follows the Wim Hof Breathing method
# Currently hardcoded to do five rounds
# Usage: ./wimhof
# Pretty much follows the following video:
# https://www.youtube.com/watch?v=tybOi4hjZFQ
# Date: 2021-07-19
# To do: Make pretty
# To do: Add command line arguments
import os
import time
os.system('clear')
print("'All right, guys, welcome.'")
time.sleep(1.5)
print("'This is a guided breathing session.'")
time.sleep(1.5)
print("'Relax to the deepest.'")
time.sleep(1.5)
print("'Whatever it takes, relax.'")
time.sleep(1.5)
print("'Are you ready?'")
time.sleep(1.5)
print("'Here we go.' --Wim Hof")
time.sleep(1.5)
os.system('clear')
print("Let's do five rounds.")
time.sleep(2)
os.system('clear')
def breath():
for i,j in zip(range(1,31), range(1,31)):
print("Breath in", i)
time.sleep(1.7)
print("Breath out", j)
time.sleep(1.7)
def breathout_hold():
print("Hold breath for 1:30")
for k in reversed(range(1,91)):
print(k, "seconds left")
time.sleep(1)
def breathin_hold():
print("Breath in and hold for 15 seconds")
for l in reversed(range(1,16)):
print(l, "seconds left")
time.sleep(1)
def round():
for m in range(1,6):
print("Round number ", m)
breath()
breathout_hold()
breathin_hold()
os.system('clear')
round()
print("'Let it go.'")
print("'Let your breathing return to normal\
as you finish up the round.'")
print("'Move your body bit by bit,\
starting with your fingers and your toes.'")
print("'Let your breathing normalize.' --Wim Hof")
Timing is Everything
I was unhappy yesterday with writing the timer/countdown script in Bash, and I thought I'd give it a go in Python.
I've written two versions. The first version involves asking for input after running the script. Since I've written scripts using input(), this was an easy version to write. Usage is timer. Then enter a number at the prompt, and the countdown starts. If a string, a floating number, or a negative number is entered, then it'll ask you to try again.
#!/usr/bin/env python3
# Use as a countdown timer
# Usage: timer
# Enter a whole, positive number at the prompt
# Date: 2021-07-16
import os
import time
os.system('clear')
# Function to take a positive, whole number
def check_input():
while True:
try:
count_start = int(input("Start number: "))
if count_start >= 1:
os.system('clear')
return count_start
else:
print("Enter a whole, positive number. Try again.")
except (ValueError):
print("Enter whole, positive number. Try again.")
# Do the countdown
def timer():
count_start = check_input()
for count_start in reversed(range(count_start)):
print(count_start)
time.sleep(1)
os.system('clear')
print("Countdown over.")
# Call timer function
timer()
I'm still fine-tuning the second version. In this second version, I use argparse to take a value at the command line, which means this version replicates yesterday's Bash version more closely. argparse is new to me (See update below), though, and this version is incomplete because I need to add additional help info when the argument is a negative number, a float, or a string.
Update: I fixed the above issues (now striked above). After a closer reading of the documentation, argparse was behaving as it should when a string or a float was passed to it. However, if I passed a negative number to it, it would immediately print out "Countdown over.". To solve this, it dawned on me (naps are helpful :) that I could just use the abs() function to make sure the number was always positive. The code below reflects that now:
#!/usr/bin/env python3
# Use as a countdown timer
# Usage: timer [-h] number
# Date: 2021-07-16
import os
import time
import argparse
os.system('clear')
# Function to take a positive, whole number
def take_input():
count_start = argparse.ArgumentParser()
count_start.add_argument("number",
help = "Enter a positive number.", type=int)
args = count_start.parse_args()
return args
os.system('clear')
# Do the countdown
def timer():
args = take_input()
for args.number in reversed(range(abs(args.number))):
print(args.number)
time.sleep(1)
os.system('clear')
print("Countdown over.")
# Call timer function
timer()
Anyway, this was all motivated because I've been seeing a physical therapist, and as a side issue, I mentioned that sometimes my wrists get tight after typing for a while. She taught me a couple wrist stretches to use throughout the day. I could certainly just use my phone or watch as a timer for the stretches, but I thought it would be fun to write a short script for the job.
A Timer
I haven't written a Bash script in a few months, and I am out of practice. It took me too long and too many web searches to write a very basic countdown script.
Also, writing this reminded me that I don't like using Bash to write scripts that involve any kind of integer evaluation. I should have used Python.
Anyway, I like to take breaks from typing to stretch my wrists, and having a little script to count down from 30 or so seconds, or however long I want to stretch while at the desk, is nice.
#!/bin/bash
# Use as a countdown timer
# Usage: timer [arg]
# where [arg] is a whole, positive number
# Date: 2021-07-15
timer () {
clear
if [ -n "$1" ] && [ "$1" -eq "$1" ] &>/dev/null ; then
for i in $(seq "$1" | sort -nr)
do
clear
printf "%s " "$i" && sleep 1
clear
done
else
printf "\nNot a number.\n" ; exit 1
fi
printf "\nCountdown over.\n"
}
timer "$1"
I named the script timer. If I want to start the timer at 30 seconds, then I just do this:
timer 30
Back to Ubuntu
About a year ago I began the switch to Fedora. I first installed it on my laptop and then my desktop about six months later. I've now returned to Ubuntu.
I like Fedora. I prefer their version of Gnome, although I only use it sometimes when I'm not using the i3 window manager. (The Gnome differences are really minor, though.) However, there were a few annoyances. The laptop wouldn't sleep when I closed the lid, even though it was configured to do so. The distribution was too bleeding edge for me. Sometimes it was nice to have the most recent version of whatever software, but I'm willing to sacrifice that for a less bleeding edge system if it means fewer system and software updates and less frequent reboots. I don't mind rebooting my laptop because I regularly shut it down anyway, but I'd rather not have to reboot my desktop as much as it asked me to. Finally, the package manager, dnf, felt slow compared to Debian/Ubuntu's package manager, apt.
It was fun to distro hop, though. It reminded me when I started to use Linux and would often test new distributions out. I don't do that very often these days because it's more important to me to maintain a good workflow and to have a system that supports that workflow than it is to learn a new system. In any case, it's not goodbye to Fedora. I will continue using it in my systems administration class, and I'm looking forward to learning more about the Btrfs file system.
Site Update
I updated this site's design again. This time I tried to mimic the kind of straightforward, minimally styled academic sites that were common in the earlier days of the web. It's a style that is easier to maintain and, for some reason, perhaps because of the simplicity, super pleasing to me.
I'm working at the office on campus for the first time in 458 days. It was getting difficult to work from home. Last year, when quarantine started, our littlest one couldn't walk, but now they walk and run, which means we have three very active children in the house. And that means it was getting difficult to work in our fairly small, crowded home.
So I arrived early this morning. It doesn't feel like it was just yesterday that I was here. It feels like it was a long time ago.
A Meaningless Post on Measuring Food
In 1994, I started work as a prep and lunch cook, and each morning I'd have to roll out several hundred balls of ground beef at 6 ounces a piece, which would later be flattened and breaded for chicken fried steak.
I had to move quickly since there were a lot of other tasks to complete before lunch started. I could use a scale to weigh the food, but if I used it to weigh every item, it would slow me down, and I wouldn't finish my prep work in time. The solution meant getting a feel for 6 ounces and to grab that exact amount by hand and by eye. I'd use the scale but just every once in a while to keep me calibrated.
All the longtime cooks that I've worked with had gained this tacit feel for measuring things. I knew a person who could cut steaks from sides of beef to the exact weight needed. Others, including myself, could pour a tablespoon of salt into the palm of our hands, or a cup of sugar into a bowl of flour, without measuring. If we checked our work with a scale or a measuring cup, we'd find we were on target.
Last night I made corn tortillas, and I wanted each ball of masa dough to weigh 2 ounces. I wanted to see if I still had this ability to eyeball the weight, and I brought out my scale and measured what I pulled from the dough on the first try. I recorded my measurements and entered them in R as such:
The range was kinda wide, but I think I went a little high and a little low a few times because I was thinking too much about what I was doing when I first started to measure the dough:
# range
max(tortillas) - min(tortillas)
[1] 0.7
# summary
summary(tortillas)
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.700 2.000 2.100 2.100 2.275 2.400
But the standard deviation was fairly tight, which was a good sign that I was fairly consistent:
round(sd(tortillas), 2)
[1] 0.2
Finally, I want to ask, is a mean of 2.1 significantly different from the goal of a mean of 2.0 ounces, where the null hypothesis is that the true mean is equal to 2.0?
t.test(tortillas, alternative = "two.sided", mu = 2.0, conf.level = 0.95)
One Sample t-test
data: tortillas
t = 1.8359, df = 13, p-value = 0.08935
alternative hypothesis: true mean is not equal to 2
95 percent confidence interval:
1.982324 2.217676
sample estimates:
mean of x
2.1
According to the test, I should fail to reject the null hypothesis. That's great. It means that, statistically, I'm pretty close to my goal and pretty consistent.
I really did weigh the dough out in order to do this, but obviously this was just for fun. But it's a helpful kind of fun. When I first started learning R and statistics, this was the kind of thing I'd do to help me gain an intuition for the various tests I was learning. A lot of textbook cases use example data that does not connect to me personally. I would address this by collecting data on something I was doing (like playing a game), and then reproducing whatever test I was learning with my own data.
I'd also practice by playing around with functions in R, where I can, for example, adjust the confidence level of the t.test by changing the value for the conf.level argument. Here I set it to 0.90:
t.test(tortillas, alternative = "two.sided", mu = 2.0, conf.level = 0.90)
This results in a narrower confidence interval than it does if the level is set at 0.95. For example, let's set the confidence level to 0.90 and to 0.99 for the t.test and compare the width of the intervals for each. I'll save the 0.90 test as t90 and the 0.99 test as t99:
# Set at 0.90
t90 <- t.test(tortillas, mu = 2.0, conf.level=0.90)
# Set at 0.99
t99 <- t.test(tortillas, mu = 2.0, conf.level=0.99)
# Compare the intervals
max(t90$conf.int) - min(t90$conf.int)
[1] 0.1929272
max(t99$conf.int) - min(t99$conf.int)
[1] 0.3281602
On the surface, the smaller confidence interval for the t90 test would seem to suggest more certainty in the results than the wider confidence interval for the t99 test, but that would be misleading without taking into consideration the confidence level. Although the smaller confidence level for the t90 test increases the precision of the test, it also increases the error. That is, it raises the probability that I would see this result less often in repeated tests (only 90 out of 100 versus 99 out of 100 tests). In fact, for the t90 test, the lower bound of the confidence interval is greater than 2.0, which is what I set the true value of the mean to in the t.test when I set mu = 2.0. That means for a confidence level of 0.90, since p = 0.089, then I would reject the null hypothesis since p < 0.10.
This can all be nicely visualized (not here though, since this is a text only page), by comparing boxplots of the above tests. Let's create a new test for a confidence level of 0.95:
# Set at 0.95
t95 <- t.test(tortillas, mu = 2.0, conf.level=0.95)
Then let's compare boxplots for the three tests:
boxplot(t90$conf.int, t95$conf.int, t99$conf.int)
When I do this, I see that for the t95 and the t99 tests, the bottom borders encompass 2.0 but not for the t90 test. Visually, then, for the t90 test, a mean of 2.1 is significantly different than a mean of 2.0, but not for the two stricter confidence level tests.
Anyway, fun!
Why Libraries Are Fascinating to Me
Libraries are fascinating, to me, because documentation is fascinating, and libraries (and archives, museums) are how we have institutionalized the systemic organization of documents.
Since libraries have institutionalized the systemic organization of documents, they provide a key to uncovering the social realities of society.
The challenge lies in that, too. Since libraries have institutionalized the systemic organization of documents, they have also systematically institutionalized the good and the bad of society. Critical theorists seek to unveil the bad in this way.
More on documents later. More on systemic organization later. More on the institutionalization of these later.
Ferment Fail
One of the fermenting jars of pickles went bad. The other one is still good, though, and I've put it in the fridge.
A few problems that I need to address next time:
Weigh the cucumbers down better.
Use bigger mason jars or use fewer cucumbers.
Mix water and salt ahead of time, really well, and then pour over the vegetables.
I think that'll fix it next time.
Also, it was still winter when I started fermenting for the first time. I knew when it got warmer that the ferment would happen faster, but I didn't realize just how much faster. So fast. I'll need to take that into consideration when I ferment again in a couple of weeks. The jar overflowed a few times. Just need bigger jars, I think, for cucumbers.
The Aliens Are Here
Given the recent news about UFOs or UAPs, I thought I'd tell my story about seeing one a while back.
In 1997, I was working as a server and bartender at restaurant called Alamo Cafe in San Antonio, TX. I became friends with a couple of bussers there and am still friends with one of them.
I can't recall the other busser's name, Eric maybe, but I remember how excited he was about saving up for a telescope. When he finally bought one, he invited me with him to drive to the Hill Country to test it out.
So, we drove one night to the middle of nowhere---to a place with little light pollution, and my friend set up the telescope. It was a good scope, and we were having fun looking at the moon and like with it.
As we took turns, we both noticed something in the sky way off in the distance, out east I think. It was far away and small but interesting enough to cause us to train the telescope's viewer to get a closer look. When we sighted it, we were blown away. The small object was round or oval, and it was hovering in place. It was colorful, too. I don't remember all the colors, but they appeared in patches: something like blue in one corner, red on the other, orange on the top, green on the bottom. I think the colors alternated, too.
We took turns looking at it through the viewer, and after a while, the thing traversed from due east to due north in a blink. It was fast. Crazy fast. And we were stunned. It definitely flew from one point to the other, but if we hadn't been watching it, we might have thought it had transported from point A to point B instantaneously. So fast.
It hovered in its new location for some time, I don't remember how long, and then it moved across the sky again, as fast as it had before, but about half the distance between the original point A and point B. And then again, but this time it went in a new direction. It hovered again, but only for a moment, and then it flew out of view, like off into space.
Of course, I doubt it was alien or extraterrestrial. There were about seven air force bases in the region, and I'd wager it was associated with one of those bases. Or maybe it was some other mundane thing. However, I've never seen anything since that had colors like that and that moved that fast, and a small part of me will always wonder if what we saw was truly from out of this world.
Note: I thought I'd search the web to see if anyone else had seen something similar, and it turns out that someone else saw a very similar thing last year. Who knows?
Back to School
I received my second jab last week and will head back to the office by the end of May. Ideally, I wouldn't mind working from home until the fall semester, but all barriers have broken down in the household, which means that there's no escape from the craziness here! As I write, the youngest one is pounding on the door and yelling for me. [Insert deranged laughter.] In June, the two older kids start outdoor art classes for the summer. That'll be great for them. They need the activity, the interaction, and the stimulus.
My fall classes are fairly read to go. So the plan will be to work a few hours a day on my book at my office and then come home and hang with the kids until it's time to return to the meetings and to teaching. Like last summer, we have already started to ride bikes a lot, and if things go well, we hope to go back to the public pool this summer, too. My oldest was becoming bold on the diving board, my middle child was just learning to swim, and it'll be great if they can pick up where they left off. I can't wait to take my youngest into the pool and teach them the basics. The youngest learned to walk almost a year ago and is now running around wildly. Crazy all the changes over the last year.
Last week a friend brought over four dozen eggs from their hens. I pickled 24 of them and also started to ferment a bunch of cucumbers we bought. Fermented pickles and pickled eggs are the best.
An Open Science Example
I recently had a paper published that was a few years in the making, and at this point, I think this paper is the best I've done at applying an open science process. I think to do better, I'd register the research at OSF or elsewhere when designing the study.
The open science goal here is not only to make the various research products accessible (i.e., open), but also to document the process from as near to the beginning of the project to the end. Documenting the process fosters reproducibility but also creates a kind of chain of custody (not in the legal sense of the term, though).
The code and the data are stored on GitHub. The repository for the project is titled medline-longitudinal. I used Zenodo to create DOIs for the GitHub repository. There are two DOIs for the project. The first one is the DOI for the project at the time I submitted the manuscript. The second DOI was created based on changes I made to the code based on peer review feedback. New DOIs for the Git repository are automatically created by Zenodo when I create a new release of the repository on GiHub. The current, final DOI is 10.5281/zenodo.4757516, and the prior DOI and repo version can be found on that Zenodo page.
Finally, PLOS offered the ability to make my peer review history open for the paper. So all the peer review feedback and my responses are available on the PLOS ONE article page, and that article page also captures post-publication commentary, including any comments on social media and elsewhere. The bioRxiv preprint also displays any social media activity about the preprint.
I'm following the same process with another project that I'm working on right now. I think it's worked well.
My only wish is that I could submit non-Word submissions. I think journals should be able to take Markdown files, ODT (LibreOffice) files, or files created by research notebooks. This dominance of Word is annoying. Journals in my field often do accept LaTeX files, but it's been a while since I used LaTeX and I don't have much interest in taking it back up again.
Phoning It In
In a first for me, I phoned into a webinar today to give a talk. We did a test run a couple of days ago, and when I tried to connect to the video conferencing system, I was taken to a web page that said that I needed to use a supported system, which listed Linux as supported, but that does not in fact support Linux, which was confirmed to me when I called their technical support. What nonsense. Thus, to solve the issue, I phoned in the talk. Google Voice didn't work. I had to use my actual phone.
Anyway, it worked well. I put in some ear buds, called the webinar number, and gave the talk with some slides. The moderator had to change the slides for me, but I numbered them to make it easier. I think I forgot to say next slide a couple of times, but the moderator didn't say anything about that. I am grateful for their patience. Also, since I couldn't access the video conference, another moderator had to email me the questions that I received after the presentation. The whole thing was kind of hilarious. I never would have predicted that I would literally phone in a talk.
It was fun, too. I enjoyed talking about a project that I've been immersed in for a while and to receive great questions from attendees. However, it was weird because other than the people who asked questions, which were emailed to me after the talk was over but while the webinar was ongoing, I have no idea who attended. That added some extra oddity to the experience. And the whole thing felt like I was talking to the slides on my screen instead of to a room full of people, or to a room not full of many people. I think that last factor made it a bit easier on my nerves, though.
No Sudo For You
Learning moment: don't do sys admin work when you're distracted and
interrupted. I edited my sudoers file with sudo visudo,
but I messed up the syntax. Of course, visudo warned me of the
syntax error, but because of the distractions and interruptions, I saved the
file anyway. Running sudo afterward resulted in a segmentation
fault. And since this is Ubuntu, I didn't set up a root password. Oi! Things
would go downhill quickly if I couldn't manage the system.
In the olden days, I'd just reboot with a Live CD, mount the drive, and edit
the file. It would have been a simple fix because I only needed to delete two
lines. But the drive is encrypted via LUKS and also uses logical volumes. So
the challenge here was to boot with a Live CD, decrypt the drive, then mount
the correct volume and partition, and edit the sudoers file.
To solve this, I rebooted with the Live CD and once running, I opened
a terminal and did the following:
# locate partitions
sudo fdisk -l
# mount volume to /dev/mapper/myvolume
sudo cryptsetup luksOpen /dev/sdb3 myvolume
# scan LVM volumes and choose the correct one
sudo vgscan
# activate the correct volume
sudo vgchange -ay vgubuntu
# locate root volume
sudo lvs
# mount partition (I think correct location; from memory)
sudo mount /dev/vgubuntu/root /mnt/
Once the partition was mounted, I could then fix the file:
sudo visudo -f /mnt/etc/sudoers
As usual, other people had similar problems and these were addressed on
Stack Overflow. The answers helped me solve this issue:
I'm super thankful this was my home computer and not some box that I connect to remotely.
The Liminal Space That Was
I don't think I'd ever come across the concept of liminal space until I read a recent article in The New Yorker on The Pleasant Head Trip of Liminal Spaces (and another article at Musée), even though, for as long as I can remember, I've been drawn to these kinds of spaces. As a young kid, I would wander around my grandfather's office building in search of these empty spaces. One summer when I was in college, I worked mornings as a janitor at a country club (and afternoons and evenings as a lifeguard there), and in my break during the day, when the main building was empty, I'd relax in these empty spaces that were abundant. Also during college, I worked at the creepiest of all liminal spaces. Every Friday night, from 11pm to 7am, I'd sit in the boiler room of the science building. My job was to monitor the boiler pressure gauges. I had a little black and white TV that received one and one-half channels. The boiler room, situated in the basement, was the size of a football field, and only my little corner was lit. Here in Lexington, there are a set of walking, covered bridges that connect several of the downtown buildings. The bridges and the parts of the building they are attached to are all liminal. These places can be eerie, and that's part of their attraction, but they also feel safe in their loneliness.
When I read those two articles linked to above, it dawned on me that this experience of a liminal space was what I experienced last spring when the pandemic shut most everything down and the once busy streets and parks emptied of much human presence. I'm not going to miss the pandemic and will be thankful when it's over, but that was the first time that an outside area in the middle of an urban area that was once quite busy felt like a liminal space, and it was sweet.
The Aha Moment
For several years I have been teaching a class on knowledge management, and I've based the course on a reading of Michael Polanyi's short book, The Tacit Dimension. In the process of teaching this course and reading other not so related literature, I developed a nascent thesis on a topic pertaining to open science and tacit knowing.
I wanted to explore this thesis this semester on my sabbatical. To do that, for the last few months I've been reading tons of literature. I've read much more Polanyi but also a good deal in the philosophy of science, on open science, information science, gestalt psychology, learning theory, educational technology, and more.
This has been great and helpful, but if someone had asked me for a detailed outline of my thesis, I would only have been able to give a halfway account. I simply wasn't fully there.
Then, in a perfect example of serendipity (an information encountering concept), I read an email that was mistakenly sent in response to an announcement on a small listserv that I follow. That email included a reference to a paper, which looked like it fit within the scope of my thesis. As I read the paper, my entire thesis opened up to me.
I opened up my text editor (Vim!), and in about twenty minutes, I wrote nearly a 1000 word series of 15 statements that work like a chained modus ponens. Each of these statements is supported by the research I read in the areas I listed above (philosophy of science, open science, etc.). Together, they support my overall thesis and serve as an outline for my book. Each statement will become a fully developed chapter.
I think (hope) this will be a good book, but regardless, I doubt I would have gotten here if not for the sabbatical. I've had the nascent idea of my thesis for years, but there was no way I could have developed it without the time to immerse myself in the literature that I needed to read for it. The day-to-day work of academia just does not support deep immersion into a topic. That's a whole other discussion.
But also, I'm just really happy that it all finally came together in a very cohesive and coherent way. I also wanted to take a moment to document the main process of it all. It feels great to get to this moment.
Now comes the hard part.
Mix It Up
Sometimes it seems Jacques Pépin makes dishes on his show, Cooking At
Home, with whatever ingredients he has on hand. It's as if he's making
a show about what he's cooking for dinner that evening. I love it.
Case in point, in one episode, as he demonstrated how to make hummus, he
noted that he was out of tahini, and so he substituted peanut butter instead.
And I thought to myself, "oh of course that
would work. That's brilliant."
Lesson learned, Chef! We ran out of peanut butter, but we had tahini. So
I made a tahini and jelly sandwich, and that works really well also.
Wrong Hard Drive
A couple of months ago I wrote about problems I was having with lag on my
desktop computer. It seems that some (not entirely all) of the keyboard lag
issues were fixed when I worked on it, but still, sometimes I'll hold down
a key, like the letter s, and nothing happens on the screen, and then
20 s characters will appear. It's annoying. Furthermore, the computer
is still quite slow at a lot of tasks. Anything R related, for example, takes years to
run, and my data is not all that big.
I dove into the comments section for the hard drive that I got, and there
were some
comments about the hard drive using SMR
technology. I had not heard about SMR before, and this info was not listed
anywhere on the specs. But I searched the model number ST2000DM005
and found that it was true that I'm using an SMR drive.
Based on the comments that I've read, SMR can cause lots of slowness. I'm
not hardware smart, but folks
seem to think that because of that and because of the way that SMR writes
data, it's better used for archival and storage purposes, when writing to disk
is minimized, and not for main operating system use.
Also, since I'm using Fedora 33,
I accepted the default Btrfs
file system. I can't get a straightforward answer about how well Btrfs works
with SMR, but some people seem to think they
get along well, if used for read and not write intensive purposes.
I asked for a replacement drive and am happy that I will get to replace the
drive with an SSD drive. The other problem with the SMR drive is that it's
super loud, distractingly so. The SSD will take away the noise and should speed
up the computer quite a bit. I'm looking forward to it. I'll pass the SMR drive
to the person who provides technical help in our office, and so at least it'll
get used.
Lessons learned, especially about hardware, which I don't pay much attention
to nowadays. This desktop is eight years old, but it's still beefy enough, and
I'm happy that with minimal investment, it should last quite a while
longer.
Larry McMurtry
I saw today that Larry McMurtry passed. I am sad about this. My high school
English teacher, Billie Bailey, introduced me to his books. I remember the
classroom that we were in when this happened. I remember Ms. Bailey's smile
because she knew she was offering me something special with this introduction.
Ms. Bailey was also a major influence in my life. I shall write about her
someday.
I can't be sure but I believe the first McMurtry book I read was All My
Friends Are Going to Strangers. Or it might have been Texasville,
but I don't think so. Whichever one, I was immediately hooked. McMurtry's
melancholy connected to mine. Straight to my soul. And his humor was outsized,
like the Texas I knew then. No author has made me laugh or cry as much as he
has. Moving On and Terms of Endearment would yank those
emotional chains.
I read most of his books in Texas, but I have a nice memory reading The
Desert Rose at my grandparents' house in Missouri. I miss my
grandparents.
I regret not ever making it to his bookstore in Archer City, but I don't
think it was in Texas yet by the time I left the first time in 1991.
Thank you to all the authors who make worlds and who capture their truth,
which if done well, is all our truth, too. Thank you to the teachers and
librarians who connect us to these worlds and truths. Thank you, Larry
McMurtry, for helping to shape who I am.
Professor Suda
A couple days ago I learned that one of my favorite undergraduate professors
passed away.
I was really fortunate to have David Suda as a professor and mentor when
I was at Monmouth College. It's been 25 years since I graduated, but I can
easily recall approaching his office in the basement floor of Wallace Hall,
peeking through the open door, and asking if he could talk with me about
whatever, my thesis or what to do after graduation. He was generous with his
time and patient with me, and I remain grateful for that.
David Suda had a powerful intellect and a range of talents, and he was kind,
laid back, funny, approachable, and humble. He delivered consistently engaging
lectures on aesthetics, the self, Russian literature, ancient Greek thinking,
Jewish philosophy, and more. I have a copy of the book he published, The Moving Image: Immutability,
Metaphors, and the Time Clocks Tell, and cited it in an article that was
published this month. The book possesses all the earmarks of books that I love
most. It draws from a swath of literature, literary and philosophical. It
connects ideas from the sciences and humanities. It is reflective and
beautifully written. I learn from it each time I read from it, and I am glad to
be able to revisit his thoughts through it.
Professor Suda, I hope you had a good life. Thank you for your time.
Another Anniversary
I can only imagine that it is maybe, just maybe, appropriate to storm
someone's home if (A) it is a war zone, and/or (B) someone's life is in
immediate danger and the success of a rescue is very likely; and that in either
of those cases, the decision to storm a home would come only after absolutely
all peaceful options have been thoroughly, thoroughly exhausted.
Given that (B) was not the case last year, then I believe that it must be
that (A) is true. That's the injustice.
Peace to you, Breonna Taylor.
One Year
Tomorrow marks one year since quarantine started for us. We had our last
in-person faculty meetings on March, Friday the 13, 2020 and found out that
we'd be working remotely henceforth. As I packed up stuff in the office
afterwards, a colleague stopped by to say goodbye and to chat for a second on
their way out, and I remember saying, "see you in the fall." I meant fall
2020.
The university plans to return to normal operations next year. I am
surprised to find that I am torn about returning to campus. I look forward
working in a quiet atmosphere again, even though the office can have its own
set of interruptions, and to see my colleagues, but I love being around my
family.
It's not that I don't need breaks every so often and that they've rarely
come this last year. It's difficult to be cooped up in a small home with
several young persons. But I love these people and will miss having them around
during the day. Even when it's super crazy and clamorous in this house, like it
is in this instant, and when it feels like their turbulence matches that of
a hurricane, like it feels right now, I'm still kind of smiling (even if it's
only on the inside!). But the little persons need a brighter and more social
future, all my family does, and I hope that begins sooner than later for
them.
I miss the family I grew up with, too. I'm impatient to see them, and I hope
to this summer. It's not all good news on that front, but it still might be.
A few years ago I recorded oral histories with some older people in my wife's
extended family, as a kind of future gift to their children. I hope to do that
with my own extended family soon. It needs to be done, in fact. Time should not
be taken for granted anymore.
Peace and long life.
On Cooking Shows
I started to work in restaurants back in the late 1980s. My first job was in
fast food, and after I was fired from that job (funny story) I continued to
work as a cook off and on until I graduated from college.
When I was hired to manage a kitchen in the late 1990s, I started to devote
myself to becoming a good cook, and not just a good line cook. I was not ready
for that management job, but I embraced it. My general way of learning
something is to ignore everything else in the world and become consumed by the
topic. So that's what I did. I worked 16+ hour days and in my off-time,
I bought and read scores of used cookbooks and watched one of the relatively
few cooking shows that seemed to exist at the time, Great Chefs of the
World on PBS.
I still love Great Chefs of the World. That show taught me so much.
Each episode began with one chef who prepared an appetizer, a second chef
cooked a main dish, and a third chef presented a dessert. There was hardly any
talking. At times a chef would say something, quietly, but mostly it was the
presenter, Mary Lou Conroy, who spoke.
Conroy's voice and narration were even-keeled. It was a calm and quiet show
because the focus was exclusively on the cooking and the techniques involved.
It felt like watching golf but without any drama. There was this one time,
though, that I remember sitting on the edge of my seat during an episode, and
this was because I had detected some muted excitement in Conroy's voice. It was
unexpected and thrilling and entirely out of character.
What happened was that Conroy had introduced an Austrian (I think)
patisserie who was about to make a tart. Conroy's voice so slightly rose when
the patisserie free-handedly cut a circle out of some dough that fit perfectly
in a 15 or so inch tart pan. It was amazing to see, and I felt like I shared
Conroy's unexpected excitement just because it was so out of nowhere. I loved
her awe at watching someone at the top of their game.
Besides that show, I could watch Jacques Pépin all day. He is one of the few
people who cook on television who is able to show how it's done in a home
kitchen. "This mushroom doesn't usually go in this dish, but I had a mushroom
in my refrigerator and I needed to use it." That's the kind of thing he says.
He is beautiful to watch.
I could live without most other cooking shows. They feel overproduced and
loud.
Cook's Log, Fermentation Date 28
And on the twenty-eighth day, we opened the third jar of fermented cabbage,
and it was good.
It was very good. The first two batches, on days 9 and 11, were quite tasty,
but this batch was perfectly sour and the cabbage was still crunchy. I had
guessed otherwise because the cabbage had sunk quite low in the jar. Final
verdict: it is worth a longer fermentation.
This is the batch that contained some Serrano peppers, and boy were those
really tasty, too. The spiciness didn't impact the cabbage. I had expected
differently with this, too, and will definitely have to make a jar of those in
the future.
I'm curious how much more quickly they'll ferment in the spring and summer
when it'll be warmer in the house. Right now we keep the thermostat at 62 to
65, but in the spring and summer, it'll be in the seventies. That should hasten
the fermentation process a bit, I think.
Interesting twist: the youngest child didn't like the first batch, but they
ate a bunch from this batch. I was so happy with that!
On Alphabetizing
The other day I gave my oldest a pocket dictionary that I've had for years,
and then they asked me how to use it. I had fun talking about alphabetizing letter
by letter with them, and we worked through a few examples on paper. They've
literally kept the pocket dictionary in their pocket for the last several days,
and have only selected pants to wear that have pockets large enough to hold the
dictionary. The day after we talked about looking up words in the dictionary,
they came up to me to proudly let me know that they successfully looked up
their first word. It was wonderful.
I briefly wrote here a while ago that I
really love reference works and that I'd rather be researching them. As
a long-enough time generalist, topically and methodologically, I get tickled by
new ideas and questions to ask, but I think it's time that I focus on something
I really, really enjoy. Showing my oldest how to use a dictionary just simply
sparked that joy and reminded me of what I ought to be doing to make me a bit
happier.
I think I can make this new focus work and that it would contribute to the
literature. There's a lot to say and understand about our world that a deep
study of reference works would reveal. I'll prove it.
I only have one project left to complete before I get started full force.
It's time to wrap that up.
The Restorative Work of Reading Just Books
Yesterday was a bit of a free day for me, and it was lovely. I was able to
spend hours finishing Hope Jahren's book, Lab Girl. I loved this book
and the blend of memoir and science writing and saw that she had a second book
published last year (The Story of More), which has been added to my
reading list.
I've knocked out six books since I purchased my e-reader last fall and five
of them since the beginning of the year. This pace makes me happy. I've always
read a lot, but haven't read in this way in a while. When I was growing up, you
wouldn't catch me without a book in hand. Nowadays, though, mostly what I read
are articles (and some books) for research or articles on the web.
I largely stopped reading just books about eleven year ago. Two
things happened then: I started my PhD program and I read Cormac McCarthy's
The Road. It's obvious why seeking a PhD might disrupt non-work
related reading. The Road, though, that messed me up. It was such
a dark book, full of despair, that it left me incredibly sad for a long time
and it took a long time to recover and to want to read just books
again. I love McCarthy's works, but dang, The Road was an emotional
and spiritual doozy.
Reading just books has been the most restorative part of my
sabbatical so far and although I haven't selected these books I'm reading
lately because I thought they were or weren't related to my research, I am
finding that they are informing and inspiring it. In fact, Jahren's book has
given me a great idea about how to proceed on a topic that I'm studying and
also on how to proceed as a researcher and academic more broadly. So, thank
you, Professor Jahren for your story, your science, and for the
inspiration.
Cook's Log, Fermentation Date 11
This is posted four days late, but by popular demand, I opened the second
jar of fermented cabbage two days after I opened the first jar, which was
gobbled up in less than 12 hours.
The second jar contained cabbage, minced garlic, and sliced ginger. The
cabbage has a very lovely ginger flavor and aroma. I've eaten some ginger. It's
much milder than raw ginger, but it still has a bit of spiciness and crunch.
I also sliced it too thickly. Next time I should use the mandolin to slice it
as thin as paper.
The next jar has cabbage, garlic, ginger, and Serrano peppers. If I can keep
the kids at bay (well, the middle one is the ferment addict), then I'll try to
wait a couple more weeks until I open it. I don't think the batch will be spicy
because of the peppers. I had some raw and sliced up before I added some to
ferment, and they were a pretty mild bunch.
Font Lode
Update 3/11/2021: I had to make some changes. The code below is now correct.
Original 2/28/2021: I added some new fonts to this site from Font Squirrel last night and so
crossed off another item on my tinker list. For the navigation items and the
h2 and h3 heading HTML elements, I chose Open Sans. For the
h1 heading element, I selected Afta Serif, and for
the p paragraph element, I picked Liberation
Serif, which is the default font in LibreOffice. I tested a few serif fonts
for the p tag but thought Liberation Serif was the most
readable.
Update 3/11/2021: Instead of using the TTF and OTF fonts, as described
below, I used the Font Squirrel
Webfont Generator to generate WOFF files,
and then used those instead, along with the code that the generator
produces.
I downloaded the TTF and OTF font files from Font Squirrel
and uploaded them to my web space and placed them in a fonts
directory. In my CSS, I specified
the fonts with the following code:
Code generated by the Font Squirrel Webfont Generator:
The function creates an HTML copy of the markdown file, and in the process,
it strips the .md extension and replaces it with the
.html extension when creating the copy (hat
tip). If the markdown file were named post.md, then to get
the HTML version, I only have to type:
makepost post.md
Bash functions (and aliases) are so useful. For aliases, I'd rather not ever
type clear in the shell to clear the screen, which I do often
because I like the cursor up high. Instead I just type the letter
c, which is set by this alias:
alias c='clear'
Cook's Log, Fermentation Date 9
I opened one of the three jars of cabbage that I began fermenting on
February 5. It tastes great! The cabbage has a firm bite and a nice tart taste.
I think I'll let one of the other jars ferment for a couple more weeks and
then, depending on how that goes, the third jar for a couple of weeks beyond
that.
We're having a fairly chilly winter, and we keep the thermostat in the low
sixties. I'm keeping that in mind because I'll likely want to see how this goes
in the summer, when it's much warmer in the house.
I'm excited to see what becomes of the cabbage, ginger, and peppers in the
other two jars.
Bonus: the two older kids love the sauerkraut (but not the little one).
Puzzled
Kind of like in the recent George Clooney movie, The Midnight Sky,
when he uses some instrument to detect how near in the atmosphere whatever it
is that's killing all life on the planet, I've played a lot of puzzles in
recent months as a way to test if I have brain fog from long Covid-19. I don't
think I've had Covid-19. We've been pretty isolated, and I've never tested
positive. But I as long as I still have the ability to focus for some
substantial amount of time on a puzzle, then I guess I'm happy.
I'm writing about puzzles pretty broadly. I play about three Sudoku games
every day, but the coding counts, for my sysadmin work but also for research,
which involves a lot of R lately. We also are working on a 1000-piece actual
puzzle. It's nice to get lost in that. So, generally speaking, puzzles are my
instrument.
Salt the Hash
There was one last item on my to-do list for (near) total sysadmin automation. One
of the classes in our program uses an open source content management system
(CMS) with MySQL as its database. Normally, for a new user to set up an account
on the CMS, the CMS would need to have at least an SMTP server configured to
complete the user setup. I'm not allowed to use a full-blown email server on
this computer, and I didn't want to set up an email account and use something
like msmtp to have emails sent to new
users to complete account setups. What I wanted to do was merely batch create
the student accounts.
Batch creating the student accounts is easy with MySQL. To do this,
I download the roster for the course as a CSV file, quickly remove the unneeded
columns in LibreOffice Calc, and save this as a CSV file. Then I create
a sql source file from that CSV data using, primarily, some
sed one-liners, and the result would look something like this:
insert into table_name(id,username,name,email,active,role) values
(id_value,username_value,email_value,active_value,role_value),
(id_value,username_value,email_value,active_value,role_value),
...
(id_value,username_value,email_value,active_value,role_value);
But that sql source file was missing two columns: a hashed, salted password
column and a salt column. I've worked with databases enough to know more than
the basics of working with data for analysis or retrieval, but I've never
really worked with databases, other than doing the kind of thing as above,
where I have to modify user accounts for a CMS, and so I didn't know how to
create a sql source file that included the hashed password and the
salt. This meant that I could create the accounts for my colleagues, but then
they'd have to log in to the CMS and manually add passwords for the students.
At least I could generate passwords for them using pwgen or
diceware.
It took some reading to figure out how to accomplish automating the salt and
hash password process, but I worked it out and learned some things, which is
cool.
First, the CMS uses a 16 byte salt. To generate the salt in Bash, I learned
that I could use the tr command and random data from
/dev/urandom to generate it. So clever.
With that salt, I create a new sql file with the relevant MySQL
commands. Let's say the password for the new user is grapes and the
new user's account that I want to update has a table ID of 100, then to salt
and then hash the password and store it in the appropriate table cell for that
user:
update table_name
set password=sha1(concat('FCTSAB10-YKYGAC-','grapes'))
where id = 100;
And then I update the table to add the salt to the salt column. This is
needed for the CMS to parse the password and let users login.
update table_name
set salt='FCTSAB10-YKYGAC-'
where id = 100;
Sometime later I'll write a proper Bash script to automate this process for
the 50 or more students who use this CMS each semester.
Not Really a Kobayashi Maru
The NY Times site/app has a spelling bee game. The goal is to form as many
words as possible with the seven letters the game provides. Six letters
surround a center letter that is required in all word formations. Words must be
at least four letters long, and the player gets bonus points for forming
pangrams, words with all the letters used. Rankings start with Beginner level
and then end with Genius level.
I'm usually not very good with word games because my vocabulary is not the
greatest (I'm bad at crosswords, e.g.), but it's an enjoyable game and I got
reasonably good at it after playing it for a few weeks. Then one day I realized
this is the kind of game where it would be fun to write a script that would
help me solve the game every single time. So I wrote a Python script at the end
of last semester to do this.
The Python script receives input from the player and then asks the player to
specify which letter is required (the center letter in the game). Then it asks
for the length of words to form, like 4, and then generates words
based on that length. To generate the words, it creates all possible letter
combinations and compares those combinations with a word list, and selects
those, and then again selects those that have the required letter.
It doesn't work well with words that contain more than 9 letters just
because it's too computationally intensive for my desktop computer. I know that
there is a much better, easier, and less computationally intensive way to
solve this problem. For example, I could select all four-letter words from the
word list and then select those words from that subset that contain the
required letter, and so on. However, when I was writing it, I specifically
wanted to work with the Python itertools library
because I can imagine needing to use that library in some future research
projects. It's like when a former high school friend and I did stuff when we
were teenagers, we would always and intentionally choose the hard way to
accomplish our goal (e.g., we'd take the longest and most difficult path to get
to a location), but we always learned a lot, and had fun. Anyway, something to
play with next time I have the itch to do so.
Today I used the Python script to reach a score of 300. It seems like somebody scored 392. I think I need a better
word list to compete with those smart cookies who are probably not cheating
like I did!
Our neighbor died sometime around the new year 2017-2018. We were out of
town and came back to hear the news. His name was John, and he was a really
nice neighbor to have. We don't have a driveway at our house, and John invited
us to use his if we ever needed it after he saw my wife return home one day and
walk down the block in the rain with an infant and a little kid. When we
replied that we'd be concerned that we might block him from getting out of or
into the driveway, he replied, grinning, "I know where you live!"
We returned home from our new year's trip and met his sister, who gave us
the news that John died at home with his dog, Morgan, out back. His dog
survived, which is fortunate, because I guess she was outside for a couple of
days in the freezing weather. I used to help John catch Morgan, who would
sometime escape the yard and run off. Morgan liked our kids, and I hope she
found a good home.
A few people came and looked at the house after John died. We met one family
who stopped to take a look, and we were excited about the potential of that,
but eventually it was bought by an LLC and it's used for a rental now. The new
owner is nice, too, but it's not the same as having a neighbor. We often find
trash all over our yard (lots of beer cans) and listen to intoxicated, loud
renters on occasion. I'll say something when that happens but it's no fun
asking people to quiet down. One time I did that with the other next door, now
previous, neighbor, who was having a party, and then ten very intoxicated guys
marched over and proceeeded to pound on my door and threatened to beat me up at
like one in the morning. My children were sleeping, and I was quite annoyed. So
there's always the threat of a violent reaction when you ask people to stop
being annoying.
The current owners of the place took the fence separating our backyards down
last summer because it was falling apart, which is good, but it hasn't been
replaced because I guess the pandemic has caused the price of wood to
skyrocket. One day a couple of months ago or so, while having dinner, we
watched a guy through our window stumble out the house, not ten feet away, and
then pee on the driveway in broad daylight while we were eating. He then
staggered back inside that house.
This morning I woke up to find that the people renting the house right now
drove in our backyard and crushed our garden sometime late last night. I guess
if a fence was there, maybe they wouldn't have driven into that, or maybe they
would have knocked the fence down. The garden doesn't matter so much. I can
rebuild that. It was a cheap hack that I put together anyway, but I'm glad this
didn't happen during the day because the kids play out there.
I hope we get a neighbor someday, even if that means we have to move for it
to happen. It's nice to have neighbors. I didn't have the most stable of
childhoods, but there was a stretch of years when I lived in one place and had
great neighbors. My brother is still friends with a couple of them, thirty
years after we've all moved away. That's cool.
On Top
After all these years of using Linux, I've never taken advantage of the
top command and have instead favored htop, largely
because of the latter's nicer UI. Then, not too long ago I read a short article
on configuring top, and now
I use it more often than htop. It barely took some tinkering to
get a much nicer UI and to remove the large amount of noise that displays by
default with top.
Fermented Cabbage
I started three jars of sauerkraut today. One jar contains cabbage and
garlic. The second jar contains garlic, fresh ginger, and cabbage. The third
jar contains garlic, fresh ginger, one Serrano pepper, and cabbage. I have no
idea how the latter two will turn out, but I thought I'd experiment with some
things I had on hand. I'm especially curious how the one with the pepper will
taste. I hope it's spicy and tangy.
I can't wait to do cucumbers. I love fermented style pickles.
My Sysadmin Work
A few years ago, a number of faculty in my unit were using some ad hoc
services to teach a few technology courses. I suppose for some things, this
would be fine, but in several hallway chats, I kept hearing stories about the
instability of these services. For example, professor A would use X free
hosting service for some content management system, and then halfway through
the semester, the service would do something disruptive, which would then
disrupt the course.
Perhaps if this kind of thing only happened to one professor and
infrequently, then some other solution could have been applied, but it was
a problem several professors were experiencing often. So I proposed that we buy
and manage our own server. Or, rather, I proposed that they (the unit) buy
a server and that I manage it for the faculty and install whatever was needed,
as long as it was some open source solution since this would be a Linux based
server. I also wanted to use the server to teach a couple of courses: one on
systems administration and the other on semantic web development. And I knew
that one other faculty would want to use it for a similar purpose. They
accepted the proposal. A server was ordered. I set it up, got a domain name for
it from the university, set up SSL certs, and installed and configured what we
wanted.
It started off well and it was eventually used in six or seven courses and
more sections of some of those courses. A few of those courses used it to
access a couple of different content management systems, and a few others used
it for shell access to work on things like MySQL, PHP, and like. But then the
university made big cybersecurity changes about a year and a half ago, and it's
much more difficult for students to use SSH to get shell access from off-campus
now.
My solution to this was for the unit to pay for and use a virtual machine
provided by a hosting company for those courses that needed shell access and
keep using the unit's server for those courses that use content management
systems. The virtual machine is super cheap and even though it's minimal, it's
fine for our needs. They accepted the proposal and this is now the current
setup, which means that I'm managing two servers. In a way, this is more work,
but in another way, it's better to partition out the separate use cases because
it's easier, from a security standpoint, to keep the shell users away from the
content management systems. I like to give my students who have shell access
a lot of room to roam around the directories, and I couldn't do this when they
were all on one machine because I had to lock down a lot of directories. Since
the shell users are now using a virtual machine at a hosting company and not on
the university's network, and since the machine itself is managed well by the
company, it's not so much of a problem if the system is compromised,
intentionally or not.
Even though it's a bit more work, most of that work is simply keeping an eye
on things. That's not nothing, but I've largely automated the other tasks. For
example, for one course, every semester I need to create shell and MySQL
accounts for a list of students and create databases and set up privileges for
those databases. I had written a couple of Bash scripts to take care of this
and recently merged them into a single script that does all this work. I still
want to generalize the script a bit more but it's only used for one course, and
so there's no hurry. Here's the script:
For the original server, the faculty who teach one of the courses that uses
a content management system (CMS) need new students added to the CMS every
semester and in particular roles in the CMS, and students removed and content
purged from the CMS from the prior semester. Since this is an open source CMS,
I studied the MySQL databases and figured out how to automate this so that
I could add and remove students and delete old content in batch. Otherwise, the
faculty would have had to delete everything manually in the CMS. The faculty
still have to send the students their passwords for the CMS. I had installed
and configured an email server for this machine to automate the crendential
process, but the university's cybersecurity folks detected the email server and
asked that I turn it off. Oh, well.
I'm a tiny bit burnt out doing this stuff. I still have to teach, research,
etc., but mostly, it's good that I'm doing it. Since I teach a system
administration course, the work keeps me current, and it's important to me that
I stay current with these technologies so that I can teach better.
Back To i3
For some reason that I can't recall, last spring I switched back to Gnome after using i3 as my window manager for quite a long while.
Maybe I just wanted a fresh experience of something---a change of "scenery"
given that we were recently homebound.
I like Gnome and will keep using it off and on, especially when I need to
record video. It's less of a hassle to manage audio and video in Gnome than it
is in i3, and for a desktop environment, it is a minimal and out of the way
one, especially compared to others. For most of my workflow, though, there's
something quite satisfying about the minimalism of a tiling window manager,
which I first started using well over a decade ago when ratpoison was my primary window
manager.
I like minimalism so much, earlier today I switched to a virtual terminal to
work on a manuscript. It's a great environment for writing. Whether it's
a tiling window manager or a virtual terminal, nothing beats dedicating one
whole screen to one application, especially for writing. I'm looking forward to
using Fedora's spin on i3 when Fedora 34 is release in April.
Regarding the lag that I reported in my previous entry, when I was searching
the error message that I was seeing in journalctl output, I saw
someone post a fix by switching their USB keyboard cable to a USB 2.0 port from
a USB 3.0 port. In an act of desperation, I did that, and it seems to have done
the trick. Who the heck knows. I'll check the journalctl logs
tomorrow to see if the lag is still showing up there.
On File Systems
File systems are a weak point with me and operating systems. This is
because I've never really had to deal with lots of disks, with
complicated storage needs, humongous amounts of data, etc., and
therefore never really had to learn a lot of the intricacies. I
remember, for example, in my early days of using Linux, having to edit
/etc/fstab and feeling bewildered by the process and trying
to figure out how to understand the relevant man pages.
However, since I started to teach system administration with Linux, I've
had to learn a lot more than I did, and now feel good working with
partitions, volume management, and related tools.
Now that Fedora has switched to the Btrfs file
system, I'm starting from scratch again since I'll need to teach Btrfs
the next time I teach my sysadmin course. This file system is a bit
confusing, and to make matters worse, I've been having issues with my
hard drive (I think) since I installed Fedora the other day. Since I
installed Fedora right after installing the new drive, however, I can't
be sure where the problem is without a lot more investigating. Are the
problems I'm having due to the physical hard drive? Or the file system?
Or something else, like Wayland? I'm completely not sure. Too many
variables.
This morning I used the Btrfs scrub utility, and it
felt like the thrashing went away as a result and that the OS
was running more smoothly. However, as I type this in vim,
there's sometimes a decent amount of lag after pressing keys. It's
pretty frustrating, and since I have a lot of non-Linux work to do this
sabbatical, if I don't get it resolved soon, I might switch back to
Ubuntu. Perhaps Fedora is too cutting edge for my daily work needs.
Update: The keyboard lag is a libinput issue, it
seems, based off of journalctl. But then I ran sudo
libinput debug-events, and everything seems dandy, i.e., no lag.
Since I was having the problem in vim, I decided to try
nano, and I'm not getting any lag in nano (I'm using
nano now). Now I have to figure out what's going on with
vim.
Loud, Clamorous, Blaring
The theme of the day is NOISE. The children bounced (still are) off the
walls while I worked. Way more than usual. Their loud pitched screams
accompanied their frenzied physicality. Fortunately, I was able to work in
a separate room. Unfortunately, this offered zero sound and vibration proofing.
The wee one wouldn't nap and is hyper because of it.
The new hard drive I installed is loud, too. So LOUD. I regret not getting
a SSD. I mistakenly put the desktop on top of the desk, adjacent to my
ear. Wrong move there, Burns. I finally unhooked the cables from the computer,
re-seated the new hard drive to be sure it was snug, and converted the desktop
into a deskunder. I think one of these things helped with the noise
a bit.
I guess I was surprised by how much I've adjusted to this atmosphere over
the course of this past year. "Adapt or perish," I suppose. Of all things, it
was the hard drive sound that was driving me up the wall. But fixed that.
In My Next Life
My hope is that if there is a next life in this world, that I am
a singer-songwriter in that life, and that I feel all that I feel now, and that
I am able to capture it in song and sing it out.
You Have Mail, too
My very simple email script that I wrote yesterday did not
perform as expected this morning when I ran it. I should have realized this.
The basic if/elif statements meant that the script would report on one
mailbox at a time and that I would have to open mutt for each
mailbox in order for the script to move on to the next mailbox. Subpar
work, Burns!
So I modified it this morning. I assigned the mailboxes to a Bash array and
then surrounded a simpler if statement with a for loop that
cycled through the array. I defined a function for this and then called the
function at the end. This works as desired and the code is nicer to look
at:
#!/bin/bash
checkmail() {
base_dir="$HOME/Mail"
mailboxes=("$base_dir/INBOX/" "$base_dir/association_lists/"
"$base_dir/university_lists/" "$base_dir/library_lists/"
"$base_dir/courses/")
for mail in "${mailboxes[@]}"; do
if [ -s "$mail"new/ ] ; then
echo "You have mail in $mail."
else
echo "No new mail in $mail."
fi
done
}
main() {
checkmail
}
main
Maybe later on I'll have it report email metadata. I took at look at the
email headers last night, and it wouldn't be a hassle to do, but as I was
looking through the headers, I was thinking that I might not care that much.
We'll see. Perhaps I'll just return a count of new emails.
A small command-line program called email that I used on Ubuntu
does not seem to be available in the Fedora repositories. All the program did
was tell me if I had new or unopened email in various Maildir directories
(mailboxes), which contain subdirectories new/, cur/, and
tmp/. I liked it because I could just type out the command to see if
I had new email without having to open mutt, the email client that
I use on the command line (I know, this is super lazy of me).
I also used email in my .bash_functions file. Although
I have a systemd timer setup to sync email every five minutes using
mbsync, I have a function in .bash_functions to sync and
list new emails on command:
I wanted to keep using that function, and so I hacked together a very simple
little script to replace what I lost by switching to Fedora. It uses the Bash
[ (test) builtin with the -s option to check if the
new/ directory is greater than zero. If it is greater than zero, then
that simply means there's a file in that directory, and if there's a file in
new/, then it means there's a new email, or more specifically, a file
that hasn't been seen by mutt. When mutt does see
that file, it gets moved to cur/, even if I don't open the email. If
I don't open the email but mutt sees it, then mutt
labels it as unopened and not just new.
Eventually I'd like to update the script to print out the
From and Subject lines. That way I can decide
if I want to open mutt at all and read my email or just ignore for
a while. In the meantime, I can use mutt -Z to open a mailbox that
has new email, if email says I have some.
Here's a smaller version of the script. The full
one checks several Maildir directories that new mail goes to based on some
filters I use.
#!/bin/bash
# Date: 1/24/2021
# A way to check if I have new email
# Specifically, check to see if the Maildir new/ is greater than 0
base_dir="$HOME/Mail"
inbox_dir="$base_dir/INBOX/"
if [ -s "$inbox_dir"new/ ] ; then
echo "You have mail."
else
echo "No new mail."
fi
A Good Long Walk
I took a good five-mile walk today with the wee one, who was strapped in
their stroller, layered up and blanketed. They napped the whole way.
I crossed paths with a colleague, a delightful one. We chatted for a bit,
and that was very nice.
When I walked to work every day, I got into the habit of listening to
podcasts. I've gotten out of that habit, and it makes me glad to have let it go
and to walk in silence.
I usually nod my head at or wave to people when we pass each other, if we
happen to catch each other's eyes, but it's not often that anyone responds. The
only stranger to wave hello to me was another parent with her child in
a stroller. I guess it was something about the shared situation that warranted
acknowledgment and a connection.
Always the Tinkerer
I've been playing around with this site's design recently. I wanted to add
more pages and I didn't think the last layout, with the horizontal nav bar,
worked well for that. But it's also that I like to fiddle around and keep up to
date with basic web design ideas. If I don't, then I quickly start to forget
those things.
I'll probably redesign it again in a few months, in fact. I predict that
I'll start tinkering again when I'm knee-deep in my sabbatical research only
because I'll want a mental break, and doing little techie things like this can
be a nice reprieve.
Fedora Switch Complete
The new hard drive is now installed. It took 2 minutes and also hours. Here's the process:
Back up home directory to external drive (short process since I backup often)
Download Fedora ISO
Create Fedora bootable USB stick
Boot into a live Fedora session
Overwrite old disk with random data. This takes hours. So:
Help make dinner
Clean up
Play Scrabble with family
Turn off computer
Disconnect hard drive and pull out of mount
Remove hard drive cage. I kept looking for how to unscrew the cage and my
9 year old child, who is with me because they want to learn how to change
a hard drive, notices that the cage is flexible and all I have to do is pull
the cage off. I have very literally changed hundreds of hard drives. LOL!
Place new hard drive in cage and remount
Now, because my desktop is not near my router, I have to use a USB wireless
dongle. Because this is a work computer, my work bought one for me. Because my
work can only buy from select vendors, I only had two choices. Because neither
choice supported Linux by default, I had to find a driver for it. Because the
base install of Fedora doesn't come with the necessary development software to
install a new driver, I had to connect the computer to the router, which again,
was in another room, to have internet access to download the required software.
So:
Relocate computer, monitor, etc to the room with the router
Connect computer to the router with an ethernet cable
Install Fedora on the new hard drive with the bootable USB stick
Download and install necessary software to add the new driver
Download driver
Install driver (it worked)
Relocate computer, monitor, etc back to my desk
And finally, restore my backup and install additional applications that are
not installed by default (mutt, etc).
Usually when I install a new Linux distro, it takes an hour to install and
set things back up to how I like it. But because I wanted to secure wipe the
old drive and because I had to relocate the computer to another room, this
process took a lot longer. But all is well now, and Fedora is nice.
My Desktop after Eight Years
Even though it's been nearly 8 years, my desktop computer for work is still
humming along nicely. When I selected this computer, I intentionally picked out
a computer that was fairly beefy at the time because I wanted it to last a long
while. The computer has 4 cores (i7-3770 @ 3.40GHz), 32 GB DDR3 RAM, an NVIDIA
Quadro K2000 GPU, and a 1 TB hard drive at 5400 RPM.
I can't remember if I added RAM or replaced a bad RAM stick soon after I got
this machine back in 2013, but other than that, I haven't changed any of its
hardware. I do run statistical computations on this machine for research but
not real big data computations, and the machine handles it all fine.
The machine also runs Linux. I've been a long time Ubuntu user but will
switch to Fedora soon. I teach Fedora in my Linux systems administration course
and have grown to like it a lot. I'll install Fedora this week when I replace
the hard drive. The current drive has been spinning for over 6 years and
4 months, and although a SMART test shows that it's mostly okay (there are some
pre-fail values), it is past its lifetime. The new drive is twice as big as the
current one, and I doubt I'll need the extra space for years, but it also runs
at 7200 RPMs, and the faster speed might be nice.
I hope this machine lasts at least another 8 years (or even longer). If it
does, I like that I'm saving my employer a lot of money and that I'm lessening
my environmental impact, albeit a very small one, by saving this machine from
the recycle bin and replacing it over and over.
I Will Pass on Time Travel
I have this recurring night or daymare where I travel back in time to my
younger self. However, instead of there being two of me at this previous point
in time—i.e., an older me that goes back to a time when the younger me also
exists—in this dream it is only my conscious mind that is sent back and that
occupies my younger self. In this scenario, I do not relive my life as a third
person viewer, but I re-possess my old self, so to speak, and this gives me the
ability to redo my future.
While at first blush it seems neat that I could relive my life, when I find
myself back in time in this dream, I realize that the future that I remember is
forever lost—that there is no way to recreate the steps that led me to my old
future or to prevent what I know about my old future from influencing what I do
in the new present. I am forced into a new future.
And I panic because of the implications of this. A new future means that
since my three children are partly a function of the exact time they were
conceived, that is, if they were conceived a day later, then different
biological interactions, inevitable if occurring at different times, would
result in different children—just as children that are conceived between the
same two people at some other time in their relationship are siblings and not
identical or clones of the prior ones. In essence, while I think I could manage
to find my wife again in this alternate universe, I think it would be
impossible for us to have the same children again even if I do find her. Going
back in time in the way I dream it would thus be disastrous.
This is a bizarre dream to have, but I think it's simply an active
imagination that's considering getting older and taking measure of the life
I've lived. Overall then, it's a good dream, even if it has this nightmarish
setting, because it's about how I don't care to relive my life simply for the
fact that the sacrifices involved are too costly. It's about how my life is not
just about me but also about these three little darlings that are a part of my
existence. Even if my life hasn't been anywhere near perfect and there are
struggles that I have now that I could have prevented if I had known better,
I have taken measure of it and have found nothing wanting and everything to
lose.
Update 1/16/2021: Ha! My wife tells me this is like the plot to the movie About Time. I haven't seen it, but I guess I will now.
Citizen Science
I've lived in the same house going on eight years now. What's nice about
that is that I've been able to notice how the neighborhood changes around here.
It changes pretty dramatically each year since a lot of students live on the
block, and they usually only rent for a year or two.
It's also been nice to watch how other things change. There's a groundhog
that lives out back, and we've noticed it come out and eat the grasses
throughout the years. My next door neighbor has a holly tree in their front
yard, and every winter the robins strip the berries off that tree. It takes
them about a half hour or so to complete their work, and because there are so
many robins and because it happens so quickly, it's fun to watch the
frenzy.
This year the robins went after the tree a couple of days ago. I had the
sense that it happened at a much different date then in previous years.
Fortunately, I had taken photos and video of the event in some past years.
I went through my photos and found that the robins had stripped the tree on the
following dates:
January 26, 2014
January 20, 2016
January 12, 2021
Given that this appears to be occurring at earlier dates, I was
curious if that was correct and if so, if there was a cause. My initial, vague
hypotheses were that 1) the tree was fruiting earlier, or 2) the birds had
changed their behaviors, and that either of these were due to a warming
winter.
I thought I'd reach out and share this information with someone who does
work on climate change and ecology at my university. I searched for a name and
then emailed the professor. She responded back and added that it might also
have something to do with the sweetness of the tree, given the sweetness of
other trees in the area. And she let me know about some citizen science
activities that I might find worthwhile! It was pretty cool, and I'm thankful
that she responded. I look forward to collecting some data with the
children!
On Aging
I've gained a few pounds since the start of the pandemic. I used to walk
a few miles every day by going to work and back home, but since I've been
working from home, I walk much less. So, I started running a few days ago, and
it's made me realize the difference between my twenty-something year old body
and my post-mid-middle-aged year old body. The difference is this: in my
twenties, when I'd start a new exercise, I'd only feel sore. In my
post-mid-middle-ages, I not only feel sore, but I also feel like my body is
going to break apart. This cracks me up. But the running has made me feel
better overall even if there is a lot of creaking going on in this shell of
mine.
The Trick to Social Media
We have lived with social media for fifteen or so years, but I have only now
realized the trick with it. Here it is as a general, universal rule that
I recommend all people of the world follow:
Feel free to post to social media, but never ever read, watch, or listen to
anything posted.
Or,
Produce it. Never consume it.
On Conservatives
I think of myself as politically liberal but not uncritically so. And it
seems to be important, at least in how we tend to form societies, that there
exists a healthy conservative party. Because if the current conservative party
cannot heal itself and eventually splinters, then what we saw yesterday might
get worse
for democracy in the US.
Republicans, heal thyselves. Pronto.
Lullabies and Mixtapes
My wife has been responsible for putting the children to bed when they were
infants. She'd normally hold and nurse them until they fell asleep. As soon as
they become babies/toddlers, I would take over.
During my tenure, I have usually put the children to sleep with music, but
I've had separate playlists (mixtapes) for them. The first child's playlist
followed a specific musical pattern. The songs would start off upbeat. The
third song would reach a crescendo, and then the fourth and remaining songs
would wind down and therefore wind them down'for example: 4) He War
/ Cat Power, 5) Drive / The Cars, and 6) Gypsy / Fleetwood
Mac. If the child wasn't asleep by the time Drive completed,
Gypsy would definitely do the trick. Simply because I found it a bit
funny, the last song in this playlist was Nonstop Disco Powerpack
/ Beastie Boys. I played this to test if they were asleep. If they started to
dance, then I'd need to start over. This was rare, though.
The second child's playlist mostly followed the same, general pattern but
was shorter because they usually fell asleep faster, and still do. Their
playlist (mixtape) ended with St. Judy's Comet / Paul Simon. I liked
ending it with a bona fide, modern lullaby. It's a sweet, loving song. This
child also adored the Moana soundtrack, and for a while I think I knew
the words to most of the first seven or so songs of that soundtrack.
The third child technically has only one song in their playlist—Always
On My Mind (Live) / Willie Nelson. After that song plays, because I use
a streaming service, the rest that play are determined by whatever algorithm
the service uses. But as soon as Nelson starts to sing, even if that child
might be sitting up, standing up, or crying and resisting, they'll drop their
head down onto my shoulders and start to sing along. They're still not quite
talking yet, but this child usually bellows out wordish sounds that resemble
the last word of each line in the lyrics. It's not uncommon for them to fall
asleep by the second song that plays, which might be another Nelson song or
a Kris Kristofferson song, but it could take nine or ten songs to do the trick.
This is a tricky child.
More Hard
Today has been another hard day with the kids. Meltdowns galore. I am sad
for these children of mine.
I have been trying to teach them how to meditate—or just breathe—when they
get upset, and to take them on walks or to the park. Getting out of the house
can help a lot, but it can be hard to gather and shuffle three little things
out the door when it's cold outside. Layering up takes time and is difficult
when they're already hyped up.
They miss their friends. In the absence of their friends, they often look to
me to be their friend and to play with them all day, but I can't always be
available to them in that way. I try at points throughout the day, but not the
whole day, which is what they increasingly want.
My research sabbatical is this spring. I've wavered about postponing it
because I doubt I'll be as productive as I would like to be. When they have
meltdowns like what happened today, it is difficult to get back to work.
Recovery takes a while. I'll need to think of new ways to be more preemptive
with this. Past ideas don't work anymore.
Somewhat Automated
I have this blog somewhat automated with two Bash scripts. The first one ./WWW-toc-generator
generates a new table of contents entry for the home page and inserts the entry
on that page in the right place. The second script ./make-rss
generates the XML for the RSS feed. Both scripts are pretty ugly, but I'll
address that later.
Once I've written a post, the other steps only take a minute to complete,
but I'd like to automate it all. Thus, the next step is to automate inserting
new blog posts into this page and automate inserting the new XML item block
into the index.xml RSS page. Then clean up the scripts. I'll rewrite them and
try to make them a bit portable. Right now they are far from that.
I've never been completely happy with other flat-file based web projects
even though there are some nice ones out there. I'm happy that this project, as
slow as it goes, is scratching an itch I had about that.
The Dark, Hard Days
I was a line cook for about 18 years, and I loved it and loved being really
good at it. I loved those days when the restaurant was busy and cooking and
service went smoothly. The world disappeared and a singular focus on cooking
replaced it. The physical and the mental would meld, it felt like.
There were times when line cooking didn't go well. A thing would go wrong in
the front or the back of the house, and the effect cascaded and would break the
day. It felt herculean to regain order. There was some joy in that kind of
recovery, if we were able to recover, even if most of such days lacked joy.
There were times when line cooking that the day felt like a sustained,
rhythmic assault, but the rhythm was odd and out of sync with our work. The
tickets would print quickly and incessantly. It felt hard to breath and to get
through it required an intense, determined will to focus. I remember working
one shift like this the day after a Thanksgiving. The assault lasted hours and
to calm myself and push through it, I found myself imagining curling up in
a fetal position with my arms lifted up over my face to block the blows to my
head. This was a most awful day.
These past nine months have felt like the second scenario above but
sometimes the third. It felt like something went wrong last March and then
a cascading effect broke the rest of the year. My children suffered, my wife
suffered, my family suffered, my friends suffered, the world suffered.
Our own little household, 900 or so livable square feet of it, mirrors
a cramped restaurant kitchen. We stepped over each other, tripped over each
other, blasted each other sometimes, even if only under our breath, but
sometimes to each other. We cried out for help. We tried to give each other
help. We sought some help from outside. We regressed and then got better. Over
and over.
We are recovering, I think, which is why the last two posts have felt good
to write. I've felt good, better. To push through this year, instead of curling
up and weeping, which I've often wanted to do, I tried to hold my children as
much as possible and to talk with my wife more. This has helped. I wept, just
two weeks ago, when I found out my Mom had covid. I didn't think she'd make it,
but she did. It's not stellar yet, but the days feel like they have less weight
to them than they did even until recently, and I have high hopes that we'll get
through this stronger than we were when it started.
On Buddies
I am in a group chat with some college friends. It's been on and off since
the start of the pandemic, but it's begun to flourish recently. It's nice
because even though it has been nearly 26 years since I've seen some of these
people, we talk and joke and razz each other as if no time has passed—as if we
haven't become middle aged, as if we haven't married (or not), raised children,
become grandparents, had failures, gone to funerals, gotten divorced, and so
much more. Or, despite all that, or because of it all, because we do comment on
the intervening years and how much has happened and how it has all affected
us.
When I was growing up (nine different public schools, etc), and when
I worked as a line cook (21 restaurants and many different states), I lived
a fairly nomadic life, as much as that may look like in modern America. It's
meant that most of the people I've shared my life with, or have shared their
lives with me, are not in my life anymore and never will be again, nor
I theirs. There's a kind of gravitas attached to that, and I didn't realize how
much, like the father in James Baldwin's Tell Me How Long the Train's Been
Gone, that I was ...
lonely for those faces which had borne witness to that past
It's been nice then not just to have this automatic reconnect with these
friends, but to have it with these specific friends who once bore witness to
some significant years of my past and whose past, significant for them also and
for their own reasons, I bore witness to. It's nice that there's still some
part of us that is who we were then—that there is some continuity, despite the
nomadic life, despite the intervening decades, but that there's still something
to learn about each other that's different and that this promises growth in
these friendships.
This loneliness that I had felt was not sourced in nostalgia. I do not wish
to relive those days nor recreate them. I am happy with who I am. I'm happy
that I have a family and a nice job. I want to keep going and keep growing as
a person and with my partner, and to help my little ones become the persons
they will be. But still, it's nice to reconnect and share again. It feels
really good.
Three Quarters of a Year
Three quarters of a year, and almost three seasons, have passed since the
start of this quarantine. My Mom came down with covid recently, and she somehow
defied the odds, which were not remotely in her favor—she's the definition of
underlying conditions. I dreaded this happening to her. She works in a big box
store in a geographic area where it's common for people to refuse to wear masks
and get aggressive if requested to do so. If the former wasn't enough for her
to more likely contract covid, the latter made it more so. Well, it happened,
and I'm so happy that she's still here with us and that she's out of danger for
now.
In our house, we call this time the Time of the Sickness. Despite all the
difficulties (I've been trying to learn how to cry again, which helps with
mental health), some great good has come out of it for us as a family, and I'm
very thankful for that'a very silver lining around a very dark cloud. As if
before my very eyes, I've watched my youngest transform into a toddler from
a baby in a way that I don't remember noticing with the others, and it's been
fun to watch how this child has latched onto their two older siblings, often
mimicking the second oldest and demanding to play with them every chance they
get. And I've watched my older two become big kids and best friends. I can't
steal the last cookie in the sight of my middle child without that child
declaring that I must save it for their older sibling, and the oldest one often
gathers the younger two to read to them as they sit on each side. So although
it's been the Time of Sickness and Great Sorrow (too), at least it's also been
the Time of Togetherness.
Like everyone else I hope, I look forward to the end of this Sickness, but
I'm not sure how much I want things to change for the family. I'll still have
the option to work remotely, at least for part of the week, and I will probably
take that option as much as possible. I've grown kinda comfortable working amid
the blaring of children.
Update (12/20): Ha, ha! Of course, an hour after I posted this, one kid had
a meltdown and the other two started fighting. Such is this roller coaster.
On Fezzik
Who knew The Princess Bride was so prophetic about mask wearing?
Fezzik: Why do you wear a mask? Were you burned by acid, or something like
that?
Man in Black: Oh no. It's just that they're terribly comfortable. I think
everyone will be wearing them in the future.
On Ebooks
I purchased an ebook reader recently, and I'm enjoying it. So far I like not
adding more print books to my collection. The weight of the ones I have now is
too much, although I still value having them.
I like that if I do not become involved with a book that I'm reading on the
device, I can simply remove it from the ereader and forget about it. Unread
print books haunt me when I see them on my shelves. They remind me that I have
somehow committed the sin of uncommitment. I appreciate freeing myself of that
type of guilt.
I wonder, though, if my migration to ebooks will have at least one negative
consequence. My print books act as indices to parts of my life. I can look at
any of the books on my shelves and remember when I got them and where and what
I was doing during those times in my life. I know that I will lose that with
ebooks. I might have other ways to index my life, though, and I guess that
means time will tell, or it won't.
A Good Read
Tonight I finished reading Exciting Times by Naoise Dolan. I don't
remember why I picked this book, but I think I saw it on a list somewhere.
However I chose it, I'm glad I did. It was quite a pleasure.
I am not quite pleased with a couple of reviews of the book that I read.
I wanted to see how others thought about the ending, which is why I read the
reviews after I read the book. The reviews were positive but also critical in
a way that I thought were unwarranted.
So, remind me not to read reviews again. It kind of spoiled the nice feeling
I had and tend to get when I've just taken in a good story.
Let's Dance
I like that toddlers automatically dance to music. Let's dance, kiddo.
On Sudoku
I've been playing a lot of Sudoku in recent months and I think I've gotten
fairly adept at completing very difficult puzzles. Sometimes when I'm stuck,
I'll work through all the empty cells and add notes for all the possible
candidates in each cell. Sometimes that doesn't help at all and the puzzle
looks like a mickle of numbers. However, if I go through and delete all of the
candidates and start over, more often than not I'll see what I missed and
complete the puzzle.
On Carrots
I was lucky to once work for one of the greatest chefs in the country, and
she didn't like carrots, and we never had them in the restaurant. I thought
that was funny because, you know, mirepoix.
But it was fine. Everything tasted wonderful. Her broth, her sauces, her
soups, everything was out of this world.
Primate Lessons
There are a lot of PBS documentaries on primates, and I've been watching
a bunch of them and realizing how little I know about our fairly close
biological relatives.
For example, I did not know that there is often a rigid social hierarchy in
many primate groups, as there have been in most human societies throughout
history. I wonder, as primates, if we have a kind of default disposition toward
that kind of societal structure, too, and if it makes democracy and equality
a hard sell for us. If so, then it is fascinating that attempts at democracy
and equality have been as successful as they have been for so long here in the
US, even if that success has been marginal for many and has fallen short,
tragically, in so many ways, but then not surprising that it is so fragile and
threatened, as we are discovering these days. I wonder if this default
inclination, if it exists, is the reason for the appeal of the strongman among
half the population.
These thoughts give me new meaning to King's quote, that the arc of the
moral universe is long, but it bends toward justice. My take on this now is
that, it's a moral universe because we are not simply primates, but the arc is
long because we are.
On Solace
I've moved away from listening to podcasts and instead have been listening
more to music in recent months. It's been a great source of comfort. Lately
I've been revisiting Kris Kristofferson and Willie Nelson's catalogs. They
remind me a bit of home, but
not in a nostalgic way, and that's not why I've been listening to them anyway.
I think I just forgot how poetic they were, or I never appreciated it until
now. I need sung poems.
Surreality Polarity Reversal
When the pandemic hit, it felt surreal to go outside because the world was
so quiet.
I took a walk the other day. There was so much activity that I forgot for
two seconds that there was a pandemic. Surreal also.
Dear Mom
You're still here, but it's been a long time since we've had a visit with
you and the rest of the family. I find, as this long year stumbles on into its
darkest season, that I am missing you all very much. Give the rest of the
family a big hug for me.
Love,
Sean
Not That 1984
What was it about the movies that were released in
1984? It's as if all at once a bunch of different movie makers found the
key to unlock pop culture. I remember going to the movies when I was a kid, but
there is no year where I remember going to the movies to see all of these, and
there's no year that occupies such an outsized space in my head as that year.
It could have been my age, but that can't be all of the reason.
On the Historical Person
What if someone of historical note traveled through time to today, then
heard someone quote them, and responded, "I said that?"
The time travel part would be remarkable, too.
A Pictorial List
My middle child, who is not yet writing, thought I asked them to list some
ideas they might have for a project. To create their list, they drew eight
equal sized rectangles on a sheet of paper, and in five of the rectangles, they
drew a picture that captured a specific idea. The remaining three rectangles
were left empty.
I simply think the preliterate mind is fascinating, but it also made me
think about lists differently.
Aside: This has been a very hard seven months, but there have also been
these very gratifying and loving moments, too. I'm grateful for that.
On Covid19 and Keystone Species
I was watching The Serengeti Rules episode on PBS about
keystone species, and the part where Robert Paine discovers the abundance of
mussels after removing the starfish from the tide pool made me think that we
are the mussels and covid19 is the reintroduction of a keystone predator.
The crazy thoughts we (or is it just me?) have after seven months of
this.
I am not a biologist.
s/awk/R/
One of the difficult parts of R is simply cleaning and prepping the data.
I'm curious if that part of a research project would be better served using
Awk, since Awk is a data-driven programming language, and then let R (or
Python) take over for the analysis. I think I might give it a go with this next
research project I'm working on with some colleagues. It will be a challenge,
but I bet it might pay off nicely down the road.
Update: I suppose I should have titled this post with the Awk equivalent for
find and replace, instead of the sed version. Oi!
s/sed/awk/
How did I not know that sed could work on a specific field or
occurrence in a line? Instead of:
cat test.csv
apple apple apple apple
awk 'gsub("apple", "orange", $2)' test.csv
apple orange apple apple
We can do:
sed 's/apple/orange/2' test.csv
apple orange apple apple
Or specify a line:
sed '1 s/apple/orange/2' test.csv
apple orange apple apple
How nice.
On Marriage
My wife said I'm a Dwight.
On Teaching Linux
I have been using Linux for a long time now. In the early years it felt kind
of magical and new and mysterious, and what I really mean is that using the
command line felt that way, and would have felt that way if I was using the CLI
on any *nix-based operating system. It is a really comforting place for me to
be, and sometimes I wish it was the only computing interface needed.
The magic and mystery faded a few years ago. I suppose that's likely to
happen with lots of things. Getting stuff done became more important. Then
I proposed an undergraduate course on Linux systems administration, and in
teaching that course, I have discovered new things about the OS and
rediscovered experiences I had long ago.
That's all. I simply wanted to reflect on this for a moment, and be grateful
that though I have people in my life that are infinitely more meaningful than
a computer, I have this small thing that brings me calm.
Dark Nights
I have this routine where I wander the house before bedtime each night,
picking toys, clothes, and litter off the floor. I like to pause at the
backdoor and peer through the window. I like to admire the night and see the
shadows cast by the moon and the occasional night creature—the possum, the
raccoon, the mouse. Last night I couldn't see a single shape. The clouds kept
the moon hidden and the street and surrounding house lights were off or too far
away to have an effect. The darkness was beautiful and eerie and almost
total.
On Revising
I couldn't let go the last Bash script On Distractions. As I read more about
awk, I learned that it was possible to write multiple
condition-block statements. It then occurred to me I could write a (long)
one-liner using this technique and that the Bash function and the
awkif-else statement were unnecessary:
#!/bin/bash
systemctl status --user mbsync.timer |\
awk -F";"\
'/Trigger:/ && $2 == "" { print "Syncing..."}
/Trigger:/ && $2 != "" { print "Time left to sync: " $2}'
The code instructions:
Run the systemctl command
Pipe output to awk
Do a regex search for Trigger:
If the output is NULL, then the systemd timer is syncing
and print that.
Do a regex search for Trigger:
If the output is not NULL, then the systemd timer is
counting and print the count
On Distractions
It was a fairly productive day, but I'm not sure how I got anything done.
Lots of distractions.
My first distraction of the day was all my fault. I use mbsync
to retrieve email and I have a systemd timer (instead of
a cron job) set to retrieve email every five minutes. This is the
first time I've used systemd instead of cron. It's
fine, but even though I have no skin in the systemd controversy,
I'm often annoyed by the length of some of the commands. For instance, to see
when mbsync would next sync my email to my desktop, I'd type this
out:
systemctl status --user mbsync.timer
I wanted to fix that. I could have taken better advantage of Bash history,
but I thought I could make it a bit more entertaining, and this morning
I decided to write a small function to replace that whole line, and I also
thought that I'd write it so it would simply return the time left until the
next sync. So I wrote this:
systemctl status --user mbsync.timer |\
grep -F "Trigger:" |\
awk -F";" '{ print "Time left to sync: " $2 }'
And that worked fine. It would output something like:
Time left to sync: 4min 17s left
That's pretty much what I wanted, and all was rosy until I ran the function
and got something meaningless in return. Then I realized that
mbsync was syncing at the moment that I ran the function and so
there was no time info to return. Enter distraction, and I said to myself,
“what was the syntax for an awkif-else
statement.” I'm only beginner level awk writer, and it had been
a long time since I played around with awk conditionals.
But I worked at it and kept boinking the if statement up,
and there were many other distractions that had nothing to do with any of this,
but eventually, I got rid of the bugs, and now when mbsync is
syncing, my little script checks if field two is null, then returns "Syncing
...", else it prints the time left to sync, per the systemd status
message:
#!/bin/bash
# Check how much time left to sync email
# Aug 26, 2020
# Sean Burns
gettime () {
awk -F";" '{
if($2=="")
print "Syncing ...";
else
print "Time left to sync: " $2
}'
}
# Replaced grep with awk (8/29/2020):
#systemctl status --user mbsync.timer | grep -F "Trigger:" | gettime
systemctl status --user mbsync.timer | awk '/Trigger:/' | gettime
Specifically, when mbsync is syncing, it tells me:
Syncing ...
It's things like this that make primarily working at the command line fun in
the same way that playing and solving a hard Sudoku puzzle is fun. And
I learned something, too, which I'm happy about because I think
awk is a neat programming language.
A Distro Hop
I've begun the migration to Fedora Linux. I installed it on my laptop,
replacing an Ubuntu installation, and have really liked it. If I complete the
migration, this will be the first non-Debian based distribution that I've used
as my main OS since the early 2000s, when I used to run Red Hat Linux and
Mandrake Linux, my first two GNU/Linux OSs.
I've been using Fedora for a few years now on a server and have also used it
as the demo server in my Linux SysAdmin course, so it's not entirely new to me.
What's new to me is the desktop version. I like the take on Gnome (although
I prefer i3), which seems to work much better than it does on Ubuntu.
I may switch back to Ubuntu someday. Who knows? But in the meantime, it
feels kinda good to distro hop—feels like my first days with Linux.
On Conspiracy Theories
I think if I were to believe in a conspiracy theory about Covid-19, I think
I'd believe that this is a plot by NASA in order to test how well humans are
able to self-isolate for long periods of time. You know, because space
travel.
Seriously though, I know some people who tend to believe in a few kinds of
theories, some related to Covid-19 but also a few others, and it's starting to
really annoy me.
I read Nathaniel Hawthorne's short story, Earth's
Holocaust, about 25+ years ago, and re-read it recently because I kept
thinking about it these last few years. When I first read it, I was studying
religion, philosophy, and literature, and that had an impact on how
I interpreted the story. Now that I am in the social sciences, I can tell
I read it much differently. But since that old me is still there inside, it
felt like two different, almost conflicting, identities were reading it at the
same time. Regardless, though, it's still a depressing tale, and the question
stands from my two readings: is the human heart forever condemned, or can
institutions solve our base tendencies?
Peace and justice.
Come Sail Away
I like that turn of phrase, "I've found myself doing something."
When a person says or thinks that, it's not that they just discovered what they
were doing but that perhaps they realized there was a mystery about the thing
they already knew they were doing, which of course, suggests that there were
doing something they didn't know they were doing.
I've found myself recently watching lots of online videos of people sailing
around the world. I think I must be watching these videos for two, perhaps
seemingly conflicting reasons.
The obvious reason is that these videos are a way to escape. Times are rough
right now. Who wouldn't want to get away from the Threat and see beautiful
parts of the world and all the great oceans and seas.
But most of the videos I've been watching are of people sailing around the
world either on their own or with a partner or a small family. They go long
stretches of time without seeing others. It's not just escaping then. It's
social distancing. It's how it feels right now.
Apropos.
On the Bookshelf
I've kept a book on the bookshelf now for over thirty years. It's not a long
book, and I don't know who gave it to me, but someone did, and I have never
read it, nor its companion book (it's a series, I guess) that I also have.
I might read it, but the book has always weirded me out. The book has almost
no information about the author or translators or the series, and there's no
copyright date and the copyright page is non-standard. There are blurbs in the
front matter, but they seem made up---part of the book's fiction. It was
printed on good paper and was well made. It looks as new as it ever did, even
the jacket, which it still has.
Over the years, as the web grew, I thought I could find more information
about it. I've never thoroughly tried to research the work---only cursory
searches. It shows up on Amazon and various book sites and apparently is held
by very few libraries, but these listings do not provide background
information. Author or publisher information is absent on the web. There are
some short reviews on a few sites, and they say brief, delightful things, but
they are not informative otherwise.
It's the oddest little thing. Kind of a mystery, and I kind of like that,
even though it really does weird me out.
The Chronicles
This is something like the 44th day of our Quarantine. I am fortunate that
this whole thing mostly feels surreal, but sometimes I see it playing out like
it's a movie.
Movie opens with a family preparing breakfast before school and work, and
chatting about their day or arguing about some random thing. TV plays in the
background and news reporter is covering a virus outbreak in Wuhan, China.
A couple of weeks later, and the scene is on a different person or a group
of people. Perhaps a couple in their bedroom at night who are watching TV
before going to sleep. News about the virus becomes more frequent and urgent.
Couple briefly talk about it and wonder if it'll impact them somehow.
Again, another week or so later, and another person, like a teacher in
a break room or something. Reports are coming in faster about the virus, and
it's spreading. Teacher is eating lunch while watching the reports.
Meanwhile, hospitals, particularly in the US northeast and US northwest,
start to see increased visits from people with flu like symptoms.
Then, week before quarantine. The virus has spread to multiple countries,
but the threat is still abstract for most people in the film. But people are
increasingly becoming infected, according to the reports. Lots of uncertainty.
Decision making, personal, commercial, governmental, is on hold until
uncertainties are addressed. Information goes out about washing hands, not
touching faces, and then a bit later, social distancing.
Then the Quarantine. Some experience just horror---especially those on the
front lines, while others experience economic hardship, or other types of
losses. Others are simply experiencing a wait, and the whole thing feels like
a slog to them. Some become impatient or perhaps are suffering under hardships,
and begin to vent through protest.
Past Colleagues
A long time ago, I worked as a cook at a restaurant alongside an old chef
who taught me a lot about cooking. I was thinking about him recently because he
once told me that in order to make good chicken stock, I had to use vegetables
that I would be willing to serve to guests. That meant no onion skins or carrot
shavings, or like, but peeled onions, shaved carrots, and like.
Dave, I'm here to tell you that you were wrong. I've been making vegetable
broth with saved vegetable trimmings only. So, only onion peels, carrot
shavings, and like. And the broth I've been making has an incredible aroma and
taste.
As I started to write this, I texted a friend of mine that stayed in that
area, and asked about that old chef. He texted back that he had heard that the
old chef had passed away about 15 or so years ago, possibly from an AIDS
related illness.
Rest in peace, Dave. I'm glad I still have cooking conversations with you in
my head.
On Consistency
I am often surprised by people behaving inconsistently with their strongly,
espoused beliefs, and I can only think of three explanations for why it
happens.
They do not behave consistently because they haven't thought through their
beliefs.
They do not believe what they espouse but espouse in order to signal.
Their beliefs are not as strong as they espouse.
I kind of tested this a bit recently on a person who acknowledged that they
were behaving inconsistently with their previously and strongly espoused
beliefs. They responded by with a shrug. I suppose, if they were responding
truthfully, that that indicates (3).
So, I don't know. People are interesting, as another friend said to me
recently about a different matter.
Restaurant Dreams
I worked in many restaurants and did so for many years, but it has been 13
years since my last job in one. I used to have the standard, common, nightmare
restaurant dreams when I worked in them, but it's been a long time since I had
one of those. This week, I've had two of them.
Last night I dreamt I was visiting a restaurant (in today's time) that
I worked at 20 years ago. There was some desparation in the air, and I was
asked to take over the grill station at the last minute just as the restaurant
was opening. But I no longer knew the menu, and all the prep was wrong. Steaks
were cut in grossly uneven portions and in different shapes, as were various
vegetables, and so everything was cooking wrong. The oversized things were
burning on the outside but were raw on the inside, and the undersized things
were burning throughout. The tickets were coming in faster.
Go away restaurant dreams.
I hope you're all okay, my old restaurant friends.
35 Days
It's been 35 days since our Quarantine. Fortunately, everyone I know is well, but I feel great sadness for all those that have suffered and especially for those that have died alone. Too many.
Be kind, as the Doctor would say.
An Action Under Which Description
I can imagine a conversation where one person asks an other person what they are doing.
Case 1:
The person walks into a room. The other person is on the computer writing an
email. The first person asks, "what are you doing?" The other person
replies, "I'm on the computer."
Case 2:
Here is another scenario where the action is fairly similar but the tool
different, and therefore I imagine, the response is different, and more
specific.
The person walks into a room. The other person is hand writing a letter on
a legal pad. The first person asks, "what are you doing?" The other
person replies, "I'm writing a letter."
Case 3:
In the last scenario, the tool is the same as in Case 1, but the action is
obvious, and therefore the response is specific as in Case 2.
The person walks into a room. The other person is on the computer playing
a video game. The first person asks, "what you you doing?" The other
person replies, "I'm playing a video game."
Thoughts:
Case 1:
I'm wondering if we default to the less descriptive action when the tool
that we are using affords a broad range of functions. Thus:
"I'm on the computer" versus "I'm writing an email."
Case 2:
I'm also wondering if we default to a more descriptive action when the tool
that we are using affords a narrow range of functions. For example:
"I'm writing a letter" on a legal pad versus "I'm on a legal
pad."
Case 3:
In the last case, I'm wondering if we default to a more descriptive action
regardless of the affordances offered by the tool if the action is obvious in
some way.
"I'm playing a game" on the computer versus "I'm on the
computer."
Under what other actions on a computer might the specificity of our
descriptions vary, I also wonder.
Why do our descriptions vary?
These are some initial thoughts on action and
affordances.
The Slow Down
I imagine many people in higher education are wondering how the pandemic
will change our work. I haven't measured it, but I have noticed that the volume
of email I receive (and send) has dropped substantially.
I can think of a lot of reasons for why that might be, and I'm sure there
are a lot of reasons. The major idea I have is that people have less time to
work because they might be at home and having to mind children, but also worry
about relatives, and like, and when they can get work in, they're doing the
really essential stuff, like teaching and research. In a way, it could be
leading to more efficiency, but that's just a hypothesis, and perhaps something
to test down the line.
I mean, perhaps it's just me who is getting less email, but I've heard from
one colleague in a different college that this experience was true for them,
too. However, I would wager that what we're experiencing right now will be
woven into the fabric of what we're calling the new normal. That is, these
behaviors will persist. We'll see, I suppose.
I'd Rather
... research old reference works. They have a lot to say about us and about
technology.
Soon perhaps.
It's the Little Things
Like many people who are fortunate to have a job during this pandemic, I am
working from home. I have a desktop machine at the office at work, but I didn't
bring it home, and instead am using a laptop with a small ~13-inch screen.
When I tried to use this laptop more intensively in the past, I found it
frustrating to do any kind of substantial work. My desktop machine has a nice
sized monitor, and sometimes two of them, and I had gotten very used to them.
So I am surprised that I have become quite adjusted to working completely off
a small screen, and have even enjoyed using it as a primary device to do all
the same work that I was doing on my desktop. I have even found that it's
helped with focus.
On Research Speed
For the longest time, I felt insanely guilty for not writing research
manuscripts fast enough. Sometimes, I was even guilted by collaborators.
I don't blame them, though, because as I've aged into this research, I've come
to better understand how I work and think through problems, and I didn't
necessarily have these insights before now. Nowadays, I'm perfectly fine being
a bit slow, and I'm better at communicating that with collaborators. That, my
friends, feels good.
On Stress Relief
I find that when I'm a bit stressed out, I code. For example, tonight
I updated this website. Next I'll work on some R code. If I don't code, I play
Sudoku. Not sure if this means anything, but I'm fortunate and grateful that
I have a healthy mechanism for winding down.
On Sheltering
The whole point of the social sciences is to acquire the knowledge needed to
improve society, and then apply that knowledge. But the coronavirus epidemic is
highlighting all the points of failure across our various systems: healthcare,
politics, economics, education, etc.
I hope we get through this with minimal harm, but I also hope that we learn
how to build a society that is more just and caring to all, and that is based
on all the things we know work towards that kind of system.
On Social Distancing
We went for a walk yesterday on a short trail in the city, just to get
everyone out of the house and to be in a place where few people might be
congregating. There were a few others on the trail, and what was interesting
was that whenever we would pass these people on the trail, no one would look at
us, or smile, or say hi. All heads were kept down.
That kind of distancing isn't common, in my experience. People are generally
friendly on the trails, and so although I'm guessing, I think it's because this
is how people interpret social distancing --- we don't just physically
distance ourselves from each other --- we also distance ourselves from
strangers in deeper ways. I noticed this kind of thing at the grocery store the
other day. There I thought it was simply because people were becoming
competitive for goods, but I'm guessing it goes beyond that. If this is a good
interpretation, it worries me.
This pandemic is going to have long lasting consequences across a broad range of our societies.
Losing a Walker Friend
I had mentioned before that over the years I had made some acquaintances as
a neighborhood walker. These were fellow walkers, too. I found out this morning
that one of them, B, who I had mentioned in a previous post, passed away a couple
of months ago. Of course that explained why I hadn't seen him since then, and
I was worried the last time I saw him. He had been in a wheelchair for a while,
but still roamed the streets, and the last time I saw him, he had his pant legs
drawn up to his knees so that his heavily bruised, swollen skin was exposed to
the subfreezing temperature. I told him to pull his pant legs down, and he
responded as if he wasn't even aware that they had been pulled up.
He was an alcoholic, probably a diabetic, and he certainly had other health
issues. I met his partner once. She was nice, and he described me to her as if
I were an old friend.
It was nice talking with him over the years.
Rest in peace, B.
...
August 2020: It seems B has been spotted and may not in fact have
passed. I stil am not sure, though.
March 3, 2022: I saw B yesterday and spoke with him for a bit.
So, um, he has not yet passed. In fact, he seems to be doing well.
There you go.
When a Baby Cries as a Toddler
There are usually just a few number of reasons why an infant cries. They
need to burp, they need a diaper change, they need to eat, they need to sleep,
or they are not feeling well.
So it's kind of neat to see them cry for a new reason. Like when they are
annoyed by something. Even though it's sad or hard in some way to see them cry,
when they cry for a reason that's not directly related to a physical need, it's
kind of a marker that they are becoming a toddler, and thus, that they are
developing a sense of self. It's kind of a beautiful thing to witness, as
a parent, I think.
Converting Markdown to HTML with Table of Contents Using Pandoc
So I remember: to convert Markdown to HTML with a table of contents using Pandoc:
pandoc -s -t html5 --toc file.md -o file.html
That is all.
Post One
Switching Window Managers
I'm testing out the Regolith
version of the i3 window manager. I really
like it but I don't know if I'll make the switch permanent. Regolith makes i3
very nice looking and I really like the Gnome integration, but Regolith has
different keybindings, and the keybindings are different enough to make it
annoying and, in some cases, feel more cumbersome to use.
The keybindings are configurable, but because of the Gnome integration,
there are a lot more than there are in standard i3, and it's annoying to go
through the configuration file and make the changes.
I bet someone has created a more aligned i3 configuration file for Regolith.
I might look for that.
Perhaps this is a switch that I could work on over the summer.
Remembering Some Text
Every once in a while I'll confuse something in my memory. The other day
I was thinking of the TREC experiments but had confused the TREC experiments
with the Cranfield experiments from the 1960s. In particular, I was thinking of
something that had happened at the Cranfield experiments but had it in my mind
that the event had happened at some TREC track.
However, I knew I was missing a piece of information, and I also needed the
reference. I remembered that I read about the event in a specific book, which
I had read in 2009. I pulled my copy of the book from my bookshelf and scanned
the index for TREC, but the term wasn't there. Then I looked for the keyword
relevance and found the section that I remembered reading over ten
years ago. That led me to a journal article that I had also read ten years ago
and that covered the event in more detail.
It was all kind of a meta information retrieval moment about an information
retrieval topic, which I thought was kind of funny.
And that is all I have to say on that.
Some Observations on Usability Pertaining to a Child
I was watching a young child (8 years old) use a word processor application
for the first time. The child knows how to write, relative to their age, but
had practiced writing mostly on paper. I learned a lot by watching them:
We started by launching a word processor application and a new, blank page.
Even though an entire blank page appears, since the default position of the
cursor is at the beginning, no part of the page was accessible. The child
didn't understand why the entire page was not accessible but that what was only
accessible was the point up to the cursor. The child was initially confused by
being presented a page or a sheet of paper and not having the
ability to use it like they would use a physical sheet of paper.
The child therefore had to learn how to create space, even though the page
looks like a piece of paper, all that space doesn't yet exist. The child had to
learn how to create empty space by using the space bar and the enter key. This
page or sheet of paper metaphor that a word processor
presents is really powerful but obviously not coherent with physical sheets of
paper. The strength of this incomplete metaphor had never really occurred to me
before.
Eventually the child created a few pages of content by writing a story for
their book that they're writing. The red squiggly lines that appeared
underneath misspelled words were a source of distraction for the child, who
once they understood what they signified, wanted to stop and edit before
completing their writing. To me, this violates the write first, edit
later principle. I turned that function off to help the child focus on one
thing at a time.
The child's interpretation of the page indicator at the bottom of the
screen was interesting. After the child created a few pages of content, they
moved the cursor to the third of the fourth page. The child then noticed the
page indicator for the first time, which stated "Page 3 of 4", and
asked why their book (which is what they were writing) could be no more than
four pages. That is, to the child, that "of 4" suggested all the
pages that could exist for their book.
This is not the first time the child had written on a computer, but it was
the first time I had let them use a word processor application. A couple of
times before, I let the child write in the Nano text editor. None of the above
issues came up because Nano does not use the page metaphor or most other
indicators besides a cursor. The cursor on Nano is more obviously on a screen,
and not a page or sheet of paper.
Bad Superblock
It's painful and a bit nerve wracking, especially if your most recent backup
is not recent enough. Also, bad superblock sounds like a name
for a terrible hard rock band.
A Quick Bash One-Liner and Children
I wrote a little Bash one-liner script today that was fun to write. I have
a CSV file that looks something like this:
"last name, first name","username","email address"
My goal was to grep and yank a username out of the file and then insert that
into a s-nail command in order to send local email. Took less than
a minute to write, which is probably why it was fun:
In other news, came home today. Landslide was playing. The children ran and jumped in my arms. It made me happy cry.
Tidyverse Skeptic Too
Upon reflection, I am skeptical with Matloff,
too. When I was writing R code for my last project and using the Tidyverse
dialect, I found myself having to refer continually to the
documentation to see how to express each function. Even after repeated use,
they just wouldn't stick in my memory. In base-R, and CRAN packages that follow
that original dialect, I only have to think about the data and how it's
structured in order to slice, filter, etc the data. It felt good reading that
piece because now I know it's okay to let it go.
mutt -s "Subject Line" person@example.org <<EOF
> message line
> message line (cont)
> message line (cont)
> EOF
Wrap an at command around this to schedule the email to be sent later:
at 15:00 today
at> mutt -s "Subject Line" person@example.org <<EOF
at> message line
at> message line (cont)
at> message line (cont)
at> EOF
at> ^d
Some Routines I Find Calming
Although I may fiddle
with Vim, terminal, or some other command line settings when I'm
procrastinating, it's also true that playing around with these settings or
exploring some other part of my work flow can help me find my calm. For
example, a few nights ago I felt a bit anxious about life things, and instead
of watching some show or reading some book, I went to my laptop and read
documentation on the Mutt email client, and
I was able to configure Mutt in a way that I had not thought was previously
possible, even after using Mutt for something like 15 or so years. The end
result was just calming. To get lost in the documentation, to read it closely,
to apply it to my application---it was just nice.
Walking is also a calming routine
for me, and of course it has health benefits. Exploring technology has some
nice practical side effects, too. That is, because I find, generally, the
command line to be a much less disruptive, more pleasing computing environment,
because of the CLI framework, using it requires me to learn more about
computing itself.
Understanding why I like to play with technology helps me be a better
teacher. It allows me to empathize, or try to, with my students, and try to
understand what they find interesting about exploring or not exploring
technical topics. If I can empathize with them about it, then I can help them
find their own path and their own joy in understanding the world around them,
even if their path or joy is different from mine.
The Product
Academics are the product. Look at our web sites, and it becomes apparent.
The Walkers
I walk a lot. I walk to work, to the grocery store, around the neighborhood,
to friends' houses, on lunch breaks. I like to walk because it feels good. My
legs are often restless and need to move, but I also like to walk because it's
a quieting experience.
I've long been a walker. When I lived in the Seattle area, I walked to and
from work. It was seven miles each way and took about an hour and 45 minutes.
I started drinking coffee because of this walk. I don't remember the weather
there being incredibly cold, but it was cold and wet enough to seep through to
the bones, and for the first time in my life, black coffee started to taste
good and feel restorative. It was then that Seattle made some sense to me.
One of the interesting things about walking is that you are more likely,
I think, to notice the other walkers. When I lived in Missouri, there was
a woman who was a walker, and I would see her all over town, pretty decent
miles apart, just walking, hands in her pocket. Here in Lexington, I know of
a number of walkers. There's one man who shares an appearance with Shaggy, but
he's much taller, bulked up, and a bit intimidating. He always, always carries
papers with him. For years, they were stuffed in a manila envelope. I would see
him on the other side of town, and still he had those papers under his left
arm, crammed in that manila envelope. Sometime recently he acquired a shoulder
bag, which now bursts with those same papers, I assume. It's very mysterious
and intriguing. There's another person, I'll call him B, who used to
walk all around my neighborhood, but then due to some illness, transferred to
a walker, and now he's in a wheelchair. Still, he gets around.
Another interesting thing about being a walker is that I sometimes develop
some kind of relationship with other walkers. B and I talk a bit. He
knows what I do for a living and just about every time we speak, he tells me he
would like to have become a librarian if he could start all over again. It
comes across as a life gone wrong kind of regret. Even if we walkers don't
speak to each other, there's the nod, although it often has to be earned. When
the man with the manila envelope and I first passed each other on the sidewalk
five or so years ago, he wouldn't acknowledge me. After a couple of years of
this, he began to return my nod, but his nods were always subtle---just
a slight downward motion. Nowadays, the nods are deeper and stretched out, but
I don't see him very often anymore. More mystery.
There are other walkers, too. There's the guy who works at a local store. We
often pass each other on the way to our jobs, located in opposite directions,
and may share a couple of words in that passing. Sometimes it feels like it's
a disruption to his own quieting, as if acknowledging me is a burden, and
I feel bad about that because I respect the quieting. There's the guy who
dances as he walks. There are others.
I like the walkers. I don't know if they're good or bad people. I know
a little of B's story, but I don't know anything about the others.
Maybe I should dare to ask, but I also like the mysteriousness of it all, and
I like that they seem to be private people. And I like that they've always been
there, no matter where I've lived.
Written and edited in ed, and touched up in Vim.
On Solitude
The right writing tools help, but there are two other problems that deter
good work. First, good work requires solitude and long bouts of it. Second, the
web has destroyed space. Solitude requires space. Therefore, by entailment, the
web has destroyed solitude. My premises overreach and simplify but not by far,
I think.
Even as I write this, there's a part of me that wants to go look up
something on the web. Even though I haven't had social media in a long time,
I still have the desire sometimes to share a tweet or a post. Even if I'm
physically alone, the web feels inside me and invasive, and it is noisy.
I need to retrain myself to be disconnected. Back in 1993, when I was
a junior in college, I spent a semester at a major research library. There was
the occasional letter or phone call, and periodical social gatherings during
lunch or in the evening, but for the most part, for nine weeks of that
semester, all I did was research. I read, took notes, and wrote, and after
a while of this, I put together a long paper. I did that, just as my classmates
did, without the web or the internet, and the focus came easy.
It's true that I have many more responsibilities today, but there must be
a way to re-train my mind to feel that solitude and find that kind of focus
again. I touched it recently. Last summer we went camping for a week. I was
alone on the first night and it was great. Even when we were all together, our
phones didn't have a connection, and by the end of that week, the focus had
begun to return as the world had begun to recede.
I think this summer
I'll re-read Erazim Kohák's wonderful book The embers and the stars:
A philosophical inquiry into the moral sense of nature. The book was gifted
to me by one of my professors when I graduated college and became one of my
favorite books, and I think it'll help equip me with the mental tools needed to
get that focus back.
Written and edited in ed.
On Writing and its Tools
It feels like I used to have an academic writing voice and because I had
that voice, writing came easily.
I remember when I lost that voice and writing suddenly felt sluggish. I was
taking a philosophy course in graduate school and was trying to write a paper
on a difficult topic that was also quite new to me, and during the struggle of
thinking through the problem, it felt like something cracked in my mind.
I could almost hear a once coherent thing in my head fracture like a loud clap
on a thunderous night.
My quest to find the perfect writing tools began well before this event. The
initial motivation I had for learning Linux was because I found it offered
tools, like Vim and Emacs and the terminal itself, that afforded a much nicer,
liberating, and less distracting writing experience than the options that were
available at the time on other operating systems, but something about that
event made that quest hyperactive.
Losing that coherent voice had some odd side effects. I think I can sit down
and write despite whatever mood I am in, but the mood will dictate the tool
I use. Sometimes sitting at a computer feels stifling and writing just seems
impossible. To attempt to write this way feels like I must first break through
some great barrier. Then, writing by hand can feel less resistant.
If I continue to use the computer, though, I have to be careful because
I can easily get distracted by the tools themselves. I might begin to fiddle
too much with my Vim configuration or my terminal settings---altering the
terminal color scheme, font type, or font size repeatedly---and end up not
writing at all. If I can recognize this frenetic mood quickly enough, but can't
write by hand because I need the tools on my computer for some reason, I might
switch to a different writing program, like a regular word processor, and find
that just by doing so the writing comes more freely.
And then sometimes writing weirdly comes easiest when I am composing an
email. I think I may have written half the first draft of my dissertation as
Gmail messages to no one. But writing this way, as if I was writing to someone,
as if I had an idea of an audience, felt good and was productive. I haven't
been able to replicate that experience with the current version of Gmail. The
interface has changed too much and writing in Gmail now feels
uncomfortable.
While my academic writing voice feels fractured, my creative writing voice
does not, but the right tool helps here, too. I have an old 1950s era
Smith-Corona typewriter. I use this machine to write for fun---mostly letters
to family and friends. Writing this kind of material on this machine has been
a relaxing pastime.
I started typing this in the ed(1) text editor. My go-to
editor is Vim, but ed(1) can be a respite for even that minimal interface. The
problem is that even with editors like Vim, there is still a temptation to mix
modes -- to edit as I write. Since I find it much more cumbersome to edit with
ed(1) as I write, using ed(1) places more focus on the writing process.
I particularly enjoy writing in ed(1) with the terminal in full screen mode. It
is probably overkill because I already use the minimalist i3 (tiled) window
manager, but even with i3 and Vim I get distracted by mixing up my modes -- by
writing and editing concurrently. ed(1)forces me to write because switching and
working in different modes in ed(1) (input mode to edit mode) is unlike switching
and working in different modes in Vim, and the latter is easier. To edit in
Vim: press the escape key, move around the screen, make the desired edits,
repeat, done. In ed(1), start a new line, press period (.) to enter command mode,
print to screen the range of text to edit, make edits using regular
expressions, repeat, done. This is all a bit cumbersome, and the process
encourages me to avoid using it.
I do not altogether avoid editing in ed(1), and a side benefit of editing with
ed(1) is that it has made me a more advanced Vim user. Even though I have been
using Vim for 15 plus years, I am still learning.
Keeping it Minimal
My 30 plus year history with computing has been a history of keeping things
minimal.
In the 80s, I had a Tandy 1000 SL with, I think, MS-DOS 3.x. That computer
lasted for about six or seven years, and I enjoyed it and learned a lot about
computers by primarily using the DOS command line.
I brought my computer with me when I went to college in 1991, but I also
used the computers in the college's library. I don't know what kind of
computers those were, but what I really liked about them was that they had
WordPerfect 5.1. Like the word processors we have today, I didn't use the vast
majority of the functions WP 5.1 offered, but what I liked about it was that,
like all DOS-based applications at the time, its interface was minimal.
I felt comfortable and at home in that DOS minimalism, and have never stopped
seeking or recreating it since.
My Tandy stopped booting sometime around 1994 or so, and I graduated at the
end of 1995. I went several years without my own computer, but in 1998
I started working for a company and had to use a computer with Windows 95, and
then later, around 1999 or 2000, I bought my next computer, which had Windows
98.
The graphical user interface was entirely new to me, and I hated how busy it
was. In the early 2000s, it occurred to me that it would be nice to install WP
5.1 on my computer so that I could have that full screen, single application
interface that I found so appealing. By this time, it was already too late. WP
5.1 was gone, but in my search, I found other ways to recreate a minimal
writing experience when I found Emacs, and then Vi/Vim, and of
course, Linux. It's now been about 16 years since I first installed Linux.
The computing world had only grown more complicated and busy, but I still
like to keep it as simple as I can. I use the i3 window manager, after having used ratpoison for years. I practically
live in the terminal, and Bash, Vim, and Mutt are my primary applications. If I could
only use w3m all of the time, I'd be
even happier.