Moved Site to Modern Server

30 March 2023

The site has been limping along on an Ubuntu 16.04 based server for the past couple of years. I finally took the time to upgrade tonight.

Ubuntu 22.04 LTS

I could have gone with 22.10, it seems stable enough, but I do not enjoy running down issues when I could be working on my side projects. I use Digital Ocean for my virtual servers due to their decent prices and excellent documentation. It beats maintaining a website on a home server and inviting the whole world into my lab.

Adding a new server via droplet was easy. I found the article on must-do server setup, installed nginx from another guide, added Let’s Encrypt and copied the content up. Took about ninety minutes.

Next Steps

I need to set up GoAccess to get a daily report of visitors and pages accessed. I gave up on Google Analytics four years ago, nice graphics but the privacy leaks were not worth it. I have been playing with a new template, with no Bootstrap, just HTML and only the CSS that I actually understand. It will still be a static site. That is the way a weblog should be.

Followed the instructions to configure the server Initial Server Setup with Ubuntu 22.04.

Follow How to Install Nginx on Ubuntu 22.04 to get the webserver up.

Adding Gitea to Home Lab

30 March 2023

Installation of Gitea on a home server. The ssh solution was fine, but gitea adds issues and collaboration as well as package management in the latest version.

Application Installation

The snap installation runs as root, not comfortable with that setup so switching to the binary running as git. Found Gitea on Ubuntu 20.04.

ubuntu@netservice:~$ VERSION=1.16.1
ubuntu@netservice:~$ sudo wget -O /tmp/gitea${VERSION}/gitea-${VERSION}-linux-amd64
ubuntu@netservice:~$ sudo mv /tmp/gitea /usr/local/bin
ubuntu@netservice:~$ sudo chmod +x /usr/local/bin/gitea

Create the directories that we will need.

ubuntu@netservice:~$ sudo mkdir -p /var/lib/gitea/{custom,data,log}
ubuntu@netservice:~$ sudo chown -R git:git /var/lib/gitea/
ubuntu@netservice:~$ sudo chmod -R 750 /var/lib/gitea/
ubuntu@netservice:~$ sudo mkdir /etc/gitea
ubuntu@netservice:~$ sudo chown root:git /etc/gitea
ubuntu@netservice:~$ sudo chmod 770 /etc/gitea

Open the configuration page at http://netservice:3000

PostgreSQL User and Database

Log into PostgreSQL host (appserver01). Become postgres user and open a sql session.

sudo su -c "psql" - postgres

Create the database for gitea.


Reload the database configuration.

Create directories on RAID

git@netservice:~$ mkdir /mnt/raid1/gitea/common
git@netservice:~$ mkdir /mnt/raid1/gitea/common/data
git@netservice:~$ mkdir /mnt/raid1/gitea/common/data/gitea-repositories
git@netservice:~$ mkdir /mnt/raid1/gitea/common/data/lfs
git@netservice:~$ cd /var/snap/gitea/common/conf

Fill in the form on netservice.

Dad, What do you do?

11 October 2021

Dad, I need to ask IT people what they do. Can you give me eight to ten sentences on what you do at your job?

Software Consultant

My job description and title are Software Consultant, Senior Software Developer. I talk to people about problems that they need to solve, usually in networking, data storage, and automation domains. Clients usually have something in their network that they want to send to another network and vice versa. They may have data that they need to search quickly or tasks that are done by people that can be automated to provide a repeatable solution.

Most problems can be solved with existing software, usually from several sources. I design solutions using these sources, write some additional software to make these components work together, and write documentation for developers that will maintain it once the client has accepted the solution.

A Git Server for Home

10 August 2021

I really could use a git server at home and I already have Raspberry Pi4 functioning as a application server on the home network. I little Googling and reading the git documenation later and I now have a functional git server.

Keeping it Simple

Git is a distributed source control system so it works fine in a file based mode.

Create a bare git repository.

$ cd ~/src
$ git clone --bare website website.git

Generate a new RSA key pair for this connection.

$ ssh-keygen -t rsa -b 4096 -C bipedalprog@appserver01

I used the output file name of "/home/bipedalprog/.ssh/bp_appserver01".

Add your identity to the ssh daemon.

$ ssh-add /home/bipedalprog/.ssh/bp_appserver01
Identity added: /home/bipedalprog/.ssh/bp_appserver01 (bipedalprog@appserver01)

Now copy your identity to the server. This assumes that you have an account on the system.

$ ssh-copy-id -i ~/.ssh/bp_appserver01 bipedalprog@appserver01

You should see

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/bipedalprog/.ssh/"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
bipedalprog@appserver01 password:
Number of key(s) added: 1

Now try logging into the machine, with:   "ssh bipedalprog@appserver01"
and check to make sure that only the key(s) you wanted were added.

Server Side

Create a group to allow collaboration in git.

$ addgroup git

Add your user to the group.

$ sudo usermod -aG git bipedalprog

Create a directory to receive git repositories.

$ sudo mkdir /data/git
$ sudo chgrp -R git /data/git
$ sudo chmod -R 2775 /data/git

Back on the development machine. Copy the local repository to the shared server.

$ scp -r website.git bipedalprog@appserver01:/data/git

After you have copied your local repositories to the server you can ssh to the server and run the following in each repository directory. (It will not remove previous history.)

$ cd /data/git/website.git
$ git init --bare --shared

Test It

Let’s check that we can clone the repository on our development machine.

$ mkdir -p ~/tmp/gitest
$ cd ~/tmp/gitest
$ git clone bipedalprog@appserver01:/data/git/website.git

Mission Accomplished

You should now have a second home for your git repository and a useful way to share it with others in your local network. Adding other users to the server and placing them in the git group is all it takes to share the ssh git repository.

Virtual First Organizations

29 July 2021

Organizations are looking at return to office, remote work and hybrid arrangements as Covid recedes. Another possibility is "virtual first" which allows everyone in the previous categories to collaborate, even while traveling, caring for a sick child, or working from the beach. Think of it as "virtue working".

Dropbox Example

I listened to the Source Code Podcast titled "How Dropbox figured out the future of work". They now have people working remotely, people in the corporate office in San Francisco, and some on the hybrid work from home, sometimes in the office arrangement.

Dropbox blog has a quick introduction, and this blog post details how they are implementing it at Dropbox. I like how they emphasize four hours of collaboration a day with the remainder reserved for deep work.

Collaboration Software Pays Dividends

I have found that asynchronous interaction is the ideal solution for any group decision. A "quick" half hour meeting of six people burns three person-hours. A quick two page synopsis of an idea may take a person an hour to refine and everyone else four to five minutes to read. We already saved fifty percent of the time. If you publish a paper in an environment that supports comments, this may be less.

Written communication tends to encourage additional thought, you do not have to toss out an idea before it has had time to mature. Your audience does not have a ten minute window to consider and question your idea. Potential downsides include tendencies to abuse people online, mitigated by real world identities. Online collaboration must be between colleagues, not users.

A written record of ideas, discussions, and conclusions allows people to return to the initial goal, alternatives and the final result. Assume that each discussion thread has a unique URI that can be referenced and provided in the final documentation so that readers can find additional details. Meetings, even well intentioned meeting notes do not provide this level of detail.

When time is treated as a lake rather than a river people can use their deep thought time to provide cogent criticism on papers. A system could also provide up-voting to surface popular topics to a wider audience. Unlike a platform such as Reddit, we can have expiration dates on our ideas, or request for comment (RFC) posts. Many collaboration platforms allow the author to close the issue’s RFC.

Collaboration versus Co-location

Traveling to the office is seldom an experience that myself (or anyone) would consider a useful endeavor. Let us discount that since it is only supposed to be forty minutes of your work day [1] everyone in attendance at the office is fresh and ready to collaborate on the day’s most important issues. Are they looking forward to discussing your most pressing issues or something that may affect their performance?

The agile method of dealing with uncertainty is the spike. Time box an exploratory phase to look into the magnitude to the problem. The Dropbox solution is to reserve four hours of your working day for collaborating, so maybe half of this is actually working with other developers, half with designers and other roles to get determine what need to be done. That leaves around two to four hours for development [2].

I find that if I reserve an hour for spelunking into the group conversations, then the other five hours that I can really focus can be spent on delivering customer value. I assume two hours of my eight hour billable day will be spent on other tasks such as time reporting, "agile" ceremonies, check-ins. Most weeks I average twelve hours on overhead work, twelve on collaborative work, and sixteen on heads down, value work. So about three quarters of my week could provide value.

Most of the twelve hours I spend in ceremonies (required meetings) could be spent with either stakeholders or their agents [3]. When the same co-location rigor is imposed on teams, you should expect output do decline due to the added overhead of simultaneous communication over synchronous mediums. "Zoom" meetings are observed to be "the same two people talking" for most of the Zoom population. Please respond via email in the link below if you have a different opinion.

1. Personally i do not know anyone that spends less than an hour on commuting.
2. Most people seem to be available for useful work between six and eight hours. Collaboration time comes out of this budget.
3. Honestly, in actual agile teams my ceremony overhead is around ten percent.

Madtree Midwest Luau

02 June 2021

I saw a Facebook post from MadTree Brewing last week. Sounded good but I could not find it in Harrison.

A New Favorite IPA

Now that it is getting hotter my beer tastes are changing. This weekend I found a new IPA from MadTree. Midwest Luau Tropical IPA. They have blended the hops to produce a pineapple taste. Grapefruit IPAs are fine but this is special. I found it at Jungle Jim’s.

Today I Learned

The City of Cincinnati owns a railroad bridge that could be used to bring light rail to northern suburbs See WVXU.

Gardening May 2021

22 May 2021

02 May, 2021

I gave the border outside of garden fence another quick till, and retilled a couple of meters in the garden since the soil was so packed down. I need the first four inches to put on top of the straw, hoping to make it easier to scrape that up.

Planted sunflowers around the border, cast a variety of wildflower seeds on the east side. Some mixed wildflower and poppy seeds on the south, ran out before I could do the west side.

05 May, 2021

I managed to get half of the first walking row mulched with three two cubic foot bags of wood chips. I need to get some delivered, it just is not going to work buying it by the bag, not to mention the waste of all of the plastic in the bags.

08 May, 2021

I picked up more wildflower seeds at Menard’s on Thursday and scattered those on the west side. They are all "cut" flower varieties. I need to overbuy next year.

10 May, 2021

Put another raised row in tonight. The soil was still damp so trying not to step on the areas that I wanted to work tonight. I put a two inch deep by six inch wide trench in the eighteen inch raised row, I added an extra inch or so of straw to compensate.

The soil was difficult to work with the moisture. I found that breaking it up with a turning fork helped. Around three quarters of the way through I found that the turning fork could be used to move the soil too. Ran out of light after one row.

15 May, 2021

Put another row in the garden. I am not using as much straw as I had planned for each row. Decided to start adding more to each row, it will decay and sink during the season. I probably only need a couple of bales to cover the rows once everything is growing.

19 May, 2021

Took the tiller back up to garden. The soil is pretty compacted again which makes covering the straw difficult. I can only do a row every 120 minutes, and I hurt afterwards. I also marked the rest of the planting and walking rows. I will have ten planting rows when this is complete. Now I know how much mulch I need.

20 May, 2021

Nate helped me add three more raised rows. We did three in just a little over two hours, splitting the work really helps. He prepared the planting row while I placed straw. We worked from opposite ends of the row to cover the straw with soil. Even though he works a bit slower it really made a difference.

21 May, 2021

Nate and I finished adding the final three rows. The topsoil for row ten had came from the walkway that has been used for the past ten years. I had to break that up by hand with the mattock adze. We have four bales of leftover straw to light mulch the raised beds once the seedlings have a good start.

22 May, 2021

A very long day adding mulch to the garden. It was delivered this morning and we spent the rest of the day moving it to the garden. We all got plenty of sunshine, and only have about seven yards of mulch to move tomorrow. I hope to have some energy left to plant the starters tomorrow night.

Cincinnati Chili - Mom

03 May 2021

Mom’s Cincinnati chili recipe. I think is based on Grandma’s Recipe.

Mom’s Cincinnati 3-Way Chili

  • 1 quart water

  • 2 large onions, diced

  • 8 ounces tomato sauce

  • 5 whole allspice

  • 1/2 teaspoon red pepper

  • 2-3 pounds ground beef

  • 1 toe![1] garlic or 1/2 teaspoon garlic powder

  • 2 tablespoons chili powder

  • 1 large bay leaf

  • 5 whole cloves (spice)

  • 2 teaspoons Worcestershire sauce

  • 1 teaspoon cumin

  • 1 teaspoon allspice

  • 1 1/2 teaspoons salt

  • 1 teaspoon cinnamon

Add ground beef to water in four quart or larger pot. Stir until beef separates into a fine texture. Boil slowly for thirty minutes. Add other ingredients. Stir blend, bring back to boil. Reduce heat and simmer uncovered around three hours. Check consistency after two hours, if thick enough, cover for remaining hour.

Chili can be refrigerated overnight to allow the removal of excess fat from the top and then reheated before serving.

1. A toe seems to be 3 or 4 cloves.

Cincinnati Chili - Grandma

28 April 2021

My paternal grandmother’s recipe for Cincinnati chili.

Cincinnati 3-Way Chili

  • 1 quart water

  • 2 medium onions, grated fine

  • 16 ounces tomato sauce

  • 5 whole allspice

  • 1/2 teaspoon red pepper

  • 2 pounds ground beef

  • 4 cloves garlic

  • 4 tablespoons chili powder

  • 2 tablespoons vinegar

  • 1 large bay leaf

  • 5 whole cloves (spice)

  • 2 teaspoons Worcestershire sauce

  • 1/2 bitter chocolate

  • 1 1/2 teaspoons salt

  • 1 teaspoon cinnamon

Add ground beef to water in four quart or larger pot. Stir until beef separates into a fine texture. Boil slowly for thirty minutes. Add other ingredients. Stir blend, bring back to boil. Reduce heat and simmer uncovered around three hours. Check consistency after two hours, if thick enough, cover for remaining hour.

Chili can be refrigerated overnight to allow the removal of excess fat from the top and then reheated before serving.

Opening the Garden for 2021

26 April 2021

Good weather today and plenty of work to get the garden ready this year.

04 April, 2021

Spent the day cleaning the debris from the garden. We tried putting the corn stalks through the chipper, did not work as well as I had hoped. Decided that we could burn those later. The compost pile needs ashes to work well. The limbs that were piled by the garden did not produce the amount of mulch that I had hoped.

05 April, 2021

Ran the tiller around the outside of the garden fence to break up the sod. I intend to plant wildflowers around the perimeter to attract more pollinators this year. I may have to apprentice with a beekeeper next year if this does not work.

15 April, 2021

The garden is somewhat dry, no rain in the forecast for two days and the latest frost is tomorrow. This is the best weekend to start the garden so I hauled the tiller up the garden after supper. In two hours I made the first east-west pass and started on the north-south mid-depth till. I made it three quarters of the way before I ran out of daylight.

16 April, 2021

I finished the mid-depth tilling after work, then went full-depth north-south and east-west. I am building raised beds this year, with a few vertical beds for tomatoes, cucumbers, peas and beans. I think east-west rows have worked best over the past ten years so I will commit to that for this first year of raised bed gardening.

I gave the wildflower outer bed another till. I’ll cast the seeds tomorrow evening before the rains come. Although it is starting to look like we may not get the expected rain. Hoping that the wildflowers will overcome the grass that I was unable to disturb with the tiller.

17 April, 2021

We measured the garden today, around 44 feet square. The recommendation from the raised bed book is to allow for twenty-four inch growing rows separated by thirty inch access rows. Looks like I get six of those in the fenced plot. I picked up four bales of straw today, which will probably allow for a little more than a single growing row. I can send the boys to the farm store for more once I actually lay the first row.

26 April, 2021

Decided on eighteen inch raised rows with thirty inch walking rows, giving me around ten forty foot rows. It took me two hours to construct the first one tonight. I may give the garden another till before I do more, the soil was pretty compacted over the past week. Looks like a bale of straw will provide a base for one row.

Personal Development - Part Two

14 February 2021

I had to pull the trigger on professional and personal goals for the year.

Personal Goal

This was actually pretty easy, I want to start spinning up a less technology focused life and spending time on sustainable living. Gardening is an excellent way to focus on local sustainability. If I want to expand beyond locally beneficial behaviors I could probably aim for travel via backpacking. Trying to sell that to my family made me notice that sustainability has a lot in common with personal discomfort.

Growing up in a Calvinist family the backpacking aspect sounds more interesting, but gardening is more likely to achieve familiar bliss. I decided to branch out into raised bed and vertical gardening. It will also allow me to reduce my mechanical footprint in the barn. Having four vehicles under cover has reduced my footprint for toys in the barn. I can no longer get to my workbench without moving a car.

So I can spend up to five hundred dollars on alternative gardening this year. My long term goal is turn this into a teaching experience for some of the kids that are living in the subdivisions that keep sprouting up around the Harrison, Ohio area. I already have the tools, just need to obtains material and seeds this year.

Professional Goal

I have been working on server-side development for over fifteen years. I am now part of team that is providing a phone based application and have not looked at mobile development in seven years. I believe that content should be delivered using the browser, I also accept that there is good money to be made in creating bespoke applications for walled gardens.

Apple Macintosh and iPhone applications have been money magnets for many years. I have always discounted their development environment. The company has spent so much time on gilding the lily and creating barriers to entry that I really cannot embrace their platforms on principle.

Android development is slightly better. I would have adopted it sooner if it had more than Google behind its development. In a some ways it reminds me of developing for the Macintosh a few decades ago. Kotlin is much easier than Objective-C but shares many of the same self centered delusions. Dalvik was a nod to platform independence, to be followed by native applications in the Android framework. I think all of the effort that Apple and Goggle spent on custom environments would have better served the world if they improved their web browsing experience.

Given that I have limited hours in my day, around sixteen, eight of which are spent earning a salary, eight sleeping. and hopefully another eight on making the world a better place for my predecessors, I have to choose carefully what I want to engage with in professional pursuits. This year it will be Android development.

Swift looks like a good language, however, the iOS stack still demands that code be written in Objective-C for older devices. I spent time with that stack when I was supporting NeXT applications. Better to choose the new devil than the one I have despised for more than twenty years. Andriod and Kotin seem to be the gentler master for now.

Personal Development

30 January 2021

I have a $500 budget for personal development, without much guidance. I do have to submit a plan in the next two weeks.

What is "Personal Development"?

We have a new input for evaluation this year at Callibrity. We have a $500 stipend for "personal development". Examples given were learn a new human language, learn to play an instrument, cooking lessons, something new that is not technology related. Home brewing is in bounds. My desire to reduce my consumption of alcohol rules that out.

My hobbies fall into hiking and gardening. Lots of space to grow in both. I have been considering alternative gardening methods, no till, hydroponic and vertical gardening. I am not interested in personal growth in technology. I have a few side projects, but I do not get the joy from building software the way I did when younger. I have been entertaining teaching youth about horticulture for the past couple of years.

My children do not enjoy spending time outside, and see cultivation, maintenance and propagation as tedious labor. I see it as a way to test my knowledge and skill each year. I have found some others that would like to work with kids that do not have land to cultivate. Maybe seed money for a non-profit would be a good use for my personal growth.

I suppose this year will be horticulture. I cannot count on the pandemic abating in time to chase a through hike.

Charter Cities

16 January 2021

I have been noticing more attention being paid to city-states the past few years. Mostly around reorganizing the individual states around new city-state clusters, I never see any approaches to making that happen.

Doing Dishes for Inspiration

Listened to an episode of People I Mostly Admire which featured economist Paul Romer. Tonight was better than average, there is plenty to read up on now.

Experimenting with Cities

One premise was related to trying new social organizations by creating full cities within nations that have their own political and social structures. Hong Kong is the quintessential example if you ignore the colonial aspects. Bring a group of people together with a charter form of government, the structure and power of the government defined in the charter.

He was somewhat successful in getting a couple of governments interested in providing charters. Getting people and economic entities on board turned out to be much more difficult. It makes me wonder how Elon Musk’s plan for colonizing Mars is going to work out. Governance is one of those problems that has to allow everyone to benefit, the alternative is totalitarian rule through absolute power.

I think we can still form governments that allow individuals to thrive, while also controlling individual consumption of resources. Treating wealth as a collective resource and freedom as an individual resource, we may be able to demilitarize social responsibilities. No one person is responsible for the harvest, everyone toils and benefits. We feed and care for each other, we shelter each other. We can also support each other.

Homemade Meatballs

26 December 2020

Turns out the family recipe for meatballs comes from Betty Crocker Cookbook. I suspect that quite a few family recipes come either from there or the back of pasta boxes.

Oven Baked Meatballs

This is supposed to yield up to 20 1 1/2 inch meatballs. I have never seen more than sixteen.

  • 1 pound ground beef

  • 1/2 cup dry bread crumbs

  • 1/4 cup milk

  • 3/4 teaspoon salt

  • 1/2 teaspoon Worcestershire sauce

  • 1/4 teaspoon pepper

  • 1/4 cup onion, chopped

  • 1 egg

  • 1 clove garlic

  • 1 bay leaf

Mix all ingredients in a bowl, hands work fine here. Place on an non-greased baking sheet, at least 1/4 inch deep. Bake uncovered until light brown, usually 20 to 25 minutes at 400 degrees. You can also pan fry on medium heat for around 20 minutes. Keep turning the balls until all sides are brown.


Tonight I made bread crumbs from garlic bread croutons, cut the salt in half if using this method.

If you have picky kids that do not like onions, cut back to 1/8 cup finely chopped onion and 1/2 teaspoon of onion powder.

11 December, 2020

14 December 2020

I attended fewer session of re:invent this week. I have been working on exploring application monitoring in the cloud. I have a couple of posts under development on this topic.

Amazon Web Services Week 2

I am interested in the latest server-less offerings for Aurora. As a developer I like to work at a relational or document database level. I have built replicated databases in the past to provide concurrency and reliability but it always seems like detail that would better be left to engineers with these interests in mind. Server-less databases provide the intersection of database, storage, networking, and security as a service.

In a related note, Elastic Block Storage is becoming more useful and inexpensive. Reliable file systems that expand on demand would have been fantasy a decade ago and now they are a commodity. My only wish now is that elastic storage and simple storage service regions be integrated.

Decentralized Web

Data Ecosystems provides a strong argument for creating universal data stores that can be accessed by service providers of your choosing. He suggests that Solid is a good starting point. I suspect he is right.

Redecentralie Digest for this month features decentralized infrastructure. A GitHub replacement looks interesting. See the Radicle site.

Decentralized Work

A frequent argument I have with my boys is: What is the purpose of their English classes? They want to pursue STEM, and think reading and writing are subjects learned in primary school. I find reading other people’s work and writing my conclusions to be the largest part of my day. As we decentralize our workplaces in space and time this will become as important as solving the the actual problem. Today I found Future of Work that expresses the thought more deeply than I had considered.

