Raising Software: A Tale of Unruly Tools

One of my retirement hobbies has been shooting and editing videos, mostly of our bicycle adventures.  When I was young, back in the middle of the 20th century, one of my uncles had a movie camera and projector, and I learned to splice broken film and edit clips together with razor blades and transparent tape.  He moved away and I grew up, and the skill was filed away as just another data point in How The World Works.

Fast forward to the second decade of the 21st century, when I decided to strap a cheap digital camera to the handlebars of the bicycle.  Digital editing requires software, a much less messy and more forgiving (i.e., non-destructive to the original “film”) process.  Since we use Linux exclusively as our computing platform of choice, there were a number of choices for Open Source video editing projects, mostly attempts to clone commercial video editing software for Windows and Apple.

I looked at Cinelerra and Kdenlive, which are fairly complex tools with a steep learning curve, but settle on OpenShot, a simpler tool with a lot of attractive features and a cleaner, no frills user interface.  Openshot 1 was essentially a one-man project, a user interface written in Python with the Tk graphical toolkit, built on the Unix principle of lots of little programs working together, using the multimedia command-line editor ffmpeg and associated libraries, the Inkscape vector graphics editor, and the Blender animation tools and libraries.

Openshot 1.4.3

OpenShot made it possible to load up a project with multiple clips, arrange them on a timeline, trim the ends or snip out shorter clips, and add titles and audio tracks, like voice-over and musical scores, in multiple overlaid tracks, and turn video and audio on and off by track and clip.   For several years, this worked fine.  However, success is not always a good thing, and Openshot suffered from it.  Not in the usual riches-to-rags story of an entrepreneur or rock star who descends into excess and loses his way, but in the attempt to seek wider appeal.

OpenShot was originally a purely Linux product, as mentioned.  To port the project to Windows, it was necessary, for a project with limited manpower resources, to keep a common code base.  Openshot attempts to keep a smoothly flowing user interface through parallel processing, using OpenMP.  The Windows philosophy is based on a single-user, single-task model rather than the multi-user, multi-tasking model of Unix.  When Windows evolved into a multi-tasking system, it used the pre-emptive model, which is relatively inefficient for the pipelined processing flow in the Unix cooperative model.  So, Windows applications tend to be monolithic, with all resources loaded in one huge process.  Parallel processing in Windows monolithic applications is accomplished largely through threads, rather the inter-process communication protocols.  I’ve programmed with threads in Linux, which tends to be tricky at best, and takes a thorough knowledge of parallel processing and memory management to do successfully.

The move to Windows-compatible architecture necessitated rewriting a lot of the Unix-specific standard library code in C++, which introduces the danger of memory-management issues. Openshot began to get buggy, with newer versions crashing often.  The developers claim it is the fault of unstable system libraries, but I’m not buying that explanation.  Since the user interface was also getting a major overhaul, work on version 2 meant that no more bug fixes were forthcoming for the now-crippled version 1.4.3.  Alas, initial releases of Version 2, with the back end still largely 1.4 code base, was also prone to crashing as well as presenting an unfamiliar user experience.

Openshot 2.4.1

So, we stayed with version 1.4.3 for a while longer, with short auto-save intervals.  Finally, with crashes and deadlocks rampant, we just had to try version 2 again.  Yes, the crashes had been largely fixed, but the new version was a monolithic package wrapped in a “launcher,”  (AppImage), apparently a type of container tool including all of the library dependencies, which rapidly ate up all available memory and much of the swap space, becoming so slow as to be indistinguishable from deadlock. Memory leaks come to mind when seeing this type of behavior.  On top of that, some of our favorite tools for controlling video blanking and audio muting by track were missing, to be restored by popular demand in a future revision.   Back to 1.4.3 .


The other alternative, kdenlive, based on the Konquerer Desktop Environment (kde, not native to Ubuntu, thus necessitating loading the complete KDE library support suite), is yet another learning curve, with many editing feature differences and rendering options.  We did use this for one video, as the internal de-shaking algorithm is a bit more efficient than reprocessing the clips with command-line utilities, and we had a bad experience with a new camera mount that was sensitive to shaking.  Kdenlive also crashes from time to time, lending some credence to the Openshot claim that the system libraries are at fault.

