Is CO2 Polar or Nonpolar?

Answer: CO2 is a nonpolar molecule because the charges on either side of the molecule (180˚ apart) balance each other out. 

CO2 Ball and Stick Model
CO2 Ball and Stick Model. Created with Avagadro 1.2.

Although the bonds between carbon and oxygen are polar covalent (since the difference in electronegativity is greater than .5), the bonds cancel out the pull on carbons electrons due to the linear structure. Therefore there is no region of the electron that has either more positive or negative charge. If you are interested in learning more about the structure of CO2, feel free to check out this article on the lewis structure for CO2.

Why is CO2 so important?


Carbon Cycle
Source
Carbon participates in many critical processes such as photosynthesis, thereby traveling the globe mainly through the carbon cycle. By providing a source of carbon to autotrophs (i.e. photosynthesizing organisms), CO2 allows them to continue building organic material critical to the survival of all other ecosystems. 

ALIRA Unofficial Practice Test 2

The ALIRA Test is a reading comprehension test for Latin with a variety of passages ranging from historical narratives to modern articles. Scores are measured on a range from N1-5 to A with I1-5 in between. You can see a sample score report here. The Language Testing International Organization has released a practice exam, available here. This practice exam is based on the structure of the official sample test, providing those interested with unofficial materials to study with. The questions generally increase in difficulty as you move through the texts and are taken from a wide range of sources. Currently, there is no way to assess the level of each question, but generally the first questions are equivalent to novice levels and the final questions are equivalent to the intermediate levels. Good Luck!

The Phormio of Terence
Source: The Phormio of Terence

What relationship is portrayed here?
A.) Father - Son
B.) Young Man - Slave
C.) Old Man - Slave
D.) Merchant - Consumer

“Postquam Romani expulerunt Tarquinium helium habuerunt. Tarquinius enim Etruscus fuit. Ergo Etrusci venerunt ad bellum cum Romanis.”

Source: Latin by the Natural Method, William G. Most

Why did the Etruscan’s wage war with the Romans?
A.) Glory, Land and Honor
B.) Tarquinius became King of the Romans
C.) The Romans expelled Tarquinius 
D.) The Romans rebelled from colonial rule.

Grammar Passage
Source: Lingua Latīna Per Sē Illūstrāta Pars I: Familia Rōmāna

Which of these is a interiectio?
A.) Towards the castle
B.) Alas!
C.) Bob goes to the store
D.) Running through the hills

Wikipedia Croation Election
Source: Latin Wikipedia

To what position was Zoran Milanovic elected to?
A.) Prime Minister of Croatia 
B.) Chief of Interpol 
C.) President of Croatia 
D.) He was not elected to any position. 

Gladiator Passage
Who owns the gladiators?
A.) The Lanista
B.) The Magister
C.) The Editor
D.) The Fame

“Philosophiae servias oportet, ut tibi contingat vera libertas. Haec sunt uerba Senecae, octaua epistola ad Lucillum: quia uocari philosophiam scientiam ueritatis recte se habet ex secundometaphysicae, et philosophia affert delectationes mirabiles firmitate et puritate, ex decimo Ethicorum.” - Thomas Aquinas, XPOSITIO IN BOETHII DE CONSOLATIONE PHILOSOPHIAE

Who said the words: “You must engage in philosophy to find true freedom”?
A.) Aquinas
B.) Seneca
C.) Lucillus
D.) Ethicorus

“Multos dies Titus in lecto iacebat. Primo convalescere videbatur; mox tamen fiebat infirmior, nam in febrem subito inciderat. In dies morbus ingravescebat”

What is happening to Titus?

A.) He is getting wealthier
B.) His illness is getting worse
C.) His fortunes are decreasing
D.) His chairs are getting less comfortable

De Rerum Natura Passage
Source: De Rerum Natura, Selected Passages
Hieronymus writes that Titus Lucretius killed himself in the year
A.) 66
B.) 46
C.) 44
D.) 64

