Fig Garden

Shaw Avenue is only 2 lanes. Fig Garden Village doesn’t yet exist, in fact North of Shaw is mostly orchards. “Old Fig” confines are ‘twixt Van Ness Blvd and Palm Avenue. The image is from a collection of aerials maintained by the Fresno State University. The snipped below is from 1954. View the full sized [here]

1954 Aerial Survey

This pool, depicted in the lower RH corner of the 1954 aerial, was open to the public. Women wore rubber swim caps (there wasn’t a filtration system). The pool was drained as required and the water refreshed from the water tower. Those are individual dressing/changing booths along poolside.

The story began in 1916 when Delbert, Rose and their daughter Margaret moved from San Francisco to open the first Chevrolet dealership in the Central Valley area. Shortly after their arrival, they began construction of their beautiful home in a then-distant rural area at the corner of Maroa and Rialto. The home was completed in 1919 with stunning landscaping and two firsts for residences in Fresno: the first underground sprinkler system and the first private swimming pool. In the mid 1920s, Delbert had a falling out with Louis Chevrolet and lost the automobile dealership. Delbert and his brother, Norman, who had long-term ties with the automobile industry, started another dealership under the banner of Star Automobiles. In 1931, they introduced a new model called the DeVaux which was manufactured at plants in Oakland and Grand Rapids. The Star dealership closed in 1932. It was a brief run in the burgeoning and highly competitive automobile business that was also confronted by the nationwide Depression. With the closing of their automobile agency, Delbert and Rose saw opportunity to remain in their home and make it an income-producing asset. They decided to rent their small private pool and the surrounding park-like grounds to private parties. Since it was so popular, that same year they built a second larger pool called the Del Mar Rose, named after Delbert, Margaret, and Rose De Vaux. During World War II, the pool was used by the Army for water survival training by troops being sent overseas. The original small pool and surrounding areas served as an Officers Club for Camp Pinedale and Hammer Field servicemen. Many local families recall riding their bicycles to this grand pool, later known simply as De Vaux’s. One of the most prominent features of the De Vaux Estate was a large water tower that was visible for miles. It was a main water source for the entire property. Behind the two-story family home, another building with a three-car garage and a three-bedroom apartment was used for the service employees. Today, the only remaining original structures are the elegant family home and two front entrance ways. In 1962, ten visionary founders of [the FGS&R Club] bought the seven-acre estate from Rose De Vaux and converted this historic community treasure into the member-owned and family-oriented FIG GARDEN SWIM & RACQUET CLUB.

Badges?

A whirlwind tour of Dale Varnam’s junk yard Fort Apache revealed a derelict black sedan accordingly brought indoors under its own steam a decade or two ago. Blockaded by further horded stash over time, I figure here it will remain in this spot for the duration.

With much to see and no time to linger I swung my phone camera to grab this photo with the intent to identify the automobile later.

Make, model, year? Sans badging that is more of a challenge. Google Lens and Grok AI saw the tall radiator and proclaimed it a Rolls Royce possibly so no help there…

The is late 20’s or early 30’s and I browsed google images of hood mascots. Only high end cars of that era came so equipped and the Goddess ornament came into focus almost immediately as belonging to Cadillac (or sometimes grafted onto sister car, the less expensive Cadillac entry – LaSalle). One problem; none of those cars had the radiator shell resembling this one. Knowing that other GM makes shared from the same parts bin, I picked the next tier down and sure enough the grill style on this oldie is from Buick.

restored comparison

Buick had their own flying lady but this is not she and this ain’t a Cadillac. MIA on the black example is the floating badge that mounts between the headlights that was new for 1930. That would have made identification too easy.

The 1930 grill design differs from 1929 and it was revised again in 1932. A tape measure on the wheelbase would have nailed down the specific model.

The black sedan discovery is a (30 or 31) Buick, personalized with an embellishment from a period Cadillac to trick us.

Big Data

I wanted to present 10 Years of jogging stats recorded with Runmeter an exercise logger. I used this app to display stats, in a way to offer incentive to self improve or at least to encourage workouts. Retired from the daily grind it is time to showcase it. I wanted to post all of my history in one large map overview.

