<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel rdf:about="https://community.wolfram.com">
    <title>Community RSS Feed</title>
    <link>https://community.wolfram.com</link>
    <description>RSS Feed for Wolfram Community showing any discussions tagged with Packages with no replies sorted by most viewed.</description>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/516854" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/370172" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/204387" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1732842" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1135793" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1087153" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1078649" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1818557" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1365397" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1666112" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/311582" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/830659" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1742031" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1225366" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/851429" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1330671" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1343859" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1072731" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1166766" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/886243" />
      </rdf:Seq>
    </items>
  </channel>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/516854">
    <title>How to Install HadoopLink?</title>
    <link>https://community.wolfram.com/groups/-/m/t/516854</link>
    <description>Hello, I am trying to use the HadoopLink package for the first time, and running into a few challenges.  I am hoping someone out there is using this successfully, and might have some tips for a smooth installation in the current version of mathematica (10.2 at the time of writing this).  &#xD;
&#xD;
I have downloaded the open-source project and I am following along with [HadoopLink installation instructions on GitHub][1].&#xD;
&#xD;
I have unpacked the .zip and placed the HadoopLink folder (and only that folder, not the entire unpacked project) into my $User/Libarary/Mathematica/Applications folder, and loaded the package using:&#xD;
&#xD;
    &amp;lt;&amp;lt; HadoopLink`&#xD;
&#xD;
But when I proceed to the next step, and execute this code...&#xD;
&#xD;
    link = OpenHadoopLink[&#xD;
       &amp;#034;fs.default.name&amp;#034; -&amp;gt; &amp;#034;hdfs://hadoopheadlx.wolfram.com:8020&amp;#034;,&#xD;
       &amp;#034;mapred.job.tracker&amp;#034; -&amp;gt; &amp;#034;hadoopheadlx.wolfram.com:8021&amp;#034;];&#xD;
&#xD;
    DFSFileNames[link]&#xD;
&#xD;
Mathematica output spews a bunch of Java exceptions (attached).  Anybody have more detailed instructions on setting up HadoopLink?  Maybe I should have put the entire project folder into the /Applications folder instead.  I will try that now...&#xD;
&#xD;
  [1]: https://github.com/shadanan/HadoopLink</description>
    <dc:creator>Caitlin Ramsey</dc:creator>
    <dc:date>2015-06-22T15:09:06Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/370172">
    <title>An importer for motion capture files. Infinite fun possibilities</title>
    <link>https://community.wolfram.com/groups/-/m/t/370172</link>
    <description>Admit it... &#xD;
&#xD;
You always wanted to play with those motion capture files that you can find for free by the thousands on places like the  [Advanced Computing Center for the Arts and Design][1]  or the [cgspeed site][2] which contains BVH conversions of the 2500-motion [Carnegie-Mellon motion capture dataset][3]. &#xD;
&#xD;
Well, now you can. &#xD;
&#xD;
I have written an importer package for the BVH (Biovision hierarchical data) motion capture format, which you can find as an answer on [mathematica.stackoverflow.com][4]. Just three of the possibilities:&#xD;
&#xD;
Import:&#xD;
&#xD;
    out = Import[ &amp;#034;C:\\Female1_D6_CartWheel.bvh&amp;#034;]&#xD;
&#xD;
![enter image description here][5]&#xD;
&#xD;
Generate movies:&#xD;
&#xD;
    out[&amp;#034;AnimatedGIF&amp;#034;, &amp;#034;C:\\cartwheel.gif&amp;#034;]&#xD;
&#xD;
![enter image description here][6]&#xD;
&#xD;
Analyse motion:&#xD;
&#xD;
    Graphics3D[&#xD;
     MapIndexed[&#xD;
      {Opacity[0.8], Hue[#2[[1]]/out[&amp;#034;FrameCount&amp;#034;]], &#xD;
        GraphicsComplex[#1, Line /@ out[&amp;#034;Bones&amp;#034;]]} &amp;amp;,&#xD;
      out[&amp;#034;JointsStack&amp;#034;]&#xD;
      ],&#xD;
     Boxed -&amp;gt; False&#xD;
     ]&#xD;
&#xD;
![enter image description here][7]&#xD;
&#xD;
etc. etc.&#xD;
&#xD;
Combined with all the graphical power of Mathematica the possibilities for fun projects are endless. How about this?&#xD;
&#xD;
![enter image description here][8]&#xD;
&#xD;
  [1]: http://accad.osu.edu/research/mocap/mocap_data.htm&#xD;
&#xD;
  [2]: https://sites.google.com/a/cgspeed.com/cgspeed/motion-capture&#xD;
&#xD;
  [3]: http://mocap.cs.cmu.edu/&#xD;
&#xD;
  [4]: http://mathematica.stackexchange.com/a/60942/57&#xD;
&#xD;
  [5]: /c/portal/getImageAttachment?filename=6g00x.png&amp;amp;userId=43903&#xD;
&#xD;
  [6]: /c/portal/getImageAttachment?filename=0BflU.gif&amp;amp;userId=43903&#xD;
&#xD;
  [7]: /c/portal/getImageAttachment?filename=H4YIN.png&amp;amp;userId=43903&#xD;
&#xD;
  [8]: /c/portal/getImageAttachment?filename=mobius.gif&amp;amp;userId=43903</description>
    <dc:creator>Sjoerd de Vries</dc:creator>
    <dc:date>2014-10-15T21:02:42Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/204387">
    <title>Integrated project monitoring: This is It!</title>
    <link>https://community.wolfram.com/groups/-/m/t/204387</link>
    <description>Hi,
I want to share this with you.
This [url=http://youtu.be/RoNr34s4A9k]video[/url] shows a completely integrated project scheduling and monitoring environment.
The system has been built with these technologies:[list]
[*]Smartsheet for the project scheduling
[*]Mathematica for the computing of the progress reports
[*]CDF Player for deploying the results
[/list]The user now experiences a seamless integration of everything he needs to schedule, track and monitor a project.
Everything is web based, there is no &amp;#034;interface switching&amp;#034; anymore, and everything about the progress reports generation is automated.
To be honest: to step from the non web-based configuration to the present configuration, it only took a good week!
Only possible with the Wolfram technologies.

My guess: This is it!

Greats,

JP</description>
    <dc:creator>Jean Pierre Tollenboom</dc:creator>
    <dc:date>2014-02-21T11:04:16Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1732842">
    <title>[WSC19] Implementing a Tsetlin Machine Framework</title>
    <link>https://community.wolfram.com/groups/-/m/t/1732842</link>
    <description>#Introduction&#xD;
&#xD;
I attended the Wolfram High School Summer Camp in the 2019 session. For my project, I attempted to implement a framework for creating, training, applying, and inspecting Tsetlin Machines. Tsetlin Machines are unique when compared with other methods of machine learning because they operate using Boolean operations on binary data, and the individual building blocks only require a single integer in memory. Compare this to the Neural Net, which operates by applying Calculus to floating point numbers, and where each neuron requires multiple pieces in memory corresponding to their activation function, bias, connections, weights of connections, etc. Tsetlin Machines also have the advantage that they are interpretable: once a Tsetlin Machine has been taught, it can be interpreted as a propositional formula, whereas Neural Networks, once taught, are famously &amp;#034;black boxes&amp;#034; that no one knows what&amp;#039;s really happening inside. Furthermore, Tsetlin Machines can be used in mathematical research to produce satisfactory propositional formulas.&#xD;
&#xD;
This community post will provide an overview about how Tsetlin Machines work. The only code in this community post will be at the very end, where I give a short example of how a Tsetlin Machine is created and trained using my framework. My full Wolfram Language implementation can be on my github account, a link to which can found at the bottom of this community post.&#xD;
&#xD;
# Tsetlin Automata&#xD;
&#xD;
Tsetlin Machines are a kind of machine learning based on combining Tsetlin Automata to assemble a propositional formula. So, what is a Tsetlin Automaton? A Tsetlin Automaton is an extremely simple automaton that has a finite number of states ($2n$) (image below). Based on it&amp;#039;s state, a Tsetlin Automaton can chose between 2 actions ($a_1$ and $a_2$). (&amp;#034;Action&amp;#034; here is an abstract concept that can basically represents a choice between two things.) It chooses the first action if it&amp;#039;s current state is equal to a certain value ($n$) that I call the state identifier, and chooses the second action if it&amp;#039;s state is above the value.&#xD;
&#xD;
So, when does a Tsetlin Automaton make this choice? Both when giving output and training. The only output ever given by a Tsetlin Automaton is its&amp;#039; current action. So, whenever a Tsetlin Automaton has to do pretty much anything, it starts by choosing an action and outputting it.&#xD;
&#xD;
![tsetlin automaton][1]&#xD;
&#xD;
&amp;lt;sub&amp;gt;Image reproduced from https://arxiv.org/pdf/1804.01508.pdf&amp;lt;/sub&amp;gt;&#xD;
&#xD;
Now, how does an individual Tsetlin Automaton learn? Via punishment and reward. It&amp;#039;s pretty simple: when a Tsetlin Automaton makes a good choice, it gets rewarded (and it&amp;#039;s current state moves farther from the point at which it would chose the other action). When it makes a bad choice, it is punished (and it&amp;#039;s current state moves closer to the point at which it would chose the other action).&#xD;
&#xD;
Who rewards and punishes the Tsetlin Automaton? The environment. For example, imagine that a Tsetlin Automaton (let&amp;#039;s call him Steve) has to chose between eating two kinds of chocolate, 1 and 2. Steve has 6 states ($n=3$). He starts randomly selects one to start with, and chooses the action of eating chocolate 2 (so his current state is 4). Eating this chocolate boosted his cognitive power, so he is rewarded (and his current state goes to 5). He takes another bite, but this time there is no effect, so he is punished (state goes back to 4). Another bite, and another failure leads to another punishment (his state goes to 3). Because Steve&amp;#039;s state crossed the &amp;#034;action border&amp;#034; between eating chocolate 2 (state $&amp;gt;3)$) and eating chocolate 1 (state $\leq3$), his next choice is to eat chocolate 1. This does boost his cognitive power, so he is rewarded (state goes to 2). Another bite boosts his cognitive power again, and again he is rewarded (state goes to 1). At this point, Steve is pretty confident that chocolate 1 is the better option because it boosts his cognitive power more often, so he decides to stop training and stick with chocolate 1. Below is a graph of Steve&amp;#039;s state (blue) as he learns (yellow is the &amp;#034;action tipping point&amp;#034;).&#xD;
&#xD;
&amp;lt;sub&amp;gt;The above story a work of fiction. Any resemblance to actual events or locales or persons, living or dead, is entirely coincidental.&amp;lt;/sub&amp;gt;&#xD;
&#xD;
![steve learn path][2]&#xD;
&#xD;
# Tsetlin Machines&#xD;
&#xD;
![tsetlin machine full structure][3]&#xD;
&#xD;
&amp;lt;sub&amp;gt;Image reproduced from https://arxiv.org/pdf/1804.01508.pdf&amp;lt;/sub&amp;gt;&#xD;
&#xD;
So, how do Tsetlin Automata work together to form a full Tsetlin Machine? By learning which inputs to a Tsetlin Machine are important. But before learning can be explained, the process of how a Tsetlin Machine calculates its&amp;#039; outputs must be explained. For this purpose, consider a Tsetlin Machine that has not yet been trained, trying to learn the simple 2-input XOR operation:&#xD;
&#xD;
![xor operation][4]&#xD;
&#xD;
Input to a Tsetlin Machine is a list of Booleans (in this case, the list is length 2 because the goal is to emulate XOR, which takes 2 inputs). After the input is taken, it is duplicated and inverted. So, the complete input ends up taking the form `{{a, b}, {NOT a, NOT b}}`. For example, an input of `{True, False}` would produce `{{True, False}, {False, True}}`.&#xD;
&#xD;
Once the complete input is calculated, it is fed to a team of Tsetlin Automata (which are randomly initialized). There are a number of Tsetlin Automata equal to length of the input-- that is, each Automata corresponds to one input value. Based on its current state, each Automata chooses either to include or exclude the input (if the current state is less than or equal to the state identifier, the input is excluded. Otherwise, it is included).&#xD;
&#xD;
![single clause calculate included][5]&#xD;
&#xD;
Any included inputs in the team are then ANDed together. There actually can be multiple teams of Tsetlin Automata, each of which chooses which inputs to include and exclude independently of the other teams (as well as ANDs the results independently).&#xD;
&#xD;
![all clause final outputs][6]&#xD;
&#xD;
Once each team of Tsetlin Automata has calculated their final, joint result, the outputs from that result is sent to an output function. There are many different output functions, the two most common of which are OR and the Alternating Sum. For this example, I will use OR.&#xD;
&#xD;
![output function][7]&#xD;
&#xD;
The final output from this Tsetlin Machine given the input of `{True, False}` is True, which happens to be correct. However, this machine will fail on an input of {False, True}, and will output, instead of the expected `True`, a `False`. So how does the Tsetlin Machine learn that this is wrong? Through feedback.&#xD;
&#xD;
There are 2 different kinds of feedback that a Tsetlin Machine can provide back to its&amp;#039; Automata: Type 1 and Type 2. Although the exact details of the types of feedback are rather complicated, the point of each is simple: Type 1 feedback combats false negative output (when the machine outputted a False when it should have outputted a True), and Type 2 feedback combats false positive output (when the machine outputted a True when it should have outputted a False). Feedback is given to a clause at a time, based on a function provided by the user (at least in my implementation) called a &amp;#034;feedback decider&amp;#034; which takes a series of arguments that contain information about the current state of the machine . Each kind of output function requires a different kind of feedback decider, to make sure the feedback is correctly assigned. At the automata level, feedback takes the form of a weighted reward or punishment (a reward or punishment that probabilistically happens), based on an s-value (which controls precision) specified by the person training the machine. There is more information in the original paper and in my implementation about how feedback works.&#xD;
&#xD;
In short, feedback punishes or rewards automata to make them more likely to include or exclude inputs correctly.&#xD;
&#xD;
After feedback is given, then a new input is given to the machine and the process repeats.&#xD;
&#xD;
One detail that is important to note is that Tsetlin Machines can have multiple outputs, each of which is trained independently and has their own Tsetlin Automata teams.&#xD;
&#xD;
# Using the Framework&#xD;
&#xD;
The following chunk of code shows how one would train a Tsetlin Machine from scratch to learn the XOR operation using my framework:&#xD;
&#xD;
    TsetlinMachineTrain[                                             (* function that trains a Tsetlin Machine *)&#xD;
      TsetlinMachineInitialize[                                      (* make a new Tsetlin Machine *)&#xD;
       3,                                                            (* state identifier 3 *)&#xD;
       2,                                                            (* 2 inputs *)&#xD;
       2,                                                            (* 2 clauses *)&#xD;
       {TsetlinUtilityOr}],                                          (* one output that uses the function TsetlinUtilityOr *)&#xD;
      {{False, False}, {False, True}, {True, False}, {True, True}},  (* training input data *)&#xD;
      {{False}, {True}, {True}, {False}},                            (* training output data *)&#xD;
      {{False, False}, {False, True}, {True, False}, {True, True}},  (* testing input data *)&#xD;
      {{False}, {True}, {True}, {False}},                            (* testing output data *)&#xD;
      9,                                                             (* s-value (precision) *)&#xD;
      TsetlinUtilityOrFeedbackDecider[#1, #2, #3, #4, #5, #6, 2] &amp;amp;,  (* feedback decider with threshold set to 2, more info in paper *)&#xD;
      1.00]                                                          (* train until it has 100% accuracy *)&#xD;
&#xD;
# Further Resources&#xD;
&#xD;
* https://github.com/ComradeSparklePony/WL-Tsetlin-Machine (my Wolfram Language implementation of a Tsetlin Machine)&#xD;
* https://arxiv.org/pdf/1804.01508.pdf (the original paper)&#xD;
* https://github.com/cair/TsetlinMachine (the original implementation of a Tsetlin Machine)&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=fixed_deterministic_run_1.png&amp;amp;userId=1684084&#xD;
  [2]: https://community.wolfram.com//c/portal/getImageAttachment?filename=stevelearnpath.png&amp;amp;userId=1684084&#xD;
  [3]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Overall_Architecture.png&amp;amp;userId=1684084&#xD;
  [4]: https://community.wolfram.com//c/portal/getImageAttachment?filename=xor.png&amp;amp;userId=1684084&#xD;
  [5]: https://community.wolfram.com//c/portal/getImageAttachment?filename=ta-choice.png&amp;amp;userId=1684084&#xD;
  [6]: https://community.wolfram.com//c/portal/getImageAttachment?filename=clauseoutput.png&amp;amp;userId=1684084&#xD;
  [7]: https://community.wolfram.com//c/portal/getImageAttachment?filename=outputoutput.png&amp;amp;userId=1684084</description>
    <dc:creator>Dmitri Volkov</dc:creator>
    <dc:date>2019-07-12T01:39:04Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1135793">
    <title>[WSS17] Implementing a Quantum Computing Framework for Mathematica</title>
    <link>https://community.wolfram.com/groups/-/m/t/1135793</link>
    <description>GOAL OF THE PROJECT&#xD;
===================&#xD;
&#xD;
During Wolfram Summer School 2017, I set out to create an efficient quantum computing framework in Mathematica.  Prior to this project, there were already several quantum computing packages for Mathematica, including [Quantum][1], [QuCalc][2], and [Quantum Computing with the Wolfram Language][3], the last of which was a product of WSS 2016. However, there was no existing package that was hassle-free, and provided a unified representation of the various types of quantum systems one might want to use in computations. I set out to allow users to simulate quantum circuit computations on all of these types of quantum states - which I will go into shortly. &#xD;
&#xD;
My main goal, however, was to make the circuit computations as fast - and scalable - as possible. The main difficulty that arises when simulating quantum systems on classical computers is that a quantum system with $~{O}(n)~$ quantum bits, or qubits, requires a representation consisting of $~O(2^n)~$ classical bits. From the start, I knew that my primary task would consist of designing an architecture for the framework that would facilitate these computations.&#xD;
&#xD;
Background&#xD;
==========&#xD;
Before I get into the specifics of my implementation, I&amp;#039;m going to review some of the basics of quantum computing:&#xD;
&#xD;
Quantum States&#xD;
----------&#xD;
In classical computing, information is stored in bits, i.e. $~0~$&amp;#039;s and $~1~$&amp;#039;s. At any point in time, each bit is in one of these two states. Operations such as &amp;#034;AND&amp;#034;, &amp;#034;NOT&amp;#034;, and &amp;#034;Controlled-NOT&amp;#034; gates take bits as input, and output other bits. &#xD;
&#xD;
In quantum computing on the other hand, the fundamental unit is the *qubit*, or quantum bit. A qubit lives in a Hilbert space $~H = \mathbb{C}^2~$. Rather than take values in $\{0,1\}$, a qubit can take any complex-valued state $\begin{bmatrix}&#xD;
    \alpha \\&#xD;
    \beta  &#xD;
\end{bmatrix}$ that is normalized: $\|\alpha \|^2+ \|\beta \|^2 = 1$.&#xD;
&#xD;
Rewriting this as  $\alpha \begin{bmatrix}&#xD;
    1 \\&#xD;
    0  &#xD;
\end{bmatrix} + \beta \begin{bmatrix}&#xD;
    0 \\&#xD;
    1  &#xD;
\end{bmatrix} $, we can view the qubit as a linear combination, or *superposition* of the two basis states $ \begin{bmatrix}&#xD;
    1 \\&#xD;
    0  &#xD;
\end{bmatrix} $ and $ \begin{bmatrix}&#xD;
    0 \\&#xD;
    1 &#xD;
\end{bmatrix} $, and subsequently treat these as our quantum analogs of $0$ and $1$ so that we can perform *quantum* computations.&#xD;
&#xD;
During computation, a qubit does not have to take on either of its basis states. Rather, it &amp;#034;collapses&amp;#034; into one of its eigenstates when it is measured at the end of a computation. A computation consists of any unitary operator acting on the state of the qubit. &#xD;
&#xD;
&#xD;
----------&#xD;
&#xD;
&#xD;
Things get more interesting when we consider a composite quantum state, made up of multiple qubits. A quantum state comprised of two qubits, $q_a$ and $q_b$, lives in $~ \mathbb{C}^4~$. In the computational basis, $ \begin{bmatrix}&#xD;
    1 \\&#xD;
0 \\&#xD;
0 \\&#xD;
    0&#xD;
\end{bmatrix} $ describes the state in which $q_a$ and $q_b$ are both 0, $ \begin{bmatrix}&#xD;
    0 \\&#xD;
1 \\&#xD;
0 \\&#xD;
    0&#xD;
\end{bmatrix} $ corresponds to $0$ for $q_a$ and  $1$ for $q_b$, $ \begin{bmatrix}&#xD;
    0 \\&#xD;
0 \\&#xD;
1 \\&#xD;
    0&#xD;
\end{bmatrix} $ to $1$ for $q_a$ and  $0$ for $q_b$, and $q_b$, $ \begin{bmatrix}&#xD;
    0 \\&#xD;
0 \\&#xD;
0 \\&#xD;
    1&#xD;
\end{bmatrix} $ to $1$ for both qubits. &#xD;
&#xD;
&#xD;
----------&#xD;
&#xD;
&#xD;
Unlike in the classical case, in quantum physics it is often not possible to decompose the state of a composite system into separate states for each subsystem. For example, no matter the choice of $\alpha$, $\beta$, $\gamma$ and $\delta$, it is not possible to write $ \frac{1}{\sqrt{2}}\begin{bmatrix}&#xD;
    1 \\&#xD;
0 \\&#xD;
0 \\&#xD;
    1&#xD;
\end{bmatrix}  =  \begin{bmatrix}&#xD;
    \alpha \\&#xD;
    \beta  &#xD;
\end{bmatrix}  \otimes \begin{bmatrix}&#xD;
    \gamma \\&#xD;
    \delta  &#xD;
\end{bmatrix}$. In such a scenario, the state is said to be *entangled*. &#xD;
&#xD;
&#xD;
----------&#xD;
&#xD;
&#xD;
We can make things even MORE interesting by adding in statistical uncertainty. So far, we have been discussing what are referred to as *pure* states. Even though we have allowed qubits to be in superposition states, we were always sure to be in *that* superposition. A *mixed* state is a statistical ensemble of pure states. For example, $q_a$ could have a $50\%$ chance of being in the state $\begin{bmatrix}&#xD;
   0 \\&#xD;
   1  &#xD;
\end{bmatrix}$ and a  $50\%$ chance of being in the state $\frac{1}{\sqrt{2}} \begin{bmatrix}&#xD;
   1 \\&#xD;
   1  &#xD;
\end{bmatrix}$.&#xD;
&#xD;
&#xD;
----------&#xD;
&#xD;
Okay, just one more complication: remember how we began by drawing the analogy between bits and qubits? We can extend this analogy to general digit systems. A classical system that can be in one of the d states $\{0, 1, \dots, d-1\}$ is transformed into a *qudit*: a normalized complex-valued state in $~ \mathbb{C}^d~$, which takes on superpositions of its $d$ basis states. &#xD;
&#xD;
My framework treats pure unentangled and entangled states, mixed states, qubits and qudits on the same footing.&#xD;
&#xD;
Quantum Circuits&#xD;
----------&#xD;
As I mentioned above, a computation consists of any unitary operator acting on your quantum state. If you are performing computations on many qudits, as is often necessary for the design of complex circuits, these operations essentially become large matrix multiplications. For example, an operation performed on 4 qutrits (three level quantum systems), would involve multiplying your state vector by a matrix of size $3^4 \times 3^4$. One can imagine how quickly this scaling becomes a performance issue. &#xD;
&#xD;
Design&#xD;
=======&#xD;
&#xD;
In my framework, the basic data structures are `QuantumObservable` and `QuantumState`. A QuantumObservable consists of a Hermitian matrix and a description. A QuantumState consists of a density matrix, represented as a sparse array, a lookup table that associates row and column indices with combined computational basis states of the system, and an ordered list of quantum objects that comprise the state. For example,&#xD;
&#xD;
 `psi = CreateQuantumState[&amp;#034;w2&amp;#034; -&amp;gt; {0.4, 0.8}, {&amp;#034;w1&amp;#034;, &amp;#034;w3&amp;#034;} -&amp;gt; {{0, .1, .9}, {.2, .4, .3}}]`&#xD;
&#xD;
 returns a QuantumState consisting of quantum objects &amp;#034;w1&amp;#034;, &amp;#034;w2&amp;#034;, and &amp;#034;w3&amp;#034;. ![quantum state][4].&#xD;
&#xD;
 &amp;#034;w1&amp;#034; and &amp;#034;w2&amp;#034; are qubits, while &amp;#034;w3&amp;#034; is a qutrit. &amp;#034;w1&amp;#034; and &amp;#034;w3&amp;#034; are input as one 2-dimensional array because they are entangled, and cannot be represented independently. The state is automatically normalized.&#xD;
&#xD;
We can visualize the density matrix of the state using `QuantumPlot[psi]`.![quantumplot][5]&#xD;
&#xD;
We can query the state to see whether it is pure, mixed, or entangled (for pure states) with commands like `EntangledQuantumStateQ`.&#xD;
&#xD;
Note that we represent all states in terms of density matrices rather than state vectors so that the architecture is consistent for pure and mixed states. This does not impact performance because we are using sparse arrays.&#xD;
&#xD;
&#xD;
Quantum Operations&#xD;
----------&#xD;
In my framework, quantum operations are not hard-coded as matrices. Instead, they are defined by rules which, for a d-dimensional quantum state, will apply the d-dimensional version of the operation. In order to avoid matrix multiplications, two-qudit operations like &amp;#034;CNOT&amp;#034; and &amp;#034;SWAP&amp;#034; are implemented through array reshaping and manipulation rather than being explicitly constructed.&#xD;
&#xD;
Quantum Circuit&#xD;
----------&#xD;
One of the most important aspects of my project is *quantum compilation*. A quantum circuit can be created either by giving a list of quantum operations, or concatenating other circuits. The quantum circuit is left unevaluated until it acts on a quantum state, at which time it is simplified by a host of pattern-based algebraic identities. This compilation reduces the number of operations in the circuit, minimizing the number of full-blown matrix multiplications.&#xD;
&#xD;
Other Features&#xD;
----------&#xD;
I also implemented a function to get the Von Neumann entropy of a quantum state, a partial trace function to produce the quantum state formed by tracing out subsystems, and a measurement function which calculates the expectation value of an observable on any quantum state.&#xD;
&#xD;
&#xD;
SUMMARY OF WORK&#xD;
==========&#xD;
&#xD;
&#xD;
This Quantum Computing framework enables the simulation of quantum circuits for qudits (generalized d-level quantum systems. Using sparse arrays and lookup tables, this package efficiently stores quantum states, maintaining a unified structure for pure, mixed, and entangled quantum states. The user can create an initial quantum state, and generate a quantum circuit - either out of individual gate operations or by concatenating other circuits. The crux of the framework is quantum circuit compilation: The circuit is not evaluated until it acts on an input quantum state, and using pattern matching I implement a variety of algebraic simplification rules to minimize the number of matrix multiplications.   &#xD;
&#xD;
Future Work&#xD;
---------------&#xD;
Obviously, there are a plethora of quantum computing features I would have liked to implement had I had more time. In the future, I hope to add functionality for combining quantum states, as well as incorporating a wider variety of multi-qudit operations. In addition, I would like to include functions for well-known quantum algorithms such as Deutsch&amp;#039;s, Grover&amp;#039;s, and Shor&amp;#039;s algorithms so that the user can apply them directly to a quantum state.&#xD;
&#xD;
&#xD;
  [1]: http://homepage.cem.itesm.mx/jose.luis.gomez/quantum/&#xD;
  [2]: http://library.wolfram.com/infocenter/MathSource/657/&#xD;
  [3]: http://community.wolfram.com/groups/-/m/t/897811&#xD;
  [4]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2017-07-05at7.05.08PM.png&amp;amp;userId=1081680&#xD;
  [5]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2017-07-05at7.14.06PM.png&amp;amp;userId=1081680</description>
    <dc:creator>Jacob Marks</dc:creator>
    <dc:date>2017-07-05T19:08:56Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1087153">
    <title>qmDirac: Quantum Beta Testers wanted</title>
    <link>https://community.wolfram.com/groups/-/m/t/1087153</link>
    <description>Dear community, I am the main author of an old Quantum Mechanics add-on for Mathematica. We are not updating it anymore because we are creating a totally new Quantum Mechanics package, it will be very likely called qmDirac. The old Quantum Mathematica was very difficult to update, because through the years I wrote a messy source code. Our new qmDirac package is in a very early stage of development, however it would be great for me if you or your students try to use it, and let me know your thoughts and suggestions, this is the link: [http://qmdirac.weebly.com/beta-testers.html][1]&#xD;
&#xD;
Please take into account that the old Quantum Mathematica and the new qmDirac are not compatible, you cannot copy-paste from one to the other, neither use one file with symbols from one with the other, it will not work. &#xD;
As I said, the new qmDirac is in a very early stage, I believe you might find it is slow, or perhaps even wrong, in some calculations; please let us know if that is the case, as well as suggestions for new commands of functionality that you would like to use. And, well, we do not have any real documentation yet, just very few examples, without any explanation, in this link: [http://qmdirac.weebly.com/examples.html][2] &#xD;
Anyway I hope our efforts can be of some help to your research and teaching work. Hope to hear from you or from your students soon in this forum.&#xD;
&#xD;
Jose&#xD;
&#xD;
Mexico&#xD;
&#xD;
&#xD;
  [1]: http://qmdirac.weebly.com/beta-testers.html&#xD;
  [2]: http://qmdirac.weebly.com/examples.html</description>
    <dc:creator>Jose Gomez</dc:creator>
    <dc:date>2017-05-08T20:14:25Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1078649">
    <title>Avoid anomalous behavior of Remove[&amp;#034;Global`*&amp;#034;]? with Quit[]?</title>
    <link>https://community.wolfram.com/groups/-/m/t/1078649</link>
    <description>I want to use standard engineering notation, so I use Symbolize[] to define a symbol q&amp;#039;&amp;#039; (q double prime) for the heat flux (heat transfer rate per unit area) as a composite of the letter q and double prime (actually two aliased single quotes: [Esc]&amp;#039;[Esc] [Esc]&amp;#039;[Esc]).  I also want to use subscripts to denote the heat flux at different locations, e.g., the heat flux through a liquid film is represented by&#xD;
    &#xD;
    \!\(\*SubsuperscriptBox[\(q\), \(film\), \(\[Prime]\[Prime]\)]\)&#xD;
&#xD;
My example code is appended below.&#xD;
&#xD;
The problem arises when  I rerun the notebook using either Shift-Enter or Evaluate Notebook. The first time I run the code, I get the expected answer &#xD;
&#xD;
    \!\(\*SubsuperscriptBox[\(q\), \(film\), \(\[Prime]\[Prime]\)]\))^2&#xD;
&#xD;
If I run the code a second time, I get the same result again (as expected).  A third time, same result. &#xD;
&#xD;
However, if I run the code a fourth time, Mathematica seems to ignore the Remove[], and I get the unexpected result: &#xD;
&#xD;
    f[\!\(\*SubsuperscriptBox[\(q\), \(film\), \(\[Prime]\[Prime]\)]\)]=625&#xD;
&#xD;
The problem disappears if I append Quit[] as the final statement. &#xD;
&#xD;
I&amp;#039;m running Mathematica 11.1.1.0.&#xD;
&#xD;
Questions: &#xD;
&#xD;
 1. Why does Mathematica ignore Remove[].&#xD;
 2. Why does it wait until the fourth time through the code to do so?&#xD;
 3. Why is Quit[] required to get the correct behavior?&#xD;
&#xD;
I&amp;#039;m not completely sure if this is a problem with Notation, with Remove, or some interaction of the two. &#xD;
&#xD;
Thanks.&#xD;
&#xD;
Example code:&#xD;
&#xD;
    Remove[&amp;#034;Global`*&amp;#034;]&#xD;
    Needs[&amp;#034;Notation`&amp;#034;];&#xD;
    &#xD;
    Symbolize[&#xD;
    ParsedBoxWrapper[&#xD;
    SuperscriptBox[&amp;#034;q&amp;#034;, &amp;#034;\[Prime]\[Prime]&amp;#034;]]];&#xD;
    Symbolize[&#xD;
    ParsedBoxWrapper[&#xD;
    SubsuperscriptBox[&amp;#034;q&amp;#034;, &amp;#034;_&amp;#034;, &amp;#034;\[Prime]\[Prime]&amp;#034;]]];&#xD;
    &#xD;
    f[\[Xi]_] := \[Xi]^2&#xD;
    f[&#xD;
    \!\(\*SubsuperscriptBox[\(q\), \(film\), \(\[Prime]\[Prime]\)]\)]&#xD;
    \!\(&#xD;
    \*SubsuperscriptBox[\(q\), \(film\), \(\[Prime]\[Prime]\)] = 25. \)</description>
    <dc:creator>Glenn Carlson</dc:creator>
    <dc:date>2017-05-01T12:14:52Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1818557">
    <title>Use the Channel framework with an external MQTT broker?</title>
    <link>https://community.wolfram.com/groups/-/m/t/1818557</link>
    <description>I can connect to an external MQTT broker with the MQTTLink` library.&#xD;
&#xD;
Here below an example using the Mosquito.org testing service:&#xD;
&#xD;
    Get@&amp;#034;MQTTLink`&amp;#034;&#xD;
    &#xD;
    imAclientForExternal = CreateClient[];&#xD;
    &#xD;
    ConnectClient[imAclientForExternal, &amp;#034;test.mosquitto.org:1883&amp;#034;];&#xD;
    &#xD;
    TopicSubscribe[imAclientForExternal, &amp;#034;wolframTest&amp;#034;, &#xD;
      &amp;#034;MessageReceivedFunction&amp;#034; :&amp;gt; (Print[&#xD;
          ByteArrayToString[#3[&amp;#034;Data&amp;#034;]]] &amp;amp;)];&#xD;
    &#xD;
    TopicPublish[imAclientForExternal, &#xD;
      &amp;#034;wolframTest&amp;#034; -&amp;gt; &amp;#034;my personal message&amp;#034;];&#xD;
    &#xD;
    TopicUnsubscribe[imAclientForExternal, &amp;#034;wolframTest&amp;#034;]&#xD;
&#xD;
But since this is not a documented library, I was wondering if it is possible, and how, to do exactly the same with the Channel framework.</description>
    <dc:creator>Pedro Fonseca</dc:creator>
    <dc:date>2019-11-03T17:33:20Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1365397">
    <title>MathEd: For German users of Mathematica</title>
    <link>https://community.wolfram.com/groups/-/m/t/1365397</link>
    <description>In Germany, there is the association *Zwanzigeins* that wants to change the awkward German pronunciation of numbers into something more agreeable. For example, the current German pronunciation of 21 is &amp;#034;ein und zwanzig&amp;#034; which is opposite to more agreeable English &amp;#034;twenty one&amp;#034;. Obviously most Germans get used to the current pronunciation but for education it appears to create a challenge for number sense.&#xD;
&#xD;
The board of this German association Zwanzigeins has decided to support my research towards creating an ISO standard for the pronunciation of numbers. See this link to their summary of this:  &amp;#034;Initiative zur internationalen Normung der Zahlenaussprache&amp;#034;&#xD;
https://zwanzigeins.jetzt/infos/normung-der-aussprache&#xD;
&#xD;
PM 1. My *updated* Mathematica notebook for testing this pronunciation is in the attachment or at https://doi.org/10.5281/zenodo.1244008 When you are a German user of Mathematica, please check this out and run some tests with this notebook and package, because when you like the analysis and the power of expression by Mathematica, then you might play an important role in supporting all of this (e.g. by demonstrating the application to others).&#xD;
&#xD;
PM 2. An earlier message was: http://community.wolfram.com/groups/-/m/t/1341254</description>
    <dc:creator>Thomas Colignatus</dc:creator>
    <dc:date>2018-06-28T14:31:35Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1666112">
    <title>Easy Websites with EasyIDE</title>
    <link>https://community.wolfram.com/groups/-/m/t/1666112</link>
    <description>#Cross-Post [Here](https://b3m2a1.github.io/making-a-website-with-easyide.html)&#xD;
&#xD;
---&#xD;
&#xD;
A common thing that people want to do one they have a nice bit of code is that they way to share it with the world. That was me ~2 years ago and so I went out, found a  [nice static website builder](https://docs.getpelican.com/en/stable/) , wrote a notebook to Markdown generator that would handle all the most common cell types I used, and then figured out how to deploy this to the  [Wolfram Cloud](https://www.wolframcloud.com/) . It worked nicely for a while, but after a bit I wanted more control over how the site was built, so I sat down, wrote a Markdown to XML parser, wrote a website generation framework, and worked up what eventually became  [Ems](https://github.com/b3m2a1/Ems) , and used this to build a  [Mathematica tutorial](https://mresources.github.io/tutorial/) from some stuff I wrote for some chemists I used to work with.&#xD;
&#xD;
These days few of my sites are on the Wolfram Cloud anymore, as it&amp;#039;s slow, prone to losing CSS, the URLs look like a scam website, and so on and so forth. But I still use the site builder. All the time. For example, the  [Mathematica paclet server](https://paclets.github.io/PacletServer/) I built to host Mathematica packages and make it possible install them in a single line is built with this site generator.&#xD;
&#xD;
And so when I built out EasyIDE one of the first things I wanted to do was integrate my  [site builder](https://github.com/b3m2a1/Ems) (via Ems) into the thing. In fact, this blog post itself is being written with EasyIDE:&#xD;
&#xD;
![post29-966299916507913566](https://b3m2a1.github.io/img/post29-966299916507913566.png)&#xD;
&#xD;
And now that I have this stuff built out, let&amp;#039;s start  to make a blog.&#xD;
&#xD;
&#xD;
# Getting Started&#xD;
&#xD;
## Getting EasyIDE&#xD;
&#xD;
If you need to get EasyIDE you can get it off the  [paclet server](https://paclets.github.io/PacletServer/easyide.html) . From there you can follow the video here to choose a stylesheet and get it set up:&#xD;
&#xD;
[![start](https://i.stack.imgur.com/0Vqra.png)](https://www.youtube.com/watch?v=TMHiN9Ov2fQ)&#xD;
&#xD;
## Creating the Site Root&#xD;
&#xD;
This is probably the most involved part of the processand don&amp;#039;t worry it&amp;#039;s really not very involved at all. What we do is first create a directory for our websites to save to, go to  `Plugins ? Site Builder ? Initialize` and follow the dialog there. After we have a new site, we reassign our project directory to that of the site we want to build and then we&amp;#039;re good to go. Here&amp;#039;s a video for that:&#xD;
&#xD;
[![site root](https://i.stack.imgur.com/o8Gv9.png)](https://www.youtube.com/watch?v=P5-_-PhWqGs)&#xD;
&#xD;
&#xD;
# Creating Content&#xD;
&#xD;
&#xD;
## Writing Content&#xD;
&#xD;
Content is divided into two types: pages and posts. Posts are articles, these will be managed and listed on the site index. Pages are more for site info and will not end up on the site index. There should already be a sample page and sample post. We can open up Post #1 using the file browser:&#xD;
&#xD;
![post29-5467238420810729513](https://b3m2a1.github.io/img/post29-5467238420810729513.png)&#xD;
&#xD;
You can write pretty much whatever you want here and it will get saved to Markdown, which is the format used to build the site. To maximize similarity between the appearance of the post as written and the post as deployed, it makes sense to use mostly formats that can easily be exported to the web. That means using simple cell styles like  `&amp;#034;Section&amp;#034;` ,  `&amp;#034;Subsection&amp;#034;` ,  `&amp;#034;Code&amp;#034;` ,  `&amp;#034;Text&amp;#034;` ,  `&amp;#034;Item&amp;#034;` , etc. and putting images in their own cells (here I&amp;#039;d recommend putting them in  `&amp;#034;Text&amp;#034;` cells as otherwise the exporter thinks they&amp;#039;re input).&#xD;
&#xD;
&#xD;
## Making New Content&#xD;
&#xD;
To make a new post or new page you can use the entries under  `Plugins ? Site Builder ? New` . These will open up a new page or post or whatnot that you can put whatever you want in.&#xD;
&#xD;
&#xD;
## Content Metadata&#xD;
&#xD;
At the top of the content notebook you&amp;#039;ll see a metadata section that looks something like this:&#xD;
&#xD;
![post29-7449085702041565717](https://b3m2a1.github.io/img/post29-7449085702041565717.png)&#xD;
&#xD;
It&amp;#039;s here where we set all the page- or post-specific parameters. You can see there&amp;#039;s a space for the list of authors, list of tags, and list of categories. You can also choose the title for your article as well as its slug, which is the name that is generally given to the portion of the URL coming after the root. E.g. in  [https://b3m2a1.github.io/making-docs-with-easyide.html](https://b3m2a1.github.io/making-docs-with-easyide.html) the slug is making-docs-with-easyide. This slug will generally be automatically constructed from the title, but if you want a different one you can have it.&#xD;
&#xD;
You can also customize higher-level things, like change how the Markdown is exported via the  `&amp;#034;ExportOptions&amp;#034;` metadata tag. For example, if you want the Markdown to export to a different directory, you can do this like:&#xD;
&#xD;
    &amp;#034;ExportOptions&amp;#034;-&amp;gt;{&amp;#034;Directory&amp;#034;-&amp;gt;&amp;#034;..&amp;#034;}&#xD;
&#xD;
Which will export the files to the directory one up from the current notebook directory. You can also specify that you&amp;#039;d like all your code to export as copyable images as in the docs, what types of cells should be exported, whether to export math cells via MathJAX or not, whether to use HTML to format more complicated format types, whether to include invisible anchor HTML elements before each section for easy of jumping, what kind of indentation to use for code cells, etc. It&amp;#039;s not worth discussing all the possible customizations right now, so if you want to know if a certain customization is supported or request new ones it is probably easiest to  [ask that here](https://github.com/b3m2a1/Ems/issues) .&#xD;
&#xD;
&#xD;
# Building The Site&#xD;
&#xD;
Now that we have content, we can build our site. This is pretty easy to do generally via   `Plugins ? Site Builder ? Build Site` . Here&amp;#039;s an example of how this works: &#xD;
&#xD;
[![build](https://i.stack.imgur.com/2qra6.png)](https://www.youtube.com/watch?v=4Z7lGg6bNbs)&#xD;
&#xD;
## Build Options&#xD;
&#xD;
As you can see in the video, when you request a build there are a number of options you can toggle which will change how your site gets built (and how fast it builds).&#xD;
&#xD;
*  If  `Generate Content` is turned off, not pages or posts will be built.&#xD;
&#xD;
*  If  `Generate Aggregations` is off, no new tag/author/category pages will be builtas the site size grows this can sometimes yield huge savings. &#xD;
&#xD;
*  If  `Generate Index` is off, no index pages are built. &#xD;
&#xD;
*  If  `Generate Search` is off, no search page (using  [tipue search](http://www.tipue.com/search/) ) will be built. &#xD;
&#xD;
*  If  `Use Cache` is off, the content cache that is stored to speed up builds will be ignored. &#xD;
&#xD;
Finally, the other three options seem self-explanatory, but if not let me know and I&amp;#039;ll write up what they do.&#xD;
&#xD;
&#xD;
## Site Metadata&#xD;
&#xD;
Every site has a file  `SiteConfig.wl` that specifies a bunch of more serious options that get fed into the build process. Here&amp;#039;s part of what that looks like:&#xD;
&#xD;
![post29-7608927685363373399](https://b3m2a1.github.io/img/post29-7608927685363373399.png)&#xD;
&#xD;
The specific options that are here will differ according to the theme used for the website, but these are the standard ones for a regular blog-type website.&#xD;
&#xD;
&#xD;
## Site Themes&#xD;
&#xD;
All sites have a theme that comes with them, which is basically just a pile of XML templates and CSS and JS and such that the extracted content from each page/post gets fed into. My themes work generally the same as pelican themes, so you can find some info on the layout  [here](https://docs.getpelican.com/en/stable/themes.html) . The major difference is that my themes use the  [```XMLTemplate```](https://reference.wolfram.com/language/ref/XMLTemplate.html) framework and so writing them is a bit more annoying that writing pelican themes would be. I&amp;#039;ve sunk a good amount of time and effort into make the [ themes I&amp;#039;ve already written](https://github.com/b3m2a1/Ems/tree/master/Resources/Themes) pretty full featured, though. Given that, if you want a site-specific theme, you just need to make a directory called  `theme` in the site root, copy the content of one of my existing themes in and modify that. If you want to write a new theme from scratch, I can find the time to write a tutorial about how to do that, too.&#xD;
&#xD;
&#xD;
# Deploying The Site&#xD;
&#xD;
Finally we have a site that looks and feels how we want it to, so it&amp;#039;s time to deploy. The way I would do this is:&#xD;
&#xD;
*  Create a git repository in the current directory (via the menu)&#xD;
&#xD;
*  Create an empty repository on GitHub&#xD;
&#xD;
![post29-6276657249628752117](https://b3m2a1.github.io/img/post29-6276657249628752117.png)&#xD;
&#xD;
*  Set the current repository remote to that of the GitHub repo&#xD;
&#xD;
*  Change the  `output` folder name to  `docs`&#xD;
&#xD;
*  Push to GitHub&#xD;
&#xD;
*  Turn on GitHub sites for your repository&#xD;
&#xD;
![post29-9018686530683978441](https://b3m2a1.github.io/img/post29-9018686530683978441.png)&#xD;
&#xD;
Here&amp;#039;s an example of that in action:&#xD;
&#xD;
[![deploy](https://i.stack.imgur.com/M2dWH.png)](https://www.youtube.com/watch?v=L_r1yidV5F0?autoplay)&#xD;
&#xD;
# WLSites.GitHub.IO&#xD;
&#xD;
At this point, I don&amp;#039;t have plans to radically revamp this, but one thing I could imagine being useful work be a centralized place for hosting Mathematica-generated websites (doesn&amp;#039;t have to be made with EasyIDE/Ems).&#xD;
&#xD;
To make this easier I created a GitHub organization called WLSites where people can contribute sites if they want. All they&amp;#039;ll need to do is  [let me know here](https://github.com/wlsites/wlsites.github.io/issues) what they&amp;#039;d like their site to be called and provide a quick description for it. Once I have that I&amp;#039;ll make a new repo for them, and give them complete access to that. &#xD;
&#xD;
Here&amp;#039;s an example of the kind of thing that I&amp;#039;m looking for:&#xD;
&#xD;
&amp;gt; New Site: b3m2a1&#xD;
&amp;gt;&#xD;
&amp;gt; &amp;lt;br&amp;gt;&#xD;
&amp;gt; A personal page for b3m2a1&#xD;
&#xD;
The benefit of this is that many sites can be hosted under the same roof. I&amp;#039;ll also make a nice index page that updates every time a new site is added so that people can find your site if they simply go to  [wlsites.github.io](https://wlsites.github.io/) .&#xD;
&#xD;
In fact, if you want to add a site and want to host the repo yourself that&amp;#039;s also fine by me. I&amp;#039;ll just add your site and info to the repo and your site will appear on the index.</description>
    <dc:creator>b3m2a1 ​ </dc:creator>
    <dc:date>2019-04-22T07:40:24Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/311582">
    <title>Astronomical Algorithms (New function: Phases of the Moon)</title>
    <link>https://community.wolfram.com/groups/-/m/t/311582</link>
    <description>Hi,&#xD;
&#xD;
A new function to the package:&#xD;
&#xD;
PhasesOfTheMoon[{y,m,d}]&#xD;
&#xD;
Marcel.</description>
    <dc:creator>Marcel Pelletier</dc:creator>
    <dc:date>2014-08-04T03:52:12Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/830659">
    <title>Implement Markov Chain Monte Carlo with built-in functions?</title>
    <link>https://community.wolfram.com/groups/-/m/t/830659</link>
    <description>Hi All,&#xD;
&#xD;
I find this [&amp;#039;MCMC&amp;#039; package][1] that can perform Markov Chain Monte Carlo simulations.&#xD;
&#xD;
However, I found this package doesn&amp;#039;t use much of the built-in stochastic process functions.&#xD;
&#xD;
Also, due to my very limited knowledge of stochastic processes, I&amp;#039;d like to get better understanding of MCMC via a more Mathematica way.&#xD;
&#xD;
As such, I&amp;#039;m wondering if such MCMC simulation can be performed with higher-level built-in stochastic functions (e.g. `RandomFunction`, `HiddenMarkovProcess`)?&#xD;
&#xD;
Note: Cross-posted at [StackExchange][2].&#xD;
&#xD;
&#xD;
  [1]: https://github.com/joshburkart/mathematica-mcmc&#xD;
  [2]: http://mathematica.stackexchange.com/questions/111224/how-to-implement-markov-chain-monte-carlo-with-built-in-functions?noredirect=1#comment301914_111224</description>
    <dc:creator>Ting Sun</dc:creator>
    <dc:date>2016-03-27T23:36:50Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1742031">
    <title>CCompile  a C++ code original from Visual Studio 2017</title>
    <link>https://community.wolfram.com/groups/-/m/t/1742031</link>
    <description>I will like some help completing this compilation . It runs fine in Visual Studio 2017 and the solution projet is available at Github [here][1]&#xD;
&#xD;
My Mathematic code has a problem identifying one of the header files php.c . I went to the documentation ut can not figure how to include the file here since not sure where is in the VS2017 directory.&#xD;
&#xD;
Here is the code in Mathematica&#xD;
&#xD;
    Needs[&amp;#034;CCompilerDriver`&amp;#034;]&#xD;
    CCompilers[]&#xD;
    hello = CreateExecutable[&amp;#034;&#xD;
    // MC777Scattering.cpp : This file contains the &amp;#039;main&amp;#039; function. \&#xD;
    Program execution begins and ends there.&#xD;
    //&#xD;
    &#xD;
    /********************************************&#xD;
    * Original work from Biomedical Optics Series&#xD;
    Steven L. Jacques, Scott A. Prahl &#xD;
    *  mc321.c    , in ANSI Standard C programing language&#xD;
    *&#xD;
    *  Monte Carlo simulation yielding spherical, cylindrical, and \&#xD;
    planar&#xD;
    *    responses to an isotropic point source in an infinite \&#xD;
    homogeneous&#xD;
    *    medium with no boundaries. This program is a minimal Monte \&#xD;
    Carlo&#xD;
    *    program scoring photon distributions in spherical, cylindrical,&#xD;
    *    and planar shells.&#xD;
    *&#xD;
    *  by Steven L. Jacques based on prior collaborative work&#xD;
    *    with Lihong Wang, Scott Prahl, and Marleen Keijzer.&#xD;
    *    partially funded by the NIH (R29-HL45045, 1991-1997) and&#xD;
    *    the DOE (DE-FG05-91ER617226, DE-FG03-95ER61971, 1991-1999).&#xD;
    *&#xD;
    *  A published report illustrates use of the program:&#xD;
    *    S. L. Jacques: \&amp;#034;Light distributions from point, line, and \&#xD;
    plane&#xD;
    *    sources for photochemical reactions and fluorescence in turbid&#xD;
    *    biological tissues,\&amp;#034; Photochem. Photobiol. 67:23-32, 1998.&#xD;
    *&#xD;
    *  Trivial fixes to remove warnings SAP, 11/2017&#xD;
    *  Theodore Info: &#xD;
    *  The problem with the code was the fopen function. This function \&#xD;
    is deprecated&#xD;
    *  and has been replace with the fopen_s function whose parameters \&#xD;
    are as follows&#xD;
    *  fopen_s(&amp;lt;pointer to a file stream e.g FILE* &amp;gt;, &amp;lt;filename&amp;gt;, \&#xD;
    &amp;lt;options e.g w, r&amp;gt;)&#xD;
    *  Modified by Abohweyere Oghenefejiro Theodore of Durham College \&#xD;
    Canada&#xD;
    *  Modified by Jose E. Calderon University of Puerto Rico for a \&#xD;
    solution in VS C++ 2017&#xD;
    **********/&#xD;
    &#xD;
    #include &amp;lt;math.h&amp;gt;&#xD;
    #include &amp;lt;stdio.h&amp;gt;&#xD;
    #include \&amp;#034;pch.h\&amp;#034;&#xD;
    #include &amp;lt;iostream&amp;gt;&#xD;
    #define	PI          3.1415926&#xD;
    #define	LIGHTSPEED	2.997925E10 /* in vacuo speed of light [cm/s] */&#xD;
    #define ALIVE       1   		/* if photon not yet terminated */&#xD;
    #define DEAD        0    		/* if photon is to be terminated */&#xD;
    #define THRESHOLD   0.01		/* used in roulette */&#xD;
    #define CHANCE      0.1  		/* used in roulette */&#xD;
    #define COS90D      1.0E-6&#xD;
    /* If cos(theta) &amp;lt;= COS90D, theta &amp;gt;= PI/2 - 1e-6 rad. */&#xD;
    #define ONE_MINUS_COSZERO 1.0E-12&#xD;
    	 /* If 1-cos(theta) &amp;lt;= ONE_MINUS_COSZERO, fabs(theta) &amp;lt;= 1e-6 rad. \&#xD;
    */&#xD;
    	 /* If 1+cos(theta) &amp;lt;= ONE_MINUS_COSZERO, fabs(PI-theta) &amp;lt;= 1e-6 \&#xD;
    rad. */&#xD;
    #define SIGN(x)           ((x)&amp;gt;=0 ? 1:-1)&#xD;
    #define InitRandomGen    (double) RandomGen(0, 1, NULL)&#xD;
    	 /* Initializes the seed for the random number generator. */&#xD;
    #define RandomNum        (double) RandomGen(1, 0, NULL)&#xD;
    	 /* Calls for a random number from the randum number generator. */&#xD;
    &#xD;
    /* DECLARE FUNCTION */&#xD;
    double RandomGen(char Type, long Seed, long *Status);&#xD;
    /* Random number generator */&#xD;
    &#xD;
    &#xD;
    int main() {&#xD;
    &#xD;
    	/* Propagation parameters */&#xD;
    	register double	x, y, z;    /* photon position */&#xD;
    	register double	ux, uy, uz; /* photon trajectory as cosines */&#xD;
    	register double  uxx, uyy, uzz;	/* temporary values used during \&#xD;
    SPIN */&#xD;
    	register double	s;          /* step sizes. s = -log(RND)/mus [cm] */&#xD;
    	register double	costheta;   /* cos(theta) */&#xD;
    	register double  sintheta;   /* sin(theta) */&#xD;
    	register double	cospsi;     /* cos(psi) */&#xD;
    	register double  sinpsi;     /* sin(psi) */&#xD;
    	register double	psi;        /* azimuthal angle */&#xD;
    	register double	i_photon;   /* current photon */&#xD;
    	register double	W;          /* photon weight */&#xD;
    	register double	absorb;     /* weighted deposited in a step due to \&#xD;
    absorption */&#xD;
    	register short   photon_status;  /* flag = ALIVE=1 or DEAD=0 */&#xD;
    &#xD;
    	/* other variables */&#xD;
    	register double	Csph[1001];  /* spherical   photon concentration \&#xD;
    CC[ir=0..100] */&#xD;
    	register double	Ccyl[1001];  /* cylindrical photon concentration \&#xD;
    CC[ir=0..100] */&#xD;
    	register double	Cpla[1001];  /* planar      photon concentration \&#xD;
    CC[ir=0..100] */&#xD;
    	register double	Fsph;       /* fluence in spherical shell */&#xD;
    	register double	Fcyl;       /* fluence in cylindrical shell */&#xD;
    	register double	Fpla;       /* fluence in planar shell */&#xD;
    	register double	mua;        /* absorption coefficient [cm^-1] */&#xD;
    	register double	mus;        /* scattering coefficient [cm^-1] */&#xD;
    	register double	g;          /* anisotropy [-] */&#xD;
    	register double	albedo;     /* albedo of tissue */&#xD;
    	register double	nt;         /* tissue index of refraction */&#xD;
    	register double	Nphotons;   /* number of photons in simulation */&#xD;
    	register short	NR;         /* number of radial positions */&#xD;
    	register double	radial_size;  /* maximum radial size */&#xD;
    	register double	r;          /* radial position */&#xD;
    	register double  dr;         /* radial bin size */&#xD;
    	register short	ir;         /* index to radial position */&#xD;
    	register double  shellvolume;  /* volume of shell at radial \&#xD;
    position r */&#xD;
    &#xD;
    	/* dummy variables */&#xD;
    	register double  rnd;        /* assigned random value 0-1 */&#xD;
    	register double	temp;    /* dummy variables */&#xD;
    	FILE*	target;     /* point to output file */&#xD;
    &#xD;
    &#xD;
    	/**** INPUT&#xD;
    	   Input the optical properties&#xD;
    	   Input the bin and array sizes&#xD;
    	   Input the number of photons&#xD;
    	*****/&#xD;
    &#xD;
    	mua = 1.0;     /* cm^-1 */&#xD;
    	mus = 0.1;  /* cm^-1 */&#xD;
    	g = 0.090;&#xD;
    	nt = 1.33;&#xD;
    	Nphotons = 100000000; /* set number of photons in simulation */&#xD;
    	radial_size = 6.0;   /* cm, total range over which bins extend */&#xD;
    	NR = 1000;	 /* set number of bins.  */&#xD;
    	   /* IF NR IS ALTERED, THEN USER MUST ALSO ALTER THE ARRAY \&#xD;
    DECLARATION TO A SIZE = NR + 1. */&#xD;
    	dr = radial_size / NR;  /* cm */&#xD;
    	albedo = mus / (mus + mua);&#xD;
    &#xD;
    &#xD;
    	/**** INITIALIZATIONS&#xD;
    	*****/&#xD;
    	i_photon = 0;&#xD;
    	InitRandomGen;&#xD;
    	for (ir = 0; ir &amp;lt;= NR; ir++) {&#xD;
    		Csph[ir] = 0;&#xD;
    		Ccyl[ir] = 0;&#xD;
    		Cpla[ir] = 0;&#xD;
    	}&#xD;
    &#xD;
    	/**** RUN&#xD;
    	   Launch N photons, initializing each one before progation.&#xD;
    	*****/&#xD;
    	do {&#xD;
    &#xD;
    &#xD;
    		/**** LAUNCH&#xD;
    		   Initialize photon position and trajectory.&#xD;
    		   Implements an isotropic point source.&#xD;
    		*****/&#xD;
    		i_photon += 1;	/* increment photon count */&#xD;
    		W = 1.0;                    /* set photon weight to one */&#xD;
    		photon_status = ALIVE;      /* Launch an ALIVE photon */&#xD;
    &#xD;
    		x = 0;                      /* Set photon position to origin. */&#xD;
    		y = 0;&#xD;
    		z = 0;&#xD;
    &#xD;
    		/* Randomly set photon trajectory to yield an isotropic source. */&#xD;
    		costheta = 2.0*RandomNum - 1.0;&#xD;
    		sintheta = sqrt(1.0 - costheta * costheta);	/* sintheta is always \&#xD;
    positive */&#xD;
    		psi = 2.0*PI*RandomNum;&#xD;
    		ux = sintheta * cos(psi);&#xD;
    		uy = sintheta * sin(psi);&#xD;
    		uz = costheta;&#xD;
    &#xD;
    &#xD;
    		/* HOP_DROP_SPIN_CHECK&#xD;
    		   Propagate one photon until it dies as determined by ROULETTE.&#xD;
    		*******/&#xD;
    		do {&#xD;
    &#xD;
    &#xD;
    			/**** HOP&#xD;
    			   Take step to new position&#xD;
    			   s = stepsize&#xD;
    			   ux, uy, uz are cosines of current photon trajectory&#xD;
    			*****/&#xD;
    			while ((rnd = RandomNum) &amp;lt;= 0.0);   /* yields 0 &amp;lt; rnd &amp;lt;= 1 */&#xD;
    			s = -log(rnd) / (mua + mus);          /* Step size.  Note: log() \&#xD;
    is base e */&#xD;
    			x += s * ux;                        /* Update positions. */&#xD;
    			y += s * uy;&#xD;
    			z += s * uz;&#xD;
    &#xD;
    &#xD;
    			/**** DROP&#xD;
    			   Drop photon weight (W) into local bin.&#xD;
    			*****/&#xD;
    			absorb = W * (1 - albedo);      /* photon weight absorbed at \&#xD;
    this step */&#xD;
    			W -= absorb;                  /* decrement WEIGHT by amount \&#xD;
    absorbed */&#xD;
    &#xD;
    			/* spherical */&#xD;
    			r = sqrt(x*x + y * y + z * z);    /* current spherical radial \&#xD;
    position */&#xD;
    			ir = (short)(r / dr);           /* ir = index to spatial bin */&#xD;
    			if (ir &amp;gt;= NR) ir = NR;        /* last bin is for overflow */&#xD;
    			Csph[ir] += absorb;           /* DROP absorbed weight into bin */&#xD;
    &#xD;
    			/* cylindrical */&#xD;
    			r = sqrt(x*x + y * y);          /* current cylindrical radial \&#xD;
    position */&#xD;
    			ir = (short)(r / dr);           /* ir = index to spatial bin */&#xD;
    			if (ir &amp;gt;= NR) ir = NR;        /* last bin is for overflow */&#xD;
    			Ccyl[ir] += absorb;           /* DROP absorbed weight into bin */&#xD;
    &#xD;
    			/* planar */&#xD;
    			r = fabs(z);                  /* current planar radial position */&#xD;
    			ir = (short)(r / dr);           /* ir = index to spatial bin */&#xD;
    			if (ir &amp;gt;= NR) ir = NR;        /* last bin is for overflow */&#xD;
    			Cpla[ir] += absorb;           /* DROP absorbed weight into bin */&#xD;
    &#xD;
    &#xD;
    		 /**** SPIN&#xD;
    			Scatter photon into new trajectory defined by theta and psi.&#xD;
    			Theta is specified by cos(theta), which is determined&#xD;
    			based on the Henyey-Greenstein scattering function.&#xD;
    			Convert theta and psi into cosines ux, uy, uz.&#xD;
    		 *****/&#xD;
    		 /* Sample for costheta */&#xD;
    			rnd = RandomNum;&#xD;
    			if (g == 0.0)&#xD;
    				costheta = 2.0*rnd - 1.0;&#xD;
    			else {&#xD;
    				double temp = (1.0 - g * g) / (1.0 - g + 2 * g*rnd);&#xD;
    				costheta = (1.0 + g * g - temp * temp) / (2.0*g);&#xD;
    			}&#xD;
    			sintheta = sqrt(1.0 - costheta * costheta); /* sqrt() is faster \&#xD;
    than sin(). */&#xD;
    &#xD;
    			/* Sample psi. */&#xD;
    			psi = 2.0*PI*RandomNum;&#xD;
    			cospsi = cos(psi);&#xD;
    			if (psi &amp;lt; PI)&#xD;
    				sinpsi = sqrt(1.0 - cospsi * cospsi);     /* sqrt() is faster \&#xD;
    than sin(). */&#xD;
    			else&#xD;
    				sinpsi = -sqrt(1.0 - cospsi * cospsi);&#xD;
    &#xD;
    			/* New trajectory. */&#xD;
    			if (1 - fabs(uz) &amp;lt;= ONE_MINUS_COSZERO) {      /* close to \&#xD;
    perpendicular. */&#xD;
    				uxx = sintheta * cospsi;&#xD;
    				uyy = sintheta * sinpsi;&#xD;
    				uzz = costheta * SIGN(uz);   /* SIGN() is faster than division. \&#xD;
    */&#xD;
    			}&#xD;
    			else {					/* usually use this option */&#xD;
    				temp = sqrt(1.0 - uz * uz);&#xD;
    				uxx = sintheta * (ux * uz * cospsi - uy * sinpsi) / temp + ux * \&#xD;
    costheta;&#xD;
    				uyy = sintheta * (uy * uz * cospsi + ux * sinpsi) / temp + uy * \&#xD;
    costheta;&#xD;
    				uzz = -sintheta * cospsi * temp + uz * costheta;&#xD;
    			}&#xD;
    &#xD;
    			/* Update trajectory */&#xD;
    			ux = uxx;&#xD;
    			uy = uyy;&#xD;
    			uz = uzz;&#xD;
    &#xD;
    &#xD;
    			/**** CHECK ROULETTE&#xD;
    			   If photon weight below THRESHOLD, then terminate photon using \&#xD;
    Roulette technique.&#xD;
    			   Photon has CHANCE probability of having its weight increased \&#xD;
    by factor of 1/CHANCE,&#xD;
    			   and 1-CHANCE probability of terminating.&#xD;
    			*****/&#xD;
    			if (W &amp;lt; THRESHOLD) {&#xD;
    				if (RandomNum &amp;lt;= CHANCE)&#xD;
    					W /= CHANCE;&#xD;
    				else photon_status = DEAD;&#xD;
    			}&#xD;
    &#xD;
    &#xD;
    		} /* end STEP_CHECK_HOP_SPIN */&#xD;
    		while (photon_status == ALIVE);&#xD;
    		/* If photon dead, then launch new photon. */&#xD;
    	} /* end RUN */&#xD;
    	while (i_photon &amp;lt; Nphotons);&#xD;
    &#xD;
    &#xD;
    	/**** SAVE&#xD;
    	   Convert data to relative fluence rate [cm^-2] and save to file \&#xD;
    called \&amp;#034;mcmin321.out\&amp;#034;.&#xD;
    	   Theodore: Here fopen(&amp;lt;filename&amp;gt;, &amp;lt;options&amp;gt;) has been replaced \&#xD;
    with&#xD;
    	   fopen_s(&amp;lt;pointer to a file stream e.g FILE* &amp;gt;, &amp;lt;filename&amp;gt;, \&#xD;
    &amp;lt;options e.g w, r&amp;gt;)&#xD;
    	*****/&#xD;
    fopen_s(&amp;amp;target, \&amp;#034;mc321_.out\&amp;#034;, \&amp;#034;w\&amp;#034;);&#xD;
    &#xD;
    	/* print header */&#xD;
    	fprintf(target, \&amp;#034;number of photons = %f\\n\&amp;#034;, Nphotons);&#xD;
    	fprintf(target, \&amp;#034;bin size = %5.5f [cm] \\n\&amp;#034;, dr);&#xD;
    	fprintf(target, \&amp;#034;last row is overflow. Ignore.\\n\&amp;#034;);&#xD;
    &#xD;
    	/* print column titles */&#xD;
    	fprintf(target, \&amp;#034;r [cm] \\t Fsph [1/cm2] \\t Fcyl [1/cm2] \\t \&#xD;
    Fpla [1/cm2]\n\&amp;#034;);&#xD;
    &#xD;
    	/* print data:  radial position, fluence rates for 3D, 2D, 1D \&#xD;
    geometries */&#xD;
    	for (ir = 0; ir &amp;lt;= NR; ir++) {&#xD;
    		/* r = sqrt(1.0/3 - (ir+1) + (ir+1)*(ir+1))*dr; */&#xD;
    		r = (ir + 0.5)*dr;&#xD;
    		shellvolume = 4.0*PI*r*r*dr; /* per spherical shell */&#xD;
    		Fsph = Csph[ir] / Nphotons / shellvolume / mua;&#xD;
    		shellvolume = 2.0*PI*r*dr;   /* per cm length of cylinder */&#xD;
    		Fcyl = Ccyl[ir] / Nphotons / shellvolume / mua;&#xD;
    		shellvolume = dr;            /* per cm2 area of plane */&#xD;
    		Fpla = Cpla[ir] / Nphotons / shellvolume / mua;&#xD;
    		fprintf(target, \&amp;#034;%5.5f \\t %4.3e \\t %4.3e \\t %4.3e \\n\&amp;#034;, r, \&#xD;
    Fsph, Fcyl, Fpla);&#xD;
    	}&#xD;
    &#xD;
    	fclose(target);&#xD;
    &#xD;
    &#xD;
    } /* end of main */&#xD;
    &#xD;
    &#xD;
    &#xD;
    /* SUBROUTINES */&#xD;
    &#xD;
    /**************************************************************************&#xD;
    *	RandomGen&#xD;
    *      A random number generator that generates uniformly&#xD;
    *      distributed random numbers between 0 and 1 inclusive.&#xD;
    *      The algorithm is based on:&#xD;
    *      W.H. Press, S.A. Teukolsky, W.T. Vetterling, and B.P.&#xD;
    *      Flannery, \&amp;#034;Numerical Recipes in C,\&amp;#034; Cambridge University&#xD;
    *      Press, 2nd edition, (1992).&#xD;
    *      and&#xD;
    *      D.E. Knuth, \&amp;#034;Seminumerical Algorithms,\&amp;#034; 2nd edition, vol. 2&#xD;
    *      of \&amp;#034;The Art of Computer Programming\&amp;#034;, Addison-Wesley, \&#xD;
    (1981).&#xD;
    *&#xD;
    *      When Type is 0, sets Seed as the seed. Make sure \&#xD;
    0&amp;lt;Seed&amp;lt;32000.&#xD;
    *      When Type is 1, returns a random number.&#xD;
    *      When Type is 2, gets the status of the generator.&#xD;
    *      When Type is 3, restores the status of the generator.&#xD;
    *&#xD;
    *      The status of the generator is represented by Status[0..56].&#xD;
    *&#xD;
    *      Make sure you initialize the seed before you get random&#xD;
    *      numbers.&#xD;
    ****/&#xD;
    #define MBIG 1000000000&#xD;
    #define MSEED 161803398&#xD;
    #define MZ 0&#xD;
    #define FAC 1.0E-9&#xD;
    &#xD;
    double RandomGen(char Type, long Seed, long *Status) {&#xD;
    	static long i1, i2, ma[56];   /* ma[0] is not used. */&#xD;
    	long        mj, mk;&#xD;
    	short       i, ii;&#xD;
    &#xD;
    	if (Type == 0) {              /* set seed. */&#xD;
    		mj = MSEED - (Seed &amp;lt; 0 ? -Seed : Seed);&#xD;
    		mj %= MBIG;&#xD;
    		ma[55] = mj;&#xD;
    		mk = 1;&#xD;
    		for (i = 1; i &amp;lt;= 54; i++) {&#xD;
    			ii = (21 * i) % 55;&#xD;
    			ma[ii] = mk;&#xD;
    			mk = mj - mk;&#xD;
    			if (mk &amp;lt; MZ)&#xD;
    				mk += MBIG;&#xD;
    			mj = ma[ii];&#xD;
    		}&#xD;
    		for (ii = 1; ii &amp;lt;= 4; ii++)&#xD;
    			for (i = 1; i &amp;lt;= 55; i++) {&#xD;
    				ma[i] -= ma[1 + (i + 30) % 55];&#xD;
    				if (ma[i] &amp;lt; MZ)&#xD;
    					ma[i] += MBIG;&#xD;
    			}&#xD;
    		i1 = 0;&#xD;
    		i2 = 31;&#xD;
    	}&#xD;
    	else if (Type == 1) {       /* get a number. */&#xD;
    		if (++i1 == 56)&#xD;
    			i1 = 1;&#xD;
    		if (++i2 == 56)&#xD;
    			i2 = 1;&#xD;
    		mj = ma[i1] - ma[i2];&#xD;
    		if (mj &amp;lt; MZ)&#xD;
    			mj += MBIG;&#xD;
    		ma[i1] = mj;&#xD;
    		return (mj * FAC);&#xD;
    	}&#xD;
    	else if (Type == 2) {       /* get status. */&#xD;
    		for (i = 0; i &amp;lt; 55; i++)&#xD;
    			Status[i] = ma[i + 1];&#xD;
    		Status[55] = i1;&#xD;
    		Status[56] = i2;&#xD;
    	}&#xD;
    	else if (Type == 3) {       /* restore status. */&#xD;
    		for (i = 0; i &amp;lt; 55; i++)&#xD;
    			ma[i + 1] = Status[i];&#xD;
    		i1 = Status[55];&#xD;
    		i2 = Status[56];&#xD;
    	}&#xD;
    	else&#xD;
    		puts(\&amp;#034;Wrong parameter to RandomGen().\&amp;#034;);&#xD;
    	return (0);&#xD;
    }&#xD;
    #undef MBIG&#xD;
    #undef MSEED&#xD;
    #undef MZ&#xD;
    #undef FAC&#xD;
    &#xD;
    &#xD;
    }&#xD;
    &amp;#034;, &amp;#034;hellomyfirst&amp;#034;, Language -&amp;gt; &amp;#034;C++&amp;#034;,&#xD;
    &amp;#034;Compiler&amp;#034; -&amp;gt; &#xD;
    CCompilerDriver`VisualStudioCompiler`VisualStudioCompiler, &#xD;
    &amp;#034;CompilerInstallation&amp;#034; -&amp;gt; &#xD;
    &amp;#034;C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community&amp;#034;,&#xD;
    &amp;#034;CompilerName&amp;#034; -&amp;gt; Automatic&#xD;
    ]&#xD;
    Import[&amp;#034;!&amp;#034; &amp;lt;&amp;gt; QuoteFile[hello], &amp;#034;Text&amp;#034;]&#xD;
&#xD;
  [1]: https://github.com/jecalderon/MC777Scattering</description>
    <dc:creator>Jose Calderon</dc:creator>
    <dc:date>2019-07-21T00:20:54Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1225366">
    <title>Is Dr. Chung&amp;#039;s symbolic package access available?</title>
    <link>https://community.wolfram.com/groups/-/m/t/1225366</link>
    <description>Dr. Chung recently received a reward from Wolfram for his symbolic package.  Does anyone know how to gain access?&#xD;
here is his book:&#xD;
[book][1]&#xD;
defunct link:&#xD;
http://symbcomp.gist.ac.kr/&#xD;
defunct 2011 sample:&#xD;
http://library.wolfram.com/infocenter/Conferences/8063/&#xD;
&#xD;
&#xD;
  [1]: https://link.springer.com/chapter/10.1007/978-3-662-44199-2_4</description>
    <dc:creator>Kay Herbert</dc:creator>
    <dc:date>2017-11-21T04:30:43Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/851429">
    <title>Package for organic molecules with multiple bonds</title>
    <link>https://community.wolfram.com/groups/-/m/t/851429</link>
    <description>Are there any chemists here? I&amp;#039;ve got something for you: My [multiple bonds Demonstration][1] is now also available [as a package][2].&#xD;
&#xD;
You can plot molecules from `ChemicalData[]` or from your own MOL files. The source only needs to contain information about the positions and multiplicity of the bonds, and of course about the positions and types of the atoms.&#xD;
&#xD;
Here are a few examples of the finished result (the package itself contains more notes about the technical aspects).&#xD;
&#xD;
    Needs[&amp;#034;multiBondPlot`&amp;#034;]&#xD;
    Multicolumn[Labeled[multiBondPlot[#],#]&amp;amp;/@{&amp;#034;Benzene&amp;#034;,&amp;#034;Caffeine&amp;#034;,&amp;#034;Acetonitrile&amp;#034;,&amp;#034;TNT&amp;#034;},2]&#xD;
&#xD;
![enter image description here][3]&#xD;
&#xD;
&#xD;
&#xD;
  [1]: http://demonstrations.wolfram.com/DisplayingMoleculesWithMultipleBonds/&#xD;
  [2]: http://library.wolfram.com/infocenter/MathSource/9430/&#xD;
  [3]: http://community.wolfram.com//c/portal/getImageAttachment?filename=molecules.png&amp;amp;userId=69107</description>
    <dc:creator>Bianca Eifert</dc:creator>
    <dc:date>2016-05-04T20:21:42Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1330671">
    <title>Creating a Mathematica Package Repository</title>
    <link>https://community.wolfram.com/groups/-/m/t/1330671</link>
    <description>This is a cross post of a blog post I wrote [here](https://www.wolframcloud.com/objects/b3m2a1/home/creating-a-mathematica-package-repository.html#main-content)&#xD;
&#xD;
---&#xD;
&#xD;
This post is going to detail how I set up one of my recent projectsand a project I hope outlasts my direct involvement in it.&#xD;
&#xD;
We&amp;#039;re going to talk about how to set up a custom paclet server in GitHub.&#xD;
&#xD;
## Paclet Servers Revisited&#xD;
&#xD;
I talked about paclet servers a while back in  [this post](building-a-mathematica-package-ecosystem-part-1.html) . Now we get to build on all of that work. Fundamentally, all we&amp;#039;re going to be doing is building a paclet server via the method discussed there, but instead of deploying to the Wolfram Cloud, and opaque, unknown (and hence untrusted),  [severely](http://community.wolfram.com/groups/-/m/t/1250045)   [lacking](http://community.wolfram.com/groups/-/m/t/1250055)  system we&amp;#039;ll deploy to GitHub, the defacto standard for code sharing and highly open and trusted system.&#xD;
&#xD;
To do this, we&amp;#039;ll mostly treat things as before, but it might be worth revisiting what we did before.&#xD;
&#xD;
### Using the Paclet Manager&#xD;
&#xD;
We&amp;#039;re going to hook in to Mathematica&amp;#039;s built-in package manager, called the  ```PacletManager``` . It&amp;#039;s called that because Mathematica packages are distributed as  ```.paclet```  files (which are just structured zip files with a  ```Paclet```  expression cooked in).&#xD;
&#xD;
If people know the server where a paclet is stored, they can install it as easy as:&#xD;
&#xD;
    PacletInstall[&#xD;
      &amp;#034;PacletName&amp;#034;,&#xD;
      &amp;#034;Site&amp;#034;-&amp;gt;&amp;#034;http://paclet.site/Server&amp;#034;&#xD;
      ]&#xD;
&#xD;
And so we&amp;#039;re trying to make that accessible.&#xD;
&#xD;
### Paclet Server Components&#xD;
&#xD;
To do that we need to expose a  ```Paclets```  directory where all of our paclet files will be stored and a  ```PacletSite.mz```  file that details the paclets that are stored there.&#xD;
&#xD;
Happily, I&amp;#039;d already built out the tool-chains for those previously, so I just had to adapt those to this project. The function that handles this is call  ```PacletServerAdd``` . It takes a paclet and stores it in that  ```Paclets```  directory and updates the  ```PacletSite.mz```  file to reflect this&#xD;
&#xD;
### Paclet Server Website&#xD;
&#xD;
The other part of a good paclet server is the interface that tells people what&amp;#039;s on it. For my own stuff I built out a set of paclet server pages that detail what&amp;#039;s available for download, the details of these, etc. As of the time I&amp;#039;m writing this for us this looks like:&#xD;
&#xD;
![18creatingamathematicapackagerepository-7826302109937894265](https://www.wolframcloud.com/objects/b3m2a1/home/img/18creatingamathematicapackagerepository-7826302109937894265.png)&#xD;
&#xD;
Although the design is subject to change.&#xD;
&#xD;
What&amp;#039;s important is that it details everything that&amp;#039;s there and it&amp;#039;s customizable for our needs moving forward.&#xD;
&#xD;
Each paclet has a page that is derived from the data in the  ```PacletSite.mz```  file (which in turn reflects the data in the  ```PacletInfo.m```  files cooked into each paclet). All we do here is take the parameters from the file, shove them into a notebook via some  ```CellTags```  driven replacements, and then export that notebook to Markdown. From there the static site builder takes over. An example of one of those pages is:&#xD;
&#xD;
![18creatingamathematicapackagerepository-2481485970852989325](https://www.wolframcloud.com/objects/b3m2a1/home/img/18creatingamathematicapackagerepository-2481485970852989325.png)&#xD;
&#xD;
Scrolling further down the page will give you all the details about who made it (me) what version it is, what extensions it has, etc.&#xD;
&#xD;
## Building the Paclet Server&#xD;
&#xD;
We&amp;#039;ll walk through most of the steps involved in this so that potentially others can make use of a similar flow. First we need to get everything working with GitHub.&#xD;
&#xD;
### Making a GitHub Organization&#xD;
&#xD;
Since this is supposed to be a community effort I didn&amp;#039;t want it attached to my personal GitHub. Better would be if it&amp;#039;s associated with a  [GitHub organization](https://blog.github.com/2010-06-29-introducing-organizations/) . So I made an organization that  halirutan helpfully suggested I call  [paclets](https://github.com/paclets)  and made a  [repository for hosting our server](https://github.com/paclets/PacletServer) .&#xD;
&#xD;
![18creatingamathematicapackagerepository-7139290626530984083](https://www.wolframcloud.com/objects/b3m2a1/home/img/18creatingamathematicapackagerepository-7139290626530984083.png)&#xD;
&#xD;
### Configuring the Repo&#xD;
&#xD;
To set up the repository I just cloned it locally, then started adding paclets to it via  ```PacletServerAdd``` . The standard way I&amp;#039;d call it is&#xD;
&#xD;
    PacletServerAdd[&amp;#034;path/to/server&amp;#034;, &amp;#034;PacletName&amp;#034;]&#xD;
&#xD;
Which adds the paclet for the folder and sets up things as they ought to be.&#xD;
&#xD;
Then I call&#xD;
&#xD;
    PacletServerBuild[&amp;#034;path/to/server&amp;#034;]&#xD;
&#xD;
Which builds out the website and all the necessary components.&#xD;
&#xD;
Finally I push this back to GitHub via an interface to its API (and also to git) that I wrote up. That generally looks like:&#xD;
&#xD;
    Git[&amp;#034;Add&amp;#034;, &amp;#034;path/to/server&amp;#034;, &amp;#034;All&amp;#034;-&amp;gt;True];&#xD;
    Git[&amp;#034;Commit&amp;#034;, &amp;#034;path/to/server&amp;#034;, &amp;#034;Message&amp;#034;-&amp;gt;TemplateApply[&amp;#034;Rebuilt on ``&amp;#034;, DateString[]]];&#xD;
    GitHub[&amp;#034;Push&amp;#034;, &amp;#034;path/to/server&amp;#034;]&#xD;
&#xD;
And simple as that out server is built&#xD;
&#xD;
### Making a ReviewQueue&#xD;
&#xD;
To make things nice for collaboration we&amp;#039;ll want a way for people to submit things via GitHub on their own.&#xD;
&#xD;
The way we&amp;#039;re currently doing this is via a review queue mechanism working off of GitHub&amp;#039;s pull request machinery.&#xD;
&#xD;
A user forks the repo, adds a paclet to the  ```ReviewQueue```  directory, and then we check to make sure it&amp;#039;s formatted correctly before building it into the server.&#xD;
&#xD;
To simplify this I cooked up a  [build script](https://github.com/paclets/PacletServer/blob/master/build/src/BuildScript.m)  and  [build notebook](https://github.com/paclets/PacletServer/blob/master/build/build.nb) . These load and submit the things in review queue (although checking that all the parts are there for the actual paclet is still best done by hand).&#xD;
&#xD;
I won&amp;#039;t go into too much detail on the queue though, because I built an interface paclet to try to hide the all the steps in working with the queue.&#xD;
&#xD;
### Protections in Place&#xD;
&#xD;
As with all packages, it&amp;#039;s impossible to be sure that a paclet won&amp;#039;t be harmful. To minimize the risk people face in using the server we added a  [change log](https://paclets.github.io/PacletServer/pages/log.html)  that extracts who committed and changed which paclets.&#xD;
&#xD;
If a user you don&amp;#039;t trust has recently changed a paclet, don&amp;#039;t install it. We even put this in bold face anywhere we provide installation code.&#xD;
&#xD;
![18creatingamathematicapackagerepository-4293929817718253197](https://www.wolframcloud.com/objects/b3m2a1/home/img/18creatingamathematicapackagerepository-4293929817718253197.png)&#xD;
&#xD;
## Building an Interface Paclet&#xD;
&#xD;
This has been the toughest part of the entire project. I wanted to make it so that people could submit their paclets directly in Mathematica, the fewer the lines of code necessary the better.&#xD;
&#xD;
To this effect I set up a paclet which is on the server and  [you can install](https://paclets.github.io/PacletServer/publicpacletserver.html)  to get the job done. The paclet is called (rather uncreatively)  ```&amp;#034;PublicPacletServer&amp;#034;``` . I talked about it some  [here](http://community.wolfram.com/groups/-/m/t/1330267) . To use it you install it based on what was on that link and load it like&#xD;
&#xD;
    &amp;lt;&amp;lt;PublicPacletServer`&#xD;
&#xD;
It will expose a single function  ```PublicPacletServer```  which provides access to the server and submission process. If you have a paclet you&amp;#039;ve been working on you can simply run:&#xD;
&#xD;
    PublicPacletServer[&amp;#034;SubmitPaclet&amp;#034;, &amp;#034;YourPacletName&amp;#034;]&#xD;
&#xD;
And it will search for your paclet and submit it if it can find it and build it. If not you can also supply the path to your paclet and it will build and submit your paclet automatically.&#xD;
&#xD;
This submits the paclet to your review queue. To get it onto the public server you&amp;#039;ll submit a request to merge your paclet in. The way you do that is via:&#xD;
&#xD;
    PublicPacletServer[&amp;#034;SubmitPullRequest&amp;#034;]&#xD;
&#xD;
And then once your paclet has passed review it will be added.&#xD;
&#xD;
This simple interface hides some complicated innards, though.&#xD;
&#xD;
### Creating a Fork&#xD;
&#xD;
The heart of this workflow is forking the original server. This is a way that git knows which repository is the main / parent repository and makes it possible to easily merge changes up or down this tree.&#xD;
&#xD;
GitHub itself provides an  [API for creating forks](https://developer.github.com/v3/repos/forks/) . I used this to make sure that no one has to download the entire server just to upload their package. What I do is I check whether you have a fork already by comparing your repositories to the forks of the main repository. You can check whether you have a fork by running&#xD;
&#xD;
    PublicPacletServer[&amp;#034;ForkedQ&amp;#034;]&#xD;
&#xD;
    (*Out:*)&#xD;
    &#xD;
    True&#xD;
&#xD;
If you have a fork,  ```&amp;#034;SubmitPaclet&amp;#034;```  will add it to the review queue for it. If not, it&amp;#039;ll tell you to make a fork by running&#xD;
&#xD;
    PublicPacletServer[&amp;#034;Fork&amp;#034;]&#xD;
&#xD;
    (*Out:*)&#xD;
    &#xD;
    &amp;#034;b3m2a1/PacletServer&amp;#034;&#xD;
&#xD;
### Submitting a Paclet&#xD;
&#xD;
The paclet submission process hooks into GitHub&amp;#039;s  [API for single file uploads](https://developer.github.com/v3/repos/contents/) . It uses a toolchain I built for automatically finding and building a paclet (in fact the same one used by  ```PacletServerAdd``` ) to build out a paclet then pushes it through the API to your fork&amp;#039;s  ```ReviewQueue```  directory.&#xD;
&#xD;
### Submitting a Pull Request&#xD;
&#xD;
This is something I expected to be incredibly simple. There&amp;#039;s a  [pull request API](https://developer.github.com/v3/pulls/)  that I do use in the end for submitting the request, but it turns out not all pull requests are valid. If there are changes on both the head and child repositories that conflict the child repository will need to merge the changes on the head repository before its changes can be pushed. To try to cover this case I run the  [merges API](https://developer.github.com/v3/repos/merging/)  on a  [reference](https://developer.github.com/v3/git/refs/)  extracted from the main repository. If that sounds like a whole bunch of jargon, that&amp;#039;s because it is. Suffice it to say, for the most part you won&amp;#039;t need this, but I tried to protect you if you do.&#xD;
&#xD;
### Future Directions&#xD;
&#xD;
This paclet is most certainly in beta (it&amp;#039;s currently only a  ```0.0.1```  release). There are a number of features I still need to add, such as &#xD;
&#xD;
* Better support for cloning&#xD;
&#xD;
* Support for end users to build the server themselves&#xD;
&#xD;
* Review queue validation&#xD;
&#xD;
* A paclet submission GUI&#xD;
&#xD;
* Encapsulating functionality in a paclet&#xD;
&#xD;
If you&amp;#039;d like to help with any of these, feel free to  [clone the repo](https://github.com/b3m2a1/mathematica-PublicPacletServer)  and collaborate.&#xD;
&#xD;
In the meantime, I hope this encourages you to submit your paclets to the repository. We&amp;#039;d love to have them.</description>
    <dc:creator>b3m2a1 ​ </dc:creator>
    <dc:date>2018-05-02T07:18:28Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1343859">
    <title>MathEd: Arithmetic with H = -1: additive and multiplicative inverses</title>
    <link>https://community.wolfram.com/groups/-/m/t/1343859</link>
    <description>This notebook and package of May 23 2018 includes the additive inverse too, while the original notebook and package of April 2 2018 only contained the multiplicative inverse. To avoid litter of different versions, I have updated at the April 2 2018 location, where the new notebook and package can be found under the old name.&#xD;
&#xD;
http://community.wolfram.com/groups/-/m/t/1313302&#xD;
&#xD;
New summary:&#xD;
&#xD;
H = -1 is an universal constant. H represents a half turn along a circle, like complex number i represents a quarter turn. Kids know what it is to turn around and walk back along the same path. H creates the additive inverse with x + H x = 0 and the multiplicative inverse with x x^H = 1 for x != 0. Pronounce H as &amp;#034;ehta&amp;#034; or &amp;#034;symbolic negative one&amp;#034;. The choice of H is well-considered: its shape reminds of -1 and even more (-1). Pierre van Hiele (1909-2010) already proposed to use y x^-1 and drop the fraction bar y / x with its needless complexity. Students must learn exponents anyway. The negative exponent might confuse pupils to think that they must subtract something, but the use of an algebraic symbol clinches the proposal. Also 5/2 can be written as 2 + 2^H, so that it is clearer where it is on the number line. This approach also causes a re-evaluation of the didactics of the negative numbers. The US Common Core has them only in Grade 6 which is remarkably late. The negative numbers arise from the positive axis x by rotating or alternatively mirroring into H x. Algebraic thinking starts with the rules that a + H a can be replaced by 0 and that H H can be replaced by 1. Subtraction a - b &amp;gt;= 0 may be extended into a - b &amp;lt; 0 with its present didactics, e.g. 2 - 5 = 2 - (2 + 3) = 2 - 2 - 3 = 0 - 3 = -3, but there is an intermediate stage with familiar addition 2 + 5 H = 2 + (2 + 3) H = 2 + 2 H + 3 H = 0 + 3 H = 3 H, that does not require (i) the switch at the brackets from plus to minus and (ii) the transformation of binary 0 - 3 to number -3. The expression a - (-b) involves (scalar) multiplication which indicates why pupils find this hard, and a + H H b is clearer. The use of H would affect the whole curriculum. There appears to be a remarkable incoherence in mathematics education and its research w.r.t. the negative numbers, which reminds of the problems that the world itself had since the discovery of direction by Albert Girard in 1629 and the introduction of the number line by John Wallis in 1673. This notebook provides a package to support the use of H in Mathematica. The notebook and package are intended for researchers, teachers and (Common Core) educators in mathematics education. Pupils in elementary school would work with pencil and paper of course.</description>
    <dc:creator>Thomas Colignatus</dc:creator>
    <dc:date>2018-05-23T10:14:17Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1072731">
    <title>Clearing OwnValues, DownValues, UpValues and SubValues separately</title>
    <link>https://community.wolfram.com/groups/-/m/t/1072731</link>
    <description>In a recent code I&amp;#039;m doing I needed to clear the OwnValue of a variable to assign a UpValue to it, thus I needed to clear the OwnValue, and only it, otherwise I would get nonsense.&#xD;
&#xD;
As far as I know, Mathematica doesn&amp;#039;t seem to have a function with this capability. With bits and pieces from all over I could work-out these functions (hacks):&#xD;
&#xD;
    SetAttributes[{ClearOwnValues, ClearDownValues, ClearUpValues, ClearSubValues}, HoldFirst]&#xD;
    &#xD;
    ClearOwnValues[var_Symbol] := (OwnValues@var = {};)&#xD;
    ClearUpValues[var_Symbol] := (UpValues@var = {};)&#xD;
    &#xD;
    ClearDownValues[f_Symbol[args___]] := (DownValues@f = DeleteCases[DownValues@f, _?(!FreeQ[First@#, HoldPattern@f[args]] &amp;amp;)];)&#xD;
    ClearUpValues[f_Symbol[args___]] := (UpValues@f = DeleteCases[UpValues@f, _?(!FreeQ[First@#, HoldPattern@f[args]] &amp;amp;)];)&#xD;
    ClearSubValues[f_Symbol[args___][args2___]] := (SubValues@f = DeleteCases[SubValues@f, _?(!FreeQ[First@#, HoldPattern@f[args][args2]] &amp;amp;)];)&#xD;
&#xD;
Where the last three definitions are basically the same thing (I could probably make it less ugly, but...). A working example would be:&#xD;
&#xD;
    Re@f[x_] ^:= x^2&#xD;
    f[w_][n_] := 1&#xD;
    f[x_] + g[x_] ^:= &amp;#034;Hey&amp;#034;&#xD;
    f[z_] := Cos[z]&#xD;
    f = 3;&#xD;
&#xD;
    ShowValues := # -&amp;gt; #[f] &amp;amp; /@ {OwnValues, DownValues, UpValues, SubValues} // TableForm&#xD;
Where we have assigned all kind of &amp;#034;Values&amp;#034; to f and created a function to show it.&#xD;
![Show][1]&#xD;
&#xD;
Where in each line of code we deleted a *Value. A example of real usage would be:&#xD;
&#xD;
    SetAttributes[Test, HoldFirst]&#xD;
    DefineReal[var_Symbol] /; ClearOwnValues@var := Im@var = 0&#xD;
    a = 1;&#xD;
    DefineReal[a]&#xD;
    a === 1&#xD;
Which return False as expected. Other usage would be simply `ClearDownValues[Subscript[f, _]]`, since Mathematica can&amp;#039;t Clear expressions like this, it prove to be extremely usefull.&#xD;
&#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Temp.png&amp;amp;userId=845022</description>
    <dc:creator>Thales Fernandes</dc:creator>
    <dc:date>2017-04-26T02:35:16Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1166766">
    <title>How to &amp;#034;cheat&amp;#034; on Flash games using Mathematica</title>
    <link>https://community.wolfram.com/groups/-/m/t/1166766</link>
    <description>A friend of mine has shown to me this Facebook game, 8 ball pool. I particularly don&amp;#039;t like playing games, and this pool game has a prediction-line for the balls (which I find it kind of a cheat, since real life pool there no guides). And I thought to myself it I could concoct some code to extend the prediction-line to improve aiming, just as a fun exercise (which in itself is more enjoyable to play the actual game).&#xD;
&#xD;
Image below shown the extend lines.&#xD;
&#xD;
![enter image description here][1]&#xD;
&#xD;
And the code:&#xD;
&#xD;
This part is for positioning. I open the Facebook page in one screen while the other one has Mathematica.&#xD;
&#xD;
![enter image description here][2]&#xD;
&#xD;
This part is basically cropping the screenshot, making it black-and-white, finding the cue ball and the prediction-line and overlaying it on top of the original image.&#xD;
&#xD;
![enter image description here][3]&#xD;
&#xD;
This part dynamically takes screenshots and output the overlay image, which is the first image shown in this post.&#xD;
&#xD;
![enter image description here][4]&#xD;
&#xD;
## Disclaimer ##&#xD;
&#xD;
Although I don&amp;#039;t find this type of thing cheating per se since you can achieve basically the same thing putting a ruler on your PC or phone.&#xD;
&#xD;
But I would advise against cheating on games only on the grounds that it makes the game less fun (that&amp;#039;s why I put the code as images and I&amp;#039;m in no way responsible for your use of this code.). This post is only to show another side of Mathematica; with a few minutes of programming, it was possible to &amp;#034;cheat&amp;#034; in a game fairly easily (but buggy-ly).&#xD;
&#xD;
A better application of this would be to use an NN to play games, training an AI, etc (although the crude application of capturing the screen is a huge bottleneck...)&#xD;
&#xD;
&#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Capture16.png&amp;amp;userId=845022&#xD;
  [2]: http://community.wolfram.com//c/portal/getImageAttachment?filename=2017-08-17_222251.png&amp;amp;userId=845022&#xD;
  [3]: http://community.wolfram.com//c/portal/getImageAttachment?filename=2017-08-17_222300.png&amp;amp;userId=845022&#xD;
  [4]: http://community.wolfram.com//c/portal/getImageAttachment?filename=2017-08-17_222313.png&amp;amp;userId=845022</description>
    <dc:creator>Thales Fernandes</dc:creator>
    <dc:date>2017-08-18T01:39:54Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/886243">
    <title>Put the ProgressIndicator inside a do loop (and hopefully paralleldo loop)?</title>
    <link>https://community.wolfram.com/groups/-/m/t/886243</link>
    <description>Hello,&#xD;
I am trying to transfer the indicator bar to the user interface for my application but I fail to do so.&#xD;
 I have 2 problems:&#xD;
&#xD;
 1. When I use ParallelDo loop the indicator bar is not get updated with the calculation. I tried to implant the idea from&#xD;
http://stackoverflow.com/questions/7352461/monitoring-progress-of-a-parallel-computation-in-mathematica  , no success. &#xD;
 2. I would like to insert a row to my user interface where I can insert the indicator bar. &#xD;
&#xD;
I got the idea using Monitor and ProgressIndicator couple from -&amp;gt;  http://stackoverflow.com/questions/4398214/update-a-progress-bar-in-mathematica&#xD;
&#xD;
Here, what I did so far. Main code&#xD;
&#xD;
    Get[FileNameJoin[{NotebookDirectory[EvaluationNotebook[]], &#xD;
        &amp;#034;DummyPackage.wl&amp;#034;}]];&#xD;
    Panel[DynamicModule[{np = 1000, nd = 30, Res = 1.0}, &#xD;
      Column[{Style[&amp;#034;Random&amp;#034;, &amp;#034;Function&amp;#034;] , &#xD;
        Row[{&amp;#034;Digits &amp;#034;, InputField[Dynamic[nd]]}, Spacer[5]], &#xD;
        Row[{&amp;#034;Precision &amp;#034;, InputField[Dynamic[np]]}, Spacer[5]], &#xD;
        Button[Style[&amp;#034;Calculate&amp;#034;, Green, Bold], &#xD;
         Res = DummyPackage`myDummyF[nd, np], Method -&amp;gt; &amp;#034;Queued&amp;#034;], &#xD;
        Row[{Style[&amp;#034;Result &amp;#034;, 12, Red], &#xD;
          InputField[Dynamic[Res], FieldSize -&amp;gt; 30, Enabled -&amp;gt; False]}, &#xD;
         Spacer[15]]&#xD;
        &#xD;
        }],&#xD;
      Initialization :&amp;gt; (&#xD;
        Get[FileNameJoin[{NotebookDirectory[EvaluationNotebook[]], &#xD;
            &amp;#034;DummyPackage.wl&amp;#034;}]];)]]&#xD;
    &#xD;
the package &#xD;
&#xD;
    BeginPackage[&amp;#034;DummyPackage`&amp;#034;]&#xD;
    myDummyF[nd_,np_]:=Module[{mat,mat2,aI},&#xD;
    &#xD;
    ns=200;&#xD;
    mat=SetAccuracy[RandomReal[{-100,100},ns],nd];&#xD;
                   mat2=SetAccuracy[RandomReal[{-200,200},ns],nd];&#xD;
    &#xD;
    aI=ConstantArray[0,np];&#xD;
    SetSharedVariable[aI,iC];&#xD;
    Time=AbsoluteTiming[&#xD;
    If[nd&amp;lt;=16,&#xD;
    Monitor[Do[&#xD;
    If[iC==2,Print[&amp;#034;---------------------&amp;#034;]];&#xD;
    If[iC==2,Print[&amp;#034;Do Loop&amp;#034;,&amp;#034; nd= &amp;#034;,nd,&amp;#034; np= &amp;#034;,np]];&#xD;
    &#xD;
    aI[[iC]]=SetAccuracy[mat.(mat2/iC^0.5),nd],{iC,np}],&#xD;
    ProgressIndicator[Dynamic[iC/np]]],&#xD;
    Monitor[ParallelDo[&#xD;
    If[iC==2,Print[&amp;#034;---------------------&amp;#034;]];&#xD;
    If[iC==2,Print[&amp;#034; ParallelDo Loop&amp;#034;,&amp;#034; nd= &amp;#034;,nd,&amp;#034; np= &amp;#034;,np]];&#xD;
    &#xD;
    aI[[iC]]=SetAccuracy[mat.(mat2/iC^0.5),nd],{iC,np}],ProgressIndicator[Dynamic[iC/np]]]]];&#xD;
    Print[&amp;#034;Do loop time = &amp;#034;,Time[[1]]];&#xD;
    aInum=Apply[Plus,(aI/np)];&#xD;
    Print[&amp;#034;Total = &amp;#034;,aInum];&#xD;
    Print[&amp;#034;---------------------&amp;#034;];&#xD;
    Return[aInum]]&#xD;
    SetAttributes[{myDummyF},{ReadProtected,Protected,Locked}];&#xD;
    EndPackage[];&#xD;
&#xD;
Here I can&amp;#039;t see the bar in the nb. If I don&amp;#039;t use a user interface for example :&#xD;
&#xD;
    myDummyF[nd_, np_] := Module[{mat, mat2, aI},&#xD;
       &#xD;
       ns = 200;&#xD;
       mat = SetAccuracy[RandomReal[{-100, 100}, ns], nd];&#xD;
                     mat2 = SetAccuracy[RandomReal[{-200, 200}, ns], nd];&#xD;
       &#xD;
       aI = ConstantArray[0, np];&#xD;
       SetSharedVariable[aI, iC];&#xD;
       &#xD;
       Time = AbsoluteTiming[&#xD;
         If[nd &amp;lt;= 16,&#xD;
          Monitor[Do[&#xD;
            If[iC == 2, Print[&amp;#034;Do Loop&amp;#034;]];&#xD;
            aI[[iC]] = SetAccuracy[mat.(mat2/iC^0.5), nd], {iC, np}], &#xD;
           ProgressIndicator[Dynamic[iC/np]]],&#xD;
          Monitor[ParallelDo[&#xD;
            If[iC == 2, Print[&amp;#034; ParallelDo Loop&amp;#034;]];&#xD;
            aI[[iC]] = SetAccuracy[mat.(mat2/iC^0.5), nd], {iC, np}], &#xD;
           ProgressIndicator[Dynamic[iC/np]]]]];&#xD;
       Print[&amp;#034;Do loop time = &amp;#034;, Time[[1]], &amp;#034;, np = &amp;#034;, np, &amp;#034;, nd = &amp;#034;, nd];&#xD;
       aInum = Apply[Plus, (aI/np)];&#xD;
       Print[&amp;#034;Total = &amp;#034;, aInum];&#xD;
       Return[aInum]];&#xD;
    np = 100000;&#xD;
    nd = 15;&#xD;
    myDummyF[nd, np];&#xD;
&#xD;
Do Loop version is working but I am not able to make it work for ParallelDo. &#xD;
&#xD;
&#xD;
&#xD;
Thank you.&#xD;
&#xD;
ps: I could not attach .wl format so I saved the package as .m file.</description>
    <dc:creator>Erdem Uguz</dc:creator>
    <dc:date>2016-07-11T16:46:13Z</dc:date>
  </item>
</rdf:RDF>