I think that humans doing human things like editing and cataloging the artifacts that distributed work requires allows more people to contribute to the shared economy. Spending less time in video meetings would allow me to spend more time on the deep dives I need to deliver the software I am trying to develop. Having specialists that can explore my solutions, question assumptions, and make me refine my presentation would streamline the process of communicating the structure of solutions.

All of the artifacts produced by a temporally distributed team will need curation to be useful. Much as an editor creates a framework to express your thoughts with economy, a library science specialist can make the work available to others with a similar set of requirements. Our search engines have become very good at reducing large corpus stores to keyword searchable archives. Context and associative knowledge have suffered. Imagination is important when creating archives for humans.

07 December, 2020

07 December 2020


Aaron Parecki’s blog has a post on refinements to the IndieAuth specification. I will be working on updating my Java implementation over the solstice break.

06 December, 2020

06 December 2020

I have one more week of work this year, then three weeks to work on home projects to keep me busy through the holidays.

Poetry Unbound Videos

If you are not familiar with the On Being Project. they have an excellent production called Poetry Unbound. This is a fine example for the season.

Week 1 of re:Invent 2020

03 December 2020

This was the first time I found time to attend re:Invent, the AWS conference. I really do enjoy traveling after harvest time. The nights are longer now, it is time to rest.

Virtual Conferences

In the spirit of the 2020 Pandemic, and since I rolled off of a client and into my Thanksgiving week break. I decided to give the re:Invent conference a try. I have sixteen hours of training time to use each year, may as well learn about the most significant cloud provider on the planet.

I used to love attending conferences on the west coast. Now I consider transit time before I sign up for anything. Two days in transit had better be really useful in my work, so almost every conference fails this test. I do not believe in the hallway conversation benefit. I find OSS IRCs and forums are the most useful method of meeting people that I really would love to work with in real life.

So my feelings about the first week. Skip the keynotes. If I attend in person and I do not know of a good local place to get breakfast, I go to the keynote. I made myself a great breakfast on Tuesday, did some work and then watched the AWS keynote. If you have something billable to do, skip the keynote.

My overall impression from this week is that I am glad that I did not commit a complete week of my life and treasure to this conference. Most of the sessions have been worth the thirty minutes. A few have been disappointing propaganda from AWS partners.

Ending single use plastics in India while also employing more people sounds like an excellent idea. Making artisans part of everyday life should improve the community in many other ways. People are valuable, tea in an earthen cup is valuable, and it tastes great.

I found a nice Spring on K8s explanation. It isn’t so much Spring as a good start for working in Kubernetes.

Buttermilk Pancakes

26 November 2020

Around five years ago my twin boys became interested in cooking. I typically make Sunday breakfast for the family and our go-to pancake recipe was sour-cream based. One of the kid’s cookbooks they received for Christmas had a buttermilk pancake that seemed simple enough. It made these tall as a cloud pancakes, so we looked up some pancake chemistry and modified the recipe to make light but reasonable pancakes.

Buttermilk Pancakes

  • 2 cups flour

  • 2 tablespoons sugar (I use one if the kids are not present.)

  • 2 light teaspoons baking powder

  • 1/2 teaspoon salt

  • 1/2 teaspoon baking soda

  • 2 eggs (optional)

  • 2 cups buttermilk

  • 1/4 cup milk

Add dry ingredients to a pouring bowl and whisk together. Add the eggs and buttermilk, begin to mix. Add the milk, a quarter cup is a good start. The batter should fall off of the whisk easily. As with any buttermilk based recipe, there should be some lumps in the batter. Do not make it smooth.

I use a medium high griddle, the butter should immediately melt and sizzle when dropped on the griddle. Wait for bubbles to break on most of the top side, flip and wait until brown on the griddle side.

Macaroni and Cheese

26 November 2020

We get about eight servings out of this, easy to double for larger gatherings.

Macaroni and Cheese

  • 2 tablespoons butter

  • 2 tablespoons flour

  • 1 teaspoon salt

  • 2 1/2 cups milk

  • 8 ounces Velvetta

  • 8 ounces macaroni

Cook and drain macaroni. Turn the burner off and melt butter, then whisk in the flour. Turn heat back on to low, melt the cheese with the milk. Place macaroni in baking dish, nine by nine works for me. Pour melted cheese sauce over macaroni. Bake around 45 minutes at 350 degrees. I let the cheese on the surface brown a little.

Grandmas Meat Sauce

25 November 2020

I finally found the recipe for meat sauce that my mom and grandmother used to make. Sharing it here so I do not lose it again.

Spaghetti Meat Sauce - Pork Based

  • 2 6 ounce cans tomato paste

  • 8 cans of water

  • 6 medium onions

  • 4 whole cloves

  • 2 teaspoons of sugar

  • 1 or 2 pork chops

Brown onions in a little oil until golden and soft. Add the pork chops for a few minutes. Add the rest of the ingredients, cook on low for four to six hours. Pork should break apart while cooking.

Notez Bien

You can add chopped garlic. One clove per pork chop, assuming that they are a half inch thick. If your family likes oregano, a teaspoon makes a nice note, otherwise, parsley is fine.


This will feed four with spaghetti and antipasto. I triple recipe for twelve and it works out well with salad.

Personal Care

17 November 2020

The winter solstice is approaching, this is supposed to bring me down because there is less time to be outside. I do not buy that anymore. My journal notes suggest that I spend too much time trying to put more time into my professional pursuits this time of year.

Take Time for Yourself

While this year has been different because the pandemic curtailed our travels over the spring and summer months, I did take a week off at the end of summer because we schedule the time before school as family time. We could not go to the family cabin this year, but it did help reset my expectations for the rest of the year.

I am rolling off of a client this week. I have a week of PTO and holiday to adjust to days of uncertain work. On the other hand, they are also days when I can trust myself to develop new skills. I know that ReactJS is the current front-end juice, I still believe that HTML and JavaScript are the only viable technology for long term development. Libraries fade, technologies evolve.

I have most of the following month to myself. While I am trying to bank as much PTO as I can roll over to the next year, I need to minimize my impact on the company that sustains our family. I am aiming for a three to four weeks backpacking with my sons after their high school graduation in May. That will be tight against my goal of a week of PTO in case I get terribly sick.

I listened to the Rework podcast tonight. Take Some Time Off is a decent argument for regular time away from work. While the kids were in school we structured our time off around their academic schedule. My wife would discount the decisions of parents to pull their children out of school for family vacations. In hindsight I think unstructured time with the family is beneficial. I wish we had pulled the boys for extended spring trips, the mountains are beautiful when school is in session.

Alternative Ubuntu Package Installers

21 October 2020

I tried to install a highly rated news reader application on my Ubuntu 20.4 laptop. I have had nothing but problems, even after I uninstalled the application and the installer.


I decided that FeedReader would be a good choice for keeping up with my list of RSS feeds. In order to get this application I had to install another package manager, Flatpak. It took a couple of tries to figure out how to get flatpak to run on Ubuntu.

A couple of tries with flatpak to get FeedReader to install and I was ready to try the application. It was a disappointment. So I will discount TecMint reviews in the future. A bit of searching and I figured out how to remove flatpak. I did notice that my suspend feature for power management resulted in a panic each time I resumed from suspend.

The next step was to remove flatpak, so I found a couple of blog posts on that, it appeared to be successful. The suspend problems are still here. I did find some solutions on the Ubuntu solutions, most end in reinstalling Ubuntu. Fuck. My spidey sense told me not to keep going when the FeedReader instructions did now work.

I was hoping that the next round of updates from Ubuntu would update whatever is preventing the desktop from recovering during awakening. Not so far. I guess it is time to backup my home directory and nuke it. I did want to permanently remove Windows anyway.

Made it to Another Birthday

25 September 2020

I have friends that celebrate their birthday month. I do not have that much energy anymore. I do enjoy a birthday week. You cannot count on a single day to bring joy.

Autumn Is Finally Here

The temperatures turned down over the weekend, and the equinox was Tuesday. The corn stalks are turning brown now. I harvested the last of the corn on Sunday night. Was up late blanching and putting it up, with a six pack of beers. That made for a long Monday.

I am working in my basement office until lunch now, the back porch doesn’t get to 65 degrees until then. I like coffee with the sun, but I prefer to be mostly comfortable to work. I did put a rug down under the desk. Cold concrete and arthritis are not compatible.

Long, Violent History really made a mark on me this week. Were empathy valued as much as we wished, the republic would be a much different place.

Short Weeks Are Sometimes Long Weeks

11 September 2020

The sprint was a day short due to the holiday. I have been working on integration issues so it really feels tight.

Spring Cloud is Great

Except when it is not. Kubernetes is infrastructure, not a platform. Spring Cloud kind of fills in the gaps. Stay withing the Spring Boot lines and you will be well served. My current client really likes Feign to access services without all of the setup overhead.

Spring Boot really saves you time for the majority of cases where you have an API that it was designed to serve. Spoiler, if you want to upload a file with metadata as a separate entity, you are in for a lot of trouble.

What if we try a new web? This is a thoughtful piece looking at a document web, like here, and an application web. Seems like we could have both.

Crepuscular Hikes

09 September 2020

I had a full day, needed a nature bath.

At the End of the Day, There You Are

I enjoy a long weekend, but that also implies that the next week is shorter, and as much as my client tries to account for the lack of hours, the goals are still set based on everyone running at one hundred percent for five days a week. The truth is that we are doing well to run at seventy-five percent. Production issues, interruptions, systems issues are going to occur.

I turn my personal electronic interruptions off during the day. I check my phone during periods of expected downtime, system builds and such. Otherwise, my goal is to focus on client work. I do have a tickler set to get up every hour. My personal preference is five minute up for every hour of sitting. That works out to getting rid of a cup of tea and brewing another each hour.

I was running on less sleep today due to a family emergency. I made some baby back ribs for the kids, they love them, and they are easy. I do not know why people order these at restaurants. The flavor they provide is because they are fatty, and I need to burn those calories. So off for a walk in the wetlands. I did not want to dress for the real hike, so I walked the paved path that is usually free of ticks.

I walked the Shaker Trace trail from the Baughmann Road parking lot out to the picnic shelter at 3.1 miles. Actually, I walk a little further to the horseman’s picnic area. The wildlife prefers that site. No joy tonight, but the sunset was more orange than usual. On the walk back, I found a new friend.

Juvenile Turtle

Baby snapping turtle.

The kid was sitting in the middle of the trail, pick the turtle up and was trying to move them to the grass when the neck came around in an unexpected curve. Left the turtle at the edge of the grass, in the direction it was heading. Grandpa used to set traps for these creatures, and then make turtle soup. I am now ambivalent about his traditions.

Labor Day Weekend

06 September 2020

Labor Day Weekend

This was a big weekend in my childhood family. Labor was celebrated and encouraged, labor provided everything that we had as I was growing up. I grew up at the end of the baby boom, with all of the benefits. Public schools were excellent, and we were integrating, so I was able to experience being with people that had totally different lives from mine.

The American Labor movement left many people behind, mostly because their skin color and language. My dad was active in the union at work, and even spent time as the equal opportunity officer. What EOO meant then was supporting Appalachian and Southern white men. I frequently answered the phone (no voice mail then), and I never spoke to a person of color. I switched to Spanish in high school so I might be useful.

In the past year I have become a supporter of Andrew Yang for several reasons. I had issues with his presidential campaign, mostly because he had not worked his way up in the political organization. The executive branch needs to understand how to govern, and how to work within a federal infrastructure. The man we currently have as POTUS has no experience in government, he doesn’t even have Citizenship in the Nation merit badge. Andrew is not my first choice for POTUS, but he has considered the qualities that the person must have.

We all need to feel like we are a valued member of the community. Under capitalism income seems to be the measure of individual value. Actually, under unfettered capitalism that is measure of individual worth. Social capitalism allows for a different outcome. Let us assume that everything we pursue as a goal contributes to the overall good of society.

People I Mostly Admire is excellent. I have seen a couple episodes of "The Big Bang Theory", but did not actually find it amusing. I was very close to what I remember life being like in a computational chemistry graduate lab. Mayim Bialik really shined in this episode. I almost feel vindicated.

My podcast feed included On Being interview with Mary Oliver. I recommend "On Being" to anyone that is looking for a spiritual take on living. Poetry seems to be part of this experience.

Websites for Humans

04 September 2020

My first website was a hand coded HTML with a couple of sentences about me and a table of links that I found useful.

Web Publishing

My website used to be composed of custom HTML pages, hosted on a rotating rust server in my home. Now I publish using an ASCIIDoc and Markdown translation application that wraps my text in HTML 5 syntax and then I scp it to my virtual private server (VPS) hosted in the Blue Ocean cloud.

While HTML is a terrific standard for the representation of how a document should be rendered on the web, Markdown and ASCIIDoc are closer to this author’s goals. Which is better? I am really ambivalent about this. Markdown is great for simple pages, tables, images and links are easily expressed in most dialects. ASCIIDoc is what you want for complicated (think book scale) manuscripts. It was initially implemented in Python, the reference implementation is now in Ruby, which is relatively easy to bring to the JVM.

I use Markdown to document projects on Github. I really wish I could choose one and stick with it. ASCIIDoc just flows easily, Markdown syntax is something that I still have to think about. The weblog is mostly ASCIIDoc, when I have to create a post that can be shared in other media I use Markdown, which is not rendered with the same fidelity using my website generator JBake.

The clincher for me with JBake was that it also supported RSS, the web standard for syndication. While there is debate about the meaning of the acronym, "RDF Site Summary" seems to be the original intention, but I like the later day "Really Simple Syndication" interpretation. These standards allowed everyone to create websites that could be followed by a reader’s browser using metadata. The browsers did not exploit this feature. Developers did create sites that track RSS and present links to users.

Google Reader was the dominant RSS consumer for a while. It turns out that an application is not the same as a global standard, Google used their enormous computing resources to create a very simple, yet elegant web application that totally achieved the purpose of RSS. It turns out that this kind of web does not increase revenue for an advertising based company. I moved to Feedly. I do not mind paying for a RSS feed aggregator. They really do provide an excellent interface and I will continue to support them. We do need a simple website aggregator to provide this service to people that do not have the financial means to support a company that provides this service.

Raspberry Pi 4 Printer Server

24 August 2020

I turned my Raspberry Pi 4 into a network services host this weekend. This post deals with setting up a Windows printer as a network printer.


We purchased a Brother HL-2400 printer for the family desktop a few years ago. I knew it was a Windows only, and did not care since the family desktop is always a Windows based machine. It is used for printing school assignments, doing taxes, and scanning with a ScanSnap 500. Unfortunately, Windows is not a good platform for sharing a printer when the CPU is suspended.

Use a Raspberry Pi

They are cheap, reliable, and I picked up a Pi 4 last year. I intended to use it as a web gateway for the family website and communication gateway. I searched and found that it was an ideal server platform. We run an aging Buffalo NAS that really needs to be retired and Windows printers are supported on modern Ubuntu.

Setup CUPS

CUPS is an open standards printing system originally developed by Apple for Unix printing. It uses Internet Printing Protocol to make printers available on Internet Protocol networks. So, SSH into the Pi.

Install CUPS
$ sudo apt-get install --no-install-recommends cups
$ sudo usermod -a -G lpadmin ubuntu

The ubuntu account is the login user created when I installed Ubuntu 20.4 on the Pi. I use this account for all administration.

If you can browse to https://<raspberry-pi>:631/ if the install worked correctly. I then followed the instructions to share the printer that I defined using CUPS to the internal network.

Sharing with Windows Clients

Windows 10 clients were having trouble connecting and printing to the shared printer. After you search for a printer, click on "The printer I want isn’t listed". Then add a printer using TCP/IP address or hostname.

I entered the IP address of my PI server. Note: I assigned this address as a static IP in my router. When you get to the Additional port information required dialog, click custom, then settings. You want to use the LPR protocol. Set the queue name to the name of the printer that you created in CUPS. Check the LPR Byte Counting box, seems to be important.

Add a driver if needed. Click through the rest of the prompts until you get a box allowing you to print a test page. Click that button. If you get a test page, congratulations. That is why I wrote this. If not, I found my way through this using DuckDuckGo. Good luck.

First Day of School 2020

17 August 2020

Today all three of my children returned to school for the 2020-2021 academic year. A year of having the family together every day.

Time Off in Work From Home Mode

So I took PTO last week, which seems odd. We did not go anywhere as a family. My spouse is not comfortable traveling during the pandemic. She has been right more often than not in the past, so I defer to her. I had a few nice trips planned for the spring and fall, that will have to wait until travel is encouraged again.

I only checked my client email three times. No pressing issues so I actually did get to unwind. I took care of chores, exercised more, walked more, slept enough. I spent as much time with my kids as they would allow. I did take the kids to Yellow Springs, Ohio on Friday. I love hiking in John Bryan, they love lunch at Young’s Dairy. I needed my summer time lemon custard, the mushroom and swiss burger was just icing on the cake.

It may seem like a waste to take time off when you are working from home. I can say that it is not. Sleep in, do the chores that you want to do, but cannot find time for in real life. Set the bar low and remember how good it feels to achieve simple goals. Most of all, live as slowly as you can. Road trips give me new experiences but most of life is just doing the daily routine. A week of doing it purposely really helped.

Pandemic Education

My twin boys needed English 12 to graduate from high school this year. One wanted to take the online option offered by our school district. The other wanted to attend classes at the high school. I have not seen one model from an accredited institution that allowed for a return to school this year. We encouraged the boys to join their sister at a regional college campus for the year. They typically have decent online learning management systems (LMS) in place.

The university called it last month. The fall semester will be online. I live in a purple state. It is populated by red (Republican), but is still human enough to side with blue (Democrat) when our family is on the line. If I were to bet, I would put money on the spring semester being online too. The red state aspect will prevent many from getting a flu shot next month.

What Would I do Differently?

This seems like a good time for a universal gap year. The children of the wealthy enjoy a year abroad after high school. As a country we can afford to implement a tax on compensation beyond one million per year, and use it to pay for a universal dividend until 2022. I have been a fan of online training, asynchronously, for a while now. Let everyone do that in real time for a year. If they want synchronous, fine. We learn in our own way.

I suspect that I would just take the kids on a month long backpacking trip. A few hundred miles of family time so they would believe that they can overcome anything that the universe throws at them. The weeks that I have spent just going to the next campsite have influenced everything that I do today. Accepting the present is not what we are taught today. It is what we need to deal with tomorrow.

Staycation Day 4

13 August 2020

This was the week that we were going to go to the Smokies with Mindy’s family. We found a house in North Carolina this year, however, several people in the family are subject to a ten day quarantine if they travel outside of Ohio.


Just to be clear, I am sick of staying in the county. I love the mountains, as much as I used to love the seashore when I was younger. Now that I have lost the beach body and found my mountain body I am happy to use the legs and lungs that decades of backpacking and climbing have developed.

The garden has been pretty challenging this year. A dry spell where I had to keep an eye on the peas, followed by plenty of rain where I am now cutting the weeds that interfere with my tomatoes and corn. I think the zucchini and cucumbers are about done for now. I cannot weed that area fast enough, and we have plenty.

I am finding time to visit with friends. I had a peaceful night with one of my high school friends last night. I slept deeper than I have in weeks. Maybe I need to emphasize local connections more, but I do long for dark skies and high hills to make my hike a little more enjoyable.

Making New Friends

Chores were caught up after supper tonight. I left the dishes in the sink, went to Miami Whitewater Forest. I like to walk the Shaker Trace Trail. Mostly cyclists tonight, and it is a nice ride, but when I want a few miles after supper I like to walk it. Tonight I made a new friend, a bobcat this time.

When I noticed her.

And just before another walker approached and we had to part ways. I was trying to get my phone to switch to video, which I have to relearn every time.

I got closer.

I met a new buck on the walk back to the car. Seems the ducks do not have enough water this week to hang around. Plenty of new bunnies though. I’m too old to get a mobile out and take a picture of those kids now.

Working from Home Day 133

27 July 2020

Okay, that counts weekends, but sometime those end up being used for work too.

Working from Home

This article recognizes that there are down sides to remote work. I suspect that compensation for remote workers will diminish. On the other hand, I do not believe that the substitution of lower wage workers will benefit businesses.

While hyper-local markets will be less important for who can work for each firm, co-location is not the only form of locality. Consider the effect of language and custom, these can also define locality. Look at the inner city interaction of black, brown, and Oceanic groups. We tend to associate with people that share our language, our physical characteristics. Not to exclude others, but because we appreciate that we have common interests.


I like Bukowski, but not when I have been drinking, then he sounds like a close friend.

“If you’re losing your soul and you know it, then you’ve still got a soul left to lose” ― charles bukowski

Pet Project

30 June 2020

A Pet Project

I have a pet project that I use to explore new cloud environments and technology stack. A simple web notebook application. It contains everything I will likely need to do with a stack in a simple application. Add some extras and it becomes more useful and gives me an idea how to the application will be partitioned on each stack.

Note: I updated this on 02 July, with additional requirements that I found in one of my implementations.

Basic Notepad

I aim for the basic application to be as simple as possible. So let’s start with these requirements:

  • Login page. Establish identity via authentication. Authorization is part of the extended multi-user story.

  • A left panel with a tree display. Notebooks at the top level, topics underneath each notebook.

  • Primary pane contains the actual note feature. If a topic has been selected in the topic pane, the latest text is shown. If the edit button is selected, the pane becomes a note editor.

  • The edit pane allows the user to create a Markdown formatted text.

  • When the display mode is enabled, the underlying Markdown text is rendered as formatted HTML.

  • New entries are saved as they are modified, undo/redo is supported.

  • When the user presses the save button, the current text is stored in the persistence layer.

Extending the Notepad

The basic notepad demonstrates the presentation, persistence, and control layers of a platform. It also exercises the authentication aspect of the platform. I try to keep the user interface confined to HTML and basic Javascript, I do use Bootstrap in order to minimize my involvement in Material design choices.

Attachments are a logical next step. Users should be able to upload images and insert them into their text. Since the underlying format is Markdown there are some open source WYSIWYG editors available. Some even support inserting inline images. The downside is the time it takes to integrate these with the backend.

So we have the basic application running in the core framework. There are a few tweaks we can make to make the application useful for daily tasks. Search comes to mind immediately. My first choice for an embedded database in Java is H2, which has a nice hook into the Lucene search engine. If I really want to build a robust search for the notes, I add an ElasticSearch client. This means you have to create build pipelines for ElasticSearch configurations, but when you have the horsepower you may as well use it.

So once you have multiple users, you want to track each user’s contributions to each note. I have not yet found an open source database with user difference engine included. This is a great opportunity, if I get this far I try to solve the problem again. Tilting at windmills got us this far, one has to preserver.

Fathers Day 2020

21 June 2020

Today started with gardening, then some grilling and then a walk in the rain with my daughter.

Gardening, Part Two

Some little bastards have been nipping my tomato and pepper plants off in the garden. I have noticed that they leave the larger ones alone so I bought larger replacements. I will start them inside next year and wait until they are nine inches or taller before I put them out.

Out of ten rows of corn that I planted in May, I may have had a dozen plants grow to a foot. I tilled all of that under today and I will replant tomorrow night. I also tilled for the second planting of peas. Everything is growing slowly with the lack of rain. I’ll water until things get off to a better start.

