Category Archives: Uncategorized

Beyond robots.txt

For the most part, when you have a web site, you want search engines to find it, but there may be parts you don’t want them to crawl because there are duplicate pages, or scripts that will put a heavy load on the database. There are many legitimate reasons you might want to do this.

That’s where a robots.txt file comes in. There’s an entire specification for robots.txt, documenting what rules the various responsible search spiders will follow.

The problem is, robots.txt is voluntary. Not all the search search spiders will obey it. Right now for example, there’s a whole world of AI crawlers trying to suck down the contents of the entire Internet.

Continue reading Beyond robots.txt

Your Camel is Burning Across the Desert Sands

Sometime in the mid-to-late 80s, my brothers and I got hooked on a very early text adventure game called “Camel”. The premise is that you’re fleeing across the desert on a camel, being chased by “pygmies.”

I don’t recall how we obtained the game; I do remember loading it from a floppy disk, but I’m not sure whether we bought the disk preloaded or if someone typed it in from a magazine, but we played it enough times that some of the program’s outputs have been a running joke in my family for decades.

The line “Your camel thanks you” (displayed when the player chose to stop for the night) came up again this weekend. This inspired me to see if I could find the BASIC program online.

Continue reading Your Camel is Burning Across the Desert Sands

Disable Co-Pilot Code Completions

I’m putting together a small collection of pages to share with family. A CMS would be overkill for this, so I’m creating the HTML by hand (and sometimes I enjoy doing this stuff by hand).

I’ve reached the point where I’m adding text, describing the photos and the memories they bring back. And because I’m using static HTML files, I’m using Visual Studio Code.

The problem is, the GitHub Co-Pilot that’s useful for auto-completing some of the boilerplate, also wants to chime in and offer suggestions for the text of my memories. Not only is this distracting, but some of the text is wildly inaccurate (after all, these are my memories, not the bot’s). So, how do you turn this off?

It turns out this is relatively simple:

  1. Go into the Command Palette (Ctrl-Shift-P or Command-Shift-P)
  2. Select “Github Copilot: Toggle (Enable/Disable) Completions”

(There’s also a “Github Copilot: Disable Completions” which will have the same effect.)

Converting an Image to Text

Did you know the MacOS “Preview” tool can be used to capture the text in a photo of a sign? All you do is click on the first word, and then drag the mouse until all the text is selected. Press Command-C, and then you paste the text into another document. (The Windows Snipping tool has similar functionality, though I’ve not tried it recently.)

I’ve been working on a small photo site to share with my family. One of the photos is of the sign in front of a garden for the blind and I want to make the text easily readable outside the photo.

The thing with this photo is, it has a lot of text. And I mean, a LOT. (Go ahead and click the image below, you’ll see what I mean.)

I’m really impressed with the preview tool. Two click and drag operations and I had 95% of the text. All I had to was type the context of. one paragraph, and then do a bit of proofreading (plus remove some hyphens where the text no longer had line breaks.)

Less than an hour of work.

Curious what the sign says? Here’s the text


Welcome to Wynnewood Valley Parks’s Sensory Garden

The Garden’s Origins…

The Rotary Club of Ardmore, in partnership with the Township of Lower Merion; built and dedicated the Wynnewood Valley Park. Garden for the Blind and Children” in 1977.

Ardmore Rotarian and professional landscaper, the late Bill Mulford, spearheaded planning and construction of the multi-tièred garden which introduced Braille plates to identify the individual flowers and shrubs. Prominent among the plantings were 25 cherry trees, a gift from the Rotary Club of Tokyo, Japan in appreciation for a 1973 gift of 300 dogwood saplings from the Ardmore Rotary Club for the Imperial Gardens. The saplings replaced many of the.garden’s 50 dogwood trees which had been damaged during WW II. The 50 dogwood trees, a 1912 gift from the United States of America, were in appreciation for 3000 cherry trees from. Japan which were planted earlier along the Potomac River in Washington Đ.C.

Ardmore Rotarians and the Men’s Garden Club of Delaware Valley maintained the Garden for the Blind until the Garden Club members were unable to continue, In 2005, the Rotary Club of Ardmore, under the leadership of Past President Dr. Douglas Klepfer, decided to restore the Garden, committed funds and began to build a new partnership with Lower Merion Township, Lower Merion Conservancy, the Penn Wynne community and others. A major contribution was presented by The Kistler-Tiffany Foundation to purchase all the plants.

