
Please check my quantum physics browser game for accuracy - sideshowb
https://linkingideasblog.wordpress.com/2016/04/25/learning-quantum-mechanics-the-easy-way/
======
evanb
[1/4] Source: I am a nuclear physicist.

Full disclosure: I didn't play. I'm not launching a Java applet. So I'm just
reading your description for physics content.

> (The independence of quantum systems from absolute phase is called gauge
> symmetry)

Gauge symmetry isn't the independence of the global phase---it's the
independence of a spacetime-dependent phase. This is a much _much_ bigger
symmetry than the independence of global absolute phase.

> Until that question is answered, then we can’t rule out the possibility that
> consciousness does have something to do with it.

Are you sure you only read Feynman? This is an extreme fringe position. I
don't know any physicists who actually holds this position, unless they're
trying to get on TV.

> Interestingly, the Schrodinger equation states that a particle can’t exist
> at all in a place with more potential than the particle has energy. It will
> simply “jump” down any available holes to satisfy the equation. The same
> jumping behaviour is what gives rise to tunelling, when a particle jumps as
> if by magic from one hole to another.

That's exactly the opposite of what the Schrodinger equation says! A particle
_can_ exist in a place where the potential energy is more than the total
energy. That cannot happen classically, but is allowed quantum-mechanically.
However, the wavefunction dies off exponentially fast. But it's never 0 unless
the potential is infinite. That's what allows tunneling---the exponentially
small tail is real.

There is no "jumping" in quantum mechanics. The Schrodinger equation implies
the continuity equation [continuity].