Data Ethics: Your data should be YOUR data –empathizing the importance of data ownership and control, particularly in the context of personal information. Runmeter allows for the export your data and other apps may allow or should act similarly.

Before starting a run I would dutifully activate my tracker. Various parameters would be saved as data points from which a statistical summary was derived. Included in the collection was a GPS trace route. I blogged the more memorable jog locations when away from home base with the idea to revisit them or allow anyone else who might be keen in doing so.

Each map has a subset of waypoint data plots (1,000+) that make up the track. Google Maps is obliging and allows users to import their map data without the complication of an API. However there are limits to this free functionality. A [Google] My Map is limited to one GPX file import per layer. A My Map has but 10 layers for a single map creation. Well, I have over 700 events. They will not all of them fit. Granted that some of these maps are repeats. I suppose I could weed those out. That would reduce the burden some but too tedious.

The solution was to combine ALL of the GPX files into one using an online file editor: gpx.studio Their merge utility would merge the contents while keeping the traces disconnected. The output was one very large (66 MB) file. But Google choked on it because of another My Map limitation a 5 MB size hard limit on an imported file. Curses.

Plan B. Sticking with gpx.studio, which is thankfully robust and displaying all of my individual files, I decided to export combined route maps in sections instead of all together. A gpx.studio utility Clean GPS points and points of interest with a rectangle selection tool.

Drawing a marquee around a map area that I considered to be of manageable size, I was able to export the grouping into a new gpx file. This file of 5MB or less could be accommodated by the My Map layer.

All groups imported to individual map layers completed, witness the end product embedded here:

The Soggy South

Soil Moisture Retention Over Time

The sky opened up and poured for an hour. In that 60 minute span a measured 1 inch of precipitation recorded.

The lawn was well soaked. Baseline moisture content before was 43% and by the end of the drenching it had risen to 85% where it peaked.

Heavy rain having ended, the moisture plot on the chart begins a steep descent. Over the course of 3 hours following the storm the moisture level begins to stabilize. The last data point in the chart is very quickly back down to 46%.

Soil moisture retention refers to a soil’s capacity to hold water and make it available to plants over time, which is crucial for healthy plant growth and reducing the need for frequent watering.

Analysis: The soil was already saturated before the event. The added rain rapidly percolated through soil (gravity) and the [type: sandy] soil was unable to retain the excess. Witness the plunge in the graph. The graph demonstrates that there is an ever broadening plateau that forms.

Takeaway: When the lawn sprinklers are turned on during dry spells, any irrigation above 40-45% is wasted water. The soil can’t hold it. Mileage may vary depending on soil type.

Restoring an Old Database

Fifteen years ago the original MySQL db was setup with an unknown version. To achieve compatibility for the era I chose v 5.7 with the idea of updating to make it production ready. The old database dump was restored successfully albeit with some encoding issues. Notably, the post_content field was littered with artifacts likely from copy|paste operations when posts were originally created. Example:

The content was rife with this pesky  character and there were too many to one by one start editing posts.

The “” character is a common encoding issue that occurs when UTF-8 encoded content is incorrectly interpreted as Latin-1 (ISO-8859-1) encoding. This typically happens when there’s a non-breaking space (  or Unicode U+00A0) in the original content.

I tried running a query to remove it:

UPDATE wp_posts 
SET post_content = REPLACE(post_content, 'Â', ' ')
WHERE post_type = 'post';

The  should be replaced by a regular space. However, windows terminal would not play nice and stripped out the  replacing it with %%.

Trying some other methods targeting certain HEX values:

UPDATE wp_posts 
SET post_content = REPLACE(post_content, UNHEX('C2A0'), ' ')
WHERE post_content LIKE CONCAT('%', UNHEX('C2A0'), '%');

or specific byte sequences:

UPDATE wp_posts 
SET post_content = REPLACE(post_content, CHAR(194, 160), ' ')
WHERE post_content REGEXP CHAR(194, 160);

returned an empty result. I was only guessing at the character origin that was manifesting as Â. But this worked:

SELECT post_title, 
       HEX(post_content) as hex_content,
       LENGTH(post_content) as content_length
