<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel rdf:about="https://community.wolfram.com">
    <title>Community RSS Feed</title>
    <link>https://community.wolfram.com</link>
    <description>RSS Feed for Wolfram Community showing any discussions tagged with Data Drop sorted by most likes.</description>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/461190" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/456947" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/992466" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1849339" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/453169" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/945462" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/770513" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/553861" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/535152" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/883554" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/861452" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/792389" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/883091" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1321183" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1191487" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/905224" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/534904" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1135312" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/990202" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2016353" />
      </rdf:Seq>
    </items>
  </channel>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/461190">
    <title>Capturing Data from an Android Phone using Wolfram Data Drop</title>
    <link>https://community.wolfram.com/groups/-/m/t/461190</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/cfc70e5d-4463-4b35-82d7-ae1b9e1174e5</description>
    <dc:creator>Diego Zviovich</dc:creator>
    <dc:date>2015-03-17T17:08:31Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/456947">
    <title>How to Make a Time Lapse Video With Your Raspberry Pi and Data Drop</title>
    <link>https://community.wolfram.com/groups/-/m/t/456947</link>
    <description>![Wolfram Pi Flowers][9]&#xD;
&#xD;
&#xD;
----------&#xD;
&#xD;
I will explain how to make the time-lapse animation you can see above.&#xD;
&#xD;
**1)** Set-up your [camera module][1]. I sticked mine on a hard drive, see the first image on [my previous Data Drop post][2].&#xD;
&#xD;
![setup][3]&#xD;
&#xD;
**2)** Take a test shot to check that the exposure is acceptable.&#xD;
&#xD;
    DeviceRead[&amp;#034;RaspiCam&amp;#034;,{320, 240}]&#xD;
&#xD;
**3)** Adjust the resulting image with [ImageAdjust][4].&#xD;
&#xD;
    ImageAdjust[DeviceRead[&amp;#034;RaspiCam&amp;#034;,{320, 240}]]&#xD;
![Test shot][5]&#xD;
&#xD;
**4)** Create a new databin, and take note of its short ID:&#xD;
&#xD;
    CloudConnect[&amp;#034;email-wolframID&amp;#034;,&amp;#034;password&amp;#034; ];&#xD;
    bin=CreateDatabin[];&#xD;
    bin[&amp;#034;ShortID&amp;#034;]&#xD;
&amp;#034;3GgU-jf4&amp;#034;&#xD;
&#xD;
**5)** Setup a [ScheduledTask][6] that adds a snapshot to your databin every 360 seconds (6minutes):&#xD;
&#xD;
    intervalometer=RunScheduledTask[DatabinAdd[Databin[&amp;#034;3GgU-jf4&amp;#034;], ImageAdjust[DeviceRead[&amp;#034;RaspiCam&amp;#034;,{320, 240}]]],360]&#xD;
&#xD;
**6)** Water your plant and wait.&#xD;
&#xD;
**7)** Check that your databin is being filled correctly [http://wolfr.am/3GgU-jf4][7]&#xD;
&#xD;
![databin][8]&#xD;
&#xD;
**8)** Compile the animated gif:&#xD;
&#xD;
    frames = Values[Databin[&amp;#034;3GgU-jf4&amp;#034;]]; &#xD;
    Export[&amp;#034;resurrected_plant.gif&amp;#034;, Join[frames, Reverse[frames]]]&#xD;
&#xD;
**9)** Enjoy!&#xD;
&#xD;
![Wolfram Pi Flowers][9]&#xD;
&#xD;
**10)** To stop your scheduled task, use the function [StopScheduledTask][10]:&#xD;
&#xD;
    StopScheduledTask[intervalometer]&#xD;
&#xD;
&#xD;
  [1]: http://community.wolfram.com/groups/-/m/t/157704&#xD;
  [2]: http://community.wolfram.com/groups/-/m/t/453169&#xD;
  [3]: /c/portal/getImageAttachment?filename=setupPlant.png&amp;amp;userId=56204&#xD;
  [4]: http://reference.wolfram.com/language/ref/ImageAdjust.html&#xD;
  [5]: /c/portal/getImageAttachment?filename=FlowerFrames.jpg&amp;amp;userId=56204&#xD;
  [6]: http://reference.wolfram.com/language/ref/RunScheduledTask.html&#xD;
  [7]: http://wolfr.am/3GgU-jf4&#xD;
  [8]: /c/portal/getImageAttachment?filename=databin_filled.png&amp;amp;userId=56204&#xD;
  [9]: /c/portal/getImageAttachment?filename=Wplant.gif&amp;amp;userId=56204&#xD;
  [10]: http://reference.wolfram.com/language/ref/StopScheduledTask.html</description>
    <dc:creator>Bernat Espigulé</dc:creator>
    <dc:date>2015-03-11T11:50:05Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/992466">
    <title>Classifier for Human Motions with data from an accelerometer</title>
    <link>https://community.wolfram.com/groups/-/m/t/992466</link>
    <description>This project was part of a Wolfram Mentorship Program.&#xD;
&#xD;
The classification of human motions based on patterns and physical data is of great importance in developing areas such as robotics. Also, a function that recognizes a specific human motion can be an important addition to artificial intelligence and physiological monitoring systems. This project is about acquiring, curating and analyzing experimental data from certain actions such as walking, running and climbing stairs. The data taken with the help of an accelerometer needs to be turned into an acceptable input for the Classify function. Finally, the function can be updated with more data and classes to make it more efficient and whole.&#xD;
&#xD;
**Algorithms and procedures**&#xD;
&#xD;
The data for this project was acquired by programming an Arduino UNO microprocessor with a Raspberry Pi computer, using Wolfram Language. An accelerometer connected to the Arduino sent measurements each time it was called upon, and Mathematica in the Raspberry Pi collected and uploaded the data. &#xD;
The raw data had to be processed for it to be a good input for the classify function. First, it was transformed into an spectrogram (to analyze the frequency domain of the data). Then, the spectrogram&amp;#039;s image was put through the IFData function which filters out some of the noise, and finally the images were converted into numerical data with the UpToMeasurements function (main function: ComponentMeasurements).&#xD;
This collection numerical data was put in a classify function under six different classes (standing, walking, running, jumping and waving).&#xD;
&#xD;
*The IFData function and the UpToMeasurements functions were sent to me by Todd Rowland during the Mentorship. Both functions will be shown at the end of this post.&#xD;
&#xD;
**Example visualization**&#xD;
&#xD;
The following ListLinePlot is an extract from the jumping data &#xD;
&#xD;
![Example data][1]&#xD;
&#xD;
Next, the data from the plot above is turned into a spectrogram by the function Spectrogram, i.e.:   &#xD;
&#xD;
    spectrogramImage = &#xD;
     Spectrogram[jumpingData, SampleRate -&amp;gt; 10, FrameTicks -&amp;gt; None, &#xD;
      Frame -&amp;gt; False, Ticks -&amp;gt; None, FrameLabel -&amp;gt; None]&#xD;
&#xD;
&#xD;
&#xD;
![Example jumping data spectrogram][2]&#xD;
&#xD;
Finally, all the spectrogram images are used as input for the UpToMeasurements function, along with some properties for the ComponentMeasurements function:&#xD;
&#xD;
 i.e:  &#xD;
&#xD;
    numericalData = &#xD;
     N@Flatten[&#xD;
       UpToMeasurements[&#xD;
        spectrogramImage, {&amp;#034;EnclosingComponentCount&amp;#034;, &amp;#034;Max&amp;#034;, &#xD;
         &amp;#034;MaxIntensity&amp;#034;, &amp;#034;TotalIntensity&amp;#034;, &amp;#034;StandardDeviationIntensity&amp;#034;, &#xD;
         &amp;#034;ConvexCoverage&amp;#034;, &amp;#034;Total&amp;#034;, &amp;#034;Skew&amp;#034;, &amp;#034;FilledCircularity&amp;#034;, &#xD;
         &amp;#034;MaxCentroidDistance&amp;#034;, &amp;#034;ExteriorNeighborCount&amp;#034;, &amp;#034;Area&amp;#034;, &#xD;
         &amp;#034;MinCentroidDistance&amp;#034;, &amp;#034;FilledCount&amp;#034;, &amp;#034;MeanIntensity&amp;#034;, &#xD;
         &amp;#034;StandardDeviation&amp;#034;, &amp;#034;Energy&amp;#034;, &amp;#034;Count&amp;#034;, &amp;#034;MeanCentroidDistance&amp;#034;}, &#xD;
        1]]&#xD;
&#xD;
Which outputs a list of real numbers, one for each of the properties:&#xD;
&#xD;
    {0., 1., 1., 1., 1., 19294.9, 0.222164, 0.985741, 31011.8, 15212.5, \&#xD;
    9624.42, -0.0596506, 0.724527, 190.534, 0., 42584.5, 0.364667, \&#xD;
    42584., 0.453101, 0.315209, 0.232859, 0.169549, 0.00909654, 42584., \&#xD;
    98.7136}&#xD;
&#xD;
These numbers are grouped in a nested list which contains data for all 5 human motions. All the data is lastly classified in a classifier using the Classify function.&#xD;
&#xD;
After several combinations of both properties and data sets, I was able to produce classifier functions with an accuracy of 91%, and a total size of 269kb. &#xD;
&#xD;
------------------------------------------------------------&#xD;
&#xD;
**Attempt on building a classify function using image processing**&#xD;
&#xD;
On the other hand,  the image processing capabilities of Mathematica lets us extract data from images, hence it should be possible to create a classifier which recognizes the moving patterns in the frames of a video. First, I had to take the noise out of every image, this proved to be troublesome, since the background can vary greatly between video samples. Then, I binarized the image in order to isolate the moving particles in each frame, and extract their position with ImageData. Lastly, a data set can be formed from all the analyzed frames; this data can essentially be used in the same way as the accelerometer&amp;#039;s, but the classifier was unsuccessful in separating the samples accurately. &#xD;
This was mainly because the accelerometer&amp;#039;s data is taken at a constant rate and very precisely, whereas the images depend on the camera&amp;#039;s frame rate, and many other external factors. This is what made the data different enough to fail being classified with accuracy. Furthermore, if a big dataset is made from videos of people performing certain actions, the data processing can follow similar steps as the ones explained in this report. Thus producing a similar classifier function. This can further increase the functions accuracy, but the process needs an algorithm that can effectively trace the path of &amp;#034;a particle&amp;#034; that moves through each of the frames of the video, and extract precise velocity data from said movement.&#xD;
&#xD;
------------------------------------------------------------&#xD;
&#xD;
Conclusively, the classify function is working very well with the data provided, its accuracy is about 91% for the SupportVectorMachine method. This is a very good result for the human motion classifier. The next step is to add more classes to the function, and test the classifier with data acquired from different sources, such as another accelerometer and various videos of human motion footage.&#xD;
&#xD;
-----------------------------------------&#xD;
&#xD;
**Code:**&#xD;
&#xD;
 - UpToMeasurements function&#xD;
&#xD;
        UpToMeasurements[image_,property_,n_]:=MaximalBy[ComponentMeasurements[image,&amp;#034;Count&amp;#034;],Last,UpTo[n]][[All,1]]/.ComponentMeasurements[image,property]&#xD;
&#xD;
*Note: This function simplifies the exploration of properties to input in ComponentMeasurements, also, it outputs a usable list of numerical data retrieved from a given group of images.&#xD;
&#xD;
 - IFData function:&#xD;
&#xD;
        imagefunctions=&amp;lt;|1-&amp;gt; (EntropyFilter[#,3]&amp;amp;),&#xD;
        2-&amp;gt; (EdgeDetect[EntropyFilter[#,3]]&amp;amp;),&#xD;
        3-&amp;gt;Identity,&#xD;
        4-&amp;gt; (ImageAlign[reference110,#]&amp;amp;),&#xD;
        5-&amp;gt; (ImageHistogram[#,FrameTicks-&amp;gt;None,Frame-&amp;gt;False,FrameLabel-&amp;gt;None,Ticks-&amp;gt;None]&amp;amp;),&#xD;
        6-&amp;gt; (ImageApply[#^.6&amp;amp;,#]&amp;amp;),&#xD;
        7-&amp;gt; (Colorize[MorphologicalComponents[#]]&amp;amp;),&#xD;
        8-&amp;gt; (HighlightImage[#,ImageCorners[#,1,.001,5]]&amp;amp;),&#xD;
        9-&amp;gt; (HighlightImage[#,Graphics[Disk[{200,200},200]]]&amp;amp;),&#xD;
        10-&amp;gt; ImageRotate,&#xD;
        11-&amp;gt; (ImageRotate[#,45Degree]&amp;amp;),&#xD;
        12-&amp;gt;(ImageTransformation[#,Sqrt]&amp;amp;),&#xD;
        13-&amp;gt;(ImageTransformation[#,Function[p,With[{C=150.,R=35.},{p[[1]]+(R*Cos[(p[[1]]-C)*360*2/R]/6),p[[2]]}]]]&amp;amp;),&#xD;
        14-&amp;gt;( Dilation[#,DiskMatrix[4]]&amp;amp;),&#xD;
        15-&amp;gt;( ImageSubtract[Dilation[#,1],#]&amp;amp;),&#xD;
        16-&amp;gt; (Erosion[#,DiskMatrix[4]]&amp;amp;),&#xD;
        17-&amp;gt; (Opening[#,DiskMatrix[4]]&amp;amp;),&#xD;
        18-&amp;gt;(Closing[#,DiskMatrix[4]]&amp;amp;),&#xD;
        19-&amp;gt;DistanceTransform,&#xD;
        20-&amp;gt; InverseDistanceTransform,&#xD;
        21-&amp;gt; (HitMissTransform[#,{{1,-1},{-1,-1}}]&amp;amp;),&#xD;
        22-&amp;gt;(TopHatTransform[#,5]&amp;amp;),&#xD;
        23-&amp;gt;(BottomHatTransform[#,5]&amp;amp;), &#xD;
        24-&amp;gt; (MorphologicalTransform[Binarize[#],Max]&amp;amp;),&#xD;
        25-&amp;gt; (MorphologicalTransform[Binarize[#],&amp;#034;EndPoints&amp;#034;]&amp;amp;),&#xD;
        26-&amp;gt;MorphologicalGraph,&#xD;
        27-&amp;gt;SkeletonTransform,&#xD;
        28-&amp;gt;Thinning,&#xD;
        29-&amp;gt;Pruning,&#xD;
        30-&amp;gt; MorphologicalBinarize,&#xD;
        31-&amp;gt; (ImageAdjust[DerivativeFilter[#,{1,1}]]&amp;amp;),&#xD;
        32-&amp;gt; (GradientFilter[#,1]&amp;amp;),&#xD;
        33-&amp;gt; MorphologicalPerimeter,&#xD;
        34-&amp;gt; Radon&#xD;
        |&amp;gt;;&#xD;
        &#xD;
        reference110=BlockRandom[SeedRandom[&amp;#034;110&amp;#034;];Image[CellularAutomaton[110,RandomInteger[1,400],400]]];&#xD;
        &#xD;
        IFData[n_Integer]:=Lookup[imagefunctions,n,Identity]&#xD;
        &#xD;
        IFData[&amp;#034;Count&amp;#034;]:=Length[imagefunctions]&#xD;
        &#xD;
        IFData[All]:=imagefunctions&#xD;
&#xD;
*Note: This function groups together several image filtering fuctions; it was used to simplify the exploration of functions to be used in the classifier. &#xD;
**This function was written by the the Wolfram team, but was slightly modified for this project.&#xD;
&#xD;
 - propertyVector function (this function automatically evaluates all the prior necessary code needed to create the classify functions):&#xD;
&#xD;
        propertyVector[property_]:={walkingvector=N@Flatten[UpToMeasurements[#,property,1]]&amp;amp;/@IFData[6]/@(Spectrogram[#,SampleRate-&amp;gt;10,FrameTicks-&amp;gt;None,Frame-&amp;gt;False,Ticks-&amp;gt;None,FrameLabel-&amp;gt;None]&amp;amp;/@walk);&#xD;
        jumpingvector=N@Flatten[UpToMeasurements[#,property,1]]&amp;amp;/@IFData[6]/@(Spectrogram[#,SampleRate-&amp;gt;10,FrameTicks-&amp;gt;None,Frame-&amp;gt;False,Ticks-&amp;gt;None,FrameLabel-&amp;gt;None]&amp;amp;/@jump);&#xD;
        standingvector=N@Flatten[UpToMeasurements[#,property,1]]&amp;amp;/@IFData[6]/@(Spectrogram[#,SampleRate-&amp;gt;10,FrameTicks-&amp;gt;None,Frame-&amp;gt;False,Ticks-&amp;gt;None,FrameLabel-&amp;gt;None]&amp;amp;/@stand);&#xD;
        runningvector=N@Flatten[UpToMeasurements[#,property,1]]&amp;amp;/@IFData[6]/@(Spectrogram[#,SampleRate-&amp;gt;10,FrameTicks-&amp;gt;None,Frame-&amp;gt;False,Ticks-&amp;gt;None,FrameLabel-&amp;gt;None]&amp;amp;/@run);&#xD;
        wavingvector=N@Flatten[UpToMeasurements[#,property,1]]&amp;amp;/@IFData[6]/@(Spectrogram[#,SampleRate-&amp;gt;10,FrameTicks-&amp;gt;None,Frame-&amp;gt;False,Ticks-&amp;gt;None,FrameLabel-&amp;gt;None]&amp;amp;/@wave);&#xD;
        stairsvector=N@Flatten[UpToMeasurements[#,property,1]]&amp;amp;/@IFData[6]/@(Spectrogram[#,SampleRate-&amp;gt;10,FrameTicks-&amp;gt;None,Frame-&amp;gt;False,Ticks-&amp;gt;None,FrameLabel-&amp;gt;None]&amp;amp;/@stairs);&#xD;
        walkingvectortest=N@Flatten[UpToMeasurements[#,property,1]]&amp;amp;/@IFData[6]/@(Spectrogram[#,SampleRate-&amp;gt;10,FrameTicks-&amp;gt;None,Frame-&amp;gt;False,Ticks-&amp;gt;None,FrameLabel-&amp;gt;None]&amp;amp;/@testwalk);&#xD;
        jumpingvectortest=N@Flatten[UpToMeasurements[#,property,1]]&amp;amp;/@IFData[6]/@(Spectrogram[#,SampleRate-&amp;gt;10,FrameTicks-&amp;gt;None,Frame-&amp;gt;False,Ticks-&amp;gt;None,FrameLabel-&amp;gt;None]&amp;amp;/@testjump);&#xD;
        standingvectortest=N@Flatten[UpToMeasurements[#,property,1]]&amp;amp;/@IFData[6]/@(Spectrogram[#,SampleRate-&amp;gt;10,FrameTicks-&amp;gt;None,Frame-&amp;gt;False,Ticks-&amp;gt;None,FrameLabel-&amp;gt;None]&amp;amp;/@teststand);&#xD;
        runningvectortest=N@Flatten[UpToMeasurements[#,property,1]]&amp;amp;/@IFData[6]/@(Spectrogram[#,SampleRate-&amp;gt;10,FrameTicks-&amp;gt;None,Frame-&amp;gt;False,Ticks-&amp;gt;None,FrameLabel-&amp;gt;None]&amp;amp;/@testrun);&#xD;
        wavingvectortest=N@Flatten[UpToMeasurements[#,property,1]]&amp;amp;/@IFData[6]/@(Spectrogram[#,SampleRate-&amp;gt;10,FrameTicks-&amp;gt;None,Frame-&amp;gt;False,Ticks-&amp;gt;None,FrameLabel-&amp;gt;None]&amp;amp;/@testwave);&#xD;
        stairsvectortest=N@Flatten[UpToMeasurements[#,property,1]]&amp;amp;/@IFData[6]/@(Spectrogram[#,SampleRate-&amp;gt;10,FrameTicks-&amp;gt;None,Frame-&amp;gt;False,Ticks-&amp;gt;None,FrameLabel-&amp;gt;None]&amp;amp;/@teststairs);}&#xD;
        &#xD;
        Training:=trainingSet=&amp;lt;|&amp;#034;walking&amp;#034;-&amp;gt;walkingvector,&amp;#034;running&amp;#034;-&amp;gt;runningvector,&#xD;
        &amp;#034;standing&amp;#034;-&amp;gt; standingvector,&#xD;
        &amp;#034;jumping&amp;#034;-&amp;gt; jumpingvector,&#xD;
        &amp;#034;waving&amp;#034;-&amp;gt; wavingvector,&#xD;
        &amp;#034;stairs&amp;#034;-&amp;gt; stairsvector|&amp;gt;;&#xD;
        &#xD;
        Test:=testSet=&amp;lt;|&amp;#034;walking&amp;#034;-&amp;gt;walkingvectortest,&amp;#034;running&amp;#034;-&amp;gt;runningvectortest,&#xD;
        &amp;#034;standing&amp;#034;-&amp;gt; standingvectortest,&#xD;
        &amp;#034;jumping&amp;#034;-&amp;gt; jumpingvectortest,&#xD;
        &amp;#034;waving&amp;#034;-&amp;gt; wavingvectortest,&#xD;
        &amp;#034;stairs&amp;#034;-&amp;gt; stairsvectortest|&amp;gt;;&#xD;
&#xD;
 - Example code for the acceleration data acquisition from image processing:&#xD;
&#xD;
        images=Import[&amp;#034;$path&amp;#034;]&#xD;
        motionData=&#xD;
        Count[#,1]&amp;amp;/@ &#xD;
          (Flatten[    	&#xD;
          	ImageData[Binarize[ImageSubtract[ImageSubtract[#[[1]],#[[2]]],ImageSubtract[#[[2]],#[[3]]]]]]&amp;amp;/@&#xD;
        		  Partition[images,3,1],1])&#xD;
&#xD;
*Note: before this code can be used, the backgrounds of the frames of the video have to be removed, and the image has to be binarized as much as possible (some examples will be shown in the next section).&#xD;
&#xD;
 - Example code for the retrieval of raw data from DataDrop:&#xD;
&#xD;
        rawData=Values[Databin[&amp;#034;Serial#&amp;#034;, {#}]];&#xD;
        data=Flatten[rawData[&amp;#034;(xacc/yacc/zacc)&amp;#034;]];&#xD;
&#xD;
---------------------------------&#xD;
&#xD;
**Please feel free to contact me or comment if you are interested in the rest of the code ( uploading the C code to the Arduino, the manufacturer&amp;#039;s code for the accelerometer, C code switch that lets Mathematica communicate with the Arduino, and the Wolfram Language code used to start each loop in the switch that retrieves data ). Also, I could send the classify function, or any other information that I might have left out; all suggestions welcome.&#xD;
&#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=1.png&amp;amp;userId=602285&#xD;
  [2]: http://community.wolfram.com//c/portal/getImageAttachment?filename=2.png&amp;amp;userId=602285</description>
    <dc:creator>Pablo Ruales</dc:creator>
    <dc:date>2017-01-11T01:15:04Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1849339">
    <title>How to make a Christmas card on the cloud</title>
    <link>https://community.wolfram.com/groups/-/m/t/1849339</link>
    <description>[![enter image description here][1]](https://www.wolframcloud.com/env/silviah/Published/xmas.html)&#xD;
&#xD;
**POSTCARD:** https://www.wolframcloud.com/env/silviah/Published/xmas.html&#xD;
&#xD;
&amp;amp;[embedded notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Xmas_postcard.jpg&amp;amp;userId=20103&#xD;
  [2]: https://www.wolframcloud.com/obj/5d66a4c6-13dc-43c9-9885-2df6e44a0a6f</description>
    <dc:creator>Silvia Hao</dc:creator>
    <dc:date>2019-12-29T14:07:04Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/453169">
    <title>Wolfram Data Drop and the Raspberry Pi for Education</title>
    <link>https://community.wolfram.com/groups/-/m/t/453169</link>
    <description>Yesterday, [Stephen Wolfram announced][1] the release of this great solution for storing and sharing data coming from sensors, devices, programs, humans or anything else: the [Wolfram Data Drop][2]. I think this is a turning point; it completely changes the game on how I&amp;#039;ve been interacting with streams of data. In this post I want to share with you three ideas that I&amp;#039;ve been exploring using the [Raspberry Pi 2][3], which, by the way, it runs Mathematica about 10x faster than its predecessors!&#xD;
&#xD;
![Data Drop on the Raspberry Pi][4]&#xD;
![enter image description here][5]&#xD;
![enter image description here][6]&#xD;
&#xD;
The first idea that came to my mind was to revisit some of the experiments I had carried out in the past, like this [home alarm system][7]. In a matter of minutes, I was able to set up an activity tracker for my home&amp;#039;s hall. Every time I pass by, the [PIR motion sensor][8] adds a 1 to the &amp;#034;mov&amp;#034; variable that is being dropped to [this databin][9] every 20 minutes. Check it out in [W|A][10], it&amp;#039;s live and growing! [== Data drop 3v1UbpOM][11]&#xD;
&#xD;
![My home hall&amp;#039;s activity][12]&#xD;
![Periodic entries][13]&#xD;
&#xD;
This is such a great thing, that dataset is just about me but it could be monitoring whatever you want, like your cat&amp;#039;s crazy habits. For this example the data is being logged periodically but you could set it up in an event-based manner. Like here, whenever a movement is detected, it triggers the [RaspiCam][15] and it sends the snapshot to the following databin:&#xD;
&#xD;
![RaspiCam Databin][16]&#xD;
![Cumulative Activity Plot][17]&#xD;
&#xD;
What about making a several days long time-lapse of you?&#xD;
&#xD;
![Daily work at home][18]&#xD;
&#xD;
Or what about using other sensors? The possibilities are just endless!&#xD;
&#xD;
Finally, let me end up with the following collaborative activity for the classroom. Here is how you can carry it out. &#xD;
&#xD;
First, you create a public databin to add two different names of animals that the students will enter:&#xD;
&#xD;
    CreateDatabin[ &amp;#034;Interpretation&amp;#034; -&amp;gt; {&amp;#034;animal1&amp;#034; -&amp;gt; &amp;#034;Animal&amp;#034;, &amp;#034;animal2&amp;#034; -&amp;gt; &amp;#034;Animal&amp;#034;}, &amp;lt;|&amp;#034;Name&amp;#034; -&amp;gt; &amp;#034;Classroom Zoo&amp;#034;|&amp;gt;]&#xD;
&#xD;
Then, ask your students to submit their favorite animals&amp;#039; names, using the web-based platform http://wolfr.am/3zCzVgPJ&#xD;
&#xD;
![Add new entry][19]&#xD;
&#xD;
Their individual entries will ended up generating things similar to this amazing [Graph][20]!&#xD;
&#xD;
    data = Values[Databin[&amp;#034;3zCzVgPJ&amp;#034;]];&#xD;
    pairs = Apply[Rule, Drop[Transpose[{data[&amp;#034;animal1&amp;#034;], data[&amp;#034;animal2&amp;#034;]}], 9], {1}]&#xD;
![Name pairs][21]&#xD;
&#xD;
    pics = Map[# -&amp;gt; #[&amp;#034;Image&amp;#034;] &amp;amp;, Union[Flatten[Drop[Transpose[{data[&amp;#034;animal1&amp;#034;], data[&amp;#034;animal2&amp;#034;]}], 9]]]];&#xD;
    style ={ VertexSize-&amp;gt;1.2,EdgeStyle-&amp;gt;Directive[Arrowheads[{{.02,.6}}],Hue[.4,1,.3]],VertexShape-&amp;gt;pics};&#xD;
    Graph[pairs, style, ImageSize -&amp;gt; 900]&#xD;
![Animals Graph][22]&#xD;
&#xD;
Please, give [it a try][23]. Later, we will see what the giant graph ends up looking like. Or even more fun, share with us your ideas or databins that you want to be filled out collaboratively!&#xD;
&#xD;
&#xD;
  [1]: http://blog.wolfram.com/2015/03/04/the-wolfram-data-drop-is-live/&#xD;
  [2]: https://datadrop.wolframcloud.com/&#xD;
  [3]: http://www.wolfram.com/raspberry-pi/&#xD;
  [4]: /c/portal/getImageAttachment?filename=RaspberryPi_Data_Drop.png&amp;amp;userId=56204&#xD;
  [5]: /c/portal/getImageAttachment?filename=raspberry-pi-01.png&amp;amp;userId=56204&#xD;
  [6]: /c/portal/getImageAttachment?filename=raspberry-pi-02.png&amp;amp;userId=56204&#xD;
  [7]: http://community.wolfram.com/groups/-/m/t/226163&#xD;
  [8]: http://www.adafruit.com/products/189&#xD;
  [9]: http://wolfr.am/3v1UbpOM&#xD;
  [10]: https://www.wolframalpha.com/input/?i=Data%20drop%203v1UbpOM&#xD;
  [11]: https://www.wolframalpha.com/input/?i=Data%20drop%203v1UbpOM&#xD;
  [12]: /c/portal/getImageAttachment?filename=activity.png&amp;amp;userId=56204&#xD;
  [13]: /c/portal/getImageAttachment?filename=entries.png&amp;amp;userId=56204&#xD;
  [14]: /c/portal/getImageAttachment?filename=MyHomeHallActivity.png&amp;amp;userId=56204&#xD;
  [15]: http://community.wolfram.com/groups/-/m/t/157704&#xD;
  [16]: /c/portal/getImageAttachment?filename=HomeActivity.jpg&amp;amp;userId=56204&#xD;
  [17]: /c/portal/getImageAttachment?filename=cumulativePlot.png&amp;amp;userId=56204&#xD;
  [18]: /c/portal/getImageAttachment?filename=timelapse_Bernat.gif&amp;amp;userId=56204&#xD;
  [19]: /c/portal/getImageAttachment?filename=inputDD.png&amp;amp;userId=56204&#xD;
  [20]: http://reference.wolfram.com/language/ref/Graph.html&#xD;
  [21]: /c/portal/getImageAttachment?filename=ClassZoo.jpg&amp;amp;userId=56204&#xD;
  [22]: /c/portal/getImageAttachment?filename=AnimalsGraph.jpg&amp;amp;userId=56204&#xD;
  [23]: http://wolfr.am/3zCzVgPJ</description>
    <dc:creator>Bernat Espigulé</dc:creator>
    <dc:date>2015-03-05T15:01:41Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/945462">
    <title>Incentivizing Good Behavior with the Wolfram Cloud</title>
    <link>https://community.wolfram.com/groups/-/m/t/945462</link>
    <description>I had such luck using the Wolfram Language to help my son [crack a forgotten lock combination][1], I&amp;#039;ve been trying to find other ways to incorporate little programming demonstrations/projects into daily household life. I won&amp;#039;t go into the details, but my wife and I just made an arrangement with our daughter  she gets a star or point each time she does a certain thing that she doesn&amp;#039;t particularly like to do, and if she gets *x* number of points, she gets a small reward that we&amp;#039;ve agreed on in advance. Typical incentivizing of good behavior... but the thing we&amp;#039;re awarding points for could happen at a variety of times and locations, and in situations where either my wife or I might be present. So how do we ensure that two forgetful parents accurately track these events? It occurred to me that I could probably whip something up in just a few lines of Wolfram Language code that would fit the bill.&#xD;
&#xD;
I need some simple persistent storage for tracking points, so let&amp;#039;s create a Databin:&#xD;
&#xD;
    bin = CreateDatabin[]&#xD;
    Out[301]= Databin[&amp;#034;gx61vKJi&amp;#034;]&#xD;
&#xD;
All I need to do is add (and sometimes, perhaps, subtract) values, so I don&amp;#039;t need much of a schema for the data. Let&amp;#039;s just initialize the Databin with a value of 0:&#xD;
&#xD;
    DatabinAdd[bin, 0]&#xD;
&#xD;
Then I need a simple function to modify the Databin and show some visualization of progress. This one will take a number of points, add them to the last value in the Databin, and plot the result (the new &amp;#034;Latest&amp;#034; value) as a HorizontalGauge:&#xD;
&#xD;
    pointPlot = Function[val,&#xD;
       DatabinAdd[bin, bin[&amp;#034;Latest&amp;#034;][&amp;#034;Data&amp;#034;] + val];&#xD;
       HorizontalGauge[bin[&amp;#034;Latest&amp;#034;][&amp;#034;Data&amp;#034;], {0, 25}, &#xD;
        GaugeMarkers -&amp;gt; Placed[Graphics[Disk[]], &amp;#034;DivisionInterval&amp;#034;], &#xD;
        ScaleDivisions -&amp;gt; {5, 5}, ImageSize -&amp;gt; 700]];&#xD;
&#xD;
Then I make a simple FormPage, which lets me add and remove single points, or simply plot the latest value (by adding 0 points to the latest value):&#xD;
&#xD;
    f = FormPage[{&amp;#034;Points&amp;#034; -&amp;gt; &amp;lt;|&#xD;
         &amp;#034;Interpreter&amp;#034; -&amp;gt; {&amp;#034;+1&amp;#034; -&amp;gt; 1, &amp;#034;-1&amp;#034; -&amp;gt; -1, &amp;#034;Check progress&amp;#034; -&amp;gt; 0}, &#xD;
         &amp;#034;Control&amp;#034; -&amp;gt; PopupMenu|&amp;gt;}, pointPlot[#Points] &amp;amp;, &#xD;
      AppearanceRules -&amp;gt; &amp;lt;|&amp;#034;Title&amp;#034; -&amp;gt; &amp;#034;Random Kid Challenge&amp;#034;|&amp;gt;]&#xD;
&#xD;
And then deploy...&#xD;
&#xD;
    In[323]:= CloudDeploy[f, Permissions -&amp;gt; &amp;#034;Public&amp;#034;]&#xD;
    Out[323]= CloudObject[&amp;#034;https://www.wolframcloud.com/objects/8fd763f3-1307-4971-9475-74840fcdd22e&amp;#034;]&#xD;
&#xD;
![enter image description here][2]&#xD;
&#xD;
&#xD;
  [1]: http://community.wolfram.com/groups/-/m/t/926136&#xD;
  [2]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Challenge.png&amp;amp;userId=21095</description>
    <dc:creator>Alan Joyce</dc:creator>
    <dc:date>2016-10-17T23:28:34Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/770513">
    <title>Creating a web form whose content changes based upon data (e.g. to-do list)</title>
    <link>https://community.wolfram.com/groups/-/m/t/770513</link>
    <description>By default, web forms that you deploy in the [Wolfram Cloud][1] are generated upon evaluation of **[CloudDeploy\[ \]][2]**. But you can also deploy web forms that gets generated on-demand. This allows you to deploy forms whose content may change for each user or session.&#xD;
&#xD;
In the following example, I want to create a simple checklist that displays my to-do items. Once I&amp;#039;ve noted that I&amp;#039;ve completed it, the information will be transferred to [Data Drop][3]&amp;#039;s databin, where it will be stored for easy access. Each time I revisit the form, the items that I have completed will be hidden from the options.&#xD;
&#xD;
**1. Set up your databin.**&#xD;
&#xD;
The databin is composed of accepting two pieces of information: the to-do item and the data in which it was completed.&#xD;
&#xD;
        bin = CreateDatabin[&amp;#034;Name&amp;#034; -&amp;gt; &amp;#034;My Checklist&amp;#034;, &#xD;
          &amp;#034;Interpretation&amp;#034; -&amp;gt; {&amp;#034;Todo&amp;#034; -&amp;gt; &amp;#034;String&amp;#034;, &#xD;
            &amp;#034;DateCompleted&amp;#034; -&amp;gt; &amp;#034;String&amp;#034;}, Permissions -&amp;gt; &amp;#034;Public&amp;#034;]&#xD;
&#xD;
**2. Insert some empty data.**&#xD;
&#xD;
For me, I had to insert initial placeholders in the databin so that the web form can inject data into the databin without issues.&#xD;
&#xD;
    DatabinAdd[bin, &amp;lt;|&#xD;
      &amp;#034;Todo&amp;#034; -&amp;gt; {},&#xD;
      &amp;#034;DateCompleted&amp;#034; -&amp;gt; {}&#xD;
      |&amp;gt;]&#xD;
&#xD;
**3. Create the web form**&#xD;
&#xD;
    CloudDeploy[&#xD;
     Delayed[&#xD;
      FormFunction[{&#xD;
        {&amp;#034;todo&amp;#034;, &amp;#034;List of Todo Items&amp;#034;} -&amp;gt; &#xD;
         AnySubset[&#xD;
          Complement[{&amp;#034;do laundry&amp;#034;, &amp;#034;buy groceries&amp;#034;, &amp;#034;get oil change&amp;#034;, &#xD;
            &amp;#034;walk the dog&amp;#034;, &amp;#034;feed the cat&amp;#034;, &amp;#034;call parents&amp;#034;, &amp;#034;exercise&amp;#034;, &#xD;
            &amp;#034;pick up prescription&amp;#034;},&#xD;
           Flatten[Values[Values[Databin[&amp;#034;---databinID---&amp;#034;]]][[1]]]&#xD;
           ]],&#xD;
        {&amp;#034;date&amp;#034;, &amp;#034;Date Completed&amp;#034;} -&amp;gt; &amp;lt;|&amp;#034;Interpreter&amp;#034; -&amp;gt; &amp;#034;Date&amp;#034;, &#xD;
          &amp;#034;Required&amp;#034; -&amp;gt; False|&amp;gt;&#xD;
        },&#xD;
       Column[{&#xD;
          DatabinAdd[&amp;#034;---databinID---&amp;#034;, &amp;lt;|&#xD;
             &amp;#034;Todo&amp;#034; -&amp;gt; #todo,&#xD;
             &amp;#034;DateCompleted&amp;#034; -&amp;gt; #date&#xD;
             |&amp;gt;];,&#xD;
          Style[&amp;#034;Alright!&amp;#034;, &amp;#034;Chapter&amp;#034;, FontSize -&amp;gt; 24]&#xD;
          }] &amp;amp;,&#xD;
       &amp;#034;CloudCDF&amp;#034;,&#xD;
       AppearanceRules -&amp;gt; &amp;lt;|&#xD;
         &amp;#034;Title&amp;#034; -&amp;gt; &amp;#034;My Todo List&amp;#034;,&#xD;
         &amp;#034;Description&amp;#034; -&amp;gt; &amp;#034;Check off the todo list for the day&amp;#034;,&#xD;
         &amp;#034;SubmitLabel&amp;#034; -&amp;gt; &amp;#034;Submit&amp;#034;&#xD;
         |&amp;gt;&#xD;
       ], &amp;#034;HTMLCloudCDF&amp;#034;],&#xD;
     Permissions -&amp;gt; &amp;#034;Public&amp;#034;]&#xD;
&#xD;
The key here is the **[Delayed\[\]][4]** function. It will generate the contents of the form when the user visits the page. It is followed by **[FormFunction\[\]][5]** that will construct the inputs for the form. **[AnySubset\[\]][6]** and **[Complement\[\]][7]** are used to compare the initial list of the to-do list and the items that have been completed and are logged into the databin.&#xD;
&#xD;
The middle part of the code creates the form response page.&#xD;
&#xD;
The last part of the code specifies extra information for the form, such as the title, description, and the label for the Submit button. These are all optional.&#xD;
&#xD;
After the form is deployed, the form should look something like this:&#xD;
            ![enter image description here][8]&#xD;
&#xD;
I will choose to do the laundry and exercise.&#xD;
&#xD;
&#xD;
After I submit the form and return to it later on, I will see that those two options are removed from the form:&#xD;
            ![enter image description here][9]&#xD;
&#xD;
&#xD;
When I check my databin page, I will also see that the two to-do items are added:&#xD;
            ![enter image description here][10]&#xD;
&#xD;
Feel free to experiment, and let me know how it goes!&#xD;
&#xD;
  [1]: http://www.wolframcloud.com&#xD;
  [2]: http://reference.wolfram.com/language/ref/CloudDeploy.html&#xD;
  [3]: https://datadrop.wolframcloud.com/&#xD;
  [4]: http://reference.wolfram.com/language/ref/Delayed.html&#xD;
  [5]: http://reference.wolfram.com/language/ref/FormFunction.html&#xD;
  [6]: http://reference.wolfram.com/language/ref/AnySubset.html&#xD;
  [7]: http://reference.wolfram.com/language/ref/Complement.html&#xD;
  [8]: http://community.wolfram.com//c/portal/getImageAttachment?filename=1.png&amp;amp;userId=24463&#xD;
  [9]: http://community.wolfram.com//c/portal/getImageAttachment?filename=2.png&amp;amp;userId=24463&#xD;
  [10]: http://community.wolfram.com//c/portal/getImageAttachment?filename=3.png&amp;amp;userId=24463</description>
    <dc:creator>Brian Lee</dc:creator>
    <dc:date>2016-01-08T23:24:40Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/553861">
    <title>Wolfram Data Drop IFTTT Channel: track your elevation and much more</title>
    <link>https://community.wolfram.com/groups/-/m/t/553861</link>
    <description>Yesterday [IFTTT][1] (IF This Then That) released the [Wolfram Data Drop Channel][2]. This is a BIG step forward in making the data from the Internet of Things computable. Currently there are more than [150 trigger channels][3] that can be connected to [Data Drop][4]. Let&amp;#039;s take a look at one of those channels: [Numerous][5]. In this post I&amp;#039;ll show you how to get a Numerous recipe running in a few simple steps.&#xD;
&#xD;
- Sign in to [https://ifttt.com][6]. Go to My Recipes. Click &amp;#034;Create Recipe&amp;#034;&#xD;
&#xD;
![Click Create Recipe][7]&#xD;
&#xD;
- Step 1: Select the Numerous Trigger Channel&#xD;
&#xD;
![Choose Trigger][8]&#xD;
&#xD;
 - Step 2: Select the trigger that fires every time a number changes by any amount&#xD;
&#xD;
![chooseType][9]&#xD;
&#xD;
 - Step 3: Select the number that you want to track, elevation in my case&#xD;
&#xD;
![Select number][10]&#xD;
&#xD;
 - Step 4: Select Wolfram Data Drop as Your Action Channel&#xD;
&#xD;
![then action][11]&#xD;
![data drop channel][12]&#xD;
&#xD;
 - Step 5: Select &amp;#034;Add entry&amp;#034; Action&#xD;
&#xD;
![add entry][13]&#xD;
&#xD;
 - Step 6: Complete Action Fields&#xD;
&#xD;
![action fields][14]&#xD;
&#xD;
Use the Wolfram Language function [CreateDatabin][15] to provide a name, and to specify that we want the values of the entries to be interpreted as a physical quantities (feet in this case).&#xD;
&#xD;
    bin = CreateDatabin[&amp;lt;|&amp;#034;Name&amp;#034; -&amp;gt; &amp;#034;My Elevation&amp;#034;|&amp;gt;, &#xD;
    &amp;#034;Interpretation&amp;#034; -&amp;gt; {&amp;#034;elevation&amp;#034; -&amp;gt;Restricted[&amp;#034;StructuredQuantity&amp;#034;,&amp;#034;Feet&amp;#034;]}];&#xD;
    bin[&amp;#034;ShortID&amp;#034;]&#xD;
**&amp;#034;6F9_LE8T&amp;#034;**&#xD;
&#xD;
 - Copy-paste this ID&#xD;
&#xD;
 - Write *elevation=* and select the ingredient **FormattedValue**.&#xD;
&#xD;
![ingredient][17]&#xD;
&#xD;
    elevation={{FormattedValue}}&#xD;
&#xD;
 - Step 7: Create and Connect&#xD;
&#xD;
![create][18]&#xD;
&#xD;
Voilà!&#xD;
======&#xD;
![Numerous recipe][19]&#xD;
&#xD;
Now you can take an insight of the elevation measurements with [Wolfram|Alpha][20] by entering *Data drop* along with your databin&amp;#039;s *ID*.&#xD;
**Data drop 6F9_LE8T** in my case.&#xD;
&#xD;
![WA][21]&#xD;
&#xD;
Or you can access this data directly from the Wolfram Language:&#xD;
&#xD;
    DateListPlot[Databin[&amp;#034;6F9_LE8T&amp;#034;], Filling -&amp;gt; Bottom, FillingStyle -&amp;gt; LightBrown]&#xD;
&#xD;
![WLelevation][22]&#xD;
&#xD;
Please, feel free to share your own recipes below. Enjoy!&#xD;
&#xD;
&#xD;
  [1]: https://ifttt.com/wtf&#xD;
  [2]: https://ifttt.com/wolfram_data_drop&#xD;
  [3]: https://ifttt.com/channels&#xD;
  [4]: https://datadrop.wolframcloud.com/&#xD;
  [5]: https://ifttt.com/numerous&#xD;
  [6]: https://ifttt.com&#xD;
  [7]: /c/portal/getImageAttachment?filename=createRecipe.png&amp;amp;userId=56204&#xD;
  [8]: /c/portal/getImageAttachment?filename=1.png&amp;amp;userId=56204&#xD;
  [9]: /c/portal/getImageAttachment?filename=2v.png&amp;amp;userId=56204&#xD;
  [10]: /c/portal/getImageAttachment?filename=2.png&amp;amp;userId=56204&#xD;
  [11]: /c/portal/getImageAttachment?filename=3.png&amp;amp;userId=56204&#xD;
  [12]: /c/portal/getImageAttachment?filename=3v.png&amp;amp;userId=56204&#xD;
  [13]: /c/portal/getImageAttachment?filename=4.png&amp;amp;userId=56204&#xD;
  [14]: /c/portal/getImageAttachment?filename=6v1.png&amp;amp;userId=56204&#xD;
  [15]: https://reference.wolfram.com/language/ref/CreateDatabin.html&#xD;
  [16]: /c/portal/getImageAttachment?filename=6v4.png&amp;amp;userId=56204&#xD;
  [17]: /c/portal/getImageAttachment?filename=6v5.png&amp;amp;userId=56204&#xD;
  [18]: /c/portal/getImageAttachment?filename=7.png&amp;amp;userId=56204&#xD;
  [19]: /c/portal/getImageAttachment?filename=recipe.png&amp;amp;userId=56204&#xD;
  [20]: https://www.wolframalpha.com/input/?i=Data+drop+6F9_LE8T&#xD;
  [21]: /c/portal/getImageAttachment?filename=WAelev.png&amp;amp;userId=56204&#xD;
  [22]: /c/portal/getImageAttachment?filename=WLelevation.png&amp;amp;userId=56204</description>
    <dc:creator>Bernat Espigulé</dc:creator>
    <dc:date>2015-08-26T16:55:04Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/535152">
    <title>Data Drop Presentation</title>
    <link>https://community.wolfram.com/groups/-/m/t/535152</link>
    <description>Please join me on Tuesday, July 28, for my interactive presentation on Wolfram Data Drop. Participants will help me to demonstrate how to accumulate, standardize, access and share data using Data Drop and the Wolfram Language. Bradley Ashby and Bernat Espigule-Pons will share presentations on mobile apps, Raspberry Pi, and more. Register and see more details: http://www.wolfram.com/training/special-event/wolfram-data-drop-virtual-workshop/&#xD;
&#xD;
Hope to see you Tuesday,&#xD;
&#xD;
Bob</description>
    <dc:creator>Bob Sandheinrich</dc:creator>
    <dc:date>2015-07-23T17:33:23Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/883554">
    <title>[WSS16] Mapping of indoor environments with the Wolfram language</title>
    <link>https://community.wolfram.com/groups/-/m/t/883554</link>
    <description>For the Wolfram Science Summer School, I had the opportunity to talk with Stephen Wolfram about the current situation of robotics. He talked about the possibility of using Mathematica to control a robot that would gather information about its environment to generate 2D contours of indoor environments.&#xD;
&#xD;
The topic discussed is formally know as **Simultaneous Localization And Mapping (SLAM)**, which is a field in Robotics that has gained a considerable amount of attention in the past decade.&#xD;
&#xD;
**Introduction to SLAM**&#xD;
&amp;gt; The Simultaneous Localization and Mapping (SLAM) problem asks if it is possible for a mobile robot to be placed at an unknown location in an unknown environment and for the robot to incrementally build a consistent map of this environment while simultaneously determining its location within this map.&#xD;
&#xD;
**SLAM in Mathematica**&#xD;
&#xD;
A program was developed to simulate the behavior of a robot inside of a room with obstacles to detect. The robot is considered to have sensors on all four sides, detecting objects adjacent to it. A room was created to contain the robot, and test its detection capabilities.&#xD;
&#xD;
![Generated map for the robot][1]&#xD;
![SLAM simulation in Mathematica][2]&#xD;
&#xD;
**Physical implementation**&#xD;
&#xD;
Given that a free version of Mathematica is available on the Raspberry Pi, a robot was built based on this platform. The program was adjusted to adapt to the Pi&amp;#039;s hardware limitations (3.3V digital logic), and a GUI to control the robot was also developed.&#xD;
&#xD;
*More info to be added later*&#xD;
&#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=map.png&amp;amp;userId=573072&#xD;
  [2]: http://community.wolfram.com//c/portal/getImageAttachment?filename=image.gif&amp;amp;userId=573072</description>
    <dc:creator>Isaac Ayala Lozano</dc:creator>
    <dc:date>2016-07-07T03:32:32Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/861452">
    <title>Data Drop with images via API?</title>
    <link>https://community.wolfram.com/groups/-/m/t/861452</link>
    <description>I have a Python data acquisition application that generates images. I&amp;#039;d like to be able to share those to a DD Databin for subsequent analysis. &#xD;
&#xD;
It appears that the &amp;#039;programmatic&amp;#039; interfaces are still &amp;#039;coming soon&amp;#039; so I presume I would need to use the Web API. I can see how to use HTTP Requests to upload simpler key-value pairs, but images seem to require a bit more heavy lifting than I have experience with.&#xD;
&#xD;
Does anyone happen to have a simple example of doing this?</description>
    <dc:creator>Flip Phillips</dc:creator>
    <dc:date>2016-05-24T13:17:53Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/792389">
    <title>The Wolfram Approach to the IoT</title>
    <link>https://community.wolfram.com/groups/-/m/t/792389</link>
    <description>Hi everyone!&#xD;
&#xD;
Just wanted to share with you some notes and pictures about a short talk I gave on [&amp;#034;The Wolfram Approach to the IoT&amp;#034;][1] to members of the [IoTBCN Meetup group][2]. I started by showing them Stephen Wolfram&amp;#039;s blog post [&amp;#034;The Personal Analytics of My Life&amp;#034;][3], which is what got me interested in the Internet of Things. Then I introduced the [Principles and Concepts of the Wolfram Language][4] and I talked about my IoT projects with [Fitbit][5] and [Runkeeper][6].&#xD;
&#xD;
![Concepts WL][7]&#xD;
&#xD;
The second part of the talk was dedicated to [Wolfram Connected Devices Project][8] and [Wolfram Data Drop][9]. I showed a few devices among the 4000+ curated devices, and I invited them to [suggest a device][10] if not listed in there.&#xD;
&#xD;
![IOT BCN][11]&#xD;
&#xD;
[Arduino][12], [Raspberry Pi][13] and [Electric IMP][14] work great with Data Drop. After showing them a few WL examples using these devices and their [Databins][15], I ended my talk with an overview of [Wolfram Data Drop IFTTT Channel][16]. The possibilities offered by this channel are endless and it makes data from devices like [littleBits][17] instantly computable. Simple things like a doorbell can be injected directly into the Internet of Things. See for example how easily I collected and computed three months of data from my doorbell using [an IF Recipe][18], a [cloudBit module][19] with a [sound trigger][20], Data Drop and the Wolfram Language:&#xD;
&#xD;
![IF recipe Data Drop][21]&#xD;
&#xD;
![cloudBit module][22]&#xD;
&#xD;
    t = Databin[&amp;#034;890nfWXB&amp;#034;][&amp;#034;Timestamps&amp;#034;];&#xD;
    byDay = GroupBy[t, DateValue[#, &amp;#034;DayNameShort&amp;#034;] &amp;amp;];&#xD;
    Graphics[{RGBColor[0, 0.61, 0.64], &#xD;
      Table[Disk[{First@#, i}, Log[Last@#]/6] &amp;amp; /@ &#xD;
        Sort[Normal[CountsBy[&#xD;
            byDay[i /. {0 -&amp;gt; &amp;#034;Mon&amp;#034;, 1 -&amp;gt; &amp;#034;Tue&amp;#034;, 2 -&amp;gt; &amp;#034;Wed&amp;#034;, 3 -&amp;gt; &amp;#034;Thu&amp;#034;, 4 -&amp;gt; &amp;#034;Fri&amp;#034;, 5 -&amp;gt; &amp;#034;Sat&amp;#034;, &#xD;
               6 -&amp;gt; &amp;#034;Sun&amp;#034;}], DateValue[#, &amp;#034;Hour&amp;#034;] &amp;amp;]] /. Rule -&amp;gt; List], {i, 0, 6, 1}]}, Frame -&amp;gt; True, &#xD;
     FrameTicks -&amp;gt; {{List @@@ {0 -&amp;gt; &amp;#034;Mon&amp;#034;, 1 -&amp;gt; &amp;#034;Tue&amp;#034;, 2 -&amp;gt; &amp;#034;Wed&amp;#034;, 3 -&amp;gt; &amp;#034;Thu&amp;#034;, 4 -&amp;gt; &amp;#034;Fri&amp;#034;, 5 -&amp;gt; &amp;#034;Sat&amp;#034;, &#xD;
          6 -&amp;gt; &amp;#034;Sun&amp;#034;}, &#xD;
        None}, {{#, DateString[#*3600, {&amp;#034;Hour12Short&amp;#034;, &amp;#034; &amp;#034;, &amp;#034;AMPM&amp;#034;}]} &amp;amp; /@ Range[1, 24, 2], None}}, &#xD;
     PlotRangePadding -&amp;gt; 0.5, ImageSize -&amp;gt; 800]&#xD;
&#xD;
![Doorbell week plot][23]&#xD;
&#xD;
This is somehow the tip of the iceberg of what&amp;#039;s coming. And I expect to see more and more IoT projects done with Wolfram Technologies.&#xD;
&#xD;
![IoT Box][24]&#xD;
&#xD;
&#xD;
  [1]: http://www.wolfram.com/internet-of-things/&#xD;
  [2]: http://www.meetup.com/iotbarcelona/events/228086362/&#xD;
  [3]: http://blog.stephenwolfram.com/2012/03/the-personal-analytics-of-my-life/&#xD;
  [4]: http://www.wolfram.com/language/principles/&#xD;
  [5]: https://reference.wolfram.com/language/ref/service/Fitbit.html&#xD;
  [6]: http://blog.wolfram.com/2015/12/04/a-year-of-runkeeper-analysis-and-visualization/&#xD;
  [7]: http://community.wolfram.com//c/portal/getImageAttachment?filename=concepts_WL.png&amp;amp;userId=56204&#xD;
  [8]: http://devices.wolfram.com/&#xD;
  [9]: https://datadrop.wolframcloud.com/&#xD;
  [10]: http://devices.wolfram.com/suggest-device.html&#xD;
  [11]: http://community.wolfram.com//c/portal/getImageAttachment?filename=iot.png&amp;amp;userId=56204&#xD;
  [12]: https://www.wolfram.com/datadrop/quick-reference/arduino/&#xD;
  [13]: https://www.wolfram.com/datadrop/quick-reference/raspberry-pi/&#xD;
  [14]: https://www.wolfram.com/datadrop/quick-reference/electric-imp/&#xD;
  [15]: https://reference.wolfram.com/language/ref/Databin.html&#xD;
  [16]: http://blog.wolfram.com/2015/09/14/track-everything-with-the-wolfram-data-drop-ifttt-channel/&#xD;
  [17]: http://littlebits.cc/cloud&#xD;
  [18]: https://ifttt.com/recipes/319052-if-doorbell-rings-then-add-an-entry-to-a-databin-and-get-notified&#xD;
  [19]: http://littlebits.cc/bits/cloudbit&#xD;
  [20]: http://littlebits.cc/bits/sound-trigger&#xD;
  [21]: http://community.wolfram.com//c/portal/getImageAttachment?filename=IFrecipeDDrop.png&amp;amp;userId=56204&#xD;
  [22]: http://community.wolfram.com//c/portal/getImageAttachment?filename=WolframDataDropIFTTTChannel.png&amp;amp;userId=56204&#xD;
  [23]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Doorbell_Time_Plot.png&amp;amp;userId=56204&#xD;
  [24]: http://community.wolfram.com//c/portal/getImageAttachment?filename=something-big-coming.png&amp;amp;userId=56204</description>
    <dc:creator>Bernat Espigulé</dc:creator>
    <dc:date>2016-02-12T03:17:34Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/883091">
    <title>[WSS16] Email Management</title>
    <link>https://community.wolfram.com/groups/-/m/t/883091</link>
    <description>Students in an online course must take their exams with a pre-approved proctor. At the beginning of the course students fill out proctor forms and send them to the instructor. Throughout the semester various template emails get sent out to the proctors. These emails however need to be individualized so that testing centers know specifically who is taking the exam. Thus a system needs to be created to automate this process as much as possible. &#xD;
&#xD;
Solution: &#xD;
&#xD;
1. Create a process for collecting the proctor form information online. &#xD;
2. Create a program to send out email content. &#xD;
&#xD;
First I will create a data bin:&#xD;
&#xD;
     bin = CreateDatabin[&amp;#034;Name&amp;#034; -&amp;gt; &amp;#034;Proctor Information&amp;#034;, &#xD;
       &amp;#034;Interpretation&amp;#034; -&amp;gt; {&amp;#034;Student Name&amp;#034; -&amp;gt; &amp;#034;String&amp;#034;, &#xD;
         &amp;#034;Student Email&amp;#034; -&amp;gt; &amp;#034;String&amp;#034;, &amp;#034;Location&amp;#034; -&amp;gt; &amp;#034;String&amp;#034;, &#xD;
         &amp;#034;Proctor Name&amp;#034; -&amp;gt; &amp;#034;String&amp;#034;, &amp;#034;Proctor Email&amp;#034; -&amp;gt; &amp;#034;String&amp;#034;, &#xD;
         &amp;#034;Proctor Verification&amp;#034; -&amp;gt; &amp;#034;String&amp;#034;}]&#xD;
&#xD;
Once you runs this code you will create the databin. Then take the short id and store that to databinid: &#xD;
&#xD;
     databinid=&amp;#034;short id&amp;#034;&#xD;
&#xD;
Next I will deploy to the cloud a form that will gather the information.&#xD;
&#xD;
     CloudDeploy[&#xD;
      FormPage[{{&amp;#034;studentname&amp;#034;, &amp;#034;Student Name&amp;#034;} -&amp;gt; &#xD;
         &amp;#034;String&amp;#034;, {&amp;#034;studentemail&amp;#034;, &amp;#034;Student Email&amp;#034;} -&amp;gt; &amp;#034;EmailAddress&amp;#034;, &#xD;
        &amp;#034;Location&amp;#034; -&amp;gt; &amp;#034;String&amp;#034;, {&amp;#034;proctorname&amp;#034;, &amp;#034;Proctor Name&amp;#034;} -&amp;gt; &#xD;
         &amp;#034;String&amp;#034;, {&amp;#034;proctoremail&amp;#034;, &amp;#034;Proctor Email&amp;#034;} -&amp;gt; &#xD;
         &amp;#034;EmailAddress&amp;#034;, {&amp;#034;link&amp;#034;, &amp;#034;Proctor Verification&amp;#034;} -&amp;gt; &amp;#034;URL&amp;#034;}, &#xD;
       DatabinAdd[&#xD;
         databinid, &amp;lt;|{&amp;#034;Student Name&amp;#034; -&amp;gt; #studentname, &#xD;
           &amp;#034;Student Email&amp;#034; -&amp;gt; #studentemail, &amp;#034;Location&amp;#034; -&amp;gt; #Location, &#xD;
           &amp;#034;Proctor Name&amp;#034; -&amp;gt; #proctorname, &#xD;
           &amp;#034;Proctor Email&amp;#034; -&amp;gt; #proctoremail, &#xD;
           &amp;#034;Proctor Verification&amp;#034; -&amp;gt; Hyperlink@#link}|&amp;gt;] &amp;amp;], &#xD;
      &amp;#034;Permissions&amp;#034; -&amp;gt; &amp;#034;Public&amp;#034;]&#xD;
&#xD;
A URL will be generated that will lead you to the deployed form. Note that you have to be logged into to your wolfram account for this to work. &#xD;
&#xD;
![enter image description here][1]&#xD;
&#xD;
Once entries are made, you can view the results by using the following code.&#xD;
&#xD;
     Dataset[Databin@databinid]&#xD;
&#xD;
Now that the collection process is done, we need to be able to generate emails. In my case I need to generate an email to each proctor with their student&amp;#039;s name in the subject line and in the email body. The email will also include a pdf attachment. The first step is to organize the data in a way that can be used by the later command. We use the following.&#xD;
&#xD;
     dataset = Values[Databin[databinid]]&#xD;
&#xD;
Next we have a command to generate the body of the message. This could be added directly to the Send Mail command later, but keeping it separate may make if easier to edit later. &#xD;
&#xD;
     body[student_String] := Style[StringJoin[&#xD;
        &amp;#034;Hello proctor, &#xD;
        Thank you again for being willing to be a proctor for, &amp;#034;, student, &#xD;
        &amp;#034; On Friday .......... Thank you \&#xD;
        &amp;#034;], FontFamily -&amp;gt; &amp;#034;Arial&amp;#034;, LineSpacing -&amp;gt; {2, 0}, &#xD;
       TextAlignment -&amp;gt; Left]&#xD;
&#xD;
Now that the body of the message is ready, the following command will send the appropriate email to each proctor.&#xD;
&#xD;
     length = Length[dataset[&amp;#034;Student Name&amp;#034;]]&#xD;
     Table[SendMail[&#xD;
       dataset[&amp;#034;Proctor Email&amp;#034;][[i]], {dataset[&amp;#034;Student Name&amp;#034;][[i]], &#xD;
        ToString@body@dataset[&amp;#034;Student Name&amp;#034;][[i]]}, &#xD;
       &amp;#034;UserName&amp;#034; -&amp;gt; &amp;#034;j*****@***.edu&amp;#034;(*,&#xD;
       &amp;#034;Password&amp;#034;\[Rule]&amp;#034;*******&amp;#034;*)], {i, 1, length}]&#xD;
&#xD;
You should also note that for this command to work you need to have Mathematica set up to send emails. To do this go to:&#xD;
&#xD;
     Edit&amp;gt;&amp;gt;Preferences&amp;gt;&amp;gt;Internet Connectivity&amp;gt;&amp;gt;Mail Settings&#xD;
&#xD;
Then add the information from your email client. &#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=formimage.PNG&amp;amp;userId=879326</description>
    <dc:creator>Jason Gregersen</dc:creator>
    <dc:date>2016-07-06T20:03:27Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1321183">
    <title>Using Wolfram to Take the Debate out of our Weekly Lunch</title>
    <link>https://community.wolfram.com/groups/-/m/t/1321183</link>
    <description>Huge shout-out to Paul Winterbotham for being the creative mind that gets all of these projects started. He regularly comes to me with ideas of fun one-off projects that help me create usable content like this.&#xD;
&#xD;
Some background on the project: a few of us here at Wolfram regularly plan a Friday lunch. Each week, we either force one of our colleagues to just pick a spot or have this long debate over where we should go. Instead of continuing to have this drawn out discussion, we decided to have everyone commit about 30 seconds to filling out a form, so we could let Mathematica decide for us! I thought it was a fun use case of the tech and a nice way to flex my own brain muscles to optimize the idea into something easily usable each week.&#xD;
&#xD;
**Databin Creation**&#xD;
&#xD;
To get started, it was necessary to create a databin using the CreateDatabin function to store all of our responses to the survey each week. I&amp;#039;ll usually only do this once per notebook, as to not create too many empty databins in my Wolfram Data Drop. I&amp;#039;ll then just copy and paste that output into a variable, so I&amp;#039;m not recreating databins every time I open the notebook.&#xD;
&#xD;
    CreateDatabin[]&#xD;
&#xD;
![enter image description here][1]&#xD;
&#xD;
**FormPage Creation**&#xD;
&#xD;
For those that have read some of my previous posts, you probably remember the standard template I&amp;#039;ve given for a FormPage. This is obviously an oversimplification of the code but is certainly a good way to start an outline of what you&amp;#039;ll need to include.&#xD;
&#xD;
    FormPage[&#xD;
     &amp;#034;inputs&amp;#034;,&#xD;
     &amp;#034;action items&amp;#034;,&#xD;
     &amp;#034;appearance rules&amp;#034;&#xD;
     ]&#xD;
&#xD;
For our FormPage, we simply wanted to collect each person&amp;#039;s name and top 4 ranked choices for lunch. An additional piece of data CurrentDate[&amp;#034;Week&amp;#034;] is also added to the databin using the DatabinAdd in the &amp;#034;action items&amp;#034; section of the FormPage function in order to help sort the inputs later. Within the notebook, you can see what this page will look like before deploying it to the Wolfram Cloud.&#xD;
&#xD;
    fp = FormPage[{&#xD;
       {&amp;#034;name&amp;#034;, &amp;#034;Your Name:&amp;#034;} -&amp;gt; &amp;#034;String&amp;#034;,&#xD;
       {&amp;#034;firstchoice&amp;#034;, &amp;#034;1st Choice:&amp;#034;} -&amp;gt; &amp;#034;String&amp;#034;,&#xD;
       {&amp;#034;secondchoice&amp;#034;, &amp;#034;2nd Choice:&amp;#034;} -&amp;gt; &amp;#034;String&amp;#034;,&#xD;
       {&amp;#034;thirdchoice&amp;#034;, &amp;#034;3rd Choice:&amp;#034;} -&amp;gt; &amp;#034;String&amp;#034;,&#xD;
       {&amp;#034;fourthchoice&amp;#034;, &amp;#034;4th Choice:&amp;#034;} -&amp;gt; &amp;#034;String&amp;#034;},&#xD;
      (DatabinAdd[&#xD;
         db, {#name, #firstchoice, #secondchoice, #thirdchoice, #fourthchoice, CurrentDate[&amp;#034;Week&amp;#034;]}];&#xD;
        Rasterize[&#xD;
         Style[&amp;#034;Thanks for participating; your suggestions will be taken into consideration&amp;#034;, Medium, Black]]) &amp;amp;,&#xD;
      AppearanceRules -&amp;gt; &amp;lt;|&#xD;
        &amp;#034;Title&amp;#034; -&amp;gt; &amp;#034;Lunch Location Survey&amp;#034;,&#xD;
        &amp;#034;Description&amp;#034; -&amp;gt; &#xD;
         &amp;#034;Please fill out survey to request restaurants for lunch&amp;#034;&#xD;
        |&amp;gt;&#xD;
      ]&#xD;
&#xD;
![enter image description here][2]&#xD;
&#xD;
For convenience purposes, it&amp;#039;s ideal to deploy this to the Wolfram Cloud using the CloudDeploy functionality. We are able to give our form a unique URL with the tag &amp;#034;LunchSelectionForm&amp;#034; using this function. By setting the Permissions to &amp;#034;Public&amp;#034;, all of our coworkers are able to access without logging in. You can also access the form at [this link][3]. A very simple example of how the Wolfram Language saves you a lot of time in creating and deploying data-collecting forms.&#xD;
&#xD;
    CloudDeploy[fp, &amp;#034;LunchSelectionForm&amp;#034;, Permissions -&amp;gt; &amp;#034;Public&amp;#034;]&#xD;
&#xD;
**Data Aggregation and Analysis**&#xD;
&#xD;
The next step in this analysis was to group the collected data by the week in which it was collected. This is where that final DatabinAdd value comes in handy. Since it is the last added value, it&amp;#039;s very simple to just do a GroupBy function using Values to pull the data from the databin and Last to actually group them by that last input date value.&#xD;
&#xD;
    data = GroupBy[Values[db], Last]&#xD;
&#xD;
![enter image description here][4]&#xD;
&#xD;
For our purposes, we only care about one week of data at a time, specifically the current week. If you understand Keys in Wolfram Language this is really easily pulled. Our key of interest is the CurrentDate[&amp;#034;Week&amp;#034;], so we are able to easily pull this from data using that key.&#xD;
&#xD;
    thisWks = data[CurrentDate[&amp;#034;Week&amp;#034;]]&#xD;
&#xD;
![enter image description here][5]&#xD;
&#xD;
Our next step was to create a weighted list of 10 random selections from each coworker&amp;#039;s ranked list of restaurants. This allows for some reliance on each person&amp;#039;s ranking but gives an additional layer of randomness to the final selection. This list of 10 was simply done to give each person an equal stake in the final list of restaurants to be used for the final randomizer.&#xD;
&#xD;
    selection = &#xD;
     Flatten[RandomChoice[{0.4, 0.3, 0.2, 0.1} -&amp;gt; {thisWks[[#]][[2]], &#xD;
           thisWks[[#]][[3]], thisWks[[#]][[4]], thisWks[[#]][[5]]}, {10, &#xD;
          1}] &amp;amp; /@ Range[Length[thisWks]]]&#xD;
&#xD;
![enter image description here][6]&#xD;
&#xD;
As mentioned, we considered stopping here and deciding where to go based on everyone&amp;#039;s weighted responses. However, it seemed a bit more fun to use this full weighted list with a final randomizer to make it seem more up to fate. This small sample size did however show some initial errors with the way we were using the Databin values. You&amp;#039;ll notice that we only had 4 users input, but that we were getting way more that 40 values in our BarChart. This suggests that someone&amp;#039;s selections may be getting more weight than those of the others.&#xD;
&#xD;
    cts = Counts[selection];&#xD;
    BarChart[cts, BarOrigin -&amp;gt; Left, &#xD;
     ChartLabels -&amp;gt; Placed[{Values[cts], Keys[cts]}, {After, Before}]]&#xD;
&#xD;
![enter image description here][7]&#xD;
&#xD;
**Data Errors**&#xD;
&#xD;
*Multiple Submissions per User*&#xD;
&#xD;
You&amp;#039;ll notice that our friend, Paul W, has submitted the form multiple times this week. This is the reasoning behind why we were receiving far more than 40 inputs in our BarChart. To eliminate this issue we can add another GroupBy to sort by user and simply pull each user&amp;#039;s last submitted list for the random pool.&#xD;
&#xD;
Using the same idea as before, we specifically use the Key that relates to this week&amp;#039;s data to pull the submissions from this week. However, we take it a step further by using GroupBy and First to create a list of each submitter&amp;#039;s responses.&#xD;
&#xD;
    groupedWkData = GroupBy[data[CurrentDate[&amp;#034;Week&amp;#034;]], First]&#xD;
&#xD;
![enter image description here][8]&#xD;
&#xD;
We can then use the Last and Slot function to iterate through each individual and pull their last recorded responses. This seemed like the most fair way to select which response to use from each person and actually made it easier to allow for resubmission if someone changed their mind.&#xD;
&#xD;
    lastResp = Last[groupedWkData[[#]]] &amp;amp; /@ Range[Length[groupedWkData]]&#xD;
&#xD;
![enter image description here][9]&#xD;
&#xD;
The new generated BarChart only shows 40 random selections form the generated lists, as expected when giving 10 inputs for the 4 coworkers that submitted.&#xD;
&#xD;
    adjustSelect = &#xD;
      Flatten[RandomChoice[{0.4, 0.3, 0.2, 0.1} -&amp;gt; {lastResp[[#]][[2]], &#xD;
            lastResp[[#]][[3]], lastResp[[#]][[4]], &#xD;
            lastResp[[#]][[5]]}, {10, 1}] &amp;amp; /@ Range[Length[lastResp]]];&#xD;
    cts = Counts[adjustSelect];&#xD;
    BarChart[cts, BarOrigin -&amp;gt; Left, &#xD;
     ChartLabels -&amp;gt; Placed[{Values[cts], Keys[cts]}, {After, Before}]]&#xD;
&#xD;
![enter image description here][10]&#xD;
&#xD;
I will note that we hit a little snag in using this last week, when one of our coworkers decided to be cheeky with the names he input. Users that give multiple nicknames for different submissions can get by this grouping option. We&amp;#039;ve considered simply adding a list of coworkers similar to the solution provided in the next section for the restaurants to avoid this issue as well.&#xD;
&#xD;
*Spelling Errors in Restaurant Input*&#xD;
&#xD;
In our example, you&amp;#039;ll notice that BDubs and BWW were both submitted. This is likely supposed to be the same restaurant, Buffalo Wild Wings, but as with any form, we are subject to human error in input. It may be more ideal to setup a list of restaurants for users to submit to avoid this type of issue. For purposes of not having to add new restaurants down the road, we simply avoided this and relied on our own intuition to see if there was duplicates with different names. However, it&amp;#039;d be a pretty simple fix, as you can see below.&#xD;
&#xD;
For this, we worked together to discuss some of the places in town that we frequent and a few places that fit into our normal lunch-type restaurants. This is what we came up with. There&amp;#039;s probably some better ways to pull this data, but we wanted to minimize the list to what everyone in our group would be interested in rather than adding a bunch of restaurants we would never go to. A bit manual, but worth the customization!&#xD;
&#xD;
    restaurants = {&amp;#034;Baxter&amp;#039;s American Grille&amp;#034;, &amp;#034;Big Grove Tavern&amp;#034;, &#xD;
       &amp;#034;Billy Barooz Pub &amp;amp; Grill&amp;#034;, &amp;#034;Black Dog Smoke &amp;amp; Ale House&amp;#034;, &#xD;
       &amp;#034;Blaze Pizza&amp;#034;, &amp;#034;Buffalo Wild Wings&amp;#034;, &amp;#034;Cactus Grill&amp;#034;, &#xD;
       &amp;#034;Core Life Eatery&amp;#034;, &amp;#034;Courier Cafe&amp;#034;, &amp;#034;Cracked&amp;#034;, &amp;#034;Crane Alley&amp;#034;, &#xD;
       &amp;#034;DP Dough&amp;#034;, &amp;#034;Dancing Dog Eatery &amp;amp; Juicery&amp;#034;, &amp;#034;Destihl Brew Works&amp;#034;, &#xD;
       &amp;#034;Dos Reales&amp;#034;, &amp;#034;Dragon Fire&amp;#034;, &amp;#034;El Toro&amp;#034;, &amp;#034;Farren&amp;#039;s Pub &amp;amp; Eatery&amp;#034;, &#xD;
       &amp;#034;Fiesta Cafe&amp;#034;, &amp;#034;Firehaus&amp;#034;, &amp;#034;Five Guys Burger &amp;amp; Fries&amp;#034;, &#xD;
       &amp;#034;Giordano&amp;#039;s Pizza&amp;#034;, &amp;#034;Golden Harbor&amp;#034;, &amp;#034;Guido&amp;#039;s Bar &amp;amp; Grill&amp;#034;, &#xD;
       &amp;#034;Houlihan&amp;#039;s&amp;#034;, &amp;#034;HuHot Mongolian Grill&amp;#034;, &amp;#034;Joe&amp;#039;s Brewery&amp;#034;, &#xD;
       &amp;#034;Jupiter&amp;#039;s Pizzeria &amp;amp; Billiards&amp;#034;, &amp;#034;Ko Fusion&amp;#034;, &amp;#034;Le Peep&amp;#034;, &#xD;
       &amp;#034;Legends Bar &amp;amp; Grill&amp;#034;, &amp;#034;Lil Porgy&amp;#039;s BBQ&amp;#034;, &amp;#034;Maize Mexican Grill&amp;#034;, &#xD;
       &amp;#034;Manolo&amp;#039;s Pizza &amp;amp; Empanadas&amp;#034;, &amp;#034;Manzella&amp;#039;s Italian Patio&amp;#034;, &#xD;
       &amp;#034;Mas Amigos&amp;#034;, &amp;#034;Meatheads Burgers &amp;amp; Fries&amp;#034;, &amp;#034;Mia Za&amp;#039;s&amp;#034;, &amp;#034;Miga&amp;#034;, &#xD;
       &amp;#034;Moe&amp;#039;s Southwest Grill&amp;#034;, &amp;#034;Monical&amp;#039;s&amp;#034;, &amp;#034;Murphy&amp;#039;s Pub&amp;#034;, &#xD;
       &amp;#034;Old Chicago Pizza&amp;#034;, &amp;#034;Original Pancake House&amp;#034;, &#xD;
       &amp;#034;Panchero&amp;#039;s Mexican Grill&amp;#034;, &amp;#034;Papa Del&amp;#039;s&amp;#034;, &#xD;
       &amp;#034;Perkin&amp;#039;s Restaurant &amp;amp; Bakery&amp;#034;, &amp;#034;Pizzeria Antica&amp;#034;, &amp;#034;Potbelly&amp;#039;s&amp;#034;, &#xD;
       &amp;#034;Radio Maria&amp;#034;, &amp;#034;Rainbow Garden&amp;#034;, &amp;#034;Red Robin Gourmet Burgers&amp;#034;, &#xD;
       &amp;#034;Salad Meister&amp;#034;, &amp;#034;Scotty&amp;#039;s Brewhouse&amp;#034;, &amp;#034;Seven Saints&amp;#034;, &#xD;
       &amp;#034;Sun Singer Wine &amp;amp; Spirits&amp;#034;, &amp;#034;Thara Thai&amp;#034;, &amp;#034;That Burger Joint&amp;#034;, &#xD;
       &amp;#034;The Hub Champaign&amp;#034;, &amp;#034;Watson&amp;#039;s Shack &amp;amp; Rail&amp;#034;, &amp;#034;Wendy&amp;#039;s&amp;#034;, &amp;#034;Zorbas&amp;#034;};&#xD;
&#xD;
To adjust the code, we simply had to change the input accepted for the choices. You&amp;#039;ll notice everything in the code is the same, we just added a restaurants variable in the place of &amp;#034;String&amp;#034; after the arrows. This imports our list of restaurants into a drop-down vs. the free-form input that was used previously. I&amp;#039;ve deployed this to a separate Cloud Form, which you can view [here][11].&#xD;
&#xD;
    CloudDeploy[FormPage[{&#xD;
       {&amp;#034;name&amp;#034;, &amp;#034;Your Name:&amp;#034;} -&amp;gt; &amp;#034;String&amp;#034;,&#xD;
       {&amp;#034;firstchoice&amp;#034;, &amp;#034;1st Choice:&amp;#034;} -&amp;gt; restaurants,&#xD;
       {&amp;#034;secondchoice&amp;#034;, &amp;#034;2nd Choice:&amp;#034;} -&amp;gt; restaurants,&#xD;
       {&amp;#034;thirdchoice&amp;#034;, &amp;#034;3rd Choice:&amp;#034;} -&amp;gt; restaurants,&#xD;
       {&amp;#034;fourthchoice&amp;#034;, &amp;#034;4th Choice:&amp;#034;} -&amp;gt; restaurants},&#xD;
      (DatabinAdd[&#xD;
         db, {#name, #firstchoice, #secondchoice, #thirdchoice, #fourthchoice, CurrentDate[&amp;#034;Week&amp;#034;]}];&#xD;
        Rasterize[&#xD;
         Style[&amp;#034;Thanks for participating; your suggestions will be taken into consideration&amp;#034;, Medium, Black]]) &amp;amp;,&#xD;
      AppearanceRules -&amp;gt; &amp;lt;|&#xD;
        &amp;#034;Title&amp;#034; -&amp;gt; &amp;#034;Lunch Location Survey&amp;#034;,&#xD;
        &amp;#034;Description&amp;#034; -&amp;gt; &#xD;
         &amp;#034;Please fill out survey to request restaurants for lunch&amp;#034;&#xD;
        |&amp;gt;&#xD;
      ], &amp;#034;LunchDropDownForm&amp;#034;, Permissions -&amp;gt; &amp;#034;Public&amp;#034;]&#xD;
&#xD;
**RandomChoice from the Weighted List**&#xD;
&#xD;
The final step was simply to randomly select from our generated weighted list 1000 times and leave our lunch selection up to fate! It does slightly skew the final output to some of our most preferred restaurants per that initial weighting of the selections but does still use that randomization to vary the winner. Since we used the initial form, there&amp;#039;s obviously some manual addition that has to be done for the BWW/BDubs dilemma, but otherwise the BarChart provides us with an obvious choice for our weekly lunch!&#xD;
&#xD;
    randomFull = RandomChoice[adjustSelect, 1000];&#xD;
    fullCt = Counts[randomFull];&#xD;
    BarChart[fullCt, BarOrigin -&amp;gt; Left, &#xD;
     ChartLabels -&amp;gt; &#xD;
      Placed[{Values[fullCt], Keys[fullCt]}, {After, Before}]] &#xD;
&#xD;
![enter image description here][12]&#xD;
&#xD;
**Conclusion**&#xD;
&#xD;
Yes, this may seem like a simple and silly one-off project. However, it does showcase a quick and simple everyday use-case for the language. The initial code for this was created in 10 minutes by my coworker Paul, someone who before starting here did not have coding experience. With a few short lines of code, he was able to quickly create a web form that collected data as well as both of the randomizers for the data. I simply added in some of the error checking and bar charts for a friendly user interface.&#xD;
&#xD;
Knowing that the language is geared towards making everyday use-cases like this simple to program definitely gets your mind flowing on other applications that are also easily scaled to full-scale commercial solutions. We use a lot of the free capabilities of Data Drop and Wolfram Cloud, but those certainly could be replaced for full-scale customer surveys from your own site&amp;#039;s forms and databases.&#xD;
&#xD;
Programming in the Wolfram Language is not just for the experienced data analyst or developer. With such a simple interface and built-in functions to make the code more intuitive, it&amp;#039;s easy for everyone from a salesperson to a data analyst to a teacher to pick up and start using for their own analytics.&#xD;
&#xD;
&#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=dbCreate.JPG&amp;amp;userId=1161398&#xD;
  [2]: http://community.wolfram.com//c/portal/getImageAttachment?filename=fpNB.JPG&amp;amp;userId=1161398&#xD;
  [3]: https://www.wolframcloud.com/objects/samt/LunchSelectionForm&#xD;
  [4]: http://community.wolfram.com//c/portal/getImageAttachment?filename=dbGrouped.JPG&amp;amp;userId=1161398&#xD;
  [5]: http://community.wolfram.com//c/portal/getImageAttachment?filename=currentKey.JPG&amp;amp;userId=1161398&#xD;
  [6]: http://community.wolfram.com//c/portal/getImageAttachment?filename=random10.JPG&amp;amp;userId=1161398&#xD;
  [7]: http://community.wolfram.com//c/portal/getImageAttachment?filename=barChartList.JPG&amp;amp;userId=1161398&#xD;
  [8]: http://community.wolfram.com//c/portal/getImageAttachment?filename=nameGrouped.JPG&amp;amp;userId=1161398&#xD;
  [9]: http://community.wolfram.com//c/portal/getImageAttachment?filename=suResp.JPG&amp;amp;userId=1161398&#xD;
  [10]: http://community.wolfram.com//c/portal/getImageAttachment?filename=adjustedBC.JPG&amp;amp;userId=1161398&#xD;
  [11]: https://www.wolframcloud.com/objects/samt/LunchDropDownForm&#xD;
  [12]: http://community.wolfram.com//c/portal/getImageAttachment?filename=finalBC.JPG&amp;amp;userId=1161398</description>
    <dc:creator>Sam Tone</dc:creator>
    <dc:date>2018-04-16T16:02:07Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1191487">
    <title>Tracking atmospheric pressure with the Vernier Barometer sensor</title>
    <link>https://community.wolfram.com/groups/-/m/t/1191487</link>
    <description>With all the hurricanes raging in the Atlantic, I got curious about doing some home-grown science by tracking barometric pressure in my home state of Illinois. I decided to use [Vernier][1]&amp;#039;s [Barometer sensor][2], because it has built-in [Device Framework][3] support.&#xD;
&#xD;
![enter image description here][4]&#xD;
&#xD;
Tracking barometric pressure requires patience, because it takes several days before you have enough data that is interesting enough to look at: Taking measurements for just one minute won&amp;#039;t cut it (unless you want to stare at a plot with a very flat line in it). You also need a reliable system for collecting and storing data. Something that can survive a computer reboot or a temporary power outage.&#xD;
&#xD;
Here is the barometer in a more operational setting:&#xD;
&#xD;
![enter image description here][5]&#xD;
&#xD;
To build this reliable system, I used the [Windows task scheduler][6] (on Mac and Linux something like `cron` will serve the same purpose). The details of the scheduled task creation are a little too technical for this post, but the [code is located here][7]. After creating the scheduled task, it will run every 5 minutes (as long as the computer is powered on):&#xD;
&#xD;
    C:\Users\arnoudb&amp;gt; schtasks&#xD;
    [...]&#xD;
    Folder: \Wolfram&#xD;
    TaskName                                 Next Run Time          Status&#xD;
    ======================================== ====================== ===============&#xD;
    Vernier Barometer Experiment             9/25/2017 1:26:00 PM   Ready&#xD;
    [...]&#xD;
&#xD;
The key part of the scheduled task is the following bit of WL code. It simply connects me to the cloud (using my wolfram id and password), opens the sensor device, takes one pressure reading and stores it in the [DataDrop][8] cloud:&#xD;
&#xD;
    $CloudBase = &amp;#034;https://www.wolframcloud.com&amp;#034;;&#xD;
    CloudConnect[&amp;#034;arnoudb@wolfram.com&amp;#034;,password];&#xD;
    barometer = DeviceOpen[&amp;#034;Vernier&amp;#034;];&#xD;
    pressure = DeviceRead[barometer];&#xD;
    bin = Databin[&amp;#034;ovjo5DbK&amp;#034;];&#xD;
    DatabinAdd[bin, &amp;lt;| &amp;#034;pressure&amp;#034; -&amp;gt; pressure |&amp;gt; ];&#xD;
&#xD;
I store my password (encrypted) as a `LocalSymbol[&amp;#034;password&amp;#034;]` and then set `InitializationValue[$Initialization]` to decrypt it automatically for each new kernel session.&#xD;
&#xD;
This Databin is publicly [readable at this URL][9] so anyone can use the data from it:&#xD;
&#xD;
![enter image description here][10]&#xD;
&#xD;
At this point, it is time to let the computer do its thing for a week or so and let the data accumulate. Very little human interaction is required, except perhaps for making sure data is being added. Then, after a couple of weeks, it is time to take a look at the collected data and analyze it. First we fire up a notebook and get the databin:&#xD;
&#xD;
    bin = Databin[&amp;#034;ovjo5DbK&amp;#034;]&#xD;
&#xD;
The output is a Databin expression, with all the meta-data defined:&#xD;
&#xD;
![enter image description here][11]&#xD;
&#xD;
To get the actual data, you can request the TimeSeries of the data:&#xD;
&#xD;
    ts = TimeSeries[bin]&#xD;
&#xD;
![enter image description here][12]&#xD;
&#xD;
Unfortunately, 7 out of the 5149 measurements failed (0.136%), so a little data scrubbing is needed to remove those:&#xD;
&#xD;
    ts2 = TimeSeries[Cases[Normal[ts[&amp;#034;pressure&amp;#034;]], {_DateObject, Quantity[_, &amp;#034;Kilopascals&amp;#034;]}]]&#xD;
    &#xD;
Now the cleaner version of the TimeSeries can be plotted:&#xD;
&#xD;
    DateListPlot[ts2, Filling -&amp;gt; Axis, &#xD;
     FrameLabel -&amp;gt; {&amp;#034;Date&amp;#034;, &amp;#034;Pressure (kPa)&amp;#034;}, &#xD;
     PlotLabel -&amp;gt; &amp;#034;Pressure in Illinois&amp;#034;]&#xD;
&#xD;
![enter image description here][13]&#xD;
&#xD;
The biggest dip in the plot corresponds to the moment when the [post-tropical low pressure system of Irma][14] reached Illinois.&#xD;
&#xD;
If you want to take a closer look at this code, you can find the [notebook here on GitHub][15].&#xD;
&#xD;
&#xD;
  [1]: https://www.vernier.com/&#xD;
  [2]: https://www.vernier.com/products/sensors/bar-bta/&#xD;
  [3]: http://reference.wolfram.com/language/ref/device/Vernier.html&#xD;
  [4]: http://community.wolfram.com//c/portal/getImageAttachment?filename=product.bar-bta._hero.002.590.332.jpg&amp;amp;userId=22112&#xD;
  [5]: http://community.wolfram.com//c/portal/getImageAttachment?filename=barometer-07.PNG&amp;amp;userId=22112&#xD;
  [6]: https://msdn.microsoft.com/en-us/library/windows/desktop/bb736357.aspx&#xD;
  [7]: https://github.com/arnoudbuzing/vernier/tree/master/fun-examples/vernier-barometer&#xD;
  [8]: https://datadrop.wolframcloud.com/&#xD;
  [9]: https://datadrop.wolframcloud.com/databin/DD705812e9ab0-f7e6-49ca-8e9c-efb9fc6692b3&#xD;
  [10]: http://community.wolfram.com//c/portal/getImageAttachment?filename=barometer-01.PNG&amp;amp;userId=22112&#xD;
  [11]: http://community.wolfram.com//c/portal/getImageAttachment?filename=barometer-02.PNG&amp;amp;userId=22112&#xD;
  [12]: http://community.wolfram.com//c/portal/getImageAttachment?filename=barometer-03.PNG&amp;amp;userId=22112&#xD;
  [13]: http://community.wolfram.com//c/portal/getImageAttachment?filename=barometer-06.PNG&amp;amp;userId=22112&#xD;
  [14]: https://en.wikipedia.org/wiki/Hurricane_Irma&#xD;
  [15]: https://github.com/arnoudbuzing/vernier/tree/master/fun-examples</description>
    <dc:creator>Arnoud Buzing</dc:creator>
    <dc:date>2017-09-25T19:08:40Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/905224">
    <title>Wolfram Language Data Curator Through Twilio - Hackathon Project</title>
    <link>https://community.wolfram.com/groups/-/m/t/905224</link>
    <description>*Feel free to check out this project on Devpost! - [WakeyWakey on Devpost][1]*&#xD;
&#xD;
&#xD;
----------&#xD;
&#xD;
&#xD;
Hi, guys! &#xD;
&#xD;
I attended Github&amp;#039;s Open Source Hack hackathon this weekend and I built a service to accept information about what you want to know in a WebApp, and then curates custom text messages to be sent to your mobile phone through Twilio with that data you&amp;#039;d requested. It currently will return the latest tweet from someone you specify, the latest image and caption from your favorite subreddit, your current portfolio value given the ticker of the stock you own along with number of shares, and also the weather forecast for the day (of course).&#xD;
&#xD;
I built this service entirely using Wolfram Language within Mathematica. The WakeyWakey service runs on a server I currently host that executes a function to send SMS messages with a user&amp;#039;s curated data at set times throughout the day. It currently runs once per day in the morning at 8am to alert users of what&amp;#039;s going on in their personal worlds that day.&#xD;
&#xD;
To collect data of what a user wants to receive information about, I utilized Wolfram&amp;#039;s Data Drop feature to create a Databin.&#xD;
&#xD;
    userData=CreateDatabin[]&#xD;
&#xD;
To be the interface between the user and the Databin, I then created a webform using a CloudDeploy function wrapped around a FormFunction command. This allowed me to present a usable interaction window to a user so that they can in essence &amp;#034;sign up&amp;#034; for SMS alerts with curated data they request. This is shown below with functions to format this webform.&#xD;
&#xD;
    CloudDeploy[&#xD;
     FormFunction[{{&amp;#034;phoneNumber&amp;#034;, &amp;#034;Phone Number&amp;#034;} -&amp;gt; &amp;lt;|&#xD;
         &amp;#034;Interpreter&amp;#034; -&amp;gt; &amp;#034;String&amp;#034;, &amp;#034;Hint&amp;#034; -&amp;gt; &amp;#034;ex: 5556667788&amp;#034;, &#xD;
         &amp;#034;Help&amp;#034; -&amp;gt; &#xD;
          &amp;#034;This phone number will be used to send SMS updates each \&#xD;
    morning about your personally tailored information.&amp;#034;|&amp;gt;, \&#xD;
    {&amp;#034;weatherLocation&amp;#034;, &amp;#034;Location&amp;#034;} -&amp;gt; &amp;lt;|&amp;#034;Interpreter&amp;#034; -&amp;gt; &amp;#034;Location&amp;#034;, &#xD;
         &amp;#034;Hint&amp;#034; -&amp;gt; &amp;#034;San Francisco&amp;#034;, &#xD;
         &amp;#034;Help&amp;#034; -&amp;gt; &#xD;
          &amp;#034;Type the location you&amp;#039;d like to receive weather updates for.&amp;#034;|&amp;gt; \&#xD;
    , {&amp;#034;twitterUserHandle&amp;#034;, &amp;#034;@&amp;#034;} -&amp;gt; &amp;lt;|&amp;#034;Interpreter&amp;#034; -&amp;gt; &amp;#034;String&amp;#034;, &#xD;
         &amp;#034;Hint&amp;#034; -&amp;gt; &amp;#034;elonmusk&amp;#034;, &#xD;
         &amp;#034;Help&amp;#034; -&amp;gt; &#xD;
          &amp;#034;Type the username of a Twitter user you&amp;#039;d like to receive \&#xD;
    morning updates about.&amp;#034;|&amp;gt;, {&amp;#034;stocks&amp;#034;, &amp;#034;Stock Tracking&amp;#034;} -&amp;gt; &amp;lt;|&#xD;
         &amp;#034;Interpreter&amp;#034; -&amp;gt; &amp;#034;String&amp;#034;, &amp;#034;Hint&amp;#034; -&amp;gt; &amp;#034;AAPL&amp;#034;, &#xD;
         &amp;#034;Help&amp;#034; -&amp;gt; &#xD;
          &amp;#034;Type in the stock ticker symbol of a stock you&amp;#039;d like to \&#xD;
    track.&amp;#034;|&amp;gt;, {&amp;#034;shareAmount&amp;#034;, &amp;#034;Amount of Shares&amp;#034;} -&amp;gt; &amp;lt;|&#xD;
         &amp;#034;Interpreter&amp;#034; -&amp;gt; &amp;#034;Number&amp;#034;, &amp;#034;Hint&amp;#034; -&amp;gt; &amp;#034;32&amp;#034;, &#xD;
         &amp;#034;Help&amp;#034; -&amp;gt; &#xD;
          &amp;#034;Type in the number of shares you own of the previous stock \&#xD;
    you&amp;#039;d like to track.&amp;#034;|&amp;gt;,&#xD;
       {&amp;#034;subreddit&amp;#034;, &amp;#034;r/&amp;#034;} -&amp;gt; &amp;lt;|&amp;#034;Interpreter&amp;#034; -&amp;gt; &amp;#034;String&amp;#034;, &#xD;
         &amp;#034;Hint&amp;#034; -&amp;gt; &amp;#034;pics&amp;#034;, &#xD;
         &amp;#034;Help&amp;#034; -&amp;gt; &#xD;
          &amp;#034;Type in the name of the image based subreddit you&amp;#039;d like \&#xD;
    receive daily images from. (No gifs please! :D)&amp;#034;|&amp;gt;}, &#xD;
      DatabinAdd[&#xD;
        userData, &amp;lt;|&#xD;
         ToString[&#xD;
           Length[Values[userData]] + &#xD;
            1] -&amp;gt; {#phoneNumber, #weatherLocation, #twitterUserHandle, \&#xD;
    #stocks, #shareAmount, #subreddit}|&amp;gt;] &amp;amp;, &#xD;
      AppearanceRules -&amp;gt; {&amp;#034;Title&amp;#034; -&amp;gt;*insert image file of WakeyWakey logo here*, &amp;#034;ItemLayout&amp;#034; -&amp;gt; &amp;#034;Horizontal&amp;#034;}, &#xD;
      FormTheme -&amp;gt; &amp;#034;Blue&amp;#034;]&#xD;
     , Permissions -&amp;gt; &amp;#034;Public&amp;#034;]&#xD;
&#xD;
This data is then stored in the Databin, userData for later access by the WakeyWakey backend. The format of an example entry in the Databin for a user is given below:&#xD;
&#xD;
    &amp;lt;|&amp;#034;1&amp;#034; -&amp;gt; {{&amp;#034;5551231234&amp;#034;, GeoPosition[{37.2969, -121.819}], &amp;#034;vgr&amp;#034;, &#xD;
        &amp;#034;VTSAX&amp;#034;, 1, &amp;#034;pics&amp;#034;}}|&amp;gt;&#xD;
&#xD;
Where the identifier for the entry is a single integer, and the entry is an array containing: phone number, location for requested weather data, handle of a twitter user the user would like to receive tweets from, stock ticker, number of shares of that stock, and the subreddit a user would like to receive pictures from respectively.&#xD;
&#xD;
To curate data, I used API connectivity through the ServiceConnect functions to connect Twitter, Reddit, and Twilio. This allowed me to search for specific information regarding each website, such as tweets from a certain user, or the newest picture posted to a certain subreddit. Connecting Twilio allowed me to send SMS messages through my Twilio account containing the curated data I created.&#xD;
&#xD;
    reddit = ServiceConnect[&amp;#034;Reddit&amp;#034;];&#xD;
    twitter = ServiceConnect[&amp;#034;Twitter&amp;#034;];&#xD;
    twilio = ServiceConnect[&amp;#034;Twilio&amp;#034;];&#xD;
&#xD;
So that I could search for information for each registered user and not confuse or combine any data that a user did not request, I utilized a Do loop wrapped around all functions so that I could separate which data is processed when. The variable, currentRecipientInfo, allowed me to pass in one entry about a certain user, and then extract all relevant info about that user to run through my data curation function. This is shown below:&#xD;
&#xD;
    Do[&#xD;
      currentRecipientInfo = &#xD;
       Values[Databin[userData, All, ToString[i]]][[1, 1]];&#xD;
      recipientNumber = currentRecipientInfo[[1]];&#xD;
      &#xD;
      maxTemp = &#xD;
       ToString[&#xD;
        WeatherForecastData[currentRecipientInfo[[2]], &#xD;
          DateObject[Tomorrow]][&amp;#034;MaxTemperature&amp;#034;]];&#xD;
      minTemp = &#xD;
       ToString[&#xD;
        WeatherForecastData[currentRecipientInfo[[2]], &#xD;
          DateObject[Tomorrow]][&amp;#034;MinTemperature&amp;#034;]];&#xD;
      tweet = &#xD;
       twitter[&amp;#034;TweetList&amp;#034;, &amp;#034;Username&amp;#034; -&amp;gt; currentRecipientInfo[[3]]][[1, &#xD;
        2]];&#xD;
      stockValue = &#xD;
       ToString[&#xD;
        FinancialData[currentRecipientInfo[[4]]]*&#xD;
         currentRecipientInfo[[5]]]; &#xD;
      posts = reddit[&amp;#034;SubredditPosts&amp;#034;, &#xD;
        &amp;#034;Subreddit&amp;#034; -&amp;gt; currentRecipientInfo[[6]]];&#xD;
      topPic = posts[&amp;#034;Posts&amp;#034;][4][6];&#xD;
      topPicCaption = posts[&amp;#034;Posts&amp;#034;][4][4];&#xD;
      &#xD;
      twilio[&amp;#034;Send&amp;#034;, {&amp;#034;To&amp;#034; -&amp;gt; recipientNumber, &amp;#034;From&amp;#034; -&amp;gt; &amp;#034;EXAMPLE PHONE NUMBER&amp;#034;, &#xD;
        &amp;#034;Body&amp;#034; -&amp;gt; &#xD;
         &amp;#034;Good morning! I hope you have a wonderful day. Here&amp;#039;s your \&#xD;
    update:&amp;#034;}];&#xD;
      &#xD;
      twilio[&amp;#034;Send&amp;#034;, {&amp;#034;To&amp;#034; -&amp;gt; recipientNumber, &amp;#034;From&amp;#034; -&amp;gt; &amp;#034;EXAMPLE PHONE NUMBER&amp;#034;, &#xD;
        &amp;#034;Body&amp;#034; -&amp;gt; &#xD;
         &amp;#034;The latest pic from r/&amp;#034; &amp;lt;&amp;gt; currentRecipientInfo[[6]] &amp;lt;&amp;gt; &#xD;
          &amp;#034; reads: &amp;#034; &amp;lt;&amp;gt; topPicCaption, &amp;#034;MediaURL&amp;#034; -&amp;gt; topPic}];&#xD;
      &#xD;
      twilio[&amp;#034;Send&amp;#034;, {&amp;#034;To&amp;#034; -&amp;gt; recipientNumber, &amp;#034;From&amp;#034; -&amp;gt; &amp;#034;EXAMPLE PHONE NUMBER&amp;#034;, &#xD;
        &amp;#034;Body&amp;#034; -&amp;gt; &#xD;
         &amp;#034;The high today is going to be &amp;#034; &amp;lt;&amp;gt; maxTemp &amp;lt;&amp;gt; &#xD;
          &amp;#034; while the low is going to be &amp;#034; &amp;lt;&amp;gt; minTemp &amp;lt;&amp;gt; &amp;#034;.&amp;#034;}];&#xD;
      &#xD;
      twilio[&amp;#034;Send&amp;#034;, {&amp;#034;To&amp;#034; -&amp;gt; recipientNumber, &amp;#034;From&amp;#034; -&amp;gt; &amp;#034;EXAMPLE PHONE NUMBER&amp;#034;, &#xD;
        &amp;#034;Body&amp;#034; -&amp;gt; &#xD;
         &amp;#034;Your current portfolio value today is $&amp;#034; &amp;lt;&amp;gt; stockValue &amp;lt;&amp;gt; &#xD;
          &amp;#034;.&amp;#034;}];&#xD;
      &#xD;
      twilio[&amp;#034;Send&amp;#034;, {&amp;#034;To&amp;#034; -&amp;gt; recipientNumber, &amp;#034;From&amp;#034; -&amp;gt; &amp;#034;EXAMPLE PHONE NUMBER&amp;#034;, &#xD;
        &amp;#034;Body&amp;#034; -&amp;gt; &#xD;
         &amp;#034;The latest tweet from @&amp;#034; &amp;lt;&amp;gt; currentRecipientInfo[[3]] &amp;lt;&amp;gt; &#xD;
          &amp;#034; reads: &amp;#034; &amp;lt;&amp;gt; tweet}];&#xD;
      &#xD;
      , {i, Length[Values[userData]]}]&#xD;
     ]&#xD;
&#xD;
Expanding upon this, I also included an option for a user to receive information about their stock portfolio, and current weather conditions for a location they initially requested. The stock portfolio information was a bit difficult to asses due to the fact that the main stock app I use, Robinhood, does not have a public API to utilize, so I requested which stock the user owned in the original webform and requested how many shares of that stock a user owned (currently limited to tracking one stock), and then ran simple math on the server to return a value of a user&amp;#039;s current portfolio given the current value for that certain stock on a certain day. &#xD;
&#xD;
    stockValue = &#xD;
     ToString[FinancialData[currentRecipientInfo[[4]]]*&#xD;
       currentRecipientInfo[[5]]]; posts = &#xD;
     reddit[&amp;#034;SubredditPosts&amp;#034;, &amp;#034;Subreddit&amp;#034; -&amp;gt; currentRecipientInfo[[6]]];&#xD;
&#xD;
This service could be run on a home server to send out data to users daily, or at a set time interval using the RunScheduledTask function very easily. It could also be set up to run on a Raspberry Pi with Wolfram Language and be left on continuously. &#xD;
&#xD;
I&amp;#039;m proud of the fact that I built a service that not only I can use, but others who wish to have curated news and data in their mornings can take advantage of. I originally built the service as a proof of concept within my own personal sphere of information, but I believe that data should be shared and information be made widely available. So I opened it for everyone :)&#xD;
&#xD;
Feel free to check it out on Devpost! - [WakeyWakey on Devpost][1]&#xD;
&#xD;
&#xD;
  [1]: http://devpost.com/software/wakeywakey-l9z8io</description>
    <dc:creator>Aaron Brzowski</dc:creator>
    <dc:date>2016-08-14T21:15:13Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/534904">
    <title>Data Drop: How do I import arbitrary JSON?</title>
    <link>https://community.wolfram.com/groups/-/m/t/534904</link>
    <description>I&amp;#039;d love some advice or a guide to follow for importing JSON into the Data Drop platform. The docs are leading me to creating a Custom API (specifically, APIFunction and CloudDeploy); however, if there was an example to follow, that would be stellar.</description>
    <dc:creator>Neil Mansilla</dc:creator>
    <dc:date>2015-07-22T20:26:22Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1135312">
    <title>[WSS17] Measurement and Visualization of Energy production  &amp;#034;Solar Heaters&amp;#034;</title>
    <link>https://community.wolfram.com/groups/-/m/t/1135312</link>
    <description>In this project we measure the energy produced by a solar Heater; we use a microcontroller, three temperature sensors and a flow sensor.&#xD;
The microcontroller made the calculations for the energy integration and the calculation of volume of water consumed. We send this data to datadrop, for its manipulation and visualization.&#xD;
&#xD;
    datos2 = Dataset[Databin[&amp;#034;mCC3DAXt&amp;#034;]];&#xD;
    data = datos2[&#xD;
        All, {&amp;#034;tempTank&amp;#034; -&amp;gt; N[Quantity[#tempTank/10, &amp;#034;DegreesCelsius&amp;#034;]] &amp;amp;,&#xD;
          &amp;#034;tempIn&amp;#034; -&amp;gt; N[Quantity[#tempIn/10, &amp;#034;DegreesCelsius&amp;#034;]] &amp;amp;, &#xD;
         &amp;#034;tempOut&amp;#034; -&amp;gt; N[Quantity[#tempOut/10, &amp;#034;DegreesCelsius&amp;#034;]] &amp;amp;, &#xD;
         &amp;#034;ms&amp;#034; -&amp;gt; Identity[#ms] &amp;amp;, &#xD;
         &amp;#034;Volume&amp;#034; -&amp;gt; N[Quantity[#Volume/100, &amp;#034;liters&amp;#034;]] &amp;amp;, &#xD;
         &amp;#034;Energy&amp;#034; -&amp;gt; N[Quantity[#Energy/100, &amp;#034;Kilojoules&amp;#034;]] &amp;amp;, &#xD;
         &amp;#034;id&amp;#034; -&amp;gt; Identity[#id] &amp;amp;, &amp;#034;Timestamp&amp;#034; -&amp;gt; Identity[#Timestamp] &amp;amp;}][&#xD;
       All, Association];&#xD;
    dataSort = data[Reverse, Reverse]&#xD;
&#xD;
We totalize variables such as energy and volume of water consumed during the life of the Arduino. So we initialize all the variables we need to show on the sketch.&#xD;
&#xD;
&#xD;
    fVol[n_] := n/100&#xD;
    ftemp[n_] := n/10&#xD;
    fCel[n_] := N[Quantity[n, &amp;#034;DegreesCelsius&amp;#034;]]&#xD;
    fVol1[n_] := N[Quantity[n, &amp;#034;Liters&amp;#034;]]&#xD;
    fEngy[n_] := N[Quantity[n, &amp;#034;Kilojoules&amp;#034;]]&#xD;
    datos3 = datos2[All,&#xD;
      {&#xD;
       &amp;#034;tempTank&amp;#034; -&amp;gt; ftemp,&#xD;
       &amp;#034;tempIn&amp;#034; -&amp;gt; ftemp,&#xD;
       &amp;#034;tempOut&amp;#034; -&amp;gt; ftemp,&#xD;
       &amp;#034;Volume&amp;#034; -&amp;gt; fVol,&#xD;
       &amp;#034;Energy&amp;#034; -&amp;gt; fVol&#xD;
       }&#xD;
      ]&#xD;
    datos4 = datos3[All, {&#xD;
       &amp;#034;tempTank&amp;#034; -&amp;gt; fCel,&#xD;
       &amp;#034;tempIn&amp;#034; -&amp;gt; fCel,&#xD;
       &amp;#034;tempOut&amp;#034; -&amp;gt; fCel,&#xD;
       &amp;#034;Volume&amp;#034; -&amp;gt; fVol1,&#xD;
       &amp;#034;Energy&amp;#034; -&amp;gt; fEngy&#xD;
       }&#xD;
      ]&#xD;
    es = TimeSeries[Databin[&amp;#034;mCC3DAXt&amp;#034;]];&#xD;
    time = DateObject /@ Flatten[es[[1]][[2, 2]]];&#xD;
    en1 = fVol /@ Flatten[es[[1]][[2, 1]]];&#xD;
    en2 = fEngy /@ en1;&#xD;
    tsEngy = TimeSeries[en2, {time}];&#xD;
    vol1 = fVol /@ Flatten[es[[7]][[2, 1]]];&#xD;
    vol2 = fVol1 /@ vol1;&#xD;
    tsVol = TimeSeries[vol2, {time}];&#xD;
    temptank = ftemp /@ Flatten[es[[6]][[2, 1]]];&#xD;
    temptank1 = fCel /@ temptank;&#xD;
    tstempTank = TimeSeries[temptank1, {time}];&#xD;
    tempIn = ftemp /@ Flatten[es[[4]][[2, 1]]];&#xD;
    tempIn1 = fCel /@ tempIn;&#xD;
    tstempIn = TimeSeries[tempIn1, {time}];&#xD;
    tempOut = ftemp /@ Flatten[es[[5]][[2, 1]]];&#xD;
    tempOut1 = fCel /@ tempOut;&#xD;
    tstempOut = TimeSeries[tempOut1, {time}];&#xD;
    totalVolume1 = Total[vol2];&#xD;
    totalEnergy1 = Total[en2];&#xD;
&#xD;
Including the starting time of data and the end time.&#xD;
&#xD;
    lastday = DateList[ Last[Flatten[tstempTank[[2, 2]]]]][[3]]&#xD;
    firstday = DateList[ First[Flatten[tstempTank[[2, 2]]]]][[3]];&#xD;
    firstmonth = DateList[ First[Flatten[tstempTank[[2, 2]]]]][[2]];&#xD;
    lastmonth = DateList[ Last[Flatten[tstempTank[[2, 2]]]]][[2]];&#xD;
    dates = tstempTank[&amp;#034;Dates&amp;#034;];&#xD;
&#xD;
So at the end we can visualize the data on a dice Interface.&#xD;
&#xD;
    Manipulate[&#xD;
     DynamicModule[{firstPage, stadistics},&#xD;
      firstPage = Show[GraphicsGrid[{&#xD;
          {AngularGauge[totalVolume1, {0, 3000}, &#xD;
            ScaleOrigin -&amp;gt; {6 Pi/5, -Pi/5}, PlotTheme -&amp;gt; &amp;#034;Business&amp;#034;, &#xD;
            GaugeLabels -&amp;gt; &amp;#034;Value&amp;#034;, PlotLabel -&amp;gt; &amp;#034;Volume L&amp;#034;, &#xD;
            ImageSize -&amp;gt; 300],&#xD;
             Animate[&#xD;
            Graphics3D[{Red, &#xD;
              Rotate[First@PolyhedronData[&amp;#034;Spikey&amp;#034;], &#xD;
               p*2 \[Pi], {1, 1, 1}]},&#xD;
             Boxed -&amp;gt; False, AspectRatio -&amp;gt; 1, ImageSize -&amp;gt; Medium],&#xD;
            {p, 0, Infinity}, Paneled -&amp;gt; False,&#xD;
            AnimationRunning -&amp;gt; False&#xD;
            ]&#xD;
           ,&#xD;
           Row@{ThermometerGauge[Last[tempIn1], {0, 120}, &#xD;
              PlotLabel -&amp;gt; &amp;#034;Temperature In&amp;#034;, TargetUnits -&amp;gt; &amp;#034;Celsius&amp;#034;, &#xD;
              GaugeLabels -&amp;gt; Full, PlotTheme -&amp;gt; &amp;#034;Marketing&amp;#034;, &#xD;
              ImageSize -&amp;gt; {100, 300}],&#xD;
             ThermometerGauge[Last[tempOut1], {0, 120}, &#xD;
              PlotLabel -&amp;gt; &amp;#034;Temperature Out&amp;#034;, TargetUnits -&amp;gt; &amp;#034;Celsius&amp;#034;, &#xD;
              GaugeLabels -&amp;gt; Full, PlotTheme -&amp;gt; &amp;#034;Marketing&amp;#034;, &#xD;
              ImageSize -&amp;gt; {100, 300}]}},&#xD;
          {AngularGauge[totalEnergy1, {0, 5000}, &#xD;
            ScaleOrigin -&amp;gt; {6 Pi/5, -Pi/5}, PlotTheme -&amp;gt; &amp;#034;Business&amp;#034;, &#xD;
            GaugeLabels -&amp;gt; &amp;#034;Value&amp;#034;, PlotLabel -&amp;gt; &amp;#034;Energy kJ&amp;#034;, &#xD;
            ImageSize -&amp;gt; 300],&#xD;
           SpanFromAbove,&#xD;
           ThermometerGauge[Last[temptank1], {0, 120}, &#xD;
            PlotLabel -&amp;gt; &amp;#034;Tank Temperature&amp;#034;, TargetUnits -&amp;gt; &amp;#034;Celsius&amp;#034;, &#xD;
            GaugeLabels -&amp;gt; Full, PlotTheme -&amp;gt; &amp;#034;Marketing&amp;#034;, &#xD;
            ImageSize -&amp;gt; {200, 300}]}}&#xD;
         ,&#xD;
         Frame -&amp;gt; False,&#xD;
         Alignment -&amp;gt; Center,&#xD;
         Background -&amp;gt; Transparent,&#xD;
         BaseStyle -&amp;gt; {FontColor -&amp;gt; GrayLevel[0.6], FontFamily -&amp;gt; &amp;#034;Times&amp;#034;,&#xD;
            30}&#xD;
         ]];&#xD;
      &#xD;
      stadistics = &#xD;
       Show[GraphicsGrid[{{relojes, SpanFromLeft, SpanFromLeft},&#xD;
          {With[{dataAssoc = GroupBy[dates, #[&amp;#034;Month&amp;#034;] &amp;amp;]}, &#xD;
            Manipulate[Manipulate[&#xD;
                 DateListPlot[&#xD;
               TimeSeriesWindow[tsEngy, &#xD;
                DateObject[{2017, month, day}, &amp;#034;Day&amp;#034;]],&#xD;
               PlotTheme -&amp;gt; &amp;#034;Web&amp;#034;,&#xD;
               Joined -&amp;gt; False,&#xD;
               Filling -&amp;gt; Axis,&#xD;
               ImageSize -&amp;gt; 200,&#xD;
               PlotRange -&amp;gt; All,&#xD;
               PlotLabel -&amp;gt; DateObject[{2017, month, day}, &amp;#034;Day&amp;#034;]&#xD;
               &#xD;
               ], &#xD;
              Style[&amp;#034;Energy Produced&amp;#034;, 25, Bold, FontFamily -&amp;gt; &amp;#034;Times&amp;#034;, &#xD;
               TextAlignment -&amp;gt; Center],&#xD;
              {day, &#xD;
               Sequence @@ (MinMax[#[&amp;#034;Day&amp;#034;] &amp;amp; /@ (dataAssoc[month])]), 1},&#xD;
               Paneled -&amp;gt; False],&#xD;
             {{month, lastmonth}, &#xD;
              Sequence @@ &#xD;
               MinMax[Keys[MinMax[#[&amp;#034;Day&amp;#034;] &amp;amp; /@ #] &amp;amp; /@ dataAssoc]], 1}&#xD;
             &#xD;
             , SynchronousUpdating -&amp;gt; True, Paneled -&amp;gt; False]],&#xD;
           &#xD;
           With[{dataAssoc = GroupBy[dates, #[&amp;#034;Month&amp;#034;] &amp;amp;]}, &#xD;
            Manipulate[Manipulate[&#xD;
              &#xD;
              DateListPlot[&#xD;
               TimeSeriesWindow[tstempTank, &#xD;
                DateObject[{2017, month, day}, &amp;#034;Day&amp;#034;]],&#xD;
               PlotTheme -&amp;gt; &amp;#034;Web&amp;#034;,&#xD;
               Joined -&amp;gt; False,&#xD;
               Filling -&amp;gt; Axis,&#xD;
               ImageSize -&amp;gt; 200,&#xD;
               PlotRange -&amp;gt; All,&#xD;
               PlotLabel -&amp;gt; DateObject[{2017, month, day}, &amp;#034;Day&amp;#034;]&#xD;
               &#xD;
               ], &#xD;
              &#xD;
              Style[&amp;#034;Tank Temperature&amp;#034;, 25, Bold, FontFamily -&amp;gt; &amp;#034;Times&amp;#034;, &#xD;
               TextAlignment -&amp;gt; Center],&#xD;
              {day, &#xD;
               Sequence @@ (MinMax[#[&amp;#034;Day&amp;#034;] &amp;amp; /@ (dataAssoc[month])]), 1},&#xD;
               Paneled -&amp;gt; False],&#xD;
             {{month, lastmonth}, &#xD;
              Sequence @@ &#xD;
               MinMax[Keys[MinMax[#[&amp;#034;Day&amp;#034;] &amp;amp; /@ #] &amp;amp; /@ dataAssoc]], 1},&#xD;
             &#xD;
             SynchronousUpdating -&amp;gt; True, Paneled -&amp;gt; False]],&#xD;
           &#xD;
           With[{dataAssoc = GroupBy[dates, #[&amp;#034;Month&amp;#034;] &amp;amp;]}, &#xD;
            Manipulate[Manipulate[&#xD;
              &#xD;
              DateListPlot[&#xD;
               TimeSeriesWindow[tsVol, &#xD;
                DateObject[{2017, month, day}, &amp;#034;Day&amp;#034;]],&#xD;
               PlotTheme -&amp;gt; &amp;#034;Web&amp;#034;,&#xD;
               Joined -&amp;gt; False,&#xD;
               Filling -&amp;gt; Axis,&#xD;
               ImageSize -&amp;gt; 200,&#xD;
               PlotRange -&amp;gt; All,&#xD;
               PlotLabel -&amp;gt; DateObject[{2017, month, day}, &amp;#034;Day&amp;#034;]&#xD;
               &#xD;
               ], &#xD;
              Style[&amp;#034;Hot Water Consumed &amp;#034;, 25, Bold, &#xD;
               FontFamily -&amp;gt; &amp;#034;Times&amp;#034;, TextAlignment -&amp;gt; Center],&#xD;
              {day, &#xD;
               Sequence @@ (MinMax[#[&amp;#034;Day&amp;#034;] &amp;amp; /@ (dataAssoc[month])]), 1},&#xD;
               Paneled -&amp;gt; False],&#xD;
             {{month, lastmonth}, &#xD;
              Sequence @@ &#xD;
               MinMax[Keys[MinMax[#[&amp;#034;Day&amp;#034;] &amp;amp; /@ #] &amp;amp; /@ dataAssoc]], 1},&#xD;
             &#xD;
             SynchronousUpdating -&amp;gt; True, Paneled -&amp;gt; False]]}},&#xD;
         ItemAspectRatio -&amp;gt; 1 ,&#xD;
         ImageSize -&amp;gt; 1000,&#xD;
         Frame -&amp;gt; False,&#xD;
         Alignment -&amp;gt; Center,&#xD;
         Background -&amp;gt; Transparent,&#xD;
         BaseStyle -&amp;gt; {FontColor -&amp;gt; Black, FontFamily -&amp;gt; &amp;#034;Times&amp;#034;, 30}]&#xD;
        &#xD;
        ];&#xD;
      Show[Switch[vizualization, 1, firstPage, 2, stadistics], &#xD;
       ImageSize -&amp;gt; {1000, 700}]&#xD;
      ],&#xD;
     Control[{{vizualization, 1, &amp;#034;&amp;#034;}, {1 -&amp;gt; &amp;#034;Parameters&amp;#034;, &#xD;
        2 -&amp;gt; &amp;#034;Statistics&amp;#034;}, Setter}],&#xD;
     PaneSelector[{&#xD;
       1 -&amp;gt; Column@{Spacer@2, &#xD;
          Style[&amp;#034;Measurement and Visualization of Energy production  \&#xD;
    \&amp;#034;Solar Heaters\&amp;#034;&amp;#034;, 40, Bold, FontFamily -&amp;gt; Times, &#xD;
           TextAlignment -&amp;gt; Center]},&#xD;
       2 -&amp;gt; Column@{Spacer@2, &#xD;
          Style[&amp;#034;Statistics&amp;#034;, 40, Bold, FontFamily -&amp;gt; Times, &#xD;
           TextAlignment -&amp;gt; Center]}},&#xD;
      Dynamic@vizualization],&#xD;
     SaveDefinitions -&amp;gt; True,&#xD;
     Paneled -&amp;gt; False]&#xD;
&#xD;
![Visualization][1]&#xD;
&#xD;
&#xD;
![enter image description here][2]&#xD;
&#xD;
&#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Capturadepantalla2017-07-04ala%28s%2921.28.03.png&amp;amp;userId=1017357&#xD;
  [2]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Capturadepantalla2017-07-04ala%28s%2921.28.33.png&amp;amp;userId=1017357</description>
    <dc:creator>Ruben Garcia</dc:creator>
    <dc:date>2017-07-05T01:33:20Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/990202">
    <title>Raspberry Pi license type wrt Data Drop?</title>
    <link>https://community.wolfram.com/groups/-/m/t/990202</link>
    <description>I ordered my first Raspberry Pi computer and while googling what to do with it I found out it basically [includes a Mathematica license][1]. Now, it&amp;#039;d be awesome if I could use the RasPi to take measurements or whatever and to upload the data into Wolfram Data Drop. However, my issue with Data Drop is that the free version deletes your data bins after 30 days, and the next level is apparently [20 /month][2]! **So my question is: does the RasPi version of Mathematica include any permanent Data Drop bins**? &#xD;
&#xD;
Because let&amp;#039;s face it, why would I spend time on learning and using Data Drop if it just keeps deleting my data regularly? 20 /month is also a relatively huge sum of money when you consider that a Raspberry Pi computer alone doesn&amp;#039;t cost much more than that, and that with 20 /month you could also get, say, both Spotify and Netflix. If there was a way to pay, say, 1 /data bin/month to make your bin permanent, I&amp;#039;d jump on it right away. But 20 /month is just way too much when you only want to monitor your refrigerator temperature, download speed, or whatever. It&amp;#039;s almost as if Wolfram doesn&amp;#039;t want people to use Data Drop.&#xD;
&#xD;
  [1]: https://www.wolfram.com/raspberry-pi/&#xD;
  [2]: https://billing.wolfram.com/pricing/wpc</description>
    <dc:creator>Ville Saalo</dc:creator>
    <dc:date>2017-01-04T22:52:33Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2016353">
    <title>Data Drop Beta Status</title>
    <link>https://community.wolfram.com/groups/-/m/t/2016353</link>
    <description>Is Data Drop a serious product that Wolfram intends on offering as a product? It has been in beta for several years and there is not very much information available aside from how to use it.&#xD;
&#xD;
Is this product interned to be used only for hobbyists or is there a point when it will be out of Beta?</description>
    <dc:creator>John Stewart</dc:creator>
    <dc:date>2020-06-30T00:17:00Z</dc:date>
  </item>
</rdf:RDF>

