Man With Dog

Tue, 27 Feb 2024

The Day My MacBook Died!

Gee, the Apple Silicon MacBooks are spiffy! Well, except when they aren’t. This is a tale of such woe.

TL;DR - Laptops should have removable/replaceable storage drives; Apple MacBooks don’t. Either avoid Apple laptops or devise your own external storage system and daily backup plan.

I am a programmer; well, a system’s analyst actually but nobody pays for that anymore. And I love technology. I particularly enjoy working on Apple Computers because are so graphically rich.

It has been my longstanding opinion that I consider Apple Computers to be the best designed and engineered personal computer systems available. You want the false-economy of cheap, go elsewhere. I have been using and programming Mac computers since the days of Mac OS 7.

Sadly, I no longer hold so strongly to that opinion. I could recount many hardware fiascos Apple has delivered (butterfly keyboard is just recent one); but I won’t. My current daily driver is a sleek, fast MacBook Air with Apple Silicon. It far outperforms my last favorite MacBook: a quad-core 2012 15” MacBook Pro Retina. That was replaced by a little beastie MacBook Air with a 2GHz Core i7 & 16 GB RAM. Then I got this MacBook Air M1 with 16GB RAM and 512GB storage (henceforth, M1 MBA). Almost everything about it seemed like an enormous step forward: the CPU, the screen, the system on a chip, the fast memory subsystem, and the fast system bus. All this except for one thing I didn’t pay enough attention to: the storage system is soldered to the logic board. I truly enjoy sitting down to work with it.

…Until this incident.

I don’t mind that memory is soldered on; memory is temporary. But electronic components inevitably fail. Sometimes sooner, sometimes later. I/O subsystems are particularly vulnerable to dirty, noisy power. Even storage systems fail. These two things—overall logic & i/o subsystems, and storage subsystems—should always be separable. The best way to improve the overall performance of a system is to improve access to the slowest part, the storage subsystem. Apple did this at the cost of recoverability and long-term reliability of my data.

I now believe Apple has made a huge faux pas_ in tying the logic board & subsystems together with the storage subsystem. This is no longer just a belief; this is now my experience.

Why this?

I have two reasons for posting this story.

  • The first is to relay to the Apple Technician the symptoms of what is wrong and what I have already tried to recover from it. In a word: no joy. My hope is that Apple provides some magic tools to their technicians for this kind of incident.

  • The second reason is for my publisher who might think I’m giving him the my dog peed on my homework excuse. It certainly sounds like it: “I missed my promised deadline because my computer died.” I’m not trying to dodge a deadline. This really happened when I was in the middle of my work on Chapter 5. Once I publish this, I’m get back to work using a different computer, recovering as much as I can.

Prologue

Original, working configuration My original working configuration comprised my M1 MBA on an aluminum stand with a 12.9” iPad Pro 4 connect also on an aluminum stand connected via USB-C as a 2nd monitor.

Once you have experienced work with a 2nd monitor, it’s very difficult to work without a 2nd monitor. For casual stuff, 1 monitor is just fine.

All functioning USB-C cables. Apple MBA power supply.

The incident

On Sunday afternoon, I had been working normally editing chapter 5 of the book I’m contracted to write in exactly the configuration shown. As is my custom, whenever I stop, I upload the most recent edits to their server, which I did. We then went out for a couple of hours. The laptop was put in sleep mode but other left as-is. Upon returning, I found that the system would not wake up from sleep and was totally unresponsive to inputs (keyboard and trackpad).

Day 0: Sunday evening

As panic began to enter my consciousness, I tried powering off (hold power button for about 15 seconds) and powering back on. Nothing. Blank screen. No cursor. It appeared dead.

Well, not exactly nothing. After I calmed down a bit, having recycled power several times, I realized that I was getting the startup bong.

At this point, I started doing some research. I attempted to go into Recovery Mode but nothing appears on the screen. The system still appeared dead. After about an hour of this I was rather exhausted from the trauma, so I powered it off, disconnected the iPad and decided to sleep on it.

