VIEW THIS AS

Auto mode follows the Route Engine until you choose a viewpoint.

YOU ARE HERE

ROUTE CHECK

CONNECTED TO

WHAT NEXT

Use the canonical route for this room, or HELP if you are unsure.

Why Mathematics? | Gerchberg–Saxton Phase Retrieval, Fourier Magnitudes and Alternating Constraints

Three students in school uniforms work through open books at a classroom table, with textbooks and stationery nearby and study notes on the whiteboard behind them.

A diffraction pattern or optical detector often records intensity, which gives squared magnitude, while discarding the phase of a complex wave. Yet phase carries essential positional and structural information. Gerchberg–Saxton phase retrieval starts with one allowed magnitude and an estimated phase, transforms to another plane, replaces the magnitude with the measurement there, transforms back, and restores the first magnitude. Mathematics matters because complex numbers, Fourier transforms, projection-like constraint steps and nonconvex geometry explain how two incomplete measurements can cooperate—and why the iteration can stagnate, depend on its initial phase or return an equivalent rather than uniquely labelled solution.

The practical search question is not simply “what is this named method?” but “which mathematical structure makes the method work, what does it guarantee, and what evidence would show that it is a poor choice?” This article keeps those questions together so students can connect mathematics education with computing, engineering, data reasoning and careful everyday decisions without turning one technique into a career promise.


Why this mathematics matters

Mathematics is important here because it turns an apparently visual or computational trick into a chain of reasons. The representation tells us what information is kept. The equation or invariant explains each legal step. The complexity analysis describes the work. The boundary conditions say when a conclusion should not be trusted. That combination is a practical form of problem-solving literacy.

A strong learner should be able to move in both directions: from a real task to a mathematical model, and from a formal guarantee back to its real meaning. Naming an algorithm is not enough. The useful achievement is to explain why the next operation is valid, check a small instance independently, and notice which assumptions the implementation has added.

Source: Optica’s peer-reviewed comparison of Gerchberg–Saxton phase retrieval.

Primary or implementation reference: A full-text research article documenting the original 1972 Gerchberg–Saxton paper and modern use.


How the mechanism works

Let A be the known magnitude in a source plane and B the known magnitude in a transform plane. Choose an initial phase phi_0 and form x_0=A exp(i phi_0). Apply the forward unitary transform F. Keep the computed phase but replace its magnitude: y_k=B exp(i arg(F x_k)). Apply the inverse transform. Again keep phase and restore source magnitude: x_(k+1)=A exp(i arg(F inverse y_k)). Repeat until magnitude residuals, phase change or a fixed iteration budget reaches a declared criterion. Handle zero complex entries explicitly because their phase is undefined. Use consistent transform scaling and record any support, positivity or symmetry constraints added beyond the classical two-magnitude loop.

For a complex number z=r exp(i theta), a detector may reveal r or r squared but not theta. A discrete Fourier transform maps one complex plane to another while preserving energy under a unitary convention. Replacing magnitude with A is the nearest point on a circle of radius A for each nonzero complex coordinate, but the collection of fixed-magnitude points is nonconvex. Alternating between two nonconvex constraint sets therefore differs from projecting between convex sets: residuals can decrease without global convergence, multiple phases can satisfy the same intensities, and a global phase factor may be unobservable. The forward and inverse normalisations must match the worked arithmetic.

Keep a four-column notebook labelled object, rule, guarantee and caveat. In the first column name the inputs and stored state. In the second write one update precisely. In the third state what remains true after the update. In the fourth record a tie, approximation, domain restriction or hardware assumption. This routine prevents symbols from drifting away from their meaning.


Worked example and core calculations

Use the two-point transform F(x0,x1)=(x0+x1,x0−x1) and inverse F^−1(y0,y1)=((y0+y1)/2,(y0−y1)/2). Let the source magnitudes be A=(1,1), the target transform magnitudes be B=(0,2), and start with phases zero, so x=(1,1). The transform is (2,0). Replace its magnitudes by B, choosing phase zero for the zero coefficient, to get y=(0,2). The inverse transform gives x_new=(1,−1). Its magnitudes are already (1,1), so the source constraint changes nothing. Transforming again gives (0,2), exactly matching B. The recovered source phases are 0 and pi. This toy succeeds in one cycle while also exposing why phase at a zero coefficient needs a convention.

