0If a tree falls in a forest, and no one is around to see or hear it, does it make a sound? Science, Question, PhilosophyThis is a classic philosophical question regarding observation and existence. If no one is there to see, smell, or in any way detect an event, how do we know if it occurred, or in this case, does the tree even exist at all? It raises several questions like "is sound only a sound if a person hears it?" From a scientific stance, it is thought to have occurred. If it can at some point be observed to be in a fallen state, it is believed to have caused sound waves to penetrate through the air. But from a philosophical standpoint, this is essentially an unanswerable question. An interesting related topic is that at the subatomic scale, this question of whether something exists if it is not observed is less straightforward. Particles act differently when they are directly observed than when they are not. This is known as the "observer effect". Particles seem to act as theoretical versions of themselves until they observed. It's above my full level of understanding, but here's a video about it that will blow your mind:@retropmac1005 views7/14/2018 0Welcome to Beta Testing Form of Good MetaThe purpose beta testing is to find out what works and what doesn't. Are there broken features? Is something missing, or are activities like making posts, components, and adding components to posts too complicated? Any little feedback helps. Check out how adding components to posts works ( click here for a simple walkthrough), and make some posts. Posts can be as simple as asking a question without providing an answer, or writing about something you know or like. There is virtually no limit to what you can post (except for things like violence, etc (oh and please no nudity or other NSFW items as nothing has been built to tag those as unsafe or to automatically hide them from those that haven't opted in)). If you see any bugs, or disruptive content, please provide feedback. I also encourage you to look at the "Edit"/"View Code" page to see what other people have made. Some posts will be full of complex HTML and JavaScript, but others will simply import components like graphs, a table of contents, lists, and more. One of the main purposes of this site is to allow non-coders to use complex components without knowing how they work. For starters, take a look at the "Code" of this post. (Click the "View Code" button in the upper right hand corner of this post). You'll see that it uses the "Table of Contents" component, and then only makes use of the menu above the code to add headers, paragraphs, links, and line breaks (the "<BR>" symbol will put your content on a new line). The feedback button is on the bottom right side of your screen.@MakeNoLaw777 views7/15/2018 0How do I get started on Form of Good? Form of Good Meta, BlogThe first thing to know about this site is that there are both objective and subjective posts. Objective posts can usually be edited by anyone (unless they might be controversial) and they deal with facts. For instance, this post on greatest rock bands can be edited by anyone because the list may change, or someone may add another way of determining popularity like comparing the number of times songs have been played on the radio by each band. Subjective posts are personal and shouldn't be edited by others. An example of this is this user's astrology quiz which takes a certain stance on astrology, and this user's theory on Ferris Bueller . Since the Ferris Bueller post is asking for user input, it will need to wait for the addition of comments, which is coming soon! You can learn more in the "Who can edit your posts?" section below. You can get started by asking a question, writing something you know about, or writing about something you're interested in. What industry do you work in? Is there something about your industry that others might find helpful or entertaining? Almost everything is allowed. Have a good story about an on the job experience? Make a post and use the "Story" and "Personal Post" tags, or create another tag if you don't find a relevant one! Just don't post violence or any other similarly frowned upon material and you'll be good! Do you follow any sports teams? You could ask a question about who the impact player on that team might be next year. Or you could write about your abject depression or happiness regarding recent team events. What about science? Any questions about why the sky is blue, how the moon formed, or similar are a good place to start! By default, anyone with an account can edit your posts. This makes sense in the case of questions or informational posts that could change over time. However, there are many instances in which posts shouldn't be edited by others. For those, you can add any of the tags "Blog", "Free Speech", "Opinion", or "Personal Post". If you add one of those tags, no one else can edit that post except you. In the future, I may take away the "edit by default" feature if a majority of posts are making use of one of the aforementioned tags. If this or any other feature bothers you don't hesitate to provide feedback! This is Beta testing after all! You don't have to use components, or any of the items in the menu bar. But it is a good idea to play around with some components to see what can be done! Here's an in-depth walkthrough to add a donut pie chart to a post: And voila! Here is the result! (click "View Code" on the top right part of this page and you can check out all of the components I used to make this post) Provide feedback when you're logged in by hovering over your username in the top right corner. The dropdown menu that appears has the "Feedback" button. The text editor for posts is an HTML editor, so you are free to enter HTML, CSS, and JS into it. Posts run in a sandboxed iframe until approved. We also make use of a strict Content Security Policy which prevents clickjacking, and prevents users from changing external script files after approval. Learn more about our Content Security Policy here . Coders can also create components for others to add to their posts. Components are inaccessible by others (even with a direct link) until approval. Learn more about what goes into a component here .@MakeNoLaw1105 views8/22/2018 0Creating components Make No Law HelpComponents are pieces of HTML, CSS, and JS that can be added to posts or other components. They allow for customization by giving users custom fields to input data into. This post will discuss all parts of a component. The title is required, and must be 4 to 20 characters long. The description is required, and must be 20 to 255 characters. It appears in searches, so it should describe the purpose it serves, and any benefits and limits to using it. For instance, if you were creating a bar graph, it would be useful to mention if it allows for certain customizations such as colors of the bars, and if there is a limit on the number of bar that may be added. The details section is optional. It displays after a component has been selected, and above the data that is requested from the user. Relevant info about how the component works, and customization options go here. Continuing with the bar graph example, you could write that if a bar color is not specified, blue is used, and that for customization, the bars have the class 'bar' that may be edited by adding a <style> element to their post. Line breaks are conserved in details, so you can separate topics into different parts. User-Entered Data is also optional. When used, each field in the row is required. The fields are: The different data types are: All user-entered data becomes a part of an object for your code. Each component has a unique id, and this id is embedded into the variable of this user-entered data object. If the component's id is "iOK0H", the variable for your component is "dataiOK0H" (will be used as an example throughout this doc). This is done to prevent collisions with other components, and it is recommended that "dataiOK0H" or "iOK0H" be used in your variables, html ids, and class names. To allow for multiple instances of your component to be added to one post, every instance of "dataiOK0H" has the localId of your component in that post inserted into the middle. Use "dataiOK0H" in ids, classes, and variables to make it unique. If you wish for all instances to be customized at the same time, use "iOK0H" in the class name. This allows you to have a class name unique to your component, but not unique to that instance. When a component is added to a post, it is given a localId (starts at 0 and auto-increments). This localId is visible in the code editor, so the user can use it if necessary (described later). If your component is the third added, it will have a localId of 2. Before your code is run, all instances of "dataiOK0H" will be replaced with "data2iOK0H". You can let users custom style your components by mentioning class names and ids in the Detail section of the component page. If you give classes unique names (by using "dataiOK0H" in them), you'll have to tell users that they have to insert the localId into the class name. So if your class is named "dataiOK0H-wrapper", you can tell users to customize it by using the class "data{localId}iOK0H-wrapper". Unlike posts, components cannot be used or seen in search results until they are approved. This is to prevent malicious code from becoming widespread before being deleted, and potentially diminishing the UX for users visiting posts that had a component deleted retroactively. To ensure your component is approved, refrain from using external JS files that could be changed maliciously in the future. Only repositories on unpkg.com - like jQuery, React, and other npm packages - will be allowed. Aside from common social media, all other script urls are blocked by our Content-Security-Policy. If you have another site you'd like to include scripts from, please submit feedback (in the dropdown menu in the upper right hand corner when you log in). Add the following to enable react: <script src='https://unpkg.com/react/umd/react.production.min.js'></script> <script src='https://unpkg.com/react-dom/umd/react-dom.production.min.js'></script> When testing, use the following: <script src='https://unpkg.com/react/umd/react.development.js'></script> <script src='https://unpkg.com/react-dom/umd/react-dom.development.js'></script> Example of React in a component When a new version of a component is approved, changes will not automatically propagate to posts using that component. Posts will have to be updated individually. This was done because updated components may no longer fit in as well with the post, and can change user-entered data formatting. Because pages are loaded two different ways, you must plan accordingly. If you need to wait for the page to load to examine or manipulate elements, you will have to check to see if the document has loaded already before adding a window load event listener: if (document.readyState !== 'complete') { this.listenerSet = true; // when using React window.addEventListener('load', this.loadData); } else { this.listenerSet = false; // when using React this.loadData(); } For removing the listener in React: componentWillUnmount() { if (this.listenerSet) { window.removeEventListener('load', this.loadData); } } Without React: if (document.readyState !== 'complete') { window.addEventListener('beforeunload', function (event) { window.removeEventListener('load', this.loadData); }); }@MakeNoLaw912 views1/18/2026 0Safety of posts Make No Law HelpYour computer is protected from the content of unapproved posts because code runs in sandboxed iframes. This means that malware cannot be run, and the code cannot access cookies or any data on the makenolaw.com domain. The iframe sandbox also disallows popups, form submission, and more. Our Content-Security-Policy (a term used for a method that restricts what can be loaded on a website) disallows all but a short list of sites to be embedded in an iframe, which prevents clickjacking. Most browsers that don't support CSPs are unable to load posts at all due to other missing features, but browsers that fail to implement CSPs are given a warning that cannot be dismissed. If you see this message, upgrade your browser before using this site. Objects, applets, and embeds are disabled (via the CSP, in addition to attempts to disable them on the server side), as well as mixed content. If you want support added for a site, send us feedback and it'll likely be added (hover over top right dropdown when logged in, and you'll see the feedback button). The supported sites are: Scripts are also limited by our Content-Security-Policy. Only scripts from the following domains are allowed at this time: Approved posts have the icon next to its tags list, and unapproved posts have the icon . Approved posts are allowed to run freely on a page. Posts are only approved when they have been vetted, and usually only when they do not work in a sandboxed iframe. Posts that need HTML approval are either made by users with less than the minimum required reputation (10 at the time of this writing), or when a post's code appears suspicious. Certain functionalities like editing the contents of a users clipboard are usually not allowed, and doing so will cause the post to become flagged. When flagged, it will not show up for other users until it has been approved. Several steps have been taken to mitigate this (using a modified version of jsbin's loop-protect), but it is not perfect yet. This is the reason for having a minumum reputation to make posts containing HTML and JS. It will take time to achieve that level of reputation, and will hopefully deter users from wasting their account and time by making a post that likely wouldn't work anyway. The minimum reputation required will increase over time.@MakeNoLaw746 views1/31/2026