<?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 ideas tagged with Mathematica sorted by most likes.</description>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3481794" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/122095" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2798101" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/271501" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2504513" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1085633" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1931315" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/216113" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2774101" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1185247" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2445356" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/229505" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2914219" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/235291" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1025046" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1727272" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2527035" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/138400" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/100224" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/900782" />
      </rdf:Seq>
    </items>
  </channel>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3481794">
    <title>In Memory of Michael Trott (1959-2025): Scientist, Mentor, Friend</title>
    <link>https://community.wolfram.com/groups/-/m/t/3481794</link>
    <description>![enter image description here][1]&#xD;
&#xD;
Michael Trott was more than a brilliant scientist, he was a mentor, a friend, and a truly unique human being. For those of us lucky enough to work closely with him, his absence leaves a deep void. He brought an irreplaceable blend of curiosity, creativity, and humility to everything he did. Our long meetings, where we&amp;#039;d dive into unconventional ideas in physics and find ways to implement them in Mathematica, often stretched past hours, but no one ever minded. With Michael, even the most abstract idea could spark a new direction, a novel prototype, or an unexplored corner of science.&#xD;
&#xD;
He didn&amp;#039;t just think outside the box, he rebuilt it entirely, quietly and kindly. His codes weren&amp;#039;t always optimized for performance, but they were original and beautiful. I have never seen anyone so professional in prototyping novel ideas computationally; and this was our joint passion for Mathematica, as we believed it is one of the best tool, if not the best, for this purpose.  One can find a few examples of Michael&amp;#039;s style of thinking in the [Wolfram Blog][2], [Wolfram Demonstration Project][3], or [Wolfram Community][4]. He was also the author of four seminal books: &amp;#034;[The Mathematica GuideBooks][5]&amp;#034; (four volumes).&#xD;
&#xD;
He had a deep grasp of the history and architecture of Mathematica, with a passion for physics, especially quantum theory, and a genius for applying technology in unexpected ways. Michael Trott joined Wolfram Research in 1994 and was a cornerstone of the company for over 30 years. As Chief Scientist of Wolfram|Alpha, his fingerprints are on thousands of algorithms and innovations, from computational art to physical constants, from parsing human input to building bridges between theoretical physics and computation. The [Wolfram Quantum Framework][6], as a small example, would not have been possible without his support and contributions.&#xD;
&#xD;
Michael was encyclopedic in knowledge, yet endearingly humble. He read hundreds of papers, built massive daily digests on LLMs, mentored researchers across physics, math, and engineering; and still worried whether he had anything &amp;#034;original&amp;#034; to offer before a scheduled talk at the University of Vienna (see the material he&amp;#039;d prepared for this talk from [this link][7]; we even had a dry-run together, to discuss the content repeatedly). His presence was magnetic. He showed up early to Zoom calls (Wolfram Research has many remote employees, including myself, even before COVID pandemic) and sparked thoughtful conversation before meetings began. He didn&amp;#039;t just build things but he shared them generously. He brought humanity to everything he touched. Whether discussing quantum fields or life under East Germany&amp;#039;s Stasi, he made space for your story too. He helped others grow, quietly and consistently, always leading by example.&#xD;
&#xD;
Toward the end, we spoke about the multiverse; you were certain we&amp;#039;d meet again. In those final days, lying in your hospital bed, we found ourselves deep in conversation about the quantum-to-classical transition and nonlinearities. Thank you, Michael, for everything. You showed so many of us what it truly means to be both a scientist and a human being.&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2025-06-18at9.36.32%E2%80%AFPM.png&amp;amp;userId=1539902&#xD;
  [2]: https://blog.wolfram.com/author/michael-trott/&#xD;
  [3]: https://demonstrations.wolfram.com/authors/michael-trott&#xD;
  [4]: https://community.wolfram.com/web/mtrott&#xD;
  [5]: https://www.amazon.com/stores/author/B001ITTUVM/allbooks&#xD;
  [6]: https://resources.wolframcloud.com/PacletRepository/resources/Wolfram/%5C%20QuantumFramework/&#xD;
  [7]: https://amoeba.wolfram.com/index.php/s/Jbrt4q6cYTN7rC7</description>
    <dc:creator>Mohammad Bahrami</dc:creator>
    <dc:date>2025-06-19T04:38:05Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/122095">
    <title>Dancing with friends and enemies: boids&amp;#039; swarm intelligence</title>
    <link>https://community.wolfram.com/groups/-/m/t/122095</link>
    <description>The latest way I have found to use my expensive math software for frivolous entertainment is this. Here&amp;#039;s is a way to describe it. 
[list]
[*]1000 dancers assume random positions on the dance-floor. 
[*]Each randomly chooses one &amp;#034;friend&amp;#034; and one &amp;#034;enemy&amp;#034;. 
[*]At each step every dancer 
[list]
[*]moves 0.5% closer to the centre of the floor
[*]then takes a large step towards their friend 
[*]and a small step away from their enemy. 
[/list]
[*]At random intervals one dancer re-chooses their friend and enemy
[/list]
Randomness is deliberately injected. Here is the dance...
[mcode]n = 1000; 
r := RandomInteger[{1, n}]; 
f := (#/(.01 + Sqrt[#.#])) &amp;amp; /@ (x[[#]] - x) &amp;amp;; 
s := With[{r1 = r}, p[[r1]] = r; q[[r1]] = r]; 
x = RandomReal[{-1, 1}, {n, 2}]; 
{p, q} = RandomInteger[{1, n}, {2, n}]; 
Graphics[{PointSize[0.007], Dynamic[If[r &amp;lt; 100, s]; 
Point[x = 0.995 x + 0.02 f[p] - 0.01 f[q]]]}, PlotRange -&amp;gt; 2][/mcode]
[img]/c/portal/getImageAttachment?filename=OPTfnlfrnds.gif&amp;amp;userId=11733[/img]

Thanks to Vitaliy for posting this on my behalf, complete with animations :-)

Background: I had read somewhere that  macro-scale behaviour of animal swarms (think of flocks of starlings or shoals of herring) is explained by each individual following very simple rules local to their vicinity, essentially 1) try to keep up and 2) try not to collide. I started trying to play with this idea in Mathematica, but it was rather slow to identify the nearest neighbours of each particle. So I wondered what would happen if each particle acted according to the locations of two other particles, regardless of their proximity. The rule was simply to move away from one and towards the other.

The contraction (x = 0.995 x) was added to prevent the particle cloud from dispersing towards infinity or drifting away from the origin. I tweaked the &amp;#034;towards&amp;#034; and &amp;#034;away&amp;#034; step sizes to strike a balance between the tendency to clump together and to spread apart (if you make the step sizes equal you get something more like a swarm of flies). With each particle&amp;#039;s attractor and repeller fixed, the system finds a sort of dynamic equilibrium, so to keep things changing I added a rule to periodically change the attractor and repeller for one of the particles. The final adjustment was to make the &amp;#034;force&amp;#034; drop towards zero for particles at very close range. This helps to stop the formation of very tight clumps, and also prevents a division-by-zero error when a particle chooses itself as its attractor or repeller.

The description of the system as a dance was an attempt to explain the swirling pattern on the screen without using mathematical language. I&amp;#039;d love to see what other &amp;#034;dances&amp;#034; can be created with other simple rules.</description>
    <dc:creator>Simon Woods</dc:creator>
    <dc:date>2013-09-11T18:31:12Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2798101">
    <title>[WSG23] Daily Study Group: Wolfram Language Certification Prep</title>
    <link>https://community.wolfram.com/groups/-/m/t/2798101</link>
    <description>Join Wolfram U instructors and a cohort of fellow learners in a Daily Study Group series to prepare for the [Wolfram Language Level 1 Certification][1]. We will review various topics that are included in the exam to test your proficiency in Wolfram Language programming.&#xD;
&#xD;
Daily Study Group dates: Feb 13th-17th, 11am-12pm CT (5-6pm GMT)&#xD;
&#xD;
**[REGISTER HERE][2]**&#xD;
![enter image description here][3]&#xD;
&#xD;
Whether you are a new Wolfram Language user or an expert, join our study group, share your questions and feedback and, finally, take the exam to earn your certification.&#xD;
&#xD;
Don&amp;#039;t forget to share your certificate on social media and tag us #WolframCertified  &#xD;
&#xD;
&#xD;
  [1]: https://www.wolfram.com/wolfram-u/certification/level1/language/&#xD;
  [2]: https://www.bigmarker.com/series/daily-study-group-wolfram-language-certification-prep-wsg35/series_details?utm_bmcr_source=community&#xD;
  [3]: https://community.wolfram.com//c/portal/getImageAttachment?filename=wolframu-banner.png&amp;amp;userId=130003</description>
    <dc:creator>Abrita Chakravarty</dc:creator>
    <dc:date>2023-01-20T20:14:34Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/271501">
    <title>Rosetta Code Challenge &amp;amp; Wolfram Language</title>
    <link>https://community.wolfram.com/groups/-/m/t/271501</link>
    <description>Following the very nice blogpost on the: [Wolfram Blog][1] about Rosetta code, it would be very nice if we could expand---as a community---the number of solved tasks on the Rosetta code website for the [Mathematica Language][2]. 

The unsolved tasks for Mathematica can be found [here][3]. The number of tasks remaining is:

 - 145 (june 4th)
 - 141 (june 5th)
 - 133 (june 6th)
 - 130 (june 7th)
 - 128 (june 14th)
 - 125 (june 17th)
 - 120 (june 21st)
 - 119 (july 4th)

Some of the tasks are very easy to implement; others are tricky and very hard (if not impossible). 

Just now, I solved a couple of problems:

 - [ABC Problem][4]
 - [Longest increasing subsequence][5]
 - [Ludic numbers][6]
 - [Maximum triangle path sum][7]
 - [Zebra Puzzle][8]

I hope that we can solve some more problems and quickly reduce this number. Furthermore, I hope to start a lively discussion of problem solving and algorithm implementation. As you know, the Wolfram language is very broad and supports many paradigms, so many tasks can be implemented in multiple ways. You should strive to find the most elegant solution (short code, fast run-time). 

Some problems that should not be too hard to solve are:

 - [Parse an IP Address][9]
 - [Rep-string][10] SOLVED! Submitted.
 - [Nauticall bell][11]
 - [Word wrap][12] SOLVED! Submitted. (Thanks Marcus Risanger!)
 - [Fibonacci word fractal][13] SOLVED! Submitted. (Thanks Antonio Marquez-Raygoza!)