How to audit the calculation

  • Recompute every intermediate value directly from the definition.
  • Keep labels, indices, signs, units and normalisation visible.
  • Test a case with a known exact answer.
  • State tie rules, random seeds, tolerances and boundary conventions.
  • Compare with a slower transparent baseline or trusted implementation.
  • Separate agreement of numbers from suitability of the real-world model.

Small examples are not childish; they are diagnostic instruments. A five-line trace can reveal a reversed inequality, a missing scale factor or an inconsistent label convention before a large dataset hides the same error behind plausible output.


Four deeper ideas

Intensity is not the complete wave

Magnitude-squared measurements discard the angle of each complex value, so reconstruction needs additional constraints.

To transfer this idea, ask what would remain true if labels, scale or input order changed. Then identify the step whose justification would fail if the stated assumption were removed. This turns the paragraph into a reusable reasoning pattern rather than a fact to memorise.

Magnitude replacement keeps the current direction

For a nonzero complex coordinate, the update moves radially onto the measured circle without changing its phase.

To transfer this idea, ask what would remain true if labels, scale or input order changed. Then identify the step whose justification would fail if the stated assumption were removed. This turns the paragraph into a reusable reasoning pattern rather than a fact to memorise.

Did you know? A perfect reconstruction can still have an arbitrary global phase

Multiplying every source value by the same unit-modulus complex number preserves both magnitude measurements.

To transfer this idea, ask what would remain true if labels, scale or input order changed. Then identify the step whose justification would fail if the stated assumption were removed. This turns the paragraph into a reusable reasoning pattern rather than a fact to memorise.

Alternation is a search, not a uniqueness proof

A small pair of residuals shows compatibility with the supplied constraints, not that every ambiguity has disappeared.

To transfer this idea, ask what would remain true if labels, scale or input order changed. Then identify the step whose justification would fail if the stated assumption were removed. This turns the paragraph into a reusable reasoning pattern rather than a fact to memorise.


Twelve practical investigations

1. Two-point exact case

Reproduce the worked transform. Check both magnitude vectors.

What the mathematics reveals: The phase flip is visible. Evidence to collect: write the input, predict the next state, carry out the calculation, and compare the result with an independently produced reference. Explain the exact invariant, equation, inequality or counting rule that supports the conclusion. Then vary one assumption and record whether the result changes smoothly, discontinuously or not at all.

Limit to keep visible: State the zero-phase convention. A useful report places this boundary beside the result rather than hiding it in a final disclaimer.

2. Global phase

Multiply the answer by exp(i theta). Verify unchanged magnitudes.

What the mathematics reveals: Some ambiguity is unavoidable. Evidence to collect: write the input, predict the next state, carry out the calculation, and compare the result with an independently produced reference. Explain the exact invariant, equation, inequality or counting rule that supports the conclusion. Then vary one assumption and record whether the result changes smoothly, discontinuously or not at all.

Limit to keep visible: Do not call equivalent answers errors. A useful report places this boundary beside the result rather than hiding it in a final disclaimer.

3. Random start

Try ten initial phases. Compare final residuals and phases.

What the mathematics reveals: Initialisation can matter. Evidence to collect: write the input, predict the next state, carry out the calculation, and compare the result with an independently produced reference. Explain the exact invariant, equation, inequality or counting rule that supports the conclusion. Then vary one assumption and record whether the result changes smoothly, discontinuously or not at all.

Limit to keep visible: Keep the seed. A useful report places this boundary beside the result rather than hiding it in a final disclaimer.

4. Inconsistent magnitudes

Change one target magnitude. Track both residuals.

What the mathematics reveals: Noise may prevent a joint solution. Evidence to collect: write the input, predict the next state, carry out the calculation, and compare the result with an independently produced reference. Explain the exact invariant, equation, inequality or counting rule that supports the conclusion. Then vary one assumption and record whether the result changes smoothly, discontinuously or not at all.

Limit to keep visible: Do not promise zero error. A useful report places this boundary beside the result rather than hiding it in a final disclaimer.

5. Zero coefficient

Force a Fourier entry to zero. Test phase handling.

What the mathematics reveals: arg(0) is undefined. Evidence to collect: write the input, predict the next state, carry out the calculation, and compare the result with an independently produced reference. Explain the exact invariant, equation, inequality or counting rule that supports the conclusion. Then vary one assumption and record whether the result changes smoothly, discontinuously or not at all.