Tum Mānlius ōrātor animōs populī ita cōnfīrmāvit:—“Magnam calamitātem accēpimus. Oppida nostra ā Cimbrīs Teutonibusque capiuntur, agricolae interficiuntur, agrī vāstantur, cōpiae barbarōrum Rōmae adpropinquant. Itaque, nisi novīs animīs proelium novum faciēmus et Germānōs ex patriā nostrā sine morā agēmus, erit nūlla salūs fēminīs nostrīs līberīsque. Servāte līberōs! Servāte patriam! Anteā superātī sumus quia imperātōrēs nostrī fuērunt īnfīrmī. Nunc Marius, clārus imperātor, quī iam multās aliās victōriās reportāvit, legiōnēs dūcet et animōs nostrōs terrōre Cimbricō līberāre mātūrābit.”

Source: Latin for Beginners by Benjamin L. D'Ooge

Who does the speaker recommend as a savior for the republic?
A.) Manlius
B.) The King
C.) The People
D.) Marius

“Postridie corpus Titi summo honore elatum est. Praecedebant tibicines, tubicines, cornicines. In pompa erant viri taedas tenentes, mulieres nenias cantantes, actores imagines et vestimenta maiorum gerentes, mimi, lictores, fasces ferentes, familiares, amici plorantes. “      

What was not present during the event?

A.) Grieving Family Members
B.) Actors in his likeness
C.) Mimes 
D.) Political Figures      

“Sed prior effigiem tribuit successus aënam, // oraque patricius nostra dicavit honos; // adnuit hic princeps titulum poscente senatu; // respice iudicium quam grave, Musa, subis! // ingenio minuit merces properata favorem: // carminibus veniam praemia tanta negant; // et magis intento studium censore laborat, // quod legimur medio conspicimurque foro.” - Claudian, De Bello Gothico

What is described in the passage?
A.) The consequences of a great honor being bestowed upon the poet
B.) The debates of the great fathers on the expediency of the Gothic Wars
C.) A religious ceremony involving prayer to the Muses before a battle scene
D.) The challenges present within the life of a lower-class Roman citizen

Answer Key (place your cursor over the text to highlight/reveal the key):
1.) B 2.) C 3.) B 4.) C 5.) A 6.) B 7.) B 8.) C 9.) D 10.) D 11.) A

Probability Distribution Example [w/ the NYC Tree Census]

Probability distributions take samples from a population, calculating the proportions of a certain item within each sample in order to estimate the parameter proportion. The parameter proportion is defined to be the actual proportion within the sample. The sample size of the amount of samples you take from the population for each collection of items (for your estimate) has a significant impact on your ability to predict the proportion. This can be demonstrated with a simple computer simulation.

London Planetree. Source

According to the 2015 NYC Tree Census, the most popular tree is the London planetree with 87014 member out of a total of 683788 total individual trees. This means our true parameter is 12.7%. In order to better estimate the figure from our proportion distribution, we will need to essentially make sure our probability distribution is normal.


This is accomplished via the normality test which states that: n*p >= 10 && n*(1-p) >= 10

where n is the sample size and p is the true proportion (parameter). If you aren't sure what p is, you will eventually reach a normal curve by increasing the sample size and re-running your simulation. You will also want to make sure that you are drawing samples from the same population each time you draw a sample (maintaining independence).

This principle is at work in the following example with the London planetrees:

Proportion of the London Planetree in the 2015 NYC Tree Census (n=5)

Since 5*.127 is not greater than ten, this simulation produces a graph that lacks normality.

Proportion of London Planetree in the 2015 NYC Tree Census (n=20)

Although 20*.127 is still not greater than ten, this simulation produces a graph that is closer to normal and less skewed than the previous example. This indicates that we are closer to achieving to our goal as we increase sample size. 

Proportion of London Planetree in the 2015 NYC Tree Census (n=200)

Since 200*.127>10, the condition for normality has been reached and we can form better estimates for the actual parameter proportion. 