But, I continue on, putting up with slow response, freezes, and crashes, because I’m familiar with the features I like, and it produces acceptable videos.   I may spend some time to learn kdenlive, but, hopefully, Openshot 2 will improve over time.  The other alternative is to try to build a native Ubuntu version from source, which is a daunting task, since most open source software has a very specific support software version dependencies.   Despite the woes with Openshot’s growing pains, it is still faster than writing command-line scripts to use the Linux multi-media-processing utilities ffmpeg or avconv to trim and assemble video clips and sound files.  I use those command-line tools to assemble time-lapse videos from my home-built security camera system, but that is much simpler.

Road Trip 2018: California

Mount Shasta – photo by Judy

We arrived at Judy’s brother-in-law’s condo in Anaheim at midday, and settled in for a week of visiting.  Since Judy’s sister passed away in 2011, we try to get to Anaheim in the winter to check on Ben, who is in his 90s.  They moved to Garden Grove from the Pacific Northwest more than 50 years ago, when it was becoming less strawberry fields and more suburban sprawl.  They later moved to Anaheim hills and, when their children, our nieces and nephews, grew up, moved into the condo in Anaheim, where Ben still lives.  One of our nephews lives across the courtyard in the same condo complex, and the other lives in Montana in the summer home they built 35 years ago, and where Ben still spends summers.

We had decided to travel in our bicycle carrier this year, which only has two seats, because we thought Ben had a car we could use to take him places during our visit.  We were a bit disappointed to find the vehicle was not running, and our nephew apparently not interested in getting it running, as he disapproved of his 92-year-old father driving in the city (as do we, if truth be told–we don’t even like driving in heavy traffic anymore, ourselves).  Ben does have friends that pick him up for his bowling league days, and his daughter-in-law sometimes takes him to his medical appointments, so it wasn’t a problem for the first few days: I did take him to an appointment once, in the truck, and we took advantage of his bowling days to go bike riding.

Except, when we suited up in our bicycling kits and went out to go riding, we discovered our truck, with the bicycle inside, was missing.  We quickly discovered that, though we had a parking permit in the car, I had failed to hang it back on the mirror after an outing, and the condo complex towing service had confiscated our vehicles.  We got our nephew to pick us up on his lunch break and take us to the impound yard in Orange, where we ransomed the rig for $265 US, approximately equal to our fuel budget to get home.  We did drive to our planned riding venue, on the opposite side of the city, and managed to burn off our frustration and anger in a 28-km dash down one of the concrete-lined waterways that drain the Los Angeles basin, most of which have bike paths on the tops, with ramps under the cross-street bridges.  As with most, the Coyote Creek drainage had a peppering of homeless camps under the bridges, but not as many as some of the areas.  The creek joins the San Gabriel River and follows it to the sea at Seal Beach.

Cerritos-SealBeach from Larye Parkins on Vimeo.

The next bowling day, we drove south to Huntington Beach and rode the bike trail along the beach, for a 25-km flat run.  Since the beach is obviously multi-use, with many pedestrians and rental bikes, there is a speed limit of 25 km/hr (which we easily exceeded with a slight tail wind), dropping to 8 km/hr when pedestrians are present, which is, on our long tandem, close to “stall speed,” and actually less safe.  We managed to avoid serious conflicts and, since it was still winter, with low traffic, the beach police were not in evidence and we didn’t get any speeding tickets.  The return run was against the wind, so keeping under the speed limit was not a problem, though the afternoon had warmed enough so the pier area was a bit more crowded with strollers, walkers, and rental bikes and quads, prompting some fancy maneuvering in lieu of slowing to tip-over speeds.   We had put on such a long face when we arrived at the state park parking lot and were told the entry fee was$15 US that, upon inquiry as to whether there was a discount for elderly cyclists who only wanted to take a short ride on the beach, the ranger waived the fee altogether (possibly because he did not offer us the senior rate in the first place).

Huntington Beach from Larye Parkins on Vimeo.

Frustrated in our plan to take Ben on outings, we took a risk and used the sleeping platform as a rear seat, sans seat belts, and went to a few of the local malls in search of lunch out, returning without incident. However, by the end of the day, I was feeling a bit out of sorts. Not long after we had arrived, I decided to consult one of the local walk-in clinics about my back issues, having pulled a muscle manhandling the bike when we stopped to ride in Yuma the week before. This seemed reasonable, since our health provider in Washington was now part of the California conglomerate. Except, it wasn’t. I had to get a separate account number, etc. After filling out the paperwork, we grabbed a couple of face masks and sat in the busy waiting room.


Living Dangerously, in the Kaiser Permanente clinic in Orange, CA. Photo by Judy