Limit to keep visible: Use an explicit rule. A useful report places this boundary beside the result rather than hiding it in a final disclaimer.

6. Support constraint

Require selected source pixels to vanish. Add the projection carefully.

What the mathematics reveals: Extra information can reduce ambiguity. Evidence to collect: write the input, predict the next state, carry out the calculation, and compare the result with an independently produced reference. Explain the exact invariant, equation, inequality or counting rule that supports the conclusion. Then vary one assumption and record whether the result changes smoothly, discontinuously or not at all.

Limit to keep visible: Label the modified algorithm. A useful report places this boundary beside the result rather than hiding it in a final disclaimer.

7. Positivity constraint

Use a real nonnegative object model. Compare reconstruction quality.

What the mathematics reveals: Domain information can help. Evidence to collect: write the input, predict the next state, carry out the calculation, and compare the result with an independently produced reference. Explain the exact invariant, equation, inequality or counting rule that supports the conclusion. Then vary one assumption and record whether the result changes smoothly, discontinuously or not at all.

Limit to keep visible: Only impose justified physics. A useful report places this boundary beside the result rather than hiding it in a final disclaimer.

8. Noisy intensity

Add calibrated measurement noise. Plot error versus iteration.

What the mathematics reveals: More iterations can overfit. Evidence to collect: write the input, predict the next state, carry out the calculation, and compare the result with an independently produced reference. Explain the exact invariant, equation, inequality or counting rule that supports the conclusion. Then vary one assumption and record whether the result changes smoothly, discontinuously or not at all.

Limit to keep visible: Use held-out checks. A useful report places this boundary beside the result rather than hiding it in a final disclaimer.

9. Aperture limit

Mask high frequencies. Inspect lost detail.

What the mathematics reveals: Unmeasured modes cannot be invented reliably. Evidence to collect: write the input, predict the next state, carry out the calculation, and compare the result with an independently produced reference. Explain the exact invariant, equation, inequality or counting rule that supports the conclusion. Then vary one assumption and record whether the result changes smoothly, discontinuously or not at all.

Limit to keep visible: Report resolution. A useful report places this boundary beside the result rather than hiding it in a final disclaimer.

10. Sampling change

Double the grid size. Compare aliasing and runtime.

What the mathematics reveals: Discretisation is part of the model. Evidence to collect: write the input, predict the next state, carry out the calculation, and compare the result with an independently produced reference. Explain the exact invariant, equation, inequality or counting rule that supports the conclusion. Then vary one assumption and record whether the result changes smoothly, discontinuously or not at all.

Limit to keep visible: Keep units consistent. A useful report places this boundary beside the result rather than hiding it in a final disclaimer.

11. Stopping study

Stop at 10, 100 and 1000 cycles. Compare residual and image change.

What the mathematics reveals: Stagnation can masquerade as convergence. Evidence to collect: write the input, predict the next state, carry out the calculation, and compare the result with an independently produced reference. Explain the exact invariant, equation, inequality or counting rule that supports the conclusion. Then vary one assumption and record whether the result changes smoothly, discontinuously or not at all.

Limit to keep visible: Use more than one criterion. A useful report places this boundary beside the result rather than hiding it in a final disclaimer.

12. Independent simulation

Generate a known complex object. Recover from synthetic magnitudes.

What the mathematics reveals: Known truth exposes ambiguities. Evidence to collect: write the input, predict the next state, carry out the calculation, and compare the result with an independently produced reference. Explain the exact invariant, equation, inequality or counting rule that supports the conclusion. Then vary one assumption and record whether the result changes smoothly, discontinuously or not at all.

Limit to keep visible: Separate simulation from experiment. A useful report places this boundary beside the result rather than hiding it in a final disclaimer.


Limits and misconceptions

Gerchberg–Saxton is a nonconvex iterative method, so the initial phase can influence the result and the process can stagnate at a non-solution or an undesirable compatible solution. Measured magnitudes may be noisy or mutually inconsistent. Zeros make phase undefined. Finite apertures, sampling, transform conventions and detector calibration affect the mathematical model. Phase retrieval also has unavoidable ambiguities such as global phase and, in some arrangements, shifts, conjugate inversions or other symmetries. A low residual does not establish physical truth when the forward model is wrong. Computational cost grows with repeated transforms, and real systems need validation against independent observations.