In the meantime, I verified that I still have AppleCare coverage on it. With that knowledge I made an appointment at the nearest Apple Technical Service Center; it’s about an hour away. I also wanted a day or two to see if I could recover my data before possibly losing everything (250GB+ of pdfs, videos, source code, etc.) on it.

Knowing that the M1 MBA had no way of (1) removing storage subsystem, and (2) I didn’t know of any way to access the storage subsystem, my sleep was fairly fitful. I awoke several times wondering how am I going to recover all of that data.

Okay, I admit it: foolish me, I don’t have a recent backup. I do have an old partial backup of my documents folder but that was more than several months ago.

Lesson 1: Don’t panic. Stop. Assess. Do some research. Even walk away for a bit. Do not return to the situation until you are calm.

Lesson 2: have a backup strategy and follow it… regularly. Even daily if your work is important. You likely won’t get fanatical about it until you actually lose a day or two of work.\

Day 2: Monday (all day)

I woke up with a good deal of hope. So this day—all day—I spent going through various possible scenarios and workarounds.

The monitor on the laptop was dead, as was the keyboard and trackpad. A workaround was in order. The first hurdle to overcome was how to get a 2nd monitor attached and appear as the main monitor.

It's dead, Jim

With a second monitor attached via Apple’s Media dongle, I could tell when the logon screen came up because the wallpaper appeared on the 2nd monitor. I could then close the lid of the laptop; the 2nd monitor then became the primary monitor. Yay!

Wait! 2nd monitor works

Oh snap, macOS is so effing secure that you cannot use attached accessories to log on until after you’ve logged on to unlock those acessories. What genius at Apple thought of that one?

I also tried various methods to activate BlueTooth from logon screen but nothing worked here either. No USB keyboard or mouse, no BlueTooth keyboard or mouse. The hardware must have recognized the internal keyboard and trackpad but couldn’t do anything with them.

By this point, I was accustomed to shutting down the OS (hold power for about 15 seconds) and then entering Recovery Mode (hit power button and hold for at least 25 seconds). When the monitor status light went active, I knew that the Recovery boot process was complete and could then close the lid to access Recovery Mode options.

Catch-22

It is interesting to note that USB keyboard and mouse worked but the USB flash drive with a bootable installer was not recognized. Musta’ been that same genius at work again.

I had found this Apple Support document describing thoroughly Recovery Mode for Apple Silicon MacBooks. The document seemed fairly complete and rather straightforward. So I began working through this document methodically (I had been thrashing about a bit the night before).

The first step was to try to reboot into Safe Mode from Recovery Mode. This appeared to work but returned to the logon screen and we’re back in our Catch-22 situation: can’t use accessories until we log on, can’t log on until we can use accessories. There must be some way to circumvent this but I have not found it. Send that genius to jail, do not pass go, do not collect $200… <aarrgghh>

I had no Time Machine backup so that was not an option.

Oh, wait! There’s a disk sharing option. Yay! On Intel Macs, that was the Target Disk mode. So we configure our M1 MBA for disk sharing

Shared disk mode?

Then we introduce the 2012 Intel MacBook Air by hooking up the necessary USB-C cable (through the Apple Media dongle). Then we open Finder and check out our network.

Enter 2nd MBA (2019 Intel)

So far, so good.

No sharing joy

But… nothing. Either this feature doesn’t work or else by USB-C subsystem is hosed in some particular way. Why am I so snarky about a feature not working? Because I made a bootable installer drive for Ventura and tried it on my Intel MBA. It failed because it could not find my Wi-Fi network.

I then tried to reinstall macOS Ventura in Recovery Mode with the hope that some driver or kext had been corrupted. Okay, but the installer needs an internet connection. If I was careful, or so the instructions stated, I might not have to completely wipe my storage. But, once again, no joy. You can’t recover your OS without a network connection. The Recovery Mode installer either does not have the necessary network drivers loaded or my networking subsystem is also hosed.

Can't reinstall, no network