Bonus Graphs (Sample Proportions for the 1995 and 2005 Census):

Proportion of London Planetree in the 2005 NYC Tree Census (n=200)

Proportion of London Planetree in the 1995 NYC Tree Census (n=200)
Feel free to remix the code with the three different datasets to try out these simulations for yourself (i.e. utilizing simulations for probability distributions).

Program Code


import pandas as pd
import matplotlib.pyplot as plt
from collections import Counter 
import numpy as np
from numpy.random import choice

def getKey(item):
    return item[1]

def main():
    treeStuff = pd.read_csv("new_york_tree_census_2015.csv")
    treeSpecies = list(treeStuff["spc_common"])
    treeSpeciesCombined = Counter(treeSpecies)
    j = sorted(treeSpeciesCombined.items(),key=getKey)
    treeSpecies2 = []
    treeCount = []
    for i in j:
        i = list(i)
        if (isinstance(i[0],float)):
            i[0] = "Unknown"
        treeSpecies2.append(i[0])
        treeCount.append(i[1])
    counts = []
    for k in range(0,1000):
        draw = choice(treeSpecies2, 200, p = [x / float(sum(treeCount)) for x in treeCount]) # where you set sample size
        count = sum(np.char.count(draw,sub="London planetree"))
        counts.append(count/float(len(draw)))
    probabilities = Counter(counts)
    l = sorted(probabilities.items())
    probCategories = []
    probValues = []
    for r in l:
        r = list(r)
        probCategories.append(r[0])
        probValues.append(r[1])
    x_pos = [e for e, _ in enumerate(probCategories)]
    plt.xticks(x_pos, probCategories,rotation='vertical')
    plt.xlabel("Proportion of London Planetree in a Sample")
    plt.ylabel("Number of Samples")
    plt.title("1000 Simple Random Sample's from 2015 NY Tree Census (n=200)")
    plt.bar(x_pos,probValues)
    plt.show()
    
main()

Data Source: See this file on Kaggle for the NYC Tree Census Data. 

Creating an Online Repository of Searchable Scratch Forum Data (Process + Results)

Challenge


Currently the Scratch Forums does not have a functional search bar that permits users to filter through the metadata associated with the different threads.

"Search 'Results' Appearing as a Blank Table"
Users may be interested in such a feature in order to find historical tutorials/helpful posts on certain subjects, examine the contributions of other Scratchers, and find inspiration for their own projects. This project aims to provide a means for individuals to accomplish this task easily and effectively.

Process

The data from the forums is imported as raw HTML and processed via the beautifulsoup library.  Once the relevant information is extracted, it is placed into a sqlite3 database. This was published to a heroku web applet via the datasette JavaScript Library.

Results


The final product is located at this web address. The metadata is separated into tables representing all thirty-six public forums. You can search each of the columns with a variety of boolean operators and download processed data in a JSON or CSV file format.

Future Steps 

  • Updating Script - figure out a way to dynamically update the web page automatically on a regular basis. 
  • No manual extraction of data - currently the script requires that you supply the number of pages for a given forum. This process could be automated within the program in the future. 

Code - Python


# coding=utf-8

"""
Definition: Scratch Discussion Forum Database Generator
"""

from bs4 import BeautifulSoup

import requests

import sqlite3

