<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Qoom Blog]]></title><description><![CDATA[Stories about Qoom, Coding Creators and more]]></description><link>https://blog.qoom.io/</link><image><url>https://blog.qoom.io/favicon.png</url><title>Qoom Blog</title><link>https://blog.qoom.io/</link></image><generator>Ghost 5.9</generator><lastBuildDate>Wed, 28 Jan 2026 19:41:12 GMT</lastBuildDate><atom:link href="https://blog.qoom.io/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Coming soon]]></title><description><![CDATA[<p>This is Qoom Blog, a brand new site by Qoom that&apos;s just getting started. Things will be up and running here shortly, but you can <a href="#/portal/">subscribe</a> in the meantime if you&apos;d like to stay up to date and receive emails when new content is published!</p>]]></description><link>https://blog.qoom.io/coming-soon/</link><guid isPermaLink="false">62f863ac4d267b147700a3a1</guid><category><![CDATA[News]]></category><dc:creator><![CDATA[Qoom]]></dc:creator><pubDate>Sun, 14 Aug 2022 02:53:32 GMT</pubDate><media:content url="https://static.ghost.org/v4.0.0/images/feature-image.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://static.ghost.org/v4.0.0/images/feature-image.jpg" alt="Coming soon"><p>This is Qoom Blog, a brand new site by Qoom that&apos;s just getting started. Things will be up and running here shortly, but you can <a href="#/portal/">subscribe</a> in the meantime if you&apos;d like to stay up to date and receive emails when new content is published!</p>]]></content:encoded></item><item><title><![CDATA[Creating Total Slice: My Personal Takeaways]]></title><description><![CDATA[Presenting my personal reflections on creating Total Slice, a personal finance tool that uses visualizations to help people gain a better grasp of their finances. ]]></description><link>https://blog.qoom.io/creating-total-slice/</link><guid isPermaLink="false">62f866614d267b147700a5a9</guid><category><![CDATA[Qoom Creator]]></category><dc:creator><![CDATA[Crislana Rafael]]></dc:creator><pubDate>Wed, 01 Sep 2021 21:17:00 GMT</pubDate><media:content url="https://blog.qoom.io/content/images/2021/08/Presentation2.PNG" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-embed-card kg-card-hascaption"><iframe width="200" height="113" src="https://www.youtube.com/embed/7WU1yJ5vIPo?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe><figcaption>My demo video for Total Slice</figcaption></figure><!--kg-card-begin: markdown--><img src="https://blog.qoom.io/content/images/2021/08/Presentation2.PNG" alt="Creating Total Slice: My Personal Takeaways"><p>As a student who came into the Qoom Creator Group this Summer 2021 with mostly front-end experience, I wanted to challenge myself to get a little more comfortable working with the backend. I found that working with Qoom&apos;s database easy to use for account authentication, and user data and helped make my project Total Slice a reality during the course of the program.</p>
<h2 id="inspiration">Inspiration</h2>
<p><img src="https://blog.qoom.io/content/images/2021/08/HomePage-1.PNG" alt="Creating Total Slice: My Personal Takeaways" loading="lazy"></p>
<p>Total Slice was inspired by my own personal experience trying to figure out my personal finances. For some reason, I found that my banking and bill statements, seeing plain numbers on a page, did not help me to understand where my money was going. This is perhaps due to the fact that I am more of a visual learner. So, I wanted to find a way to help those who were more visually-inclined <em>see</em> what is going on with their money to give better context. Thus, Total Slice was created.</p>
<p><a href="https://balsamiq.cloud/sc7yyln/pd1een0/r2278?f=N4IgUiBcAMA0IDkpxAYWfAMhkAhHAsjgFo4DSUA2gLoC%2BQA%3D">Early Wireframe Prototype of Total Slice</a></p>
<!--kg-card-end: markdown--><figure class="kg-card kg-embed-card kg-card-hascaption"><iframe width="200" height="113" src="https://www.youtube.com/embed/HzeREgNRjbA?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe><figcaption>Total Slice dashboard in action</figcaption></figure><!--kg-card-begin: markdown--><h2 id="main-features">Main Features</h2>
<p>Total Slice is a working website that includes the following features:</p>
<ol>
<li>Pie Charts generated by <a href="https://plotly.com/javascript/">Plotly.js</a></li>
<li>An Itemized Monthly Budget Breakdown</li>
<li>Total Slice Status Bar</li>
<li>A Currency Converter using <a href="https://www.exchangerate-api.com/">ExchangeRate-API</a></li>
</ol>
<p>Once the user signs up for a free account, they can log in and go into their dashboard. Inside the dashboard houses the budgeting form where they can fill out their monthly income as well as expenses that apply to them. Once they hit the &apos;Calculate Results&apos; button at the bottom of the form, pie charts are dynamically generated to help visualize their total monthly income vs expenses as well as an itemized breakdown showing the the income/expense types and their dollar figure amount. Finally, the Total Slice status bar updates to tell the user in plain terms whether their expenses outweigh their income for the month or not. The status bar also tells them to look into particular expenses that take up greater than or equal to 50% of their monthly income so they can make any necessary adjustments.</p>
<p>An extra feature I implemented was the currency converter to practice using APIs. It uses the ExchangeRate-API which gives reliable up-to-date currency exchange data that is easy to use.</p>
<p>I also included some personal finance blogs, videos, and wikis in the Resource section of the Total Slice website to help better educate my users on personal finance. It is my hope that Total Slice can be a useful tool to help people better understand the state of their money and can help people make more informed financial decisions.</p>
<h2 id="lessons-learned">Lessons Learned</h2>
<p>During one of the Tech Talks, we learned about Regular Expressions (Regex), which could be used to help filter form data. With a bit of practice, I managed to incorporate regex into the input areas of the Total Slice&apos;s budget form to prevent the user from inputting anything other than dollar amounts and thus prevent errors from happening.</p>
<p>Here&apos;s a code snippet that shows regex syntax in the pattern attribute inside the input tag:</p>
<pre><code>&lt;input type=&quot;number&quot; name=&quot;income&quot; id=&quot;income&quot; pattern=&quot;/^[0-9]\d*(((,\d{3}){1})?(\.\d{0,2})?)$/&quot; step=&quot;0.01&quot; placeholder=&quot;Enter Your Income&quot; /&gt;
</code></pre>
<p>Another lesson I learned was understanding the javascript functions for Open DB, Qoom&apos;s database. I had to go to a few office hours to understand what the async functions do and the difference between GET, POST, and PATCH methods. From there, I learned how to add form data to the database using javascript as well as updating the form data within the database and having that reflected in the pie graphs, the itemized budget breakdown list, and the Total Slice status bar.</p>
<h2 id="final-thoughts">Final Thoughts</h2>
<p>The Qoom creator group provided a great learning experience for me. Having the chance to help develop a project on the Qoom platform with the guidance of the Qoom founders and staff alongside a cohort of peers helped me improve my coding abilities, pick up new skills in design, wireframing, and using APIs, and challenged me to get out of my comfort zone and create a project in an area not familiar to me. I am definitely interested in exploring how to create more fintech-related apps in the future, and Qoom has given me confidence to do this.</p>
<p><strong>Total Slice Live Site Link:</strong> <a href="https://alerthorse44.qoom.space/~/TotalSlice">https://alerthorse44.qoom.space/~/TotalSlice</a></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[ML for the first time, to Google Teachable Machine making my project LearnLily special.]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h2 id="speech-detector-and-analyser">Speech Detector and Analyser</h2>
<p>The ML model that I trained and used in LearnLily can detect postures while speaking (namely, good eye contact, bad eye contact, fidgeting, slump), detect fumbles and backgrond noise while talking and also detect whether you are giving your speech with or without any aids (phone,</p>]]></description><link>https://blog.qoom.io/learnlily/</link><guid isPermaLink="false">62f866614d267b147700a5a7</guid><category><![CDATA[Qoom Creator]]></category><dc:creator><![CDATA[Swatilekha Roy]]></dc:creator><pubDate>Wed, 01 Sep 2021 21:16:21 GMT</pubDate><media:content url="https://blog.qoom.io/content/images/2021/08/logo.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h2 id="speech-detector-and-analyser">Speech Detector and Analyser</h2>
<img src="https://blog.qoom.io/content/images/2021/08/logo.png" alt="ML for the first time, to Google Teachable Machine making my project LearnLily special."><p>The ML model that I trained and used in LearnLily can detect postures while speaking (namely, good eye contact, bad eye contact, fidgeting, slump), detect fumbles and backgrond noise while talking and also detect whether you are giving your speech with or without any aids (phone, notes, etc.) Sounds interesting? Check out how it works live <a href="https://swatilekharoy.qoom.space/~/LearnLily/speech">here</a>.</p>
<h3 id="a-little-background">A little background</h3>
<p>It was my very first time working with Machine Learning which was initially quite intimidating since I am not naturally inclined towards <code>Python</code>. I tend to be more of a Javascript person.</p>
<blockquote>
<p>The absolute blessing moment came when I discovered the Tensorflow.js library.</p>
</blockquote>
<p>Once I started reading up more on it and delved deeper, I discovered &apos;Google Teachable Machine, which has been rightly described by Google as &quot;A fast, easy way to create machine learning models for your sites, apps, and more &#x2013; no expertise or coding required.&quot;</p>
<h3 id="as-excited-as-i-am">As excited as I am?</h3>
<p>Read more on <a href="https://teachablemachine.withgoogle.com/">Google Teachable Machine</a> and utilize it in your own fun projects!<br>
<strong>Please note:</strong> This is in no way an exhaustive Google Teachable Machine tutorial, just a surface coding walkthrough. For better tutorials or if you are a beginner, check out Google Teachable Machine&apos;s <a href="https://www.youtube.com/watch?v=DFBbSTvtpy4">own tutorials</a> or <a href="https://www.youtube.com/watch?v=kwcillcWOg0">Coding Train</a>&apos;s.</p>
<h4 id="step-1">STEP 1</h4>
<p>Train your &apos;Google Teachable Machine&apos; model (or in my case, model-<em>s</em>).</p>
<ul>
<li><strong>Pose Model</strong>:<br>
My Google Teachable Machine Pose Model will be able to detect four classes of posture- good eye contact, bad eye contact, fidgeting and slump (shoulder slump).<br>
<img src="https://blog.qoom.io/content/images/2021/08/Screenshot--322-.png" alt="ML for the first time, to Google Teachable Machine making my project LearnLily special." loading="lazy"></li>
</ul>
<p><img src="https://blog.qoom.io/content/images/2021/08/Screenshot--321-.png" alt="ML for the first time, to Google Teachable Machine making my project LearnLily special." loading="lazy"></p>
<ul>
<li><strong>Image Model</strong>:<br>
My Google Teachable Machine Image Model will be able to detect two classes- unassisted and external aid.<br>
<img src="https://blog.qoom.io/content/images/2021/08/Screenshot--323-.png" alt="ML for the first time, to Google Teachable Machine making my project LearnLily special." loading="lazy"></li>
<li><strong>Audio Model</strong>:<br>
My Google Teachable Machine Audio Model will be able to detect one additional class apart from &apos;Background noise&apos;- which is, fumbling.<br>
<img src="https://blog.qoom.io/content/images/2021/08/Screenshot--324-.png" alt="ML for the first time, to Google Teachable Machine making my project LearnLily special." loading="lazy"></li>
</ul>
<p>Once you&apos;re done adding datasets to your classes, click on Train Model and then generate the export code. Since I am using Javascript, my code here today will be as such.</p>
<h4 id="step-2">STEP 2</h4>
<p>Code. Code. Code. Wait. Code.</p>
<ul>
<li>First, add in your model URLs at the very top.</li>
</ul>
<pre><code class="language-const">
const POSE_URL = &quot;https://teachablemachine.withgoogle.com/models/gCKJy2yBv/&quot;;