Cook Out

My folks were supposed to come over for burgers and beer tonight. Dad called and said that with the rain and thunderstorms, they would stay home. I figured the rain just meant that I would have to use the gas grill on the eave of the barn rather than the charcoal barbecue out in the lawn. Burgers were still good and I used the side burner to reheat some hot wings that I made on Thursday. I like them fried to crisp the skin.

After Dinner Walk

My daughter agreed to go to the park with me for a walk. It started to drizzle on the way and turned in a real rain storm by the time we got to the parking lot. We spent about ten minutes waiting for the wind to die down and then put on our hats and pulled my backpacking umbrella out of the trunk. It is big enough to cook under, not quite big enough to keep two people dry. I finally gave up and gave her the umbrella, summer rains are warm enough to walk in so long as I have a hat.

Making do with one umbrella.

We found a bunch of small frogs on the trail tonight. My daughter had to learn to look for them so she would not step on them. After around thirty minutes she was spotting them herself. Not sure if they are small frogs or peepers. They do not stand still long enough to get a good shot.

Brown frog on asphalt.

This guy actually sat still so we could take a picture.

Gray frog on trash bin.

Once we left the wetland we found a bunch of snail friends. She learned to see them pretty quickly, they do not hop in front of you.

A snail friend.

After scanning the bush line for deer and coyote, we turned around and headed back to the parking lot. I found a box turtle giving us a close look.

Box turtle checking us out.

Meredith pointed out a turtle in the wetland. I cannot find my Audubon book to identify this one.

Turtle of unknown type.

The rest of the walk was full of baby rabbits darting into the bush, gold finches and blue birds darting around the thistle, and black birds sitting on top of precarious grasses and crab apple trees. The path should be full of black berries in a couple of weeks.

Friday June 19, 2020

19 June 2020

How to Spend My Downtime

I have been looking for some time away from the homestead. The critters and the weather are beating the hell out of the garden this year. I really just want to hit the road and camp. The family Conestoga is a little long in the tooth, but I would love to have a summer with the kids before they go their own way.

A cruise ship is really not my cup of tea. I like wilderness, not commercial tourism. I ran accross this and gave up on the idea of a family vacation on a ship. We have a house in North Carolina booked for August, hoping that will work out. I need something close to mountains before then though.

My wife is an indoor enthusiast, the kids are in decent shape, but really are not able to keep up with my old ass with a mission.

If you like Leonard Cohen I recommend the Rolling Stone article. If you struggle to understand the world and make the world understand you, maybe this will help.

Thursday June 04, 2020

04 June 2020

Growing the Economy

We are looking for ways to grow the economy as quickly as possible. I suppose that we could give billions to airlines and hotels or we could really grow the economy at the grass roots. Marketplace Morning Report had a story today that really caught my interest. We could grow the economy by fifteen percent, $55 billion in one stroke. Give Black businesses stipends to increase the number of employees from one to two or more. If you really want to improve life, we can invest in the same neighborhoods.

The Pressure of a New Month and Week

01 June 2020

Harrison, Ohio is about fifteen miles outside of Cincinnati. Life here is about as normal as it can be during a pandemic. Cincinnati is pretty fucked up.

The Start of the Month and the Week

I try to start the month off right with a full regimen of exercise. I also try to hit the ground running on Monday, get serious work done at work. During normal work weeks these objective can be managed. Now that we have social distancing, and a nation that cannot agree when it needs to focus on its health over making the quarterly projection, we are now facing a paramilitary shutdown.

I am supposed to start working with a client in Cincinnati soon. I rely on the local bus service to get to the city. Not sure if I should disappoint a new client, or drive into a melee. I hope to split the difference and drive to Blue Ash to work in the company office. At least until the local mayors can negotiate with the citizens to find a way to reduce the lethality of the police forces.

Passing this along Black owned restaurants. Ollie’s Trolley is my favorite long walk to lunch when I am working in Cincinnati.

Getting Back to Work

29 May 2020

So this week I did the up front work with a new client. Looks like I am heading to a new gig.

Eleven Weeks of Working from Home

I have really enjoyed the extra time I get to spend around the house without spending ninety minutes a day on the road. The down side is that I also do not get to spend time cooking and drinking with our friends. I suppose the best way is something in between. I would like to have social contacts again, including at work. Three days in the office would be acceptable.

I interviewed with the local office of a fintech company this week. Looks like I will be working with them in the near future. I am very interested in how these businesses work. I am deeply suspicious of capital markets where growth is more important than sustainability. I do want to see how it works for myself, and it is in downtown Cincinnati, so I can ride a bus again.

End of the School Year

We wrapped up the school year on Wednesday. While my kids are fluent with technology, they are not disciplined in their use of technology. I am hoping that the next school year will be a normal, in person, year. Mindy and I are clearly not high school teacher material.

I used to identify as a conservative, when that label meant that one valued being a member of a community, making sure that all were taken care of and valued. David Brooks was a journalist that I followed then, I follow now. Check out his NY Times editorial. Sadly, conservative now means a very small community, becoming more exclusive.

Remember David Byrne? He founded a site Reasons to Be Cheerful.

Work from Home - Day 46

18 May 2020

Looks like those with real offices are permitted back in the company office. The development "pit" is still under consideration.

Spring Boot Update

I started playing with the latest Spring Boot (2.3) today. I am specifically interested in the latest support for OpenAPI. I looks like I can build a REST service and have the starter plug in build the OpenAPI specification from the actual implementation.

Walking in the Rain

I grilled hot dogs and brats in the rain this evening. I spent a lot of time in my chair today so I wanted to get out for a bit. I am lucky enough to have good rain gear, especially a good rain coat. Spring is the perfect time for a rain coat (knee length) and water shoes. It is just cool enough to make a rain coat comfortable, and temperatures in the sixties makes wet feet feel pretty good.

I did see a family on the trail, checking out the rain as I left the parking lot. Other than that I had Shaker Trace to myself.

Wet Trail

I have to be present when I walk this trail in the rain. The fauna takes advantage of the lack of bicycles and joggers to cross the asphalt divide. I met a very intent night-crawler this evening.

Night Crawler

I also met dozens of snails tonight. Saw a few that met an untimely end as well. I figure these creatures deserve a break, and do my best to avoid damaging them while I walk the trail.

Snail on the Trail

Came home just before sunset. Weather was breaking to towards the west. Went out on the back porch to see if there might be a rainbow. I did find one to the east. Mindy and I went out on the front porch to watch a double bow in the eastern sky.


I have had issues with the business model used by Uber and Grubhub, and many others. Treating people as contractors because you want avoid the taxes associated with employment is sketchy, at best. Today I ran across a posting about the little guy getting back. Doordash gets a little negative feedback.

Week in Review May 16th, 2020

16 May 2020

Woke to rain, rough week so I rolled over and slept for two more hours. Day 45 working from home.

Relax, We Are Not Going Anywhere Today

Woke up to rain falling on the roof, rolled over and went back to sleep. Some days I just decide to skip exercise and go with the extra rest. This is really difficult when I have to drive to work, but working from home does allow me to focus on my mental health as well as physical health.

Nashorn Is Still Useful

I have spent most of the week looking for existing solutions to problems I have encountered while fleshing out an intranet design. There seems to be a JavaScript solution to every component I have needed. I really wish the Java Community would reconsider removing Nashorn from the standard distribution. Sometimes it is just simpler to use the JavaScript implementation with a little glue code.

I consider the bicycle the greatest invention to date. It is my favorite mode of transportation beyond the two mile range. Today I found a story about San Francisco maybe giving it a try City without Cars.

My favorite CSS and JavaScript library received an update. It just handles the details of a Material UI without getting in my way. Bootstrap 4.5.0.

Looks like The Server Side still exists. They have a decent introduction to GraalVM, I did have to sign up first.

A different perspective is at Quarkus.

Sometimes I want to save a web page for later research, given the short memory of the internet I have found Monolith to be useful. I creates a single web page with everything you probably need to view it in the future. I recommend piping it through gzip, modern pages are big.

Working from Home - Day 43

13 May 2020

Yesterday we kicked off an internal project that we can work on while we are on the bench. The company intranet site.

A Green Field API

So this is the first time I am using OpenAPI to document and then generate a skeleton application. We have a green field application so I may as well use the time to learn a new tool. IntelliJ has a plug-in to support OpenAPI, but I have found that the Swagger Editor to be useful for building the initial API definition. I cloned the repository and it took a couple of tries to get it working on Windows using WSL.

Working from Home - Day 41

11 May 2020

I have been ready to plant for over a week now, these frost and freeze warnings just keep coming.

This is not the May I was looking for.

I received another alert to cover the flowers that we planted a couple of weeks ago. Although it looks like it may be safe to put the corn and peas in later this week, these cold snaps are starting to get me down.

REST Payloads

I spent most of today trying to figure out how to build payloads to return to my client side code. I am ignoring authentication and authorization for the time being. I know I can add those with Spring annotations later. The trick to getting my head around unfamiliar technology is to take small bites.

So my favorite secure chat application has been purchased. Not sure how I feel about it.

I have been banging this drum a bit lately. SPA fatigue appears to be on other minds as well.

Working from Home - Day 40

08 May 2020

I Love to Learn

The best part of not having a client that I need to support is that can add to the value I provide. I have learned to divide my time between things that will provide value soon, and those that will make me more useful in the future. I try to spend sixty percent of the time on improving future skills, the rest on current skills.

Software development is simply problem solving. We have some set of tools that we bring to problems. After thirty years of practice I have worked with most of the technologies in existence. The most important thing in any problem is finding the actual issue that a client needs solved. The first step is finding a common issue that I can fix right now, then we can work on the problem that they really have.

Time to Teach

Today is my father’s birthday. He has seen some great days, Victory of Europe Day which coincides with his birthday. He made it through the Korean War, transitioned to the Seabees, the naval construction battalions. He made it through Vietnam, and other conflagrations that I do know about. I know he was gone a lot, but he was there when it mattered.

I learned how to adapt to my situation from my old man. When I reflect on his nature, it comes down to dealing with the situation in front of you. Plan for the future, deal with the present. He pushed my brother and I to succeed, especially when life is uncertain. I have learned to look for opportunity when challenges come up.

I have found that many of the younger people that we hire despair when work does not go as expected. I have learned to be suspicious of weeks that do go as expected. I used to simply say that life does not unfold as one hopes. Now I try to get the person to sit with the disappointment, and look for alternative paths.

I love language, I love English, the first language that I learned. I heard German from my maternal grandmother when I stayed at her house as a youngster. I heard Italian and Greek in my childhood neighborhood. When I was old enough to drink (almost) I learned some Gaelic in the saloons of Price Hill. My childhood was spent reading, my education was complete when I learned how to listen and tell the story to others, in their point of view. I give you On Being with a deeper view on the story.

If you enjoy the story as much as I do. I recommend Praire Home Companion for an organic introduction to providing a story can help most of us through the bumps of life. The protagonist has been derided in the press, and his life is complex. I hope that context explains most of human life. I know that I have forgiven much, mostly because I hope for the same.

Working from Home - Day 39

07 May 2020

I am making friends with JavaScript again. I have a basic page working now. Trying to add calls to the server today.

The Right Tool for the Job

As I spend more time with web development I am finding the issues that JavaScript addresses. I do not have pages complex enough to require a framework at this time, I do have some spots where a full round trip to the server is overkill, especially for a mobile page, so I am beginning to explore the Fetch API today.

I have also found that building payloads of data in script tags and rendering them via DOM manipulation is a compelling use case for JavaScript. I would have to add another five percent of the page weight in markup without this technique.

Tick Season Again

I took a walk around the lanes tonight. I found one black tick and four deer ticks on me. It will be below freezing this weekend so I will have a few days without the little blood suckers, but it is shaping up to be year thick with ticks. Remember, one opossum can eat over 3,500 ticks in a week. Give our buddies a brake if you can.

Working from Home - Day 38

06 May 2020

We have a little more than two weeks to go in the school year. It seems so far away.

Low Code Development

I received a request for a fairly simple application today, quick spec only. It is something I have done in the past, easily a day and half of work. The catch was that they wanted it to run on Azure. I took a quick peak the services available and found that I could create a solution from off the shelf Azure features. Yes, I still need to create roles and configure access, but most of what I need done is handled by a standard image and an Azure function that can be written in a single screen.

I suspect that we will not be developing applications from the ground up in the near future. It really does not make sense to build the same thing again, just in a different language. I see a lot of advertisements for coding boot camps now that we are heading into another recession. Looks like that train has left the station, integration is the sweet spot now.

Working from Home - Day 37

05 May 2020

Giving in a bit. I need the Bootstrap CSS to lay out a site. CSS is not my forte.

Using CSS is Easy, Writing CSS is not.

I gave up this morning and went back to my old friend Bootstrap. The CSS portion makes life so much better. The material feel is an affordance in my opinion. This is not an art project. I want to end up with a site that is simple to use, even the first time.

Spending Time Alone

I need some time alone each day. I have learned over the years that I need to keep that to an hour or less. I need time to reflect, not brood. Over the last decade I found that working with others gives me purpose, and a feeling of belonging. My therapist is fond of citing examples of strong social networks being part of a healthy emotional state. I agree.

You Are Not Alone on the Internet

Remember that the internet was not built to allow everyone to be an individual, it exists because we need a way to connect individuals together, to survive in a world that has been partitioned by nuclear war. It was built to bring those that survived together. Commerce destroyed that ideal, most of the sites exist to make commerce inexpensive or to market products to you. We can resist by building our own sites, publish your own thoughts and follow the others that inspire you.

Kevin Kelly on turning sixty eight.

My immediate region has put most of its revenue eggs in the income tax basket. has an article showing how this could lead to a loss of regional services.

Relationships are the point. Hidden Brain

Working from Home - Day 36

04 May 2020

Happy Star Wars day.

Return of the JavaScript

So today I worked on getting the browser to request data from the server and update client-side controls. I spent a good part of the day working on the Fetch API in the JavaScript standard library. Remember, I am trying to create a simple web application for mobile and desktop using HTML, CSS and JavaScript.

The story so far: a Spring Boot application with an H2 JDBC database, Thymeleaf templates and handcrafted HTML, CSS and JavaScript. The aim is to have a self contained notebook with underlying Markdown files. The goal is to bring my front-end skills up to close 2020 levels. I used to enjoy web development, mostly because I had a good web design team up front.

Seventh Week at Home

Today begins the seventh week working from home. I started early today, plenty of sunshine when I woke. I wish I had spent more time outside. The back porch office was overrun with stuff this weekend. I spent the day in my basement office. I had intended to plant corn tonight, then I looked at the weather forcast and decided it could wait until this weekend.

I am now to the point where I do not thing of this as "working from home". I just accept that I am working, from my home office. I am happy that I do not have a stack of remote meetings planned each day. I do not mind that I plan ten hour days. They round out to eight hours. I get up and start a load of laundry, then hang it out on the lines when the weather cooperates. The FitBit reminds me to get up and move every hour. Slow time is fine by me.

What do I do with the time I am not on the road everyday? I figure an average of ninety minutes each day that I go to the office. I sleep an extra half hour, and that really makes my life better. I also spend some time each day doing laundry and hanging it out on the lines. I have time to cook, really cook, supper every night. There is time to shop in the middle of the day, when the shelves are stocked. Working local is satisfying. I can provide money and time to my family.

Raspberry Pi 4 and Ubuntu Server 20.04

I downloaded an image for Ubuntu 20.04 for Raspberry Pi. Copied the image to my SD Card. It booted and just worked. I do not have time to install all of the extra stuff to support Synapse, I will keep detailed notes on installing it on 20.04.

I have been giving serious thought to moving to a metropolitan area when I retire, just to have everything within walking distance. The high rents have kept me from this in the past. Big city living may be on the decline now.

I spend a good part of my day reading about web APIs. My favorite site is currently Mozilla Developer Network.

Working from Home - Day 35

01 May 2020

Happy Beltane to those that celebrate the turning of the wheel. Remember the workers while you stand at the fire tonight.

Simple Websites are Pretty Complex

So yesterday I decided to create a simple website management application using a Spring Boot back-end and an HTML/CSS with minimal JavaScript front-end. I am trying to work out a good IndieWeb approach that I can teach the kids this summer. I looks like we are going to be spending a lot of time together and they are not interested in gardening.

When I saw the RFC for HTML in 1995 I thought, this is incredibly simple. Anybody with a text editor can do this. I was still with CompuServe then, and I was trying to figure out how to get something set up on the Internet. I thought I had a pretty good life with a UUCP feed, but here was a text based publishing format that could do so much more. I few years later I found some hosts that could provide a full-time connection.

Maybe the reliance on DNS and full-time web service is a point of failure for the Internet. I have been following the Inter-Planetary File System (IPFS) for a couple of years. The main flaw is that they are trying to solve too many problems at once. Content addressing is great on the surface. A universal naming system would make finding content easier, and can be solved. The whole system relies on a crypto-currency based storage network. Which limits the network to the privileged.

Have to Start Somewhere

I remember when I could just crate HTML files on a server and the Apache HTTP application would return the page to requester. Web 2.0 added another level of abstraction to the process. Interaction with the server allowed us to begin to ask questions of the server.

Try exercise for anxiety and depression. Then try the drugs. Both work for me.

Working from Home - Day 34

30 April 2020

Some days it is harder to get started than others.

Where are the Electrons?

I got up and started getting ready. I looked up at the clock expecting to see a time somewhere around 08:30, except no clock. Tried the light, no light. Power was out. Checked the router, it is on a UPS but Spectrum does not function when the power goes out. Headed up to the bedroom window to find enough 3G to get a message out to work.

Decided to take my shower early today. I figured I would have to work through lunch to catch up after the outage, just skip the elliptical for today. Power was back by the time I was done in the shower. A little less than an hour for an outage that the co-op said they had no idea of what might be causing it. I felt sorry for the people in town that rely on Duke. They are just customers.

Lunch and Learn

Lunch was a sandwich and an AWS webinar on DocumentDB. It was less gee-whiz than I expected. I did learn more than from the study guide so I would say it was worth the time. One of these days I will find an application that needs this kind of scale, until then I think I will stick with PostgreSQL.

Ubuntu 20.04

I decided to upgrade my personal laptop today. I figured it would take awhile so I kicked it off after lunch. The upgrade was complete before supper. It even worked well. I have not figured out how to get the fingerprint reader to work yet but I am look forward to all of the new desktop features.

Modern JavaScript

Spent most of today reading and trying out modern JavaScript. There is quite a bit that a few developers could do with plain old HTML and JavaScript to make a very responsive website. I am sure that some sites require a framework such as ReactJS or AngularJS but I also suspect that those projects are few and far between. Chances are that most applications do not need to be the next GMail or Facebook. For that matter, Facebook really does not need that level of sophistication if not for advertisements.

I have been in the consulting field for almost twenty years. I know that the latest framework looks good to hiring managers. My advise is to ask your senior developers what they actually use to get work done. Websites have changed in the past two decades. Mobile adds new dimension to creating an effective site: multiple screen sizes and latency.

The HTML standards have really helped deal with differences, just let the browser control the flow. Front-end skills require understanding the HTML 5 tags and Cascading Style Sheets. The tags provide semantics for the page, and really help screen readers make sense of the content.

JavaScript fills in the gaps, dealing with client side events and communication with the home server. I know that server side logic can be coded in NodeJS, it just is not my cup of tea. I was happy when Java added the Nashorn packages to the JDK so I could reuse pieces of JavaScript when needed. Sad to see it deprecated in Java 14. I may end up embracing NodeJS after all.

For a better desktop feel check out Ubuntu 20.04.

Working from Home - Day 33

29 April 2020

We killed the backlog, client was happy. The surge team was released today.

That Was Quick

We completed the client’s backlog today. They thank us by rolling the surge team off. I understand, we do cost money. On the bright side, I can go back to training on the bench for the rest of the week. Sounds like I am targeted for Java and cloud role next, whenever our customers decide to kick off their new projects.

Spent the afternoon working on my JavaScript skills. I am learning how much can be accomplished without any of the major frameworks. I need to make some time for GCP training again. Likely spliting the day between the two. Another certification pays off pretty quickly. Leveling up the JavaScript skill will pay off more over time.

I would like for another in-house Java project to kick off. Staff augmentation gigs are okay, but I enjoy success more when I am with a Callibrity team.

Working from Home - Day 32

28 April 2020

An unexpectedly nice day, plenty of sunshine on the porch.

Chore Day

Hit the coding this morning, I knew I had to do a pairing interview this afternoon and I wanted to get my stuff done today. Made progress through the morning and was in a good mood for the developer pairing that we do with every perspective hire.

I enjoy the pairing problem. I really hope it does not become stressful for the participant. The feedback that I have received in the past is that is pretty chill. I try to set a smooth tone, I just want to see how someone approaches a new problem. Software and systems consulting is a blast if you enjoy hitting problems that have rough edges.

I covered the gainful employment by 17:30. I still had the family chores to do. The kids do not feed themselves and we agreed to get take away for supper, they cleaned the leftovers up last night. We placed the order online, I picked it up after 18:00 and we were done by 19:00.

Tuesdays nights are usually when I go to do chores at mom and dad’s. I even got a kid to go with me tonight. Mom likes to see them still, I like a designated driver so I can have a few beers with dad. The chores are usually light, and I enjoy talking to them. Good thing, still no baseball to watch.

Working from Home - Day 31

27 April 2020

Thought I was rolling off of a dotnet project on Friday. Surprise, four more days.

Hello Monday

I was up late reading, until 01:00 actually. I paid for it today. I didn’t get out of bed until 08:45. Nice part of working from home, no shower needed. Make coffee and head down 26 steps to my office. I get to continue the work on the dotnet data extraction project. It is nice to have work right now, hoping for some Java and/or Linux work soon.

The weather was nice today. Got to work on the back porch for a good part of it. I also delivered my first contribution for integration into production. I never get tired of that thrill. I know I have done my best, time to find out if that was good enough.

Anniversary Day

On the bright side, today is my wedding anniversary. Twenty-nine years ago we made the commitment to make a life together. Eight years later we decided to share our lives with children, and about a year later we had our first. Most of all, I am glad we had the chance to meet in high school, work out the issues through college, and make a home together.

My advice to youth today, stay the fuck away from dating sites. Common experiences help you both cope with the issues that are coming at you through life. Oh, and if she does not like her mother, get out of there.

Ohio Reopening with Deliberation

So on Friday you may be able to get non-essential surgeries and visit the dentist. The latter makes me happy. I canceled my cleaning in March because I was starting with a cold, seemed prudent. I could really use a cleaning soon. I hope the wait is not too long.

May 12th retail can reopen. But it will be with social distancing protocols. Looks like masks will be required. We have been gearing up for that the past few weeks. I think we have a design that Mindy can make easily. I ordered shemaghs for the kids, these are terrific for summer. The best thing is the company that I work for is going to continue remote work for the foreseeable future. I miss everybody but I love the clean air.