What!? Apple, you are killing me, because your marketers bleat, “It just works.” … Uh, no, it doesn’t.

  • Aside: I used to work with Microsoft Windows since before Windows 95. Greasy kid stuff. Then I worked at Microsoft in the Windows Server group. I saw from the inside why Windows is the cheesy way it is. When Microsoft did their enormous layoff in 2015, I think Apple hired way too many of those people thinking they were getting skilled workers. This entire process has felt like working with Microsoft Windows 95 again. <yuk>

Finally, before throwing in the towel and waiting to see what the Apple Tech team could do, I decided to verify that my file system was still good.

File system appears OK

Using Terminal in Recovery Mode and fsck -n (no changes), it appears that the storage subsystem is just fine. Now if I could only get to it. Rather, get it all off that system.

Day 3: Tuesday

I resolved this day to do a clean setup of everything—disconnect all accessories, power off each computer—and perform each step I tried yesterday one last time.

I also decided to take pictures and write this blog entry so as to provide evidence of what I’d done and what I’m seeing.

At this point, nothing worked. The system is not recoverable. The storage system is intact but inaccessible. There is nothing else to do but see what the Apple Technician can do tomorrow.

Day 4: A trip to the Apple Technician

This has not occurred. I will provide an update after this incident has been resolved one way or the other.

Epilogue

This incident has left a very bad taste in my mouth, as it were.

Yes, I know computers fail. Yes, I know that a backup strategy is essential. Yes, I know that actually following a backup plan is critical.

Still, this MacBook Air is not even 3 years old. I did not expect it to fail so relatively soon (for Apple computers) and in such an unrecoverable manner.

I am at the point where FreeBSD and/or Linux is looking better and better and where all the gizmos, gadgets and blinky-lights of Apple products, especially w.r.t. macOS, have lost their allure. This is akin to Bill Burr’s experience of losing his religion—gradually, the way curlers let go of the stone.

I am not so certain that I will ever buy another Apple computer again. At least not until the storage system is reliably recoverable/replaceable.

Now I have to get back to work on my book…

posted at: 14:30 | path: /Computering | permanent link to this entry

Tue, 05 Sep 2023

A One-Day Layover In Seattle

You only have a day to spend in Seattle before moving on; what to do? Here are some possibilities.

TL;DR: Pike Place Market & City Center in Seattle or Ballard & the Locks.

My wife and I lived in the greater Seattle, Washington, area for 14 years having moved there from Pittsburgh, Pennsylvania, before moving to Mobile, Alabama. Because of that, a friend asked, “We are taking an Alaskan cruise which sails out of Seattle. We want to spend a day in Seattle before we board… what should we do?” So, this article is written from my perspective as a non-native of the region and from that single requirement: just one day before a cruise.

Seattle is a city with a small downtown and a large, sprawling metropolitan area. While Seattle, itself, has a lot of offer, so do neighborhoods around Seattle as well as small towns to the north & south. There is no need to cross over the Cascade mountains.

If you are going to visit Puget Sound, I really recommend you go for 2 weeks, rent a car and really travel around a much wider area to explore not just Seattle but also the East Side of Lake Washington, Whidbey Island, Bellingham, Olympia, Tacoma, the Olympic Peninsula, and even Vancouver, BC. But that is not this article.

Back to Our Question

Most of the cruise ships depart from Smith Cove Cruise Terminal at Pier 91. This is just under 3 miles from Pike Place Market in Seattle. It is also just over 3 miles from Ballard, a quaint neighborhood north of Seattle. Sadly, there is not much between Ballard and Seattle. Pier 91 is nestled between two hills: Magnolia where there is not much to see or do, and Queen Anne Hill which has a vibrant night life with several live music venues.

Given the location of Pier 91, I would suggest exploring either downtown Seattle or Ballard. Pick one or the other; each area has a lot to offer for a single day. Then, depending on which area you choose, you should pick overnight accommodations in that area.

Ballard

Ballard is an idiosyncratic neighborhood with quirky specialty stores, coffee shops galore, great restaurants, in the summer, and a delightful farmers market on Ballard Ave just south of Market St. If you are not in the mood for tourist attractions (read: traps), Ballard is definitely the place for you. The two streets to focus on are Ballard Avenue and Market Street.

It would be easy to spend the day exploring Ballard with an added excursion west to the Ballard Locks or south across the Ballard Bridge to Fisherman’s Terminal.