def extractData(numberOfPages,forumID,conn,c,forum):
    
    for j in range(1,numberOfPages+1):
        
        while True:  
            r  = requests.get("https://scratch.mit.edu/discuss/" + str(forumID) + "/?page=" + str(j))
            if (r.status_code == 200):
                break
            
        data = r.text
            
        soup = BeautifulSoup(data, 'lxml')             
        
        soup = soup.find(id="pagewrapper")
    
        soup = soup.find(id = "content")
    
        soup = soup.find(id = "vf")

        soup = soup.div
         
        soup = soup.find("div", {"class": "box-content"})
           
        soup = soup.contents[1]
    
        soup = soup.contents[3]
    
        while (soup.contents.count(u'\n')): 
            soup.contents.remove(u'\n')
    
        for i in range(0,len(soup.contents)):
            newSoup = soup.contents[i]
            if (newSoup.find("div", {"class" : "isticky"}) == None): # Q: Is the topic stickied?
                stickied = "No"
            else:
                stickied = "Yes"
            if (newSoup.find("div", {"class": "iclosed"}) == None): # Q: Is the topic open or closed?
                closed = "No"
            else:
                closed = "Yes"
            latestTimeStamp = newSoup.find("td", {"class": "tcr"}).a.string #Latest Post Timestamp
            if ("Today" in latestTimeStamp):
                latestTimeStamp = latestTimeStamp.replace("Today","Dec. 23, 2019") #replace with today's date
            if ("Yesterday" in latestTimeStamp):
                latestTimeStamp = latestTimeStamp.replace("Yesterday","Dec. 22, 2019") #replace with yesterday's date
            topicTitle = newSoup.find("h3", {"class": "topic_isread"}).string #Title of the Topic 
            topicAuthor = newSoup.find("span", {"class": "byuser"}).string[3:] #Author of the Topic
            topicLink = "https://scratch.mit.edu" + newSoup.find("h3", {"class": "topic_isread"}).a['href'] # Link to the topic
            numberOfReplies = newSoup.find("td", {"class": "tc2"}).string # Number of Replies
            numberOfViews = newSoup.find("td", {"class": "tc3"}).string # Number of Views
            latestPostLink = "https://scratch.mit.edu" + newSoup.find("td", {"class": "tcr"}).a['href'] #Latest Post Link
            latestPostAuthor = newSoup.find("td", {"class": "tcr"}).find("span", {"class":"byuser"}).string[3:] #Latest Post Author
            #insert = "(" + "'" + stickied + "'" + "," + "'" + closed + "'" + "," + "'" + topicTitle + "'" + "," + "'" + topicAuthor + "'" + "," + "'" + topicLink + "'" + "," + numberOfReplies + "," + numberOfViews + "," + "'" + latestPostLink + "'" + "," + "'" + latestTimeStamp + "'" + "," + "'" + latestPostAuthor + "'" + ")" 
            c.execute("INSERT INTO " + forum + " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",(stickied, closed, topicTitle, topicAuthor, topicLink, numberOfReplies, numberOfViews, latestPostLink, latestTimeStamp, latestPostAuthor))            
            
        conn.commit()
        
        print(j)