We need make the economy more democratic, plutocracy always ends with pitchforks and famine. The Coronavirus Crisis explores the problems, short on solutions though.

Want to skip the next pandemic? Stop making it worse.

Last Weekend in April

26 April 2020

Woke up to rain today, slept in. Next weekend I get busy again.

April Brings Hope

I just put my head down and try to get through March. I spend time hiking and on a good day, maybe pulling weeds in the garden and cutting honeysuckle back. The start of April gives me hope. I know that I will more good days than sad days. I know that I can begin to do the hard work in the garden. Burning the brown woody stuff, that acrid smoke.

I usually do the weed till in April. I still do this even though I own my own tiller now. I used to be the easy time to get a loaner. I will do a deep till next weekend if the weather holds. Then the following week will be spent planting. I tried to get the herbs started today, but I slept in and I still needed to get some groceries for the week.

Face Masks

We have been experimenting with face mask design in our house for around three weeks now. The t-shirt based approaches were adequate. They actually function pretty well in everyday life. I would like something more versatile though. I remembered the shemagh that some of my former scouts wore while in Afghanistan and other semi-arid areas. Available for order from Amazon, I picked one up.

Versatile shemagh.

I really do not know why this is not the dress uniform for going out into the world. It is easy to wrap, comfortable and when you pull the head covering down, totally comfortable. I can see leaving my sun hat at home now. If you pull the face protection down, the loose cotton allows your head to breath too.

Mindy did some more sewing today. I really have a hard time with a sewing machine, I learned to sew by hand so everything takes me an order of magnitude longer to do, but I can do it without electricity. She pulled some old fabric that we found twenty years ago to cover an aquarium stand. With some quilting fabric she had, and a little ribbon she made me a mask to go with my happy shirt.

Happy frogs.

If you need to recenter, Cryptonaturalist podcast is an excellent place to find a place to just think about where you are in this universe. This episode is a nice meditation on how fortunate we are to even be experiencing life.

Working from Home - Day 30

24 April 2020

I thought I was rolling off of a surge effort today, just kidding. I get another week on tour.

Thirty Days in the Home Office

I hit the code hard this morning. I thought I had to get it wrapped up by stand up this afternoon. I did get it done, I started the morning with giving up on the whole damn project and wrote a simple console application to read the email and find the fields I needed. I wish I had done that three days ago. Trying to figure things out with all the cruft in the way is the least efficient way to write code. I try to teach new developers to code slow, so they can deliver fast. I fucked up again.

Moving to the porch office, I slowed my thinking down listening to the kids on the trampoline and the birds calling. I found the problems with my assumptions. Fixed those and got back to productive work. I delivered the patched code and spent some time chatting with the CTO about a new long term opportunity. Looks like I need to get up to speed on another identity and access management (IAM) technology. The great thing about consulting is that I get to learn something new every month. The downside is that I need to learn something new every month.

Six weeks at home and I really enjoy coming down to my office every day. While I would like to spend a day or two with my teammates each week, ninety minutes of driving times five days a week is a horrible cost. The big thing I have learned during the pandemic is that we own three more cars than we need. That is a stretch, but we really only need one gasoline powered vehicle. We could get by with a couple of electric subcompacts. Once I can trust the boys with something other than a beater, we are going to rearrange our transportation configuration.

Covering Your Face

We have been working on an efficient mask that is easy to construct the past few weeks. I have a bunch of old t-shirts that we are using to pilot our designs. Shoestrings make things easier. Guess what? Shoestrings are a pain in the ass to find in the wild. People throw shoes out when a shoestring breaks. That is a problem to fix later, but I am looking for a local source of shoestrings. So, I’ll let that go for now. I noticed that some of my old scouts were posting pictures from lovely places they have been sent on expeditions financed by the government.

Shemaghs are the ideal accessory. You need to cover your head in the sun. You need to cover your face when the sand is blowing. I spend a lot of money to cover my head from the sun and block the dust and other crap from my airway. Turns out that people solved this problem over a thousand years ago. I ordered one on Monday, creating my own cotton gauze is a high bar at this point. It came today, we washed it, I found a video on how to tie it and succeeded on my first attempt. My Facebook profile picture has been updated with my (better) personal picture. It hides the extra chin too. This is a win/win.

Working from Home - Day 29

23 April 2020

I have spent the day testing and debugging code. Even missed a call because I was in the groove.

Testing and Debugging

My day at work seemed short, until about an hour ago. I have code that behaves differently when run in two different places. I am really disappointed with the dotNet ecosystem. Why the systems developers could not make regex work the same way as every other sane environment has really been causing me issues tonight. Whenever someone asks why dotNet Core is not more popular, I can always respond: "Because it still sucks!".

Rural Time

I tried to wake the boys up at 08:50, they normally have a check-in conference at 09:00. I had fallen back asleep listening to the rain. I woke up at 08:30 and started to get ready. Mindy had gone to sleep in the bedroom recliner earlier this morning. When we have a cold rain, I do not hurry, but then I remembered that the boys have school, and I need to get my part of the project done.

We had an online work meetup tonight. We call it happy hour, but I still have too much to do to start drinking at 16:30. I do enjoy seeing everyone. I took time away from the project to attend, knowing I would have to work after supper. This is not different from daily life around here. Neighbor kids see me out hanging laundry and want to talk or toss ball, so I take the time. I suppose Callibrity is just part of my larger neighborhood.

Slowing down is the best part of the pandemic. I can still work, probably better from home. I can also enjoy more of my good life. Time spent commuting will never be quality time for me. I know how old I am now, and middle age is in the rear view mirror. It is likely that I will never write software that makes a significant portion of the world better off, but I sure can make the people around me better off.

A case for the virus uncovering our already broken environment.

Some things we can learn from the virus. Especially, slowing down. Full disclosure: Team Human is one of the podcasts that I listen to every week. If Douglas ran for national office I would work my ass off on his campaign.

I spend a good portion of my day making decisions for clients that are directed by this. Read the post, if you need more information, give Callibrity a call. I should be available next week. Been talking shit about Microsoft.

Working from Home - Day 28

22 April 2020

To celebrate Earth Day I worked from the back porch all afternoon. Even with the space heater it was too cold in the morning.

Regular Expressions

The majority of my current project is coding regular expressions to extract text elements from email. There is a fair amount of boiler plate stuff to wire up each format, but the hard stuff is the pattern matching. I have a few years of Perl experience, and plenty of shell development, so this is not my first time applying regex where there is probably a more elegant solution. Thing is, I really enjoy a pattern matching problems. I got hooked in my automata class in college.


Remote work really does allow me to have more flexibility in my day. I have one son that sees a behavioral physiologist every three weeks. I would normally spend at least two, and a half hours to take him to the appointment and return him to school or home. I can add hours to my work days through the week to compensate, but all I have to do now is set up the call and participate in a ten-minute review at the end of the session.

I also enjoy being able to hang laundry out each hour through the day. I try to take a five-minute break every hour. The FitBit reminds me. Hanging the laundry is a perfect fit.

Enjoying Rural Life

Today was the pick of the week, so I set some strip steaks down to thaw yesterday. I grilled them tonight. I tossed the potatoes in the oven and drove into town to get some cole slaw and beer. I did have to use the gas grill to compensate for the beer run, but it is almost as good as charcoal. I do need to clean the gas grill, the grease fires are getting worse.

Working from Home - Day 27

21 April 2020

Spent a good portion of my morning trying to parse data out of an HTML formatted email.

You Can Do Better

Set it aside, now I have a source that includes text/plain and another enclosure in text/html. If you want your email to look pretty in Outlook, add an HTML formatted enclosure. Adding a CSV attachment is fine. Please do not add a Microsoft Office formatted file. While I have to work with a .Net Core environment running in Azure, sane developers use an open source stack. RegEx is broken in .Net, hell it even has a different syntax from the rest of the world. Even better, if you have an industry standard data format, use that.

Dynamic DNS

I have two domains, our family domain and my professional domain. Both were registered through Google Suite, using a registrar called eNom. They have been rock solid. I am having trouble using Google Domains to create a dynamic DNS entry. It looks like I have to run the DDNS software on my web server to keep everything working correctly. So tomorrow I will spend an evening trying to get this stuff working. I assumed Google purchasing eNom would provide me with all of the benefits of Google Domains. Five years later, they still have not merged their talents.

Why Is This Happening?

Tuesday night is my night to go to my parent’s place and do any chores that they need doing. I can usually get through the chores in under a half hour. In a normal year we would spend a couple of hours watching baseball. This is not a normal year. Dad is declining, he is about to turn 86, so I do not worry about that. He did not have an easy life, and I really admire how well he raised me. We talked about his investments, and how they are doing, and why we have to have a long-term outlook. Long term to him is one or two years, I have to consider his context.

Tonight he asked me why all of this is happening. That is a hard question from my point of view. I tried to explain why keeping the markets (capital markets, not grocers) open is important. The market is an electronic realm. It depends on actual people creating more value than they consume. A core value is getting basic goods to every person that needs to cook, clean and spend their day. I explained that the current estimate is ten trillion dollars in economic loss if a second wave of the pandemic occurs. That is half of the country’s GDP.

Mom and dad want to go out to eat five out of seven days. I have been sending Sunday dinner over. I suspect I need to carve time out each day to send dinner to them. I see them once a week anyway. I could also just have them over each day for dinner at 15:00. It would be a change at work, but change at work is pretty much a given now. Tomorrow night is planned for the family, but we can figure it out for Thursday.

Working from Home - Day 26

20 April 2020

Body hurts from working in the yard this weekend. Ready for a little time in the office chair.

Stop Using HTML in Email

I am currently sifting through emails, scraping data that would normally be entered into another system by hand. I have a batch that is heavily formatted in HTML, for no clear reason. Adding mark up to make communications visually appealing makes this incredibly difficult. It is right up there with sending a Microsoft Word document. On the bright side, they did put the fields in a table, so I can write some expensive regular expressions to pull the data out.

I can also get the data as an Excel spreadsheet. That may be an option. This is going to run on Windows so chances are the software will be there. Getting all of the vendors to create a common data format or web API would be the easiest way to exchange data, it just will not happen anytime soon.

This Last Longer than I Thought

The governor announced that schools will not reopen for in-person classes this school year. It looks like working at the office is not likely to happen before June. Given that there are no plans for active testing or antibody testing, putting everyone in an open office is going to be a bad idea. Hopefully Ohio will be able to acquire tests before flu season begins again.

Finally Tilled the Garden Today

19 April 2020

Sundays are for yard work. We had the treat of showers all day, and they showed up.

Time to Get Busy in the Garden

Mindy and I went to Lohman’s yesterday. I wanted to find some seeds for getting the garden started. It is a little early to plant, and the garden is really ready yet. I just wanted something to look forward to in the next couple of weeks. Gardening brings me joy. Looking forward to gardening is what gets me through January and Feburary. I start planning in March, April is when I start to get busy. I found corn and peas, along with most of the herbs I grow on the porch.

I had to get the mowing going before I could work on the garden. The kids do not seem to understand that the lawn tractor is a tool for mowing grass. They leave swaths of the property uncut when they use it. I went to those spots to show them that it dose in fact work there. I also have to demonstrate the use of the push mower, it can also be used to cut grass in tight places.

I got the tiller out and checked the oil. All I needed was to add some fuel and get the beast started. I do not know why they left a priming bulb off of the parts list. I is a real bitch to start, but it runs like a top once it is going. I make a shallow pass through the entire garden, then I go deep. I go from trying to hold the machine back from charging through the fence, then I have to push the machine during the deep phase. The only thing worse than using a tiller is doing all of this with a turning fork.

First till of 2020.

No till? No thank you. I tried to just break the sod where I would plant for two years. It is a labor intensive method, spending every night weeding and cutting grass with scissors. I went back to using my turning fork to break all of the ground that I planted, as I planted. I am too old for that now. A petroleum powered tiller tears through the previous year’s organics, and mixes them with the current year’s growth.

Spring Time Saturday Afternoon

18 April 2020

I love standing under the apple trees under full blossom. The bees buzzing and I know we will have treats in the fall.

Apple Trees in Blossom

I look forward to the daffadils and crochus blooming in March after the snow drops in February. My heart lifts when the apple trees begin to bloom in April. The blossoms started to open last weekend. Mindy cut some to brighten the kitchen then. I walked out today and stood beneath the trees and heard the bees. The oldest tree by the driveway was pulsing.

Driveway Apple Tree

The one in the middle of the yard smells even better. Sounds like the bees think so too. I am thrilled to hear all of the bees this year. It is starting to sound like what I remember from my childhood. I have been missing the sound and sight of hundreds of honey bees in the trees above.

Red Apple Tree

Bluebirds Are Frequenting the Garden

I have been watching several bluebirds flying around the back yard. They seem to lite on the garden fence quite a bit. I remebered that Meredith had built a bird house in pre-school. I found it in the barn and hung it up on the fence post. We even found the apron that she was given when they built the bird house. Mindy found the picture of Meredith and I on the back porch, painting it white. The bottom says 2003, those years went by fast.

Painting the bird house.

Same girl, seventeen years later.

Making a home for some bluebirds.

Working from Home - Day 25

17 April 2020

Spent the day coding in .Net. I still dislike the platform. But it does have its fanboys.

Azure DevOps, the cloud service nobody asked for.

Today I have spent my entire time working on a application that runs on Azure. I had to work with DevOps on my previous project and learned to detest the numerous rough edges. The underlying web services are not any better. It is billable work, I just cannot see why anyone would want to use the platform by choice. Given Microsoft’s excellent sales force it does not surprise me that so many businesses are using it.

The New Confederacy

Yesterday Ohio joined Indiana, Kentucky, Michigan, Minnesota, and Wisconsin joined together to develop a regional plan to re-establish commerce. Earlier this week California, Oregon, and Washington announced that they would form a regional unit and Connecticut, Delaware, Pennsylvania, Rhode Island, New Jersey and New York are also working as a regional unit. A confederation I suppose. I hear that the three coalitions represent more than fifty percent of economic activity in the United States.

I have been fascinated by an alternative political organization of the United States ever since I read The United City-States of America. A regional government may be a good first step towards a more representative government. I think the main reason that the Nordic countries can make a democratic economy work is their homogeneity. If you believe that your neighbors are the same as you, you can allow them more liberty. Frankly we need to be way more inclusive of the people we consider the same as us. I have noticed that living in relative proximity is a surrogate for identifying with others.

I need to re-read the Federalist Papers. These men had a very large job ahead of them, and even with four months of effort, they pulled one helluva of an all nighter. The states, at the time, were a good segregation of resources as they existed. Let us side step the issue of slavery, it was among the sins of the early United States. The eradication of indigenous people were another. I want to stay on a single glide path here, happy to write about the other issues with the nation’s founding in another post.

How do we live together? I suppose I am really looking at how do we live together in an economic sense? We need to share a common belief in our common outcome. You and I need to provide for ourselves and our families. I do not know how you define your family. Mine consists of my spouse (loaded, I know), our children, and what is left of our parents and brothers and sisters. We also consider our extended families, cousins and such as our extended family. There are also elements of extended family. Lifelong friends, the friends that result of friends. Let us call this extended family a tribe. (Not an anthropologist, give me some latitude.)

I really do not want to see the actual implementation of a confederacy. The "alliance between persons, parties, states, etc., for some purpose" sounds very open to a radicalization platform. How do we allow people to organize locally while also allowing people to get out of an area with conflicting organizations? I think the federal oversight is useful to prevent the suppression of people when they differ from their local norms. Maybe the intermediate ground is an absolute freedom of the press. This implies that we have a freedom to publish and randomly access content. Actually, now that I consider this, I am beyond my pay grade to consider the effect.

Tomorrow’s reading is Federalist Papers.

These were real men. Constitutional Convention.

Working from Home - Day 24

16 April 2020

Spending my day in online meetings. Other people, at a distance, not bad.

JavaScript without Breaking the Web

Seems like one can do quite a bit of work with JS enhanced pages using HTML and standard JS modules. I still do not see the allure of having single page applications. Looks like even mobile applications cache the contents of a given site. I think I will pursue this route until I find a reason to take on the added responsibility of managing history.

Back to the Dark Side

I picked up more .net work today. A short-term gig for a local organization. All backend so I should be right at home. I can add value to the project, and it beats riding the bench. Need to find some Java and Spring Boot roles to keep up. May need a new side project.

Working from Home - Day 23

15 April 2020

Back to improving my JavaScript skills.

Understanding JavaScript in the Browser

Today’s goal is to get myself educated on how JavaScript works in the browser. Seems that things have changed in the last ten or so years. The morning was spent learning when scripts are run during the document load process. After lunch I dove into how to update state based on search parameters. Finished up with document event handling. The sample application looks like a 1999 website, I am not aiming for pretty at this point.

I had to switch to Linux, I just need a simple web server for testing. Node fits that bill. Adding features to Windows is a huge pain in the ass. I am so happy that I can work on a Linux system at home.

Working from Home - Day 22

14 April 2020

JavaScript enhanced HTML pages. I am finally forcing myself to code a sample application today. No frameworks, I need to really learn how this stuff works.

Framework-less JavaScript

I suspect the problem I have had with Angular and ReactJS have been that they bring so much cruft and delay the development process. I know, I use Spring on a daily basis, but we are really just working with web pages. I see the value in templating utilities to cover the boiler plate stuff. I really just want to work with the HTML and let those with design skills handle the CSS. So late yesterday I pulled a few articles on VanillaJS and started to follow along.

Harder Than it Looks on YouTube

Cheese n' rice! The script tag has a new attributes. The type="module" fixed my problem trying to import an ES6 external script. I thought I would make it easy on myself and use a modern dialect. The async attribute did not surprise me per se, but I had not anticipated that I would want this feature. I am working on a separate posting for new JavaScript skills for old developers. I do not think I can re-direct input based on a path parameter.

Working from Home - Day 21

13 April 2020

Decided to give OpenID some more attention today. Specifically using Spring Boot Starter.

OpenID with IndieAuth

I started working on a test program to log into a Spring Boot application with as the authentication provider. I was about to build a home page with ThymeLeaf, started looking at the syntax and thought that I could probably just use a simple HTML file for what I wanted to do. That made me rethink adding Bootstrap to the mix too. Off on a side errand.

Home Page with HTML and JavaScript

I should be able to do this without a framework of any kind. I need a page with an edit control and a submit button. Maybe the reason I dislike front-end development now is that it adds so many steps to creating a web page. So now I have created a simple page that has a single action to invoke. I do need a callback URI, so I have to read a little bit more. I am sure I can do it with the same page, the frameworks just provide that feature, now I have to write it.

Working from Home - Day 20

10 April 2020

This is the end of the fourth week of working from home.

Continuing to Dive into OpenID

I went back and read the OpenID Connect Handbook again. Now that I have a little experience with working through the flow myself. Coding against the model is what really helps me understand these systems.

Working from Home Tips

What I have found makes work from home work for me: * Use some of the time I would spend commuting on sleeping. An extra thirty minutes a day makes a difference. * Use the rest of the time exercising. I feel better, my blood pressure is now down to a healthy level, weight is going down. * Get up during the day. I picked up a FitBit in February, it makes me get up every hour for 250 steps. My back feels much better. * Sunlight is great. I spend as much time on the back porch as I can. My big monitor is in the basement office, but I only really need it for coding. Training videos and reading can be done on the porch.

What has not worked: * Sharing space with teenagers trying to do school work. I need a quiet space to do my thinking. Sharing a space with the boys is as bad as working in the open office. * Drinking like it is a weekend. Even though I do not have to get up and drive to work, I cannot have two more beers. I really messes up my sleep cycle which leaves me irritable the next day. * News throughout the day. It is not positive, broadcast pisses me off Twitter pisses me off. I have found that music works well. I used to be an NPR listener, I just need to ignore the world while I work now.

If you are getting started with DynamoDB I would recommend reading the AWS DynamoDB Guide. But these ten rules are a nice introduction.

Working from Home - Day 19

09 April 2020

A new Google SRE ebook dropped into my feed yesterday. And my IDE gets a big update.

Take Care of the Team

I spent the first twenty years of my career focusing on the technologies that I used to deliver software. The last ten years I have been learning how these can be used in an organization to deliver software. I have also learned that if the team is not right, no technology stack is going get a project done.

Agile development frequently fails when the team is not autonomous and fully skilled to deliver the product. If your organization is not agile from the top down, you probably need some help building your development teams. If your team is lacking in some skills, you may consider adding some consulting talent to fill the gaps. Make sure their goal is to work themselves out of a job.

The product that the team is going to deliver is going to feel like the team that builds it. If you have multiple teams building your systems, you will find that the resulting system looks a lot like the teams that develop and support it.

IntelliJ IDEA 2020.1 is Available

I had an email this morning, IDEA 2020.1 was available. This is my favorite tool for Spring web development. Best of all it now supports Java 14. My other favorite feature is the ability to install a new JDK from within the IDE. I get the yearly subscription to Ultimate. It’s worth it.

Google SRE Books

A new book in the Google Site Reliability Engineer site has a link to the newest book in the series. SRE Books has a new title, Building Secure and Reliable Systems. Just started it today but looks like it follows the previous titles. Guess what? They hire to place people in the correct team.


08 April 2020

I am trying to be better about documenting my learning in side projects. I also tend to learn the hard way, by doing. This is part one, turns out this stuff is complicated.

IndieAuth - Control Your Own Identity

I am working on a micro-blogging application and started looking into how to authenticate someone. I do not want to maintain a login system due to all of issues. I have worked on a couple of projects that use OpenID/OAuth and would like to go in this direction for my own site.

I noticed on the Indieweb site that I can use my personal website for authentication just by adding a link tag to my head on the home page. So the easiest way to approach IndieAuth is by linking to one of your social media accounts. Then use to provide the authentication. See: Sign in with your domain name. and RelMeAuth.

Step 1

So I added this to the header template for my website. Do not use Twitter, it does not work anymore, the IndieAuth page says Twitter changed their API.

<!-- IndieAuth -->
<link rel="me" href="">

Step 2

Then go to GitHub and open your profile. Make sure your web page link matches the link you use to reach your home page. Mine still used http as the type so it did not work the first time.

GitHub Profile Page

Step 3

Now use the Try it Now box on the setup page to verify that you have this correct.

Try it now

Step 4

This takes me to the page where I can confirm that I want to use GitHub as my authentication provider. confirmation.

Step 5

Clicked the button to proceed.

GitHub confirmation.

Step 6

I was already logged into GitHub in another window. So I only had to authorize IndieWeb. sucess!


And it’s complete. This works with any site that supports IndieAuth OAuth provider.

Working from Home - Day 18

08 April 2020

Blending GCP training with figuring out OAuth makes my day fly by.

Online Training

I really like online training, instead of just reading a text book or worse, going to an in person class. I see the problems that the kids are having with staying focused on their work. After about four hours of videos and labs, I really do not remember much.

User Authentication and Authorization

What seems to work for me is to switch between the training time and working on something that also interests me. My previous project need a authentication and authorization feature, we looked at Okta and some other OAuth providers but settled on AWS Cognito. We knew we did not want to roll our own, that is how you end up in the news.