Of course, the back problems subsided, so there was no groaning or grimacing when I was examined, and range of motion tests were not at all convincing, since I have practiced yoga regularly for the past eight years and have a better range than I did when I was 20. I left with the advice to simply increase the dosage of the anti-inflammatory I take for my computer-usage-induced arthritic hands for a couple of weeks, which was fine. But, despite having worn face masks in the waiting room, I somehow contracted “what’s going around,” upper respiratory crud. We had planned to depart on Sunday anyway, and explore parts of California we hadn’t been to, like Death Valley, and spend a few more days getting home, but, after spending most of Saturday sleeping, we decided to head directly home, rather than camping and visiting more relatives and friends on the way.

Oroville Dam, nearing completion of the repairs from the spillway failures of 2017.

We stayed overnight in Sacramento, at the same motel we stopped at on our way south last year, east of the city, so we took secondary roads north rather than drive back through the city in Monday rush hour. This put us close to the Oroville Dam, famous for the spillway failure during last year’s heavy rains, so we took a side trip to the visitor center, the dam overlook areas themselves still closed during the repairs. This was a delightful surprise, as the center features a history and display of the native people as well as of white settlement and the construction and failure of the dam.

We continued north, reversing our route of last year, staying at the same motel in Medford, Oregon, then stopping at Green Gear Cycles in Eugene, where our Bike Friday tandem was built, to check out their new E-bike conversion program.  We could convert ours for a reasonable cost, which supposedly would make it possible for us to ride farther and up steeper hills again, but the cost might not be reasonable for this fiscal year: we’re still recovering from last year’s expenses.  So, we left with some ideas of whether we wanted to do that and when, and, in keeping with our proclivity to avoid freeways, took old 99(W) to McMinnville and then to Hillsboro and down to the Columbia.  By this time, I had overextended my feverish condition, so Judy took over at Scapoose and drove the rest of the way home.  Since we had not planned to be home quite so soon, it wasn’t too much of an effort to hunker down and stay home until the virus passed.  Fortunately, Judy did not contract it.

The Longview-Rainier bridge, spanning the Columbia River between Oregon and Washington. Hard to imagine now that we once rode our old tandem across this bridge, in 1987.

All in all, our expedition this winter was not as satisfying as it could have been.  We encountered the usual run of bad weather, so unpredictable in winter, so our lodging costs were higher than we had planned.  It simply wasn’t a good time to visit.  We missed seeing three of the great-grandchildren because they were either working or visiting other grandparents.  Several families were going through difficult relationship issues, so our presence was an unnecessary complication rather than a joyful family reunion.  The weather became a factor that reduced the number of bike rides we took, so taking the camper van and bike with the low fuel efficiency combined with staying mostly in motels anyway meant the rides were expensive.  We’ve always bristled at the permanent checkpoints scattered across the southern regions of the country, well within the borders, and this trip, we encountered most of them.  Illness while traveling is never fun, and it changes plans.  We’re trying to fill our our bucket list, so there aren’t that many opportunities to put missed targets back on the list for another year.    Staying with Ben at his “winter home,” we had no Internet access, even through our phones, as there was no WiFi and poor cell signal.  One day, we went to the Anaheim Public Library, but the access there was disappointingly slow.

On the bright side, we got to see our new great-great-granddaughter and meet our great-grandson’s new family (even though he was not available, being at work).   We did have four bike rides, adding more than 100 km to our total for the year and keeping us ready to ride more as the weather improves at home.  Our van ran smoothly, justifying the expense last year to get it “expedition ready,” as it survived a second long trip without incident, though we have since had to replace the radiator and hoses during routine maintenance, another expensive repair to ensure continued reliability.

Road Trip 2018: Border Checks–Without a Border

On February 23, the seventh day of our expedition, we headed south, taking back roads along the Rio Grande as far as we could before being forced out onto the Interstate north of Socorro, where we stopped at a local coffee shop we know well from past trips. We departed the freeway again at Truth or Consequences (formerly Hot Springs), taking the old highway through Hatch and along the river to Las Cruces, passing out of the Land of The Free (as noted by the northbound checkpoint near Radium Springs) unchallenged, into the Southern Exclusion Zone (our term), the 160-km-deep region around the perimeter of the country from which one cannot return without proper papers, or, more likely, without being subjected to racial profiling.  The Zone—which has no official name, for the purpose of plausible deniability—exists, and has for decades.  According to Wikipedia. there are 33 permanent checkpoints within the borders of the United States.  It is notable that few, if any, of these checkpoints are evident north of the 47th parallel, as would be expected if most Canadians looked different from many of us (surprise, they do—Canada is much more ethnically diverse than is the U.S., due to more liberal immigration laws) or actually wanted to work for lower minimum wages than they could find at home and were willing to risk persecution to venture south without showing identity papers at an official border crossing.