And if you just want to hang out in a park, I recommend heading over to Gasworks Park which is on the other side of Fremont. The vista of Seattle at sunset is breathtaking.

Downtown Seattle

Downtown Seattle offers a wide variety of attractions that fit the requirement. These include

  • Seattle Center with the Space Needle, Museum of Pop Culture, Pacific Science Center, and events that happen regularly on weekends.

  • Pike Place Market This is a random collection of shops and seller booths between 1st Avenue and Alaskan Way (next item). Each block and area of Pike Place Market has a myriad of specialty shops, antique shops, produce, restaurants. I think it took us about 5 visits before we felt we explored the whole place. On the south end, you can sit for Japanese tea; in the middle, you can see the fishmongers throw fish about; and on the north end, arts and crafts booths. Remember there are several levels—-in every building—-so you definitely want to just wander about. Everything closes around 5:00pm so you’ll want to go early.

  • Alaskan Way Alaskan Way is at sea level (whereas Pike Place Market is about 4 stories above that). As you wander about Pike Place Market, you may find yourself going down to Alaskan way where you’ll find the Seattle Aquarium, antique shops, and other touristy things.

  • Seattle Art Museum On 1st Avenue, just 3 blocks south (and downhill) from Pike Place Market is SAM, the Seattle Art Museum. While not a large museum, they offer a varied and interesting collection of works.

  • Walking Tours If the weather is nice and you feel like walking, the Seattle Architecture Foundation offers guided walking tours. These are definitely worth the time. Seattle has a rich history of novel architecture.

    Or, you can stop in to Metsker’s Maps on 1st Ave and Pike, and pick up a walking guide book of Seattle.

As I said, lots of attractions. However…

Downtown Caveats

Visiting Seattle does not come without some serious risks. If you visit downtown, try to be very aware of what is happening around you at all times. Do not venture east beyond 1st Avenue. 3rd Avenue and Pine Street is overrun by drug dealers and vagabonds. It is now known as a war-zone; I’m not even sure if the police patrol it any longer.

The main problem is the overwhelming numbers of vagabonds that infest the city. Please do not call them homeless—-they have been offered homes and most of them have refused, preferring instead to live out their drama on the streets. Sadly, there is a great deal of money being spent on this situation with little result.

Also, avoid old Pioneer Square at night; in fact, avoid most of downtown after 5:00pm.

Getting around

For only a one-day adventure, I do not think renting a car would be worthwhile. You can take a train from the airport to Seattle and Ballard. There is also an extensive bus service.

Uber and Lyft are very plentiful and easy to get. Using them removes burden of parking. Some neighborhoods even have bicycle taxis where you are pedaled to your destination.

I believe you can also take a train/subway from Pier 91 to the Sea-Tac airport.

Weather

The cold arctic ocean current is a constant 50°F. This means that the local weather never varies by more than +/- 25°F. If it gets too hot, it’ll soon go back to 55°F. If it gets too cold, it’ll soon go back to 45°F.

Because of this constant variability around the ocean temperature, it is very difficult to acclimate to anything but that temperature. The weather changes too often. If you let yourself acclimate to it—-it takes about 3 days—-you will find it actually very comfortable.

Rain/Sunshine

There are only two seasons.

For about 9 months of the year, it will rain nearly every day. From the 4th of July to some time in October/November, there will be more or less mostly sun and hardly any rain. That is the dry season. Otherwise, it is the rainy season. Expect rain.

When it does rain, it tends to be misty or light. Rarely is there a heavy downpour. Note that it is also sunny for a bit almost every day. In the winter, it is cloudy and misty/rainy most of the day with short bouts of sun. As summer approaches, each bout of sunshine increases and the cloudiness decreases until the dry season begin. Then in October or November, the rainy season returns.

If you happen to be there in the winter and it snows, DON’T GO ANYWHERE! Seattle is not equipped at all for snow and Seattle-ites have no idea how to drive in it. You will see people do extremely dangerous and stupid things in such conditions. Just find a nice local tavern or coffee shop and enjoy a hot toddy or two.