FROM wp_posts 
WHERE post_title = 'Bowl 712 Cherry';

It returned:

-------------------------------------------------------------------------------------------------------+----------------+
| Bowl 712 Cherry | 3C6120687265663D2268747470733A2F2F6A7477672E64776462636E632E6E65742F77702D636F6E74656E742F75706C6F6164732F323031332F30332F426F776C2D3731322D4368657272792D572E6A7067223E3C696D6720636C6173733D22616C69676E6E6F6E652073697A652D6D656469756D2077702D696D6167652D39303422207469746C653D22426F776C203731312043686572727922207372633D2268747470733A2F2F6A7477672E64776462636E632E6E65742F77702D636F6E74656E742F75706C6F6164732F323031332F30332F426F776C2D3731322D4368657272792D572D313937783330302E6A70672220616C743D22222077696474683D2231393722206865696768743D2233303022202F3E3C2F613E0D0A0D0A546865206C617374206F66203420626F776C73207475726E65642066726F6D207468652043686572727920547265652066726F6D205370616C64696E672044722E20C382204A75737420612076657279206E6963652062756420766173652E |            381 |
| Bowl 712 Cherry |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |              0 |
+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------

In case you’re wondering it was Claude AI stepping me through these operations and of course I couldn’t see the errant HEX code but Claude could…

and so, the fix!

UPDATE wp_posts 
SET post_content = REPLACE(post_content, UNHEX('C382'), '')
WHERE post_title = 'Bowl 712 Cherry';

Some forensic work after the exercise verifies:

C382 is considered as two separate bytes in UTF-8 encoding:

  • C3 is the first byte of a two-byte sequence.
  • 82 is the second byte of that sequence.
  • Together, C3 82 decodes to the Unicode character U+00C2, which is the Latin Capital Letter A With Circumflex (Â)

Could have just asked Google, What is the hex value of  ? Goggle Search Labs | AI Overview answer: The hexadecimal value for the character  (Latin capital letter A with circumflex) is 00C2 or C2. In UTF-8 encoding, it is represented as C3 82. Either would have got the job done. Good exercise though. The database has been cleaned up.

Jeff, the woodguy

My lifelong friend Jeff Weigant passed away. He was a people person and was much loved by everyone who knew him. Jeff had artistic talent. One of his later endeavors was woodturning.

This splendid sample, a gift to me, I proudly display. A narrative, in Jeff’s words, follows:

Bowl #665 – box elder

Back Story
Box Elder, part of the Maple Family. Red indicates insect damage, which most likely killed the tree. This is common in this tree, to a point. If you buy it in a retail environment, it’s expensive, in the top 10%. This wood is the first Diseased Box Elder I have found in the 4 years I have been turning.

I always tell people, “Find me wood I can use, and I will make you a bowl for free.” At the Green Farmers Market, there was this gal who had a farm. She and her husband split; he took the farm. She took over the organic Soap Tent as the owners headed off to military duty in Texas. Later, I heard she bought a piece of land in Cobb County—two acres along a railroad track, reasonably flat, with a basic house in need of repair. She can make the house her office and soap factory, and if she cuts down some trees, she has enough ground to farm as well.

She called me near Christmas. She had closed on the house and had a bunch of Bradford Pear trees to take down. She said they were big—dang. I’m a bit tired of Pear, but it’s cool wood after you sand it for what seems like two or three decades. The tree removal guy had her call me to tell me about this Elder find—not just Pear, so much the better! I promised my neighbor a Mexican lunch at the most traditional Mexican place in town to take his truck to Marietta and load up wood. Being a foodie, he had no problem with the plan.

So we got there, and it’s not all what we thought. The Bradford Pear had been dying for a while, and I’ve never seen pear with character, so OK, good. There were a few rotted, well-past-their-use-by-date chunks of Elder. Where was the rest of the tree? Turns out, the Tree Dude also knew what this was, took the best for himself, and forgot to tell Soap Girl. I’m not complaining… much.

Soap Girl got a free, better-than-average bowl of Box Elder with knot holes and bark inclusions. I did right by her, took the wood given to me, and did good by it too. And all of it found a very good home.

