Interesting Partial 21H1 Component Store Cleanup

I’m running the Beta Channel Insider Preview on my Surface Pro 3. I just bumped it to Build 19043.899 thanks to KB5000842. Out of curiosity, I then ran the DISM commands to analyze and clean up the component store as shown in the lead-in graphic for this story. A final analyze shows interesting partial 21H1 component store cleanup occurred. Let me explain…

What Does Interesting Partial 21H1 Component Store Cleanup Mean?

If you take a look at some detail from the lead-in graphic then check the screencap below, you’ll see they show 7 reclaimable packages before clean-up. After cleanup, 2 reclaimable packages still remain behind.

Notice that 2 reclaimable packages persist, event after running the cleanup option.

Reclaimable packages persist after dism cleanup for one of two reasons AFAIK:
1. At some point, the user ran the /resetbase parameter in an earlier dism cleanup.
2. Something odd or interesting is going on in the component store, and dism can’t clean up one or more packages (in this case, two).

I don’t use /resetbase on test machines as a matter of principle. So something interesting and odd is going on here.

Another Try Produces No Change

Having seen this before on other Insider Previews (and production Windows 10 versions), I had an inkling of what would happen. I repeated the cleanup and got the same results: 2 reclaimable packages still show. In my experience, this means they’re “stuck” in the component store. What I don’t know is if taking the image offline and trying again would make any difference. What I do know is that this won’t change until Microsoft finalizes the 21H1 release for general availability (or issues a specifically targeted fix).

Trading on my connections with the Insider Team at MS, I’ll be letting them know about this curious phenomenon. We’ll see if anything changes as a result. My best guess is that this gets a cleanup as part of the final release work sometime in the next 2-3 weeks. That said, only time will tell. Stay tuned!

Facebooklinkedin
Facebooklinkedin

Strange Sabrent Rocket Adventures

Last Friday, I blogged about swapping out my review unit Lenovo Thinkpad X1 Nano SSD. I purchased a US$150 Sabrent Rocket Nano (Model SB-1342 1 TB). It replaced a Samsung OEM 512 GB SSD (NVMe PCIe 3.0 x4). Check the Friday post for details on performance, installation and so forth. Today, I’m writing about the strange Sabrent Rocket adventures I’ve had since taking that device out of the laptop. Frankly, it’s a continuing and wild ride.

Strange Sabrent Rocket Adventures: Drive MIA

First, I used Macrium Reflect to clone the original Samsung drive. Then, I made the swap, ran some tests and replaced the Sabrent with the original SSD. Things got intersting after I plugged the drive back into the Sabrent NVMe drive enclosure (EC-NVME). The drive was MIA: it showed up as 0 bytes in size and generated a “fatal device error” if I tried to access it. Ouch! I immediately reached out to vendor tech support.

Sabrent Tech Support quickly coughed up a link to a terrific tool, though. The name of the tool is lowvel.exe, and it performs a complete low-level format of the drive, zero-filling all locations as it goes. That turned out to be just what I needed and put the Rocket Nano back into shape where DiskMgmt.msc could manipulate it once again.

Then, I initialized the drive as GPT, and set it up as one large NTFS volume. For the next 12-14 hours, I was convinced this was a final fix. But my troubles are not yet over, it seems.

More Strange Rocket Adventures

The next morning, having left the device plugged in overnight, I sat down at my desk to see it blinking continuously. When I tried to access the device, it was inaccessible. It’s not throwing hardware errors to Reliability Monitor, but I have to unplug the device and plug it back in, to restore it to working order. Something is still weird. Temps seem normal and the Sabrent Rocket Control Panel utility (shown in this story’s lead-in graphic) gives the device a clean bill of health.

I’ve got an intermittent failure of some kind. I need more data to figure this one out. I’m leaving the Control Panel running on the test laptop where the Rocket Nano is plugged in. We’ll see if I can suss this one out further. It’s not inconceivable I’ll be going back to Sabrent Tech Support and asking for a replacement — but only if I can prove and show something definite and tangible. Sigh.

Info Added March 25: All Is Quiet

