https://github.com/EmNudge/watlings Skip to content Toggle navigation Sign up * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code Explore + All features + Documentation + GitHub Skills + Blog * Solutions For + Enterprise + Teams + Startups + Education By Solution + CI/CD & Automation + DevOps + DevSecOps Resources + Customer Stories + White papers, Ebooks, Webinars + Partners * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Pricing Search or jump to... Search code, repositories, users, issues, pull requests... Search [ ] Clear Search syntax tips Provide feedback We read every piece of feedback, and take your input very seriously. [ ] [ ] Include my email address so I can be contacted Cancel Submit feedback Saved searches Use saved searches to filter your results more quickly Name [ ] Query [ ] To see all available qualifiers, see our documentation. Cancel Create saved search Sign in Sign up You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert {{ message }} EmNudge / watlings Public * Notifications * Fork 5 * Star 401 Learn WebAssembly by writing small programs! 401 stars 5 forks Activity Star Notifications * Code * Issues 0 * Pull requests 0 * Discussions * Projects 1 * Security * Insights More * Code * Issues * Pull requests * Discussions * Projects * Security * Insights EmNudge/watlings This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. main Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags Name already in use A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch? Cancel Create 1 branch 0 tags Code * Local * Codespaces * Clone HTTPS GitHub CLI [https://github.com/E] Use Git or checkout with SVN using the web URL. [gh repo clone EmNudg] Work fast with our official CLI. Learn more about the CLI. * Open with GitHub Desktop * Download ZIP Sign In Required Please sign in to use Codespaces. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching Xcode If nothing happens, download Xcode and try again. Launching Visual Studio Code Your codespace will open once ready. There was a problem preparing your codespace, please try again. Latest commit @EmNudge EmNudge add patches ... ef4d776 Sep 1, 2023 add patches ef4d776 Git stats * 25 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .vscode [ Rework ] Readme (#3) August 16, 2023 17:32 exercises remove table solution August 23, 2023 21:47 patch add patches September 1, 2023 18:48 tests add table August 23, 2023 21:46 utils refactor getWastParser into utils August 16, 2023 16:54 .gitignore init August 10, 2023 15:20 README.md add patches September 1, 2023 18:48 build.mjs change comment syntax (and add logs for JS) August 17, 2023 14:00 package-lock.json init August 10, 2023 15:20 package.json add patches September 1, 2023 18:48 run.sh refactor getWastParser into utils August 16, 2023 16:54 solve.sh add patches September 1, 2023 18:48 View code [ ] Watlings Usage Using Wat2Wasm Directly ( Recommended ) Recommended Editor Motivations Pedagogical Philosophy Typing Over Reading Create Struggle Credits README.md Watlings Learn the WebAssembly Text Format by fixing a bunch of small programs! Button Roadmap Example Exercise Warning This project is incomplete and in active development. Feel free to help out by filing issues and creating PRs! Usage This project uses Node 16+ & NPM for compilation and testing. Clone the repository and install dependencies with: git clone git@github.com:EmNudge/watlings.git cd watlings npm install Test your answer to an exercise with the start command: npm start 001_hello If you'd like to view the solution to an exercise, use the solve command: npm run solve 001_hello Using Wat2Wasm Directly ( Recommended ) For syntax highlighting and up-to-date builds, you can optionally use the official WebAssembly Binary Toolkit which will provide you with a wat2wasm CLI tool. If it is found on your path as wat2wasm, it will be used instead of NPM WABT. While it is strictly optional, it can help with debugging. Recommended Editor We recommend using VSCode with the WATI extension. This should provide syntax highlighting, intellisense, and other helpful features as you work through the exercises. Motivations I've found just diving in to be the best way to build experience with programming. Rustlings & Ziglings have both had tremendous returns to my journeys with both languages. WebAssembly (and by extension WAT) has a more sparse educational landscape than most and I was hoping to fill some of the gaps by building a project with the same sort of structure. Pedagogical Philosophy Outlined here are some thoughts on what makes a good teaching experience. Typing Over Reading The goal is to learn by doing. Comments on each file outline a task and some background. However, a lot about a language can be gleaned by its syntax alone. We should be adding as little explanation as possible. Occasional gaps in knowledge can be filled by consistent exposure to the syntax within different contexts. Certain things can therefore be learned without any mention. Introduction text is superfluous. Words add visual noise, so we should be careful with our count. Coding itself should supplement ambiguities in the text. If you find a text confusing or too verbose, please create a discussion post! Create Struggle Studies have shown that one cannot learn effectively without effort. This applies to practically every domain of knowledge. These projects should be educational, not easy. This does not mean we should make the education itself elusive. We should not make learning more difficult, but instead more intentional. When introducing a lot of new syntax, keep the problem scope small, but force the user to read a bit. If the syntax is not new, increase the problem scope. Maybe many variations of the same task. Credits * rustlings * Ziglings About Learn WebAssembly by writing small programs! Topics learning guide webassembly wasm exercises wat wast Resources Readme Activity Stars 401 stars Watchers 1 watching Forks 5 forks Report repository Contributors 2 * @EmNudge EmNudge EmNudge * @PhoneDroid PhoneDroid John D.K. Languages * JavaScript 56.3% * WebAssembly 41.8% * Shell 1.9% Footer (c) 2023 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time.