I wanted to really learn how this works at the time but there were more solutions to investigate so I had to let it go. Now I have time to do a deep dive and really understand this stuff. I wanted to add an IndieAuth authentication to by personal site for a new side project and it snowballed.

Working from Home - Day 17

07 April 2020

Read the specification, now I am trying to roll my own selfauth endpoint in Java.

SelfAuth in Spring Boot

In software, everything is easy until you try to code it. So I have been working all morning on figuring out the control flow for the selfauth protocol. I am approaching it in steps now. And creating a separate posting about it. I sure do wish that TLS had been baked into the web from the beginning, testing this stuff on my laptop is difficult.

Back Porch Privilege

I spent the afternoon in the back porch office. It was 78 degrees and I finally had to take a walk at 15:00. I even convinced my son to with me. My children are what you might call "indoor enthusiasts" so the weather was beautiful. I know that this is about as good as one can hope for in a pandemic. I am truly grateful.

I spent the next two hours with the windows open, listening to the neighbor kids learn how to play badminton with their dad, who will likely go to his shift at the police station in a few hours. I also enjoy listening to the kids talk about their take-home packets. I think the kids are learning more about life now than at school. They raise chickens and rabbits, and mom is a nurse so they get to learn how to care for others.

After Work

We made chicken quesadillas for supper tonight. Frozen chicken cubes that I warm in a skillet with some chipotle and chili powder. I miss having the fajitas on the side. We will have fresh vegetables in a few months, just having trouble getting them now.

RIP John Prine

So I hit Twitter before heading to bed. I find out that John Prine has died. I thought sure he would make it after they moved him out of intensive care. I assumed that this was a positive sign, it is not always positive. Sometimes it means that someone is occupying a space that someone else is more qualified for, so I hope that these people are better off. I am running out of musical favorites.

Working from Home - Day 16

06 April 2020

Need to Code Some Days

I decided to play with some Spring Boot stuff today. The GCP stuff will still be there tomorrow. I have not really written any code lately, and I really need to spend some time on the new Java features. The past six months were C# and my Spring ecosystem skills feel rusty.

OAuth using selfauth

There is an OAuth 2.0 extension for using your own website to authenticate on other systems that support this method. This seems natural to me, but man are there a lot of details to address. I am working on a simple Spring starter to allow me use selfauth in various projects that I have been planning to start, and now have the time to devote. I have not found a good Java implementation so I am rolling my own based on some PHP examples that I found.

After Work

I spent some quality time in the garden tonight. I have to dig up clumps of grass every spring. I do not enjoy this, swinging a mattox all evening makes me wonder if gardening is really for me. I suppose I could spend more time during the growing season pulling grass that creeps into the garden. That would be quite a bit of time. This toil does get my body used to working outside again.

When I finished in the garden the next door kids brought two rabbits over to show me. They said they are raising them as pets, not for dinner. They are cute now as bunnies, but the kids have already learned that they bite and have some serious claws. Their dog doesn’t seem to be interested in the bunnies. It will be fun to watch this mature.

Scoot and Meredith wanted a campfire again. I know it is Monday but I did not have a good reason to prevent them from building one. Life can keep going at a much slower pace now. Shelter in place has actually been a positive thing in my life. Billable hours are harder to find, but I can also be useful to the younger folks too. Tonight I taught my daughter how to use a bow saw correctly. I have neglected a lot over their childhood.

Spring 2020

04 April 2020

I look forward to each spring. I get to see how much I have gone to seed since the harvest. I think this year I will expand the garden, if I can find the seed.

A Good Year Last Year, A Hard Year Now

The deep freeze is getting low on vegetables, I need to get this year’s crop in soon. First I need to reduce the fallow to ashes. I do not till in the autumn, I allow the native plants to take over when my intention is done. Weeding takes so much of my time in the season that I am happy to let nature have its fill for the remaining months.

I am now paying the piper for nature’s nourishment. I had to pull all of the woody plats that flourish in the shoulder season. I do not begrudge them, but they do challenge me as I get older. On the bright side, the ash that they produce will make the soil stronger, and maybe even me. I need to get my body tuned to bending and weeding for this year.

Seeds Are Hard to Find

I never used to worry about getting seed in the spring. Everyone had more than they could sell. We have had quite a bit of new development in Harrison over the past ten years. Looks like they all think that a sixteenth of an acre will provide for a family of five.

I suppose I could expand our family garden and invite the folks from the developments around here to help maintain it. I suppose if this goes on through the fall I will get some more fence posts and start a Facebook group. I do not want to send anymore business to Facebook. I simply do not see an alternative to getting people to federate in time to save the supply chain.

We Have a Mask

I found a design for a personal face mask on the New York Times website via a link that I have forgotten. How to Sew a Face Mask looked like a good start. I agree it is. We have a sewing machine, thread and a bunch of t-shirts that I do not fit in anymore. I measured and cut the dimensions that were specified. The 3/4 inch strips for the ties are crazy. My wife is pretty competent with a sewing machine, I can sew straight if the machine is set up for me.

We fell back to a mask with two pleats and some strips of fabric that were already made to be used as ties. We will adapt the dimensions for our use and publish those later. I really want something that we can make out of cotton fabric so we can bleach it when we get home.

Working from Home - Day 15

03 April 2020

First day without a video chat, getting pissed off at GCP training.

A Quiet Day at Work

Today was the first day without any video chat. There was some activity on Slack but I missed seeing other developers. I admit, bench time is always a little lonely. You are not on a team so there is very little reason for people to hit you with random chatter. Hoping that things get better next week. I will have a part time gig, and if I can pick up one or two more I will be in a very happy place.

The particular GCP developer training has been irritating me all day. The AWS Developer training I had was longer, more intensive. It was pretty glitch free. I am finding the GCP Developer training to be dull, literally reading the display material. The labs do not appear to have been updated recently. I know Linux Academy was acquired recently. I suspect that they were looked at as a potential profit center.

Real People

The next door neighbor’s kids are keeping my spirits up. I am spending my time after lunch on the back porch. I get to listen to them on the trampoline, chasing the chickens around, avoiding chores and general kid stuff. Our friend down from down the road stopped by with a bunch of baby carrots that nobody could use. I figured someone with chickens or horses would want them, but she said I should feed the kids until their skin turned orange.

We are up to the top of the refrigerator in eggs now. My neighbor is starting a brood of a dozen chicks again. I know a few of the under-performing layers will be in the stew pot, but it makes me wonder what everyone will do if they cannot get chicken feed. Few of my neighbors raise ruminants, so the lack of shit to attract flies will lead to a bunch of starving chickens.

Family Life

I had to spend my lunch break mowing around the laundry lines. My "bright" son thinks chores are a waste of time and we already had two baskets of laundry ready to be hung up. He is a bright kid but does not see his place in the family. All of us have picked up his slack for a few years, that is beginning to be a liability.

My other son wanted to hit baseballs into the back yard. I started the dinner and went out to shag balls while he did his swinging. I almost burned the rice and fish, but we pulled it together. I did not get supper on the table until after 18:30. The kids wolfed it down and were back outside playing ball before 19:00.

Everyone wanted a fire so I had them bring the fire ring out while I went up to the garden to get some logs. I keep the firewood up there to keep the termites away from the buildings, which tends to keep the moles and voles up there too. They piss me off in the garden, the moles break ground but bust up my rows too. Voles eat my roots while looking for insects. The insects eat the tops. I plant twice what I want, I know that I have to share.

I left building the fire to my two oldest. I went for a bike ride with the youngest. We had a hard time earlier when he had to finish his chores. I do not handle anyone slamming doors. I have to fix them after their exit. Made him come back and exit like an adult with self control. I prefer a walk, cycling is not a good way to communicate, it can be a good way to meditate. Communication is probably more important now.

New Skills

I found a New Your Times link,footnote[] to how to create a DIY mask. I have a stack of t-shirts that could be re-purposed so I printed the instructions and tried to figure out how to get the sewing machine working to execute the instructions. Mindy took over the sewing machine problems. My mom always took the sewing to herself, I never learned how to use the machine. All of my sewing is by hand, learned from the Boy Scout Handbook. Useful, but it does not scale.

I did manage to stencil the components and get them cut out of the test fabric. It was much easier once Mindy gave me sewing scissors, dull blades will piss a monk off. I grabbed the first pair I cold find, which lead to a hacked cut. The machine itself was giving us trouble so the first mask will have to wait until tomorrow morning. We know we will need these next week. Our governor and health director seem to be sensible. Next step is for people to cover their breath.

Working from Home - Day 14

02 April 2020

I am starting to fall into a routine now. Maybe even a healthy one.

Letting Nature Take Over

I tend to wake up a little before seven each morning. Especially if I do not drink before bed. So I think I need to shift my exercise back to the morning and use lunch for a walk. My dad says retirement means every day is Saturday, work from home kind of makes every day like Thursday. There is stuff that needs to get done, but the pressure is less.

Good News, Old News

I had an early appointment with my behavioral therapist. The early part of the week was rough. High anxiety, but very little depression. I would rather live with the depression, I know how to work with that. The anxiety requires full time attention, and I really need to verbalize my thoughts to process them. I am happy that I am working from home. I know this pisses my coworkers off. Now that it is just my boys playing games in the computer room, I throw them out when they complain.

I made some good progress on my GCP training this morning. I also had a ping from one of the practice leads. He has a client coming on board next week that has a bunch of EDI work that needs to be ported to a modern platform. It is only a couple of days a week, working on moving legacy code to modern frameworks. I could live with billable work interleaved with professional development, in my home office.

Home Life

It was sixty-two degrees when I was done for the day. I dug the charcoal grill out of the barn since burgers were on the menu tonight. I moved to the back porch after my lunch walk this afternoon. It was sunny and I got my only hoodie out of closet, which made it pretty nice. The afternoon passes quickly when I am on the porch. I wish I had a better phonograph player out there. I may have to move my stereo out there, I don’t think the rest of the family appreciates it anyway.

Burgers, chips and mustard potato salad from last weekend tonight. I do not know why but my kids do no like potato salad. Leave more for my wife and I. I had a half hour of time between building the fire and ready to cook. I spent it with my neighbor’s twenty-four plus month daughter. Before winter she was Hi or Hi Dennis, she told me everything she knew about our back yards in thirty minutes. Jo is now my favorite person in the whole universe.

I had planned to walk and work in the garden after supper tonight. I kind of hit the walk part, I kept walking around the yard trying to keep my kids working on mowing. When I asked why they did not finish my neighbor’s yard after their tractor died, I just got "Not my job." I plan on using the same response after I make supper for Mindy and I tomorrow.

Working from Home - Day 13

01 April 2020

Hit the bench today, back to GCP training.

What to do today?

Came down to my office this morning with no client work to do. Decided to get back to my Google Cloud Platform training. I do not know how soon it will before I need to get moving on an internal project or need to help another client, no sense in wasting good training time. I figure I can split my time between GCP and improving my Javascript skills.

Linux Academy is my favorite for cloud training. The labs are well structured and the study guides are helpful. I get the one year plan with my training budget, there is always something I want to learn each month. Udemy has been good for learning front-end development. I just purchase the training I need as I go here.

After Work

I pulled a muscle in my chest somehow today. It hurts to breath on the left side. Had some leftovers for supper and stretched out for a little bit. I woke up two hours later. Still hurts, just not as much. Missed my evening walk. Will have to see if I can get more exercise tomorrow.

I did hit the treadmill while I watched some television. That loosened my chest a bit. Enough to collect trash and carry it out to the curb. Hoping that I get back to the elliptical tomorrow.

Working from Home - Day 12

31 March 2020

Last day on a project that is being moth-balled.

End of Project Blues

I slept in after a night of anxiety, I could not stop my mind from latching onto negative thoughts. I did manage to keep it together by trying to keep my heart rate and breathing under control. I suppose I should just avoid the doom based podcasts for a dew weeks.

We are wrapping up loose ends at work. Tweaking Terraform scripts and trying to get the local docker compose scripts running on everyone’s machines before we set them aside. On the bright side, we are hitting the bench together tomorrow. Looking forward to finding billable work though.

A New Display

My Ultra-wide monitor came today. I have wanted one for home since I got one at work. Our work-from home stipend made it a reality. I prefer this to multiple monitors. I can have documentation and my editor open on the same screen. I really do not have to leave my home office anymore. As much as I want to head for the Smoky Mountains, this is pretty good too.

Chore Night

I went to see mom and dad tonight, Tuesday is chore day. I spent fifteen minutes doing what needed to be done, then had a couple of beers and talked for an hour. Mom wanted to go see her sisters in Kentucky on Thursday, she decided against it after she heard that interstate travel is discouraged. I am encouraged that mom and dad are beginning to avoid other people.

End of the Month

Christ. This has been a long month. I have raised twin boys and this was a very long month. I am trying to avoid a dark time, it would be very easy to just tune out for week and sleep. I am looking forward to going to the seed store and getting some cole crop starters this weekend. The garden is waiting to be started, hopefully that will be enough to pull me back up.

Working from Home - Day 11

30 March 2020

I know most people think that the days blend together when working from home. Not me, that weekend was too short to get everything done.

Monday Morning Already?

The alarm went off at 07:00 this morning, I did not want to roll out of bed. I fell asleep listening to Deepak Chopra on the Recode Decode podcast. actually I was listening while working on the weblog last night, Scott woke me up. I really need a three day weekend to catch up on writing, gardening and cooking. The bright side is that I have more time for cooking during the day.

Work Life

This was the last full day on our project. Tomorrow we are tying up ends and presenting the final sprint to our absent landlords. Come Wednesday most of us are on the bench. The bright side is that we are a bootstrapped organization. I have always believed that building an organization is harder than buying one. I have been with a couple of companies that have tried to expand by merger. The culture is critical, nobody wants to work for Sogeti.

Our scrum master resigned today. That really hit me hard. He is a great leader. He really understands people and how to get them to go in the same direction. I have spent many a weekend at Boy Scout leadership conferences that really be summed up as "be like this person". I do not disagree with his decision, he is a recent employee, although I have no idea how we would reduce headcount, he is making a prudent decision. I would really like to work with him again.

Coping with Change

I will address how I deal with my fear of Covid-19 later. Really it comes down to how I live with change. Once I learned to sit with the terror of change, to just let it wash into me, and feel it, then I can deal with the fear. My anxiety is directed towards protecting my children from the virus. They want to order food, I only permit it once a week. I go out to the grocery each week, I actually enjoy this, it is not a hunt, but the frame is similar. I will hunt again this autumn, I miss the uncertainty.

I continue to emphasize exercise in my daily routine. I know that most of my anxiety is held in my neck and legs. Finding a good massage therapist helped, I wish I had found her earlier in my life. The moral is that we are not independent, we need all of the others to get through life. I know it is hard for everyone, we each need to give what we can to anyone that needs our talents. Moving helps me release my pain, and it helps me find others that also need to find a release.

I Am because We Are

Ubuntu, which I do not understand in a visceral sense, because the language and sounds are not my own. It has been explained to me since the Linux distribution was released, but it seems this is the translation that it converges onto, that finds my passion. I Am because We Are, that totally resonates with me. I cannot draw passion from things that I do not care about. I see more money, but I do not care about their aims.

I have started a series on my personal challenges. I will publish this in June. If I do not survive that long I hope that one of my survivors will. I have shared the passwords, hopefully I have also supplied the documentation on how to publish this site.

Sunny Spring Day

29 March 2020

Woke up with a hangover, enjoyed the day anyway.

Slow Sunday

I was drinking rose last night, watching the storms go by. I enjoy wine, it usually makes me feel worn out the next day. Last night I kept to three glasses but also had a margarita. On top of three beers while grilling steaks, I was pretty beat when I woke up today. I also wanted to make breakfast, but looked at the clock and decided that 11:00 means that I should call it brunch.

I was making eggs, hash browns, and bacon. Mindy finished her treadmill walk and headed out to Sam’s Club before I was done. I know she needs some time to herself and there really is not a good reason for both of us to risk infection for a run for provisions. I did have some time to share with my daughter and son. Meals have become more important to me. I do not mind cooking and cleaning for the family.

Getting Outside

I did a load of towels this afternoon. The sunshine and strong wind looked like a good way to dry them quickly outside. I have a broad swath of yard that is consistently wet. It extends into the laundry line area. This is also where I have four crawdad towers. Nothing like tripping on these towers when hanging laundry

I decided that some hiking therapy would be a good idea today. My plan was to walk the Shaker Trace trail. It was 72 degrees at 15:30. There were plenty of people on the trail today. I decided to turn around at Oxford road, my shoes were causing pain, and there were too many people out. Cut it short and went to the grocery to get some fresh produce.

Looking Forward

Last week we talked about what we are looking forward to doing when we can be social again. I missed beer pubs, but what I really miss is spending time with our friends. I would love to cook for everyone again. I miss going to see the others too. Our neighbors had some of their friends over for a cook out and a fire yesterday. They are nurses and law enforcement, so yea, they are going to get it. And yet they still get together with their kids. I totally get that.

Covid-19, 2020-03-30

29 March 2020

I hope someone will move this status to published if I fail to survive.

2020-03-30 Summary

I have been documenting the social distancing in my life for the past two weeks. Computational consulting is actually a good deal. My principal benefactor is giving up on us. They believe that they can continue our work in Japan. If they find a talented crew to take it over they may make it. If not, they sealed their fate.

Work from home mandates are beautiful to me. I enjoy being with other people, if I get to choose the other people. I really want to deliver value to our clients. On the other hand, we can really make some progress in asynchronous communication using tools such as BaseCamp. I really do not want to spend over ninety minutes a day driving to see my coworkers. I also appreciate the fuel I burn to get there. The cost of transit needs to be considered when we think about going to "work".

I am Addicted to Other People

I am an introvert, I cannot deny this. I need to have other people around me to attenuate myself. I am also on a spectrum, how can I express this and continue to raise my boys? I want to teach people to think. Can I teach someone to think? No. Can we interact to find a way to socialize? Yes. We can make a non-social system work. The down side is that this depends on temperature. Global warming is not a good thing.

I have my wife and my children. I specify my wife as the one person that I have chosen. The children are a result of our decisions. We decided to try for children, my daughter was a result of that, which I will will forever enjoy. I thought we would have a boy, but the joy of having a healthy child should make any father love his place in life. The boys are a result of Mindy’s desire to not have a single child. It has certainly made my live different.

I am a different person as I am. I live in an epidemic, how will I deal with this if I lose a child or children? Cost versus benefit? Losing a child? Economics? I really do not have a frame of reference for loosing a child. Do you?

Working from Home - Day 10

27 March 2020

Today’s work from home allowed me to run an errand with mom and dad.

Started in the Office

It was just a bit chilly on the porch this morning. We had a front move through over night with some storms. They woke me up so I skipped exercise and slept a little longer. My day is much more flexible without the extra ninety minutes of travel. I can always add it in at lunch or after I am done.

I wasn’t sure how long I would be in the office so I turned the happy lamp on, it gives me a eerie look during stand up too. We are all a little short on work right now, project ends on Tuesday so we mobbed on the harder stuff. AWS IAM configurations are always hard. Good to get the knowledge spread around the team.

Afternoon on the Porch

The afternoon was warm enough to head back to the porch. It even warmed enough to open the windows. Bird songs and the sound of the next door kids playing. The family of Redtail Hawks hunted the back line for awhile. We continued to share knowledge of how to Terraform AWS and Azure build pipelines.

Mom and dad picked me up after 14:00. Dad usually waits until the last minute to get his taxes prepared, I pointed out that he has until July this year if he would rather not go out. He said he had the appointment, may as well keep it. This is the last year he intends to do it. I am supposed to start taking over all of the finances for he and mom, he cannot keep his mind on it any longer.

Returned in time to finish up on getting a new build pipeline working. We had a virtual beer together to wish EJ a good start to his new gig on Monday. I even had a chat with the account manager about openings and where I can update my skills starting on Wednesday.


I made a pot roast for dinner, in the oven instead of the crock pot. I smelled it cooking all afternoon so I had to work on my self discipline. After dinner I checked that Great Parks trails were still open, took my youngest for a walk. He complained that he was still hungry so we drove through Wendy’s to get him a snack. I pulled up to pay and he adjusted the bill. Said I didn’t sound old, gave me the "Goodbye Boomer" discount.

Will People Quit Working?

26 March 2020

Will people quit working if unemployment checks will cover their bills?

Are You Kidding?

So some Republican Senators are opposing the stimulus package because they think people will quit working if the unemployment assistance will cover their basic needs? I thought the President was going to drain this swamp. Nobody gives up a good job to rely on the government to provide for their family.

I used to believe that I could never join a political party. These clowns are driving me to the opposition in a Tesla. Everyone wants to be useful, maybe it is time for these folks to retire if they think everyone is just working for the paycheck.

Working from Home - Day 9

26 March 2020

I woke to a lovely sunny day. Chilly this morning, made it to the porch office by lunch.

Terrific Morning

I woke up to a sunny morning. I was trying to decide if I wanted to call off and hit a trail for the day. I decided against it, I still have some documentation to complete. I also figured that the trails would be in use today. I would rather stay away from everyone as much as possible still. I skipped the news this morning, pandemic news really doesn’t make my day any better.

Had yogurt and granola for breakfast. That seems to be my go-to breakfast when I just want to get going. I have moved my daily indoor exercise to lunch. I stay up past 23:00 and sleep is critical to my well being. I know that I will have to switch back when we return to a neo-liberal society. For now I am content to do my part and then work in the yard.

Extracurricular Activity

We had a virtual happy hour tonight. Costumes optional. I had my pandemic outfit all set, then HR decided to celebrate Opening Day too. I had to add a Cincinnati Reds ball cap to my plague ensemble. That shit got real hot fast. We did the group photo, Ring Central Brady Bunch style and I ditched the costume. It was nice to just chat with everyone. I think we need a big cookout once this pandemic is over.

How the Family is Getting Along

I typically do the yard work. My family is what you would call indoor enthusiasts. This afternoon my wife got the lawn tractor out of the barn and tried to turn it over. When it almost started I fueled it. I figured one mowing would be fine, may make it easier to change the oil this weekend. We would all rather be doing something outside at this point. Even the boys helped, with just enough complaining to make it seem as though they did not want to do it.

Working from Home - Day 8

25 March 2020

Made it to midweek. We are getting work done.

Collaboration in Hangouts Meet

We just leave our morning stand up Hangout open during the day now. It is really nice for impromptu comments on what is going on in the team. It is also a place to mob on problems. Unlike in the open office, if you need some space to think you can just turn it off. I like to think of it as the best of both worlds. We have really accomplished a lot in remote mode, I suspect even the developers that would really be in the office are not missing the daily drive.

Returning to the Back Porch Office

The porch was only forty degrees this morning so I worked in the basement office until after lunch. The sun had warmed the outside temperature up to almost sixty by then so I moved to the porch desk. I even opened the windows after 15:00. Sunshine and bird songs made the afternoon go quickly.

Virtual Scout Meeting