Who’d have thought a Sabrent NVMe enclosure and a Sabrent NVMe drive might be ill-fitted together? Apparently, that’s what ended up causing my intermittent failures. On a whim, I bought the cheapest NVMe enclosure I could find — a US$26 FIDECO USB 3.1 Gen 2 device — into which I inserted the Sabrent Nano SSD. It’s now run without issue, pause, hitch, or glitch for a week. I did not insert the device pad that normally sits between the case and the device (already present in the Sabrent enclosure). I’m inclined to blame some kind of heat buildup or connectivity issue resulting from an overly tight fit in the Sabrent enclosure, which I may have avoided in its FIDECO replacement. At any rate, it’s working fine right now. Case closed, I hope!

Facebooklinkedin
Facebooklinkedin

Swapping X1 Nano NVMe Drives

OK, then. I went and sprung US$150 for a Sabrent 1TB M.2 2242 NVMe drive at Amazon. It is depicted in the lead-in graphic above. The high-level sequence of events is as follows. Ordered on Wednesday, received and experimented on Thursday, reported on Friday (today). Alas, I seem to have hosed the drive and have started RMA negotiations with Sabrent. Along the way, I learned most of what’s involved in swapping X1 Nano NVMe drives.

Be Careful When Swapping X1 Nano NVMe Drives

As is almost always the case, there’s a YouTube video for that. It showed me everything I needed to do. Disassembly/reassembly were easy and straightforward. I had no mechanical difficulties. But once again, my US$7 investment in a laptop screws collection saved my butt. I mislaid one of the two NVMe holder screws (found it later during  cleanup). I lost one of the 6 battery restraint screws (fell on the floor into neutral brown carpet). Both were easily replaced from the collection.

Cloning Works, But Proves Mistaken

For whatever odd reason, the Sabrent drive shows up pre-formatted. The disk layout is MBR and the primary partition is ExFAT. Both of those got in my way as I cloned the original drive to the replacement. First, I had to clean the drive, convert to GPT, then format it as a single NTFS volume. Then, I used Macrium Reflect to clone the contents of the Samsung OEM drive to the Sabrent. Along the way Reflect told me it had turned off BitLocker and that I would need to re-enable it after boot.

Replacing the Samsung with the Sabrent, I went into BIOS and turned secure boot off instead. This let the X1 Nano boot from the cloned drive just fine. I was able to run CrystalDiskMark to compare their performance. Here’s what that looks like:

Swapping X1 Nano NVMe Drives.side-by-side

Samsung OEM results left; Sabrent results right. Best improvement where it counts most!
[Click image for full-sized view.]

What do these results show? Indeed, the Sabrent is faster on all measurements, and more so on the most important random 4K reads and writes (lower two rows). It’s not a night-and-day difference, but IMO the added capacity and increased speed justify the expense involved. It’s a good upgrade for the X1 Nano at a far lower price than Lenovo charges. Also, performance is somewhat better than what their OEM stock delivers.

Here’s a summary of performance row-by-row (count 1-4 from top to bottom):
1. Read speeds increase by <1%; write speeds by >28%
2. Read speeds increase by >7%; write speeds by >36%
3. Read speeds increase by  >52%; write speeds by >21%
4. Read speeds increase by >14%; write speeds by >51%

Where Did I Go Wrong?

Cloning was a mistake. I saw it in the disk layout, which showed over 400 GB of unallocated space. Better to have done a bare-metal backup using Reflect with their Rescue Media. Next time I’m in this situation, that’s what I’ll do.

Something untoward also happened when uninstalling the Sabrent drive. When I stuck it back in my M.2 Sabrent caddy (which fortunately handles 2242 as well as other common M.2 form factors), it came up with a fatal hardware error. None of my tools, including diskpart, diskmgmt.msc, MiniTool Partition Wizard, or the Sabrent utilities could restore it to working order. I suspect that removing the battery, even though the power was off on the laptop, spiked the drive with a power surge. It’s currently non-functional, so I hope my warranty covers this and I’ll get a replacement. If not, it will prove a more expensive lesson than I’d planned, but still a valuable one.

Facebooklinkedin
Facebooklinkedin

Insider Preview 19043 ISO Download Available

IMO, it’s always a good idea to have ISO files for Window 10 images available. That’s why I jumped on a chance to download the ISO file for Build 19043 from the Windows Insider Preview Downloads page. The 64-bit version of the file is 5,330,642 KB in size. On my GbE (nominal: actual around 940 Mbps) Internet link, it took about 5 minutes to download. Given Insider Preview 19043 ISO download available, you might want to grab one, too.