The result is a beautiful new sensory garden and park entrance walkway accessible for all to enjoy. Included in the landscaping are the 12 new “Cherry Trees of Goodwill” donated by the Rotary Club of Tokyo in appreciation for Ardmore Rotary’s gift of 200 pink and white dogwood trees to the Rotary Club of Tokyo in 2004. The trees have been planted in the Imperial Gardens and throughout Japan. The Lower Merion Conservancy has committed its services for garden education and maintenance.

The restored Garden exemplifies the “spirit of the flower that binds the world together” as the Tokyo Rotary Club concluded when accepting the 2004 gift of dogwood trees. Planted in late 2010, the garden celebrated its ribbon-cutting ceremony on May 9, 2011.

The Plants in the Garden…

The Sensory Garden bas 73 species of plants including herbaceous plants and trees and shrubs.

HERBACEOUS: Aromatic Aster (Aster oblongifolius ‘Raydon’s Favorite’, Big Leaf Mountain Mint (Pycnanthemum muticum), Butterflyweed (Asclepias tuberosa), Catmint (Nepeta racemosa Walker’s Low’), Chives (Allum schoenoprasum), Dwarf GardenSage (Salvia offici nalis minum), Fennel (Foeniculum vulgare), Foamflower (Tiarella cordifolia, Tiarella cordifolia Oakleaf), Italian Parsley (Petroselinum crispum), Nodding Onion (Allium cernuuin), Ornamental Onian (Allium senescens), Showy Calamint (Calamintha nepatoides White Cloud’), Wild:Bergamot (Monarda fistulosa), and Wild Sweet William (Phlox divaricata subsp. aphamii)

TREES AND SHRUBS: Black Chokeberry (Aronia melanocarpa), Coinmon Ninebark (Physocarpus opulifolius ‘Summer wine’), Dwarf Fothergilla (Fothergilla gardeni), Darf Pepperbush (Clethra alnifolia ‘Hummingbird’), Red Twig. Dogwood (Cornus sericea), Spice Bush (lindera benzoin), Sweet Azalea (Rhododendron arborescens), Sweet Bay Magnolia (Magnolia virginiana), Sweet Pepperbush Clethra alnifolia Rosea), Winter Berry (Gaultheria procumbens Very Berry), and White Fringe Tree (Chionanthus virjinicus)

HERBACEOUS: Chinese Lanterns (Physalis alkekengi), Little Bluestem (SchizachyHum scoparium ‘The Blues’), Love-in-a-Mist (Nigella damascena), and Switch Grass (Panisum virgatum ‘Shenandoah, Panicum virgatum ‘Heavy Metal’)

HERBACEOUS: Italian Parsley (Petroselinum crispum), Dwarf GardenSage (salvia officinalis minum), Fennel (Foeniculum vulgare), and Cancer Weed (salvia lyrata ‘Purple Knockout’), Chives (Allium schoenoprasum), and Winter Berry (Gaultheria procumbens ‘Very Berry’).

TREES and SHRUBS: American Black Currant (Ribes americanum), Lowbush Blueberry (Vacciniu, angustifolium), and Serviceberry (Amelanchier canadensis)

HERBACEOUS: Bee Balm (Monarda didyma ‘Grand Marshalk’, Monarda didyma ‘Raspberry Wine’), Black-eyed Susan (Rudbeckia fulgida ‘Goldstrum’, Rudbeckia hirta ‘Indian Summer’), Blue Wood Aster (Aster cordifolius), Boneset (Eupatorium perfoliatum) Brown-eyes Susan (Rudbeckia triloba “Prarie Glow”), Butterflyweed (Asclepias tuberosa), Cancer Weed (Salvia lyrata ‘Purple Knockout’), Chinese Lanterns (Physalis alkekengi), Christmas Fern (Polystichum acrostichoides), Little Bluestem (Schizachyrium scoparium ‘The Blues’), Jack-in-the-pulpit (Arisaema triphyllum), Joe Pye Weed (Eupatorium dubium, Eupatorium maculatum ‘Gateway’, Eupatorium rugosum ‘Chocolate’), Love-in-a-Mist (Nigella damascena), Maidenhair Fern (Adiantum pedatum), Nodding Onion (Allium cernuum), Norhern Sea Oats (Chasmanthium latifolium), Ornamental Onion (Allium senescens), Pink Muhlygrass (Muhienbergia capillaris), Stonecrop (Sedum x ‘Vera Jamison’), Switch Grass (Panicum virgatum ‘Shenandoah, Panicum vir-gatum Heavy Ne a/), White Wood Aster (Aster divaricatus), and Vaurow (Achillea millefolium Claria lean, Moonshine. “Orange Queen’, Paprika)