The boys' scout troop is trying to hold their Wednesday night meetings online for the duration of the social distancing order. Tonight they tried using Google Hangouts. The free version is lacking, only twelve simultaneous connections and there are at least fourteen families in the troop. And a dozen boys online at one time is about as well controlled as you would expect.

School resumes with online instruction next week so hopefully they will have better video conferencing habits. Looks like they have settled on Zoom for next week. I do like its management features. It does have some creepy spyware aspects though.

Another Perspective

I noticed that my wife has started blogging again. I suspect there will be many more people dusting off their old blogspots during the break in socializing. You can find her’s here.

Working from Home - Day 7

24 March 2020

Chilly morning, decided to work in my office this morning.

Social Media Distancing

I am trying to avoid Twitter today, there is a lot of inspiration content, but there is a lot hate too. I am not up for that today. Looks like we are looking at May before we can begin socializing in person again. It also looks like the nation’s leaders want to send everyone back to work next week. One thing I am hoping for is to be out of isolation in time for the November election. I have made up my mind on this group.

Work from Home and Real Life

The bright spot of my morning was when I walked through the family room after stand up. The work from home anchors on Local 12 had their kids with them for their last updates of the morning. I remember having toddlers and elementary school aged kids around when working from home. Interruptions are going to happen. They are going to ask questions during phone calls. The work will still get done.

I actually enjoy it when a child or animal walks and/or crawls into the room while we are in a meeting. Kids get to see what software development looks like as it happens. We really do not sit at our keyboards and write code all day. A good part of each day is talking to other team members and customers to determine what code to write. Reading documentation burns a good part of the day. I is better now that we can search, but a good fraction of your day is spent on what and how, then the coding.

Afternoon Walks for the Win

I try to walk for twenty to thirty minutes each afternoon. Sitting in front of a screen for eight hours is not a healthy lifestyle. It also brings my spirits up, by 14:00 I am usually pretty worn down. A twenty minute walk gets me interested in my work again.

Margarita Recipe

I found a simple margarita recipe a while ago. Limes are cheap now so I revived that as my after dinner drink. Two shots tequila, one shot triple sec, half a lime squeezed, light salt on the rim of the glass and a couple of ice cubes. I just stir mine, and I don’t bother to filter the lime pulp. Cheers.

Working from Home - Day 6

23 March 2020

Oh boy, the work from home period was extended until April 6th by the governor, and I feel fine.

Happy Monday

Mood at stand up was better. Everyone had the weekend to relax. A mandatory closing of all non-essential businesses was issued yesterday. We are working from home until at least April 6th. We have extended our sprint by one week so we don’t end the project in the middle of a sprint.

Looks like I am rolling off at the end of next week. Updated resume for another gig, and let everyone on LinkedIn know that I will be available in April. I should also update my other social media accounts. We have good account managers at Callibrity, but the jobs that I have really enjoyed have always come from friends.

Home Office

I have had an office in the basement for the last ten years. Around four of those years have found me spending a good part of my time working from home. This December I bought myself a nice office chair after spending most of my time at a standing desk. Turns out, standing all day is not good for your body either. (Not to be conflated with moving on your feet all day.) I may get one of the desk lifts so I can alternate between sitting and standing if this goes into May.

Callibrity was gracious last week and gave everyone a stipend to update our home offices. I am finally getting an UltraHD monitor for home. I have been using a 1920 by 1080 for a few years now. I would not have know the difference except I got a curved UHD at work last year and I love it. I cannot wait for it to arrive next week.

I spent my entire day working on the back porch today. I had the space heater cranked up all day. It started at 50 degrees this morning and was up to 65 degrees by the end of the day. I may have to work in the office in the morning until the morning temperatures improve.

Working from Home - Day 5

20 March 2020

The first week of mandatory work from home. That went well.

Week in Review

Our team concluded it’s first completely remote week at 17:30 EDT. The front-end developers really made progress on the application. The back end development is mostly done, we are now focused on providing automated infrastructure deployment using Terraform. This was a pairing event today, I am used to building databases with the tool. We have done some basic AWS infrastructure with it in the past, but today’s goal was to build the entire stack with a single command. We made it.

We have a voluntary video conference today over lunch. We peaked at around nineteen out of fifty or so in the company. It was nice to just share how things are going. We even tried to do a Brady Bunch photo, which worked better than I expected. We have a "Virtual Happy Hour" next week. My team ends the day with one each evening, but we became drinking buddies back when we still had beer taps in the office. Today was not an exception. Most have craft beers, I still prefer my Molson Golden.


I enjoyed the week at home. Communication is a little more difficult, but the benefits are pretty sweet. I liked the ability to run an errand after our stand up today. It did take longer than anticipated, but I think I can optimize that. A walk at lunch really helps break up the day, although I miss the mid-afternoon walk with the team.

I took a little time off this morning to run into town and spend some time at Kroger. If I go after work, the meat and produce are cleaned out. They have individual limits but you still need to get there earlier in the day. The only thing on my list today that I could not obtain was bread flour. I did find a sack of all-purpose flour, I learned to make bread this way so no big deal. I have become lazy as I get older though and bread flour works better in the bread machine.


Spending time with the four other members of my household is actually better than I had hoped. Today I moved my office to our back porch. We replaced the screens with screens and windows a couple of years ago. It is now my favorite "room" in the house. It was above sixty degrees (Fahrenheit) for most of today so I opened the windows and listened to the birds and the kids next door this afternoon. We make supper before sunset, and I even have time for walk with one of the kids afterwards.

Although I have to accept the risk of going into town each week, I still feel like I am better off working from home. Next week I think I will invite each of the kids to shadow me while I work. None of them really have a plan for their lives, which may not be bad. I thought I was going to go into chemical or civil engineering when I was their ages. Turns out I liked math, English and computation. Each are important in my professional life.

The other blessing at this time of the year is additional time to spend in the garden. I will risk another trip into town tomorrow to get seed for the cole crop, and order the starters for the garden. I may even use the extra ninety minutes a day to break ground for more corn. The deep freezer ran out in January. I would like to triple the harvest this year.

Working from Home - Day 4

19 March 2020

Celebrating the equinox by working from the basement office again. Temperature did not get up to porch level before supper.

There are seams to remote work.

There are seams to be aware of working in the office. Trying to keep your personal noises to a minimum. Difficult since I frequently have discussions with myself and read passages that I need to remember aloud. Microwave etiquette, and making the next pot of coffee.

Today the remote seams began to show. Some of the team spend their evenings socializing online, via game consoles which keep them up past midnight. They look pretty ragged in the morning. One is looking rough from having a baby at home. A few really prefer to be in the office for work. When the CDC said that this could go on for eighteen months the mood got darker.

I spent almost three years in a totally remote role. It was strange at first, but left to myself I found that I could really get in the flow for an hour or more. Rather than grab my laptop and heading for a sofa to work through something hard in the office, I just turn the Google Hangout off for an hour. I miss the afternoon walk with the team, more than I expected. Twenty minutes of personal chatting and bitching really help me bond with them, and it isn’t the same when we are online.

It is more difficult for me since we are currently winding the project down. One member has already found another gig and rolling off at the end of next week. I would really enjoy spending some time with him this week, grabbing a beer after work and generally screwing around in the office. I could be teaching him how to play with other teams in our workspace, which are much more uptight than our team.

There are seams at home too.

I have two sixteen, soon to be seventeen year old sons. Yes twins. Same mom same day, and that is the end of the connection. Except for online gaming. Even there they are completely different. Minecraft and adventure games for one, historical first-person shooter and Star Wars for the other. There desktops are in the shared office space in the basement. I get to be the heavy when they are off of school (they are) and I am working from home.

They have adapted. The boys are using text to speech and their headphones to get around the requirement for a quiet office. They get antsy around 17:00 when they think I should be out of the office. Sacrifices must be made. Mornings are easy, they do not get out of bed until noon. Afternoons are not bad, they tend to watch YouTube for a few hours. I will make them happier tomorrow when I start working on our back porch. It will be warm enough tomorrow for the space heater to make it comfortable.

Today I Learned

Remote work affects people differently. I love it. If all of my clients were able to support it, I would be in much happier space. The boys will graduate next year and I would really love to spend much more of time on the road with my wife. I will be seeking remote tolerant client at that point. I also feel for those that need a space that supports their interaction with our clients. I can see how this presents additional friction for them.

Time spent outside is very important for me. I am at my wits end this time of year, March is wet in Ohio. I do not mind the rain. I went for a walk after supper tonight. The euroSchirm is freaking awesome for backpacking and great for going out for a walk in the rain. It costs more than the big box golf umbrella, but I have to carry it and trust it when I am on my own. Next month I will be able to spend my evenings and weekends getting the garden ready. I can do it in March if I wear muck boots.


Mental health is important for everyone. Life is different now, and it may not get back to "normal" anytime soon. Remote therapy is fine, my therapist cannot see me in his office until the risk has abated. I already have a relationship with him so phone calls are fine. There are HIPAA compliant video chat solutions that are currently experiencing scaling issues, but I am confident that these issues will be worked out soon.

If you are experiencing anxiety and/or depression during the Covid-19 pandemic you can reach out to professional counselors. Just "dealing" with it, or drinking enough to sleep will likely fail you. Look for a local licensed therapist. Check to see if they have remote session available, and be understanding if they are not providing remote services. This stuff is hard for them too. I recommend finding someone in your area, a good part of this is empathy.

Working from Home - Day 3

18 March 2020

I spent most of today in a Hangout working on Terraform configurations.

Hitting Our Stride

I spent an hour before stand up working out the details of creating a PostgreSQL installation on AWS EKS installation. There are plenty of guides out there for a simple installation with little to no security. It is more difficult if you want a production level deployment with read replicas.

Stand up was seamless, we frequently have at least one remote for this ceremony. We took care of follow-ups immediately after stand up. The team decided to just keep the stand up hang-out going all day. That really brought the office chatter back. The team is all male so we dig at each other during the day. These are not something we want preserved for posterity in Slack. An open channel allows the social aspect to flow.

Mobbing on the Terraform configuration seemed like a waste when I joined. I also thought that a couple of us would have to support the transition so spreading this knowledge around is important. I am fortunate to work with curious and consciences people, so they had done their homework and I ended up learning from them today.

At the end of the afternoon we had a voluntary meetup on Ring Central. The premise was to share what we are looking forward to doing after the quarantine. I shared that I am looking forward to time in mountains with my family. We had to cancel our spring break trip this year. Travel does not seem like a prudent thing to do now. Hoping we are out of this mode by June.

Today I Learned

Yawns on a video conference are contagious. I cannot explain why. Maybe because we have spent so much time together over the past six months that the empathy is just there. I have had other completely remote gigs and I do not remember this happening.

A place to just get together with anyone that chooses to show up is nice. The afternoon Ring Central meeting to share what we were doing buoyed my spirits much more than I thought.

Working from Home - Day 2

17 March 2020

Happy Saint Patrick’s Day. Today I split my work from home dividend between rest and personal development.

Work from Home

Caught up on correspondence this morning. I had a doctor’s appointment this morning. He is not seeing patients at his office during the Covid-19 quarantine so we had to discuss things over a land line instead. While I miss the body language, or maybe the absence of it, I think that strictly verbal communication between people that have know each other for a couple of years is damn close to physical proximity.

Most scrum masters argue that co-located teams excel because all of the physical aspects of communication are present. I have worked in distributed teams before and would argue that teams that use asynchronous communication channels are more productive and resilient. Sickness happens, vacations happen, births happen. If the group knowledge is preserved I can catch up when life’s tribulations permit. Please note: Slack channels are a poor substitute to an organized chat and repository. Think wiki not Twitter.

We did have a mob event in the afternoon. That went pretty well. Google Hangouts works for this task. Maybe we can try other solutions like VS Code Live, that seems to emphasize the coding part. I still like Zoom, especially the ability to point to things on the shared screen.

Working from Home - Day 1

16 March 2020

Tracking the joys of working from home after the office was closed to prevent the spread of the Covid-19 virus.

Work from Home in an In-Person Company

Callibrity is not a typical work from home company. We do encourage this when one is sick or you need to be present at one’s residence for home repairs. While I do not enjoy driving to and from the office my podcasts have made the transit tolerable. Now that the Governor of Ohio has asked all businesses to allow employees to self quarantine the office has been closed and we are free to support our clients from home.

Note : Callibrity has always promoted health and developer productivity. I have worked for other companies that expect you to either be upright in the saddle or using your PTO to compensate. This crisis has no endgame in sight. Flexibility is called for here.

I am happy that I do not have to transit to work and possibly spend my time around someone that is not presenting symptoms. I spend a fair amount of time with my folks each week. Neither needs to be exposed to a novel virus. So far, this has really been a positive development.


A few years ago we decided that the kids should always be in a shared space when they are online. It made a lot of sense when they were in grade school and junior high. The boys are now in high school and much more verbal. They are also at workstations in my office. The bright side is that they sleep until lunch.

I have been cooking over the weekend, and we have quite a bit of zucchini in the deep freeze that needs to be converted into bread and muffins before the next crop come in this summer. We are baking while I am at home all day. On top of that I make dinner each evening. Most days I am active so I plan around 1200 calories for dinner. I am hoping to go back to the office around the same weight.

Topic Pages

05 February 2020

I decided to maintain a few more pages on the bipedalprog website.

Adding Content

I added a "Topic Pages" drop down to the navigation bar so I can add pages that are more durable than blog posts. I will eventually add a search function to the site but my free time is limited now that I have to spend almost two hours commuting in my car each day. These pages capture topics that I am personally invested in and would like to see succeed.

The first page is IndieWeb. I am setting up a Synapse server at home and have gone down the independent/distributed web rabbit hole. If this works we may be able to save the internet. A personal website should be table stakes, but I also think that I can automate the creation of an ActivityPub website so that anyone with an internet connection can host their own site and interact with the rest of the world.

An Open Source API for Managing the Public Right of Way

20 January 2020

I listened to the recent Talking Headways podcast during my run today. There is actually effort to establish an open interface for regional governments to implement that would allow others to evaluate right of way policies in real time. At just over 30 minutes, this would be great for your drive or ride to work. See Talking Headways.

Installing Ubuntu 18.04 on a Dell Inspiron 5593

18 January 2020

I picked up a Dell Inspiron 15 5593 on my way home from work on Friday night. I also picked up a 16 GB memory extension so all of those cores can run without swapping. I have spent the weekend trying to get a Windows 10 system backup disk, then trying to install Ubuntu 18.04. I have come to the conclusion that secure boot is a living hell.

This helped: NVMe Disc Config The final solution was to disable Secure Boot and turn RAID back on to allow Windows to boot again. I am really wondering if it is worthwhile to keep Windows on a laptop anymore. I may make it a data partition in a few weeks.

Finally Left Facebook

13 January 2020

I deleted the Facebook account last night. I really will miss all of the updates from the local businesses that I follow, and the people that I really want to keep up with, but the nastiness that I appears in my feed has actually left me worse off for spending my time reading the posts. I have been on the fence with respect to Twitter lately, I suppose I will hang on to that until I figure out the whole Mastodon thing. ActivityPub seems to address the who is doing what issue nicely, while avoiding the curated experience that turns me off of the social sites.

BTW: If you actually subscribe to my RSS feed, let me know. Email me and I will add you to my reader.

Tweaking the Home Network

11 January 2020

I have been re-evaluating my use of the internet lately. I rely on several big internet suppliers to provide my access. I have followed along with the rise of Google, Facebook, and Amazon Web Services. I have also supported these efforts, now I think we should divest from the internet hegemony.

Suppressing Surveillance

We are certainly the product, when we use free services we also accept the terms of service which allows the provider to use our usage data. That is part of the deal, I do not regret it. I looked at my router’s top ten DNS queries and I did not recognize a single one.

I decided to look for a different DNS provider than the one chosen by my internet provider. It turns out that this does not help you with your internet browsing. The best option is to setup your own DNS but event that did not reduce my DNS queries to sites that I did not know. Looking up the sites, most were advertising tracking sites.

Alternative searches turned up a couple of options, Pi-hole was the only open source option that I could find. The idea is actually simple, an open group of people analyze DNS queries and flag those that are directed towards advertising tracking services. Looks like many malware sites are also excluded. It is not a turnkey solution, you need to know how to update your router and setup a dedicated DNS solution for your home network. I used a Raspberry Pi 3+. If you can follow instructions and are comfortable with Linux, this is really easy.

Suppressing the surveillance of your site using the links in the sites that you are accessing is one thing. The sites also send you links to other sites that will also send you links to "helper" scripts that will make your experience much better. Most browsers just follow these links because that is what the web experience requires. Many of these scripts are not in your best interest. I was trying to expand my knowledge of front-end development, web pages. When I looked at the page source code, I found most of the links included in the page were actually links to sites I did not know.

I also was having trouble with the Chrome browser at the time, I decided to give Firefox a try again. I had some trouble in the past with Google Docs so I went to Chrome for my day to day tasks. I was still having issues with Firefox but many of the sites that I use recommended Firefox, so I installed it on my laptop, which is a Ubuntu based distribution. I also found a plug-in called NoScript, it prevents JavaScript from reaching out to the internet for including sources.

This is the most infuriating extension that I have ever installed. So many sites that you visit are full of links to sites that you have no idea what they provide. So now I have found that most of the sites that I visit are also sharing my visit with other sites. NoScript blocks most of these sites, I have to go up to the toolbar and specifically allow them to send code to my browser.

Firefox and NoScript have become a blessing. Suppressing sites actually makes me a more interested party in the internet experience. Yes, it is a pain in the ass to have to authorize every escape from the browser to the internet, but I also have intimate understanding of each page I visit. When I was younger, when the internet was younger, we all assumed that everyone was a good guy. We all need to be suspicious today.

TEDx Music - How did I miss this?

10 January 2020

I was watching some excellent TEDx videos from a show in Cincinnati, which are really worth your time on their own. See TEDx Cincinnati for those. Good old YouTube also showed me some recommendations on the side, I noticed a TED talk/concert in the list and clicked. Diamonds on the Soles of Her Shoes. That totally hooked me.

The YouTube algorithm seems to account for my varied tastes in music, and when it merged the TED content in I decided to let it go. Next up was a title that I love, Pachelbel’s Canon. Completely beyond what I expected. I guess I found something to binge on now while I’m coding.

Will the Internal Revenue Service Provide Online Tax Filing?

03 January 2020

Update to previous post.

In a story yesterday a corresponent from ProPublica followed up on a previous story regarding the prohibition against the IRS developing their own tax filing software. It seems enough people had trouble using the TurboTax and H&R Block free filing sites that Congress may actually have to allow the IRS to provide a site for the free filing of taxes, much like in the rest of the world.

See my original post for more details. The ProPublica articles are great too, I recommend them for the full story.

Fernald Preserve End of Year Hike 2019

31 December 2019

I missed last year’s end of year hike due to illness. Luckily the Christmas virus caught me over Christmas so I was healthy and ready for the hike this year. It was lead by Angela, the new naturalist on staff at the preserve. I am looking forward to learning more from her. Forgot to take the phone with me, so no pictures.

The Setting

We started at 08:00 this time, a little earlier than previous years. It should have made spotting the crepuscular animals easier. Except for the wind that kept everything that relies on hearing laying low. I saw a few snowflakes on the drive to the preserve but none while we were hiking. It was 37 degrees when I arrived with a wind chill of around 20.

The Hike

We walked out through the northwestern wetlands to look at the beaver habitats. The beavers thrive here. Several lodges are found on the preserve, some with muskrats cohabiting the lodge. I always thought the muskrats moved in after the beavers had moved on, another learning for this year.

We picked up the Hickory trail after checking out the beaver meadow and were surprised by a bald eagle overhead. That was my first at the preserve. I usually see one or two along the Great Miami River. I figured the red tail and Cooper’s hawks had Fernald to themselves.

Entering the woods around 10:30 we could hear each other better. Much warmer with the trees breaking the wind. Walked through the hardwoods and up to the hickory grove on the north line. We saw some red-bellied woodpeckers, kingfishers and a couple gray squirrels. Surprising few deer, but it was noisy for them.

The group returned to the visitor’s center for a warming break and to figure out how to get everyone to the lodge pond at the entrance before returning to climb the on-site disposal hills. My knee was pounding so I oped to head home for a knee wrap. The car showed that it had warmed up to 39, although I cannot say that I could tell the difference.

Hal Abelson Interview

16 November 2019

I found another great podcast, but I have difficulty finding time to listen to it. I really need an hour of mindless yard work so I can focus on the interview.


I went out to rake leaves for the compost pile today and decided to listen to Language Oriented Design and SICP with Hal Abelson which really made the chore go quickly. Hal Abelson is one of the authors of "Structure and Interpretation of Computer Programs" which came out while I was still in college. I was studying mathematics and coding in imperative languages. This book blew up my approach, it also started me down the path of using Scheme to explore patterns in programming.

My go-to exploratory language now is Python, but I remember finding out that SICP was the introduction to computation book at MIT and we formed a book club to work through it. Scheme seemed different from the languages that we were using for our work, but then again we were not thinking about solving the problem, just the problem we were given.

The interview explains why they wrote the book in the way they did, and how it would be written differently today in light of the cooperative programming practices used for problem solving. If you have given any thought to working through the book, give this podcast a try and then decide. You can work yourself through the entire book over the holidays, and I recommend that you code the examples. The text is even online now. SICP so price should not be a factor.

This Week 2019-11-08

08 November 2019

This has been a humbling week for me. I made a few milestones and missed a few due to my continued decline as I age. I am beginning to rearrange my bucket list.

Amazon Web Services vs DotNet

This really feels like an impedance mismatch. Microsoft development for non-Microsoft platforms is challenging, to say the least. This week Microsoft signed on to the Java Community Platform. We are having difficulty getting C# application to build and deploy on Azure so I really do not have much hope for their expansion into open source platforms. The dotNet Core platform is having some problems with non-Windows deployments.

Getting Older

I tried to keep some old veggies going on Wednesday. I ended up with food poisoning. My wife had to come pick me up from the office because I was too dizzy to drive home. On the bright side, I no longer trust myself to overcome physical disabilities but I used to just get sick and get over it. Clearly I am not twenty anymore.

Mindy drove me to work on Thursday and I put in a full day. I felt awful by the time I left and came home to leftovers in the refrigerator. I found one of my favorites, country ribs from the weekend. The fat did not agree with me. I lost my gall bladder twenty-five years ago. Now my liver has a fit when I dump a load of fat on an empty belly. Spent another night in pain.

I slept a little later and found that I could still get through my strength training this morning. A little later than I would have liked at work but I am encouraged that I can still find the discipline to get myself to physical training after a night of hell.


Why the hell would I eat something that was blinky? When I was young food was a measure of wealth. Everything I remember eating was cooked, thoroughly. When I started high school I learned that people ate differently. In university I learned that people in other parts of the world had completely different palettes. I still have problems with throwing food away. Years of backpacking have given me a pretty good resistance to most food-born problems, but nature is always trying to thin the herd.

It is probably time for me to accept that I cannot rely on my youth for protection against drinking from any water source or eating any plant that I can identify. I have accepted that I need sleep and time to study things other than the latest shiny thing. Maybe my personal life need some temperance as well.