When Insider Preview 19043 ISO Download Available, Get one!

To access this page — and get the download — you must provide a valid Windows Insider MS account. Use it to login to the page. Once validated, navigate to the “Select Edition” heading, then choose the version of 19043 you wish to download. For the vast majority of readers, that will be the 64-bit edition.

In fact, according to PassMark Software’s latest (March 11) OS Marketshare survey, 0.45% of users run Windows 10 32-bit and 96.34% of users run 64-bit. That means 45 users in 10,000 run 32-bit whereas 9,634 of the rest run 64-bit. That is a vast majority, indeed!

More About the 19043 ISO

Interestingly, the 19043 ISO is 5,330, 642 KB (5.083 GB) in size. That means it’s too big to reside in a single FAT32 file (max size: 4 GB). To my mind, that makes for another good argument to use Ventoy (which puts ISOs into an NFTS volume) instead of having to split a too-big ISO into multiple parts to store on a bootable FAT32 partition.

I just checked, and a new Ventoy release appeared on March 6. Thus, I took the opportunity to upgrade my 256 GB Ventoy drive. I just copied this new ISO to it, too. It’s now sharing that space with 27 other Windows 10 (and other) ISO files. Good stuff!

Here’s a shout-out to Sergey Tkachenko at WinAero.com, who brought the ISO’s availability and location to my attention.

Facebooklinkedin
Facebooklinkedin

Might Wonky WU Presage Hardware Obsolescence

OK, then. Here’s an interesting story. After updating my 2012 vintage Lenovo X220 Tablet to Build 21327.1010 the Windows Update (WU) UI starting misbehaving. I’ve reported it to the Feedback Hub, with a screen recording to show what happens. This experience has me asking myself: might wonky WU presage hardware obsolescence?

Why Might Wonky WU Presage Hardware Obsolescence?

Built in 2012 and purchased in 2013 for a book on Windows 8, this system runs a Sandy Bridge CPU. It’s so old, it doesn’t support USB 3.0 natively (though I do have a plug-in Express Card that adds such capability). Simply put, the whole situation has me wondering if this old laptop is finally aging out of usefulness. I retired the companion system — a same vintage, same CPU T420 laptop — late last year because it was flaking out too often for everyday testing. Until this happened, the X220 Tablet remained a paragon of Windows support.

Here’s a short video (24 seconds) that shows very little, but enough for me to describe what’s wonky.

Normally, when you click the “Check for updates” button, the display changes to “Checking for updates” while the activity balls flow from left to right (and repeat until the check is complete). Next, if updates are available, the display reads “Updates available” while it installs them. When it’s done the display changes to “You’re up to date” with a timestamp to match. That final status info serves as the lead-in graphic for this story, in fact.

What Did Wonky WU Do Instead?

As you can see by playing the video, none of those display changes occur. I know the update is working because it grabbed and installed a Defender update when I tried it for the first time and that update shows under “Definition Updates” in Update History. That said, the usual animations (or status changes) that show WU is working are invisible on this PC. All that stuff works fine on my 2018 vintage Lenovo ThinkPad X380 Yoga (which has a Kaby Lake/7th Gen CPU).

Having reported the issue to MS via Feedback Hub, all I can do now is wait to see if it gets fixed. If it becomes a “new normal,” I may need to start retirement planning for my hitherto unflappable and unshakeable X220 Tablet. Sigh. That’s the way things go sometimes, here in Windows-World.

Note Added March 11, 2021

With the upgrade to Dev Channel Build 21332.1000, WU returned to “normal behavior.” But I did have to return to Advanced Sharing Settings/All Networks in the Network and Sharing Center. There, I had to turn off password protected sharing and turn on Public folder sharing. After a reboot,  RDP into the X220 Tablet worked again. This has been an on-again/off-again issue on this laptop for years. (A) it’s easily fixed locally, and (B) it seems to be a low-priority item for MS.

Finalley here’s a shout-out to Eddie Leonard (@DJ+EddieL). He told me the WU item was a known problem and would be fixed with the next build. He was spot-on, and I’m grateful.

Facebooklinkedin
Facebooklinkedin

Multiple Methods Clear Defender Threat History

