Upgrade the memory of your 2018 Mac mini up to 64GB
Upgrade the memory of your 2020 iMac up to 128GB

Kudos to Apple for its Mail Privacy Protection Feature

re: security

Apple’s Private Relay feature is a good idea

It is complimented by the new Mail Privacy Protection feature of Apple Mail (weh. Good work, Apple! Give us more.

Apple.com: Mail Privacy Protection

Emails you receive may include remote content that allows the email’s sender to learn information about you. When you open an email, information about your Mail activity can be collected by the sender without transparency and an ability to control what information is shared. Email senders may learn when and how many times you opened their email, whether you forwarded the email, your Internet Protocol (IP) address, and other data that can be used to build a profile of your behavior and learn your location.


Apple Mail in macOS: Protect Mail Activity
Apple Mail in iOS: Protect Mail Activity


Protect Mail Activity helps protect your privacy by preventing email senders, including Apple, from learning information about your Mail activity. When you receive an email in the Mail app, rather than downloading remote content when you open an email, Protect Mail Activity downloads remote content in the background by default — regardless of whether you engage with the email. Apple does not learn any information about the content.

In addition, Protect Mail Activity routes all remote content downloaded by Mail through two separate relays operated by different entities. The first knows your IP address, but not the remote Mail content you receive. The second knows the remote Mail content you receive, but not your IP address, instead providing a generalized identity to the destination. This way, no single entity has the information to identify both you and the remote Mail content you receive. Senders can’t use your IP address as a unique identifier to connect your activity across websites or apps to build a profile about you.

You can disable Protect Mail Activity at any time in iOS and iPadOS by going to Settings > Mail > Privacy Protection, then tapping to turn off Protect Mail Activity. On Mac, go to Mail > Preferences > Privacy, then deselect Protect Mail Activity.

If you choose to disable Protect Mail Activity, the Hide IP Address feature will still mask your IP address using the same two-separate-internet-relays design. You can disable Hide IP Address at any time in iOS and iPadOS by going to Settings > Mail > Privacy Protection, then tapping to turn off Hide IP Address. On Mac, go to Mail > Preferences > Privacy, then deselect Hide IP Address.

By using these features, you agree and consent to Apple’s and its subsidiaries’ and agents’ transmission, collection, maintenance, processing, and use of this information as described above.

At all times, information collected by Apple will be treated in accordance with Apple’s Privacy Policy, which can be found at www.apple.com/privacy.

OWC Thunderblade Thunderbolt SSD

Blazing fast, up to 32TB.


√ No more slow and noisy hard drives!

Kudos to Apple for its New “Private Relay” Feature

re: security

I’m not sure it it really helps me, but I like the idea of more privacy.

Apple is also doing smart stuff in Apple Mail, namely the Mail Privacy Protection feature.

Apple.com: About iCloud Private Relay

Normally when you browse the web, information contained in your web traffic, such as your DNS records and IP address, can be seen by your network provider and the websites you visit. This information could be used to determine your identity and build a profile of your location and browsing history over time.

iCloud Private Relay is designed to protect your privacy by ensuring that when you browse the web in Safari, no single party—not even Apple—can see both who you are and what sites you're visiting.

When Private Relay is enabled, your requests are sent through two separate, secure internet relays. Your IP address is visible to your network provider and to the first relay, which is operated by Apple. Your DNS records are encrypted, so neither party can see the address of the website you’re trying to visit. The second relay, which is operated by a third-party content provider, generates a temporary IP address, decrypts the name of the website you requested and connects you to the site. All of this is done using the latest internet standards to maintain a high-performance browsing experience while protecting your privacy.

See also article at EclecticLight.com: Inside iCloud+ Private Relay: can it be trusted?

Memory cost for Apple iMac 5K: Apple vs OWC
Pricing as of 2022-01-10
View all handpicked deals...

FUJIFILM GFX 50R Medium Format Mirrorless Camera
$4499 $2999
SAVE $1500

Huge Price Savings for 128GB Memory for iMac 5K and Other Macs

re: recommended Macs for photographers and videographers
re: 2020 iMac 5K: Recommended Models and Accessories.

The 2020 iMac 5K accepts the same memory modules as the 2019 iMac 5K.

Both support 128GB memory. Certain other Macs like Intel-based Mac mini also take the same memory.

  1. Buy your 2020 iMac 5K or 2019 iMac 5K with 8GB memory.
  2. Buy 64GB or 128GB OWC memory for massive savings.

No brainer! Save $2000 on 128GB.

CLICK TO VIEW: Recommended Memory, Storage,etc

CLICK TO VIEW: Recommended iMac 5K (buy OWC memory separately)

Memory cost for Apple iMac 5K: Apple vs OWC
Pricing as of 2022-01-10

Up to 1527MB/s sustained performance

REVIEWED: 2020 iMac 5K vs 2019 iMac 5K vs 2019 Mac Pro

re: recommended Macs for photographers and videographers
re: 2020 iMac 5K: Recommended Models and Accessories.

The 2020 iMac 5K will be the last Intel-based Mac that I ever review, so far as I can tell. I expect that Apple will release at least a 10-core if not 20-core Apple Silicon iMac 5K/6K in 2022.

2020 iMac 5K


Vew current Mac wishlist and all current OWC wishlists.

My 16-page review of the 2020 iMac 5K evaluates it for its real-world value versus two existing Macs that I already own, the 2019 iMac 5K (my travel Mac), and the 2019 Mac Pro (my desktop when at home).

This review is heavily focused on photographers and their use cases.

REVIEWED: Apple 2020 iMac 5K (October 2020)

Unsure of what to get? Consult with Lloyd.

Please buy your gear at B&H Photo and OWC/MacSales.com using any link from this site.

CLICK TO VIEW: Recommended Memory, Storage,etc

CLICK TO VIEW: Recommended iMac 5K (buy OWC memory separately)

Up to 1527MB/s sustained performance

Upgraded to macOS Monterey — an Unexpectedly Good Result — So Far

re: Apple Core Rot

I upgraded my 2019 Mac Pro to macOS Monterey last night. I feared the worst might happen, but having tried it on a temporarily-purchased-to-be-returned 2020 iMac 5K and finding it worked pretty well, I decided to give it a try.

And wonder of wonders! Apple finally fixed one longstanding headache: the failure to mount volumes specified in synthetic.conf until logging in (a disaster when running a server). Now my local web server starts up just fine after a reboot. Hooray! Actually, I got this wrong somehow—still broken.

And a 2nd bonus: Microsoft Excel 2016 still runs fine, so I can keep using that without having to fork over $100 a year.

It’s not all good—I keep getting a “Photos Library.photoslibrary” zero-byte file appearing in my Pictures folder—very annoying since I don’t use Photos.app and it cannot be removed. Some daemon process I guess. I also see badly blurred text in Spotlight search—weird.

So far, I’ve not run into significant new bugs, which is unprecedented in 5-6 years. Maybe I’ll find some more issues, but so far it has been OK after a day of running Photoshop.

I’m like most other people: I don’t care too much about other people’s bugs, just my own! So I have little doubt there are plenty of bugs, but if Monterey deals me a good hand this time finally, then great.

Don H writes:

It’s good to hear that you’ve had some success with Monterey - it’s about f’n time we had a decent release. But it might be too soon to say; Howard Oakley is observing problems with Time Machine, particularly backing up folders with lots of small files. Beware of this situation if you encounter itself.

That aside, in my own experience I have noticed that the more recent stable Mac OS releases that I gravitate towards happen to start with ‘M’. Way back when Snow Leopard was the gold standard of a solid ‘maintenance’ release; not a lot of glitzy new features but the existing ones got more refined. Then Apple released the dreadful Lion (which was supposed to be the pinnacle of the ‘cat’ versions), followed by the cleanup Mountain Lion, but it wasn’t until Mavericks that things seemed to really gel again.

I pretty much skipped over the next four (I call them the ‘mountain' releases), partly from reading your experiences with them, but then the Mavericks version of Safari stopped working at a lot of web sites and other software pressures forced an upgrade. Mojave turned out to be pretty decent once it settled down (I’m still running it on my main machine). But once again Apple broke what didn’t need fixing and gave us the ‘coastal’ releases, which does include Monterey, but I feel like that one might be another plateau to rest upon.

(I also dread what Apple might have up their sleeves next, given the ever-tighter coupling of iOS and macOS. Yet more over-simplification of the user interface until all utility is erased in a wave of winking emojis?)

So for me the big jumps have been Mavericks > Mojave > Monterey (potentially). When can I expect another stable release - Marin? Malibu? Mecca?

MPG: macOS Merced, around XMAS next year?

I did see see some serious user input problems on the 2020 iMac 5K (nothing but beeps!), but they went away after quitting restarting apps.

Shammeer M writes:

Very good chance the next macOS will be macOS Mammoth: Apple renews ‘Mammoth’ trademark, hinting at potential name for macOS 13 - 9to5Mac

MPG: I vote for Merced ("mercy") as in Merced River. But things are already mammoth in size (12+GB for an OS upgrade... wow).

Up to 1527MB/s sustained performance

IntegrityChecker Java (icj) Version 2.02 Now Available

re: IntegrityChecker Java
re:data integrity
re: Validating Data Transfer/Copy Before Deleting the Source/Original Data: diglloydTools IntegrityChecker
re: Detecting Corruption / Validating Data Integrity Over Time and Across Drives and Backup/Restore
re: Reader Question on diglloydTools IntegrityChecker: “verify terabytes of content back and forth between the cloud and other local RAID drives I have”
re: Apple Core Rot: macOS Finder File Copying: Fails to Replace "dot files" When Replacing a folder = DATA LOSS
re: Detecting Data Corruption Caused by Bit Rot or Bad Drives or Software Bugs with diglloydTools IntegrityChecker

diglloydTools IntegrityChecker Java version 2.0 runs on any computer with Java—Mac, Windows, Linux, etc.

Buy diglloydTools

More about IntegrityChecker and why every professional should be using it.

IntegrityChecker Java (icj) version 2.0.2

License and download page...

IntegrityChecker Java version 2.0.2 is now available for download. This release is a minor update.

  • 2022-01-02 Updated installJava.sh to install JDK 17.0.1, including choosing the Intel or Apple Silicon variant automatically.
  • 2022-01-01 Changed the 'sha' command to test hashing speed for a variety of thread counts, emitting a summary table when done. Can be used to characterize performance on different machines and/or tune performance expectations.
  • 2021-12-20 Added SHOW_RECENT_THROUGHPUT flag, which governs whether to show throughput over the past 5000 I/O requests, typically 3-5 seconds on fast SSD.
  • 2021-10-26 Changed the purge code (if invoked with 'sudo') to purge *at least* every N seconds rather than waiting N seconds after the prior purge. Better steady-state purging results. Added milliseconds to the "P" suffix when purges occur.


See the online help for IntegrityChecker java.

If you need support, please copy/paste the text from the Terminal window—don’t send screen shots as they are very large and frequently contain too little information.

More about IntegrityChecker and why every professional should be using it.


For macOS users: run the install-icj.sh script. This will install icj and optionally also install Java. Please 'cd' to the directory containing the script first.

Or follow these instructions drag-n-drop instructions:

1. Open a Terminal window
2. Type "cd " (include the space after cd)
3. Drag the install folder to Terminal. It should now look something like this:
cd /Users/lloyd/Desktop/out/2022-0102-icj2_0_2
4. Press the RETURN key.
5. Enter the following, then press the RETURN key:
6. Respond to the install questions, etc.

Installing on macOS — security permissions 

For macOS Catalina, macOS Big Sur, macOS Monterey, the icj installer will fail unless Terminal has full disk access. So first give Terminal full disk access, as shown here:

How to give Terminal full disk access

After Java is installed, Java must ALSO be given full disk access. The 'java' binary application will be found here after installation:


Up to 1527MB/s sustained performance

IntegrityChecker Java (icj): Suppressing Innocuous HASHES_MATCH_DATE_CHANGED Warnings

re: IntegrityChecker Java
re: data integrity

Reader Tony V writes:

Would it be possible to configure icj to not inform about the change of dates ?

If I read the documentation correctly, it appears that I can only ignore a bundle formed of 'change of date' 'change of size' 'change of date+change of size' ... but I would basically like to ignore only 'change of date' for * (all files).

For example:

/Volumes/NO NAME/1.mp3 HASHES_MATCH_DATE_CHANGED stored "2022-01-02 17:01:25.360" now "2022-01-02 17:01:24.000" GMT-0 /Volumes/NO NAME/2.mp3 HASHES_MATCH_DATE_CHANGED stored "2022-01-02 17:01:31.950" now "2022-01-02 17:01:30.000" GMT-0

MPG: the warnings stem from the use of the FAT32 file system, which cannot capture dates the same way as macOS file system, hence the data change warnings. Other metadata is also lost by backing up to FAT32; in general backing macOS files up to a non-macOS file system is not an ideal solution (but it also won’t matter for most types of files).

One way to deal with the output is to remove strip-out the unwanted messages via grep:

icj verify ... | grep -v HASHES_MATCH_DATE_CHANGED

Example for Tony V

There is no global flag for suppressing these innocuous messages everywhere.

However, the [output.suppressInnocuousChanges] section of ~/.icj_prefs_customized preferences file can do so, although it also suppresses other innocuous messages (not just HASHES_MATCH_DATE_CHANGED).

The line shown in blue will suppress all such messages on the volume "NO NAME". In theory one could suppress the message on all volumes by using "/Volumes/**".

# Paths for folders or files for which innocuous change messages are suppressed.
# Auto-globbing: NO
# output of verbose or debug disables this feature.
/Volumes/NO NAME/**

Another example

Here is a more complete example, one I use myself.

# Paths for folders or files for which innocuous change messages are suppressed.
# Auto-globbing: NO
# output of verbose or debug disables this feature.
# noisy photo libraries
# suppress huge numbers of nuisance files caused by  Apple crapware 
# maven: suppress messages for build folders and repository changes
Save Big $$$$ on Memory for 2019 Mac Pro

Up to 65% better pricing than Apple

Lloyd recommends 32GB RDIMM modules for most users (more expensive LRDIMMS are for 512GB or more).

IntegrityChecker Java (icj): How to Eliminate the WARN_IO_STALL Messages

re: IntegrityChecker Java
re: data integrity

The macOS file system has a weird bug for some years now (one of many Apple Core Rot problems).

On slow drives (hard drives and similar), macOS barfs with a deep I/O queue as used by IntegrityChecker Java (many outstanding I/O requests, up to 96 at a time). This works great on SSDs to improve throughput, but something internal to macOS cannot handle it on slow drives such as hard drives.

Locking up the I/O queue

Symptoms: at regular intervals, macOS locks up all I/O activity for many seconds (10 to 30 seconds). This lockup is not java-specific since all other I/O requests in other applications also stall.

Since icj queues up many requests at a time, every one of those I/O request stalls, and you’ll see a slew of warnings, something like this:

WARN_IO_STALL: delay of 11634ms buf24-33554432 started 1641220236703 now 1641220248337. This delay is a behavioral problem with macOS.
WARN_IO_STALL: delay of 11834ms buf30-33554432 started 1641220236741 now 1641220248575. This delay is a behavioral problem with macOS.
WARN_IO_STALL: delay of 11925ms buf31-33554432 started 1641220236742 now 1641220248667. This delay is a behavioral problem with macOS.
WARN_IO_STALL: delay of 11883ms buf5-33554432 started 1641220236902 now 1641220248785. This delay is a behavioral problem with macOS.
WARN_IO_STALL: delay of 12383ms buf8-33554432 started 1641220237092 now 1641220249475. This delay is a behavioral problem with macOS.

Workaround #1 — tell icj to optimize for hard drives

When operating on slow drives (hard drives and similar), cut the threads way down by telling icj to optimize for slow drives using "--optimize HDD" , like this (for verify):

icj verify --optimize HDD

or alternately one can tailor threads and buffers explicitly:

icj verify --threads 2 --large-buffers 4 --small-buffers 4

Edit default settings

This option is not recommended because it affects operations on all drives, even SSDs, cutting performance drastically on fast SSDs. But it could be useful in some scenarios.

Edit the icj file using a plain-text editor and configure these three things to suit:

export NUM_THREADS=2

Upgrade the memory of your 2020 iMac up to 128GB

SHA-512 Hashing Speed in Java: 2019 Mac Pro, 2019 iMac 5K, 2020 iMac 5K, 2021 MacBook Pro M1 Max

re: Apple M1 Macs: Not a Mature Solution for General Usage eg Java Virtual Machine

The Apple MacBook Pro M1 Max is apaprently a speed demon so long as the software gets it right. But since B&H Photo has been as yet unable to deliver a test unit, I’ve not been able to see just how well it performs. Figures below from a remote tester.

But at least one area of functionality is not well supported: hashing speed in Java, not even with a native JDK.

I tested hashing speed on 4 top-end Macs ("icj sha")—pure memory hashing, no I/O involved.

  • The 28-core 2019 Mac Pro kicks butt versus the other machines, as it ought to. But neither it nor the other Mac scale linearly with threads, which is probably a memory bandwidth throttling effect.
  • The 2020 iMac 5K performs marginally better than the 2019 iMac 5K using 8 cores, and its 10 cores offer quite a bit higher throughput vs 8 cores. But in real-world tests with IntegrityChecker Java, it is actually no faster, apparently due to slower read speeds from its SSD.
  • The MacBook Pro M1 Max is pitiably slow at the SHA-512 hash (and all hash functions)—slower than even the 2015 MacBook Pro 4-core (MBP M1 Max needs 6 cores to slightly beat 4 cores!). It’s unclear if this is due to lack of native support for hashing, or whether (unlike Intel), support for hashing is just poor on the M1 CPU. Below, the red line is the MacBook Pro M1 Max. Its two efficiency cores have only ~12% to add over the eight performance cores.

The foregoing is not a suggestion that the MacBook Pro M1 Max is slower than these Macs in general (quite the reverse). But it shows that in at least one context it can be a grossly inferior performer.

SHA-512 Hashing Throughput vs Thread Count; 2019 Mac Pro, 2019 iMac 5K, 2020 iMac 5K, 2021 MacBook Pro M1 Max
SHA-512 Hashing Throughput vs Thread Count
2019 Mac Pro, 2019 iMac 5K, 2020 iMac 5K, 2021 MacBook Pro M1 Max

Upgrade the memory of your 2020 iMac up to 128GB

MacOS Big Sur Dec 14 Update: Reboots 2019 Mac Pro Continually

re: Apple Core Rot

Apple software updates keep getting scarier (inscrutable progress, multiple reboots), and taking long and longer, even for minor updates.

So far my 2019 Mac Pro has rebooted four or five times. I don’t yet know if the update has destroyed my boot drive, or whether it will succeed. It’s doing something now yet again (“8 minutes remaining”). Another reboot and maybe it will be OK?

UPDATE: it ultimately worked.

Surely Apple indicate with each reboot that it’s not just in an endless bugfest loop.

I would pay to be able to run macOS Mojave on my Mac Pro instead of macOS Big Sur—, since every day I still deal with bugs that were there when it was first released.

Up to 1527MB/s sustained performance

Apple M1 Macs: Not a Mature Solution for General Usage eg Java Virtual Machine

re: Java for Apple M1 Macs
re: SHA-512 Hashing Speed in Java: 2019 Mac Pro, 2019 iMac 5K, 2020 iMac 5K, 2021 MacBook Pro M1 Max

Those using email and a web browser and a few apps... all good, so it seems.

But Apple M1 Macs are not a mature solution for some uses.

Take Java, used by IntegrityChecker Java and Zerene Stacker and certain other specialty software. While there is a native Java virtual machine for Apple ARM (M1, M1 Max, M1 Pro) machines, that does not mean it has robust support for optimal performance.

It’s not terrible; IntegrityChecker Java can still do 2.6GB/sec on an 8+2 core Apple MacBook Pro M1 Max. But that compares to 3.3GB/sec on my 2019 iMac 5K 8-core.

Reader Adam S did some nice research on just how much native-code support there is in the ARM Java for M1 Macs.

Poor Java native-code support for math libraries for M1 Mac

openjdk % find . -name macroAssembler_arm\*.cpp
./jdk/src/hotspot/cpu/arm/macroAssembler_arm.cpp <=== single source file vs 14 for Intel

openjdk % find . -name macroAssembler_x86\*.cpp

Poor Java native-code support for SHA-512 for M1 Mac

Intel CPUs have strong support for the SHA-512 hash; see Fast SHA512 Implementations ® Architecture Processors.

Feels like the ARM JDK is just immature.

I grepped the OpenJDK source for the ARM SHA-512 update instruction. There are some hits, but I’m not sure what they mean yet.

openjdk % git clone https://git.openjdk.java.net/jdk/
openjdk % find . -type f -exec grep -iH SHA512H "{}" \;
./jdk/test/hotspot/gtest/aarch64/asmtest.out.h:    __ sha512h(v14, __ T2D, v3, v25);                  //       sha512h         q14, q3, v25.2D
./jdk/test/hotspot/gtest/aarch64/asmtest.out.h:    __ sha512h2(v8, __ T2D, v27, v21);                 //       sha512h2                q8, q27, v21.2D
./jdk/test/hotspot/gtest/aarch64/aarch64-asmtest.py:generate(SHA512SIMDOp, ["sha512h", "sha512h2", "sha512su0", "sha512su1"])
./jdk/src/hotspot/cpu/aarch64/assembler_aarch64.hpp:  INSN(sha512h,   0b100000);
./jdk/src/hotspot/cpu/aarch64/assembler_aarch64.hpp:  INSN(sha512h2,  0b100001);
./jdk/src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp:      __ sha512h(v##i3, __ T2D, v6, v7);                                             \
./jdk/src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp:      __ sha512h2(v##i3, __ T2D, v##i1, v##i0);                                      \

A wild guess is that they’re testing that you can assemble SHA512H (from C?) and that an SHA512H actually comes out. That’s different than calling the instruction in JDK SHA code, obviously. Intel SHA instructions get a lot more love:

adam@Adams-MacBook-Pro openjdk % find . -type f -exec grep -iH sha512_sse4 "{}" \;
adam@Adams-MacBook-Pro openjdk % find . -type f -exec grep -iH sha512_avx "{}" \;
./jdk/src/hotspot/cpu/x86/stubGenerator_x86_64.cpp:    __ sha512_AVX2(msg, state0, state1, msgtmp0, msgtmp1, msgtmp2, msgtmp3, msgtmp4,
./jdk/src/hotspot/cpu/x86/stubRoutines_x86.cpp:// used in MacroAssembler::sha512_AVX2
./jdk/src/hotspot/cpu/x86/macroAssembler_x86.hpp:  void sha512_AVX2_one_round_compute(Register old_h, Register a, Register b, Register c, Register d,
./jdk/src/hotspot/cpu/x86/macroAssembler_x86.hpp:  void sha512_AVX2_one_round_and_schedule(XMMRegister xmm4, XMMRegister xmm5, XMMRegister xmm6, XMMRegister xmm7,
./jdk/src/hotspot/cpu/x86/macroAssembler_x86.hpp:  void sha512_AVX2(XMMRegister msg, XMMRegister state0, XMMRegister state1, XMMRegister msgtmp0,
./jdk/src/hotspot/cpu/x86/macroAssembler_x86_sha.cpp:void MacroAssembler::sha512_AVX2_one_round_compute(Register  old_h, Register a, Register b, Register c,
./jdk/src/hotspot/cpu/x86/macroAssembler_x86_sha.cpp:void MacroAssembler::sha512_AVX2_one_round_and_schedule(
./jdk/src/hotspot/cpu/x86/macroAssembler_x86_sha.cpp:void MacroAssembler::sha512_AVX2(XMMRegister msg, XMMRegister state0, XMMRegister state1, XMMRegister msgtmp0,
./jdk/src/hotspot/cpu/x86/macroAssembler_x86_sha.cpp:    //Schedule 64 input dwords, by calling sha512_AVX2_one_round_and_schedule
./jdk/src/hotspot/cpu/x86/macroAssembler_x86_sha.cpp:    sha512_AVX2_one_round_and_schedule(xmm4, xmm5, xmm6, xmm7, a, b, c, d, e, f, g, h, 0);
./jdk/src/hotspot/cpu/x86/macroAssembler_x86_sha.cpp:    sha512_AVX2_one_round_and_schedule(xmm4, xmm5, xmm6, xmm7, h, a, b, c, d, e, f, g, 1);
./jdk/src/hotspot/cpu/x86/macroAssembler_x86_sha.cpp:    sha512_AVX2_one_round_and_schedule(xmm4, xmm5, xmm6, xmm7, g, h, a, b, c, d, e, f, 2);
./jdk/src/hotspot/cpu/x86/macroAssembler_x86_sha.cpp:    sha512_AVX2_one_round_and_schedule(xmm4, xmm5, xmm6, xmm7, f, g, h, a, b, c, d, e, 3);
./jdk/src/hotspot/cpu/x86/macroAssembler_x86_sha.cpp:    sha512_AVX2_one_round_and_schedule(xmm5, xmm6, xmm7, xmm4, e, f, g, h, a, b, c, d, 0);
./jdk/src/hotspot/cpu/x86/macroAssembler_x86_sha.cpp:    sha512_AVX2_one_round_and_schedule(xmm5, xmm6, xmm7, xmm4, d, e, f, g, h, a, b, c, 1);
./jdk/src/hotspot/cpu/x86/macroAssembler_x86_sha.cpp:    sha512_AVX2_one_round_and_schedule(xmm5, xmm6, xmm7, xmm4, c, d, e, f, g, h, a, b, 2);
./jdk/src/hotspot/cpu/x86/macroAssembler_x86_sha.cpp:    sha512_AVX2_one_round_and_schedule(xmm5, xmm6, xmm7, xmm4, b, c, d, e, f, g, h, a, 3);
./jdk/src/hotspot/cpu/x86/macroAssembler_x86_sha.cpp:    sha512_AVX2_one_round_and_schedule(xmm6, xmm7, xmm4, xmm5, a, b, c, d, e, f, g, h, 0);
./jdk/src/hotspot/cpu/x86/macroAssembler_x86_sha.cpp:    sha512_AVX2_one_round_and_schedule(xmm6, xmm7, xmm4, xmm5, h, a, b, c, d, e, f, g, 1);
./jdk/src/hotspot/cpu/x86/macroAssembler_x86_sha.cpp:    sha512_AVX2_one_round_and_schedule(xmm6, xmm7, xmm4, xmm5, g, h, a, b, c, d, e, f, 2);
./jdk/src/hotspot/cpu/x86/macroAssembler_x86_sha.cpp:    sha512_AVX2_one_round_and_schedule(xmm6, xmm7, xmm4, xmm5, f, g, h, a, b, c, d, e, 3);
./jdk/src/hotspot/cpu/x86/macroAssembler_x86_sha.cpp:    sha512_AVX2_one_round_and_schedule(xmm7, xmm4, xmm5, xmm6, e, f, g, h, a, b, c, d, 0);
./jdk/src/hotspot/cpu/x86/macroAssembler_x86_sha.cpp:    sha512_AVX2_one_round_and_schedule(xmm7, xmm4, xmm5, xmm6, d, e, f, g, h, a, b, c, 1);
./jdk/src/hotspot/cpu/x86/macroAssembler_x86_sha.cpp:    sha512_AVX2_one_round_and_schedule(xmm7, xmm4, xmm5, xmm6, c, d, e, f, g, h, a, b, 2);
./jdk/src/hotspot/cpu/x86/macroAssembler_x86_sha.cpp:    sha512_AVX2_one_round_and_schedule(xmm7, xmm4, xmm5, xmm6, b, c, d, e, f, g, h, a, 3);
./jdk/src/hotspot/cpu/x86/macroAssembler_x86_sha.cpp:    sha512_AVX2_one_round_compute(a, a, b, c, d, e, f, g, h, 0);
./jdk/src/hotspot/cpu/x86/macroAssembler_x86_sha.cpp:    sha512_AVX2_one_round_compute(h, h, a, b, c, d, e, f, g, 1);
./jdk/src/hotspot/cpu/x86/macroAssembler_x86_sha.cpp:    sha512_AVX2_one_round_compute(g, g, h, a, b, c, d, e, f, 2);
./jdk/src/hotspot/cpu/x86/macroAssembler_x86_sha.cpp:    sha512_AVX2_one_round_compute(f, f, g, h, a, b, c, d, e, 3);
./jdk/src/hotspot/cpu/x86/macroAssembler_x86_sha.cpp:    sha512_AVX2_one_round_compute(e, e, f, g, h, a, b, c, d, 0);
./jdk/src/hotspot/cpu/x86/macroAssembler_x86_sha.cpp:    sha512_AVX2_one_round_compute(d, d, e, f, g, h, a, b, c, 1);
./jdk/src/hotspot/cpu/x86/macroAssembler_x86_sha.cpp:    sha512_AVX2_one_round_compute(c, c, d, e, f, g, h, a, b, 2);
./jdk/src/hotspot/cpu/x86/macroAssembler_x86_sha.cpp:    sha512_AVX2_one_round_compute(b, b, c, d, e, f, g, h, a, 3);
adam@Adams-MacBook-Pro openjdk % find . -type f -exec grep -iH sha512_avx2_rorx "{}" \;

OWC Envoy Pro Elektron

Ultra-high performance across entire capacity, outperforms the competition.

Tiny, bus-powered, rugged, compact!

√ No more slow and noisy hard drives!

USA Taxes: Section 179 for Small Business Owners (Accelerated Depreciation): Deduct if In-Service by End Of Year

This site is not a tax adviser, this is FYI ONLY. Consult your own tax adviser. See also Section 179.org.

For a small business owner, the US federal tax code contains a benefit: Section 179 of the internal revenue code. Section 179 at a Glance for 2020, as per Section179.org:

  • 2020 Deduction Limit = $1,040,000
  • 2020 Spending Cap on equipment purchases = $2,620,000
  • Bonus Depreciation: 100% for 2021

In essence, you can write off (fully deduct) depreciable assets acquired and put into service in 2021 as expenses (no depreciation schedule).

See also: Apple MacBook Pro M1 Pro/Max: Hard to Come By, but Some are In Stock.

Any small business that needs a new computer, office gear, camera, or any normally depreciable asset might consider making those purchases and putting them into service by Dec 31.

Need help deciding on a computing or photographic upgrade and/or new system. Lloyd offers consulting.

See my OWC / MacSales.com Wishlists and B&H Photo wishlists.

Up to 1527MB/s sustained performance

Java for Apple M1 Macs

re: Apple M1 Macs: Not a Mature Solution for General Usage

I hope to have an Apple MacBook Pro M1 Max soon for testing.

Meanwhile, IntegrityChecker Java runs with the Intel-based (non-native) JVM at high speed, so you don’t have to to go get an Apple ARM/Apple M1 native JVM—just run the installer and it will work fine. I’ll automate the installer to use the M1-native JVM just as soon as I get an M1 Mac.va, and while it should work with the Intel Java/JDK, a native version is of course much preferred.

There appear to be two primary Apple ARM (M1) JDKs available today.

Open JDK 17 for Apple M1 Macs

Open JDK 17 is the latest release of Java. Download "macOS / AArch64" version. OpenJDK is what IntegrityChecker Java has long used on Intel Macs.

For the security conscious, check the download checksum of the downloaded "tar.gz" file against the also-provided sha256 value using "shasum -a 256" in Terminal.

diglloydMP:down lloyd$ shasum -a 256 ~/Downloads/openjdk-17.0.1_macos-aarch64_bin.tar.gz
45acad5647960ecde83dc1fb6dda72e5e274798660fa9acff0fb9cc8a37b5794 openjdk-17.0.1_macos-aarch64_bin.tar.gz

Azul for Apple M1 Macs

Java 17 by Azul is available in DMG, ZIP, or TAR.GZ forms. It doesn’t matter which.

No experience with this offering but reports seems solid.

Up to 1527MB/s sustained performance

Why Use IntegrityChecker Java for Data Integrity?

re: How to Purge the File System Disk Cache: 'sudo purge' in Terminal.app
re: data integrity
re: IntegrityChecker Java

Consult with Lloyd on your photo or video workstation, backup and data integrity, etc.

How can you know that your data on your SSD/hard drive/optical disk/network/etc is still good, today or a year or 10 years from now?

Whether from bit rot or software bugs or bad memory or malware.

There is no way to know unless you use a tool that can can check for you. And that means a tool used in advance to store hashes that can be checked at any future time.

It’s not enough to check a backup after it's made (say, via a 'diff') because a year from now things could have gone sour.

Data integrity is no small issues for professionals. Or for those whose digital work has economic value (photos, videos, and many other things), and even for family photos. One goofy problem and a lot of stuff can go "poof!" and how would you detect it, except by chance? And even if nothing has been whacked, the peace of mind matters. As does not wiping out all your backups with corrupted copies, should you fail to detect damage in time.

Cross-platform IntegrityChecker Java

Get diglloydTools with IntegrityChecker Java. Corporate and site licenses available.

DiglloydTools IntegrityChecker Java is the fastest and easiest way to validate the integrity of your data:

  • Mac or Windows or Linux or any platform that can run Java (just about everything).
  • Validate data on any file system or device supported by Java.
  • Validate date on read-write or read-only, hard disk or SSD or WORM or optical, everything/anything with a file system supported within Java.
  • Bulletproof hashing—SHA-512.
  • Switch from Mac to PC or vice-versa? No problem!

Future proof

Built to run today, next year, and a decade from now.

Today’s IntegrityChecker should run without modification a decade from how, so long as you have Java, because unlike Apple removing/changing APIs on a whim, Java APIs have been compatible forever, and will remain so.

Blazingly fast

Hashes SHA-512 at 13000MB/sec (13GB/sec) on 28-core Mac Pro. Typical speeds on 8-core machines like iMac 5K and MacBook Pro are in the range of 3GB/sec and faster—as fast as th internal SSD can go. Speed is usually limited by the speed of the drive, not CPU power.

OWC Easy SSD Upgrade Guide
MacBook Pro and MacBook Air
iMac, Mac Pro, MacMini, more!

Flash Memory Speed and Reliability: SLC NAND, pSLC NAND, MLC NAND, TLC NAND

I have never paid much attention to flash, but this page below really helps as does this YouTube video. It applies to computer SSDs, as well as to things like SDXC camera cards.

For example, the OWC Atlas S Pro SDXC camera cards use pSLC NAND, which is about 10X more durable than the flash used in many average/ordinary SDXC cards. Very few SDXC cards even quote a duty cycle, but OWC does:

7310TB total bytes written (TBW), equal to 2862 GB per day for 7 years.

All the digital images I’ve ever shot over the past 15 years add up to about 20TB. So with the OWC Atlas S Pro card, I’d need to shoot another 6990TB of images to wear the card out. I need to get myself a 100 gigapixel camera...!


SLC, pSLC, MLC and TLC Differences - Does Your Flash Storage SSD Make the Grade?

Not all SSD are created equal. There are enormous differences in ability to work at temperature, in poor power environments, under high duty cycles. When talking enormous, an Industrial Grade SSD can have as much as 300 times (yes, 300 times, not 300%) more write endurance cycles per physical block of data.


Upgrade Your Mac Memory
At much lower cost than Apple, with more options.
Lloyd recommends 64GB for iMac or Mac Pro for photography/videography.

Inside Tim Cook’s Secret $275 Billion Deal with Chinese Authorities

China is not safe for business so long as it is run by the CCP.

Summary here in ArsTechnica:

Report: Apple CEO Tim Cook engineered a secret $275 billion deal with China

The original and full report is behind a paywall:

The Information: Inside Tim Cook’s Secret $275 Billion Deal with Chinese Authorities

Interviews and internal Apple documents provide a behind-the-scenes look at how the company made concessions to Beijing and won key legal exemptions. CEO Tim Cook personally lobbied officials over threats that would have hobbled its devices and services. His interventions paved the way for Apple’s unparalleled success in the country.


No sense letting genocide stand in the way of Apple’s profits, and formal charges are being filed. Great look for the Apple brand? Even the hapless US Congress is finally getting its act together.

Up to 1527MB/s sustained performance

diglloyd.com | Terms of Use | PRIVACY POLICY
Contact | About Lloyd Chambers | Consulting | Photo Tours
Mailing Lists | RSS Feeds | Twitter
Copyright © 2020 diglloyd Inc, all rights reserved.
Display info: __RETINA_INFO_STATUS__