~~~
Steuard
Not that a quality post like this needs it, but for what it's worth, as a
physics professor I'd happily endorse just about everything you've said in
this detailed response to the text accompanying the game (all four parts). (My
own comments focused mostly on the game itself, to the extent that I get
what's going on under the hood.)

~~~
dxbydt
Aside: Hey you are the guy who wrote those awesome tutorials on lagrange
multipliers!!! I actually used your materials multiple times at official
presentations, devtimes and other occasions where the management and
developers wanted to know how bidding optimization worked under the hood.
Thank you so much for writing so well.

~~~
Steuard
I'm glad to hear that you've appreciated that tutorial! It's especially neat
to hear about it being useful to people who aren't just cramming for a class.

------
alexbock
You may get more feedback if you upload the Java source to GitHub and make it
easy to compile and run locally. I wasn't able to run the applet with the
default settings in Safari, Chrome, nor Firefox and asking people to make
their browsers less secure to test this is probably going to turn a lot of
people off.

~~~
virgil_disgr4ce
Agreed, this is SUPER disappointing. I started reading your blog post on the
train this morning and was SO excited, because I've also been self-studying
QM/QED lately, and your description so closely mirrored my experiences. So
imagine my excitement when I saw that you'd made a game as a way of developing
an intuition—a really fantastic idea, and one I had been thinking of myself!
And yet I have effectively no way of even seeing it! Not even the code?!?!
:((((

~~~
brianwawok
So its annoying enough for you to type a 300 word complaint, but not annoying
enough to change your browser configuration? Only on hacker news I guess...

~~~
Vendan
Well, on my end, it would involve installing another browser and changing it's
config. Not doing that, thanks.

~~~
virgil_disgr4ce
Exactly.

------
valarauca1
Web Java is functionally dead outside of enterprises environments. Running
untrusted Java in browser is a huge security risk.

If you'd upload your code to github that'd make reviewing it easier.

~~~
earlz
Yea, I'm not taking that risk.. much less the inconvenience of installing a
different browser and getting Java enabled

------
kecks
Sorry, but I'm not running your Java applet.

Perhaps you could port your game to something like Processing.js? It allows
for very Java-like syntax, compiles to html5/js and is good with graphics.

~~~
RobSis
Unless you have a problem with running unknown compiled code, why not?

It's as easy as running '$ appletviewer URL'

~~~
whamlastxmas
Because having Java enabled for a browser is tremendously more risky than
running a single application of unknown code.

~~~
LukeShu
As RobSis noted, you don't have to enable it in your browser, you can use
appletviewer to run individual applets without the browser:

    
    
        $ appletviewer http://tropic.org.uk/~crispin/quantum/
    

And also, moderns browsers allow you to have the plugin installed, but
disabled unless you activate it on a specific page.

~~~
kecks
Modern browsers... except Google Chrome, which has at least 40% market share.

Google Chrome does not support applets in any way since the deprecation of
NPAPI.

------
leni536
I'm reading through your description and this catched my eye: "In general, the
smaller the wave, the faster it spreads out: this is the uncertainty
principle." This is not true, spreading out is due to dispersion. Why you
don't see particle like wave packets on water surface? Also dispersion. In
fact you can create particle like waves on a guitar string, which is pretty
much dispersionless. Also you can describe massless particles in QM which are
also dispersionless.

The uncertanity principle is about the uncertanity of non-commuting
observables at any given time (eg. position and momentum), it's not about the
time dependence of the wave function.

~~~
Steuard
It's fairly common for people to relate this quantum phenomenon to the
uncertainty principle, though. Someone asks: "Why can't I just say 'the
particle is at rest in this small area' and expect it to stay there forever?"
And one take on the answer is "Because you're imposing a very small
uncertainty on the initial position, the initial momentum must have a very
high uncertainty. That means there's a substantial probability that the
particle will move away from its initial position over time, which corresponds
to the wave function spreading out."

You can certainly talk about it in terms of Fourier components or that sort of
thing, too. There's a degree to which the uncertainty principle as applied to
the position/momentum degrees of freedom is nothing _but_ a statement about
Fourier transforms. But I don't think it's a bad conceptual shorthand,
especially for students who aren't yet experts in thinking about Fourier
stuff.

~~~
tamana
As a non Fourier expert, thinking about the general concept of the Fourier
transform (spatial vs frequency coordinates),and how position and momentum are
Fourier transforms of each other, was highly illuminating

------
coldpie
Crashes when run in IcedTea 1.6 in Firefox on Linux.

IcedTea-Web Plugin version: 1.6.2 6/1/16 7:49 AM Exception was:
net.sourceforge.jnlp.LaunchException: Fatal: Initialization Error: Could not
initialize applet. For more information click "more information button". at
net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:764) at
net.sourceforge.jnlp.Launcher.getApplet(Launcher.java:686) at
net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:933) Caused by:
java.lang.ClassNotFoundException: quantum.GameWindow at
net.sourceforge.jnlp.runtime.JNLPClassLoader.loadClass(JNLPClassLoader.java:1562)
at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:753) ... 2 more
This is the list of exceptions that occurred launching your applet. Please
note, those exceptions can originate from multiple applets. For a helpful bug
report, be sure to run only one applet. 1) at 6/1/16 7:49 AM
net.sourceforge.jnlp.LaunchException: Fatal: Initialization Error: Could not
initialize applet. For more information click "more information button". at
net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:764) at
net.sourceforge.jnlp.Launcher.getApplet(Launcher.java:686) at
net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:933) Caused by:
java.lang.ClassNotFoundException: quantum.GameWindow at
net.sourceforge.jnlp.runtime.JNLPClassLoader.loadClass(JNLPClassLoader.java:1562)
at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:753) ... 2 more

~~~
LukeShu
Same exception with IcedTea 1.6 in Iceweasel on GNU/Linux.

Second edit: It's because I had OpenJDK 7 as the default JRE. It works fine
when I switch it to OpenJDK 8.

Tip: stick 4 spaces before the stack trace to not munge newlines.

Edit: If I run it with appletviewer, I get a more helpful exception:

    
    
        $ appletviewer http://tropic.org.uk/~crispin/quantum/
        java.lang.UnsupportedClassVersionError: quantum/GameWindow : Unsupported major.minor version 52.0
                at java.lang.ClassLoader.defineClass1(Native Method)
        [snip]