First, an admission. I do occasionally use the CCleaner and the MiniTool Partition Wizard (MTPW) installers. Yes, I know they include “bundleware” elements that Defender flags as “potentially unwanted programs” (PUPs). In fact, until you clear the threat history and exclude that history from future scans, Defender keeps reporting them ad infinitum. Sigh. As I worked my way through a UGetFix.com article yesterday on my Lenovo X390 Yoga I learned multiple methods clear Defender threat history. In fact, when none of the article’s methods worked for me, a spin on one of them did the trick.

[Note] The lead-in graphic for this story shows a Defender warning for a “potentially unwanted application” (PUA) from another bundleware instance. That one comes from the Unlocker program (it’s always been a little dicey, which is why I provide a MajorGeeks download link). Use at your own risk.

Enumerating Multiple Methods Clear Defender Threat History

The UGetFix.com article is entitled “Windows Defender identifies the same threat repeatedly — how to fix?” It works readers through three separate methods:

  1. Delete the Service folder within the following Windows folder:
    C:\ProgramData\Microsoft\Windows Defender\Scans\History. This is where Defender keeps its logs and threat history info. There’s an alternate method based on Event Viewer described in the article as well to clear the history log.
  2. Prevent Defender from scanning the history file. This occurs in Manage Settings inside Virus & Threat Protection in Defender, under the Exclusions heading. By excluding the preceding folder specification, you stop Defender from repeating warnings based on its own history files.
  3. Clear Browser Caches: YMMV on this one, depending on the browsers you use. I’ll let you puzzle these efforts out for yourselves, from the help systems built into each browser.

As I said, none of the methods worked for me. What did work, was a variation on Item number 1 above. I was unable to delete the Service folder. It came back as “locked by Windows Defender.” What I was able to do, however, was to navigate within the Service folder and edit the history.log file using NotePad++ to delete its contents. I also found a series of two-digit-numbered folders with various history files inside (named 01, 02 and so forth) that I was able to delete (and did so).

After that maneuver, the annoying multiple repetitions of PUP warnings for the CCleaner (version 5.77) and MTPW (version 12.03) installers disappeared. I used Everything to check my systems and make sure the offending files were no longer present, too. It’s only the installers that include bundleware. Once deleted and flushed, they no longer pose any threat.

Concluding Unscientific Rantlet

It’s weird that Defender triggers PUA/PUP warnings from the contents of its own history file. Even when the files that legitimately trigger an alert on a Windows 10 PC are no longer present, the same alerts still trigger — repeatedly! My plea to the Defender development team is that they automatically exclude the history file from scans by default so as to further insulate users from this small but vexing gotcha.

Facebooklinkedin
Facebooklinkedin

Key Terms EKB 21h1 Reveal Next Win10 Release Coming Closer

I have to hand it to the team at Bleeping Computer, especially Lawrence Abrams. He’s done a neat and convincing bit of filesystem forensics. It shows that recent Beta Channel updates set the stage for the upcoming 21H1 Windows 10 release. In fact, he shows that key terms EKB 21h1 reveal next Win10 release coming closer to fruition. That inspired the File Explorer screencap for this story’s lead-in graphic.

Finding Key Terms EKB 21h1 Reveal Next Win10 Release Coming Closer

The string “21H1” (or “21h1” as it mostly appears in filenames) stands for the next upcoming Windows 10 release. EKB, as I learned, is the MS abbreviation for enablement package. This is a pre-staging technique for minor Windows 10 upgrades. It actually relies on updates installed prior to the official enablement of the “next upgrade” (21H1 in this case) that simply get turned on. And indeed, it’s the enablement package (EKB) that does the turning on bit.

The names of the files shown in the lead-in graphic reside in the
C:\Windows\System32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}
folder on Windows PCs running the Insider Preview Beta Channel release. To find these files, the Beta Channel image must be at Build 1904*.789 or higher. As it happens, I took the lead-in screencap on a PC running Build 19042.844

Terms of interest in the list involve:

  • Windows UpdateTargeting
  • Windows Product Data
  • EKB Package
  • EKB Wrapper Package

All of these terms identify current and upcoming versions of Windows 10, including the current version and build and its status, and the contents and handling of any current or upcoming enablement package (EKB). Most discussion I read about dates for 21H1 still suggest “May or June” as the GA date for this upcoming and minor Windows 10 feature upgrade. I see no reason to disagree with those assessments. And indeed Microsoft’s own 21H1 announcement post  doesn’t say much more than only minor changes to Windows 10 will show up when the release goes public.