Clothing

Because of the moderate temperatures and light rain, focus upon wearing layers rather than a single overcoat for each range of temperatures.

In the summer, a t-shirt or light top along with a long-sleeve shirt or anorak/light rain jacket would cover most situations. In the summer, it is unusual for temperatures to go above 80°F and not for very long if they do.

As it gets colder, add an undershirt under a long-sleeve shirt, a fleece vest, and a light fleece overcoat. I’ve actually worn those 4 layers in temperatures as cold as 25°F with only the addition of gloves and a hat. Most of the winters I spent in Puget Sound, I only needed 3 layers, and rarely wore the 4th top fleece layer.

Note: Down and down-filled outerwear, while warm and light do not do well in even light rain. This is why fleece is ideal in the Pacific North West (PNW).

As a bonus, the 4-layer fleece approach, with warm gloves, warm socks, a hat, and a scarf, will also work well for the colder temperatures on your voyage to Alaska.

Remember, too, that unless you come from a city like Chicago or New York, you are likely to walk a lot more than you are otherwise used to. Shoes with gummy soles or running shoes with thick padded soles would be best.

There is no need to dress up; everyone dresses fairly casually.

Culture

Seattle natives tend to be introverted and will tend to avoid any interaction with strangers. This will seem odd to anyone from, well, anywhere else. It’s not you. Really.

Southerners with their habitual politeness will likely fare much better than brash Yankees or loud Texans. And like most other places in USA, anyone from California already has two strikes against them; the natives are still smarting from the California invasion two decades ago.

Geography

Seattle is hilly. From sea level to about 200 feet in elevation. Some of these hills are steep, so don’t rush yourself walking these steep hills unless you are very fit.

What are we leaving out

  • Lake Union This includes a visit to Gasworks Park for a beautiful vista; Ivar’s Salmon House, especially for Sunday brunch—-of all of the Ivar’s, this one is our favorite; a seaplane ride over the city; renting an electric boat or kayak to cruise around the “lake”; hanging out in Fremont, a quirky but fun neighborhood; and the University of Washington.

  • Pioneer Square in the “old city”. This includes a visit Occidental Park and old Pioneer Square; an historical tour of “Seattle Underground” (don’t do this if the weather is nice); a walkabout in the International District; and taking in a baseball game or a soccer game.

  • Microbreweries There are excellent local microbreweries throughout the Puget Sound area. You could do just a microbrew tour of Puget Sound if that is your thing. At the same time, Seattle has a bevy of really excellent burger joints to complement your quaffing adventure. Two that come to mind are Two Bell Tavern in Belltown, and Lorreta’s Southwest Burgers near the Boeing Aerospace Museum.

  • Distilleries There are also a number of very good distilleries and whiskey bars throughout Puget Sound, again, if that is your thing. I no longer drink alcohol (that is another story for another time), but while you are quaffing beer, you could equally sip fine local whiskeys, ciders, and wine.

  • Restaurants Seattle is replete with excellent restaurant with a wide variety of cuisines: from standard American, fresh seafood, Japanese, Chinese, Brazilian, and a variety of Polish restaurants. Note that Seattle is famous for its teriyaki.

  • Lots of other stuff There are plenty of Seattle neighborhoods worth exploring, Capitol Hill, West Seattle, SoDo, Montlank area and the arboretum, the university district. And that’s just the Seattle side of Lake Washington.

Conclusion

I would like to emphasize not to overplan your day in whatever part of Seattle you choose. Let serendipity happen; you may discover things you never expected nor would any tour guide ever think to tell you.

One last thing, the air from the prevailing westerlies over the ocean can be amazingly crisp and fresh. You may notice this immediately when you get off the plane. You will certainly notice it on your cruise. Pay attention to that—-it is one of the only things I truly miss about the PNW.

posted at: 17:59 | path: /Travelling | permanent link to this entry

Thu, 31 Aug 2023

From C to … where next?

C is still a great language. Here we examine some viable successors.

TL;DR: Rust, Zig, and ObjFW.