This Week 2019-10-25

25 October 2019

A summary of the my week in technology. I really hope it gets better.

DotNet Development

We have a client that has developed an impressive system in and C# along with a large number of SQL Server stored procedures. They also host their public infrastructure on AWS, which is a core interest of mine. I have not worked in the Microsoft stack since 2010 and many things have changed, but most have not. I suspect I should dabble in this more often but the stack is still Microsoft specific. Examples for Mac and Linux are few and far between.

If you are looking for a server side language I would recommended Python or PHP. They work pretty well even if your host OS is Windows. I would still encourage new developers to replace Windows with an open operating system. If you have a Mac I recommend installing VirtualBox and using all of that extra horsepower to work in a virtual machine running your favorite distro. If enterprise development is your goal, the latest JVMs run fine in a virtual machine.

Back to DotNet as a platform. Examples are lacking for how to put together a REST application if you do not need a database (WTF, nobody uses SQL Server anymore). I have found that everyone tends to use a single solution for a given problem. I asked why there are so many de-facto standards, looks like the culture supports the solution that has the fewest problems. Coming from a more vibrant community this "sucks less" philosophy feels counterproductive.

Spring Boot 2.2

Spring Boot 2.2 went GA, given all of the depreciation this should have been 2.9. I suspect I will just generate a new application and port my application code to the new framework style. Migrating looks to be a chore now.


Most of my professional work is in shops with ReactJS front-ends. I started to (re)learn the stack a couple of months ago. AngularJS seems like the better solution for JVM applications but I need to go where the mass of our clients are going. I would still rather use a template system to generate actual web pages so the semantics of the web continue to work but I have three teenagers to feed.

Will Congress Prevent the IRS from Providing Tax Applications

17 October 2019


ProPublica published another article today with details of Intuit’s effort to prevent the IRS from providing a web site for filing your taxes. See Inside TurboTax’s 20-Year Fight to Stop Americans From Filing Their Taxes for Free The bait and switch techniques used in their "free" offering would be fodder for a CFPB investigation if they were still legitimate.

Original Post - 10 April 2019

Today I came across a post on exposing an effort in the United States Congress to prevent the Internal Revenue Service from providing any form of tax preparation software. You can find the full text at Congress Is About to Ban the Government From Offering Free Online Tax Filing. Thank TurboTax. If you would like to see how the rest of world handles tax filings you might want to look at a slightly dated transcript from PBS Newshour.

The effort is instigated by Intuit, maker of TurboTax and H & R Block. They seem to fear that if the IRS provided humane service to its constituents they will somehow loose their profits from providing software and tax filing services. I think they underestimate the desire of most Americans to avoid thinking about finance and also avoiding any semblance of interaction with their government.

Here is what I would prefer to see. The IRS has all of our legally transacted income, and probably most of our expenses available in its data stores. They should provide an API to surface this information. This would benefit the tax preparation companies as much as individual tax filers. They should also provide an API for filing tax forms. We could then create a Code for America project with developers and tax experts to provide this as a community supported application.

Government should be open. If for profit enterprises want to provide a polished application that may provide extended features or audit probability scores for a fee, people can use these services. The rest of us can contribute to making tax filing for everyone a painless experience.

A Small Change

10 October 2019

I made a small change to the site today. I removed Google Analytics from all pages. I did get a small amount of satisfaction knowing that some of my posts in development were being recognized by search engines, but I have problems with routing visitors to my site through a third party. This is really a place for me to publish my work, not another method for gathering data on people’s browsing habits.

This was really the purpose of adding HTTPS to the site. If I allow third parties to observe traffic, then I really do not need the overhead of TLS. You may not care, but I do.

What if Europe sent Explorers

30 September 2019

The past few days I have been working on the problem: "What if Europe sent their Explorers instead of their missionaries?" Imagine if the explorers adopted the native beliefs, we could be attached to the land instead of chasing growth. So maybe we would not have gone to the moon, but what if we had not killed most of the indigenous people. Maybe climate change would not be our fault.

I know a few missionaries, I also love them. I also believe that spreading the iron age point of view is going to fuck up our world. We need to live in the present, we need to be present. I think you can be critical of modern morality and still participate in modern life. I simply want everyone to accept that we are in a heterogeneous world. You do not have to support organizations that you do not agree with, or even that offend you. I do think we have to entertain them, if they are not against your way of life, why be against theirs?

Blogging in Boston - Part 2

24 September 2019

More about the Boston trip.

Monday, Continued

We went to see the remodeled offices at InterSystems last night as part of their Global Summit. The cool part was we were picked up outside the hotel in a duck boat. We had a tour of the Boston area and the Charles River. Mindy even got a turn at driving the vechile.

Our duck boat for the evening.

The dinner was a Revolutionary War theme complete with a living bronzed Minuteman, town crier and fife and drum. The food was great as usual. Inside the office space was open for inspection. Their entertainment room was better than what I am used to a work, but they have more sales than we do.

We returned to the hotel on the duck boat as well. No river this time, but after a couple glasses of wine and some beer, maybe that was for the best.


Mindy did not have sessions this morning so we decided to check out the Boston Public Library downtown. The classic part is beautiful. Mindy worked in Government and Business in Cincinnati when were younger, so we checked that out. Actual printed copies of census and government statistics available to hold in your hands without having to find a staff member. And it smelled great.

We wandered over to the new construction and found an exhibit of pre-Civil War maps showing the expansion west. There were hands on exhibits too. We took a few minutes to work on a magnetic puzzle.

Magnetic map puzzle.

Birthday 2019

23 September 2019

Looking back through my journal for the year I found some useful conclusions for a retrospective. Maintaining a career in software and hiking in the mountains actually require some of the same skills.


I am an eight hour person, I can get by on seven, but I am not at my peak in the morning. This is especially hard when I have to go to an office on a regular basis. I enjoy working in the garden until sundown, but in the summer that puts me in bed after 22:00, which doesn’t cut it by Wednesday.

The best solution I have found is get around 90 minutes back in by day be working from home. The current engagement does not have a work from home option so I have to cut other things out of my day. After work events are gone, an extra walk after supper, week night outings. Sleep is just too important to my mental and physical health.


One of the benefits of an almost daily journal is that I track what I have been eating, exercise, physical, and mental health. I’m sure that these details will be of no benefit to any of my kids after I am gone. The do allow me to reflect at the end of the week on how my choices are affecting my overall health.

My major learning this year was that I need to reduce sugar and alcohol. The sugar was the easy one. A soda or candy bar gives me a real boost, followed by a serious crash. I really do not want to do anything except take a nap after that. Since the feedback is so quick, I decided to just dump refined sugar.

Wine is harder. I have had to change other parts of my diet to adjust my wine to one glass while doing the dishes. I was really putting away too much tea during the day, I needed a way to chill in the evening so I would have two or three glasses on work nights, usually finish a bottle on weekends when I did not have to get up. This was not helping my weight, and I was not getting through my recreational reading. So I have spent the past month decreasing the caffeine and wine intake.


I suppose the heading should be exercise, but to me that pretty much means walking outside. I have an elliptical for days when I know I will be stuck inside but I need to encounter things while walking. The exercise is good for my body and the obstacles are good for my mind. I try to stay present with the walk rather than ruminate on what I have been working on, and let serendipity help me solve my problems.

Walks through the woods or grasslands are really my favorite. If I can find some hills, that is even better. Sound is really important to me and natural sounds seem to leave me feeling much better than a walk down the street. I am fortunate to live close to several large parks and nature preserves, so the limiting factor is again time. See the archives for some of my favorite places.


Software development is not kind to developers that do not stay current with upcoming technologies. I let my guard down for a bit in the late nineties. Had to work twice as hard to catch up, but then I learned how to learn again. What works for me the past couple of years is learning about each promising tool at a superficial level, if I see the use growing, I can ramp up pretty quickly.

Linux Academy is great for learning cloud and Linux technologies quickly. I use it enough to get the yearly subscription. Udemy Is great for front-end courses and quick language introductions. The labs are what I really like, both sites have good labs to make the lessons stick.


The garden has pretty much stopped producing now, except for some tomatoes that I really appreciate as the season winds down. This take much more time than I would like to spend, but weeding has to be done during the spring and summer. I tried landscape fabric this year. Costs more than grass clippings but it saved me an enormous amount of weeding where I placed it. The control areas took about four times more effort. I hope to recover most of it and use it again next year.

Blogging in Boston - Part 1

23 September 2019

On the road in Boston, Massachusetts for a few days while my wife attends a conference for the product that her company uses. I needed a few days away from my normal routine to do some thinking and I love to travel with her so I came as a guest. I get to do the fun stuff in the evenings and I get to see a little of the city and write during the day.

The City

We arrived at Logan Airport on Saturday afternoon. We decided to ride the trains into town. First we had to catch a Silver Line bus to the South Side Train Station, transfer at the Park Street Station, then on the third train to the Prudential station. I was humping a fifty pound rolling duffle on and off the trains and up the station stairs. I am going back to my travel pack for these trips. Mindy is fine with her carry on bag.

I love the public transit and bike lanes. There are even e-bikes available for one way rental. I know that an area needs density for these services to be affordable, and we probably do need to quit building suburbs and start moving people closer together.

The one thing that would clinch the deal to live in Boston or Cambridge would be a ban on private vehicles within the city. The extra noise and pollution really makes sidewalk travel unpleasant.

Things to Do

We walked up to see the "Make Way for Ducklings" statue in the Public Garden. I was surprised to see how many people were out in the park and the number of young people. I know Boston is a college town, but I really had to look for the older generation.

We had some time on Sunday to go to the Mary Baker Eddy Library. They have a room called the Mapparium with a three story stained glass globe of the world circa 1935. I was impressed, it is worth the trip if you are in the area. We wandered back to the hotel and I set out to explore the sky walks and find some lunch. There is an extensive network around town, maybe because it gets cold here.

Last night we had a welcome reception at the Prudential Tower Skywalk Observatory. It is a nice venue for a few hundred people, although I suspect we had more than that. It was pretty tight. I did enjoy seeing all of the city from above, and the sunset over the Charles River was cool.

Spending today working on some of the unpublished posts in the blog. I break it up with Udemy lessons on ReactJS. I want to be able to do some of the lighter weight front-end coding at work. While ReactJS is not my first choice for a web component framework, it is what most of our clients are asking for lately.

PowerShell Development

04 September 2019

I started a new engagement last week. Our client has several EC2 instances that are configured as pets. I have been automating these sorts of environments for around a decade now. This one is a little different, it is a Microsoft Windows based stack. I would normally run (not walk) from an environment such as this, but one of the partners said that Microsoft has made some significant progress on the server side in the last decade.

Met with the client last week. I knew they spent a fair amount of time on-boarding new clients. Mostly due to human bandwidth issues. We walked through the process and determined that most of the steps could be automated using Windows PowerShell scripting. I had studied up the week prior so I would not appear to be a complete idiot, and was already impressed with the level of integration that PowerShell has in the Microsoft space.

All of the steps taken to bring a new client into our partner’s infrastructure can be automated. We can free the system administrators from setting up new business and script it so the support engineers can submit a simple command to configure several web servers with the latest version of the software. Next week we can automate the database configuration tasks so on-boarding can happen in a few minutes as opposed to days.

I am looking forward to providing assistance in segmenting logic into self-contained services that can scale in the AWS infrastructure. This is what I have spent my career working towards, providing solutions that continue to provide value long after my engagement has ended.

AWS Developer Associate

23 August 2019

After a month of study, deploying software to AWS, and reading through Amazon Web Services white papers I decided to give the official test a shot today. I passed it on the first try. The test is much more difficult that the practice tests that I have purchased, so I recommend that you score 90% or better on the practice tests. I also recommend reading the white papers a couple of times, I really needed the details reinforced. My personal development experience was helpful, but knowing the why was helpful.

The bad news is that the AWS papers are some of the least interesting technical writing that I have had the misfortune of reading in my lifetime. Stick with it, you will be a much more efficient developer in the AWS ecosystem.

Shout out to Linux Academy for the training videos and labs. And udemy, your practice tests made me feel totally unprepared, until they did not. Money well spent.

Update 2019-08-23 I even have an official badge now.

When Electrons Become Flowers

23 June 2019

My day job is a mix of programming a search and recommendation engine for a retail grocery chain. We have a home grown engine built by people much smarter than I am, which I now maintain and am actively working to expand into a cloud based offering that also learns from user searches and feedback. I work in a very risk adverse organization, which has many technological challenges. This organization also has a gap in capabilities versus capacity.

I end most days with an unrequited desire to make a positive contribution to both making my client successful and the end user happy with their searches. I really want the user to be successful, and I have to rely on many other developers to also provide their best effort to make the shopper successful in their search for items that they want to buy. I accept that technology will continue to change and challenge me to keep my mind sharp enough to keep up. I also accept that everyone that I depend upon is doing their best to make our customer’s experience as good as possible.

And yet, I know that what I do with my software will never satisfy my intended audience. Some nights I work on small projects that I hope will satisfy my intended audience, this website, my website generator. Here is the rub. Even though I love to manipulate the bits on the internet, I also need concrete things that I can identify with and feel that I have given myself to and made real in this world. I need to grow even when the organization that I toil for does not.

So you have to have a life beyond work. I found that I have perfect life beyond work with my family and my land. Therapy will identify the issues you have with growing up to be a leader in your family. You will also need to know what to do with yourself. I deal with this be doing my best to provide food and shelter to my family. The next post will provide more on this issue.

I have learned through therapy that my work life is not my whole life. What I did not learn was what the rest of my life should be like. I did learn to enjoy the messiness of what I am trying to do as a husband should be a measure of what I am trying to build in my life. My wife and children should know that I am their strongest supporter. Now what can I do to make their lives better?

My answer is to support my family members in any en devour. If it is important to them it is important to me. I also need time for me. I split the difference by raising a 45 by 45 foot garden to keep me grounded. I get to work from home most days so I do not have to spend over an hour on the road to work. However, this plot is more than I can manage in two nights of work after I return. When the kids are off in Europe or scout camp I am the sole gardener.

Do not think I am complaining. The green bean bushes are blossoming, so are the zucchini, squash and cucumbers. The tomato plants (purchased this year) are also showing their sex. The days of pulling weeds from leaving the patch fallow and tilling under the weeds are starting to yield fruit. This time of year makes me feel rooted to the land. In a few weeks we will be enjoying tomatoes and corn of my effort. I wish more of my kids participated in the cultivation.

I feel blessed that my position allows me to maintain fertile land which provides my family with produce. I can also enjoy the crawdads from the creek and the fish that it provides. The technology I live with is really a way to live closer to the land. I am contemplating using my savings to obtain more land that I can educate my children on the benefits of providing for yourself. Seeing your work on the internet is fine, but seeing the flowers on your produce brings so much promise. I know which one brings me the most joy when I can share the harvest with my neighbors and co-workers.

A Place of Your Own

11 February 2019

There appears to be resistance growing to social media sites such as Facebook, Twitter, and others that I really do not know enough about to consider. While I do enjoy seeing what everyone is up to each day, I also know that I have to be extremely careful how much attention I give these sites on a daily basis. I have come to miss the days when I would simply open my Google Reader and catch up on the feeds that I had happened upon in the course of stumbling around the internet.

I actually spend more time now in my current favorite reader Feedly. Yes I even have a paid membership, not for the extra capacity but because I write software myself and really value tools that just work. I maintain this site with a feed using a static site generator, sourcing my content in AsciiDoc and then publishing HTML. I’d like to think that almost anyone can do this. Then I read my notes and posts on configuring web servers and network configuration. I think the social sites still have an advantage there.

Looks like you can spin up a WordPress site with minimal effort. If you are willing to take on a little more work, you can register a domain, follow the instructions to spin up a droplet at Digital Ocean. The instructions are not hard, but I find they do assume more than a layman’s understanding of a website. All the same, you are still tied into the WordPress platform. I think we can probably do better with a more open platform, I just do not know what that looks like right now.

I think RSS and sitemaps solve the problem of discovery within a site. Lately I have been watching Interplanerary File System (IPFS) and Solid. IPFS is still in the alpha stage, I do not feel like there is enough there to begin to build a read/write platform there just yet. Solid is farther along, and addressing hard issues such as authentication and authorization. I’m also keeping an eye on Keybase. Their teams implementation is pretty nice, and they seem to understand that I don’t want to share everything with everyone on the internet.

I do not know what the post social site looks like yet, but I know I really want to control my own data. It seems like just publishing web standard HTML with some metadata to help find things is a good start.

Programmer and Human

04 February 2019

I’ve become an avid bus rider in the past six months. Partly because I can put my earphones in and listen to a podcast while I catch up on work during the drive. The WiFi enabled long-haul buses that Cincinnati Metro are the next best thing to walking to work.

One podcast in particular has come to my attention: Team Human. All of our technology comes at a cost, I was cognizant of that before. I didn’t really think about hidden costs of our infrastructure. The people that build and recycle our devices are, as likely as not, harmed by their employment. The amount of energy we expend to power our devices and provide the always present cloud is really astonishing.

Most of my day is spent working on systems that are intended to make you desire consumer package goods, and then sell them to you. My success is measured by how many more goods that each visitor buys. I see all of the parts and processes that are involved in getting your dish soap and crackers from manufacturer to your door. I also see all of the GPU cycles needed to predict your needs and fine tune your search results.

Given that my main reason to work is to provide my with the means to travel, hike and camp with my family. I am not sure that means are going to justify the end.

Brasstown Bald

22 June 2018

Our extended family vacation this summer was in northeastern Georgia. Our First stop was the tallest point in the state, Brasstown Bald. We happened to arrive on Appalachian Trail day, which provided the boys with a scavenger hunt to solve.

We drove up the mountain to the visitor’s parking lot. People sixteen and over are $5 each, the 15 year olds were free. The price includes a ride up to the top in an enclosed van. I had to come back down and walk up so the boys could get do a simulated Appalachian Trail to the top. The 0.6 mile trail was split up into proportional sections by state. There were stops along the way where the answers to the scavenger hunt questions could be found.

High Point Marker

USGS Marker

The USGS marker is behind a gate to the watch tower which is not open to the public. If you ask at the desk, one of the staff will gladly open the gate for you so you can get a picture.

The visitor’s center is a great place to get out of the heat and learn about the local history. The staff is friendly and willing to answer questions. If you go up on the observation deck you can walk 360 degrees around building, taking in the mountains.

Hiking with Troop 408, Dan Beard Riverwalk

19 May 2018

May turned out to be a busy month for my sons' scout troop, the older boys are busy with prom, graduations and such. The Memorial Day weekend eliminates one more weekend for camping so they decided on a day hike to get the new scouts past their five mile hike requirement.

Just such a hike exists around the Cincinnati and Northern Kentucky riverfront, it is called the Dan Beard Trail. We met at Sawyer Point and walked across the Purple People bridge into Newport, Kentucky. Along the flood wall to the bridge crossing the Licking River into Covington, Kentucky. We found Dan Beard’s home and then walked down the Covington river walk to the Roebling Suspension Bridge. Back in Ohio we walked along the Cincinnati river walk back to our cars.

This is pretty flat hike. Even the young scouts can do this in under a couple of hours. Leave the hiking boots at home, walking shoes or sneakers are all you need. You can even turn it into outing if you want to stop for lunch at Newport on the Levee or at one of the restaurants on the Cincinnati side.

Spring Break 2018 - Knoxville, Tennessee

06 April 2018

The family has been through Knoxville numerous times on the way to Florida, the Great Smokey Mountains, and Dollywood with the kids were younger. When we needed a place to stop on the way home Mindy suggested we get a room in the city. I thought it might be fun for the kids to stay in a city for a change so we booked a room at the Hampton Inn.

This a very walkable city. I’m looking forward to making this into a couples trip in the near future.

Gay Street

We didn’t get to the hotel until after 19:00, so there wasn’t much daylight. We decided to walk a few blocks up to Gay Street. This looks like fun, plenty of entertainment venues, food and bars. We decided to make this a destination for the next adult vacation. We walked back to the hotel across pretty deserted streets. The city feels safe enough, and had some interesting sculpture on the sidewalks.

World’s Fair Park

After breakfast we wanted to check out the Sunsphere. We found the elevator to the observation deck and looked out around the valley. It’s free and worth the trip if you in the area. There’s plenty of parking around the area so it may be worth a detour even if you are just passing through. You can get out and stretch for a bit.

View of Sunsphere from the park.


We had to take pictures of the park itself so we walked around for a bit in the rest of the park. The kids found the park marker and sort of posed for a picture. They were really more interested in finding some place to get a snack so we walked be farther into town.

Kids in the same place on the same day.

World’s Fair Park

Knoxville Museum of Art

We decided to check out the Knoxville Museum of Art since we were walking by and I needed to submit my time sheet for work. I figured the kids would make a run through the first exhibit while I beat my head against the wall that is our payroll system. By the time I finished my task they had found a self guided tour of the museum and wanted to check it out.

The glass sculptures are mind blowing. I have watched several people make ordinary glass vessels and been awed, these are beyond functional glass blowing. All of the objects presented were deftly created. I am now on a glass kick, trying to learn how someone can create things like these from a super-cooled fluid.

The rest of the collection is also enjoyable. I picked up a few postcards and magnets for my office in the gift shop, on the off chance that the pieces won’t be there the next time I’m in town.

Spring Break 2018 - Backbone Rock

05 April 2018

We were looking for something to break up the trip to Knoxville on the way home and chose Backbone Rock when we saw it’s claim to fame as the world’s shortest tunnel. We had lunch in the picnic area and then went looking for the falls that we could hear but not see.

We decided to climb the stairs to cross the road on the rock. Boy, there are a lot of stairs. I ended up doing that twice since each kid had their own agenda. The bridge build on top of rock makes navigating the dodgy parts easy. I would still keep an eye on small children. The ones you like anyway.

I hiked up the hillside about half a mile on a blue blazed trail. Didn’t see anyone else. Didn’t find much other than a very surprised turkey on the trail. We both had a bit of a scare there.

The little bridge that makes it easy.

Backbone Rock Bridge

Spring Break 2018 - Blowing Rock

05 April 2018

The Blowing Rock attraction has been on the radar for a while now. We were going to try for it last year on Spring Break but spent a little too much time at a waterfall. It was around forty degrees when we arrived so there wasn’t a crowd. We paid our admission and pretty much had the run of the place.

This is a good place for families with small children. There are rails everywhere and not much walking. The observation tower is a good place to take in all of the area. You can see Grandfather and Grandmother mountains from here. We probably spent as much time in the gift shop as on the ledges.

Mindy on the Blowing Rock

On top of Blowing Rock

Spring Break 2018 - Elk River Falls

04 April 2018

We were out driving around North Carolina looking for another waterfall when Mindy found another one with a short trail that looked good. We had to drive around the mountain to the other side of the watershed to get there, but made it by 17:30, we figured we would still have plenty of daylight.

If you like waterfalls this one is great. It was a little to chilly to wade at the base, so we only took pictures and skipped leaving footprints. Elk River Falls is a fine spot to have a picnic on the rocks. All we had were some nuts and raisins so it was time to go find supper.