We’ll just have to wait and see when 21H1 gets the nod from the Insider Team, and makes a public debut through Windows Update. Whenever that happens, though, it’s pretty clear that 21H2 is when the big changes for this year will hit Windows 10. Stay tuned!

 

 

Facebooklinkedin
Facebooklinkedin

Pondering Lenovo ThinkPad X1 Nano

It’s not often I get to step back from day-to-day work items and pause to think about something. I’ve had a Lenovo X1 ThinkPad Nano since Tuesday, February 23 (I wrote a First Look piece the next day). Since then, I’ve worked with that machine daily. I’ve even used it in place of my iPad Air for evening reading in bed. All this has me pondering Lenovo ThinkPad X1 Nano further. I want to position and present it properly to readers so they can decide if what it offers is what they want.  .  . and if they want to pay for it, too.

When Pondering Lenovo ThinkPad X1 Nano, Use Cases Rule

To justify the cost, one really needs strong use cases for a thin-and-light laptop. It weighs 381g more than my iPad (906 vs 525g). But it’s still comfortable on my lap. As a pretty serious touch typist, I actually prefer constant access to a keyboard. I do now wish, though, that Lenovo offered a touchscreen option for the X1 Nano for simple tablet-friendly activities like web surfing and reading e-books.

Over time, I’ve grown even more impressed with the X1 Nano’s performance and capability. It really does run on par with my older (2016) desktop PC. That’s true despite 32GB RAM and an i7-6700 on that PC vs. 16GB RAM and an i5-1130G7 on the X1 Nano. To me, it’s a telling illustration of how fast technology marches ahead. I didn’t expect an i5 to be able to go head-to-head with an i7 (even a 5-year-old model).

Blast from the Past…

The lead-in graphic for this story comes from Sergey Tkachenko’s WEI clone. He calls it the Winaero WEI Tool. For those who don’t remember — or who never knew — WEI stands for Windows Experience Index. It’s been around Windows since Vista came out in 2007. You can still run the equivalent functionality in Windows 10, in fact, with this command winsat formal. I like the Winaero tool because it presents the same look’n’feel as in Vista and 7.

What you see in that graphic is a rough-and-ready assessment of hardware components on the PC it’s run on. Those numbers show values from 8.9 (CPU, RAM) to  9.2 for the SSD and 9.9 for 3D business and gaming graphics. The only outlier is the desktop graphics — Iris Xe in this case — which come in at a relatively low 8.0 value (the primary reported value as well, because WEI uses the lowest number to desigate overall capability).

FWIW, the only area in which my older desktop beats the X1 Nano is on the desktop graphics category (it’s got an NVIDIA GTX 1070 card). All the other metrics are within 0.1 of one another, so neither machine obviously beats the other by any kind of margin.

Desktop graphics performance notwithstanding, I’ve come to appreciate the X1 Nano quite a bit in the 10 days I’ve had it in hand. It runs acceptably when surfing the Web, using Outlook or Word (my two most frequently used and important desktop apps). To be honest, I am seriously considering buying one of these with my own money. I can’t give a laptop a better endorsement than that.

What’s the Ideal Package?

If you, like me, decide to buy the ThinkPad X1 Nano, I recommend buying the i7 model with the 16 GB RAM configuration. Because the SSD is the only user serviceable part (RAM is soldered), get the 256 GB SSD, which you’ll want to replace when something like the Sabrent 1TB Rocket 4 becomes available in a 2242 form factor.

If you absolutely have to buy something now, the Sabrent 1 TB Rocket is available in a 2242 package. While it’s a bit slower than the Rocket 4, it’s faster than the Samsung OEM parts Lenovo uses in the Nano. You’ll also want to buy a Thunderbolt/USB-C dock, because the Nano is pretty short on ports (2xThunderbolt + 1xheadphone is all you get). As a backup fiend, I’ve already got a 5TB 2.5″ drive enclosure hooked up for extra storage and Macrium Reflect’s use.

Facebooklinkedin
Facebooklinkedin

Hybrid Workplace According to Jared Spataro

