Show Focus Points

2019 update released! Check out download page for details
Show Focus Points is a plugin for Adobe Lightroom. It shows you which focus points were selected by your camera when the photo was taken.

App

Key features

Show Focus Points is a plugin for Adobe Lightroom which shows you which of your camera's focus points were used when you took a picture.

  • Works with images made by any Canon EOS or Nikon DSLR camera (and now some Sony)

    For a full list of cameras, check out the F.A.Q.

  • Works on Mac OS X and on Windows

  • Shows all focus metadata

    Besides showing the position of the focus points used, provides all available info such as focus distance, focus mode etc. Also supports images cropped or rotated in Lightroom.

  • Works in Lightroom 5 and above

    Works with all current Lightroom versions

  • Easy-to-use interface

    Use the photostrip to switch from one image to another

Screenshots

Below find some screenshots of the plugin in action.
Click on the images to enlarge them.

  • Screenshot1
  • Screenshot2
  • Screenshot3
  • Screenshot4
  • Screenshot5
  • Screenshot6

Download

System requirements: Works in all Lightroom versions (CC, Classic) above 5 and currently only supports Canon and Nikon DSLR (and some Sony).

Download Mac-only version (6.6 MB)

Download Windows-only version (14 MB)

Download version containing both Mac+Windows versions (20 MB)

Donate with PayPal: Proving the security of blockchain protocols


Current version: V1.03, last changes:
V1.03 (Dec. 2019)
- Adds macOS Catalina (10.15) support
- Adds support for Nikon D7500, D3400, D3500, D5, D850. More cameras coming soon
- Fixes issue with wrongly scaled display on large monitors on Windows

Proving The Security Of Blockchain Protocols Apr 2026

While mathematical proofs on paper provide the theoretical foundation, translating these designs into code introduces the risk of human error and implementation bugs. To bridge this gap, computer scientists utilize formal verification. Formal verification is the act of proving or disproving the correctness of intended algorithms underlying a system with respect to a certain formal specification or property, using mathematical methods. By writing the protocol's specifications and its code in specialized languages like Coq, Isabelle, or TLA+, engineers can mathematically prove that the code will behave exactly as intended under all possible execution paths. This removes the reliance on traditional unit testing, which can only prove the presence of bugs, not their absence. Formal verification is increasingly applied to both core consensus node software and the smart contracts that run on top of the blockchain, where a single bug can result in the loss of millions of dollars.

Beyond static data security, the core challenge of any blockchain is reaching agreement on the state of the ledger in a distributed network. Proving the security of consensus mechanisms, such as Proof of Work (PoW) and Proof of Stake (PoS), requires demonstrating two fundamental properties: consistency (or safety) and liveness. Consistency guarantees that all honest nodes agree on the same history of transactions, preventing double-spending. Liveness ensures that new, valid transactions will eventually be processed and added to the ledger, preventing censorship. Proving the security of blockchain protocols

The first layer of proving blockchain security resides in the cryptographic primitives that secure data integrity and identity. Blockchains rely heavily on cryptographic hash functions, such as SHA-256, and digital signature schemes, like ECDSA or Ed25519. To prove the security of these components, cryptographers rely on reductionist security proofs. This method demonstrates that if an adversary can break the cryptographic primitive, they can also solve a known, computationally hard mathematical problem, such as factoring large integers or finding discrete logarithms. For example, the security of a blockchain's Merkle tree depends on the collision resistance of its hash function. By proving that finding a collision is as hard as solving a classically difficult math problem, developers can mathematically guarantee that transaction data cannot be tampered with without detection. While mathematical proofs on paper provide the theoretical

While mathematical proofs on paper provide the theoretical foundation, translating these designs into code introduces the risk of human error and implementation bugs. To bridge this gap, computer scientists utilize formal verification. Formal verification is the act of proving or disproving the correctness of intended algorithms underlying a system with respect to a certain formal specification or property, using mathematical methods. By writing the protocol's specifications and its code in specialized languages like Coq, Isabelle, or TLA+, engineers can mathematically prove that the code will behave exactly as intended under all possible execution paths. This removes the reliance on traditional unit testing, which can only prove the presence of bugs, not their absence. Formal verification is increasingly applied to both core consensus node software and the smart contracts that run on top of the blockchain, where a single bug can result in the loss of millions of dollars.

Beyond static data security, the core challenge of any blockchain is reaching agreement on the state of the ledger in a distributed network. Proving the security of consensus mechanisms, such as Proof of Work (PoW) and Proof of Stake (PoS), requires demonstrating two fundamental properties: consistency (or safety) and liveness. Consistency guarantees that all honest nodes agree on the same history of transactions, preventing double-spending. Liveness ensures that new, valid transactions will eventually be processed and added to the ledger, preventing censorship.

The first layer of proving blockchain security resides in the cryptographic primitives that secure data integrity and identity. Blockchains rely heavily on cryptographic hash functions, such as SHA-256, and digital signature schemes, like ECDSA or Ed25519. To prove the security of these components, cryptographers rely on reductionist security proofs. This method demonstrates that if an adversary can break the cryptographic primitive, they can also solve a known, computationally hard mathematical problem, such as factoring large integers or finding discrete logarithms. For example, the security of a blockchain's Merkle tree depends on the collision resistance of its hash function. By proving that finding a collision is as hard as solving a classically difficult math problem, developers can mathematically guarantee that transaction data cannot be tampered with without detection.

Feedback

Feedback can be sent to or via the feedback form below. -Chris Reimold, author

*All fields are required.