TREES and SHRUBS: Black Chokeberry (Aronia melanocarpa), Dwarf Pepperbush (Clethra alnifolia ‘Hummingbird’), Eastern Redbud (Cercis canadensis ‘Forest Pansy’), Flowering Dogwood (Cornus florida ‘rubra’), Oakleaf Hydrangea (Hydrangea quercifolia ‘Snow Queen’), Red Sprite Holly (Hea virginica ‘Red Sprite’), Red Twig Dogwood (Cornus sericea), Sweet Pepperbush (Cletha almifolia ‘Rosea’), Virginia Sweetspire (tea virginica ‘Little Henry’), Winterberry (lex verticilliata ‘Winter Gold’, ‘Jim Dandy’, and White Fringe Tree (Chionanthus virginicus).

HERBACEOUS: Autumn Fern, (Dryopteris erythrosora), Button Snakewort (Eryngium yucci-folium), Cancer Weed (Salvia lyrata ‘Purple Knockout’), Chinese Lanterns (Physalis alkekengi), Christmas Fern (Postichurn atrosticheides), Jack-in-the-pulpit (Aviszema triphyllum), Love-in-a-Mist (Nigella damascena), Maidenhair Fern (Adiantum pedatum), Oakleaf Hydrangea (Hydrangea quercifolia ‘Snow Queen’), Ostrich Fern (Matteuccia struthiopteris), Pink Muhlyglass (Merlenbergia capillaris), Pussy Willow (salix discolor), Sea Holly (Eryngium planum ‘Blaukappe’), Stonetini (Sedum x ‘Vera Jamison’), Switch Grass (Panicum virgatum ‘Shenandoah’, ‘Heavy Metal’), Tufted Hair Grass (Deschampsia cespitosa), and Yarrow (Achillea millefolium ‘Gloria Jean’, ‘Moonshine’, ‘Orange Queen’, ‘Paprika’)

TREES and SHRUBS, Black Chokeberry (Arama melanocarpa), Dwarf Fothergilla (Fotbergilla gardenia), Red Sprite Holly (Itea virginica ‘Red Sprite’), Smooth Hydrangea (Hydrangea arborescens), Virginia Sweetspire. (Itea virginica ‘Lite Henry’), White Fringe Tree (Chionanthus virginicus), and Winterberry (Hex verticillata ‘Winter Gold’, ‘Jim Dandy’)

Teamwork…

The Sensory Garden is a labor of love. It took many hands to create it and takes many hands to care for it.

“The spirit of the flower binds the world together”

—Tokyo Rotary

This project was made possible by the generous contributions of the following groups and individuals:

  • Rotary Club of Ardmore
  • Township of Lower Merion
  • Lower Merion Conservancy
  • Department of Housing and Urban Development
  • Rotary Club of Tokyo
  • Kistler-Tiffany Foundation
  • Shreiner Tree Care Specialists
  • Gundaker Foundation of Rotary District 7450
  • Main Line Lions Club
  • Ronald A. Krancer

Low-background Steel

There are some scientific and medical scenarios (e.g. particle detection) that require instruments made with steel with as little radioactive contamination as possible. This is challenging as atomic-bomb testing during the 20th century resulted in persistent airborne nuclear fallout, and so there’s apparently some industry in salvaging steel from ships which sank prior to the Trinity tests. This is known as “Low-background steel.

“AI Slop” is an increasingly popular term to describe the growing amount of AI-generated content on the web, much of it intended to draw page views, spread falsehoods, and the like.

Last week, I learned of the “Low-background Steel” blog which is dedicated to sources of data from before the end of 2022 (because ChatGPT premiered in November of that year). At the moment, it only has a half-dozen entries.

Fanboy’s Convention List hasn’t been updated since 2012 — I wonder if they’d like a copy?

(Cover image, a Bessemer Converter in Sheffield England. Chemical Engineer, Public domain, via Wikimedia Commons.)

What Time is It?

I recently encountered a list of “Falsehoods programmers believe about time.” With the possible exception of the one about black holes (third from the end), they’re all false.

“There are always 24 hours in a day”? Not when we “spring forward” to Daylight Saving Time; that day only has 23 hours. Likewise, when we “fall back” to Standard Time, that day has 25 hours. Of course, even those rules aren’t true if you live in a region that doesn’t observe Daylight Saving Time.

Even Google has trouble with this. Monday morning, at 9:07 AM Eastern Daylight Time, I asked Google what time zone Colorado is in. The response was Mountain Time, which is what I was expecting.

Google then offered a little extra information. In Maryland, it was 9:07 AM Monday morning. But in Colorado, according to Google, it was 8:46 AM on Sunday.

That time zone offset is a bit more complicated than I expected!

Screenshot snippet of additional information from a Google search for the phrase, "What time zone is Colorado in?"

What time is it right now in Colorado?

Current Local Time in Locations in Colorado with Links for More Information (22 Locations)

Colorado Springs: Sun 8:46 am
Denver: Sun 8:46 am
Durango: Sun 8:46 am
Elizabeth: Sun 8:46 am

Dave Barry Interview

As part of the book tour for his new Book, Class Clown: The Memoirs of a Professional Wiseass, Dave Barry sat for an interview at a Microsoft in-house event. The interviewer was Scott Hanselman, who is also Microsoft’s Vice President of Developer Community (so, a “tech-influencer”).

It’s one of the funniest interviews I’ve heard recently. The spleen story alone is enough to make it worth your time. And now you’ll have to play it too, if for no other reason than to find out about this “spleen story.”

Microsoft Login Push Notifications

One of the podcasts I listen to is Security Now, hosted by Steve Gibson.

During last week’s show, he read an email from a listener who had just recently switched to using passkeys with his Microsoft account. The email mentioned using the Microsoft Authenticator app in the process, and the need to enter a two-digit code into the app.

Steve was a little confused by this mention of entering a two-digit code, but it was something I immediately recognized, as did co-host Leo Laporte.

Here’s a clip from this week’s show (episode 1026).

If you didn’t click the video, you’re depriving yourself of the chance to hear Steve Gibson reading an email I sent him.

AI Image Descriptions

I tend to take a lot of somewhat random photos of things that interest me. If it’s a good photo and the mood strikes, I’ll share it on various social media channels.

One image I recently shared featured a stack of “Wooden Bitcoin” with a joke about their value (there are certain scenarios where the wooden ones are quite valuable).

A small pile of wooden disks on a silver background.  An outer circle on each disk reads "Wooden Bitcoin.  Just as Good, Really."  Text on an inner circle reads "To Redeem: Insert into any Internet Coin Slot."  The Bitcoin logo appears at the center of each disk.

When I shared the image on social media (and when I embedded it above), I included an image description for accessibility purposes.

A small pile of wooden disks on a silver background. An outer circle on each disk reads “Wooden Bitcoin. Just as Good, Really.” Text on an inner circle reads “To Redeem: Insert into any Internet Coin Slot.” The Bitcoin logo appears at the center of each disk.

That description wasn’t very hard to come up with, but sometimes, it’s a bit more difficult to convey all the visual details. For example, consider this image of winterberries.

Bright red winterberries on bare branches.

In the embedded image’s alt text I’ve described it as “Bright red winterberries on bare branches” which is fairly accurate, though it doesn’t offer a lot of detail.

Much like everyone else, I’ve been getting my feet wet with AI. Lately, I’ve been using Ollama to run models locally for various toy projects; and more recently, I noticed that Meta’s llama3.2-vision model had become available, allowing the ability to work with image files.

Uploading the winterberry image, I gave llama the prompt:

Please describe this image.

What I got back was quite a bit more detailed than what I’d come up with on my own.

This image presents a close-up view of a vibrant red berry bush, showcasing its intricate details.

The bush’s branches are bare and grayish-brown in color, with numerous small twigs extending from the main stems. The berries themselves are bright red, spherical in shape, and densely packed along the branches. They appear to be ripe, as they have lost their green hue and turned a deep crimson color.

In the background, other bushes or plants can be seen, although they are not clearly visible due to the dense foliage of the berry bush. The overall atmosphere suggests that this image was captured during the winter season, likely in December or January, given the bare branches and ripe berries.

That description pretty well knocks it out of the park! And although the image contains no Exif data, the AI correctly determined that the photo was taken “…in December or January” (December 31 in fact, right on the cusp of the change).

For comparison, I uploaded the same image to ChatGPT, using the current “GPT-4o mini” model. Entering the same prompt, I got a similarly detailed, albeit shorter, description.

This image shows branches covered with clusters of bright red berries. The berries are small, smooth, and shiny, growing densely along the thin, leafless twigs. These are likely the fruits of a holly plant, possibly winterberry (Ilex verticillata), which is known for its vibrant red berries that remain on the branches during winter, adding color to the landscape. The background is blurred, emphasizing the striking red berries in the foreground.

Again, that’s a great description. No guesses on when the photo was taken, but this time, ChatGPT correctly recognized that these were winterberries.

In the case of llama 3.2, I’d likely remove the guess about when the photo was taken since I know that information. For ChatGPT, I’d take out the guess work about the type of berries since I already know it. But to be honest, either of these outputs would be good starting points for describing the photo.

So, what about that first photo with the wooden bitcoins?

Here’s the llama output. It’s wordy and repeats some the details multiple times. And I disagree with its description of the Bitcoin logo as the curved lines form the letter “B” and not a circle.

The image shows a collection of wooden coins with the Bitcoin logo and text on them, likely used as tokens or rewards in an online game or platform.

The coins are made of wood and have a circular shape.

They feature the Bitcoin logo in the center, which is a stylized letter “B” made up of two curved lines that form a circle.

The text on the coins reads “WOODEN BITCOIN” at the top and “JUST AS GOOD, REALLY” at the bottom.

There are 15 coins visible in the image, arranged randomly on a gray surface.

Some of the coins overlap each other, creating a sense of depth and layering.

The background is a plain gray color, which helps to focus attention on the coins.

Overall, the image suggests that these wooden coins are being used as a novelty item or collectible, perhaps in conjunction with an online game or platform that rewards players with virtual currency.

Chat GPT did better on this one.

This image shows a pile of wooden tokens designed to resemble bitcoins. Each token is circular and engraved with text and imagery related to Bitcoin. The engraving includes the Bitcoin logo (a “B” with two vertical lines) and phrases such as “Wooden Bitcoin,” “Just As Good, Really,” and “To Redeem: Insert into any internet coin slot.” The tokens are humorously crafted to mimic physical representations of digital currency.

In this case, Chat GPT clearly did the better job, and both tools did a credible job of recognizing text presented in an unusual format, but I’m not sure I’d want to trust either one to generate text without reviewing it before sending the text into the world.

This is a great step toward solving the “blank page problem”, most likely giving a solid starting point toward a description of the image (it’s also a huge step up from xkcd’s “Tasks” cartoon).

At the moment, my phone’s camera roll has nearly 10,000 photos on it (I really do take a lot of somewhat random photo). Being able to run them all through AI has the potential to save a lot of tedium with creating descriptions. But, along with the need to double-check the descriptions, I’m also still on the the hook for deciding whether the image is even worth sharing.

Using an AI tool definitely has potential to save me some time. But it’s not a panacea.

Opt Out of LinkedIn AI Training

It’s not quite a week since I first saw the meme announcing that LinkedIn had just become the latest high-profile company to start using their users’ data to train an AI system, and (of course) it was opt-out. So if you did nothing (e.g. you didn’t see the notification) then they would simply assume you were OK with it.

Initially, you could just go to https://www.linkedin.com/mypreferences/d/settings/data-for-ai-improvement to turn off the setting, but clicking that link doesn’t seem to be reliable. (If I go directly to that link, it works, but if it goes through Facebook’s link tracker, it goes to a page not found error.)

In a desktop web browser, you can click on “View Settings” in the left navigation, click on “Data Privacy” and then, under the “How LinkedIn uses your data” heading, click on “Data for Generative AI Improvement.” At the moment, that page has a single toggle for “Use my data for training content creation AI models.”

I don’t have the app installed myself, but I’m told you can similarly go to Settings -> Data Privacy -> How LinkedIn Uses Your Data -> Data for Generative AI Improvement

You can read more about this in The Washington Post’s Tech Friend column (no account required, this is a gift link)

Tip of the hat to John Newmark who first made me aware of this.