MS Corporate VP Jared Spataro delivered one of the more entertaining sessions at Ignite 2021 I’ve seen. That 15-minute session is short, sweet and entertaining while conveying big and important messages. Indeed, I’m recommending everybody watch this. For labeling purposes, I call it the “hybrid workplace according to Jared Spataro.” But of course, it’s really “how Microsoft technologies enable hybrid work.”

Details from the Hybrid Workplace According to Jared Spataro

Over 80% of managers expect more flexible WFH policies post-pandemic. At the same time,  more than 70% of employees should benefit from such policies themselves. The traditional model for work and workplaces is changing significantly and permanently.

My favorite moment was when he switched from PC to phone call in a teams conference with no noticeable sign of switchover (1:16). In fact, I was stunned.

Spataro recited interesting factoids, too.  He said Teams grew to 115 M daily active users. He also observed Office 365 users generated “over 30 B collaboration minutes in a single day.” He demo’d Teams channel-sharing outside organization boundaries, which is also pretty cool.

Another nice quote: “Office buildings need to be digitially connected and built for ad-hoc natural collaboration with people in the office, working from home, or connecting even from the factory floor.” Indeed, that’s something I’d like to see happen sooner, not later.

Digital whiteboards appear as creativity enablers. They bring in-room meeting participants and remote workers together (through their PCs). Sometime soon, mobile devices will enter the mix, and let users on any device share their displays with others. Meetings will occur in the context of virtual, flexible meeting spaces. MS calls those spaces immersive, fluid, dynamic, content-forward and designed for sharing and brainstorming. Looks pretty cool, actually.

The Future’s So Bright…

A certain amount of breathless hype is always good for the compost heap. But the story that Mr. Spataro and MS are telling (and selling) is actually darned compelling. I, for one, hope to see it come to life in the near future. For once, I’m seeing a future that I could get into, and even enjoy. Check it out!

 

Facebooklinkedin
Facebooklinkedin

New Windows Admin Center Makes Ignite Debut

The always-popular Windows Server management tool gets an update to version 2103 just in time for Ignite 2021. In fact, you can download yourself a new copy right away from Akamai: https://aka.ms/downloadWAC. But why should you care that a new Windows Admin Center makes Ignite debut? Keep reading, and I’ll give some reasons…

Who Cares if New Windows Admin Center Makes Ignite Debut

If you work in or around Windows environments as an admin, you should! Happily, the list of updates and enhancements to WAC (Windows Admin Center) underscores this:

  • The tool now supports IoT Edge for Linux on Windows.
  • WAC is available in preview as an Azure-based portal application.
  • Indeed, the tool itself now handles in-app updates, so it can update itself automatically, and do likewise add-ins and third-party extensions
  • Gateway proxy support is now enabled in the tool’s Proxy tab
  • Privacy settings are now easily accessible in the Diagnostic & Feedback tab (users can limit what is sent to MS)
  • Different tools within WAC can appear in individual pop-out windows.
  • Events have been substantially reworked and shows that MS is spending some development cycles on the Event Viewer. (Currently, an incomplete, preview version is available: curious users must enable/disable this facility using a UI toggle in WAC).
  • The VM tool is expanded and enhanced to boost integration services, provide editable columns and groups, and gets a new ability to edit virtual switches when making VM moves.
  • The Azure Stack HCI gets some updates, too.  Most notably,  for cluster deployment and for OEM snap-ins to let IT pros deploy and use 3rd-party extensions more quickly and easily.
  • Partners are jumping on the WAC bandwagon. These include Dell EMC OpenManager (v2.0), Lenovo XClarity Integrator, and Data ON Must Pro, among others. Indeed, this promises to be an active aftermarket.

In other words, there’s a lot of new stuff showing up in WAC. Those who already use the tool will find a lot to like. Those just getting to know the tool will find a lot to learn and understand.

WAC Resources

Video: What’s New in WAC 2103 (from Ignite)
Announcement: WAC 2103 Now Generally Available (the announcement is laden with links to more video, documentation, and training materials).
MS Docs: Windows Admin Center Overview

Actually, there’s plenty of helpful stuff on WAC online for admins. To be sure, it’s an embarrassment of riches. Still need convincing? Run this Google Search: site:docs.microsoft.com Windows Admin Center.

Facebooklinkedin
Facebooklinkedin

Author, Editor, Expert Witness