The C programming language was the 3rd programming language I’ve learned—-and that was over 4 decades ago. The first two languages I have essentially forgotten and will never use again: BASIC and Pascal. To be honest, after learning C in university I actually forgot it since I was steeped in a quite different language for my day job for nearly a decade.

As luck would have it, I not only relearned C but also learned C++. I mostly learned C++; I learned just enough to get done whatever was needed; it is a beastly language.

In fact like most programmers, I largely used C++ as a better C. Then C got better.

After more than another decade and I no longer needed to write programs in C++, I very happily jettisoned it. I will not re-acquire it, no matter how many gyrations the C++ committee puts it through. With each gyration they attempt to make it a more something language—-more streamlined, more expressive, more I don’t know what. They do improve some things but then introduce other kludges features—-just too much syntactical strychnine. There is now so much baggage that C++ is beginning to approach COBOL or Ada. COBOL evolved where you could do nearly anything and everything with it… in thousands of lines of stultifying code. Ada was designed to be absolutely everything for every possible usage and therefore could do nothing well or fast. Yet, we keep hearing the incessant bleats, “C is too hard! Pointers! Waaa!”

Then I learned Objective-C. It is C with a few simple syntax additions. Suddenly you have objects and methods. It was influenced directly by Smalltalk where the focus is upon messages, and not all of that other OOP gobbledygook in other OOP languages. The Smalltalk environment has great limitions. Objective-C has a different set of limitations; one is you will only find a viable programming environment for it on macOS. Forget about iOS and the other inhabitants of Apple’s walled garden; they want you to use Swift and only Swift. Swift was billed as a systems programming language but nearly 10 years later very little of any core OS is written with it. Oh, and they just introduced macros in Swift. <sigh>

Aside: The C preprocessor is the one facility of C that I truly despise.

Back to C

Well, mostly. FreeBSD, OpenBSD, Linux (on just about every device), Raspberry Pi, and even Arduino still require C skills. So these things are keeping C alive after 50 (!) years.

The thing I like the most about the C Standards Committee is that for each version they follow a charter. The charter has evolved—-grown, not changed—-from the original to meet current needs. You can read the charter for C23 (née c2x). Note that at the time of this writing, most compilers currently only recognize the -std=c2x option and do not yet recognize -std=c23 even though many features of C23 are supported in current versions.

This charter thing is significant because it means C will continue to operate as C and not some new, improved, now with fizzle-gig gyration of C. There are myriad examples of languages that have gone off this cliff; consider the whole ongoing Python 2.x versus 3.x debacle.

C-Next

If you accept the proposition that C++ has failed as the next iteration of C, and I deeply believe it has, what are current the reasonable options?

I will simply state without going into details that I have a strong bias against Apple’s Swift and Microsoft’s C#. Both of these are vendor-driven technologies from vendors who have a proven track record of abandoning developers for the next new shiny thing. And beyond their walled gardens, they promise broader platform scope, but how long has this ever lasted from both of these companies. It’s just not in their charters.

I have come upon three different language trends that I believe are reasonable successors to C. Note: I think JavaScript is viable on the web but not elsewhere, and so we will leave it aside for now.

Let’s consider each of these.

Rust

Rust has been around since 2015. It is not C. It is not necessarily easy to learn.

Yet, in that time, it has garnered a lot of favor from developers as can be seen in the Tiobe Index and Stack Overflow Annual Survey.

Additionally, it is now officially supported in the Linux 6.1 kernel. That is a rather notable vote of confidence for this language. Furthermore, Rust is not only supported as an extension to an OS (Linux) it is also used to write new, experimental OSes. There’s also a tutorial to build a simple one. There are lots of similar systems projects when you start looking for them.

The Rust community is vibrant. It provides a great deal of resources for learning Rust and support for creating apps in Rust.

Zig

In a recent chat with Mark Dalyrmple of CocoaHeads fame and author of Advanced Mac OS X Programming, among other works, he mentioned Zig as a C-like evolution of C. He’s always good for that kind of thing, as in, “Hey, lookee at that thingee over there…”

The syntax looks simple and clean. It has objects. It already runs a bunch of places.

Okay, that’s enough to get me interested.

ObjFW