~~~
mschulze
This error means that you need at least JRE8 (Java 8) to run the applet. Or OP
must compile the applet in a compatible bytecode format for older versions of
Java (-target of javac).

~~~
LukeShu
Yup, I figured that out. Note that what we saw in the browser didn't indicate
that; I had to use appletviewer to get a helpful error message.

------
stared
For the game - I would be delighted to test it, but most likely this weekend
or so. (Plus, Java sadly isn't the most user-friendly interface for browser-
based things.)

For getting feedback from quantum information researchers, I recommend posting
to
[https://www.facebook.com/groups/qinfo.scientists.unite/](https://www.facebook.com/groups/qinfo.scientists.unite/).

I see that you have similar taste/inspirations to mine (I am also a big fan of
Test Tube Games (Velocity Raptor & Agent Higgs)). See also:
[https://hackpad.com/J0X4MSberlM?r=0](https://hackpad.com/J0X4MSberlM?r=0) for
more picks (and feel invited to add more).

For quantum games - in a week or so I plan to release my own -
[https://github.com/stared/quantum-game](https://github.com/stared/quantum-
game)

~~~
sideshowb
Thanks. I'll check out the FB group you mention. Your game, or what we can
currently see of it, reminds me of the (classical) "Reflections" laser game of
a few years back which is a good thing! And I suspect the hackpad list will
take me more than a weekend to play through :)

~~~
stared
I've heard about Reflections but it was mostly inspired by Chromatron
([http://silverspaceship.com/chromatron/](http://silverspaceship.com/chromatron/)),
and a bit by The Incredible Machine.

With this list - don't try to play it all at once. Some of these are potent
drugs - not only addictive, but mind-altering (e.g. Hyperrogue, when you walk
on a hyperbolic plane).

------
benbenolson
Yeah, I don't think that many people are going to be able to run this. Java
applets are deprecated at this point, unfortunately. I'd love to be able to
compile and run it locally, though.

~~~
jeffwass
SideShowB - since you implemented these as Java applets and as per your link
want to learn more about QM, and specifically about improving learning and
visualisation of QM, check out the below link.

It's a bunch of QM applets I created about 12 years ago to aid in visualising
different aspects of quantum mechanics. I was a grad student at the time, and
made these as part of a fellowship. Several of these were used in
corresponding homework assignments and lectures for both grad and undergrad QM
classes.

[http://www.pha.jhu.edu/~javalab/](http://www.pha.jhu.edu/~javalab/)

I decided to apply for this fellowship after an enlightening experience seeing
the time evolution of Coherent States of a quantum simple harmonic oscillator.

------
Coding_Cat
To me (coffee-deprived Physics Bsc.) nothing jumps out as particularly
erroneous, pretty fun. Save for some weird behaviour when you try to move the
particles to fast as is noted in the game. I could also get some parts of the
wave function outside of the bounds of the level (but within the applet) I'm
not sure if this is supposed to happen? How do you model/simulate the fields?

I was actually thinking of making my own little Quantum game to see if it
could be made fun. I was thinking of making a QGolf system, where you tweak an
initial stationary wavefunction which is then collapsed after a certain time.
Although these kinds of mechanics probably work better.

>Until I made this game I was pretty confused about the uncertainty principle.
The way it’s usually taught, without resorting to maths, is to say something
like this:

>Until I made Quantum Marble Maze (QMM) I had never heard a satisfying
explanation for why frequency and momentum are the same thing. This is called
Planck’s relation. Sure, you can demonstrate classically that higher frequency
waves carry more energy, but does that really mean a particle changes
frequency if you change its momentum – in other words if you push it?

If you know how to do Fourier Transforms, note that the momentum-wavefunction
is the Fourier Transform of the postion-wavefunction. And in order to make a
well defined peak using sines & cosines, you need a lot of high frequency
(high momentum) waves. IIRC this is shown in Griffiths Introduction to Quantum
Mechanics, quite a good introduction to QM.

~~~
sideshowb
Thanks. On your latter point, I do get Fourier transforms, though for that
logic to apply you first need to accept frequency-as-momentum :)

------
LionessLover
I think you should try

[http://physics.stackexchange.com/](http://physics.stackexchange.com/)

~~~
sideshowb
I did. Well, I didn't ask the main QA site as questions about specific sites
would be off-topic. I did ask chat (the H Bar) but didn't get much of a
response. An hour on HN and my server log says several people have loaded the
game and one made it to level 5, so we're doing better here already.

~~~
sideshowb
...3 hours in, 174 people have loaded the game and 5 made it to the final
(16th) level. Still no completions though ;)

On the other hand, most of the comments have been about the Java rather than
the physics. I suppose I should have expected that.

~~~
tgb
I read your blog and thought it was coherent (ha) and correct as far as I can
tell with one course qm and one on quantum computing plus one other textbook
as my background. Honestly one of the better descriptions of QM I've read
though it's hard for me to judge how someone without any background would take
to it.

------
gpsx
I wish I could play the game. I have the same java applet problem. Hopefully
I'll be able to play later.

A few words on quantum mechanics - it is very tricky. Someone doesn't
understand quantum mechanics by taking a class in it or in getting an
undergraduate physics degree. I am sure even many (or all) physics professors
have limitations in their knowledge. It's not that the rules are complicated,
it is the implications when it is applied in the real world. You do seem to
have gained a good level of understanding though.

I have a comment on the nature of a wave function, as described in the section
"It's wavelike, but not watery". It states that wavefuntions can act like
particles. This may be wording that I just do not understand, but I would want
to clarify it.

Take the wave function for an electron - this is not a wave of "electon". It
is a wave of probability (sort of) for an electron. The electron itself is
always a particle. The motion of the electron is described by the wave. In
this way the electron has wave properties.

To take an example, let's shoot an electron gun at a target. Suppose the
resulting wavefunction of the electron has a uniform amplitude over the target
when it "hits". What is the damage to the plate? Is it uniform damage? No. The
damage is always at a single point of impact. We see the result of the
electron hitting the target, not the wave function hitting the target.

Now, if we shoot lots of electrons, the damage will be pretty uniform, since
they will be distributed all over the plate. But it will still consist of a
bunch of point impacts.

I just wanted to be clear about differentiating the wave function from the
object whose state (position, momentum, whatever) is described by the wave
function.

------
crottypeter
The following (while not wrong) is hard to read. You lament that people think
"a particle does have definite position and momentum" but don't go on to state
that they do _not_ have definite x and p. Why not state this unambiguously?

> This can lead to a bit of confusion, because a lot of people take that to
> mean that a particle does have definite position and momentum (I mean, all
> things do, right?!) but you’re sadly not able to find out what it is. Maybe
> because trying to measure one changes the other – logically that makes
> sense, right?

> But this is QM, so until you start turning it into computer games, it won’t
> make sense

------
dluan
This is one of the coolest things I've ever seen.

------
mcguire
It's a Java applet?

~~~
sideshowb
Alas yes! In hindsight not the best choice of tech so a Javascript rewrite
might be on the cards.

~~~
Filligree
Kotlin has a JS compilation mode, and IDEA has a java-to-kotlin converter.

Maybe that's a good place to start? Kotlin is a good language anyway.

~~~
lmm
Scala has both those things and is a better and more mature language.

~~~
mushishi
It is a different language to be sure but why would you say it is better?
Isn't there such a many ways to look at the strengths/weaknesses of a language
that simply valuing one language over another does not make much sense? (In
this context, I assume that both are good enough to be possible for this
project).

~~~
lmm
More consistent design - a lot of things that are special cases in Kotlin are
just the logical combination of two orthogonal features in Scala (or Ceylon).
That and the huge power of higher-kinded types - there are some language
features where it's arguable whether they're worth their weight, but higher-
kinded types are one where it's really clear-cut (IMO) - once you're used to
them, using a language without them is like using a language without generics.

For the sake of argument I'll accept that it's maybe difficult to compare two
languages in general, but in terms of Kotlin/Scala they are extremely similar
languages targeting extremely similar use cases.

~~~
softawre
We reviewed both and went with Kotlin. Scala is not the obvious choice here in
my opinion.

Kotlin is a simpler language which is a huge benefit.

[https://kotlinlang.org/docs/reference/comparison-to-
scala.ht...](https://kotlinlang.org/docs/reference/comparison-to-scala.html)

~~~
lmm
It's not a simpler language. It's a less powerful one but as a result it has a
lot of ad-hoc special case features to cover subsets of functionality that
Scala provides with a few powerful features applied consistently.

(If you want an actually simpler language, look at Ceylon)

------
kqr
On a completely different spin: any tips for becoming good at the game? I
can't even pass level two, and I've already exhausted my (very limited) mental
QM book.

~~~
sideshowb
Most levels are easier to solve if you don't hang about: the longer you wait,
the more uncertainty bites and the position becomes indefinite.

Remember there's no friction so if you accelerate over half the screen you
need to decelerate over the other half if you're going to stop before the
other side.

Level 2 can be solved by accelerating/decelerating to follow three straight
lines (east-south-west) to the goal. Alternatively if you're feeling cocky you
can accelerate east then throw in some south as you approach the corner:
you'll bounce off the walls and break the wavefunction a bit but about 50% of
the time the goal will trigger.

If you haven't discovered already you can also skip levels from the menu ;)

~~~
kqr
Thanks, that helped a lot! I also felt really clever when I realised that if
there's a "Collapse 5%" trigger zone I barely have to do anything other than
nudge the wave in the right direction when some parts of it are near the
collapse trigger. =)

------
capnrefsmmat
This reminds me of the old Quantum Minigolf game, though that was desktop C++:

[http://quantumminigolf.sourceforge.net/](http://quantumminigolf.sourceforge.net/)

Instead of arrow keys, you use a putter to tap the quantum golf ball.

~~~
sideshowb
I'm starting to think if I had made this a downloadable C++ executable I'd
have fewer complaints about security :D

------
Steuard
A few thoughts, speaking as a physics professor who asks his relativity
students to play both "Velocity Raptor" and "A Slower Speed of Light":

* Like many others here, I was a bit dismayed to see this implemented as a Java applet. Increasing security concerns have meant that I've been able to use fewer and fewer of those in my classes: it's just not reasonable to ask students to jump through those hoops anymore.

* When I look at the menu, it only goes up through level 7.

* I have made very little progress on level 8 (the one with the diffraction grating in the middle that's trying to get you to reach 2% transmission at about an 80 degree angle on each side). I have a general idea of what you want me to do, but I get so little visible transmission most of the time that it feels all but impossible to fine-tune my momentum or other aspects of my strategy. (Is there any way to increase the slit widths or number of slits or something to make that easier?)

* What _exactly_ do the arrow keys _do_? Are you imposing a linear potential gradient across the whole screen for a short time? It's hard to judge "accuracy" when I'm not quite sure what I'm looking at. (That also means I'm not entirely sure how to teach it.)

* Along similar lines, do you have a sense of what exactly is leading to the visible interference effects during motion? (The ones that you point out can be guides as to which direction the wave is moving?) Maybe I ought to have a direct intuition for this! Is it purely an effect of reflections off of the walls, or would I see the same thing if I started with a Gaussian wave packet in a linear potential without any boundaries at all? (And if it's reflection related, why is it mostly showing the direction of primary motion rather than the direction of the reflections?) Some explanation for this might be nice in a teaching tool.

* Do you think you could allow the user to toggle the phase-rainbow mode on and off? (That's the mode that I _would_ expect to always give an indication of the dominant momentum of the wave function.)

* The "collapse" mechanic is very helpful for game play, but might deserve some sort of explanation. In particular, I worry that it could train students to believe a critical misconception: that if the probability of a particular state becomes high enough, that state immediately becomes "true". Maybe that wouldn't turn out to be a serious concern, but I'm not certain that beginners are well-equipped to recognize which weird aspects of game play are supposed to reflect real physics and which are mere game enhancements. (The way collapse works here feels a lot like Copenhagen, but not quite, since it doesn't obey the Born probability rule.)

* It would allow for significantly richer strategy and game play if the player had a wider menu of potential functions to choose from. (For instance, what if the arrow keys continued to be linear potential functions and a mouse click provided a harmonic oscillator?)

* In your explanatory text, I'm not comfortable with your discussion of decoherence. I'm far from an expert on that subject, so I'm hesitant to try to offer specific corrections. But it feels off to me. (In particular, a single quantum particle bouncing off of strict potential energy walls should _not_ be a manifestation of decoherence, because the particle's state isn't becoming _entangled_ with the state of those walls in any way. I don't see any manifestation of decoherence in the game.)

In case you're interested, my current favorite intro level textbook on quantum
mechanics is Tom Moore's "Six Ideas that Shaped Physics: Unit Q". It doesn't
go as far as I'd like for a really thorough course (which is especially true
in the recent 3rd edition, though the material that's still there is presented
much more clearly), but as part of an introductory sequence it does a great
job. Much like Townsend's fantastic Jr/Sr level text, Moore first introduces
the "rules" of quantum mechanics in the context of two-state spin systems (in
a slightly simplified version of Dirac's bra-ket notation), and only moves to
wave functions once the fundamental concepts are established. (It doesn't
manage to do a whole lot with time dependent position/momentum systems like
the ones you're simulating, though.)

~~~
sideshowb
Another mega comment: don't know why this isn't more upvoted. Thanks for the
bug report.

Level 8 is odd. You thought more diffraction would occur with slower speed
right? In the simulation it doesn't; bounce off the left wall and hit the
grating fast to complete. I have to admit this bothers me. I can only assume
this is because sidebands which would otherwise hit the grating itself move
inwards to hit the 2% targets or something. Not good at all from a learning
point of view.

Yes, the arrow keys impose a linear potential gradient while they are being
held. It fades in gradually as well so no sharp transients (unless you
differentiate). Not sure if that detail was required but it's there now.

The interference effects during motion are not wall reflections as far as I
can tell. Some levels such as the traps don't have walls but (imperfect)
absorbers and they exhibit it just as much. You're right, it's easy to see why
this occurs in the rainbow mode but not so much in the amplitude mode. Genuine
physics or artifact of simulation - presumably somebody can do some calculus
and work that one out!

Decoherence, I acknowledge should involve multiple quantum particles. What we
do see here though is an evolution from a single particle with coherent phase,
which interferes with itself, into one with incoherent phase, that doesn't.
Conceptually that seems similar to decoherence.

I think all your pedagogical points are good ones btw.

Like I said to evanb, if you would like to be acknowledged for your review I'm
more than happy to. Best wishes.

~~~
Steuard
I'm very puzzled about level 8, based on what you've said. Certainly to be a
good _pedagogical_ tool, I'd want to see a system that very visibly showed a
wider and wider diffraction pattern for longer wavelengths (as you've said).
[The one advantage of a bounce that I was able to think of while playing was
that it might wind up giving a cleaner "plane wave" input, but I'm not even
sure that that's an advantage. Now that you mention it, though, perhaps there
is some ideal speed for which bouncing off the back _and_ side walls would
result in propagation at an angle, so that a meaningful fraction of the
probability density would hit the targets in as a _central_ interference
maximum.]

If I were you, I'd leave out the discussion of decoherence entirely. It's a
subtle topic (evanb did it justice, I think), and I'm reasonably convinced
that it doesn't really apply to the game. (Even if I might be wrong about
that, is that tidbit of background info important enough to your discussion to
be worth the effort and/or the risk?)

Thanks for a fun take on quantum stuff, regardless! (I don't know what's in
the higher levels, but might be fun to see some more examples of things like
tunneling through different barriers. And I wonder if there's any way of
setting up resonance in a cavity in an interesting way...)

Regarding credit: I don't feel like I've contributed _that_ much at this
point, but if you wind up with a moderate list of thank you's at some point,
you're welcome to include "Steuard Jensen" on the list.

[As for my comment not being more upvoted: I think I got some sort of black
mark on my record here a few months ago after I tried to insist that recent
reports about reactionless propulsion systems are very unlikely to pan out.
Ever since then, I've gotten the sense that my comments are showing up with an
initial scoring penalty.]

~~~
sideshowb
Re resonance in a cavity, I have some prototypes but they didn't make it into
gameplay. Actually the end screen is an example. Several levels do exhibit
resonance in a potential well: 7, 9, 11 and 12.

[Really? Wow, that's harsh. I haven't the foggiest how HN scores work, it's
all rather secretive isn't it.]

------
amelius
There are some physics people here, but... wouldn't it be a much better idea
to ask a physics forum?

------
em3rgent0rdr
Really enjoyed this game...I was very skeptical before I actually ran the
applet.

------
pvinis
Wow. I was about to write that I'm writing a simulation engine to try and
understand quantum physics better. Then I saw the image on your post, and I
now see that you are far ahead of me! :D

------
dingo_bat
Pretty cool game. Although I have been unable to map it to any of the limited
knowledge/understanding I possess about quantum mechanics.

------
javathrowaway
You asked for feedback, and here it goes: I couldn't run your applet on my
machine.

It's not my intent to attack the choice of Java, but I can't avoid noticing
that Java applets as a web technology are getting seriously obsolete these
days. It's a challenge to get these applets running.

JavaScript works way better on the web (I hate to say it, but beware the silly
name: JS as a programming language has nothing to do with Java).

The traceback follows.

    
    
        Exception was: 
        net.sourceforge.jnlp.LaunchException: Fatal: Initialization Error: Could not initialize applet. For more information click "more information button".
        	at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:739)
        	at net.sourceforge.jnlp.Launcher.getApplet(Launcher.java:668)
        	at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:901)
        Caused by: net.sourceforge.jnlp.LaunchException: The applet is signed but its manifest specifies Sandbox permissions. This is not yet supported. Try running the applet again, but choose the Sandbox run option.
        	at net.sourceforge.jnlp.runtime.ManifestAttributesChecker.checkPermissionsAttribute(ManifestAttributesChecker.java:217)
        	at net.sourceforge.jnlp.runtime.ManifestAttributesChecker.checkAll(ManifestAttributesChecker.java:82)
        	at net.sourceforge.jnlp.runtime.JNLPClassLoader. (JNLPClassLoader.java:288)
        	at net.sourceforge.jnlp.runtime.JNLPClassLoader.createInstance(JNLPClassLoader.java:351)
        	at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:418)
        	at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:394)
        	at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:704)
        	... 2 more
        Caused by: net.sourceforge.jnlp.LaunchException: Fatal: Initialization Error: Run in Sandbox call performed too late. The classloader was notified to run the applet sandboxed, but security settings were already initialized.
        	at net.sourceforge.jnlp.runtime.JNLPClassLoader$SecurityDelegateImpl.setRunInSandbox(JNLPClassLoader.java:2386)
        	at net.sourceforge.jnlp.runtime.ManifestAttributesChecker.checkPermissionsAttribute(ManifestAttributesChecker.java:214)
        	... 8 more
        This is the list of exceptions that occurred launching your applet. Please note, those exceptions can originate from multiple applets. For a helpful bug report, be sure to run only one applet. 
        1) at 6/1/16 7:09 PM
        net.sourceforge.jnlp.LaunchException: Fatal: Initialization Error: Run in Sandbox call performed too late. The classloader was notified to run the applet sandboxed, but security settings were already initialized.
        	at net.sourceforge.jnlp.runtime.JNLPClassLoader$SecurityDelegateImpl.setRunInSandbox(JNLPClassLoader.java:2386)
        	at net.sourceforge.jnlp.runtime.ManifestAttributesChecker.checkPermissionsAttribute(ManifestAttributesChecker.java:214)
        	at net.sourceforge.jnlp.runtime.ManifestAttributesChecker.checkAll(ManifestAttributesChecker.java:82)
        	at net.sourceforge.jnlp.runtime.JNLPClassLoader. (JNLPClassLoader.java:288)
        	at net.sourceforge.jnlp.runtime.JNLPClassLoader.createInstance(JNLPClassLoader.java:351)
        	at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:418)
        	at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:394)
        	at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:704)
        	at net.sourceforge.jnlp.Launcher.getApplet(Launcher.java:668)
        	at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:901)
        2) at 6/1/16 7:09 PM
        net.sourceforge.jnlp.LaunchException: The applet is signed but its manifest specifies Sandbox permissions. This is not yet supported. Try running the applet again, but choose the Sandbox run option.
        	at net.sourceforge.jnlp.runtime.ManifestAttributesChecker.checkPermissionsAttribute(ManifestAttributesChecker.java:217)
        	at net.sourceforge.jnlp.runtime.ManifestAttributesChecker.checkAll(ManifestAttributesChecker.java:82)
        	at net.sourceforge.jnlp.runtime.JNLPClassLoader. (JNLPClassLoader.java:288)
        	at net.sourceforge.jnlp.runtime.JNLPClassLoader.createInstance(JNLPClassLoader.java:351)
        	at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:418)
        	at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:394)
        	at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:704)
        	at net.sourceforge.jnlp.Launcher.getApplet(Launcher.java:668)
        	at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:901)
        Caused by: net.sourceforge.jnlp.LaunchException: Fatal: Initialization Error: Run in Sandbox call performed too late. The classloader was notified to run the applet sandboxed, but security settings were already initialized.
        	at net.sourceforge.jnlp.runtime.JNLPClassLoader$SecurityDelegateImpl.setRunInSandbox(JNLPClassLoader.java:2386)
        	at net.sourceforge.jnlp.runtime.ManifestAttributesChecker.checkPermissionsAttribute(ManifestAttributesChecker.java:214)
        	... 8 more
        3) at 6/1/16 7:09 PM
        net.sourceforge.jnlp.LaunchException: Fatal: Initialization Error: Could not initialize applet. For more information click "more information button".
        	at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:739)
        	at net.sourceforge.jnlp.Launcher.getApplet(Launcher.java:668)
        	at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:901)
        Caused by: net.sourceforge.jnlp.LaunchException: The applet is signed but its manifest specifies Sandbox permissions. This is not yet supported. Try running the applet again, but choose the Sandbox run option.
        	at net.sourceforge.jnlp.runtime.ManifestAttributesChecker.checkPermissionsAttribute(ManifestAttributesChecker.java:217)
        	at net.sourceforge.jnlp.runtime.ManifestAttributesChecker.checkAll(ManifestAttributesChecker.java:82)
        	at net.sourceforge.jnlp.runtime.JNLPClassLoader. (JNLPClassLoader.java:288)
        	at net.sourceforge.jnlp.runtime.JNLPClassLoader.createInstance(JNLPClassLoader.java:351)
        	at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:418)
        	at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:394)
        	at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:704)
        	... 2 more
        Caused by: net.sourceforge.jnlp.LaunchException: Fatal: Initialization Error: Run in Sandbox call performed too late. The classloader was notified to run the applet sandboxed, but security settings were already initialized.
        	at net.sourceforge.jnlp.runtime.JNLPClassLoader$SecurityDelegateImpl.setRunInSandbox(JNLPClassLoader.java:2386)
        	at net.sourceforge.jnlp.runtime.ManifestAttributesChecker.checkPermissionsAttribute(ManifestAttributesChecker.java:214)
        	... 8 more