Elk River Falls

Family at Elk River Falls

Spring Break 2018 - Watuga River Headwaters

04 April 2018

We stayed in Linville, North Carolina for the majority of Spring Break. I was waiting for the kids to get their act together after breakfast so Mindy and I decided to walk down the road to the source of the Watuga River. I’m not sure if I’ve ever been to the source of a river before so I didn’t know what to expect. We walked down the road to where it was marked our the map in the cabin, found a small area that could fit a car and I proceeded to climb down the hill into the river.

The hill is mostly matted grass and fallen trees, about thirty yards down to the river. I was happy that it was a bit chilly so the chances of putting my leg into a nest of active copperheads was reduced. A short walk up the banks of the river and you can see the spring that is the source of the river.

Spring as the source of the Watuga River

Watuga River Source

Spring Break 2018 - Grandfather Mountain

03 April 2018

Day two of Spring Break 2018 was spent on Grandfather Mountain. We chose to go directly to the attraction area. Walking up the mountain is free, but with the family it is easier to pay the fee to drive up the mountain. When we arrived there was already a line to get in the gate. One of the parking guides suggested that we go on-line and order our tickets so we could use the priority entrance, which we did. That saved us about a half hour, and taught us to do a little research before heading out.

We drove right up to the Mile High Bridge. It’s not really a mile down, only a bit more than 80, but you are on top of the mountain. It’s a suspension bridge but stabilized with cables connected to the ground below to prevent the normal sway you would find on a light weight bridge. After crossing you can climb around on the rocks and enjoy the views of the valley below.

Mile High Bridge

Mile High Bridge

Lookout with my favorite daughter.

Mile High Overlook with Meredith

We made a visit to gift shop for decals for the family Conestoga and one for my laptop along with t-shirts for the kids. I still needed some steps for the day so Nate and I decided to hike out to Grandfather Gap. We filled out a trail permit and started out around 14:00. The trail is well groomed, they even toss in a cable on the steep parts.

Grandfather Gap - Nate

Nate at Grandfather Gap

Grandfather Gap - Dennis

Dennis at Grandfather Gap

We ran into a family at the Gap that was heading on up to the summit. The mom said that it was only another quarter mile or so with ladders and cables which sounded like fun. The sky was getting pretty gray, and I don’t read weather very well in the mountains so we decided to head back to the parking lot. We beat the rain, but the rest of the family was getting impatient for our return. I think we made the right decision.

We started down the mountain and stopped at the nature center. It’s a nice place that would be great for younger kids. Mine have seen black bears and elk without fences and walls so we didn’t spend much time there. A short walk down the hill takes you to the fudge shop. Now they were interested. Another short walk down the hill takes you to Split Rock. It is a comfortable climb for the family.

Grandfather Mountain - Mindy, Meredith and Nate on Split Rock

Mom and kids on Split Rock

Spring Break 2018 - Chained Rock

02 April 2018

Our first stop on spring break this year (not counting Krystal’s) was on Pine Mountain in Pineville, Kentucky. We had been driving in rain all morning and it had started to clear so we decided to give the mountain a try. It was a decent drive up in the fog, when we reached the summit and walked out on the overlook we were rewarded with a fine view of the fog from above.

It was still a nice day, around forty degrees so we walked the trail to the chained rock to see if we could get a good look. It’s only a half mile trail, down the mountain. You will find a few benches along the way, if you aren’t in good shape note their position. They will give you something to look forward to during the climb back up to the parking lot.

The trail is is pretty good condition, with stairs on the steeper parts. The path out to the chained rock is narrow but stable. See the story at Roadside America. You may want your trekking poles for the climb back to the parking lot, especially if you brought a pack with you.

Chained Rock

Chained Rock

Chained Rock Plaque

Plaque at Site

Dennis at Rock


Fernald Preserve Walk off the Stuffing Hike 2017

24 November 2017

I have put on a few extra pounds this year, between client lunches and not having a standing desk anymore, so an opportunity to go walking with my friends at Fernald Nature Preserve. My son Scott could not explain why he should not go so he came with me.

We started out to the northwest to walk out on the train trestle that was built by the original land owner to provide building supplies and then used to build the Fernald uranium collection facility. It may someday provide a bike path crossing of Paddy’s Run.

We continued out on the Hickory trail. At the wetland observation tower we struck out across the wetlands on the mowed trails that are normally out of bounds for hikers. We climbed the cells were the remains of the collection buildings are interred.

Dennis on top of the cells


Scott on top of the cells.


We always have a group picture on top of the cells. I try to get one of whoever accompanies me too. Down the cell and around the south side of the preserve to the visitor center for around seven miles. I’m looking forward to the New Year’s Eve hike.

Shawnee Lookout Miami Fort

22 November 2017

The kids had the day off of school before Thanksgiving. They wanted to go to a movie so I dropped them off at the theater and ran errands. After I picked them up they wanted to do something other than go home and clean for the following day. Shawnee Lookout was close so we went there.

We hiked out to the lookout, two of the boys with me were indoor enthusiasts so the initial climb up the hill to the area didn’t thrill them. Once we hit the relatively even trail in the village they had a better time. We walked out to the lookout and found that a tree had been felled. Nate decided to count the rings.

Counting Tree Rings

Counting Tree Rings

Miami University Nature Preserve Update

12 March 2017

I bought my youngest and smallest a pack from Campmor. Nate is a small kid for his age and I’ve tried to find a pack to fit his frame for the past year. The Outdoor Products Dragonfly Frame Pack 8.0 finally fit the bill. We woke up to another chilly Sunday so we decided it would be a good day to put packs on and work on technique.

I like to just put a couple of two liter bottles of water in a pack to get a feel for how to adjust it. That’s enough to give me an idea of where to put the loads and if the kid starts to bonk it’s easy to pour the water out. I remember thinking that the yellow trail would make a good training hike for the scout troop last month and wanted to give a try with my favorite hiking partner.

Nate crossing the suspension bridge.

New backpack

This is a good trail for shaking down young backpackers. Just enough hills and muck so they get an idea for the technique. Stop every mile or so and check the pack for fit, and they will get the hang of it pretty quickly. The Dragonfly is definitely a win for a smaller kid. Plenty of adjustment points and hip belt isn’t so huge to be worthless.

Last Day for Shawnee Lookout Golf Cart Trail

11 March 2017

The website said the trail was open through the 10th but it was below freezing when I woke up this morning so Nate and I put our walking shoes on and headed over to Shawnee Lookout. The sign was still up so we hit the trail.

Nate, done for the season.

Done for the season.

We walked it last weekend too. Now that he has some experience with the trail, Nate has named each hill, all of the names contain a F-bomb. We pulled it off in 91 minutes this time. I could feel the burn in the calves when we were done. Since it was around lunch time we headed over to Nick’s American Cafe in Cleves, Ohio. They have a fine selection of burgers for post hike celebrations.

Time for lunch.

Burgers for lunch.

Miami University Nature Preserves

26 February 2017

Another sunny and 45 degree day in February. I opened up 60 Hikes within 60 Miles: Cincinnati. I found a trail in the Miami University Nature Preserve that looked worthy of a trip. Oxford, Ohio is only about twenty miles away so I was surprised that I have not heard of this before. The directions in the book were good, I found the trail head without trouble.

Yellow Trail

We had some rain of Friday, thunderstorms actually, so the trail was damp. I decided to hike the Yellow Trail from the head on Ohio 73. If you are in the dry season you can probably get by with walking shoes. Today I was glad I wore my hiking boots. I also brought my staff. Most of the trail is flat, but once you get north, you will find hills. Since I started hiking alone, I find a staff is one of the better tools in my kit.

There are some mature Sycamore along the trail. A few have begun to hollow out as you will notice hiking in the trail from the parking lot. I chose to head east on the Bachelor Preserve East Loop when I arrived at the fork. You have to skip across several cement piers to cross the creek. Then a gentle climb up to Bachelor Pond. No swimming signs all around. Probably best not to try.

At the Northeast side of the pond is trail to the Reinhart Preserve Loop. It was muddy but I decided to follow it up to Bonham Road. A brief hike along the road and you reach the trailhead to Bachelor Preserve North Loop. This connects to the Kramer Preserve Loop. I am looking forward to checking this out next month when the wildflowers start to bloom.

I followed the yellow blazes down through Bachelor Preserve Pine Loop to the original fork in the road. I really wanted to see the suspension bridge so I hiked back up the center trail for about a half mile. Crossed the bridge and back again. Retraced my steps back to the parking lot. Ended up with about a seven mile day.


One of the old Sycamore trees on the way in to Bachelor Preserves.

Starting to hollow out.

Hollow core.

Needs something for scale.

A big Sycamore.

Bachelor Preserve East Loop

Cedar grove in Bachelor Preserve

Hiking through the cedars.

Bachelor Pond

A view of the pond.

Kramer Woods

Kramer Preserve

Kramer Woods Trail

Wilderness Engineers at work.

Bridge with Backup

Janky Bridge

Swinging Bridge

Suspension Bridge

Shawnee Lookout Golf Cart Trail

11 February 2017

There is a temporary trail at Shawnee Lookout until the beginning of March. You can walk the eighteen holes of the golf course using the cart trail.

Golf Cart Trailhead

Golf Cart Trail

You can walk, run or bike the golf cart trail without the danger of flying balls this winter while the course is closed. This is a strenuous trail, Nate and I were impressed with number of hills that can be packed into 3.75 miles of paved trail.

I recommend taking a water bottle for this. All of the fountains are turned off for the season. Park at the golf course parking lot and choose which nine you want to do first. We did them in order, I may do the back nine first next time. I can’t prove it, but I swear it is steeper.

The pedometer said I had 9829 steps in 87 minutes. Actual clock time was closer to 100 minutes. Nate wanted to check out each bench along the way. I decided we burned enough calories for a stop at Dairy Queen after this one.

Shawnee Lookout Hiking Trails

05 February 2017

Another Hamilton County Great Park is in southwest Hamilton County. Shawnee Lookout has three (four in the Winter) trails for hiking. Today I started with the Blue Jacket trail.

Blue Jacket Trail

Blue Jacket Trailhead

Blue Jacket Trailhead

This has some hills so you burn a few calories in just 1.4 miles. There is a gradual decent from the trailhead to the loop portion. I like to alternate directions on this loop too, so the views are revealed in different ways. Today I chose clockwise at the loop.

View of Great Miami River

Bend of the Great Miami River

The payoff view on this trail is of the Great Miami River. There is a large bow at this point. It’s about midway into to loop and a bench is provided so you can enjoy it for awhile. The walk back to the parking area is more up from here on. As you cross the right of way for the electric towers you may see a variety of wildlife. In the summer you can usually find some blackberries growing here too.

Little Turtle Trail

Little Turtle Trailhead

Little Turtle Trailhead

Another lollipop trail, around two miles in length. This too has some hills, but not as many as Blue Jacket. You can easily walk this with your family in about an hour, including stops at the burial mounds and overlooks. It is also a fine date hike. The trail is wide enough and well groomed for walking together.

View of the Ohio River

Ohio River Overlook

There are two overlooks of the Ohio River and the Kentucky shoreline on this trail. These are where the trees have fallen and revealed a view. The park just placed benches and rails at these spots so you can enjoy the sights. I used to take some snacks for resting at these when the kids were small. Now I just sit and watch the barges go up and down the Ohio River.

Reusing JavaScript in Java Services

17 January 2017

I have found that in several of my projects lately that I need to duplicate the same logic in the client that already exists in the server side validation methods. My server side code is usually written in Java while the clients are web pages coded in JavaScript. Given that these exchanges happen using JSON it makes sense that the code should also be written in Java Script.

JavaScript in Java

Prior to Java 8 the JavaScript interpreter was Rhino from Mozilla. Since then a "native" implementation has been added to the JVM called Nashorn. As of Java 8 this is a ECMAScript 5.1 compatible JavaScript engine with hooks into the Java runtime environment. Future releases will support ES6.

To start using Javascript in your application you will need to create a Nashorn engine to process the scripts. I save this for later use.

Get a Nashorn Engine
private ScriptEngine engine;

public CallJs() {
    ScriptEngineManager manager = new ScriptEngineManager();
    engine = manager.getEngineByName("nashorn");


Evaluating a script is pretty straight forward. We take the engine and pass the script to the eval method. The result is returned as a Java object. The interpretation of the object is up to you.

Execute a script.
public Object execute(String js) {
    Object result = null;
    try {
        result = engine.eval(js);
    } catch (ScriptException e) {
    return result;

For example we can evaluate a JSON object.

Test case.
public void shouldReturnObject() {
    Object result = subject.execute("JSON.parse('{\"key\": \"value\"}')");
    assertTrue(result instanceof java.util.Map);
    assertEquals("value", ((java.util.Map<String, String>)result).get("key"));

So now this is where it get interesting. We can also load a script from our resource path and use it within our Java services.

External script.
 * Determine if the address conforms to our validation rules.
function isValidShippingAddress(address) {
    // Only US addresses are supported now.
    if ( && === "USA") {
        // We cannot shipt to a PO Box.
        if (address.poBox) return false;
        // We need a locality.
        if (!address.zipCode || !address.state || ! return false;
        // And a street address.
        if (!address.street1) return false;
        return true;
    } else {
        return false;

 * Multiple argument function.
function makeAddress(country, zip, state, city, address1, address2) {
    var me = {}; = country; = zip;
    me.state = state; = city;
    me.address1 = address1;
    me.address2 = address2;
    return me;

Create a method to load scripts from local resources and then invoke the functions in the Javascript files.

Load Javascript and call functions.
public void compile(Reader reader) {
    try {
    } catch (ScriptException e) {

public Object call(String methodName, Object... args) {
    Object result = null;
    try {
        Invocable invoce = (Invocable) engine;
        result = invoce.invokeFunction(methodName, args);
    } catch (NoSuchMethodException | ScriptException e) {
    return result;

So we now have the ability to load and call the functions.

Call Javascript functions.
public void shouldBeValid() {
    UsAddress address = new UsAddress();
    address.setStreet1("100 Harrison Avenue");
    Boolean valid = (Boolean)"isValidShippingAddress", address);

public void shouldAllowMultipleArgs() {
    Object obj ="makeAddress", "USA", "45030", "Ohio",
            "100 Harrision Avenue", "");
    ScriptObjectMirror mirror = (ScriptObjectMirror) obj;


I found almost everything I needed to know about Nashorn in the guide Riding the Nashorn: Programming JavaScript on the JVM. A quick introduction and then a thorough treatment of the Nashorn implementation.

A demonstration project called jsbridge is available in my GitHub.

Converting Microsoft Word (DocX) to Asciidoc

09 January 2017

I’m starting a side project to get a better understanding of full text searching using Elasticsearch and SOLR and I needed some input. I have been keeping a daily journal for the past six years in Google Docs so I thought I would start with that. The reason I kept it there was for Google’s excellent search. But I also have this uneasiness about leaving it all in Google’s care. There is the remote possibility that they will sunset Google Docs.

When I exported my Journal folder I found that the default format was Microsoft DocX. I really don’t need that level of abstraction. I have since switched to the Asciidoc format for my journal so I went looking for a library that I could use to convert over a thousand files. I found pandoc. It’s a swiss army knife of documentation format conversions. A quick read of the Getting Started guide and off to the shell.

$ find ./ -iname "*.docx" -type f -exec sh -c 'pandoc "${0}" -t asciidoc -o "./output/${0%.docx}.adoc"' {} \;

Thank you pandoc. Now on to Elasticsearch and SOLR.

Mitchell Memorial Forest Hiking Trail

01 January 2017

Entrance to Mitchell


New Year’s Day was sunny with an expected high of 46 degrees. I decided to head for a trail that I had not hiked recently at Mitchell Memorial Forest. The Wood Duck trail is advertised as a 1.0 mile loop. I park at the top of the hill by the Stone Shelter to pick up an extra quarter mile down to the trail head. This is where the trail started when I started coming here around 1990.

Stone Shelter - A nice place to eat out of the rain.

Stone Shelter

Walk down the lane through the trees and cross over to the current trail head. You head down hill on a wide gravel trail. It levels off at a old watering trough that was spring fed in the day. There is a bench close by on the edge of the creek where you can spend a quiet morning in the spring watching the insects and amphibians in the creek.

I usually hike the loop both ways. I see things differently from different directions and the loop is only about a half mile so it doesn’t take much longer. The lower portion takes you past an pond that has silted up over the years. A the end of pond is a concrete dam that doesn’t appear to be going anywhere. The trail turns up the hill for the return to the parking lot.

I turn around when I get back and enjoy the same trip back around the loop. The walk back down to the dam allows me to get a good view of the pond. In the summer time I usually stop at the dam and wait for one of the turtles to appear. The trip back up to the parking lot isn’t a bad climb. I walk around the fishing lake too, just to get another third of a mile before heading back up to the shelter.

This park is a great place for a family picnic. Bring a bag of charcoal and something to cook. There are plenty of grills available. The Wood Duck trail is short enough for the kids and there is the creek to play in during the warm months.

Fernald Nature Preserve End of Year Hike

31 December 2016

So this was my fourth consecutive year at the end of year hike at the Fernald Nature Preserve which also happens to be my favorite place to hike in Hamilton county. This year I brought my youngest son Nate.

We walked out to see the new beaver lodge and the original train tressle for the Fernald properties. We picked up the remainder of the Hickory trail and then diverted to the hazardous waste containment area. We hike past several cells and then summited.

Nate and I on cell 7

On top of the burial mound.

We had lunch back at the visitor’s center while a winter shower passed by and then we headed out for the rest of the hike. Nate enjoys his peanut butter sandwhich more when he’s been out in a brisk wind for a couple of hours.

Nate Having lunch

Lunch with Nate.

We walked out to the Sycamore trail and bounced out to the service road at the loop. We found a trail that worked its way back to the access road and followed the road back to the visitor’s center. My pedometer showed a total of 7.6 miles for the day.

Add a Local Website for Testing

23 December 2016

I like to keep a local website for testing my blog changes before I push them to my public server. I have a local nginx running on my development machine which is configured to serve content through To get this working quickly you only need to add the following file at /etc/nginx/sites-available.
# Virtual Host configuration for
server {
        listen 80;
        listen [::]:80;


        root /var/www/;
        index index.html;

        location / {
                try_files $uri $uri/ =404;

You will need to create the new directory at /var/www/ and add an index.html for testing. Then create a symbolic link in the sites-enabled directory.

Create Directory and Enable Site
$ sudo  mkdir -p /var/www/
$ sudo ln -s /etc/nginx/sites-enabled/ /etc/nginx/sites-available

I added an alias for to my /etc/host file.

/etc/hosts       localhost

Now restart the nginx service to enable these changes. Your default index.html should be rendered when the server restarts.

Restart server
$ sudo service nginx restart

Hosting the site on Digital Ocean

20 December 2016

I decided to host this site in the cloud. I looked at various options such as AWS, Google Compute Cloud, Google App Engine and a few virtual host providers. I write in AsciiDoc and generate the site using JBake. The entire site is statically generated so my compute needs are not great. Yes, I could host it on github, but I really do need something to keep my web skills sharpened, so I decided to go with a virtual host.

After looking at several providers I settled on Digital Ocean. Their $5 a month plan is more than enough for a website or two. I even have enough capacity to run some small services as well. The sign up process was easy and they had plenty of getting started material. There is even a tutorial on adding Let’s Encrypt support. I had this site up in an evening.

Yes there are other virtual host and cloud providers with great documentation and communities, everyone should look at their own requirements and decide which provider works best for their needs. If you decide Digital Ocean is the way to go use Digital Ocean Sign Up to save $10. That gets you two months free if you are just creating a static site.

Secure Your Domain with Lets Encrypt

20 December 2016

Why bother using the HTTPS protocol for your website? It does require extra setup in your web server, and you need to obtain a signed certificate which until the past year has been a hassle. I’m not especially concerned that anyone will try to read my content, I’m thrilled when they do. I am interested in ensuring that What you see is actually the content I intended, without any changes being made on its way to you.

Eventually as I add services and APIs to the site, I want to protect these with SSL encryption. When I looked at the tutorial for Let’s Encrypt on Nginx I decided that it really was easy. The Let’s Encrypt scripts provide automatic renewal every 90 days so you don’t have the expired certificate issues that you would normally run into with other providers. And the best part is that the signed certificate is free.

That being said, I went to the Let’s Encrypt and hit the donate button. This is one community that I really am proud to support.

Spring Break at Carter Caves

28 March 2016

I spent spring break (2016-03-28 through 2016-03-30) at Carter Caves State Resort Park in Olive Hill, Kentucky. We arrived around 16:00 and checked into our cabin in the park. Found a trail map in the Welcome Center. We noticed that there was a natural bridge within a quarter mile of the cabin so Mindy and I went for walk. Fern Bridge is an easy walk from the cottage circle. I would recommend using the trail at the end of the circle, the trailhead between 243 and 244 was wet.

Our cottage was nice, in good repair and quiet. There is a playground in the middle of the circle to keep the kids occupied, which comes in handy since the cabins do not have WiFi. The 4G is adequate and there is enough signal to browse, probably not enough to work. You can always head to the lodge if you need more bandwidth.

The lodge looked to be well kept too. We didn’t try the restaurant during our stay, I prefer to cook whenever I have the time. The park is in a dry county and I didn’t see wine or beer on the menu so I likely would have been disappointed with dinner anyway.

We spent our full day checking out the natural bridge trails and finished the day the X Cave tour. All of the trails were well groomed, and as safe as you make a trail along a cliff. They are fine for my twelve and over crew. We were back at the cabin around 1700 so I could grill some steaks on the charcoal grill outside of the cabin.

The last day we spent checking out some more the trails around the park. We mostly hiked around the lake. We left the main park and drove out to the Cascade Cave area to hike the lollipop trail there. That provided the kids with a little more challenge. We wrapped up our day around 1600 and started back home. Happy that we were only about 3 1/2 hours from home.

Adding the SSH key to GitHub

02 February 2016

git is much more convenient if you create a ssh key for use when accessing your repository.

First, do you have a ~/.ssh directory? No? Then:

$ mkdir ~/.ssh
$ chmod 700 ~/.ssh

Do you have xclip installed? No, then:

$ sudo apt-get install xclip

Okay, lets generate the public and private keys for github.

$ ssh-keygen -t rsa -b 4096 -C

When prompted for a file name I used: /home/dennis/.ssh/id_rsa_github

Give it a passphrase for additional security.

Now start the ssh-agent to manage your keys.

$ eval "$(ssh-agent -s)"

Add your new key to the agent.

$ ssh-add ~/.ssh/id_rsa_github

Then copy your public key to the clipboard.

$ xclip -sel clip < ~/.ssh/

Now log into github and go to your settings, add an SSH Key. Give it name relative to the current computer and paste your public key into the space provided.

If you have previously cloned a project, you will have to update your remote. Otherwise, get you ssh URL from GitHub and clone your project. You will have to enter your passphrase the first time.

Older posts are available in the archive.