The main problem with Objective-C today is that it only, or largely only, runs on Apple platforms. Then, this article surfaced via OSNews. ObjFW promises to give new life to Objective-C on more than just Apple platforms.

I am rather excited by this development because I really like Objective-C. I wrote a desktop clock application with it and very much enjoyed the experience. That was about the time Swift was announced.

Sadly, I’ve let that app languish. But now with ObjFW I can see a way to not only escape from the clutches of Apple but also port this app to other non-Apple platforms. Writing/porting my Objective-C app to Linux/Wayland is now a real possibility. I don’t know when that will happen but it is back on my list.

Conclusion

Will these languages replace C? I think not.

Or, at least, not anytime soon. The market is fickle. Programmers are even more fickle. What is the new, shiny today may no longer hold any interest tomorrow. To be clear, these languages will have to get well beyond the new, shiny phase to displace C. That day is coming… but nobody knows when that will be; that day seems to be too far off over the horizon.

C grew out of a practical need for a portable systems programming language. It was originally intended to be used by and for experienced systems programmers. It has grown to be used in many other areas: scientific computing, application development, and the web. However, C still requires a level of awareness and skill to create feature-rich and robust programs. Even with that, C has become a model for many other languages: C++, C#, JavaScript, Objective-C, and now Rust and Zig.

I do think these languages will provide vibrant and stable development environments for picking up where C is weak or falls down. I am looking forward to deeply learning each of these languages to see if, in fact, they will fullfil their promise as the next iteration of C.

Mobile, Alabama
August, 2023

posted at: 12:01 | path: /Computering | permanent link to this entry

Mon, 07 Aug 2023

Beautified!

With the power of CSS (and quite a bit of hacking).

I going to tinker a bit more with the layout and formatting of the various pages until either (a) I am completely satisfied—-unlikely—-or (b) I just get fed up with wrestling with HTML and CSS an then move on to other things.

The site structure is starting to take some shape. Once I complete the tinkering, I’ll move on to site organization.

Basically, the site will be divided into two parts.

  • The Jeffie Part there will be stuff for me… probably lots of stuff.

  • The Wiffie Part this will mostly be her quilt works and other projects.

So, there will be a landing page, a “home” page for each of us, and then the whole organizational mess underneath that.

I’m hoping to capture many of the stories/lessons/experiences I find myself repeating to people I meet. I’ll try not to blather. And if I organize my blog adequately, useful topics should be easy to find. As always, time will tell.

posted at: 12:01 | path: /About this Blog | permanent link to this entry

Sat, 05 Aug 2023

Twiddle, Tweak, and Frob(nicate)

I’ve had enough of this messing about with HTML and CSS for today. So tedious, so cumbersome. I really wish CSS and HTML had a built-in macro-preprocessor, much like C does. That way you could set things in a very consistent manner across a wide variety of HTML properties. Sure, there are HTML preprocessors out there; yeah, I know. But that’s just another step in the process, another layer in the stack, and really just another set of gunk to wade through when things don’t go as expected.

This, then, is the look for the site: colors, fonts, sizes, general layout. This layout should work well enough on full screens as well as tablets and on little phones. Maybe later—-much later—-I’ll attempt to minimize the CSS so it’s much cleaner.

Now I can focus on the overall organization of the site. Once I do that that, then I can figure out which bits of Blosxom will generate static pages (once and done) and which bits will have to be dynamic. Ideally, this can be done in an obvious way so that 6 months, 1 year, 5 years from now, I can reproduce what I’ve done—-exactly like leaving good comments in source code. So expect a bunch of mucking about with the site as it might go through some real gyrations as I figure things out.

Until I get to the final, or near final, organization, these blog posts are going to be more blather than I otherwise would want. Sorry for the blather. Ultimately, these posts will end up in the Colophon.

posted at: 12:01 | path: /About this Blog | permanent link to this entry

Fri, 04 Aug 2023

Lions and Tigers and Bears, Oh, My!

As I consider the development of this blog, I am at somewhat of a crossroads. Which technologies to use: Perl *gasp!*, PHP *gasp!*, node.js *gasp!*, Python *ugh*, or some “snazzy-whazzy” blog framework *barf*.