Five misconceptions to challenge

  • An intensity image already contains phase: Intensity records magnitude squared, not the complex angle.
  • Alternating constraints guarantees the true object: Nonconvex iterations can stagnate or select another compatible solution.
  • The phase of zero is measured as zero: Zero has no defined phase; zero is merely an implementation convention.
  • A smaller residual always means a more accurate physical model: Model mismatch can remain even when numerical constraints fit.
  • Fourier normalisation never matters: Scaling conventions change magnitudes and must be consistent.

Another broad misconception is that advanced mathematics automatically creates intelligence, admission, income or employment. It does not. Deliberate study can strengthen modelling, abstraction, calculation and explanation, while real pathways also depend on interests, communication, domain knowledge, opportunities and circumstances outside one topic.


A learning route for students

Move from a visible trace to a symbolic rule, then to code and critique. For every step below, prepare three pieces of evidence: a correct hand example, a boundary or failure case, and a short explanation using the relevant invariant. Do not advance merely because software returned a number.

Step 1: Represent complex magnitude and phase

Begin with the smallest non-trivial instance that lets you represent complex magnitude and phase. Predict the result before calculating. Write each state change clearly enough that another student can reproduce it. Compare with a trusted implementation only after the hand trace is complete.

Next, change one feature—size, ordering, sign, tolerance, labelling or data distribution—and explain which part of the reasoning changes. Finish by teaching the step without code and by naming one input for which the method is unhelpful. This predict–calculate–vary–explain cycle is a strong test of transferable understanding.

Step 2: Apply a discrete fourier transform

Begin with the smallest non-trivial instance that lets you apply a discrete Fourier transform. Predict the result before calculating. Write each state change clearly enough that another student can reproduce it. Compare with a trusted implementation only after the hand trace is complete.

Next, change one feature—size, ordering, sign, tolerance, labelling or data distribution—and explain which part of the reasoning changes. Finish by teaching the step without code and by naming one input for which the method is unhelpful. This predict–calculate–vary–explain cycle is a strong test of transferable understanding.

Step 3: Replace magnitude without changing phase

Begin with the smallest non-trivial instance that lets you replace magnitude without changing phase. Predict the result before calculating. Write each state change clearly enough that another student can reproduce it. Compare with a trusted implementation only after the hand trace is complete.

Next, change one feature—size, ordering, sign, tolerance, labelling or data distribution—and explain which part of the reasoning changes. Finish by teaching the step without code and by naming one input for which the method is unhelpful. This predict–calculate–vary–explain cycle is a strong test of transferable understanding.

Step 4: Use an inverse transform

Begin with the smallest non-trivial instance that lets you use an inverse transform. Predict the result before calculating. Write each state change clearly enough that another student can reproduce it. Compare with a trusted implementation only after the hand trace is complete.

Next, change one feature—size, ordering, sign, tolerance, labelling or data distribution—and explain which part of the reasoning changes. Finish by teaching the step without code and by naming one input for which the method is unhelpful. This predict–calculate–vary–explain cycle is a strong test of transferable understanding.

Step 5: Track two-plane residuals

Begin with the smallest non-trivial instance that lets you track two-plane residuals. Predict the result before calculating. Write each state change clearly enough that another student can reproduce it. Compare with a trusted implementation only after the hand trace is complete.

Next, change one feature—size, ordering, sign, tolerance, labelling or data distribution—and explain which part of the reasoning changes. Finish by teaching the step without code and by naming one input for which the method is unhelpful. This predict–calculate–vary–explain cycle is a strong test of transferable understanding.

Step 6: Recognise global-phase ambiguity

Begin with the smallest non-trivial instance that lets you recognise global-phase ambiguity. Predict the result before calculating. Write each state change clearly enough that another student can reproduce it. Compare with a trusted implementation only after the hand trace is complete.

Next, change one feature—size, ordering, sign, tolerance, labelling or data distribution—and explain which part of the reasoning changes. Finish by teaching the step without code and by naming one input for which the method is unhelpful. This predict–calculate–vary–explain cycle is a strong test of transferable understanding.

Step 7: Handle zero coefficients

Begin with the smallest non-trivial instance that lets you handle zero coefficients. Predict the result before calculating. Write each state change clearly enough that another student can reproduce it. Compare with a trusted implementation only after the hand trace is complete.