There are many similar of Jeff’s creations to admire at this archive. All of his works have since been dispersed to far flung places but the archive collection provides insight into his skillful ability, understanding of trees and way with people.

Robot Butler Review

At the breakfast counter with my back turned I hear the artificial voice “starting scheduled cleaning” as the machine comes to life at its base station ramp. Pausing to get its bearings it rumples off across the tile floor on a mission: Monday 0900 – mop the master bath. I watch intently as the (new to me) Roborock disappears from line of sight but using the app I can resume tracking and even get live video feed. With sensors and intelligence it can navigate on its own and doesn’t need me to nanny but it’s just so interesting to watch this marvel.

Setup

I spent the better part of a day learning and tinkering. The robot and its dock are fairly intuitive. There are two controls; one for to press to return home and the other a ‘play’ button to power on/off, pause, resume. One can issue commands by voice directed at the robot: “Hello Rocky”. The app is the more nuanced and has the steeper learning curve. Here is where you manage maps, set routines, and create schedules. You can really drill down and specify pre-set levels of clean e.g. vacuum balanced, turbo, custom. mop water low, medium, high or custom. This allows you to specify what you want based on the type of surface; tile, carpet, or hardwood. I find that water dispense rate low is ideal for hardwood and high is okay for tile but you get the idea. If you want, you can let the robot decide by choosing SmartPlan. There are menus and sub-menus within the app and a bit of a time sponge to the extent you’d like it to be.

Initially you will want Settings>Manage Maps>Create a Map. The obvious place to begin is the first floor or where ever the Dock is. Send the machine off on a map only survey. The AI is fairly good at identifying rooms with open door access. Later you can use the app to modify rooms, rename, divide or merge rooms. You can even name furniture that is identified but I don’t see the point in that but with a room named it is easier to send Robrock on specific jobs, spill cleanups.

You will want to give the machine small tasks one by one (as opposed to entire house) to allow the unit to return to the dock. The dock has fresh water supply, the clean mops function, and automatically extracts the dirt from the onboard bin. This container is slightly larger than a DustBuster but way smaller than a traditional vacuum cleaner so it fills quickly. The onboard water reservoir and waste tank is good for ~250 sq ft. between service.

small-ish dust bin and washable filter

These tanks can only be filled | pumped out by the dock but the dust bin can be removed manually. The first time you tackle a room you will want to frequent the dock. In my case various rooms had not been cleaned for awhile and were overdue. This means that the robot will be put through its paces first go. Consider manually dumping the dust collector at 10 min intervals as mine filled with fibers and hair to the extent that the base station had a rough time emptying as advertised. My feeling is that following the first clean subsequent jobs will have less and less heavy soil / fur balls and thus less chance of overload.

The AI is very good at avoiding obstacles. Rarely does it collide with or bump into things. Even delicate object de art placements or personal items strewn about are left unmolested. However, I did have to “rescue” the robot a couple of times when it tangled with lamp electrical cords. You don’t have to hide these but I found that strategic arrangement or bundling will avoid that replay.

The dock is downstairs so I hand carried the robot upstairs for mapping and then a clean. It recognized the top of the stairs when set in motion and didn’t fall off the cliff. But, after it finished I created a no-go zone at steps ledge for peace of mind.

While auto probing that first step my heart leapt as it careened toward disaster but it hit the brakes last moment on edge of the precipice. Not my idea of a fun thrill.

Now that rooms are mapped and routines scheduled I expect to be less hands on. I did notice thread like material spindled onto the brush rotors. Fortunately it’s a minor task to flip it upside down and remove them. A pen knife with care can remove and clear the rotor bearings. It all snaps back into place after maintenance. No other tools required.

Verdict

Clean! The Robotrock is excellent. I ask it to clean the kitchen nightly. No more random crumbs under summertime bare feet. Less traveled areas; once per week. Roborock will have something to do everyday in rotation. My garage (painted floor) has been mapped and Roborock rolled beneath cars and all. Very tidy now.

Sony Mavica MVC-FD71

Film cameras weren’t dead yet but in 1998 digital cameras were a thing.
Quick Access FD Drive 2X