The tasks that are not implemented can be found using:

    url=&amp;#034;http://rosettacode.org/wiki/Reports:Tasks_not_implemented_in_Mathematica&amp;#034;;
    html=Import[url,&amp;#034;XMLObject&amp;#034;];
    pos=Position[html,XMLElement[&amp;#034;div&amp;#034;,{&amp;#034;class&amp;#034;-&amp;gt;&amp;#034;mw-content-ltr&amp;#034;,&amp;#034;dir&amp;#034;-&amp;gt;&amp;#034;ltr&amp;#034;,&amp;#034;lang&amp;#034;-&amp;gt;&amp;#034;en&amp;#034;},___]];
    pos=First[pos];
    data=Extract[html,pos];
    pos=Position[data,XMLElement[&amp;#034;li&amp;#034;,{},{XMLElement[&amp;#034;a&amp;#034;,{&amp;#034;shape&amp;#034;-&amp;gt;&amp;#034;rect&amp;#034;,&amp;#034;href&amp;#034;-&amp;gt;_,&amp;#034;title&amp;#034;-&amp;gt;x_},{x_}]}]];
    data=Extract[data,pos];
    data=data[[All,-1,-1,2]];
    data={&amp;#034;title&amp;#034;,&amp;#034;href&amp;#034;}/.#&amp;amp;/@%;
    data[[All,2]]=&amp;#034;http://rosettacode.org&amp;#034;&amp;lt;&amp;gt;#&amp;amp;/@data[[All,2]];
    data=Hyperlink@@@data;
    data//Length
    data//Column

Happy solving!

P.S. If you solved a problem after reading this thread, please leave a comment :)


  [1]: http://blog.wolfram.com/2014/06/04/how-the-wolfram-language-measures-up/
  [2]: http://rosettacode.org/wiki/Category:Mathematica
  [3]: http://rosettacode.org/wiki/Reports:Tasks_not_implemented_in_Mathematica
  [4]: http://rosettacode.org/wiki/ABC_Problem
  [5]: http://rosettacode.org/wiki/Longest_increasing_subsequence
  [6]: http://rosettacode.org/wiki/Ludic_numbers
  [7]: http://rosettacode.org/wiki/Maximum_triangle_path_sum
  [8]: http://rosettacode.org/wiki/Zebra_puzzle
  [9]: http://rosettacode.org/wiki/Parse_an_IP_Address
  [10]: http://rosettacode.org/wiki/Rep-string
  [11]: http://rosettacode.org/wiki/Nautical_bell
  [12]: http://rosettacode.org/wiki/Word_wrap
  [13]: http://rosettacode.org/wiki/Fibonacci_word/fractal</description>
    <dc:creator>Sander Huisman</dc:creator>
    <dc:date>2014-06-04T20:27:52Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2504513">
    <title>[WSG22] Daily Study Group: A Guide to Programming and Mathematics with WL</title>
    <link>https://community.wolfram.com/groups/-/m/t/2504513</link>
    <description>A new study group on the topic &amp;#034;A Guide to Programming and Mathematics with the Wolfram Language&amp;#034; will begin soon.&#xD;
&#xD;
Join a cohort of fellow learners and expand your understanding of core programming topics as well as symbolic and applied mathematics functionality in the Wolfram Language with lessons by veteran instructor and developer [David Withoff][1]. A basic working knowledge of the Wolfram Language or introductory-level skill in any programming language is recommended.&#xD;
&#xD;
April 18&amp;#x2013;May 6&#xD;
&#xD;
11am&amp;#x2013;12pm US CT (4&amp;#x2013;5pm GMT)&#xD;
&#xD;
[**REGISTER HERE**][2]&#xD;
&#xD;
![enter image description here][3]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolfram.com/wolfram-u/instructors/withoff.html&#xD;
  [2]: https://www.bigmarker.com/series/daily-study-group-a-guide-to-programming-and-mathematics/series_details?utm_bmcr_source=community&#xD;
  [3]: https://community.wolfram.com//c/portal/getImageAttachment?filename=WolframUBanner.jpeg&amp;amp;userId=130003</description>
    <dc:creator>Abrita Chakravarty</dc:creator>
    <dc:date>2022-04-06T14:49:11Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1085633">
    <title>How-To-Guide: External GPU on OSX - how to use CUDA on your Mac</title>
    <link>https://community.wolfram.com/groups/-/m/t/1085633</link>
    <description>The neural network and machine learning framework has become one of the key features of the latest releases of the Wolfram Language. Training neural networks can be very time consuming on a standard CPU. Luckily the Wolfram Language offers an incredible easy way to use a GPU to train networks - and do lots of other cool stuff. The problem with this was/is that most current Macs do not have an NVIDIA graphics card, which is necessary to access this framework within the Wolfram Language. Therefore, Wolfram Inc. had decided to drop support for GPUs on Macs. There is however a way to use GPUs on Macs. For example you can use an [external GPU like the one offered by Bizon][1]. &#xD;
&#xD;
![enter image description here][2]&#xD;
&#xD;
Apart from the BizonBox there a couple of cables and a power supply. You can buy/configure different versions of the BizonBox: there is a range of different graphics cards available and you can buy a the BizonBox 2s which basically connects via Thunderbolt and the BizonBox 3 which connects to USB-C. &#xD;
&#xD;
Luckily, Wolfram have decided to reintroduce support for GPUs in Mathematica 11.1.1 - see [the discussion here][3]. &#xD;
&#xD;
 I have a variety of these BizonBoxes (both 2s and 3) and a range of Macs. I thought it would be a good idea to post a how-to. The essence of what I will be describing in this post should work for most Macs. I ran Sierra on all of them. Here is the recipe to get the thing to work:&#xD;
&#xD;
Installation of the BizonBox, the required drivers, and compilers&#xD;
-----------------------------------------------------------------&#xD;
&#xD;
0. I will assume that you have Sierra installed and that Xcode is running. One of the really important steps if you want to use compilers is to ***downgrade*** the command line tools to version 7.3 You will  have to log into your Apple Developer account and download the Command Line Tools version 7.3. Install the tools and run the  terminal command (not in Mathematica!): &#xD;
&#xD;
        sudo xcode-select  --switch /Library/Developer/CommandLineTools&#xD;
&#xD;
1. Reboot your Mac into safe mode, i.e. hold CMD+R while rebooting. &#xD;
&#xD;
2. Open a terminal (under item Utilities at the top of the screen).&#xD;
&#xD;
3. Enter &#xD;
&#xD;
        csrutil disable &#xD;
&#xD;
4. Shut the computer down.&#xD;
&#xD;
5. Connect your BizonBox to the mains and to either the thunderbolt or USB-C port of your Mac.&#xD;
&#xD;
6. Restart your Mac. &#xD;
&#xD;
7. Click on the Apple symbol in the top left. Then &amp;#034;About this Mac&amp;#034; and &amp;#034;System Report&amp;#034;. In the Thunderbolt section you should see something like this:&#xD;
&#xD;
![enter image description here][4]&#xD;
&#xD;
8. In the documentation of the BizonBox you will find a link to a program called bizonboxmac.zip. Download that file and unzip it.&#xD;
&#xD;
9. Open the folder and click on &amp;#034;bizonbox.prefPane&amp;#034; to install. (If prompted to, do update!)&#xD;
&#xD;
10. You should see this window:&#xD;
&#xD;
![enter image description here][6]&#xD;
&#xD;
11. Click on Activate. Type in password if required to do so. It should give something like this:&#xD;
&#xD;
![enter image description here][7]&#xD;
&#xD;
Then restart.&#xD;
&#xD;
12.  Install the CUDA Toolkit: [https://developer.nvidia.com/cuda-downloads][8]. You&amp;#039;ll have to click through some questions for the download. &#xD;
&#xD;
![enter image description here][9]&#xD;
&#xD;
what you download should be something like cuda_8.0.61_mac.dmg and it should be more or less 1.44 GB worth. &#xD;
&#xD;
13.  Install the toolkit with all its elements.&#xD;
&#xD;
![enter image description here][10]&#xD;
&#xD;
14. Restart your computer.&#xD;
&#xD;
First tests&#xD;
-----------&#xD;
&#xD;
Now you should be good to go. Open Mathematica 11.1.1. Execute &#xD;
&#xD;
    Needs[&amp;#034;CUDALink`&amp;#034;]&#xD;
    Needs[&amp;#034;CCompilerDriver`&amp;#034;]&#xD;
    CUDAResourcesInstall[]&#xD;
&#xD;
Then try:&#xD;
&#xD;
    CUDAResourcesInformation[]&#xD;
&#xD;
which should look somewhat like this:&#xD;
&#xD;
![enter image description here][11]&#xD;
&#xD;
 Then you should check &#xD;
&#xD;
    SystemInformation[]&#xD;
&#xD;
Head to Links and then CUDA.This should look similar to this:&#xD;
&#xD;
![enter image description here][12]&#xD;
&#xD;
So far so good. Next is the really crucial thing:&#xD;
&#xD;
    CUDAQ[]&#xD;
&#xD;
should give TRUE. If that&amp;#039;s what you see you are good to go. Be more daring and try&#xD;
&#xD;
    CUDAImageConvolve[ExampleData[{&amp;#034;TestImage&amp;#034;,&amp;#034;Lena&amp;#034;}], N[BoxMatrix[1]/9]] // AbsoluteTiming&#xD;
&#xD;
![enter image description here][13]&#xD;
&#xD;
You might notice that the non-GPU version of this command runs faster:&#xD;
&#xD;
    ImageConvolve[ExampleData[{&amp;#034;TestImage&amp;#034;,&amp;#034;Lena&amp;#034;}], N[BoxMatrix[1]/9]] // AbsoluteTiming&#xD;
&#xD;
runs in something like 0.0824 seconds, but that&amp;#039;s ok. &#xD;
&#xD;
Benchmarking (training neural networks)&#xD;
---------------------------------------&#xD;
&#xD;
Let&amp;#039;s do some Benchmarking. Download some example data:&#xD;
&#xD;
    obj = ResourceObject[&amp;#034;CIFAR-10&amp;#034;]; &#xD;
    trainingData = ResourceData[obj, &amp;#034;TrainingData&amp;#034;]; &#xD;
    RandomSample[trainingData, 5]&#xD;
&#xD;
You can check whether it worked:&#xD;
&#xD;
    RandomSample[trainingData, 5]&#xD;
&#xD;
should give something like this:&#xD;
&#xD;
![enter image description here][14]&#xD;
&#xD;
These are the classes of the 50000 images:&#xD;
&#xD;
    classes = Union@Values[trainingData] &#xD;
&#xD;
![enter image description here][15]&#xD;
&#xD;
Let&amp;#039;s build a network &#xD;
&#xD;
    module = NetChain[{ConvolutionLayer[100, {3, 3}], &#xD;
       BatchNormalizationLayer[], ElementwiseLayer[Ramp], &#xD;
       PoolingLayer[{3, 3}, &amp;#034;PaddingSize&amp;#034; -&amp;gt; 1]}]&#xD;
    &#xD;
    net = NetChain[{module, module, module, module, FlattenLayer[], 500, &#xD;
       Ramp, 10, SoftmaxLayer[]}, &#xD;
      &amp;#034;Input&amp;#034; -&amp;gt; NetEncoder[{&amp;#034;Image&amp;#034;, {32, 32}}], &#xD;
      &amp;#034;Output&amp;#034; -&amp;gt; NetDecoder[{&amp;#034;Class&amp;#034;, classes}]]&#xD;
&#xD;
When you train the network:&#xD;
&#xD;
    {time, trained} = AbsoluteTiming@NetTrain[net, trainingData, Automatic, &amp;#034;TargetDevice&amp;#034; -&amp;gt; &amp;#034;GPU&amp;#034;];&#xD;
&#xD;
you should see something like this:&#xD;
&#xD;
![enter image description here][16]&#xD;
&#xD;
So the thing started 45 secs ago and it supposed to finish in 2m54s. In fact, it finished after 3m30s. If we run the same on the CPU we get:&#xD;
&#xD;
![enter image description here][17]&#xD;
&#xD;
The estimate kept changing a bit, but it settled down at about 18h20m.That is slower by a factor of about 315, which is quite substantial. &#xD;
&#xD;
Use of compiler&#xD;
---------------&#xD;
&#xD;
Up to now we have not needed the actual compiler. Let&amp;#039;s try this, too. Let&amp;#039;s grow a Mandelbulb:&#xD;
&#xD;
    width = 4*640;&#xD;
    height = 4*480;&#xD;
    iconfig = {width, height, 1, 0, 1, 6};&#xD;
    config = {0.001, 0.0, 0.0, 0.0, 8.0, 15.0, 10.0, 5.0};&#xD;
    camera = {{2.0, 2.0, 2.0}, {0.0, 0.0, 0.0}};&#xD;
    AppendTo[camera, Normalize[camera[[2]] - camera[[1]]]];&#xD;
    AppendTo[camera, &#xD;
      0.75*Normalize[Cross[camera[[3]], {0.0, 1.0, 0.0}]]];&#xD;
    AppendTo[camera, 0.75*Normalize[Cross[camera[[4]], camera[[3]]]]];&#xD;
    config = Join[{config, Flatten[camera]}];&#xD;
    &#xD;
    pixelsMem = CUDAMemoryAllocate[&amp;#034;Float&amp;#034;, {height, width, 3}]&#xD;
    &#xD;
    srcf = FileNameJoin[{$CUDALinkPath, &amp;#034;SupportFiles&amp;#034;, &amp;#034;mandelbulb.cu&amp;#034;}]&#xD;
&#xD;
Now this should work:&#xD;
&#xD;
    mandelbulb = &#xD;
    CUDAFunctionLoad[File[srcf], &amp;#034;MandelbulbGPU&amp;#034;, {{&amp;#034;Float&amp;#034;, _, &amp;#034;Output&amp;#034;}, {&amp;#034;Float&amp;#034;, _, &amp;#034;Input&amp;#034;}, {&amp;#034;Integer32&amp;#034;, _, &amp;#034;Input&amp;#034;}, &amp;#034;Integer32&amp;#034;, &amp;#034;Float&amp;#034;, &amp;#034;Float&amp;#034;}, {16}, &amp;#034;UnmangleCode&amp;#034; -&amp;gt; False, &amp;#034;CompileOptions&amp;#034; -&amp;gt; &amp;#034;--Wno-deprecated-gpu-targets &amp;#034;, &amp;#034;ShellOutputFunction&amp;#034; -&amp;gt; Print]&#xD;
&#xD;
Under certain circumstances you might want to specify the location of the compiler like so:&#xD;
&#xD;
    mandelbulb = &#xD;
     CUDAFunctionLoad[File[srcf], &amp;#034;MandelbulbGPU&amp;#034;, {{&amp;#034;Float&amp;#034;, _, &amp;#034;Output&amp;#034;}, {&amp;#034;Float&amp;#034;, _, &amp;#034;Input&amp;#034;}, {&amp;#034;Integer32&amp;#034;, _, &amp;#034;Input&amp;#034;}, &amp;#034;Integer32&amp;#034;, &amp;#034;Float&amp;#034;, &#xD;
    &amp;#034;Float&amp;#034;}, {16}, &amp;#034;UnmangleCode&amp;#034; -&amp;gt; False, &amp;#034;CompileOptions&amp;#034; -&amp;gt; &amp;#034;--Wno-deprecated-gpu-targets &amp;#034;, &amp;#034;ShellOutputFunction&amp;#034; -&amp;gt; Print, &#xD;
    &amp;#034;CompilerInstallation&amp;#034; -&amp;gt; &amp;#034;/Developer/NVIDIA/CUDA-8.0/bin/&amp;#034;]&#xD;
&#xD;
This should give:&#xD;
&#xD;
![enter image description here][18]&#xD;
&#xD;
Now&#xD;
&#xD;
    mandelbulb[pixelsMem, Flatten[config], iconfig, 0, 0.0, 0.0, {width*height*3}];&#xD;
    pixels = CUDAMemoryGet[pixelsMem];&#xD;
    Image[pixels]&#xD;
&#xD;
gives&#xD;
&#xD;
![enter image description here][19]&#xD;
&#xD;
So it appears that all is working fine.&#xD;
&#xD;
Problems&#xD;
--------&#xD;
&#xD;
I did come up with some problems though. There is quite a number of CUDA functions:&#xD;
&#xD;
    Names[&amp;#034;CUDALink`*&amp;#034;]&#xD;
&#xD;
![enter image description here][20]&#xD;
&#xD;
Many work just fine. &#xD;
&#xD;
    res = RandomReal[1, 5000];&#xD;
    ListLinePlot[res]&#xD;
&#xD;
![enter image description here][21]&#xD;
&#xD;
    ListLinePlot[First@CUDAImageConvolve[{res}, {GaussianMatrix[{{10}, 10}]}]]&#xD;
&#xD;
![enter image description here][22]&#xD;
&#xD;
The thing is that some don&amp;#039;t and I am not sure why (I have a hypothesis though). Here are some functions that do **not** appear to work:&#xD;
&#xD;
CUDAColorNegate&#xD;
CUDAClamp&#xD;
CUDAFold&#xD;
CUDAVolumetricRender&#xD;
CUDAFluidDynamics&#xD;
&#xD;
and some more. I would be very grateful if someone could check these on OSX (and perhaps Windows?). I am not sure if the this is due to some particularity of my systems or something that could be flagged up to Wolfram Inc for checking.  &#xD;
&#xD;
 When I wanted to try that systematically I wanted to use the function&#xD;
&#xD;
    WolframLanguageData&#xD;
&#xD;
to look for the first example in the documentation of the CUDA functions, but it appears that no CUDA function is in the WolframLanguageData. I think tit would be great to have them there, too, and am not sure why they wouldn&amp;#039;t be there. &#xD;
&#xD;
In spite of these problems I hope that this post will help some Mac users to get CUDA going. It is a great framework and simple to use in the Wolfram Language. With the BizonBox and Mathematica 11.1.1 Mac users are no  longer excluded from accessing this feature. &#xD;
&#xD;
Cheers,&#xD;
&#xD;
Marco&#xD;
&#xD;
PS: Note, that there is anecdotal evidence that one can even use the BizonBox under Windows running in a virtual box under OSX. I don&amp;#039;t have Windows, but I&amp;#039;d like to hear if anyone get this running. &#xD;
&#xD;
  [1]: https://bizon-tech.com&#xD;
  [2]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2017-05-07at22.09.10.png&amp;amp;userId=48754&#xD;
  [3]: http://community.wolfram.com/groups/-/m/t/902394&#xD;
  [4]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot1.png&amp;amp;userId=48754&#xD;
  [5]: http://bizon-tech.com/bizonboxmac.zip&#xD;
  [6]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2.png&amp;amp;userId=48754&#xD;
  [7]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot3.png&amp;amp;userId=48754&#xD;
  [8]: https://developer.nvidia.com/cuda-downloads&#xD;
  [9]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot6.png&amp;amp;userId=48754&#xD;
  [10]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot7.png&amp;amp;userId=48754&#xD;
  [11]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2017-05-07at22.38.22.png&amp;amp;userId=48754&#xD;
  [12]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2017-05-06at18.46.46.png&amp;amp;userId=48754&#xD;
  [13]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2017-05-07at22.49.15.png&amp;amp;userId=48754&#xD;
  [14]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2017-05-07at22.52.43.png&amp;amp;userId=48754&#xD;
  [15]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2017-05-07at22.53.30.png&amp;amp;userId=48754&#xD;
  [16]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2017-05-07at20.37.20.png&amp;amp;userId=48754&#xD;
  [17]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2017-05-07at20.39.02.png&amp;amp;userId=48754&#xD;
  [18]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2017-05-07at23.04.38.png&amp;amp;userId=48754&#xD;
  [19]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2017-05-07at21.50.42.png&amp;amp;userId=48754&#xD;
  [20]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2017-05-07at23.10.05.png&amp;amp;userId=48754&#xD;
  [21]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2017-05-07at23.15.59.png&amp;amp;userId=48754&#xD;
  [22]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2017-05-07at23.16.36.png&amp;amp;userId=48754</description>
    <dc:creator>Marco Thiel</dc:creator>
    <dc:date>2017-05-07T22:21:42Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1931315">
    <title>CodeParser and CodeInspector</title>
    <link>https://community.wolfram.com/groups/-/m/t/1931315</link>
    <description>[![enter image description here][2]][1]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][3]&#xD;
&#xD;
  [1]: https://youtu.be/rOa5IntICFA&#xD;
  [2]: https://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2020-04-09at12.54.33PM.png&amp;amp;userId=11733&#xD;
  [3]: https://www.wolframcloud.com/obj/afe2a2fb-ee55-4df5-a6fb-9bc16dd08af7</description>
    <dc:creator>Brenton Bostick</dc:creator>
    <dc:date>2020-04-09T15:04:38Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/216113">
    <title>Wolfram Research at SXSW</title>
    <link>https://community.wolfram.com/groups/-/m/t/216113</link>
    <description>We are having a blast in the [url=http://www.wolfram.com/events/sxsw-2014]Wolfram booth at SXSW[/url]! 

Yesterday was our opening day, and we were thrilled to see so many friends - old and new - stop by to say hello and see what we&amp;#039;ve been up to.
Visitors came to the booth with coding challenges for our live coders. Here are some neat examples, built with the Wolfram Language.

10 map projections of the world:[mcode]Grid[
 Partition[
  GeoGraphics[{}, GeoRange -&amp;gt; &amp;#034;World&amp;#034;, GeoProjection -&amp;gt; #, GeoGridLines -&amp;gt; Automatic] &amp;amp; /@ GeoProjectionData[][[;; 10]],
  5
  ]
 ][/mcode][img=width: 716px; height: 428px;]/c/portal/getImageAttachment?filename=Projections.png&amp;amp;userId=55401[/img]

Countries in the world, colored by GDP:[mcode]GeoRegionValuePlot[Thread[CountryData[] -&amp;gt; EntityValue[CountryData[], &amp;#034;GDP&amp;#034;]]][/mcode][img=width: 509px; height: 257px;]/c/portal/getImageAttachment?filename=GDPPlot.png&amp;amp;userId=55401[/img]

Pop art:[mcode]Colorize[ImageForestingComponents[ExampleData[{&amp;#034;TestImage&amp;#034;, &amp;#034;House2&amp;#034;}], Automatic, 10]][/mcode][img=width: 512px; height: 512px;]/c/portal/getImageAttachment?filename=PopArt.png&amp;amp;userId=55401[/img]

Intel stock value over time:[mcode]DateListPlot[TimeSeries[FinancialData[&amp;#034;INTC&amp;#034;, &amp;#034;Jan. 1, 2000&amp;#034;]]][/mcode][img=width: 360px; height: 234px;]/c/portal/getImageAttachment?filename=IntelPlot.png&amp;amp;userId=55401[/img]

Length of words in Beowolf, Old English vs. Modern:[mcode]Histogram[{
  StringLength /@ 
   StringSplit[ExampleData[{&amp;#034;Text&amp;#034;, &amp;#034;BeowulfOldEnglish&amp;#034;}]],
  StringLength /@ StringSplit[ExampleData[{&amp;#034;Text&amp;#034;, &amp;#034;BeowulfModern&amp;#034;}]]
  },
 ChartLegends -&amp;gt; {&amp;#034;Old English&amp;#034;, &amp;#034;Modern&amp;#034;}
][/mcode][img=width: 463px; height: 226px;]/c/portal/getImageAttachment?filename=Beowulf.png&amp;amp;userId=55401[/img]

How warm it is today:[mcode]IconData[&amp;#034;AirTemperature&amp;#034;, AirTemperatureData[UnitSystem -&amp;gt; &amp;#034;Imperial&amp;#034;]][/mcode][img]/c/portal/getImageAttachment?filename=Temperature.png&amp;amp;userId=55401[/img]

Relief plot of Austin, TX:[mcode]ReliefPlot[QuantityMagnitude[GeoElevationData[Entity[&amp;#034;City&amp;#034;, {&amp;#034;Austin&amp;#034;, &amp;#034;Texas&amp;#034;, &amp;#034;UnitedStates&amp;#034;}]]]][/mcode][img=width: 360px; height: 394px;]/c/portal/getImageAttachment?filename=ReliefPlotAustin.png&amp;amp;userId=55401[/img]

And the shortest tour of large cities in France:[mcode]coordinates = EntityValue[CityData[{Large, &amp;#034;France&amp;#034;}], &amp;#034;Coordinates&amp;#034;];
tour = Last[FindShortestTour[coordinates]];
GeoGraphics[{Red, Thick, Line@coordinates[[tour]]}][/mcode][img=width: 420px; height: 398px;]/c/portal/getImageAttachment?filename=France.png&amp;amp;userId=55401[/img]

We are excited to see what coding challenges we will tackle in our booth this week. Stop by, say hello, and write code with us! </description>
    <dc:creator>Erin Craig</dc:creator>
    <dc:date>2014-03-10T16:34:09Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2774101">
    <title>[WSG23] Daily Study Group: Wolfram Language Basics</title>
    <link>https://community.wolfram.com/groups/-/m/t/2774101</link>
    <description>A Wolfram U daily study group covering the implementation of Wolfram Language for tasks ranging from basic programming to video analysis begins on January 17, 2023 and runs through February 3. This study group will run on weekdays from 11:00AM&amp;#x2013;12:00PM Central US time.&#xD;
&#xD;
This study group is an incredible way either to start learning Wolfram Language or to explore new functionality you haven&amp;#039;t yet used. We will cover a very broad variety of topics, including but not limited to image and sound analysis, symbolics and numerics, function visualization and even cloud computation and deployment. We will even cover useful tips and tricks to help you work efficiently with notebooks!&#xD;
&#xD;
![enter image description here][1]&#xD;
&#xD;
**No prior Wolfram Language experience is necessary.** As usual, we will have questions, study materials, quizzes along the way to help you master the subject matter. &#xD;
&#xD;
You can [**REGISTER HERE**][2]. I hope to see you there!&#xD;
&#xD;
![enter image description here][3]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=meechstogram.png&amp;amp;userId=1711324&#xD;
  [2]: https://www.bigmarker.com/series/daily-study-group-wolfram-language-basics-wsg34/series_details?utm_bmcr_source=community&#xD;
  [3]: https://community.wolfram.com//c/portal/getImageAttachment?filename=WolframUBanner%281%29%281%29.jpeg&amp;amp;userId=1711324</description>
    <dc:creator>Arben Kalziqi</dc:creator>
    <dc:date>2023-01-11T04:29:36Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1185247">
    <title>Thoughts on a Python interface, and why ExternalEvaluate is just not enough</title>
    <link>https://community.wolfram.com/groups/-/m/t/1185247</link>
    <description>`ExternalEvaluate`, introduced in M11.2, is a nice initiative. It enables limited communication with multiple languages, including Python, and appears to be designed to be relatively easily extensible (see ``ExternalEvaluate`AddHeuristic`` if you want to investigate, though I wouldn&amp;#039;t invest in this until it becomes documented).&#xD;
&#xD;
**My great fear, however, is that with `ExternalEvaluate` Wolfram will consider the question of a Python interface settled.**&#xD;
&#xD;
This would be a big mistake.  A *general* framework, like `ExternalEvaluate`, that aims to work with *any* language and relies on passing code (contained in a string) to an evaluator and getting JSON back, will never be fast enough or flexible enough for *practical scientific computing*.&#xD;
&#xD;
Consider a task as simple as computing the inverse of a $100\times100$ Mathematica matrix using Python (using [`numpy.linalg.inv`](https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.inv.html)).  &#xD;
&#xD;
I challenge people to implement this with `ExternalEvaluate`.  It&amp;#039;s not possible to do it *in a practically useful way*. The matrix has to be sent *as code*, and piecing together code from strings just can&amp;#039;t replace structured communication. The result will need to be received as something encodable to JSON. This has terrible performance due to multiple conversions, and even risks losing numerical precision.&#xD;
&#xD;
Just sending and receiving a tiny list of 10000 integers takes half a second (!)&#xD;
&#xD;
    In[6]:= ExternalEvaluate[py, &amp;#034;range(10000)&amp;#034;]; // AbsoluteTiming&#xD;
    Out[6]= {0.52292, Null}&#xD;
&#xD;
Since I am primarily interested in scientific and numerical computing (as I believe most M users are), I simply won&amp;#039;t use `ExternalEvaluate` much, as it&amp;#039;s not suitable for this purpose.  What if we need to do a [mesh transformation](https://mathematica.stackexchange.com/q/155484/12) that Mathematica can&amp;#039;t currently handle, but there&amp;#039;s a Python package for it?  It&amp;#039;s exactly the kind of problem I am looking to apply Python for.  I have in fact done mesh transformations using MATLAB toolboxes directly from within Mathematica, using [MATLink][1], while doing the rest of the processing in Mathematica. But I couldn&amp;#039;t do this with ExternalEvaluate/Python in a reasonable way.&#xD;
&#xD;
In 2017, any scientific computing system *needs* to have a Python interface to be taken seriously.   [MATLAB has one][2], and it *is* practically usable for numerical/scientific problems.&#xD;
&#xD;
----&#xD;
&#xD;
## A Python interface&#xD;
&#xD;
I envision a Python interface which works like this:&#xD;
&#xD;
 - The MathLink/WSTP API is exposed to Python, and serves as the basis of the system.  MathLink is good at transferring large numerical arrays efficiently.&#xD;
 - Fundamental data types (lists, dictionaries, bignums, etc.) as well as datatypes critical for numerical computing (numpy arrays) can be transferred *efficiently* and *bidirectionally*.  Numpy arrays in particular must translate to/from packed arrays in Mathematica with the lowest possible overhead.&#xD;
 - Python functions can be set up to be called from within Mathematica, with automatic argument translation and return type translation.  E.g.,&#xD;
&#xD;
        PyFun[&amp;#034;myfun&amp;#034;][ (* myfun is a function defined in Python *)&#xD;
            {1,2,3} (* a list *), &#xD;
            PyNum[{1,2,3}] (* cast to numpy array, since the interpretation of {1,2,3} is ambiguous *), &#xD;
            PySet[{1,2,3}] (* cast to a set *)&#xD;
        ]&#xD;
&#xD;
 - The system should be user-extensible to add translations for new datatypes, e.g. a Python class that is needed frequently for some application.&#xD;
 - The primary mode of operation should be that Python is run as a slave (subprocess) of Mathematica. But there should be a second mode of operation where both Mathematica and Python are being used interactively, and they are able to send/receive structured data to/from each other on demand.&#xD;
 - As a bonus: Python can also call back to Mathematica, so e.g. we can use a numerical optimizer available in Python to find the minimum of a function defined in Mathematica&#xD;
 - An interface whose primary purpose is to call Mathematica from Python is a different topic, but can be built on the same data translation framework described above.&#xD;
&#xD;
The development of such an interface should be driven by real use cases.  Ideally, Wolfram should talk to users who use Mathematica for more than fun and games, and do scientific computing as part of their daily work, with multiple tools (not just M).  Start with a number of realistic problems, and make sure the interface can help in solving them.  As a non-trivial test case for the datatype-extension framework, make sure people can set up auto-translation for [SymPy objects][3], or a [Pandas dataframe][4], or a [networkx graph][5].  Run `FindMinimum` on a Python function and make sure it performs well. (In a practical scenario this could be a function implementing a physics simulation rather than a simple formula.)  As a performance stress test, run `Plot3D` (which triggers a very high number of evaluations) on a Python function.  Performance and usability problems will be exposed by such testing early, and then the interface can be *designed* in such a way as to make these problems at least solvable (if not immediately solved in the first version).  I do not believe that they are solvable with the `ExternalEvaluate` design.&#xD;
&#xD;
Of course, this is not the only possible design for an interface. J/Link works differently: it has handles to Java-side objects. But it also has a different goal. Based on my experience with MATLink and RLink, I believe that *for practical scientific/numerical computing*, the right approach is what I outlined above, and that the performance of data structre translation is critical.&#xD;
&#xD;
----&#xD;
&#xD;
## ExternalEvaluate&#xD;
&#xD;
Don&amp;#039;t get me wrong, I do think that the `ExternalEvaluate` framework is a very useful initiative, and it has its place.  I am saying this because I looked at its source code and it appears to be easily extensible.  R has zeromq and JSON capabilities, and it looks like one could set it up to work with `ExternalEvaluate` in a day or so.  So does Perl, anyone want to give it a try?  `ExternalEvaluate` is great because it is simple to use and works (or can be made to work) with just about any interpreted language that speaks JSON and zeromq. But it is also, in essence, a quick and dirty hack (that&amp;#039;s extensible in a quick and dirty way), and won&amp;#039;t be able to scale to the types of problems I mentioned above.&#xD;
&#xD;
----&#xD;
&#xD;
## MathLink/WSTP&#xD;
&#xD;
Let me finally say a few words about why MathLink/WSTP are critical for Mathematica, and what should be improved about them.&#xD;
&#xD;
I believe that any serious interface should be built on top of MathLink.  Since Mathematica already has a good interface capable of inter-process communication, that is designed to work well with Mathematica, and designed to handle numerical and symbolic data efficiently, use it!!&#xD;
&#xD;
Two things are missing:&#xD;
&#xD;
 - Better documentation and example programs, so more people will learn MathLink&#xD;
&#xD;
 - If the MathLink library (not Mathematica!) were open source, people would be able to use it to link to libraries [which are licensed under the GPL][6].  Even a separate open source implementation that only supports shared memory passing would be sufficientno need to publish the currently used code in full.  Many scientific libraries are licensed under the GPL, often without their authors even realizing that they are practically preventing them from being used from closed source systems like Mathematica (due to the need to link to the MathLink libraries).  To be precise, GPL licensed code *can* be linked with Mathematica, but the result cannot be shared with anyone.  I have personally requested the author of a certain library to grant an exception for linking to Mathematica, and they did not grant it. Even worse, I am not sure they understood the issue.  The authors of other libraries *cannot* grant such a permission because they themselves are using yet other GPL&amp;#039;s libraries.&#xD;
&#xD;
    [MathLink already has a more permissive license than Mathematica.][7] Why not go all the way and publish an open source implementation?&#xD;
&#xD;
I am hoping that Wolfram will fix these two problems, and encourage people to create MathLink-based interfaces to other systems. (However, I also hope that Wolfram will create a high-quality Python link themselves instead of relying on the community.)&#xD;
&#xD;
I have talked about the potential of Mathematica as a glue-language at some Wolfram events in France, and I believe that the capability to interface external libraries/systems easily is critical for Mathematica&amp;#039;s future, and so is a healthy third-party package ecosystem.&#xD;
&#xD;
&#xD;
  [1]: http://matlink.org/&#xD;
  [2]: https://www.mathworks.com/help/matlab/matlab-engine-for-python.html&#xD;
  [3]: http://www.sympy.org/&#xD;
  [4]: http://pandas.pydata.org/&#xD;
  [5]: https://networkx.github.io/&#xD;
  [6]: https://en.wikipedia.org/wiki/Copyleft&#xD;
  [7]: https://www.wolfram.com/legal/agreements/mathlink.html</description>
    <dc:creator>Szabolcs Horvát</dc:creator>
    <dc:date>2017-09-15T12:33:04Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2445356">
    <title>A Wolfram Language facsimile of Wordle</title>
    <link>https://community.wolfram.com/groups/-/m/t/2445356</link>
    <description>![enter image description here][1]&#xD;
&#xD;
The popular game Wordle can take up a lot of your time.  The author designed it so that it you can only play it once a day, thus saving us from ourselves :-).&#xD;
&#xD;
[Wordle][2]&#xD;
&#xD;
[NYTimes article on Wordle][3]&#xD;
&#xD;
But I couldn&amp;#039;t resist the challenge to create a version of it in Mathematica, just for fun and because I was bored this past weekend. &#xD;
&#xD;
See the attached notebook and enjoy.  Alas, since you can run it any number of times you are only to blame for yourself it you spend too much time on it. &#xD;
&#xD;
After executing the notebook just execute &#xD;
&#xD;
    MWordle[Deploy]&#xD;
&#xD;
to bring up the game.&#xD;
&#xD;
A few additional comments.  The notebook MWordle.nb has the option&#xD;
&#xD;
AutoGeneratedPackage -&amp;gt; Automatic&#xD;
&#xD;
which causes it, when saved, to create an MWordle.m package file in its same directory. &#xD;
&#xD;
The code in MWordle.nb is set up as a package with the context MWordle`Mwordle`&#xD;
&#xD;
If you want to set things up so that the package gets loaded and the MWordle game is automatically launched, do the following.&#xD;
&#xD;
Create a directory MWordleGame on your disk  (The name MWordleGame can actually be whatever you wish.)  And in the MWordleGame directory create a new directory called MWordle.  (This name must be exactly that so that the MWordle`Mwordle` Context is property respected.)  Put the MWordle.nb notebook in the MWordle dierectory, open it in Mathematica and save it so that the MWordle.m file is created in the MWordle directory.  Then you can close the MWordle.nb notebook.&#xD;
&#xD;
Now in your MWordleGame directory save a new notebook -- you can call it whatever you wish, but something like LaunchMwordle.nb is a sensible choice.&#xD;
&#xD;
In that notebook create a button with the following command:&#xD;
&#xD;
&#xD;
    CellPrint[TextCell[Button[&amp;#034;Launch MWordle&amp;#034;,&#xD;
       Monitor[&#xD;
        If[! MemberQ[$Path, NotebookDirectory[]], &#xD;
         AppendTo[$Path, NotebookDirectory[]]];&#xD;
        Needs[&amp;#034;MWordle`MWordle`&amp;#034;]; MWordle`MWordle`MWordle[Deploy],&#xD;
        Row[{ProgressIndicator[Appearance -&amp;gt; &amp;#034;Necklace&amp;#034;, &#xD;
           ImageSize -&amp;gt; Small], Spacer[5], &#xD;
          Style[&amp;#034;Launching MWordle...&amp;#034;, 12, Blue, &#xD;
           FontFamily -&amp;gt; &amp;#034;Arial&amp;#034;]}]],&#xD;
       Method -&amp;gt; &amp;#034;Queued&amp;#034;], &amp;#034;Text&amp;#034;, GeneratedCell -&amp;gt; False, &#xD;
      CellAutoOverwrite -&amp;gt; False]]&#xD;
&#xD;
You now have a button in your LaunchMwordle.nb notebook which you can use any time you want to launch MWordle without having to execute the cells in the MWordle.nb notebook.&#xD;
&#xD;
Download the actual notebook from the link at the end of this post. The following is a version here to read.&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][4]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Wordle.gif&amp;amp;userId=20103&#xD;
  [2]: https://www.powerlanguage.co.uk/wordle/&#xD;
  [3]: https://www.nytimes.com/2022/01/03/technology/wordle-word-game-creator.html&#xD;
  [4]: https://www.wolframcloud.com/obj/08c015e2-0d65-4634-bf54-4b73e518f6d5</description>
    <dc:creator>David Reiss</dc:creator>
    <dc:date>2022-01-13T21:47:44Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/229505">
    <title>2048 game - suggestions?</title>
    <link>https://community.wolfram.com/groups/-/m/t/229505</link>
    <description>Hey all, I&amp;#039;m a student and am just starting to get the hang of Mathematica. I tried to make a Mathematica version of the [b][url=http://gabrielecirulli.github.io/2048]game 2048[/url][/b]. My program works now, so I thought I&amp;#039;d share. I&amp;#039;d love to hear if there are any better ways to do it, or any suggestions you have to make it better. 

I originally wanted to see the distribution of how many moves a random game would last. So, now you can use all the normal Mathematica tools to discover cool patterns in 2048. 

Thanks, hope you enjoy!


[mcode]Shift[list_]:=PadRight[Cases[list,Except[0]],4];
Merge[list_]:=Flatten[list//.{x___,c_,c_,y___}-&amp;gt;{x,{2*c},y}];
SlideRow[list_]:=Shift[Merge[Shift[list]]];
Slide[list_,l]:=Table[SlideRow[list[[j]]],{j,1,4}];
Slide[list_,r]:=Table[Reverse[SlideRow[Reverse[list[[j]]]]],{j,1,4}];
Slide[list_,u]:=Transpose[Table[SlideRow[Transpose[list][[j]]],{j,1,4}]];
Slide[list_,d]:=Transpose[Table[Reverse[SlideRow[Reverse[Transpose[list][[j]]]]],{j,1,4}]];
RandInsert[list_]:=ReplacePart[list,RandomChoice[Position[list,0]]-&amp;gt;RandomChoice[{2,4}]]
 (*these functions slide each row in the given direction,combine like terms,and add one random number to an empty tile*)

Col[n_]:=Graphics[{Blend[{Yellow,Cyan,Purple,Red},((Log[n+1]/Log[2]))/11],Rectangle[]}];
Visual[list_]:=ImageCompose[GraphicsGrid[Table[Table[Col[list[[j,i]]],{i,1,4}],{j,1,4}]],GraphicsGrid[list,Frame-&amp;gt;All]]
(*the tiles,with colors and numbers*)

Nex[list_,move_]:=If[FreeQ[list,0],ConstantArray[Infinity,{4,4}],RandInsert[Slide[list,move]]]
(*the update rule*)

(*the game itself.input from {u,d,l,r} to move*)
game=ConstantArray[0,{4,4}];Print[Dynamic[Visual[game]]];While[game!=ConstantArray[Infinity,{4,4}],game=Nex[game,Input[]]][/mcode]
[img]/c/portal/getImageAttachment?filename=ssdfsdret5654344254cfbrev.gif&amp;amp;userId=20103[/img]

Edit: When I compared my results with the excellent [url=http://artent.net/2014/03/17/an-ai-for-2048-part-1/]artent[/url] article below, I noticed two important bugs. A random tile was added even after moves that didn&amp;#039;t change anything. And the game ended after the board was full, even if further moves were possible. To fix this, I changed the Nex update rule. It&amp;#039;s a little clunky, but should work. Uh, right now for the sake of analysis I have the final state be the total score instead of the grid, but you can change it easily enough. Thanks everyone for the comments![mcode]Nex[list_, move_] := Piecewise[{{RandInsert[list], Total[Flatten[list]] == 0}, {Total[Flatten[list]], Slide[list, u] == Slide[list, d] == Slide[list, l] == Slide[list, r] == list}, {list, Slide[list, move] == list}}, RandInsert[Slide[list, move]]][/mcode]</description>
    <dc:creator>Robert Stoughton</dc:creator>
    <dc:date>2014-04-01T18:47:05Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2914219">
    <title>[WSG23] Daily Study Group: Wolfram for Mathematics Research and Study</title>
    <link>https://community.wolfram.com/groups/-/m/t/2914219</link>
    <description>A Wolfram U daily study group covering the implementation of Mathematica and Wolfram Language for mathematics topics ranging from function visualization to upcoming calculus functionality begins on May 22, 2023 and runs through June 1. This study group will run on weekdays from 11:00AM&amp;#x2013;12:00PM Central US time. (We will not meet on Memorial Day, May 29, and Friday sessions will start at 10:30AM for extra review time.) &#xD;
&#xD;
&amp;gt; [**REGISTER HERE**][1]. I hope to see you there!&#xD;
&#xD;
This study group is a fantastic way to learn about the amazing mathematical capabilities built into Wolfram Language. We will cover a *very* broad variety of topics, including but not limited to function visualization, linear algebra and graph theory, differential equations and even fascinating topics such as number theory and asymptotics. Several sessions will be led by the Wolfram developers who work on the mathematics functionality that we&amp;#039;ll be covering!&#xD;
&#xD;
While this study group is aimed at mathematics students at roughly the graduate level, **no prior Wolfram Language experience is necessary**&amp;#x2014;the first day will be dedicated to getting you up to speed with the language itself. As usual, we will have questions, study materials, quizzes along the way to help you master the subject matter and functionality.&#xD;
&#xD;
&#xD;
![enter image description here][2]&#xD;
&#xD;
&#xD;
  [1]: https://www.bigmarker.com/series/daily-study-group-math-research-wsg40/series_details?utm_bmcr_source=community &amp;#034;REGISTER HERE&amp;#034;&#xD;
  [2]: https://community.wolfram.com//c/portal/getImageAttachment?filename=WolframUBanner%281%29%281%29.jpg&amp;amp;userId=1711324</description>
    <dc:creator>Arben Kalziqi</dc:creator>
    <dc:date>2023-05-03T23:07:29Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/235291">
    <title>Random Snowflake Generator Based on Cellular Automaton</title>
    <link>https://community.wolfram.com/groups/-/m/t/235291</link>
    <description>[img]/c/portal/getImageAttachment?filename=fig0.gif&amp;amp;userId=93201[/img]&#xD;
&#xD;
Some time ago one of my friends asked me whether it is possible to design a cellular automaton which can generate realistic snowflakes. I recall my crystallography and thermodynamics knowledge and came up a very simple yet impressive model.&#xD;
&#xD;
&#xD;
[size=5][b]The Regular Triangular Lattice[/b][/size]&#xD;
&#xD;
First of all, we are trying to simulate snowflake, which is a kind of hexagonal crystal. So it should be best to construct our CA on a regular hexagonal grid, i.e. regular triangular lattice.&#xD;
&#xD;
We all know [b]CellularAutomaton[/b] inherently works on rectangle lattices (&amp;#034;4-lattice&amp;#034; for short), so how can we deduce a triangular lattice (&amp;#034;3-lattice&amp;#034; for short) on it? Well, the differences between rect-lattice and triangular one is just a geometric transformation.&#xD;
&#xD;
To demonstrate that, have a look at the following 4-lattice, with a blue square highlighting the range-1 [url=http://mathworld.wolfram.com/MooreNeighborhood.html]Moore neighborhood[/url]:&#xD;
&#xD;
[img=width: 388px; height: 396px;]/c/portal/getImageAttachment?filename=fig1.gif&amp;amp;userId=93201[/img]&#xD;
&#xD;
Clearly there is always a hexagon (the green area) in this kind of neighborhood.&#xD;
&#xD;
So forming a regular 3-lattice is as straightforward as doing a simple affine transformation (basically a shearing and a scaling):&#xD;
&#xD;
[img=width: 484px; height: 304px;]/c/portal/getImageAttachment?filename=fig2.gif&amp;amp;userId=93201[/img]&#xD;
&#xD;
So to take advantage of all the power of [b]CellularAutomaton[/b], all we have to do, is to use a following special 6-neighborhood stencil on rectangle lattices, meanwhile our model can be discussed and constructed on regular triangular lattice convieniently:&#xD;
&#xD;
[img=width: 118px; height: 57px;]/c/portal/getImageAttachment?filename=fig3.png&amp;amp;userId=93201[/img]&#xD;
&#xD;
And after the calculation, we can perform the affine transformation with following functions to get a nice hexagonal grid picture.&#xD;
&#xD;
[mcode]Clear[vertexFunc]&#xD;
&#xD;
vertexFunc = &#xD;
        Compile[{{para, _Real, 1}}, &#xD;
            Module[{center, ratio}, center = para[[1 ;; 2]];&#xD;
                ratio = para[[3]];&#xD;
                {Re[#], Im[#]} + {{1, -(1/2)}, {0, &#xD;
                                        Sqrt[3]/2}}.Reverse[{-1, 1} center + {3, 0}] &amp;amp; /@ (ratio 1/&#xD;
                                Sqrt[3] E^(I ?/6) E^(I Range[6] ?/3))], &#xD;
            RuntimeAttributes -&amp;gt; {Listable}, Parallelization -&amp;gt; True, &#xD;
            RuntimeOptions -&amp;gt; &amp;#034;Speed&amp;#034;&#xD;
            (*,CompilationTarget?&amp;#034;C&amp;#034;*)];&#xD;
&#xD;
Clear[displayfunc]&#xD;
displayfunc[array_, ratio_] := &#xD;
    Graphics[{FaceForm[{ColorData[&amp;#034;DeepSeaColors&amp;#034;][3]}], &#xD;
            EdgeForm[{ColorData[&amp;#034;DeepSeaColors&amp;#034;][4]}], &#xD;
            Polygon[vertexFunc[Append[#, ratio]] &amp;amp; /@ Position[array, 1]]}, &#xD;
        Background -&amp;gt; ColorData[&amp;#034;DeepSeaColors&amp;#034;][0]][/mcode]&#xD;
&#xD;
&#xD;
[size=5][b]The Model[/b][/size]&#xD;
&#xD;
To construct the crystallization model, let&amp;#039;s consider one of the 6-neighborhood stencil, where each cell represents a minimal crystal unit:&#xD;
&#xD;
[img=width: 261px; height: 236px;]/c/portal/getImageAttachment?filename=fig4.png&amp;amp;userId=93201[/img]&#xD;
&#xD;
A simple model will need only 2 states: [b]0[/b] for &amp;#034;[i]It&amp;#039;s empty[/i]&amp;#034;, [b]1[/b] for &amp;#034;[i]There is a crystal unit[/i]&amp;#034;. So by considering all (except the [b]000000[/b] one, because we are generating ONE snowflake thus don&amp;#039;t want a crystall randomly arises from void) [b]6-bit[/b] non-negative numbers, we can have a finite set of possible arrangements of the neighborhood:&#xD;
&#xD;
[mcode]stateSet = Tuples[{0, 1}, 6] // Rest[/mcode]&#xD;
However, from the viewpoint of physics, any two arrangements which can be transformed into each other with only rotation and reflection should be considered as the same arrangement in the sense of their physical effects on the central cell (i.e. cell[size=1]2,2[/size]) are the same:&#xD;
&#xD;
[img=width: 363px; height: 117px;]/c/portal/getImageAttachment?filename=fig5.png&amp;amp;userId=93201[/img]&#xD;
&#xD;
So we should gather [b]stateSet[/b] with above equivalence class:&#xD;
&#xD;
[mcode]gatherTestFunc = Function[lst, Union[Join[&#xD;
&#xD;
                    RotateLeft[lst, # - 1] &amp;amp; /@ Flatten[Position[lst, 1]],&#xD;
                    RotateLeft[Reverse[lst], # - 1] &amp;amp; /@ &#xD;
                        Flatten[Position[Reverse[lst], 1]]&#xD;
                    ]]];&#xD;
&#xD;
stateClsSet = Sort /@ Gather[stateSet, gatherTestFunc[#1] == gatherTestFunc[#2] &amp;amp;];&#xD;
&#xD;
stateClsSetHomogeneous = ArrayPad[#, {{0, 12 - Length@#}, {0, 0}}] &amp;amp; /@ stateClsSet;[/mcode]&#xD;
Which turned out to be [b]12[/b] classes in total:&#xD;
&#xD;
[img=width: 710px; height: 127px;]/c/portal/getImageAttachment?filename=fig6.png&amp;amp;userId=93201[/img]&#xD;
&#xD;
Now from the viewpoint of cellular automaton, we need to establish a set of rules on how should any 6-neighborhood arrangement, i.e. those 12 kinds of equivalence classes, determine the state of the central cell.&#xD;
&#xD;
There are 4 kinds of possible transformations on cell[size=1]2,2[/size]: [b]0 --&amp;gt; 1[/b] is called [b]frozen[/b], [b]0 --&amp;gt; 0[/b] is [b]remaining empty[/b], [b]1 --&amp;gt; 1[/b] is [b]remaining frozen[/b], and [b]1 --&amp;gt; 0[/b] is called [b]melten[/b]. To make things more interesting and to explore more possibilities, we can introduce probability here, so certain arrangement will give certain probabilities corresponding to the 4 kinds of transformations. But notice that because of the unitarity of probability, we have Prob(frozen) + Prob(0-&amp;gt;0) = 1 and Prob(melten) + Prob(1-&amp;gt;1) = 1, so only 2 of the 4 probabilities are independent. In the following, we&amp;#039;ll choose Prob(frozen) and Prob(melten), and denote them as [b]pFrozen[/b] and [b]pMelten[/b].&#xD;
&#xD;
[img=width: 800px; height: 367px;]/c/portal/getImageAttachment?filename=fig7.png&amp;amp;userId=93201[/img]&#xD;
&#xD;
Back to physics / thermodynamics, those 24 probabilities, [b]pFrozen[/b] and [b]pMelten[/b], can of corse be determined by serious physical models, or they can be chosen randomly just for fun. For example, an intuitive (and naive) idea would be to believe an empty cell nearby a sharp pointed end or with abundant moisture source will have a high [b]pFrozen[/b]. (People who are interested in the serious physical models should not miss [url=http://psoup.math.wisc.edu/Snowfakes.htm]the Gravner-Griffeath Snowfakes model[/url].)&#xD;
&#xD;
Now we have the grid, the stencil, the neighborhood arrangement set and the transfer probabilities, we&amp;#039;re offically ready to construct our cellular automaton rules.&#xD;
Following the above discussion, the construction is straightforward. There are only two points which need to pay attention to. One is to keep in mind that the rule function is applied on the 3x3 stencil, so even cell[size=1]1,1[/size] and cell[size=1]3,3[/size] has nothing to do with our model, don&amp;#039;t forget handling them. The second is to use a [b]SeedRandom[/b] function to make sure same arrangement gives same result in same time step, otherwise the 6-fold rotational symmetry and 3 axes of reflection symmetry will both break!&#xD;
&#xD;
[mcode]Clear[ruleFunc]&#xD;
&#xD;
ruleFunc = With[{&#xD;
                stateClsSetHomogeneous = stateClsSetHomogeneous,&#xD;
                seedStore = RandomInteger[{0, 1000}, 1000],&#xD;
                pFreeze = {1,   0,     0.6,   0,     0.3,   0.15,   0,     0.2,   0,     0.2,   0,     0.8},&#xD;
                pMelt   = {0,   0.7,   0.5,   0.7,   0.7,   0.5,    0.3,   0.5,   0.3,   0.2,   0.1,   0  }&#xD;
                },&#xD;
            Compile[{{neighborarry, _Integer, 2}, {step, _Integer}},&#xD;
                Module[{cv, neighborlst, cls, rand},&#xD;
                    cv = neighborarry[[2, 2]];&#xD;
                    neighborlst = {#[[1, 2]], #[[1, 3]], #[[2, 3]], #[[3, 2]], #[[3, &#xD;
                                        1]], #[[2, 1]]} &amp;amp;[neighborarry];&#xD;
                    If[Total[neighborlst] == 0, cv,&#xD;
                        cls = Position[stateClsSetHomogeneous, neighborlst][[1, 1]];&#xD;
                        SeedRandom[seedStore[[step + 1]]];&#xD;
                        rand = RandomReal[];&#xD;
                        Boole@If[cv == 0, rand &amp;lt; pFreeze[[cls]], rand &amp;gt; pMelt[[cls]]]&#xD;
                        ]],&#xD;
                (*CompilationTarget -&amp;gt; &amp;#034;C&amp;#034;,*)&#xD;
                RuntimeAttributes -&amp;gt; {Listable}, Parallelization -&amp;gt; True, &#xD;
                RuntimeOptions -&amp;gt; &amp;#034;Speed&amp;#034;&#xD;
                ]&#xD;
            ];[/mcode]&#xD;
(Note: re-compile the rule function [b]ruleFunc[/b] will give a different set of [b]seedStore[/b] thus a different growth path.)&#xD;
&#xD;
Now everything is ready, let&amp;#039;s grow a snowflake from the beginning! :D&#xD;
&#xD;
[mcode]dataSet = Module[{&#xD;
&#xD;
                    rule,&#xD;
                    initM = {{&#xD;
                                    {0, 0, 0},&#xD;
                                    {0, 1, 0},&#xD;
                                    {0, 0, 0}&#xD;
                                }, 0},&#xD;
                    rspec = {1, 1},&#xD;
                    tmin = 0, tmax = 100, dt = 1},&#xD;
                rule = {ruleFunc, {}, rspec};&#xD;
                CellularAutomaton[rule, initM, {{tmin, tmax, dt}}]&#xD;
                ]; // AbsoluteTiming&#xD;
&#xD;
Animate[&#xD;
    Rotate[displayfunc[dataSet[[k]], .8], 90 °],&#xD;
    {k, 1, Length[dataSet], 1},&#xD;
    AnimationDirection -&amp;gt; ForwardBackward,&#xD;
    AnimationRunning -&amp;gt; False, DisplayAllSteps -&amp;gt; True&#xD;
    ][/mcode]&#xD;
&#xD;
[img]/c/portal/getImageAttachment?filename=fig0.gif&amp;amp;userId=93201[/img]&#xD;
&#xD;
&#xD;
&#xD;
[size=5][b]Possible Improvements[/b][/size]&#xD;
&#xD;
We used a [b]SeedRandom[/b] function in our CA rule function to force the 6-fold rotational symmetry and 3 axes of reflection symmetry, and performed the CA calculation on all cells. However, this so called [url=http://demonstrations.wolfram.com/DihedralGroupNOfOrder2n/][i]D[/i][size=1]6[/size] symmetry[/url] can (and should) be integrated into our model, which will saving [b]11/12[/b] of the calculation. Also, the randomness of the growth path comes from [b]seedStore[/b], so to generate a new growth path, we have to re-compile the rule function. But with a improved model as described above, this constraint will no longer exist.&#xD;
&#xD;
[img=width: 800px; height: 177px;]/c/portal/getImageAttachment?filename=fig8.png&amp;amp;userId=93201[/img]&#xD;
[b][size=4]&#xD;
&#xD;
[size=5]Open question [/size]&#xD;
[/size][/b]&#xD;
Can we construct a well-organized structure (like the crystals) from a cellular automaton defined on an [b]irregular[/b] grid? While I believe the answer is [i]yes[/i], the next question would be [i]how?[/i]</description>
    <dc:creator>Silvia Hao</dc:creator>
    <dc:date>2014-04-11T16:03:33Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1025046">
    <title>Measuring the fractal dimension of a tree photo</title>
    <link>https://community.wolfram.com/groups/-/m/t/1025046</link>
    <description>This is a photo of some tree branches that I took at the park today.&#xD;
&#xD;
[&amp;lt;img src=&amp;#034;http://community.wolfram.com//c/portal/getImageAttachment?filename=20170304_121322.jpg&amp;amp;userId=38370&amp;#034; width=&amp;#034;500&amp;#034;&amp;gt;](http://community.wolfram.com//c/portal/getImageAttachment?filename=20170304_121322.jpg&amp;amp;userId=38370)&#xD;
&#xD;
It looks like a fractal, and a nice candidate for measuring the fractal dimension.  Here&amp;#039;s how we can do that in Mathematica.&#xD;
&#xD;
Let us start by binarizing the image.&#xD;
&#xD;
    img = Import[&amp;#034;~/Downloads/20170304_121322.jpg&amp;#034;];&#xD;
&#xD;
    bin = LocalAdaptiveBinarize[ImageAdjust[img, 0.3], 200, {0.9, 0, 0}];&#xD;
&#xD;
[&amp;lt;img src=&amp;#034;http://community.wolfram.com//c/portal/getImageAttachment?filename=bin.png&amp;amp;userId=38370&amp;#034; width=&amp;#034;300&amp;#034;&amp;gt;](http://community.wolfram.com//c/portal/getImageAttachment?filename=bin.png&amp;amp;userId=38370)&#xD;
&#xD;
For a better result, I increased the contrast slightly (`ImageAdjust`), then used local adaptive binarization. This method chooses a different binarization threshold for each pixel based on its neighbourhood.  It helps preserve small branches while avoiding including any part of the clouds (the weather was not very good today).&#xD;
&#xD;
The easiest way to measure fractal dimension is *box counting*: overlay a square grid, and see how many of the grid cells contain some of the object in the image.  What would we get if the object is a line?&#xD;
&#xD;
    Table[&#xD;
      Rasterize[Graphics[{Antialiasing -&amp;gt; False, Line[{{0, 0}, {1, 1}}]}],&#xD;
        ImageSize -&amp;gt; 256, RasterSize -&amp;gt; k],&#xD;
      {k, 2^Range[2, 8]}&#xD;
      ] // ListAnimate&#xD;
&#xD;
The box count would double (i.e. multiply by $2^1$) every time the box size is halved.  What would happen if the object is a filled disk?&#xD;
&#xD;
    Table[&#xD;
      Rasterize[Graphics[{Antialiasing -&amp;gt; False, Disk[]}], &#xD;
       ImageSize -&amp;gt; 256, RasterSize -&amp;gt; k],&#xD;
      {k, 2^Range[2, 8]}&#xD;
      ] // ListAnimate&#xD;
&#xD;
The box count would quadruple (i.e. multiply by $2^2$) every time the box size is halved.&#xD;
&#xD;
In general, for a $d$-dimensional object the box count $n$ is proportional to power $-d$ of the box size $l$: &amp;amp;nbsp;$n \sim l^{-d}$.  For some objetcs, $d$ can be a fractional (non-integer) number.  Such objects are called fractals.  Let&amp;#039;s try it on the tree photo!&#xD;
&#xD;
First, let us choose box sizes in pixels so that an integer number of boxes fit in the image.&#xD;
&#xD;
    seq = Reverse[Intersection @@ Divisors /@ ImageDimensions[img]]&#xD;
    (* {1008, 504, 336, 252, 168, 144, 126, 112, 84, 72, 63, 56, 48, 42, 36, 28, 24, 21, 18, 16, 14, 12, 9, 8, 7, 6, 4, 3, 2, 1} *)&#xD;
&#xD;
Luckily, the image width and height had many small prime factors in common, so we have many box sizes to work with.  Now let us count boxes.&#xD;
&#xD;
    {width, height} = ImageDimensions[img]&#xD;
    (* {3024, 4032} *)&#xD;
&#xD;
    result = {&#xD;
      width/#,&#xD;
      Last@First@ImageLevels@Image[&#xD;
          BlockMap[Min, ImageData[bin], {#, #}],&#xD;
          &amp;#034;Bit&amp;#034;]&#xD;
      } &amp;amp; /@ seq; // AbsoluteTiming&#xD;
&#xD;
    (* {9.79212, Null} *)&#xD;
&#xD;
[BlockMap][1] will partition the image data into blocks (i.e. boxes) and take the minimum of each. Since black pixels are represented by 0 and white pixels by 1, we get 0 only for those boxes that contain at least one black pixel, i.e. they contain a bit of the tree branches.  `BlockMap` was introduced in Mathematica 10.2.  Those using older versions can substitute `BlockMap[f, matrix, {k,k}]` by `Map[f, Partition[matrix, {k,k}], {2}]`.&#xD;
&#xD;
[ImageLevels][2] counts how many times each possible pixel value appears in an image. To make sure that the only possible pixel values are 0 and 1, we create a `&amp;#034;Bit&amp;#034;` image.&#xD;
&#xD;
Is the result really a power function of the form $n = \text{(const.)} l^d$? The easy way to test this is to plot it on a log-log plot.  Power functions appear as a line when plotted on a logarithmic scale.&#xD;
&#xD;
    ListLogLogPlot[result]&#xD;
&#xD;
![enter image description here][3]&#xD;
&#xD;
The slope of the line will give the exponent: $\ln n = \ln\text{(const.)} + d \ln l$.&#xD;
&#xD;
    fm = LinearModelFit[Log[result], {1, x}, x]&#xD;
&#xD;
It is about $\approx 1.85$.  Despite the thick tree trunks, the image of the branches behaves as a *lower-than-two dimensional* structure.&#xD;
&#xD;
Let us plot the power law fit together with the original data:&#xD;
&#xD;
    plot = Show[&#xD;
      Plot[fm[x], {x, Log[result[[1, 1]]], Log[result[[-1, 1]]]}, &#xD;
       PlotStyle -&amp;gt; Black],&#xD;
      ListLogLogPlot[result, PlotStyle -&amp;gt; Red],&#xD;
      AspectRatio -&amp;gt; 1, Axes -&amp;gt; False, Frame -&amp;gt; True&#xD;
      ]&#xD;
&#xD;
![enter image description here][4]&#xD;
&#xD;
You can see that the power law is a pretty good fit. The slope of the curve is more or less the same at all size scales.  This indicates a certain kind of scale invariance in the image.  Indeed, it is clear that if we magnified a small part of the image, it would look similar to the whole: small branches are miniature copies of larger ones.  This is a characteristic feature of fractals.&#xD;
&#xD;
To visualize the box counting method, we can show the series of finer and finer box-grids:&#xD;
&#xD;
    sz = 252;&#xD;
    imgs = Image[BlockMap[Min, ImageData[bin], {#, #}], &amp;#034;Bit&amp;#034;] &amp;amp; /@ seq&#xD;
&#xD;
Scaling them to the same size and animating them show how they approach the original image better and better:&#xD;
&#xD;
    imgs = If[First@ImageDimensions[#] &amp;gt; sz, &#xD;
         ImageResize[Image[#, Real], sz], (* downscale as grayscale *)&#xD;
         ImageResize[#, sz, Resampling -&amp;gt; &amp;#034;Nearest&amp;#034;]] &amp;amp; /@ imgs; (* upscale as bitmap *)&#xD;
&#xD;
    frm = Table[&#xD;
      ImageCompose[ImageResize[img, 252], {im, 0.5}], {im, imgs}];&#xD;
&#xD;
    ListAnimate[frm]&#xD;
&#xD;
![enter image description here][5]&#xD;
&#xD;
We can show the animation alongside the scaling plot:&#xD;
&#xD;
    frames = Table[&#xD;
       Row[{&#xD;
         Show[plot, AspectRatio -&amp;gt; 1, ImageSize -&amp;gt; 336, &#xD;
          Epilog -&amp;gt; {AbsolutePointSize[10], Red, Point@Log[result[[i]]]}],&#xD;
          Image[frm[[i]], Magnification -&amp;gt; 1]&#xD;
         }],&#xD;
       {i, Length[imgs]}];&#xD;
&#xD;
With some extra styling it looks like this:&#xD;
&#xD;
![enter image description here][6]&#xD;
&#xD;
I hope you enjoyed this small demonstration!&#xD;
&#xD;
&#xD;
  [1]: http://reference.wolfram.com/language/ref/BlockMap.html&#xD;
  [2]: http://reference.wolfram.com/language/ref/ImageLevels.html&#xD;
  [3]: http://community.wolfram.com//c/portal/getImageAttachment?filename=plot.png&amp;amp;userId=38370&#xD;
  [4]: http://community.wolfram.com//c/portal/getImageAttachment?filename=plot2.png&amp;amp;userId=38370&#xD;
  [5]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ezgif.com-gif-maker.gif&amp;amp;userId=38370&#xD;
  [6]: http://community.wolfram.com//c/portal/getImageAttachment?filename=animation.gif&amp;amp;userId=38370</description>
    <dc:creator>Szabolcs Horvát</dc:creator>
    <dc:date>2017-03-04T17:33:57Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1727272">
    <title>Which countries did @realDonaldTrump tweet about?</title>
    <link>https://community.wolfram.com/groups/-/m/t/1727272</link>
    <description>Introduction&#xD;
----------&#xD;
&#xD;
A couple of days ago on 1 July [The Economist][1] tweeted [this][2]:&#xD;
&#xD;
&amp;gt; Since he was elected in 2016 Donald Trump has made 1,384 mentions of foreign countries on Twitter. Can you guess which one he named most often?&#xD;
&#xD;
[It claims][3] that in spite of the &amp;#034;special relationship&amp;#034; with the UK, it is only ranked 15th of the countries and territories tweeted about. It also says that Puerto Rico, Mexico and China are in fifth, fourth and third places respectively (countries and territories). According to The Economist North Korea is ranked in second place with 163 mentions. &#xD;
&#xD;
A couple of years ago I read the excellent book &amp;#034;A Mathematician Reads the Newspaper&amp;#034; by John Allen Paulos; and I wonder how much of the daily news coverage can we check using the Wolfram Language. *In a future post I will speak about another project that we are doing with several members of this community that goes in a similar direction. We call it &amp;#034;computational conversations&amp;#034;. With a bit of luck you might hear about it at the [Wolfram Technology Conference][4] later this year.*&#xD;
&#xD;
Initial analysis &#xD;
----------&#xD;
&#xD;
It turns out that I have been monitoring @realDonaldTrump&amp;#039;s tweets using IFTTT since early 2017. I attach excel files to this post. To have a look at the first tweet we first set the directory and load the raw data files: &#xD;
&#xD;
    SetDirectory[NotebookDirectory[]]&#xD;
    dataraw = Import /@ FileNames[&amp;#034;Trump*.xlsx&amp;#034;];&#xD;
&#xD;
As the first file (without a number) will be read in last (alphabetical order), this is the first tweet data:&#xD;
&#xD;
    dataraw[[5, 1, 1]] // TableForm&#xD;
&#xD;
![enter image description here][5]&#xD;
&#xD;
It is from January 26th, 2017, a couple of days after his inauguration. &#xD;
&#xD;
In oder to figure out which countries Mr Trump talks about we use the function TextCases, a recently updated function:&#xD;
&#xD;
&#xD;
    tweettexts = Join[dataraw[[1, 1]], dataraw[[2, 1]], dataraw[[3, 1]], dataraw[[4, 1]], dataraw[[5, 1]]][[All, 2]];&#xD;
    &#xD;
    locations =  TextCases[StringJoin[tweettexts], &amp;#034;LocationEntity&amp;#034; -&amp;gt; &amp;#034;Interpretation&amp;#034;, VerifyInterpretation -&amp;gt; True];&#xD;
&#xD;
I find &#xD;
&#xD;
    Length@locations&#xD;
&#xD;
5768 locations; these will not only include direct mentions of countries but also locations within countries. These locations will be in Entity-form:&#xD;
&#xD;
    locations[[1;;20]]&#xD;
&#xD;
![enter image description here][6]&#xD;
&#xD;
Let&amp;#039;s get that apart. First we make a list of all countries in the world:&#xD;
&#xD;
    purecountries = # -&amp;gt; {#} &amp;amp; /@ EntityList[EntityClass[&amp;#034;Country&amp;#034;, &amp;#034;Countries&amp;#034;]];&#xD;
&#xD;
If we select all direct mentions of countries we obtain:&#xD;
&#xD;
    Select[locations, MemberQ[purecountries[[All, 1]], #] &amp;amp;] // Length&#xD;
&#xD;
3624 mentions; if we exclude the 1349 mentions the US, we are left with 2275 country names. Despite our list starting with later tweets we obtain substantially more mentions of countries than The Economist (1,384). We can now generate a table of the mentions of all countries:&#xD;
&#xD;
    TableForm[Flatten /@ Transpose[{Range[Length[#] - 1], Delete[#, 5]}] &amp;amp;@({#[[1]], #[[2]]} &amp;amp; /@ &#xD;
    Normal[ReverseSort[Counts[CommonName@(Select[locations, MemberQ[purecountries[[All, 1]], #] &amp;amp;])]]])]&#xD;
&#xD;
![enter image description here][7]&#xD;
&#xD;
(This is only the top of the list.) Note, that North Korea is missing, but will be very prominent in the next table.... Next we can check for &amp;#034;indirect&amp;#034; mentions of a country, i.e. Louvre would lead to a mention of France etc. We will find many more entities and will first generate a list of substitution rules:&#xD;
&#xD;
    countriesrules = # -&amp;gt; Check[GeoIdentify[&amp;#034;Country&amp;#034;, #], {#}] &amp;amp; /@ (Complement[DeleteDuplicates[locations], EntityList[EntityClass[&amp;#034;Country&amp;#034;, &amp;#034;Countries&amp;#034;]]]);&#xD;
&#xD;
We will ignore the error messages for now. We can then generate a table that includes the &amp;#034;indirect&amp;#034; mentions, too:&#xD;
&#xD;
    TableForm[Flatten /@ Transpose[{Range[Length[#] - 1], Delete[#, 5]}] &amp;amp;@({#[[1]], #[[2]]} &amp;amp; /@ &#xD;
     Normal[ReverseSort[Counts[CommonName@(DeleteMissing[Flatten[locations /. countriesrules]])]]])]&#xD;
&#xD;
![enter image description here][8]&#xD;
&#xD;
Note, that on rank 4 we find Media, which is not a country. It is easy to clean out, but I leave it in to show the performance of the code so far. We could now make typical representations such as GeoBubbleCharts:&#xD;
&#xD;
    GeoBubbleChart[Counts[DeleteMissing[Flatten[locations /. countriesrules]]], GeoBackground -&amp;gt; &amp;#034;Satellite&amp;#034;]&#xD;
&#xD;
![enter image description here][9]&#xD;
&#xD;
We can now make a BarChart (on a logarithmic scale) selecting &amp;#034;purecountries&amp;#034; like so:&#xD;
&#xD;
    BarChart[ReverseSort@&amp;lt;|&#xD;
       Select[Normal@&#xD;
         Counts[DeleteMissing[Flatten[locations /. countriesrules]]], &#xD;
        MemberQ[purecountries[[All, 1]], #[[1]]] &amp;amp;]|&amp;gt;, &#xD;
     ScalingFunctions -&amp;gt; &amp;#034;Log&amp;#034;, &#xD;
     ChartLabels -&amp;gt; (Rotate[#, Pi/2] &amp;amp; /@ &#xD;
        CommonName[&#xD;
         ReverseSortBy[&#xD;
           Select[Normal@&#xD;
             Counts[DeleteMissing[Flatten[locations /. countriesrules]]], &#xD;
            MemberQ[purecountries[[All, 1]], #[[1]]] &amp;amp;], Last][[All, &#xD;
           1]]]), PlotTheme -&amp;gt; &amp;#034;Marketing&amp;#034;, &#xD;
     LabelStyle -&amp;gt; Directive[Bold, 15]]&#xD;
&#xD;
![enter image description here][10]&#xD;
&#xD;
We can also represent that on a world wide map:&#xD;
&#xD;
    styling = {GeoBackground -&amp;gt; GeoStyling[&amp;#034;StreetMapNoLabels&amp;#034;, &#xD;
    GeoStylingImageFunction -&amp;gt; (ImageAdjust@ColorNegate@ColorConvert[#1, &amp;#034;Grayscale&amp;#034;] &amp;amp;)], &#xD;
    GeoScaleBar -&amp;gt; Placed[{&amp;#034;Metric&amp;#034;, &amp;#034;Imperial&amp;#034;}, {Right, Bottom}], GeoRangePadding -&amp;gt; Full, ImageSize -&amp;gt; Large};&#xD;
    &#xD;
    GeoRegionValuePlot[&#xD;
    Log@&amp;lt;|Select[Normal@Counts[DeleteMissing[Flatten[locations /. countriesrules]]], MemberQ[purecountries[[All, 1]], #[[1]]] &amp;amp;]|&amp;gt;, Join[styling, {ColorFunction -&amp;gt; &amp;#034;TemperatureMap&amp;#034;}]]&#xD;
&#xD;
![enter image description here][11]&#xD;
&#xD;
Further analysis&#xD;
----------&#xD;
&#xD;
We can of course look at many other features of the tweets. One is a simple sentiment analysis. I am not at all convinced that the result of this attempt are useful or representing an actual pattern. But this is what we could do:&#xD;
&#xD;
    emotion[text_] := &amp;#034;Positive&amp;#034; - &amp;#034;Negative&amp;#034; /. Classify[&amp;#034;Sentiment&amp;#034;, text, &amp;#034;Probabilities&amp;#034;]&#xD;
&#xD;
and then&#xD;
&#xD;
    tweetssentiments = emotion /@ tweettexts;&#xD;
    ListPlot[tweetssentiments, PlotRange -&amp;gt; All, LabelStyle -&amp;gt; &#xD;
     Directive[Bold, 15], AxesLabel -&amp;gt; {&amp;#034;tweet number&amp;#034;, &amp;#034;sentiment&amp;#034;}]&#xD;
&#xD;
![enter image description here][12]&#xD;
&#xD;
Using a SmoothHistogram, we see a pattern of &amp;#034;extremes&amp;#034;, negative, neutral, positive:&#xD;
&#xD;
    SmoothHistogram[tweetssentiments, PlotTheme -&amp;gt; &amp;#034;Marketing&amp;#034;, &#xD;
     FrameLabel -&amp;gt; {&amp;#034;sentiment&amp;#034;, &amp;#034;probablitiy&amp;#034;}, &#xD;
     LabelStyle -&amp;gt; Directive[Bold, 16], ImageSize -&amp;gt; Large]&#xD;
&#xD;
![enter image description here][13]&#xD;
&#xD;
We can also ask for less relevant information, such as the colours mentioned in the tweets:&#xD;
&#xD;
    textcasesColor = TextCases[StringJoin[tweettexts], &amp;#034;Color&amp;#034; -&amp;gt; &amp;#034;Interpretation&amp;#034;, VerifyInterpretation -&amp;gt; True]&#xD;
&#xD;
![enter image description here][14]&#xD;
&#xD;
So there is a lot of white, some black, red and green:&#xD;
&#xD;
    ReverseSort@Counts[textcasesColor]&#xD;
&#xD;
![enter image description here][15]&#xD;
&#xD;
Let&amp;#039;s blend these colours together:&#xD;
&#xD;
    Graphics[{Blend[textcasesColor], Disk[]}]&#xD;
&#xD;
![enter image description here][16]&#xD;
&#xD;
We can also look for &amp;#034;profanity&amp;#034; in tweets:&#xD;
&#xD;
    textcasesProfanity = TextCases[StringJoin[tweettexts], &amp;#034;Profanity&amp;#034;];&#xD;
&#xD;
and represent these tweets in a table:&#xD;
&#xD;
    Column[textcasesProfanity, Frame -&amp;gt; All]&#xD;
&#xD;
![enter image description here][17]&#xD;
&#xD;
It is not quite clear to my why some of the tweets are classified as containing profanity. For some tweets it is relatively obvious, I think.&#xD;
&#xD;
Twitter handles&#xD;
----------&#xD;
&#xD;
Another interesting analysis is to look at the twitter handles that @realDonaldTrump uses:&#xD;
&#xD;
    textcasesTwitterHandle = TextCases[StringJoin[tweettexts], &amp;#034;TwitterHandle&amp;#034;];&#xD;
&#xD;
Here are counts of the 50 most common handles:&#xD;
&#xD;
    twitterhandles50 = Normal[(ReverseSort@Counts[ToLowerCase /@ textcasesTwitterHandle])[[1 ;; 50]]]&#xD;
&#xD;
![enter image description here][18]&#xD;
&#xD;
Last but not least we can make a BarChart of that:&#xD;
&#xD;
    BarChart[&amp;lt;|twitterhandles50|&amp;gt;, ChartLabels -&amp;gt; (Rotate[#, Pi/2] &amp;amp; /@ twitterhandles50[[All, 1]]), &#xD;
    LabelStyle -&amp;gt; Directive[Bold, 14]]&#xD;
&#xD;
![enter image description here][19]&#xD;
&#xD;
and to compare the same on a logarithmic scale:&#xD;
&#xD;
    BarChart[&amp;lt;|twitterhandles50|&amp;gt;, ChartLabels -&amp;gt; (Rotate[#, Pi/2] &amp;amp; /@ twitterhandles50[[All, 1]]), &#xD;
    LabelStyle -&amp;gt; Directive[Bold, 14], ScalingFunctions -&amp;gt; &amp;#034;Log&amp;#034;]&#xD;
&#xD;
&#xD;
![enter image description here][20]&#xD;
&#xD;
A little word cloud&#xD;
----------&#xD;
&#xD;
Just to finish off we will generate a little word cloud like so:&#xD;
&#xD;
    allwords = Flatten[TextWords /@ tweettexts];&#xD;
    WordCloud[ToLowerCase /@ DeleteCases[DeleteStopwords[ToString /@ allwords], &amp;#034;&amp;amp;amp;&amp;#034;]]&#xD;
&#xD;
![enter image description here][21]&#xD;
&#xD;
The cloud picks up on &amp;#034;witch hunt&amp;#034; and &amp;#034;collusion&amp;#034;, &amp;#034;@foxandfrieds&amp;#034; and &amp;#034;Russia&amp;#034;, &amp;#034;fake&amp;#034;, &amp;#034;border&amp;#034; as well as other terms that indeed are relatively prominent in the media. &#xD;
&#xD;
Conclusion&#xD;
----------&#xD;
&#xD;
The main objective of this was to look try to reproduce at least qualitatively the results of the twitter analysis of @realDonaldTrump&amp;#039;s tweets by The Economist using the Wolfram Language. We have been using a slightly different period of the tweets. We have been looking at direct mentions and &amp;#034;indirect&amp;#034; ones. I have not made any manual comparison of the results. I am not sure whether the recognition has worked and I only post it as a first cursory analysis. &#xD;
&#xD;
It was relatively easy to go beyond the analysis and look at other features of the tweets, too.&#xD;
&#xD;
&#xD;
  [1]: https://www.economist.com&#xD;
  [2]: https://twitter.com/TheEconomist/status/1145467208950329344&#xD;
  [3]: https://www.economist.com/graphic-detail/2019/06/04/the-world-according-to-donald-trump&#xD;
  [4]: http://www.wolfram.com/events/technology-conference/2019/&#xD;
  [5]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1000.12.59.png&amp;amp;userId=48754&#xD;
  [6]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1000.27.41.png&amp;amp;userId=48754&#xD;
  [7]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1000.34.11.png&amp;amp;userId=48754&#xD;
  [8]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1000.41.34.png&amp;amp;userId=48754&#xD;
  [9]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1000.43.14.png&amp;amp;userId=48754&#xD;
  [10]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1000.45.38.png&amp;amp;userId=48754&#xD;
  [11]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1001.24.25.png&amp;amp;userId=48754&#xD;
  [12]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1000.53.33.png&amp;amp;userId=48754&#xD;
  [13]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1000.55.22.png&amp;amp;userId=48754&#xD;
  [14]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1001.05.39.png&amp;amp;userId=48754&#xD;
  [15]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1001.07.12.png&amp;amp;userId=48754&#xD;
  [16]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1001.08.07.png&amp;amp;userId=48754&#xD;
  [17]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1001.09.33.png&amp;amp;userId=48754&#xD;
  [18]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1001.12.15.png&amp;amp;userId=48754&#xD;
  [19]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1001.13.26.png&amp;amp;userId=48754&#xD;
  [20]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1001.14.50.png&amp;amp;userId=48754&#xD;
  [21]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2019-07-1001.33.04.png&amp;amp;userId=48754</description>
    <dc:creator>Marco Thiel</dc:creator>
    <dc:date>2019-07-10T00:40:42Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2527035">
    <title>[WSG22] Daily Study Group: Signals, Systems and Signal Processing</title>
    <link>https://community.wolfram.com/groups/-/m/t/2527035</link>
    <description>A Wolfram U daily study group on &amp;#034;Signals, Systems and Signal Processing&amp;#034; begins on May 16, 2022.&#xD;
&#xD;
Join instructors [@Leila Fuladi][at0]  and [@Mariusz Jankowski][at1] and a cohort of fellow learners to study the concepts, mathematics, principles and techniques of signal processing. We&amp;#039;ll cover methods of analysis for both continuous-time and discrete-time signals and systems, sampling and introductory filter design. The concepts and methods of signals and systems play an important role in many areas of science and engineering and many everyday signal processing examples are included. A basic working knowledge of the Wolfram Language is recommended.&#xD;
&#xD;
**[REGISTER HERE][1]**&#xD;
&#xD;
![enter image description here][2]&#xD;
&#xD;
&#xD;
  [1]: https://www.bigmarker.com/series/daily-study-group-signals-systems-and-signal-processing/series_details?utm_bmcr_source=community&#xD;
  [2]: https://community.wolfram.com//c/portal/getImageAttachment?filename=WolframUBanner.jpeg&amp;amp;userId=130003&#xD;
&#xD;
 [at0]: https://community.wolfram.com/web/leilaf&#xD;
&#xD;
 [at1]: https://community.wolfram.com/web/mariuszj</description>
    <dc:creator>Abrita Chakravarty</dc:creator>
    <dc:date>2022-05-06T22:26:34Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/138400">
    <title>The Sierpinski Triangle page to end most Sierpinski Triangle pages</title>
    <link>https://community.wolfram.com/groups/-/m/t/138400</link>
    <description>I must confess I hardly ever doubted that if there exists a [b][url=http://www.oftenpaper.net/sierpinski.htm]Sierpinski Triangle page to end most Sierpinski Triangle pages[/url][/b] it would be written with help of Mathematica. These 10 quoted words is how Antonio Marquez-Raygoza titled his recent [b][url=http://www.oftenpaper.net/sierpinski.htm]blog article[/url][/b]. That did sound intriguing and I must assure you, in my opinion, it lives up completely to the title. Knowing Antonio as an [b][url=http://demonstrations.wolfram.com/author.html?author=Antonio+Marquez-Raygoza]author of two exquisite Demonstrations[/url][/b] and as a skillful Mathematica programmer with a fine taste for visual design and elegance, I put everything aside and started reading. And was it a feast for my eyes! Some of you may know me as a person who enjoys coding visually appealing graphics. So imagine my joy in encountering something like this beautiful image and discovering it was produced with just a few lines of code (like so many things in Mathematica):
[mcode]draw[v_, df_, n_] := Module[{ring}, ring[c_, r_, depth_] := Module[{ps}, ps = c + r {Cos[#], Sin[#]} &amp;amp; /@ (2. Pi Range[v]/v);
     If[depth == 0, Polygon[ps], ring[(c + #)/2, df[0, r], depth - 1] &amp;amp; /@ ps]];
   Graphics[{EdgeForm[White], Opacity[.4], RGBColor[.4, 1, 1], ring[0., 1., n]}]];

Show[(*repeatedly draw to cover more possibilities*) draw[4, (#1 + #2)/RandomChoice[Prime[Range[4]]] &amp;amp;, 
    RandomChoice[{.1, 1.5} -&amp;gt; {2, 3}]] &amp;amp; /@ Range[20], Background -&amp;gt; Black, ImageSize -&amp;gt; 600][/mcode]
[img=width: 600px; height: 626px;]/c/portal/getImageAttachment?filename=siertron12.png&amp;amp;userId=11733[/img]

The article produced a massive viral hurricane of event on Internet. Let me share a few bits I picked up in the aftermath.This post mad quite a boom on Reddit getting front-paged on several sub-Reddits:
[list]
[*][b][url=http://redd.it/1o1yd2]Reddit Programming: 1154 upvotes 149 comments[/url][/b]
[*][b][url=http://redd.it/1o0dpo]Reddit Math: 387 upvotes 35 comments[/url][/b]
[*][b][url=http://redd.it/1o9b9f]Reggit Biology: 60 upvotes 15 comments[/url][/b]
[*][b][url=http://redd.it/1o87gm]Reddit Todayilearned: 50 upvotes 9 comments[/url][/b]
[*][b][url=http://redd.it/1o2ydp]Reddit Fractals: 20 upvotes 2 comments[/url][/b]
[/list]It was also posted on a few other Reddits. The article also [b][url=https://news.ycombinator.com/item?id=6516114]scored 327 points and 55 comments on Hacker News a.k.a. Ycombinator[/url][/b]. 

There was of course an ocean of tweets, Facebook posts, and other social media sharing. I was very happy to see such famous Twitter feeds as [b][url=https://twitter.com/TopologyFact/status/387909293842116608]Topology Fact sharing the link to the article[/url][/b]:

[url=https://twitter.com/TopologyFact/status/387909293842116608][img=width: 465px; height: 281px;]/c/portal/getImageAttachment?filename=2013-10-14_03-03-08.png&amp;amp;userId=11733[/img][/url]

This is an [b][url=https://tweetreach.com/share/reports/345f97fed534d7c341a57e1893515873aea838fc]impact report of only tweets containing exact title of the article[/url][/b], of course they were many more tweets with different content:

[url=https://tweetreach.com/share/reports/345f97fed534d7c341a57e1893515873aea838fc][img=width: 747px; height: 561px;]/c/portal/getImageAttachment?filename=2013-10-14_03-21-09.png&amp;amp;userId=11733[/img][/url]

And I must acknowledge the jazzy frisky humor of the piece  not once it made me smile in amazement or simply LOL. For example a quote: [quote]Note the cow cannot be spherical or it will roll off.[/quote]was also posted on Reddit in comments and earned more than 100 voteups! But it is not [i][b]just[/b][/i] funny - if you are not a physicist you probably will miss that this is most probably a reference to the [b][url=https://en.wikipedia.org/wiki/Spherical_cow]spherical cow joke[/url][/b]. I do not want to give you any spoilers but the poetic cow part with phrases like [quote]I think this is the first time I&amp;#039;m jealous of a cow. [/quote]is actually about built in Mathematica cow that can be accessed simply as[mcode]ExampleData[{&amp;#034;Geometry3D&amp;#034;, &amp;#034;Cow&amp;#034;}][/mcode]and with some further brilliant codding you will get this and agree eventually that a spherical cow would indeed roll off:

[img=width: 640px; height: 640px;]/c/portal/getImageAttachment?filename=siercowsine1.png&amp;amp;userId=11733[/img]

Sometimes on a book cover one may find quotes from critics acclaiming the book. I think what critics to a book, Reddit and Hacker News are to a blog. This is why I would like to post here just a few URL-linked comments from Reddit and Hacker News discussions of the post as my small token of appreciation for the fascinating reading.
[quote][url=http://www.reddit.com/r/programming/comments/1o1yd2/the_sierpinski_triangle_page_to_end_most/ccoler8]This is fantastic. Not sure if it&amp;#039;s programming or math, or even art, but it&amp;#039;s the kind of thing the world needs more of. Pure exploration.[/url]

[url=http://www.reddit.com/r/programming/comments/1o1yd2/the_sierpinski_triangle_page_to_end_most/ccoecwo]The sheer brilliance of the author had me reeling. I wish more of the posts here were like this[/url]

[url=http://www.reddit.com/r/programming/comments/1o1yd2/the_sierpinski_triangle_page_to_end_most/ccohuxe]I understand none of this, but it&amp;#039;s beautiful and inspiring.[/url]

[url=http://www.reddit.com/r/programming/comments/1o1yd2/the_sierpinski_triangle_page_to_end_most/cco8a5m]I enjoyed the [b]cowsine[/b] graph[/url]

[url=http://www.reddit.com/r/programming/comments/1o1yd2/the_sierpinski_triangle_page_to_end_most/ccqi3lc]Hell, that&amp;#039;s just a built-in cow Mathematica has.[/url]

[url=http://www.reddit.com/r/programming/comments/1o1yd2/the_sierpinski_triangle_page_to_end_most/ccoc8sy]The code is all Mathematica. It&amp;#039;s an amazing program.[/url]

[url=https://news.ycombinator.com/item?id=6518044]&amp;#034;Holy mother, this person is cool and this person&amp;#039;s website is cool, too&amp;#034;[/url]

[url=https://news.ycombinator.com/item?id=6517581]&amp;#034;This is amazingly cool and stimulating to think about. It&amp;#039;s also a compelling reason to take another look at Mathematica.&amp;#034;[/url]

[url=https://news.ycombinator.com/item?id=6521409]&amp;#034;I&amp;#039;ll also note that Mathematica looks quite awesome indeed.&amp;#034;[/url]

[url=http://www.reddit.com/r/math/comments/1o0dpo/the_sierpinski_triangle_page_to_end_most/ccnyiz1]I have found someone whose irrational love for Mathematica puts me to shame. [/url]

[url=http://www.reddit.com/r/math/comments/1o0dpo/the_sierpinski_triangle_page_to_end_most/ccnw7wh]I have never seen more tattoo ideas on one page...[/url]

[url=http://www.reddit.com/r/biology/comments/1o9b9f/mathematician_graphs_8m_bp_section_of_human/ccq2j09]whoa where did those 2 hours go... this has been one of the most interesting things I&amp;#039;ve read in a long time. thanks for the post. ill be keeping up with this person from now on. it&amp;#039;s posts like this that make the hundreds of hours I spend lurking the internet worth the while[/url][/quote]
Below I show a few images from that blog as a teaser. For complete visually unforgettable and code-enlightening experience please read [b][url=http://www.oftenpaper.net/sierpinski.htm]the original blog post[/url][/b]. 



[img=width: 730px; height: 624px;]/c/portal/getImageAttachment?filename=brahm2.png&amp;amp;userId=11733[/img]


[img]/c/portal/getImageAttachment?filename=cowpinskiinv7.png&amp;amp;userId=11733[/img]</description>
    <dc:creator>Vitaliy Kaurov</dc:creator>
    <dc:date>2013-10-13T23:26:59Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/100224">
    <title>Virtual Conference for STEM Educators!</title>
    <link>https://community.wolfram.com/groups/-/m/t/100224</link>
    <description>Hi everyone!

Just wanted to let you know that Wolfram will be hosting a FREE Virtual Conference for STEM Education September 17th. During the conference there are two tracks to choose from, one dedicated to enhancing your current classroom and the other focused on current trends to transform your curriculum. Our virtual conference interface lets you join talks from either track. Learn how to create interactive materials for your math course, how to explain physical phenomenon with demonstrations, use our mobile solutions in your classroom and much more!

We&amp;#039;ll also be talking about products that haven&amp;#039;t even been released yet! You have to come and check it out!

Use this thread for:
[list]
[*]questions that you have about the conference
[*]comments about Wolfram tech in education
[*]questions for the conference&amp;#039;s live Q&amp;amp;A
[*]follow-up questions to the conference
[/list]If your questions didn&amp;#039;t get answered during the Q&amp;amp;A, post it here and get it answered by the presenters! We&amp;#039;ll be monitoring the thread.

To see the full schedule and to register for the event, visit [b][url=http://www.wolfram.com/events/virtual-conference/stem-education-2013/]the conference page[/url][/b]. Can&amp;#039;t wait to see you all there!

[url=http://www.wolfram.com/events/virtual-conference/stem-education-2013/][img=width: 700px; height: 155px;]/c/portal/getImageAttachment?filename=5596ScreenShot2013-08-19at12.07.27PM.png&amp;amp;userId=11733[/img][/url]</description>
    <dc:creator>Adriana O&amp;#039;Brien</dc:creator>
    <dc:date>2013-08-19T17:04:53Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/900782">
    <title>Mathematica 11 Release</title>
    <link>https://community.wolfram.com/groups/-/m/t/900782</link>
    <description>Mathematica 11 is now out and ready to compute! Since the release of Version 10 two years ago, Mathematica has grown by leaps and bounds, with 500+ new functions. This version introduces both enhancements to computations across the board and completely new areas of functionality, continuing Mathematica&amp;#039;s growth as the state-of-the-art technical platformand we are very excited to share these developments with the world. Some of the most notable features include:&#xD;
&#xD;
**[3D Printing][1]** &#xD;
&#xD;
![3D-Printed Triceratops][2]&#xD;
&#xD;
 - Print your 3D models to local printers or online printing services with [Printout3D][3].&#xD;
 - Use [FindMeshDefects][4] and [RepairMesh][5] to fix your models before printing.&#xD;
 - Hollow your models out with [ShellRegion][6] to lower the printing cost.&#xD;
&#xD;
**[Computational Audio][7]**&#xD;
&#xD;
![Audio Image][8]&#xD;
&#xD;
 - Version 11 includes a brand-new [Audio][9] object to represent audio created from importing or an array of data.&#xD;
 - Edit your audio with [AudioPad][10], [AudioTrim][11], [AudioSplit][12], [AudioResample][13], etc.&#xD;
 - Synthesize sounds using the new [AudioGenerator][14] function.&#xD;
 - Apply filters, take [AudioMeasurements][15] and visualize your audio with [AudioPlot][16].&#xD;
&#xD;
**[Neural Networks][17]**&#xD;
&#xD;
![Neural Network][18]&#xD;
&#xD;
 - Define network topologies with [NetGraph][19] or with a chain of layers with [NetChain][20].&#xD;
 - Train your neural nets with [NetTrain][21].&#xD;
 - Train networks on either CPUs or NVIDIA GPUs.&#xD;
 - Are your training sets of images too large to hold in-memory? The neural network functions support out-of-core image datasets.&#xD;
&#xD;
**[Improved Machine Learning][22]**&#xD;
&#xD;
![Identifying Notable Celebrities][23]&#xD;
&#xD;
 - [ImageIdentify][24] now recognizes over 10,000 objects.&#xD;
 - Extract features from images, text and other data types using [FeatureExtract][25].&#xD;
 - [Classify][26] works even better with images, including an option to customize what [FeatureExtractor][27] it uses.&#xD;
 - Find formulas for time series data using [FindFormula][28].&#xD;
 - Find clusters in your data with enhanced options for [FindClusters][29], including new methods and setting a [CriterionFunction][30].&#xD;
&#xD;
And these are only just a sample of the new features, including the [Wolfram Channel Framework][31], enhanced notebook processing, cloud-aware [WolframScript][32], improved [symbolic and numeric calculus][33] and so much more.&#xD;
&#xD;
To read more about what&amp;#039;s new in Mathematica 11, read Stephen Wolfram&amp;#039;s [release-day blog post][34] and check out the [New in 11 page][35].&#xD;
&#xD;
&#xD;
  [1]: http://www.wolfram.com/language/11/3d-printing/&#xD;
  [2]: http://community.wolfram.com//c/portal/getImageAttachment?filename=triceratops.png&amp;amp;userId=900759&#xD;
  [3]: http://reference.wolfram.com/language/ref/Printout3D.html&#xD;
  [4]: http://reference.wolfram.com/language/ref/FindMeshDefects.html&#xD;
  [5]: http://reference.wolfram.com/language/ref/RepairMesh.html&#xD;
  [6]: http://reference.wolfram.com/language/ref/ShellRegion.html&#xD;
  [7]: http://www.wolfram.com/language/11/computational-audio/&#xD;
  [8]: http://community.wolfram.com//c/portal/getImageAttachment?filename=audioplot.png&amp;amp;userId=900759&#xD;
  [9]: http://reference.wolfram.com/language/ref/Audio.html&#xD;
  [10]: http://reference.wolfram.com/language/ref/AudioPad.html&#xD;
  [11]: http://reference.wolfram.com/language/ref/AudioTrim.html&#xD;
  [12]: http://reference.wolfram.com/language/ref/AudioSplit.html&#xD;
  [13]: http://reference.wolfram.com/language/ref/AudioResample.html&#xD;
  [14]: http://reference.wolfram.com/language/ref/AudioGenerator.html&#xD;
  [15]: http://reference.wolfram.com/language/ref/AudioMeasurements.html&#xD;
  [16]: http://reference.wolfram.com/language/ref/AudioPlot.html&#xD;
  [17]: http://www.wolfram.com/language/11/neural-networks/&#xD;
  [18]: http://community.wolfram.com//c/portal/getImageAttachment?filename=neuralnetworkdigits.png&amp;amp;userId=900759&#xD;
  [19]: http://reference.wolfram.com/language/ref/NetGraph.html&#xD;
  [20]: http://reference.wolfram.com/language/ref/NetChain.html&#xD;
  [21]: http://reference.wolfram.com/language/ref/NetTrain.html&#xD;
  [22]: http://www.wolfram.com/language/11/improved-machine-learning/&#xD;
  [23]: http://community.wolfram.com//c/portal/getImageAttachment?filename=CumberbatchMachineLearning.png&amp;amp;userId=900759&#xD;
  [24]: http://reference.wolfram.com/language/ref/ImageIdentify.html&#xD;
  [25]: http://reference.wolfram.com/language/ref/FeatureExtract.html&#xD;
  [26]: http://reference.wolfram.com/language/ref/Classify.html&#xD;
  [27]: http://reference.wolfram.com/language/ref/FeatureExtractor.html&#xD;
  [28]: http://reference.wolfram.com/language/ref/FindFormula.html&#xD;
  [29]: http://reference.wolfram.com/language/ref/FindClusters.html&#xD;
  [30]: http://reference.wolfram.com/language/ref/CriterionFunction.html&#xD;
  [31]: http://reference.wolfram.com/language/guide/Channel-BasedCommunication.html&#xD;
  [32]: http://reference.wolfram.com/language/ref/program/wolframscript.html&#xD;
  [33]: http://www.wolfram.com/language/11/symbolic-and-numeric-calculus/&#xD;
  [34]: http://blog.wolfram.com/2016/08/08/today-we-launch-version-11/&#xD;
  [35]: http://www.wolfram.com/mathematica/new-in-11/</description>
    <dc:creator>Zachary Littrell</dc:creator>
    <dc:date>2016-08-08T16:43:43Z</dc:date>
  </item>
</rdf:RDF>

