To that end, one change that might be noticed is an increased level of moderation. Posts which do not contribute to the topic or which add incorrect or misleading information will be more likely to be removed or edited, as appropriate. Do not take this personally. The point of Ask a Pro is to provide an environment in which people can ask any question about coding for ComputerCraft, no matter how simple or complex, and receive useful information that answers their question in a relatively timely manner. Answer posts that add false or misleading information are directly counter to that goal. It's all about the quality and correctness of answers here. On-topic discussion about the question or problem presented is always welcome, of course.
Hand in hand with wanting high-quality answers is wanting to provide resources for people to find answers to their own questions quickly. It is demotivating to question answerers to have to answer the same "use == in if statements" or "use parentheses when calling functions" sorts of things all the time. Providing better self-help resources can help filter out the simpler questions if users are able to figure out the answers themselves. I'll be working on a better read-this-first topic that will cover most common errors and simple Lua questions.
A better sticky post can only cover so much information, though. We need a good, high-quality set of tutorials written in a consistent manner and covering topics in a sensible progression of complexity. We have some good tutorials already, but they vary stylistically and in scope, and there is very little in the way of natural progression. I envision a more tree-like structure wherein a user could pick a subject that interests them (such as using a touchscreen monitor) and follow a series of tutorials that would help them learn about the parts of ComputerCraft they will need to know in order to create what they want. The stylistic guidelines I am currently thinking of are as follows (subject to change):
- Do not use Object-Oriented design except if absolutely necessary
- Use best coding practices as far as it does not detract from readability.
- Link to high-quality documentation.
- Link to other tutorials in the series as appropriate.
- Do not comment code heavily, as this detracts from the readability of the code.
- Use code blocks for all code.
- Talk about the intent of code and the general design of the flow in plain English.
- Provide more technical descriptions of what happens in each code example (excepting previously explained code) after each code block.
- Use images if a pictorial explanation is required; avoid ASCII art unless necessary.
- Use in-game images, not emulator images, if terminal images are required.
These stylistic guidelines are open to input from the community. Using these guidelines, here is how I see the rough categorization of the tutorials:
Spoiler
Computer basics - crafting normal/advanced/turtle, command line, Lua prompt, startup, cd, ls - draftComputer basics - help, programs, label, id, cp, mv, rename, mkdir - draft
Computer basics - crafting disk drives/floppies, use of drives, labeling disks, dying disks - draft
Peripheral basics - isPresent, getType, getMethods, wrap, call - draft
Peripheral intermediate - printer
Monitor basics - peripheral wrapping, manual calls, term redirect.
Monitor intermediate - touches, color-change single button example
Turtle basics - move, turn, refuel, dig, place, attack - draft
Turtle intermediate - suck, drop, getStackSize, detect, compare
Turtle intermediate - compareTo, getSpaceInSlot, transferTo, craft
Turtle intermediate - failproofed mining movements (gravel safe etc.) - draft
Turtle advanced - chest sorter example
Turtle advanced - mining with inventory tracking example
Turtle advanced - gravel to arrows example
Modem basics - range, rednet API
Modem basics - wired modems
Modem intermediate - channels, modem.send, rednet explained/reimplemented example
Modem intermediate - remote peripherals
Redstone basics - getInput, getOutput, setOutput
Redstone intermediate - bundled input & output, colors API, colors.combine & subtract
Redstone advanced - example redset/redpulse type programs to change a single color's state
Term basics - .write, .clear, .setCursorPos, .getCursorPos
Term basics - .getSize, .scroll, .clearLine, .setCursorBlink
Term basics - .isColor, .setTextColor, .setBackgroundColor
Term intermediate - redirect, restore, creating a redirect that writes to part of the screen, issues with using term.* in redirects.
Term intermediate - breakdown/reimplementation of bios write() - draft
Term advanced - using redirects to make a simple "chat" program (no rednet, etc.)
Event basics - key, char, timer, redstone, press any key with timeout example - draft
Event intermediate - mouse_click, drag, scroll, clickable button with dragging for color change (not all users have scroll wheels)
Event advanced - key and click menu example
Event advanced - timed click game
API basics - purpose for using, functions in APIs, simple example API - draft
API intermediate - data in APIs, when appropriate, use and effect of local in APIs - draft
API advanced - datatype APIs, vector API breakdown/reimplementation. - draft
Note that some of the tutorials are rather specific about the order of things and the examples used. If it seems like some of the tutorials don't cover very many topics, be aware that the idea is to go in-depth on each subject contained within. This outline is a rough draft, and community input is both welcomed and desired. If there are existing tutorials that match well with one of the subjects listed above and could be adapted/fleshed out (if necessary) to fit, please link it in this topic. I'll talk to AfterLifeLochie to see if the Wiki will be able to do what I'd ideally like to do with the tutorials.