Grandsons, son, and granddaughter, at our granddaughter’s house in El Paso.

This trip, we again stayed at an AirB&B near the city core. The next few days were busy visiting our daughters, granddaughter, grandsons, great-grandchildren, and great-great grandchildren in Las Cruces and our son and granddaughter in El Paso, where two grandsons also joined us. Our granddaughter in El Paso always finds interesting historical places to show us; as a result, we have a better understanding of the area. This time, we visited San Elizario, the second oldest city in the U.S., after St. Augustine, Florida, and once the salt-trading center of the New Mexico region of New Spain and the first county seat of El Paso County when it became part of the U.S., which it almost didn’t, as the Rio Grande changed course in historical times from north to south of the city.

We meet our great-great granddaughter for the first time. She let Gr-gr-grandma hold her, but wasn’t sure about the hairy old coot.

To save enough money to fill the tank again, we checked out of the AirB&B and spent a night camping at our daughter’s house, for a late night of conversation and a quick getaway in the morning.  Although we had a good visit, we did miss a few of the adult and teen great-grandchildren, busy with jobs and families of their own.  Keeping track of five generations in one family is a daunting task, indeed.

Heading west, we passed through the first of many Border Patrol checkpoints, part of the network that make up the region we have dubbed the Southern Exclusion Zone. The one on I-10 was passing cars without stopping, probably because they had met their quota for the month with the northern California raid the previous day, or perhaps they weren’t aware that Washington State (where our truck is registered) has a large population claiming Mexican heritage, and they just didn’t bother to check our whiteness index.   Being the elders in a family that spans the spectrum of black, brown, and beige, and having worked and played in multi-cultural milieus, we bristle more than a bit at the obvious bias of “white privilege” and the implications unequal treatment has for our society.  Border Patrol:  please do not assume we are “not the droids you are looking for.”  We would rather you check everyone’s papers and inspect the cargoes of every vehicle if you do any.  Maybe some of those all-white folks will feel violated enough to actually think about what the *real* ‘Murica stands for.  Hint: it’s not pretty.

As we crossed the continental divide—which, in this part of the country, is noted only by a sign, the desert being relatively flat—we ran into mixed rain and snow, which followed us into Tucson. We had planned to bicycle on the downtown river path in Tucson, but it was still a bit cold and blustery, the river was dry, and the motel prospects not the best, so we cancelled our reservation and moved on.

We left the freeway at Tucson to tour through the Tohono O’Odham reservation, noting another Border Patrol checkpoint on entry (faced toward traffic leaving the Rez, indicating we had once again crossed into the Zone). North of the old mining town of Ajo, we passed through the other checkpoint, back into the Arpaio District of Trumpistan, getting a bit more scrutiny this time: our bicycle helmets, hung from the handlebars, were mistaken for extra passengers.  Unlike the indigenous peoples of the northern Great Plains, the Tohono O’Odham were not granted dual citizenship when their lands were divided between European-style governments, so the Border Patrol are much more diligent in this region where the national borders are bound to be softer than elsewhere.  Not so diligent as to check the storage compartment under our sleeping platform, however, which would easily have smuggled in two or three “bad hombres,” nor did they poke the suspiciously bulky sleeping bag (containing our inflated pads), to make certain we had not been so inclined as to moonlight as coyotes for a little extra gas money.  The space was actually full, serving as our closet, pantry, kitchen, and dining room storage.  Once again, racial profiling kicked in: we passed inspection on our White Word alone, affirmation that institutional racism is very much a part of the American culture.

In for the night in Gila Bend, a “wide spot in the road” on I-8, at Cheap Hotel #4, we soon discovered that the WiFi 1) did not work, and 2) was likely being spoofed, as neither the correct nor the misspelled ESSID connected us with the Internet. Being the end of the month, it was necessary to use the iPhone as a hotspot for our laptop to do the monthly web updates for a client. In the morning, with no breakfast bar at the motel and no food stores (the one listed on the GPS was boarded up, and the Dollar Store wasn’t open yet), we refueled ($0.69/liter, rising above the $0.57 we paid at the last station in New Mexico) and continued west without indulging in the usual fuel station fare of rancid peanuts, hard sausages, and puffed fried starches or pig skins (i.e., Slim Jims, Funyuns, and Chicharrones), stopping for coffee and breakfast 150 km down the road at the first coffee shop we came to.