def main(): 
    
    conn = sqlite3.connect('scratchForumPosts.db')
    
    c = conn.cursor()
    
    c.execute('''CREATE TABLE announcements(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 
    
    # FORMAT: (Number of Pages, Forum ID, SQLite Database Var., SQLite Database Cursor Var., Forum Database Storage Table Name)
    
    extractData(11,5,conn,c,"announcements") # Announcements Forum
    
    c.execute('''CREATE TABLE newScratchers(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(316,6,conn,c,"newScratchers") # New Scratchers Forum
    
    c.execute('''CREATE TABLE helpWithScripts(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(1913,7,conn,c,"helpWithScripts") # Help With Scripts Forum

    c.execute('''CREATE TABLE showAndTell(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(2458,8,conn,c,"showAndTell") # Show and Tell Forum
    
    c.execute('''CREATE TABLE projectIdeas(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(325,9,conn,c,"projectIdeas") # Project Ideas Forum
    
    c.execute('''CREATE TABLE collaboration(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(612,10,conn,c,"collaboration") # Collaboration Forum
    
    c.execute('''CREATE TABLE requests(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(571,11,conn,c,"requests") # Requests Forum
    
    c.execute('''CREATE TABLE questionsAboutScratch(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(1199,4,conn,c,"questionsAboutScratch") # Questions About Scratch Forum
    
    c.execute('''CREATE TABLE suggestions(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(943,1,conn,c,"suggestions") # Suggestions Forum
    
    c.execute('''CREATE TABLE bugsAndGlitches(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''')

    extractData(1023,3,conn,c,"bugsAndGlitches") # Bug and Glitches Forum
    
    c.execute('''CREATE TABLE advancedTopics(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(185,31,conn,c,"advancedTopics") # Advanced Topics Forum
    
    c.execute('''CREATE TABLE connectingToThePhysicalWorld(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(28,32,conn,c,"connectingToThePhysicalWorld") # Connecting to the Physical World Forum
    
    c.execute('''CREATE TABLE developingScratchExtensions(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''')  

    extractData(16,48,conn,c,"developingScratchExtensions") # Developing Scratch Extensions Forum
    
    c.execute('''CREATE TABLE openSourceProjects(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(7,49,conn,c,"openSourceProjects") # Open Source Projects Forum
    
    c.execute('''CREATE TABLE thingsIAmMakingAndCreating(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(284,29,conn,c,"thingsIAmMakingAndCreating") # Things I'm Making and Creating Forum
    
    c.execute('''CREATE TABLE thingsIAmReadingAndPlaying(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(385,30,conn,c,"thingsIAmReadingAndPlaying") # Things I'm Reading and Playing Forum
    
    c.execute('''CREATE TABLE africa(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(1,55,conn,c,"africa") # Africa Forum
    
    c.execute('''CREATE TABLE bahasaIndonesia(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(2,36,conn,c,"bahasaIndonesia") # Bahasa Indonesia Forum
    
    c.execute('''CREATE TABLE català(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''')  

    extractData(2,33,conn,c,"català") # Català Forum
    
    c.execute('''CREATE TABLE deutsch(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(48,13,conn,c,"deutsch") # Deutsch Forum
    
    c.execute('''CREATE TABLE ελληνικά(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(7,26,conn,c,"ελληνικά") # Ελληνικά Forum
    
    c.execute('''CREATE TABLE español(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(45,14,conn,c,"español") # Español Forum
    
    c.execute('''CREATE TABLE français(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(152,15,conn,c,"français") # Français Forum
    
    c.execute('''CREATE TABLE עברית(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(3,22,conn,c,"עברית") # Hebrew Forum 
        
    c.execute('''CREATE TABLE 한국어(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(81,23,conn,c,"한국어") # 한국어 Forum
    
    c.execute('''CREATE TABLE italiano(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(35,21,conn,c,"italiano") # Italiano Forum
    
    c.execute('''CREATE TABLE nederlands(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(15,19,conn,c,"nederlands") # Nederlands Forum
    
    c.execute('''CREATE TABLE 日本語(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(117,18,conn,c,"日本語") # 日本語 Forum
    
    c.execute('''CREATE TABLE norsk(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(1,24,conn,c,"norsk") # Norsk Forum
    
    c.execute('''CREATE TABLE polski(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(56,17,conn,c,"polski") # Polski Forum
    
    c.execute('''CREATE TABLE português(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(19,20,conn,c,"português") # Português Forum
    
    c.execute('''CREATE TABLE Pусский(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(37,27,conn,c,"Pусский") # Pусский Forum
    
    c.execute('''CREATE TABLE türkçe(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(25,25,conn,c,"türkçe") # Türkçe Forum
    
    c.execute('''CREATE TABLE 中文(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(62,16,conn,c,"中文") # 中文 Forum
    
    c.execute('''CREATE TABLE otherLanguages(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(14,34,conn,c,"otherLanguages") # Other Languages Forum
    
    c.execute('''CREATE TABLE translatingScratch(Stickied text, Closed text, Title text, Author text, Link text, Replies real, Views real, LatestPostLink text, LatestPostTimestamp text, LatestPostAuthor text)''') 

    extractData(10,28,conn,c,"translatingScratch") # Translating Scratch Forum
    
    conn.close()
    
main()

Code - Command Line


datasette publish heroku scratchForumPosts.db -n scratchdiscussionforums

Syntax-highlighted text box generated with hilite.me.