Next, change one feature—size, ordering, sign, tolerance, labelling or data distribution—and explain which part of the reasoning changes. Finish by teaching the step without code and by naming one input for which the method is unhelpful. This predict–calculate–vary–explain cycle is a strong test of transferable understanding.

Step 8: Compare initialisations

Begin with the smallest non-trivial instance that lets you compare initialisations. Predict the result before calculating. Write each state change clearly enough that another student can reproduce it. Compare with a trusted implementation only after the hand trace is complete.

Next, change one feature—size, ordering, sign, tolerance, labelling or data distribution—and explain which part of the reasoning changes. Finish by teaching the step without code and by naming one input for which the method is unhelpful. This predict–calculate–vary–explain cycle is a strong test of transferable understanding.

Step 9: Test sampling effects

Begin with the smallest non-trivial instance that lets you test sampling effects. Predict the result before calculating. Write each state change clearly enough that another student can reproduce it. Compare with a trusted implementation only after the hand trace is complete.

Next, change one feature—size, ordering, sign, tolerance, labelling or data distribution—and explain which part of the reasoning changes. Finish by teaching the step without code and by naming one input for which the method is unhelpful. This predict–calculate–vary–explain cycle is a strong test of transferable understanding.

Step 10: Separate constraint fit from physical validity

Begin with the smallest non-trivial instance that lets you separate constraint fit from physical validity. Predict the result before calculating. Write each state change clearly enough that another student can reproduce it. Compare with a trusted implementation only after the hand trace is complete.

Next, change one feature—size, ordering, sign, tolerance, labelling or data distribution—and explain which part of the reasoning changes. Finish by teaching the step without code and by naming one input for which the method is unhelpful. This predict–calculate–vary–explain cycle is a strong test of transferable understanding.

A four-week practice plan

  • Week 1 — vocabulary and diagrams: define each object, redraw the mechanism and reproduce the worked example.
  • Week 2 — equations and manufactured tests: derive the key relation and test inputs with known answers.
  • Week 3 — implementation and evidence: use a trusted library, record parameters and compare with a transparent baseline.
  • Week 4 — transfer and critique: apply the method to a new context, report limits and identify when a different method is better.

Guidance for parents and educators

Ask “what stays true?” and “what could make this conclusion fail?” before asking for speed. Invite the student to draw the input and output, estimate the result and locate the first step that disagrees with a reference. These prompts reveal conceptual understanding more clearly than memorised terminology.

Advanced enrichment should sit beside secure school foundations in algebra, functions, geometry, statistics and computational thinking. It need not accelerate a student into a fixed career identity. A healthy goal is curiosity with discipline: the learner becomes comfortable reading unfamiliar notation, checking an example, revising a model and communicating uncertainty.

Evidence prompts for a useful conversation

  • Which quantity is observed and which is inferred?
  • Which step saves work, and why is it allowed?
  • Is the claim exact, approximate, probabilistic or empirical?
  • What units and conventions are in use?
  • Which input makes the method struggle?
  • What simple baseline could check the answer?
  • What would count as evidence that the parameters are poor?

Mini-project assessment

A strong mini-project contains the original question, a small reproducible dataset, a hand-worked example, code or a spreadsheet trace, at least one boundary test, a comparison with a baseline, and a paragraph on limits. Assess the reasoning trail as well as the final output. Repairing a model after a surprising result is valuable mathematical progress.

Six evidence checks for a finished project

Check 1: Represent complex magnitude and phase

Ask the student to demonstrate how to represent complex magnitude and phase without relying on a hidden software step. The evidence should include a labelled input, the exact rule used, one intermediate state and a result that can be checked independently. If the answer changes after labels or order change, the student should say whether that reflects the mathematics or only a convention.

Then request one deliberately awkward example. The learner should predict the difficulty before running the method, explain what the output does and does not establish, and name a reasonable alternative or safeguard. This check joins correctness with judgement: a technically valid calculation is useful only when its assumptions and interpretation remain visible.

Check 2: Apply a discrete fourier transform

Ask the student to demonstrate how to apply a discrete Fourier transform without relying on a hidden software step. The evidence should include a labelled input, the exact rule used, one intermediate state and a result that can be checked independently. If the answer changes after labels or order change, the student should say whether that reflects the mathematics or only a convention.

