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.

Evening

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.

Retrospective

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.

Blessings

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.

Postscript

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.

Challenges

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 Marketplace.org 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.

CoRecursive

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.

Postscript

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 VB.net 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.

ReactJS

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

Update

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 ProPublica.org 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.

Tuesday

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.

Rest

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.

Diet

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.

Walks

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.

Learning

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.

Gardening

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.

Sunsphere

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

Selfie

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

Dennis

Scott on top of the cells.

Scott

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.

Photos

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) {
        e.printStackTrace();
    }
    return result;
}

For example we can evaluate a JSON object.

Test case.
@Test
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 (address.country && address.country === "USA") {
        // We cannot shipt to a PO Box.
        if (address.poBox) return false;
        // We need a locality.
        if (!address.zipCode || !address.state || !address.city) 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 = {};
    me.country = country;
    me.zip = zip;
    me.state = state;
    me.city = 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 {
        engine.eval(reader);
    } catch (ScriptException e) {
        e.printStackTrace();
    }
}

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

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

Call Javascript functions.
@Test
public void shouldBeValid() {
    subject.compile(read("address.js"));
    UsAddress address = new UsAddress();
    address.setZipCode("45030");
    address.setCity("Harrison");
    address.setState("Ohio");
    address.setStreet1("100 Harrison Avenue");
    Boolean valid = (Boolean) subject.call("isValidShippingAddress", address);
    assertTrue(valid);
}

@Test
public void shouldAllowMultipleArgs() {
    subject.compile(read("address.js"));
    Object obj = subject.call("makeAddress", "USA", "45030", "Ohio",
            "100 Harrision Avenue", "");
    assertNotNull(obj);
    ScriptObjectMirror mirror = (ScriptObjectMirror) obj;
    assertTrue(mirror.containsKey("country"));
}

References

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

Entrance

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 local.bipedalprogrammer.com. To get this working quickly you only need to add the following file at /etc/nginx/sites-available.

local.bipedalprogrammer.com
# Virtual Host configuration for example.com
#
server {
        listen 80;
        listen [::]:80;

        server_name local.bipedalprogrammer.com;

        root /var/www/local.bipedalprogrammer.com/html;
        index index.html;

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

You will need to create the new directory at /var/www/local.bipedalprogrammer.com/html 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/local.bipedalprogrammer.com/html
$ sudo ln -s /etc/nginx/sites-enabled/local.bipedalprogrammer.com /etc/nginx/sites-available

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

/etc/hosts
127.0.0.1       localhost local.bipedalprogrammer.com

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 dennis@bipedalprogrammer.com

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/id_rsa_github.pub

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.