In Yuma, we unloaded the bicycle and rode 22 km on the canal trails. It was cool, but sunny and a very pleasant riding. Our ride was cut a bit short by a steep cut in the levee path that our long tandem would not have negotiated without bottoming out. After lunching out of our food staple supplies, we continued on into California, passing through the “agricultural” inspection station without incident (the Republic of California has its own idea of border control, obviously). The freeway had many construction areas, so we cut off on a secondary road to Calexico, seeing several Border Patrol vehicles on the way, then north to El Centro, where we picked up some groceries and dry-camped for the night, cutting costs to compensate for the rising gasoline prices. We used the campground day room to take care of our Internet business and recharge our electronics: a site with electricity would have been $12 more for the night.

Early morning, we swung by a nearby Starbucks for breakfast and coffee, then took the southern route again, passing thousands of hectares of solar panels, installed or staged for installation, before the secondary road rejoined the freeway to climb over the mountains. At the top, we split off again on a side road that meandered down into a mountain valley and another reservation. After passing close to a pre-existing section of the Trumpian Wall that marched darkly across the steep mountainside, we curved back north, enduring yet another scrutiny by the Border Patrol, the third checkpoint to which we had been subjected, without ever leaving the borders of the United States, or at least without passing through a checkpoint operated by the Mexican government, giving credence to the theory that we have been living in a police state for some time now, subject to inspection and seizure of person and property at any time, any place.  The traffic being a bit higher here, we passed through with only a quick check of our facial features, with the feeling we had been traversing through some sort of no-man’s land, where “bad hombres” lurked, pursued by armed militia, infiltrating white-land despite the obvious physical barriers visible on the mountainsides.  Our journey through the southern regions of the U.S. had begun to feel more like a time travel trip through the Iron Curtain of Eastern Europe in the mid-20th Century.

Soon, we arrived in San Diego, where we spent the rest of the morning and early afternoon exploring Balboa Park. We took in the Air and Space Museum, my first visit since the museum was rebuilt after the 1978 fire. I had visited only a few months before the fire.  Some of the exhibits were carefully crafted reproductions of the original historic aircraft, others had been donated by collectors. We enjoyed our first lunch out in many days, from a vendor in the Plaza at the park. We took an auto tour of Coronado. We might have ridden our bicycle, but parking along the bike path that passes beside the Navy base was an issue. We noted that there is a ferry from downtown San Diego for bicycles, which sounds like an interesting adventure for another time. We checked into an inexpensive motel near a shopping district on Rosecrans, in the area near Ballast Point where I used to stay when I traveled to San Diego on business, back in the 1970s. We restocked our food supplies at a nearby natural foods market, and turned in early. The internet access, like most low-budget motels, was iffy at best: many motels use the same ESSID for all of their access points, and, combined with other nearby hotspots on the same channels, cause frequent conflicts and signal drop.

Once again, rain overtook us: it had rained overnight, and we proceeded north along the coast in alternating mist, drizzle, and downpour. There were many bicyclists out along the coast highways and volleyball games on the beaches, despite the stormy weather. Gasoline prices rose to $0.89/liter when we refueled, and we saw even over $1.00/liter in some areas. Our slow sojourn along the beach was interrupted by Camp Pendleton, where all traffic runs on I-5 (except bicycles, allowed through the military base by prior permission). We got off the freeway in San Clemente and took a walking break in San Juan Capistrano, bypassing the Mission, as we had toured it more than 25 years ago, and it hasn’t changed all that much since the 1812 earthquake that destroyed the church.  We had a light lunch at a gelato shop (3:16 Bakery Shop). Back on the I-5 freeway, we finished the day driving into Anaheim in relatively light Saturday midday traffic.

Our plan was to spend a few days, up to a week in the L. A. area before winding our way back north toward home. Since we became cat-less, we decided our travel plans could be a bit more flexible, as long as we arranged to have our mail picked up every 30 days and didn’t crop up any major medical issues. Once again, staying with relatives allows us to catch up on laundry and grocery shopping as well as visiting. The L.A. basin is not our favorite place to drive, but one gets used to it after a few days.  We also planned to try out a few of the many bike trails that top the levees along the concrete-lined rivers and creeks.

To be continued…