Then request one deliberately awkward example. The learner should predict the difficulty before running the method, explain what the output does and does not establish, and name a reasonable alternative or safeguard. This check joins correctness with judgement: a technically valid calculation is useful only when its assumptions and interpretation remain visible.

Check 3: Replace magnitude without changing phase

Ask the student to demonstrate how to replace magnitude without changing phase without relying on a hidden software step. The evidence should include a labelled input, the exact rule used, one intermediate state and a result that can be checked independently. If the answer changes after labels or order change, the student should say whether that reflects the mathematics or only a convention.

Then request one deliberately awkward example. The learner should predict the difficulty before running the method, explain what the output does and does not establish, and name a reasonable alternative or safeguard. This check joins correctness with judgement: a technically valid calculation is useful only when its assumptions and interpretation remain visible.

Check 4: Use an inverse transform

Ask the student to demonstrate how to use an inverse transform without relying on a hidden software step. The evidence should include a labelled input, the exact rule used, one intermediate state and a result that can be checked independently. If the answer changes after labels or order change, the student should say whether that reflects the mathematics or only a convention.

Then request one deliberately awkward example. The learner should predict the difficulty before running the method, explain what the output does and does not establish, and name a reasonable alternative or safeguard. This check joins correctness with judgement: a technically valid calculation is useful only when its assumptions and interpretation remain visible.

Check 5: Track two-plane residuals

Ask the student to demonstrate how to track two-plane residuals without relying on a hidden software step. The evidence should include a labelled input, the exact rule used, one intermediate state and a result that can be checked independently. If the answer changes after labels or order change, the student should say whether that reflects the mathematics or only a convention.

Then request one deliberately awkward example. The learner should predict the difficulty before running the method, explain what the output does and does not establish, and name a reasonable alternative or safeguard. This check joins correctness with judgement: a technically valid calculation is useful only when its assumptions and interpretation remain visible.

Check 6: Recognise global-phase ambiguity

Ask the student to demonstrate how to recognise global-phase ambiguity without relying on a hidden software step. The evidence should include a labelled input, the exact rule used, one intermediate state and a result that can be checked independently. If the answer changes after labels or order change, the student should say whether that reflects the mathematics or only a convention.

Then request one deliberately awkward example. The learner should predict the difficulty before running the method, explain what the output does and does not establish, and name a reasonable alternative or safeguard. This check joins correctness with judgement: a technically valid calculation is useful only when its assumptions and interpretation remain visible.


Frequently asked questions

What problem does Gerchberg–Saxton solve?

It estimates missing phase from magnitude constraints in two transform-related planes.

Why is phase missing?

Many detectors measure intensity rather than the full complex wave.

What happens in each half-step?

Transform, keep the phase and replace the magnitude with the measured one.

Why repeat?

Enforcing one plane’s magnitude generally disturbs the other.

Is the result unique?

Not always; global phase and other ambiguities may remain.

Does it always converge to the true answer?

No; nonconvex stagnation and model mismatch are important limits.

What is done when a value is zero?

Use an explicit implementation convention because its phase is undefined.

How is progress measured?

Track magnitude residuals in both planes and change between iterates.

Where is it used?

Examples include phase retrieval, holography, microscopy and wavefront reconstruction.

What should students know first?

Complex numbers, magnitude, phase, Fourier transforms and iteration.


Useful next reading and sources

Source: Optica’s peer-reviewed comparison of Gerchberg–Saxton phase retrieval.

Source: A full-text research article documenting the original 1972 Gerchberg–Saxton paper and modern use.

Related eduKateSG reading: Cadzow structured signal denoising.

Related eduKateSG reading: Prony exponential parameter recovery.

Related eduKateSG reading: Welch power spectral density estimation.

Read sources with a question in mind: which definition, theorem, default or limitation is being supported? An authoritative link is useful evidence, but it does not replace a worked calculation or a clear statement of how the source applies to the example.


A cheerful final thought

Mathematics becomes friendlier when every symbol has a job and every claim has a boundary. Start small, make the state visible, test the awkward case, and celebrate the moment when a pattern becomes explainable. That is the practical benefit of learning mathematics: not certainty about every future, but a growing ability to ask better questions and build trustworthy answers.

Discover more from eduKate Singapore

Subscribe now to keep reading and get access to the full archive.

Continue reading