const AUDIO_URL = &quot;https://teachablemachine.withgoogle.com/models/1jaFMEKV8/&quot;;

let modelimage, webcamimage, imagelabelContainer, maxPredictionsimage;
let modelpose, webcampose, ctx, poselabelContainer, maxPredictionspose;
</code></pre>
<ul>
<li>Next, add the audio model and create <code>recogizer</code>.</li>
</ul>
<pre><code>async function createModel() { // for audio model
    const checkpointURL = AUDIO_URL + &quot;model.json&quot;; // model topology
    const metadataURL = AUDIO_URL + &quot;metadata.json&quot;; // model metadata

    const recognizer = speechCommands.create(
        &quot;BROWSER_FFT&quot;, // fourier transform type, not useful to change
        undefined, // speech commands vocabulary feature, not useful for your models
        checkpointURL,
        metadataURL
    );

    // check that model and metadata are loaded via HTTPS requests.
    await recognizer.ensureModelLoaded();

    return recognizer;
}
</code></pre>
<ul>
<li>
<p>Next, load the image and pose models and set up the web cam. Note that the <code>init()</code> function gets triggered when you hit the &apos;Start Recording&apos; button.</p>
<pre><code>async function init() {
  
  // Changing the button text
  document.querySelector(&quot;#record-btn&quot;).innerHTML = &quot;Starting the magic...&quot;;
  
  // Changing final report visibility
  document.querySelector(&quot;#speech-final-rep&quot;).style.display = &quot;none&quot;;

  const modelURLimage = IMAGE_URL + &quot;model.json&quot;;
  const metadataURLimage = IMAGE_URL + &quot;metadata.json&quot;;

  const modelURLpose = POSE_URL + &quot;model.json&quot;;
  const metadataURLpose = POSE_URL + &quot;metadata.json&quot;;

  // load the model and metadata
  modelimage = await tmImage.load(modelURLimage, metadataURLimage);
  maxPredictionsimage = modelimage.getTotalClasses();
  // load the model and metadata
  modelpose = await tmPose.load(modelURLpose, metadataURLpose);
  maxPredictionspose = modelpose.getTotalClasses();

  // Convenience function to setup a webcam
  const height = 350;
  const width = 350;
  const flip = true; // whether to flip the webcam
      
  webcamimage = new tmImage.Webcam(width, height, flip); // width, height, flip
  webcampose = new tmPose.Webcam(width, height, flip); // width, height, flip

  // Change button text
  document.querySelector(&quot;#record-btn&quot;).innerHTML = &quot;Loading the model...&quot;;

  await webcampose.setup(); // request access to the webcam
  //await webcamimage.setup();
  await webcampose.play();
  //await webcamimage.play();
  window.requestAnimationFrame(loop);
  }


</code></pre>
</li>
<li>
<p>Next, create a canvas where your webcam can be rendered for recording your speech. Also, add subsequents <code>&lt;div&gt;</code>s according to the number of classes that you have used. Keep adding the following code to <code>init()</code>, the main function unless I give you a heads up!</p>
</li>
</ul>
<pre><code>// Change button text
    document.querySelector(&quot;#record-btn&quot;).innerHTML = &quot;Loading the model...&quot;;

    await webcampose.setup(); // request access to the webcam
    //await webcamimage.setup();
    await webcampose.play();
    //await webcamimage.play();
    window.requestAnimationFrame(loop);

    // Change button text
    document.querySelector(&quot;#record-btn&quot;).innerHTML = &quot;Please Be patient...&quot;;

    // append elements to the DOM
    const canvas = document.getElementById(&quot;canvas&quot;);
    
    canvas.width = width; canvas.height = height;
    ctx = canvas.getContext(&quot;2d&quot;);
        
    poselabelContainer = document.getElementById(&quot;pose_label-container&quot;);
    for (let i = 0; i &lt; maxPredictionspose; i++) { // and class labels
        poselabelContainer.appendChild(document.createElement(&quot;div&quot;));
    }

    imagelabelContainer = document.getElementById(&quot;image_label-container&quot;);
    for (let i = 0; i &lt; maxPredictionsimage; i++) { // and class labels
        imagelabelContainer.appendChild(document.createElement(&quot;div&quot;));
    }

    // audio recogniser
    window.recognizer = await createModel();
    const classLabels = recognizer.wordLabels(); // get class labels
    const audiolabelContainer = document.getElementById(&quot;audio_label-container&quot;);
    for (let i = 0; i &lt; classLabels.length; i++) {
        audiolabelContainer.appendChild(document.createElement(&quot;div&quot;));
    }
</code></pre>
<ul>
<li>With me so far? Now, we are getting to the pointy and more interesting bits. In the following code, I have pushed the <code>result.scores[i].toFixed(2)*100</code> class <strong>values</strong> as live feedback on the <code>html</code> page. Feel free to ignore storing the data in arrays, array graph data and sum of the data unless you need them to manipulate any part of your project. In my case, I used them- so I am still keeping them here for your reference.<pre><code class="language-recognizer.listen(result">      // declare the arrays empty
      const scores = result.scores; // probability of prediction for each class
      // render the probability scores per class
      for (let i = 0; i &lt; classLabels.length; i++) {
          const classPrediction = classLabels[i] + &quot;: &quot; + result.scores[i].toFixed(2)*100 + &quot;%&quot;;
          audiolabelContainer.childNodes[i].innerHTML = classPrediction;
      }
  		
  	// Store data in arrays
      audio1arr.push(result.scores[0].toFixed(2)*100);
      audio2arr.push(result.scores[1].toFixed(2)*100);
      
      // Store audio graph data
      audiogr.push(Math.round(100 - ((result.scores[0].toFixed(2)*100) + (result.scores[1].toFixed(2)*100))));
      
      // Store array sum
      sumaudioarr1 += result.scores[0].toFixed(2)*100;
      sumaudioarr2 += result.scores[1].toFixed(2)*100;}, {
          includeSpectrogram: true, // in case listen should return result.spectrogram
          probabilityThreshold: 0.75,
          invokeCallbackOnNoiseAndUnknown: true,
          overlapFactor: 0.50 // probably want between 0.5 and 0.75. More info in README
      });
</code></pre>
</li>
<li>That&apos;s a wrap for our <code>init()</code> function. Next, let&apos;s head on to our <code>loop()</code>.<pre><code class="language-async">  webcampose.update(); // update the webcam frame
  webcamimage.update();
  await predict();
  window.requestAnimationFrame(loop);
  }
  
</code></pre>
</li>
</ul>
<p>Feeling confused? Been there too. Feel free to check out Google Teachable Machine official repository for better instructions on what each function doe <a href="https://github.com/googlecreativelab/teachable-machine-v1">here</a>.<br>
Next, we run our model through the pose and image models. Stay with me, this is easier than it&apos;s shorter. The <code>predict()</code> function here does the same as the audio model above. Once again, feel free to ignore the arrays and sum variables if they aren&apos;t use to you.</p>
<pre><code>// run the webcam image through the image model
async function predict() {
  const { pose, posenetOutput } = await modelpose.estimatePose(webcampose.canvas);

  const predictionpose = await modelpose.predict(posenetOutput);
  // predict can take in an image, video or canvas html element
  const predictionimage = await modelimage.predict(webcampose.canvas);

  // Image model texts
  imagelabelContainer.childNodes[0].innerHTML = predictionimage[0].className + &quot;: &quot; + predictionimage[0].probability.toFixed(2)*100 + &quot;%&quot;;
  imagelabelContainer.childNodes[0].style.color = &quot;#0dd840&quot;;
  imagelabelContainer.childNodes[1].innerHTML = predictionimage[1].className + &quot;: &quot; + predictionimage[1].probability.toFixed(2)*100 + &quot;%&quot;;
  imagelabelContainer.childNodes[1].style.color = &quot;#ee0a0a&quot;;

  // Store image data in array
  image1arr.push(predictionimage[0].probability.toFixed(2)*100);
  image2arr.push(predictionimage[1].probability.toFixed(2)*100);
  
  // Store image graph data
  imagegr.push(Math.round(predictionimage[1].probability.toFixed(2)*100));
  
  // Store data array sum
  sumimagearr1 += predictionimage[0].probability.toFixed(2)*100;
  sumimagearr2 += predictionimage[1].probability.toFixed(2)*100
  
  // Pose model texts        
  poselabelContainer.childNodes[0].innerHTML = predictionpose[0].className + &quot;: &quot; + predictionpose[0].probability.toFixed(2)*100 + &quot;%&quot;;
  poselabelContainer.childNodes[0].style.color = &quot;#0dd840&quot;; //good eye contact
  poselabelContainer.childNodes[1].innerHTML = predictionpose[1].className + &quot;: &quot; + predictionpose[1].probability.toFixed(2)*100 + &quot;%&quot;;
  poselabelContainer.childNodes[1].style.color = &quot;#ee0a0a&quot;; //bad eye contact
  poselabelContainer.childNodes[2].innerHTML = predictionpose[2].className + &quot;: &quot; + predictionpose[2].probability.toFixed(2)*100 + &quot;%&quot;;
  poselabelContainer.childNodes[2].style.color = &quot;#ee0a0a&quot;; //fidgeting
  poselabelContainer.childNodes[3].innerHTML = predictionpose[3].className + &quot;: &quot; + predictionpose[3].probability.toFixed(3)*100 + &quot;%&quot;;
  poselabelContainer.childNodes[3].style.color = &quot;#ee0a0a&quot;; //slump
  
  // Store pose data in array
  pose1arr.push(predictionpose[0].probability.toFixed(2)*100);
  pose2arr.push(predictionpose[1].probability.toFixed(2)*100);
  pose3arr.push(predictionpose[2].probability.toFixed(2)*100);
  pose4arr.push(predictionpose[3].probability.toFixed(2)*100);
  
  // Store pose graph data
  posegr.push(Math.round((predictionpose[0].probability.toFixed(2)*100) - ((predictionpose[1].probability.toFixed(2)*100)+(predictionpose[2].probability.toFixed(2)*100)+(predictionpose[3].probability.toFixed(2)*100))));
  
  // Store data sum
  sumposearr1 += predictionpose[0].probability.toFixed(2)*100;
  sumposearr2 += predictionpose[1].probability.toFixed(2)*100;
  sumposearr3 += predictionpose[2].probability.toFixed(2)*100;
  sumposearr4 += predictionpose[3].probability.toFixed(2)*100;

  // finally draw the poses
  drawPose(pose);
  }
</code></pre>
<ul>
<li>
<p>In the next step, you have to update the webcam frame with the drawn pose keypoints which the model returns. One interesting thing to note here will be <code>minPartConfidence</code> parameter.</p>
<pre><code>function drawPose(pose) {
  if (webcampose.canvas) {
      ctx.drawImage(webcampose.canvas, 0, 0);
      // draw the keypoints and skeleton
      if (pose) {
          const minPartConfidence = 0.5;
          tmPose.drawKeypoints(pose.keypoints, minPartConfidence, ctx);
          tmPose.drawSkeleton(pose.keypoints, minPartConfidence, ctx);
          }
      }
  }
</code></pre>
</li>
<li>
<p>To wrap up, add a &apos;Stop Recording&apos; trigger button that will stop the ML model and you can do all your data calculatons here. (Here is where my sum variables and arrays come into play). Again, explore those only if you need them.</p>
<pre><code class="language-async">  {
  await webcampose.stop();
  recognizer.stopListening();
  endtime = Date.now();
  timeslot = (endtime - starttime)/1000;
  if(timeslot &lt; 60)
  {
  	window.timeprint = timeslot + &quot; seconds&quot;;
  }
  else
  {
  	minutes = Math.floor(timeslot/60);
  	seconds = Math.floor(timeslot - minutes * 60);
  	window.timeprint = minutes + &quot; minutes and &quot; + seconds + &quot; seconds&quot;;
  }
  sumaudioarr1 /= audio1arr.length;
  sumaudioarr2 /= audio2arr.length;
  sumimagearr1 /= image1arr.length;
  sumimagearr2 /= image2arr.length;
  sumposearr1 /= pose1arr.length;
  sumposearr2 /= pose2arr.length;
  sumposearr3 /= pose3arr.length;
  sumposearr4 /= pose4arr.length;

  window.posesc = Math.round(sumposearr1- (sumposearr2+sumposearr3+sumposearr4));
  window.audiosc = Math.round(100 - (sumaudioarr1+sumaudioarr2)/2);
  window.imagesc = Math.round(sumimagearr1 - sumimagearr2);
 
  document.querySelector(&quot;#speech-report-div&quot;).style.display = &quot;none&quot;;
  document.querySelector(&quot;#pose-rep&quot;).innerHTML = posesc + &quot;% near perfect&quot;;
  document.querySelector(&quot;#audio-rep&quot;).innerHTML = audiosc + &quot;% confident voice&quot;;
  document.querySelector(&quot;#image-rep&quot;).innerHTML = imagesc + &quot;% unassisted&quot;;
  document.querySelector(&quot;#time-rep&quot;).innerHTML = timeprint;
  
  speechgraph(window.posesc,window.audiosc,window.imagesc,window.timeprint);
  document.querySelector(&quot;#speech-final-rep&quot;).style.display = &quot;block&quot;;
  document.querySelector(&quot;#record-btn&quot;).innerHTML = &quot;Start Recording&quot;;
  document.querySelector(&quot;#stop-record-btn&quot;).style.display = &quot;none&quot;;
  }

</code></pre>
</li>
<li>
<p>No, you have been great enough. So, no more code. :D</p>
</li>
<li>
<p>And that being said, there WAS a lot more code that I added after this to render the readings as a graph and stuff, but that&apos;s rambling for another day. Feel free to check all the code for LearnLily on my <a href="https://github.com/Swatilekha-Roy/LearnLily">Github repo</a> if you are interested.</p>
</li>
</ul>
<h4 id="step-3">STEP 3</h4>
<p>Finally, with all the code written, you can take a few minutes to relax just like I did after completing 10 weeks of hard work during the Qoom Creator Group. It was such an amazing experience for me and my mentors were so darn amazing and supportive!<br>
Also, just in case, my final product looked like this:<br>
<img src="https://blog.qoom.io/content/images/2021/08/Screenshot--322--1.png" alt="ML for the first time, to Google Teachable Machine making my project LearnLily special." loading="lazy"></p>
<p>I couldn&apos;t show you the fidgeting score haha because I was taking the screenshot and was feeling lazy to set a timer. :(</p>
<p>Feel free to mail me at <a href="mailto:swatilekha.roy4@gmail.com">swatilekha.roy4@gmail.com</a> for any doubts or for feedback! I&apos;ll try my best to help you out.</p>
<p>Also, find my entire project LearnLily <strong>[here]</strong>(<a href="https://swatilekharoy.qoom.space/~/LearnLily">https://swatilekharoy.qoom.space/~/LearnLily</a>). This Speech detection model is just a part of it.</p>
<p>(and some shameless self promotion, but if you want to check out my <a href="https://swatilekha-roy.github.io/">portfolio</a>, I would love to know your thoughts!)</p>
<p>Stay tuned and do not miss the next Qoom Creator Group cohort! It&apos;s a really unique learning experience.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Compostify - Because What You Have Isn't Waste]]></title><description><![CDATA[<p>A third of the world&apos;s food supply ends up being wasted - and 30% to 50% of this waste comes from our own kitchens. Landfills teeming with abandoned fruit, grass clippings, and vegetables are a common sight in today&#x2019;s world.<br></p><figure class="kg-card kg-image-card"><img src="https://lh6.googleusercontent.com/miK6qUy33R-U2WlU9g2mYMZX5N9r3iHaUY9raLjOmoISuFE2P4F_AN-7yF-2a1FtUvBAwdkrOa9uDh9Vorcr2NaDdie2WFpaZdhqDiSIQUXwkIOtmsuk_8qvsPb7jk7axTUT7G-k=s0" class="kg-image" alt loading="lazy"></figure><hr><p>A solution? Composting. It&#x2019;s</p>]]></description><link>https://blog.qoom.io/compostify-because-what-you-have-isnt-waste/</link><guid isPermaLink="false">62f866614d267b147700a5a2</guid><category><![CDATA[Qoom Creator]]></category><dc:creator><![CDATA[Shrima Narasimhan]]></dc:creator><pubDate>Wed, 01 Sep 2021 21:16:00 GMT</pubDate><media:content url="https://blog.qoom.io/content/images/2021/08/compostifytitlepage2.0-1.PNG" medium="image"/><content:encoded><![CDATA[<img src="https://blog.qoom.io/content/images/2021/08/compostifytitlepage2.0-1.PNG" alt="Compostify - Because What You Have Isn&apos;t Waste"><p>A third of the world&apos;s food supply ends up being wasted - and 30% to 50% of this waste comes from our own kitchens. Landfills teeming with abandoned fruit, grass clippings, and vegetables are a common sight in today&#x2019;s world.<br></p><figure class="kg-card kg-image-card"><img src="https://lh6.googleusercontent.com/miK6qUy33R-U2WlU9g2mYMZX5N9r3iHaUY9raLjOmoISuFE2P4F_AN-7yF-2a1FtUvBAwdkrOa9uDh9Vorcr2NaDdie2WFpaZdhqDiSIQUXwkIOtmsuk_8qvsPb7jk7axTUT7G-k=s0" class="kg-image" alt="Compostify - Because What You Have Isn&apos;t Waste" loading="lazy"></figure><hr><p>A solution? Composting. It&#x2019;s the process of using decomposing food or yard waste to create fertile, rich soil. It&#x2019;s also a viable way to prevent household food scraps and yard waste from heading to landfills, where they often contribute to rising global temperatures. <br></p><p>The problem is that many people don&apos;t know how to compost or don&apos;t know what food/yard waste items can be composted, leading to increased waste that could easily be repurposed. <br></p><p>Compostify, a web app I created using Qoom, aims to address this issue by simplifying the process of composting at home.</p><hr><p><strong>Compostability Estimate Tool </strong><br></p><p>One of the main features of Compostify is its Compostability Estimate Tool. The tool helps clarify which items can be composted and which can&#x2019;t be. It can be handy for figuring out what food items can and can&#x2019;t be composted, especially since many people don&#x2019;t know that foods like meat, dairy, and garlic are not recommended for compost.<br></p><p>To use the Estimation Tool, the user simply needs to activate it through the website and turn on their webcam. <br></p><p>The user would hold up an item (like a sticky note or banana peel) directly in front of their webcam. The tool would then provide an estimate of how compostable and how non-compostable that item is, on a scale of 0.0-1.0. These estimates could help the user make informed decisions about which items they want to put in their compost, versus which items they should put in the trash.<br></p><figure class="kg-card kg-image-card"><img src="https://lh5.googleusercontent.com/44RWqmQMntnLPFhrd1p02z8xowbyOGUXksUJQmcEOSVHxAon4S6-pSJH6EdbHJJXbmaZx15Jp3WO17LH1MehDw2LiXvO3ssCCLX6_eRkcUOCibm9jkZaQ40LA85d0fmoAD_Otwh7=s0" class="kg-image" alt="Compostify - Because What You Have Isn&apos;t Waste" loading="lazy"></figure><p><br></p><p>To create the Estimation tool, I trained an image model using Google&apos;s Teachable Machine (GTM). I used the GTM to assign various images of food and household items to two categories - &#x201C;Compostable&#x201D; and &#x201C;Non-compostable&#x201D;. This included images of compostable items like an apple core, a leftover red pepper piece, garden weeds, an unused kitchen paper towel; and images of non-compostable items like meat, a piece of cheese, a garlic bulb, and a piece of plastic wrap.</p><p>The GTM then generated JavaScript and JSON files containing the image model data, which I transferred over to my Qoom project. <br></p><p>In the future, I hope to make my GTM image model more accurate by training it with more varied images of compostable and non-compostable items. Including images with different backgrounds (i.e. some with neutral black/white backgrounds, others with natural backgrounds) &amp; allowing the user to upload images to the tool are also changes I hope to work on.<br><br></p><p><strong>Progress Tracker</strong><br></p><p>Another Compostify feature is the Progress Tracker, which serves as a simple diary for users to keep track of their composting progress. It provides input fields and corresponding prompts such as &#x201C;what food waste have you collected so far&#x201D; and &#x201C;how much of your compost has decomposed so far&#x201D;. Users can submit entries to the Tracker, which will then show up on the page. They can also easily delete any of the entries they&#x2019;ve submitted.<br></p><figure class="kg-card kg-image-card"><img src="https://lh3.googleusercontent.com/h09ca3OOESqZ2V0LMeLF-NtnGx16BuF2MbPOAOVnCMJ3K8SarFbKL75dTkg9Q0aglidtLW-x2eCyg_uwGfvoK-PeoM85GstQQYa7ukYzc6qUsY7NZ-iCtJ_GnU6QmFfIOL96U4ff=s0" class="kg-image" alt="Compostify - Because What You Have Isn&apos;t Waste" loading="lazy"></figure><p><br></p><p>Through the process of creating this feature, I expand on my knowledge of JavaScript basics such as the async/await function pattern, arrays, and for-each loops. I also learned about Mustache Templating for the first time and how it is used to dynamically generate information onto a website page.<br></p><p>To improve the Progress Tracker feature, I plan to add a functionality that allows users to edit entries they&#x2019;ve already submitted. Additionally, I hope to add timestamps to the page that inform the user of when they last added an entry to the Progress Tracker.</p><hr><p><strong>Resources Page</strong><br></p><p>The last core feature of Compostify is its Resource Page, which includes links to informative videos, articles, infographics, and a Garden Hotline number. Collectively, these resources explain various aspects of the composting process, such as how to set up composting systems or bins and how to use compost to enrich garden soil.<br></p><p>Although my Resource Page is static at the moment, I aim to make it more dynamic by allowing the user to filter out what resources they&#x2019;re looking for, through a CTRL-F-like search functionality.<br></p><hr><p><br>I hope this article inspired you to check out Compostify and start improving your composting game at home. Remember: it&#x2019;s never too late to start composting your food and yard waste and creating a little bit of impact each day. The planet will thank you for your efforts!<br></p>]]></content:encoded></item><item><title><![CDATA[FlixFam - For The Cinephiles]]></title><description><![CDATA[<p>I had the idea for FlixFam in my head for a while now. I took inspiration from GoodReads, which is a platform where you can keep track of books you&apos;ve read, share them with friends, and also discover new titles. I wanted to create something similar but for</p>]]></description><link>https://blog.qoom.io/flixfam-for-the-cinephiles/</link><guid isPermaLink="false">62f866614d267b147700a5ab</guid><category><![CDATA[Qoom Creator]]></category><dc:creator><![CDATA[Supasinee Siripun]]></dc:creator><pubDate>Wed, 01 Sep 2021 21:15:24 GMT</pubDate><media:content url="https://blog.qoom.io/content/images/2021/09/Screen-Shot-2021-09-01-at-2.14.48-PM.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.qoom.io/content/images/2021/09/Screen-Shot-2021-09-01-at-2.14.48-PM.png" alt="FlixFam - For The Cinephiles"><p>I had the idea for FlixFam in my head for a while now. I took inspiration from GoodReads, which is a platform where you can keep track of books you&apos;ve read, share them with friends, and also discover new titles. I wanted to create something similar but for movies and tv shows. </p><p>Before I started this project, I was already familiar with HTML and CSS. I did not know how to use a database to keep our users&apos; data. For FlixFam, I chose to use the Qoom database, which was such a relief for me as it was simple to use. I had to learn how to integrate my new knowledge with my previous skills.</p><p>FlixFam is definitely still in the works. Even though the Creator Group is completed, FlixFam is a part of my future works. There is still much to be done, but I&apos;m glad I took the step in creating a platform I truly believe in. </p><p>You can try FlixFam <a href="https://supasinee.qoom.space/projects/theflow/index.html">here</a>.</p><p>Thank you for this amazing experience.</p><p>Supasinee.</p>]]></content:encoded></item><item><title><![CDATA[Meet Intera...]]></title><description><![CDATA[<p>Hello, my name is Reeva Khokhar and for the Summer 2021 Cohort I worked with Cyra Alesha to create a web application called Intera. </p><p><strong>What was the inspiration behind Intera?</strong></p><p>Due to the Coronavirus Pandemic the job market had become very competitive which made it necessary for all candidates applying</p>]]></description><link>https://blog.qoom.io/meet-intera/</link><guid isPermaLink="false">62f866614d267b147700a5a8</guid><category><![CDATA[Qoom Creator]]></category><dc:creator><![CDATA[Reeva Khokhar]]></dc:creator><pubDate>Wed, 01 Sep 2021 20:12:56 GMT</pubDate><media:content url="https://blog.qoom.io/content/images/2021/08/intera.PNG" medium="image"/><content:encoded><![CDATA[<img src="https://blog.qoom.io/content/images/2021/08/intera.PNG" alt="Meet Intera..."><p>Hello, my name is Reeva Khokhar and for the Summer 2021 Cohort I worked with Cyra Alesha to create a web application called Intera. </p><p><strong>What was the inspiration behind Intera?</strong></p><p>Due to the Coronavirus Pandemic the job market had become very competitive which made it necessary for all candidates applying to jobs to be on the top of their game in their interviews. Keeping in mind, the competition in the job industry I did some research to find out what exactly made the difference when candidates gave their interviews. During my research I discovered that nearly 50% of applicants do not do well in their interview because of their lack of preparation. This inspired me to create Intera to provide a platform for people to easily prepare for their interviews. </p><p><strong>What is Intera?</strong></p><figure class="kg-card kg-image-card"><img src="https://blog.qoom.io/content/images/2021/08/image-1.png" class="kg-image" alt="Meet Intera..." loading="lazy" width="895" height="503" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/image-1.png 600w, https://blog.qoom.io/content/images/2021/08/image-1.png 895w" sizes="(min-width: 720px) 720px"></figure><p>Intera is a cost-free solution to landing your dream job. It revolutionizes the job &amp; internship preparation process through its various sets of interview questions and live interview feedback feature. </p><figure class="kg-card kg-image-card"><img src="https://blog.qoom.io/content/images/2021/08/image.png" class="kg-image" alt="Meet Intera..." loading="lazy" width="1336" height="766" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/image.png 600w, https://blog.qoom.io/content/images/size/w1000/2021/08/image.png 1000w, https://blog.qoom.io/content/images/2021/08/image.png 1336w" sizes="(min-width: 720px) 720px"></figure><p><strong>How we made Intera:</strong></p><p>We built Intera&apos;s website using HTML, CSS, and JS and we made Intera&apos;s live interview features using machine learning, speech-to-text, and text-to-speech recognition. </p><p><strong>How Qoom helped me make Intera:</strong></p><p>Qoom was a great help while creating Intera! Using Qoom, I was easily able to collaborate with my partner on the same editor even though we were in two different countries. Additionally, Qoom&apos;s editor made it extremely for us to create our web application by keeping everything on the same web page. I hope to further develop Intera in the near future and I strongly recommend using Qoom for your web development projects. </p><p>Here is a link to Intera&apos;s website: <a href="https://alertwhale94.qoom.space/edit/Intera/index.html">https://alertwhale94.qoom.space/edit/Intera/index.html</a></p>]]></content:encoded></item><item><title><![CDATA[Editing Account Information]]></title><description><![CDATA[<p></p><p>Qoom&apos;s new database update comes with full tutorials and code snippets that open up way more awesome possibilities for coding projects! Perhaps an &quot;editing information&quot; section? That&apos;s exactly what we did with our project, &#xA0;using Qoom&apos;s user authentication database system.</p><h3 id="the-html">The</h3>]]></description><link>https://blog.qoom.io/cranial-check-teachable-machine/</link><guid isPermaLink="false">62f866614d267b147700a5a3</guid><category><![CDATA[Qoom Creator]]></category><dc:creator><![CDATA[Alyzee Sosa]]></dc:creator><pubDate>Wed, 01 Sep 2021 20:12:02 GMT</pubDate><media:content url="https://blog.qoom.io/content/images/2021/09/Screen-Shot-2021-08-25-at-4.54.27-PM.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.qoom.io/content/images/2021/09/Screen-Shot-2021-08-25-at-4.54.27-PM.png" alt="Editing Account Information"><p></p><p>Qoom&apos;s new database update comes with full tutorials and code snippets that open up way more awesome possibilities for coding projects! Perhaps an &quot;editing information&quot; section? That&apos;s exactly what we did with our project, &#xA0;using Qoom&apos;s user authentication database system.</p><h3 id="the-html">The HTML</h3><p>First, we formatted the information using HTML and curly brackets to get and the data (username, email, and password) from the database. We also created a default profile picture and an option to upload a new profile picture. We used local storage to make and save changes to the profile pictures, and in the future we hope to integrate this feature into Qoom&apos;s authentication database as well!</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.qoom.io/content/images/2021/08/Screen-Shot-2021-08-25-at-4.54.27-PM.png" class="kg-image" alt="Editing Account Information" loading="lazy" width="2000" height="1248" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/Screen-Shot-2021-08-25-at-4.54.27-PM.png 600w, https://blog.qoom.io/content/images/size/w1000/2021/08/Screen-Shot-2021-08-25-at-4.54.27-PM.png 1000w, https://blog.qoom.io/content/images/size/w1600/2021/08/Screen-Shot-2021-08-25-at-4.54.27-PM.png 1600w, https://blog.qoom.io/content/images/2021/08/Screen-Shot-2021-08-25-at-4.54.27-PM.png 2138w" sizes="(min-width: 720px) 720px"><figcaption>Creating a collapsible to edit user information with HTML</figcaption></figure><h3 id="using-the-javascript-snippets">Using the Javascript Snippets</h3><p>Qoom recently added Javascript and HTML code to the database features, making it easier than ever for Qoom users to navigate the database in their projects. </p><figure class="kg-card kg-image-card"><img src="https://blog.qoom.io/content/images/2021/08/Screen-Shot-2021-08-25-at-9.45.31-PM.png" class="kg-image" alt="Editing Account Information" loading="lazy" width="2000" height="1094" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/Screen-Shot-2021-08-25-at-9.45.31-PM.png 600w, https://blog.qoom.io/content/images/size/w1000/2021/08/Screen-Shot-2021-08-25-at-9.45.31-PM.png 1000w, https://blog.qoom.io/content/images/size/w1600/2021/08/Screen-Shot-2021-08-25-at-9.45.31-PM.png 1600w, https://blog.qoom.io/content/images/2021/08/Screen-Shot-2021-08-25-at-9.45.31-PM.png 2080w" sizes="(min-width: 720px) 720px"></figure><pre><code class="language-javascript">async function editEmail() {
	//getting input value
	const username = document.getElementById(&quot;edit-email&quot;)
		.value;
	const data = { username };
	if (!username) {
		alert(&quot;Please enter a new email to change.&quot;);
	} else {
		const resp = await fetch(&apos;/~/spring2021/cranial-check/account/profile&apos;, {
			method: &apos;PATCH&apos;,
			headers: { &apos;Content-Type&apos;: &apos;application/json&apos; },
			body: JSON.stringify(data)
		})

		const ans = await resp.json();
		window.location.reload();
	}
}
</code></pre><p>}</p><p>For example, this function was from Qoom&apos;s code snippets, it was altered from the template to change the value in the email input to whatever the user wants to edit it to, and save it to name=&quot;email&quot; in the authentication database. While this function has some additions to it, like input verification, most of it was easily created to make editing email information easy for the user. The functions to change the name and password also look similar.</p><h3 id="using-local-storage">Using Local Storage</h3><p>Getting a value from file inputs in order to edit the profile picture section was proving to be a bit difficult, so we decided to find an alternative and use local storage to save and change images. Though that means that profile pictures depend on computers rather than Cranial Check accounts, it was still a good learning experience.</p><figure class="kg-card kg-code-card"><pre><code class="language-javascript">function showImg(input) {
	if (input.files &amp;&amp; input.files[0]) {
		var reader = new FileReader();

		reader.onload = function (e) {
			$(&apos;#pfp&apos;)
				.attr(&apos;src&apos;, e.target.result);
		};

		reader.readAsDataURL(input.files[0]);
	}
}
//saving image to local storage
function saveImg() {
	const picture = document.querySelector(&quot;#picture&quot;)
		.files[0]
	console.log(picture); //shows files list in console --&gt; mmust convert into data url to use in local storage
	const reader = new FileReader(); //instance that will actually convert the file into a data url string
	//wait for load event to retrieve result (data url as a string)
	reader.addEventListener(&quot;load&quot;, () =&gt; {
		console.log(reader.result); //result belongs to File Reader instance
		//there&apos;s a limit on data url size from image so we use try and catch in case it&apos;s too big
		try {
			localStorage.setItem(&quot;recent-profile&quot;, reader.result); //key:value stored on local storage (go to dev tools --&gt; applications --&gt; local storage)
			window.location.reload();
		} catch (e) {
			alert(&quot;Image is too big, upload a new one&quot;);
		}
	});
	reader.readAsDataURL(picture);
}
</code></pre><figcaption>two of the functions used in the local storage method</figcaption></figure><p>We used the above code to create separate functions to take a file input and create a data url string that can be saved in an object in local storage (key = &quot;recent-profile&quot;, value = data url). We then got this value and displayed it onto the profile element (if there was no item in local storage yet it showed a default icon). To change and save a new image, we created separate functions to change the src of the profile image into the uploaded image string and tested for size before saving it to the object in local storage.</p><h3 id="final-look">Final Look</h3><p>This is the second cohort we are working on our project, and we made many small feature improvements like this one that made our product more consistent and user-friendly. Thanks to Qoom&apos;s easy tutorials, we learned more about how databases work and easily further integrated the authentication system into our project. </p>]]></content:encoded></item><item><title><![CDATA[What is Pedal Mates?]]></title><description><![CDATA[<p><strong>There are times when you want to bike around in your city but don&#x2019;t have someone you can go with. However, staying fit is super essential especially considering the sedentary lifestyle we have all been living. In such times, we thought of creating a web app that would</strong></p>]]></description><link>https://blog.qoom.io/how-we-made-the-pedal-mates/</link><guid isPermaLink="false">62f866614d267b147700a5ac</guid><category><![CDATA[Qoom Creator]]></category><dc:creator><![CDATA[Isha]]></dc:creator><pubDate>Wed, 01 Sep 2021 20:08:26 GMT</pubDate><media:content url="https://blog.qoom.io/content/images/2021/09/Screenshot--452-.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.qoom.io/content/images/2021/09/Screenshot--452-.png" alt="What is Pedal Mates?"><p><strong>There are times when you want to bike around in your city but don&#x2019;t have someone you can go with. However, staying fit is super essential especially considering the sedentary lifestyle we have all been living. In such times, we thought of creating a web app that would help people meet in their city with whom they could cycle with. The customer base would be everyone above the age of 16.</strong></p><figure class="kg-card kg-image-card"><img src="https://blog.qoom.io/content/images/2021/08/Screenshot--452-.png" class="kg-image" alt="What is Pedal Mates?" loading="lazy" width="1348" height="646" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/Screenshot--452-.png 600w, https://blog.qoom.io/content/images/size/w1000/2021/08/Screenshot--452-.png 1000w, https://blog.qoom.io/content/images/2021/08/Screenshot--452-.png 1348w" sizes="(min-width: 720px) 720px"></figure><p><strong>Pedal Mates lets you select the city you live in. Then, select the route and time you wish to go cycling. (Some common routes are shown as available for each city).</strong></p><figure class="kg-card kg-image-card"><img src="https://blog.qoom.io/content/images/2021/08/Screenshot--454-.png" class="kg-image" alt="What is Pedal Mates?" loading="lazy" width="1339" height="566" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/Screenshot--454-.png 600w, https://blog.qoom.io/content/images/size/w1000/2021/08/Screenshot--454-.png 1000w, https://blog.qoom.io/content/images/2021/08/Screenshot--454-.png 1339w" sizes="(min-width: 720px) 720px"></figure><p><strong>Pedal Mates then connects you to a person with a similar route and time and lets you chat and discuss any other little details you wish to. That&#x2019;s it! Meet the person and cycle ahead!</strong></p><p>The first step was using Figma to create the design. In around a week, the design of the whole web app was ready. Collaborating on Figma was very easy and went smoothly. The next step was to convert it into HTML, CSS, JavaScript. Figma&#x2019;s inbuilt tools helped a lot in which.</p><p>For the database, we employed Qoom Database and Qoom Login System. Collaborating online was good; however, discussing ideas was a bit of a task as done remotely. However, time passed, and we kept working on it.</p><p>We came across problems we Googled or took help in office hours, while others we knew, we took the support of each other. So, although we could not wholly deliver what we intended, we learned a lot by employing different things and connecting them.</p><p>One drawback of Pedal Mates, though, is that there are fixed routes for each city. Employing live location would have been trade with battery life to our users, and there are rarely times when our app users would switch on site all the time to detect other riders nearby. Therefore, we have kept it as a planned cycle trips finder to make it smoother for the development and the user side. Also, keeping fixed routes make it more designed rather than on the spot finding people.</p><p>For the future, we are planning to create a request page, where people can request other routes which they feel are used in the city. Other updates in our minds include selecting the gender of the rider you are looking for, age, etc. Chatting with riders you have already ridden is another pursuit.</p><p>Here is the link to the website Pedal Mates.<br><a href="https://isha.qoom.space/~/Pedal_Mates">https://isha.qoom.space/~/Pedal_Mates</a><br></p>]]></content:encoded></item><item><title><![CDATA[Challenges and everything I achieved by working more on Diarywise]]></title><description><![CDATA[Challenges and achievements that I achieved by working on Diarywise in the Summer Cohort. ]]></description><link>https://blog.qoom.io/what-i-achieved-by-working-more-on-diarywise/</link><guid isPermaLink="false">62f866614d267b147700a5a4</guid><category><![CDATA[Qoom Creator]]></category><dc:creator><![CDATA[Lakshmi Pachipulusu]]></dc:creator><pubDate>Wed, 01 Sep 2021 20:02:38 GMT</pubDate><media:content url="https://blog.qoom.io/content/images/2021/08/Diarywise_page1-1.JPG" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-embed-card"><iframe src="https://player.vimeo.com/video/591936024?app_id=122963&amp;h=47a33f1abf" width="640" height="366" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen title="Diarywise Demo"></iframe></figure><img src="https://blog.qoom.io/content/images/2021/08/Diarywise_page1-1.JPG" alt="Challenges and everything I achieved by working more on Diarywise"><p>In this cohort, I continued working on Diarywise again. Since I worked on the website again, I got to improve many things on the website. Such as the user interface, adding new features, adding more themes, and making everything look more sophisticated and beautiful. When you keep working on a project again, you can improve your prototype and make it look and function more efficiently. Diarywise was not fully functional or looked beautiful when I first created it in the last cohort. But after I worked on it again I improved plenty of things. I applied everything I learned in the last cohort to my project. That gave out a great result and now Diarywise looks nice and it also has some new cool features to it. </p><figure class="kg-card kg-gallery-card kg-width-wide kg-card-hascaption"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.qoom.io/content/images/2021/08/Diarywise_page1.JPG" width="2000" height="1050" loading="lazy" alt="Challenges and everything I achieved by working more on Diarywise" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/Diarywise_page1.JPG 600w, https://blog.qoom.io/content/images/size/w1000/2021/08/Diarywise_page1.JPG 1000w, https://blog.qoom.io/content/images/size/w1600/2021/08/Diarywise_page1.JPG 1600w, https://blog.qoom.io/content/images/2021/08/Diarywise_page1.JPG 2208w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.qoom.io/content/images/2021/08/Diarywise_page2.JPG" width="2000" height="1056" loading="lazy" alt="Challenges and everything I achieved by working more on Diarywise" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/Diarywise_page2.JPG 600w, https://blog.qoom.io/content/images/size/w1000/2021/08/Diarywise_page2.JPG 1000w, https://blog.qoom.io/content/images/size/w1600/2021/08/Diarywise_page2.JPG 1600w, https://blog.qoom.io/content/images/2021/08/Diarywise_page2.JPG 2223w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.qoom.io/content/images/2021/08/Diarywise_page3.JPG" width="2000" height="1129" loading="lazy" alt="Challenges and everything I achieved by working more on Diarywise" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/Diarywise_page3.JPG 600w, https://blog.qoom.io/content/images/size/w1000/2021/08/Diarywise_page3.JPG 1000w, https://blog.qoom.io/content/images/size/w1600/2021/08/Diarywise_page3.JPG 1600w, https://blog.qoom.io/content/images/2021/08/Diarywise_page3.JPG 2217w" sizes="(min-width: 720px) 720px"></div></div><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.qoom.io/content/images/2021/08/Diarywise_page4.JPG" width="1269" height="1121" loading="lazy" alt="Challenges and everything I achieved by working more on Diarywise" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/Diarywise_page4.JPG 600w, https://blog.qoom.io/content/images/size/w1000/2021/08/Diarywise_page4.JPG 1000w, https://blog.qoom.io/content/images/2021/08/Diarywise_page4.JPG 1269w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.qoom.io/content/images/2021/08/Diarywise_page5.JPG" width="1150" height="1181" loading="lazy" alt="Challenges and everything I achieved by working more on Diarywise" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/Diarywise_page5.JPG 600w, https://blog.qoom.io/content/images/size/w1000/2021/08/Diarywise_page5.JPG 1000w, https://blog.qoom.io/content/images/2021/08/Diarywise_page5.JPG 1150w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.qoom.io/content/images/2021/08/Diarywise_page6.JPG" width="2000" height="1158" loading="lazy" alt="Challenges and everything I achieved by working more on Diarywise" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/Diarywise_page6.JPG 600w, https://blog.qoom.io/content/images/size/w1000/2021/08/Diarywise_page6.JPG 1000w, https://blog.qoom.io/content/images/size/w1600/2021/08/Diarywise_page6.JPG 1600w, https://blog.qoom.io/content/images/2021/08/Diarywise_page6.JPG 2211w" sizes="(min-width: 720px) 720px"></div></div></div><figcaption>Diarywise Website Tour Images</figcaption></figure><p>A challenge that I ran into in the last cohort was that I couldn&#x2019;t make the diary entries to be there permanently. That made the diary entries disappear after the user refreshed the page. But, in this cohort, I learned a lot about making the user&apos;s work to be saved permanently even if the user refreshed the page. They can always come back and look at their entries and even edit them if the user wants to. Additionally, when the user saves their diary entry, they are not just saving what they wrote but also saving the styles that they added while writing the diary entry. For example, if the user wants the text color to be yellow, font size to be 35, and the font family to be Georgia and then saves their work. It will automatically save. One challenge that I overcame this cohort was making the diary entry and its styles to be saved permanently.</p><figure class="kg-card kg-gallery-card kg-width-wide kg-card-hascaption"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.qoom.io/content/images/2021/08/Diarywise_code1.JPG" width="1055" height="1295" loading="lazy" alt="Challenges and everything I achieved by working more on Diarywise" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/Diarywise_code1.JPG 600w, https://blog.qoom.io/content/images/size/w1000/2021/08/Diarywise_code1.JPG 1000w, https://blog.qoom.io/content/images/2021/08/Diarywise_code1.JPG 1055w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.qoom.io/content/images/2021/08/Diarywise_code2.JPG" width="2000" height="1135" loading="lazy" alt="Challenges and everything I achieved by working more on Diarywise" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/Diarywise_code2.JPG 600w, https://blog.qoom.io/content/images/size/w1000/2021/08/Diarywise_code2.JPG 1000w, https://blog.qoom.io/content/images/size/w1600/2021/08/Diarywise_code2.JPG 1600w, https://blog.qoom.io/content/images/2021/08/Diarywise_code2.JPG 2254w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.qoom.io/content/images/2021/08/Diarywise_code3.JPG" width="2000" height="1147" loading="lazy" alt="Challenges and everything I achieved by working more on Diarywise" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/Diarywise_code3.JPG 600w, https://blog.qoom.io/content/images/size/w1000/2021/08/Diarywise_code3.JPG 1000w, https://blog.qoom.io/content/images/size/w1600/2021/08/Diarywise_code3.JPG 1600w, https://blog.qoom.io/content/images/2021/08/Diarywise_code3.JPG 2240w" sizes="(min-width: 720px) 720px"></div></div><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.qoom.io/content/images/2021/08/Diarywise_code4.JPG" width="1150" height="1291" loading="lazy" alt="Challenges and everything I achieved by working more on Diarywise" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/Diarywise_code4.JPG 600w, https://blog.qoom.io/content/images/size/w1000/2021/08/Diarywise_code4.JPG 1000w, https://blog.qoom.io/content/images/2021/08/Diarywise_code4.JPG 1150w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.qoom.io/content/images/2021/08/Diarywise_code5.JPG" width="1216" height="1276" loading="lazy" alt="Challenges and everything I achieved by working more on Diarywise" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/Diarywise_code5.JPG 600w, https://blog.qoom.io/content/images/size/w1000/2021/08/Diarywise_code5.JPG 1000w, https://blog.qoom.io/content/images/2021/08/Diarywise_code5.JPG 1216w" sizes="(min-width: 720px) 720px"></div></div></div><figcaption>Diarywise Website Code Images</figcaption></figure><p>Therefore, I learned many new things and applied my old skills to make Diarywise look even better than before. It is now fully functioning and also looks beautiful. I worked on Diarywise again for this cohort which made the website look more improved and complete. Even though I ran into some challenges while making Diarywise I learned a lot from my challenges and eventually solved them too. Diarywise is even better than before because I worked on it and made it look and work better than before.</p><p>Diarywise Website Link:</p><p><a href="https://www.enviremadstar.com/~/DiaryCreatorGroupProject/index">https://www.enviremadstar.com/~/DiaryCreatorGroupProject/index</a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Using Qoom's Database for Mood-E]]></title><description><![CDATA[<p><strong>Introduction:</strong></p><p>Welcome back! We&#x2019;re Maya and Gavneet AKA Mayneet. We first joined the Qoom Creator Club back in April of 2021 for the spring cohort. We had such a great time creating our first project, we came back for the summer cohort to create our second project together,</p>]]></description><link>https://blog.qoom.io/using-qooms-database-for-mood-e/</link><guid isPermaLink="false">62f866614d267b147700a5ad</guid><category><![CDATA[Qoom Creator]]></category><dc:creator><![CDATA[Gavneet Bhandal]]></dc:creator><pubDate>Wed, 01 Sep 2021 20:00:40 GMT</pubDate><media:content url="https://blog.qoom.io/content/images/2021/09/Screen-Shot-2021-09-01-at-12.57.44-PM.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.qoom.io/content/images/2021/09/Screen-Shot-2021-09-01-at-12.57.44-PM.png" alt="Using Qoom&apos;s Database for Mood-E"><p><strong>Introduction:</strong></p><p>Welcome back! We&#x2019;re Maya and Gavneet AKA Mayneet. We first joined the Qoom Creator Club back in April of 2021 for the spring cohort. We had such a great time creating our first project, we came back for the summer cohort to create our second project together, Mood-E. We returned to the summer cohort with more experience in HTML, CSS and JS, therefore allowing us to focus more on our UI design using Figma while learning and implementing the Qoom database. </p><blockquote>Check Mood-E here! <a href="https://grandkiwi77.qoom.space/~/moode">https://grandkiwi77.qoom.space/~/moode</a></blockquote><p><strong>Our Inspiration:</strong></p><p>Like AREA (our previous project), we wanted to create something which we personally could use on a daily basis. We also wanted to create something that could benefit our users and support them during this pandemic.</p><p>We drew inspiration from apps/websites that let you do the separate things that our webpage offers! We thought that by putting these features all on the same website, it&#x2019;d make for a very beneficial and user friendly website.<br></p><p><strong>A Brief Look At The Process:</strong><br></p><p><em>Week 1:</em></p><ul><li>creating our design using Figma (for the first time!)</li><li>creating our tabs, logo, and using CSS to design our pages <br></li></ul><p><em>Week 2:</em></p><ul><li>implemented login and signup pages using the QOOM database</li><li>designed the boxes, links and buttons<br></li></ul><p><em>Week 3-5:</em></p><ul><li>made all of our pages with widgets</li><li>styling each page specific to the widget that is on it</li></ul><figure class="kg-card kg-gallery-card kg-width-wide kg-card-hascaption"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.qoom.io/content/images/2021/08/Screen-Shot-2021-08-29-at-12.25.39-PM.png" width="2000" height="1140" loading="lazy" alt="Using Qoom&apos;s Database for Mood-E" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/Screen-Shot-2021-08-29-at-12.25.39-PM.png 600w, https://blog.qoom.io/content/images/size/w1000/2021/08/Screen-Shot-2021-08-29-at-12.25.39-PM.png 1000w, https://blog.qoom.io/content/images/size/w1600/2021/08/Screen-Shot-2021-08-29-at-12.25.39-PM.png 1600w, https://blog.qoom.io/content/images/size/w2400/2021/08/Screen-Shot-2021-08-29-at-12.25.39-PM.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.qoom.io/content/images/2021/08/Screen-Shot-2021-08-29-at-12.25.52-PM.png" width="2000" height="1139" loading="lazy" alt="Using Qoom&apos;s Database for Mood-E" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/Screen-Shot-2021-08-29-at-12.25.52-PM.png 600w, https://blog.qoom.io/content/images/size/w1000/2021/08/Screen-Shot-2021-08-29-at-12.25.52-PM.png 1000w, https://blog.qoom.io/content/images/size/w1600/2021/08/Screen-Shot-2021-08-29-at-12.25.52-PM.png 1600w, https://blog.qoom.io/content/images/size/w2400/2021/08/Screen-Shot-2021-08-29-at-12.25.52-PM.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.qoom.io/content/images/2021/08/Screen-Shot-2021-08-29-at-12.29.45-PM.png" width="2000" height="1103" loading="lazy" alt="Using Qoom&apos;s Database for Mood-E" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/Screen-Shot-2021-08-29-at-12.29.45-PM.png 600w, https://blog.qoom.io/content/images/size/w1000/2021/08/Screen-Shot-2021-08-29-at-12.29.45-PM.png 1000w, https://blog.qoom.io/content/images/size/w1600/2021/08/Screen-Shot-2021-08-29-at-12.29.45-PM.png 1600w, https://blog.qoom.io/content/images/size/w2400/2021/08/Screen-Shot-2021-08-29-at-12.29.45-PM.png 2400w" sizes="(min-width: 720px) 720px"></div></div><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.qoom.io/content/images/2021/08/Screen-Shot-2021-08-29-at-12.29.17-PM.png" width="2000" height="1124" loading="lazy" alt="Using Qoom&apos;s Database for Mood-E" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/Screen-Shot-2021-08-29-at-12.29.17-PM.png 600w, https://blog.qoom.io/content/images/size/w1000/2021/08/Screen-Shot-2021-08-29-at-12.29.17-PM.png 1000w, https://blog.qoom.io/content/images/size/w1600/2021/08/Screen-Shot-2021-08-29-at-12.29.17-PM.png 1600w, https://blog.qoom.io/content/images/size/w2400/2021/08/Screen-Shot-2021-08-29-at-12.29.17-PM.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.qoom.io/content/images/2021/08/Screen-Shot-2021-08-29-at-12.29.08-PM.png" width="2000" height="1127" loading="lazy" alt="Using Qoom&apos;s Database for Mood-E" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/Screen-Shot-2021-08-29-at-12.29.08-PM.png 600w, https://blog.qoom.io/content/images/size/w1000/2021/08/Screen-Shot-2021-08-29-at-12.29.08-PM.png 1000w, https://blog.qoom.io/content/images/size/w1600/2021/08/Screen-Shot-2021-08-29-at-12.29.08-PM.png 1600w, https://blog.qoom.io/content/images/size/w2400/2021/08/Screen-Shot-2021-08-29-at-12.29.08-PM.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.qoom.io/content/images/2021/08/Screen-Shot-2021-08-29-at-12.31.11-PM.png" width="2000" height="1102" loading="lazy" alt="Using Qoom&apos;s Database for Mood-E" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/Screen-Shot-2021-08-29-at-12.31.11-PM.png 600w, https://blog.qoom.io/content/images/size/w1000/2021/08/Screen-Shot-2021-08-29-at-12.31.11-PM.png 1000w, https://blog.qoom.io/content/images/size/w1600/2021/08/Screen-Shot-2021-08-29-at-12.31.11-PM.png 1600w, https://blog.qoom.io/content/images/size/w2400/2021/08/Screen-Shot-2021-08-29-at-12.31.11-PM.png 2400w" sizes="(min-width: 720px) 720px"></div></div></div><figcaption>Mood-E&apos;s different web pages with the unique widgets</figcaption></figure><p><em>Week 6-8:</em></p><ul><li>implementing the QOOM database to store and redisplay the users input using save buttons with the help of our mentors at QOOM</li><li>published our webpage!<br></li></ul><p><strong>Qoom Database</strong></p><p><br>Using the database was the most challenging but easily the most rewarding aspect of our project. We were able to save each journal entry, mood of the day, water intake for each day and habits for each month using the Qoom user account database. Our journal + mood is saved together on one database, which is something we want to make a future improvement on - where we want to separate all the future journal entries under the date (Aug 27, 28, 29, etc). Our water tracker is saved each day, this is a super neat feature as when the clock strikes 12, the tracker resets and a new database is created simply by pressing the save button. Next the database for our habit tracker saves the habit + the number of days the habit has been maintained each month! We had no experience using databases up until this project so we&#x2019;re glad we got to learn about it through creating Mood-E!<br></p><p><strong>Final Thoughts</strong></p><p>Just like our first time, our experience during this cohort was amazing! We met new creators and our mentors were so patient and helpful. We truly couldn&#x2019;t have done it without them. As for the future, both of us hope to work together on some projects in University, outside of the Qoom Creator Group, while still, of course, using the Qoom software. <br></p>]]></content:encoded></item><item><title><![CDATA[MaskUp 😷]]></title><description><![CDATA[<h2 id="what-this-project-does-%F0%9F%8C%8E">What this project does &#x1F30E;</h2><p><a href="https://easybag98.qoom.space/~/MaskUp">MaskUp</a> is a web app that features both live and group mask detection, along with statistics describing daily detection rate. Here are some of MaskUp&apos;s features:</p><p><strong>Live Mask Detection</strong></p><figure class="kg-card kg-image-card"><img src="https://i.imgur.com/8oCAecc.png" class="kg-image" alt loading="lazy"></figure><p>MaskUp features live mask detection powered by Google&apos;s Teachable Machine. This ML</p>]]></description><link>https://blog.qoom.io/maskup/</link><guid isPermaLink="false">62f866614d267b147700a5a1</guid><category><![CDATA[Qoom Creator]]></category><dc:creator><![CDATA[Ganning Xu]]></dc:creator><pubDate>Wed, 01 Sep 2021 19:14:30 GMT</pubDate><media:content url="https://blog.qoom.io/content/images/2021/08/Screen-Shot-2021-08-17-at-9.08.59-PM.png" medium="image"/><content:encoded><![CDATA[<h2 id="what-this-project-does-%F0%9F%8C%8E">What this project does &#x1F30E;</h2><img src="https://blog.qoom.io/content/images/2021/08/Screen-Shot-2021-08-17-at-9.08.59-PM.png" alt="MaskUp &#x1F637;"><p><a href="https://easybag98.qoom.space/~/MaskUp">MaskUp</a> is a web app that features both live and group mask detection, along with statistics describing daily detection rate. Here are some of MaskUp&apos;s features:</p><p><strong>Live Mask Detection</strong></p><figure class="kg-card kg-image-card"><img src="https://i.imgur.com/8oCAecc.png" class="kg-image" alt="MaskUp &#x1F637;" loading="lazy"></figure><p>MaskUp features live mask detection powered by Google&apos;s Teachable Machine. This ML model was trained with 938 images from <a href="https://www.kaggle.com/">Kaggle</a>.</p><p><strong>Live Detection Statistics</strong></p><figure class="kg-card kg-image-card"><img src="https://i.imgur.com/VCd6aGS.png" class="kg-image" alt="MaskUp &#x1F637;" loading="lazy"></figure><p>Live detection statistics allows users to see a visualization of mask / no mask trends over time. Hovering over a data point shows you the exact value for that point.</p><p><strong>Live Covid-19 Cases</strong></p><figure class="kg-card kg-image-card"><img src="https://i.imgur.com/w5wSNj4.jpg" class="kg-image" alt="MaskUp &#x1F637;" loading="lazy"></figure><p>Using the Covid-19 API, the homepage of MaskUp automatically fetches the lastest number of cases and deaths, keeping people both informed and healthy!</p><p><strong>Vaccine Locator</strong></p><figure class="kg-card kg-image-card"><img src="https://i.imgur.com/lSvusYP.jpg" class="kg-image" alt="MaskUp &#x1F637;" loading="lazy"></figure><p>MaskUp&apos;s vaccine locator allows individuals to find a vaccine near them, allowing everyone to stay safe!</p><p><strong>Group Mask Detection</strong></p><figure class="kg-card kg-image-card"><img src="https://i.imgur.com/ws68MzC.jpg" class="kg-image" alt="MaskUp &#x1F637;" loading="lazy"></figure><p>Upload multiple pictures (with as many people in each), and you will be provided with a summary of each of their mask status. Users are also able to export group mask detection stats to a <code>.csv</code> file, for further analysis.</p><p><strong>Handwashing reminders</strong></p><figure class="kg-card kg-image-card"><img src="https://i.imgur.com/0uC4z0J.jpg" class="kg-image" alt="MaskUp &#x1F637;" loading="lazy"></figure><p>Constantly forgetting to wash your hands? <a href="https://easybag98.qoom.space/~/MaskUp/notified">Sign up</a> for texts to wash your hands every two hours!</p><p><strong>Symptom Tracker</strong></p><figure class="kg-card kg-image-card"><img src="https://i.imgur.com/ae5bpF0.jpg" class="kg-image" alt="MaskUp &#x1F637;" loading="lazy"></figure><p>Simply fill out a form, checking for which symptoms you are feeling, and MaskUp will tell you the percentage of being dangerous to others!</p><p><strong>Symptom Results</strong></p><figure class="kg-card kg-image-card"><img src="https://i.imgur.com/vpLdB5A.jpg" class="kg-image" alt="MaskUp &#x1F637;" loading="lazy"></figure><p>Check the results page to see a visualization of your past symptom responses, and which symptoms are affecting you the most. Users ca also export this to a <code>.csv</code> file for further analysis.</p><h2 id="why-this-project-is-useful-%F0%9F%93%88">Why this project is useful &#x1F4C8;</h2><p>187 million: the number of Covid-19 cases thus far. With Covid cases spiking because of the delta variant, masks are still essential for helping all of us stay safe, regardless of vaccination status.</p><p>As a result, MaskUp was created. With live and group mask detection, MaskUp could be used in public spaces worldwide in order to only allow entry to those who are wearing a face mask.</p><p>Whenever MaskUp detects that a user has a mask on, a webhook is sent to a custom URL, which could be used to open a door or gate.</p><p>This not only keeps us safe, but also helps flatten the novel coronavirus curve.</p><ul><li>Symptom reports are able to be exported and sent to medical providers.</li><li>Covid data visualizations help data scientists see the progress of Covid-19.</li></ul><h2 id="how-we-built-this-%F0%9F%94%A8">How we built this &#x1F528;</h2><ul><li>NodeJS</li><li>NPM Packages (Jimp, Twilio)</li><li>Google Teachable Machine</li><li>Qoom database</li><li><a href="https://covid19api.com/">Covid-19 API</a></li><li>Web Dev (HTML, CSS, Vanilla JS, Bootstrap)</li></ul><h2 id="key-lesssons-that-we-learned-%F0%9F%93%9A">Key lesssons that we learned &#x1F4DA;</h2><ul><li><strong>Doing what we are good at:</strong> MaskUp was our first time working together with a teammate to create a web application. This helped us both learn how to allow each person to complete the part of the project that they were stronger in. For example, Ganning is a better backend developer, so he focused on the NodeJS and Vanilla JS part of the project, while Elise helped design and prototype MaskUp on Figma.</li><li><strong>Login Systems:</strong> Using Qoom&apos;s account database to create MaskUp&apos;s login system showed us the true power of databases: the ability to store multi-session data about a user.</li><li><strong>NodeJS:</strong> MaskUp&apos;s group detection was created using NodeJS and Azure functions. Since I was completely new to JavaScript in general a few months ago, I&apos;ve learned a ton by using NodeJS in a real web app.</li><li>Writing <strong>maintainable code:</strong> During one of the creator meetings, Jared said that writing readable and maintainable code is one of the most important aspects of coding. This way, other programmers can easily read your code and contribute to it!</li></ul><h2 id="accomplishments-that-we-are-proud-of-%E2%AD%90">Accomplishments that we are proud of &#x2B50;</h2><ul><li>Getting the <strong>group mask detection</strong> working using NodeJS, Azure functions, and Jimp (npm package).</li><li>Being able to show <strong>data visualizations</strong>. This was my first time working with charts and graphs outside of Google Sheets and Microsoft Excel.</li><li>Using the Qoom <strong>login system</strong>. I&apos;ve never used a database storage system prior to this, and I implemented MaskUp&apos;s login system using Qoom&apos;s Account Database.</li><li>Doing <strong>live mask detection</strong> with Google Teachable Machine. Though it may seem simple, I never knew that machine learning could be done without knowing complex ml libraries such as <code>tensorflow</code> or <code>keras</code>. Google Teachable Machine will definitely be a resource that I will use in the future.</li></ul><h2 id="what-is-next-for-this-project-%F0%9F%93%B1">What is next for this project &#x1F4F1;</h2><p>In the future, MaskUp could be turned into a mobile app. A MaskUp app not only makes mask detection more convenient, but also eliminates techincal differences between computers. For example, some computers don&apos;t have a webcam, preventing users from utilizing MaskUp&apos;s live detection feature.</p>]]></content:encoded></item><item><title><![CDATA[The Creation of Qoomboard]]></title><description><![CDATA[<p><em>The journey of creating QoomBoard, as being a part of the Qoom Creator Group with Leyna and Liya.</em></p><p> &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; ______________________</p><p>The time I had joined a new group with entirely</p>]]></description><link>https://blog.qoom.io/the-creation-of-qoomboard/</link><guid isPermaLink="false">62f866614d267b147700a5aa</guid><category><![CDATA[Qoom Creator]]></category><dc:creator><![CDATA[Leyna Huynh]]></dc:creator><pubDate>Wed, 01 Sep 2021 19:01:15 GMT</pubDate><media:content url="https://blog.qoom.io/content/images/2021/09/Screen-Shot-2021-08-29-at-10.45.19-PM.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.qoom.io/content/images/2021/09/Screen-Shot-2021-08-29-at-10.45.19-PM.png" alt="The Creation of Qoomboard"><p><em>The journey of creating QoomBoard, as being a part of the Qoom Creator Group with Leyna and Liya.</em></p><p> &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; ______________________</p><p>The time I had joined a new group with entirely new people I&#x2019;ve never met before. We had no high expectations for each other except for sharing one goal: finishing the project before the deadline. The project consisted of many parts that had to be split among the group, so we started with a shared Google document. Time was short and it was the most efficient answer at the moment. We spent hours planning, coding, and reviewing the project for straight hours and barely getting the rest we needed. Thus, inspired our project Qoomboard.</p><p>Qoomboard is inspired by the combination of Kanban Boards (Trello) and various productivity platforms. Qoombaord is a collaborative productivity platform for a team of developers to optimize their time spent on coding. Many developers go through the struggle of working straight hours, without taking a break, which does more harm than good. Qoomboard has two key features: the collaborative Kanban Board to keep track of tasks assigned to each member in a more organized way and a pomodoro timer that helps keep an individual stay on track, maximizing their focus during pomodoro mode and providing a break, when necessary.<br></p><p>One of the biggest struggles we encountered while working with our project was working with the kanban board and being able to add cards, while being able to save it within the user&#x2019;s account. For weeks, the cards would show up in the wrong category or they would disappear after the page was refreshed. Only the board and editing the cards was functioning at the moment and we would have to adjust small changes each week. After the introduction of Qoom&#x2019;s databases during the tech talk, we found the solution to our problem.</p><p>The Account Database system, provided by Qoom, was the everything we needed to have our kanban board to start functioning fully. The combination of using the database and JavaScript Plugin that interfaced with the database (plus the help of Qoom office hours!), allowed the kanban function the way we wanted with the interchangeable cards to assign each member and which category it belonged to. In addition, the data was able to be saved to its assigned account the user has logged into, allowing them or their teammates to continue their progress anytime. </p><p></p><p>Check out Qoomboard!: </p><p></p>]]></content:encoded></item><item><title><![CDATA[Space Arcade: a collection of online games]]></title><description><![CDATA[<p><strong>Introduction: </strong>Hello! Our names are John and Evan and we have now completed two sessions of the Qoom creator group. During our first session in the winter we created our first game &apos;Space Race&apos; and an account system using Javascript, HTML5 and CSS. During our second session this</p>]]></description><link>https://blog.qoom.io/space-arcade/</link><guid isPermaLink="false">62f866614d267b147700a5ae</guid><category><![CDATA[Qoom Creator]]></category><dc:creator><![CDATA[John Burtt]]></dc:creator><pubDate>Wed, 01 Sep 2021 18:58:44 GMT</pubDate><media:content url="https://blog.qoom.io/content/images/2021/08/image-3-2.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.qoom.io/content/images/2021/08/image-3-2.png" alt="Space Arcade: a collection of online games"><p><strong>Introduction: </strong>Hello! Our names are John and Evan and we have now completed two sessions of the Qoom creator group. During our first session in the winter we created our first game &apos;Space Race&apos; and an account system using Javascript, HTML5 and CSS. During our second session this summer we expanded our original project to include two additional games &apos;HOT!&apos; and &apos;Zapped&apos;, as well as creating a shop page where users can purchase cosmetics using a currency earned through playing our games called &apos;Space Dollars&apos;. </p><p><strong>Our Inspiration: </strong>The inspiration for our original game &apos;Space Race&apos; came from the classic Atari arcade game with the same name. Our other games &apos;HOT!&apos; and &apos;Zapped&apos; however, are completely original ideas for which we had no inspiration for. </p><p><strong>Notable Features: </strong>There are several features of our arcade that we think makes it stand out and different from other web based games. </p><p>	The first of which being a &apos;News&apos; page, which is basically a page on the start screen where we updated players on the progress of the development of our project through the summer. What made us do this was that whenever we played other games, we always thought it was a nice touch when the developers would keep the players in the loop in terms of development or upcoming new features. This &apos;News&apos; page also served as a record of our progression which helped for giving our weekly update at our Qoom Creator Group meetings. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.qoom.io/content/images/2021/08/image-4.png" class="kg-image" alt="Space Arcade: a collection of online games" loading="lazy" width="883" height="580" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/image-4.png 600w, https://blog.qoom.io/content/images/2021/08/image-4.png 883w" sizes="(min-width: 720px) 720px"><figcaption>A screenshot of the &apos;News&apos; page</figcaption></figure><p>	Another feature of our arcade that we think will make players want to keep on returning to our game is the &apos;Shop&apos; page. Having a currency that players can earn through playing and then spend on a shop is a sure-fire way to make sure people will keep playing your game because they are incentivized by the items in the shop. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.qoom.io/content/images/2021/08/image-5.png" class="kg-image" alt="Space Arcade: a collection of online games" loading="lazy" width="697" height="754" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/image-5.png 600w, https://blog.qoom.io/content/images/2021/08/image-5.png 697w"><figcaption>A screenshot of the &apos;Shop&apos; page</figcaption></figure><p>	Finally, a feature that we think makes the games themselves more fun is how it gets progressively more difficult the higher your score. The code for this can be seen below. In our &apos;Space Race&apos; game for example, the higher your score, the higher the number of space debris will spawn and the faster these debris will be moving. We think this makes the games more exciting and that it adds an increasing amount of intensity as your score gets higher. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.qoom.io/content/images/2021/08/image-6.png" class="kg-image" alt="Space Arcade: a collection of online games" loading="lazy" width="939" height="373" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/image-6.png 600w, https://blog.qoom.io/content/images/2021/08/image-6.png 939w" sizes="(min-width: 720px) 720px"><figcaption>A screenshot of the code that controls the difficulty of &apos;Space Race&apos;&#xA0;</figcaption></figure><p><strong>Final Thoughts:</strong></p><p>We&apos;ve both always been really into video games, so the chance to create one was a really fun experience that gave us a new sense of respect for game developers. </p><p>Check out our project here: </p><p><a href="https://easytrain70.qoom.space/~/projects/Space_Arcade">https://easytrain70.qoom.space/~/projects/Space_Arcade</a></p>]]></content:encoded></item><item><title><![CDATA[Project Design Process with Qoom]]></title><description><![CDATA[<h2 id="getting-started-seeking-a-problem">Getting Started: Seeking a problem- </h2><p>	Finding a problem is similar to what songwriters feel when writing a song. &#xA0;Songwriters tend to write what they&apos;re passionate about either from personal experience or from what they think others&apos; perspective is. The same goes for finding a problem, think</p>]]></description><link>https://blog.qoom.io/project-design-process-with-qoom/</link><guid isPermaLink="false">62f866614d267b147700a5a6</guid><category><![CDATA[Qoom Creator]]></category><dc:creator><![CDATA[Amelia Catalá]]></dc:creator><pubDate>Sat, 28 Aug 2021 23:13:00 GMT</pubDate><media:content url="https://blog.qoom.io/content/images/2021/08/pp-1.jpg" medium="image"/><content:encoded><![CDATA[<h2 id="getting-started-seeking-a-problem">Getting Started: Seeking a problem- </h2><img src="https://blog.qoom.io/content/images/2021/08/pp-1.jpg" alt="Project Design Process with Qoom"><p>	Finding a problem is similar to what songwriters feel when writing a song. &#xA0;Songwriters tend to write what they&apos;re passionate about either from personal experience or from what they think others&apos; perspective is. The same goes for finding a problem, think about anything you have struggled with or seen people struggle with. Make a list of all those struggles you have seen. After listing you should research each problem. See if the problem is already being addressed and how. Look for the people who will be impacted by your project.</p><h2 id="brainstorming-a-solution">Brainstorming a solution - </h2><p>	When brainstorming solutions, think of what you would like to have if you had that problem. You can also ask people who have that problem what kind of solution would help them. However, make sure that your idea is unique and if it isn&#x2019;t, what additional features would make it unique. For example, there are many to-do list apps out there, but you might decide to make a to-do list app that also has a feature for assigning tasks to teammates. This will help it stand out from other apps and be more useful.</p><p>	To help students keep track of their volunteer hours, we brainstormed a volunteer hours tracker so students can easily add their volunteer hours to a table. We decided that students would need to input the organization, tasks completed, date, entrance hour, and departure hour. We also decided to include a spot for uploading a signature and a canvas for an organizer to sign off on the volunteer hours. Originally, we also wanted to add features for finding volunteer opportunities and communicating with other volunteers, but we ended up deciding to simplify it to just the volunteer hours tracker since that is the most useful and unique feature.</p><h2 id="designing-a-wireframe">Designing a Wireframe- </h2><p>	Wireframes are commonly used to lay out the content and functionality of the website. It gives you a clear idea of what you or your team is looking for. They&#x2019;re immensely essential in the early development process since they serve as a guide when you start coding your project. Some popular websites that can help you create a wireframe are using Figma, Canva, and Invision Studio. <br></p><p>	A big issue you should consider is not overdoing your wireframe. What we mean by that is to cut down to only 1 or 2 features. Doing wireframes is way easier than coding the project. For example, if you&#x2019;re competing on a hackathon and overdid your wireframe, there&#x2019;s a high chance you will not be able to complete everything. This concept is known as identifying your MVP (Minimum Viable Product). MVP is a development technique in which a product is introduced with basic features, but enough to get the attention of the consumers. You can identify your MVP by reanalyzing your problem and thinking about what feature will best solve your problem.</p><h2 id="using-qoom%E2%80%99s-database-system">Using Qoom&#x2019;s Database system - </h2><p>	A database is a structure that holds, you guessed it, data. Qoom has both an account database that you have to log in to use and an open database that anyone can access. Since volunteer hours belong to only one person, we used an account database to connect the volunteer hours to the user. In our database, we stored the organization, tasks completed, date, entrance hour, departure hour, signature, and certificate from the form that the user would fill out. We displayed the user&#x2019;s data in a table and added buttons for editing and deleting hours. There were some difficulties in displaying thumbnails for the signature and certificate as well as editing and deleting hours since we were unfamiliar with Qoom&#x2019;s database system but we were able to solve them with help. When using a database system or other framework that you are not familiar with, try to ask others for help or research online for solutions to your problem.</p><hr><p>Amelia and Grace built a volunteer hour management system, <strong>Volunteerly</strong>. Check this link! <a href="https://shrillcalf71.qoom.space/~/Volunteerly/index">https://shrillcalf71.qoom.space/~/Volunteerly/index</a></p>]]></content:encoded></item><item><title><![CDATA[3 Simple Steps to Use Speech-to-Text in your Website!]]></title><description><![CDATA[Do you ever want to implement speech to text? This cool feature holds an unlimited possibility. From voice commands, quick writing tool, to helping people who struggle with writing. You can implement this feature in your next Qoom website with just  3 simple steps! Ready? Here we go:]]></description><link>https://blog.qoom.io/speech-to-text/</link><guid isPermaLink="false">62f866614d267b147700a5a5</guid><category><![CDATA[Qoom Creator]]></category><dc:creator><![CDATA[Cyra Alesha]]></dc:creator><pubDate>Wed, 25 Aug 2021 18:16:00 GMT</pubDate><media:content url="https://blog.qoom.io/content/images/2021/08/Speech-to-Text-in-3-Simple-Steps.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.qoom.io/content/images/2021/08/Speech-to-Text-in-3-Simple-Steps.png" alt="3 Simple Steps to Use Speech-to-Text in your Website!"><p>Do you ever want to implement speech to text? This cool feature holds an <strong>unlimited</strong> possibility. From <strong>voice commands</strong>, <strong>quick writing tool</strong>, to helping people who <strong>struggle with writing</strong>. You can implement this feature in your next Qoom website with just &#xA0;3 <strong>simple</strong> steps! Ready? Here we go:</p><h2 id="create-a-new-html-css-javascript-project">Create a new HTML, CSS, Javascript Project</h2><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.qoom.io/content/images/2021/08/Screen-Shot-2021-08-25-at-20.57.39.png" class="kg-image" alt="3 Simple Steps to Use Speech-to-Text in your Website!" loading="lazy" width="1585" height="840" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/Screen-Shot-2021-08-25-at-20.57.39.png 600w, https://blog.qoom.io/content/images/size/w1000/2021/08/Screen-Shot-2021-08-25-at-20.57.39.png 1000w, https://blog.qoom.io/content/images/2021/08/Screen-Shot-2021-08-25-at-20.57.39.png 1585w" sizes="(min-width: 720px) 720px"><figcaption>Qoom Dashboard</figcaption></figure><p>Open your Qoom Coding Space and select <strong>&quot;New Project&quot;</strong>, this will automatically create a new HTML, CSS, and JS project all in your browser!</p><h2 id="write-the-html-code-for-the-buttons-and-result">Write the HTML Code for the buttons and result</h2><p></p><pre><code>&lt;main&gt;
	   &lt;!-- Result is the output of the speech to text --&gt;
       &lt;div id=&quot;result&quot;&gt;&lt;/div&gt;
       
       &lt;!-- To set up the start recording button --&gt;
       &lt;div class=&quot;buttons&quot;&gt;
       &lt;button id=&quot;button&quot; class=&quot;startbutton&quot;&gt;Start Recording&lt;/button
       &lt;/div&gt;
       
       &lt;!-- Error Message --&gt;
       &lt;p id=&quot;message&quot; hidden aria-hidden=&quot;true&quot;&gt;
        Your browser doesn&apos;t support Speech Recognition. Sorry.
       &lt;/p&gt;
       &lt;/div&gt;
&lt;/main&gt;</code></pre><p>Enter the following code in your HTML File. The div &quot;result&quot; is the container for the output of the speech to text, the button to start the recording, and lastly an error message for browsers that don&apos;t support Speech Recognition!</p><h2 id="use-webkit-speech-recognizer">Use Webkit Speech Recognizer</h2><p>This is one of the <strong>easiest</strong> speech to text to implement, and its <strong>100% free!</strong> All you need to do is add this set of codes in your<strong> javascript</strong> file, or in your HTML file in between &lt;script&gt;&lt;/script&gt;.</p><pre><code>window.addEventListener(&quot;DOMContentLoaded&quot;, () =&gt; {
        const button = document.getElementById(&quot;button&quot;);
        const result = document.getElementById(&quot;result&quot;);
        const main = document.getElementsByTagName(&quot;main&quot;)[0];
        let listening = false;
        const SpeechRecognition =
          window.SpeechRecognition || window.webkitSpeechRecognition;
        if (typeof SpeechRecognition !== &quot;undefined&quot;) {
          const recognition = new SpeechRecognition();

          const stop = () =&gt; {
            main.classList.remove(&quot;speaking&quot;);
            recognition.stop();
            button.textContent = &quot;Start listening&quot;;
            clearInterval(countWpm);
          };

          const start = () =&gt; {
            main.classList.add(&quot;speaking&quot;);
            recognition.start();
            button.textContent = &quot;Stop listening&quot;;
            setInterval(countWpm, 10000);
          };

          const onResult = event =&gt; {
            result.innerHTML = &quot;&quot;;
            for (const res of event.results) {
              const text = document.createTextNode(res[0].transcript);
              const p = document.createElement(&quot;p&quot;);
              p.id = &apos;speechResult&apos;
              if (res.isFinal) {
                p.classList.add(&quot;final&quot;);
              }
              p.appendChild(text);
              result.appendChild(p);
            }
          };
          recognition.continuous = true;
          recognition.interimResults = true;
          recognition.addEventListener(&quot;result&quot;, onResult);
          button.addEventListener(&quot;click&quot;, event =&gt; {
            listening ? stop() : start();
            listening = !listening;
          });
        } else {
          button.remove();
          const message = document.getElementById(&quot;message&quot;);
          message.removeAttribute(&quot;hidden&quot;);
          message.setAttribute(&quot;aria-hidden&quot;, &quot;false&quot;);
        }
      });</code></pre><p>Its pretty self explanatory, so feel free to read the code to understand about the webkit more and improve it by adding your own twist!</p><h2 id="optional-style-your-buttons-and-output">(Optional) Style your buttons and Output</h2><p>If you haven&apos;t style your buttons it might look something like this. </p><figure class="kg-card kg-image-card"><img src="https://blog.qoom.io/content/images/2021/08/Screen-Shot-2021-08-26-at-01.01.47.png" class="kg-image" alt="3 Simple Steps to Use Speech-to-Text in your Website!" loading="lazy" width="442" height="180"></figure><p>Boring right, and its extremely small. So emerge your creativity and style it up! For example this is one of the projects you can do with text to speech.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.qoom.io/content/images/2021/08/Screen-Shot-2021-08-26-at-01.03.17.png" class="kg-image" alt="3 Simple Steps to Use Speech-to-Text in your Website!" loading="lazy" width="1920" height="633" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/Screen-Shot-2021-08-26-at-01.03.17.png 600w, https://blog.qoom.io/content/images/size/w1000/2021/08/Screen-Shot-2021-08-26-at-01.03.17.png 1000w, https://blog.qoom.io/content/images/size/w1600/2021/08/Screen-Shot-2021-08-26-at-01.03.17.png 1600w, https://blog.qoom.io/content/images/2021/08/Screen-Shot-2021-08-26-at-01.03.17.png 1920w" sizes="(min-width: 720px) 720px"><figcaption>Record Notes</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.qoom.io/content/images/2021/08/Screen-Shot-2021-08-26-at-11.05.36.png" class="kg-image" alt="3 Simple Steps to Use Speech-to-Text in your Website!" loading="lazy" width="1920" height="1024" srcset="https://blog.qoom.io/content/images/size/w600/2021/08/Screen-Shot-2021-08-26-at-11.05.36.png 600w, https://blog.qoom.io/content/images/size/w1000/2021/08/Screen-Shot-2021-08-26-at-11.05.36.png 1000w, https://blog.qoom.io/content/images/size/w1600/2021/08/Screen-Shot-2021-08-26-at-11.05.36.png 1600w, https://blog.qoom.io/content/images/2021/08/Screen-Shot-2021-08-26-at-11.05.36.png 1920w" sizes="(min-width: 720px) 720px"><figcaption>Intera&apos;s Interview Practice that we created during Qoom&apos;s Creator Summer Program</figcaption></figure><p>Hopefully this short tutorial can help you to include a fun feature in your next project! </p>]]></content:encoded></item></channel></rss>