For each of these technologies, there are as many proponents as there are opponents.

So I’m going to go “first principles”: what do I really need and then how do I get there.

Here are some needs:

  • Dynamic web pages: no. My web host has deprecated Perl—okay, that’s their decision—so plan B is to go with static ent pages.

    Static pages will be fine. These I’ll generate on my local machine and then “data cannon” them up to my web server, UltraWebHosting.com

  • Comments and user feedback: no. Enabling this capability would require far too much moderation and would open my site to the sewage slough of bots, scammers, etc. that is the current internet.

    The simple solution is that if you have something meaningful to add, email me your comment and I might consider adding to the post.

  • Flexibility. Yes. Right now, this blog is stupifyingly simple. But I have much bigger plans and I need most of the features Blosxom provides, especially, categories and what they call flavors.

  • “Security”/”performance”/”ease of use” of *blah-this* or *blah-that* or that new technology: No. If I go with purely static pages with some client-side JavaScript sprinkled in, I don’t think I’ll ever need them. Time will tell.

    Sure, security and performance will always be concerns but with static pages, these concerns are greatly mitigated.

  • Is any one of current web technologies more secure or more performant or easier to use? I don’t think so. Perl can be made more secure, especially since Perl 5. PHP is not inherently secure and sloppy practices can make is much less so. For my needs, none of them will perform significantly better than the other—my needs are just too small. (Remember in Big-O analysis, when n is small, complexity of the code is more significant.)

    The other thing that concerns my about any new or “emerging” technology is that the hype for them is driven largely by marketers—they just don’t tell you enough to make an informed decision about them. So you end up spending a LOT of time learning the gizmo only to find out later that “oh, we’re still working on that feature” or something like that.

  • Cost: definitely no.

  • Focus on content: definitely yes. On the web, “content is king.” This was true when the web was new and despite all the glitzy graphics, shading effects, whatever, this is still true today.

    Once I get things set up, I will have succeeded if adding new content is both straightforward and fast. Ideally, the process can be automated.

So here we are.

posted at: 12:01 | path: /About this Blog | permanent link to this entry

Thu, 03 Aug 2023

The very next day …

There are a few things that appeal to me about Blosxom. These are

  • file-based entries. Each blog entry is a file. I like this because I can have have several topics I’m working on/thinking about in separae files. When one is “done,” it only needs to be moved to the proper directory on my web server and voila!, there it is.

  • dynamic and static. Out of the box, Blosxom is a dynamic file processor/html generator. As I learn Blosxom I’ll likely move more an more of the content from dynamic HTML to static HTML pages. I suspect it’ll be just another step in the process.

  • simple. The simplicity of Blosxom appeals to me as a developer. It is very similar to the source, build, run approach for developing programs. I am also fond of the way Blosxom takes the details of HTML out of the process; these are details I tend to obsess over, which means waste time over. I hope today to add a Markdown plugin which will make creating posts nearly completely eliminated the need to use HTML markup.

  • extensible. The simple plug-in facility makes Blosxom seem highly extensible. And with the careful use of CSS, JavaScript, Perl/PHP, and embedded HTML, Blosxom currently feels unbounded. Experience will tell.

  • flexible. With the ability to mix static and dynamic pages, markdown text and HTML tags, the variety of plug-ins gives me the feeling of enormous flexibility. With experience, I anticipate the feeling turning into actual knowledge.

I found this article about Blosxom: Less Is More about his use of Blosxom and subsequently the site Jason Blevins that he created with it. Lovely. This is the direction I intened to take my site.

Please stand by as we adjust the dials…

posted at: 12:01 | path: /About this Blog | permanent link to this entry

Wed, 02 Aug 2023

Hey, there’s a ‘blog here!

So, today, I have finally gotten around to installing a web logger, called Blosxom (pronounced “blossom”). Each entry is a file, which is a feature I particularly like.

There’s a bit more to do, such as formatting and adding more content; so please stand by.

More to come…

posted at: 12:01 | path: /About this Blog | permanent link to this entry

powered by blosxom