Part of the smart design was integration with the Floppy Disc as storage media. Although limited in capacity (~30 pictures), they were mainstream an cheap common place. On the downside, the smallish image sensor state of the art at 1/4″ translated to a photo image resolution of 640 × 480 pixels. To try to adjust for that weakness the camera came with a 10x optical zoom lens, so points there for shot framing.

The meager 0.4-megapixel resolution was quickly outpaced by competitors (Nikon, Canon, Olympus) offering 1–2 megapixels by 1999. Floppy disks, while convenient, had limited capacity (1.44 MB), and slow write times were drawbacks.

The image was captured to system flash memory. The 3.5 inch disc would spin up for the write (save) or read (playback) After saving to the FD the memory would then be available for the next click of the shutter button. Wait time was ~4–5 seconds per photo (0.5–1s for capture/processing plus 3–4s for writing). You would need to press the shutter button for each photo, and the camera would lock out further captures until the floppy disk write was complete.

The digital camera gave instant gratification like a Polaroid vs 24 hr. film processing at the Fotomat. Images could be shared easily. Once you absorbed the cost of ownership, the picture taking was free!

640 X 480 – best used for thumbnail duty

Any photo collection from this this camera is grainy — primitive to the 4k standard. Click for full size glory. But this was a time before high speed bandwidth so… good enough.

The camera’s bulk (1.5 lbs) was balanced by ease of use but soon this model was passé. The quite novel Mavica is in my legacy ‘can not bear to throw it away‘ bin.

Dell AXIM X5 Pocket PC

From my shoebox museum of relics, this gizmo was a demonstration of tech wonder. The Personal Digital Assistant in 2002 (5 years before the iPhone splash) was in its infancy and more novelty than necessity.

The Axim was predated (10 yrs.) by Apple’s early PDA attempt and failure; Newton Message Pad. The claim to fame for these early devices was hand written character recognition. Using a stylus pen on the 240 x 320 TFT screen display you could take notes. Built in was a microphone for memos. The Windows Mobile OS had an appointment calendar, To-Do list, address book, and calculator. Microsoft had a protocol called ActiveSync for file transfer and outlook email. The X5 did not have WiFi or Bluetooth. Connectivity was by serial cable — early days.

Advancing design iterations from Dell and Palm established a market but then in 2007 Apple brought it all together with the first smartphone. These traditional PDAs were finished off with the advent of iPad and touch screen tablets.

My Pocket PC is a paperweight now. The charging stand accessory is nowhere to be found. I did find and remove its SD Card (capacity 8MB). Surprisingly the old (20 yrs.) card had valid data on it but it was nothing; just some picture files from another relic from the shoebox museum — a Canon PowerShot SD 30 Digital ELPH 5.0 MEGA PIXELS.

Audio before iPOD

Found in the obsoleted box, a Panasonic SL–SW860 Portable CD Player SHOCK WAVE METAL S-XBS with 40 Seconds ANTI-SHOCK MEMORY 4.0 ! Nomenclature contrasts with Apple’s minimalist and elegant iPod that would debut a year after this short lived unit.

The clamshell lid was unlocked to reveal a CD rip of Lila Downs – Una Sangre (2004). You could supposedly exercise to the tunes.

The device was designed to be clutched in hand with steadying wrist strap –awkwardly. The weight specification is 3/4 lbs. but that is understated. It feels rugged but is only water resistant (splash proof). There is an O-ring on the door so it might survive a rain shower but in fairness nothing was designed for underwater immersion. Hard to imagine jogging with this thing.

Also in the junk drawer, this iRiver iFP MP3. Using flash memory this was a popular digital audio player. Too large to slip into one’s pant pocket, it was intended to dangle from a lanyard. Still, this was an advance from the weighty CD player. The iRiver was well received despite its still unusual form factor.

These two devices, along with plenty of cassette tape players unmentioned, were exciting in concept and served needs for the moment; then came the first generation Apple. Using a a mini hard drive and at 1/2 lb. was about the size of a deck of cards — but at $399. The iPod got leaner/cheaper and we all know who won the digital player battle. Predecessors are only memories now.

2004