Robuta

https://observablehq.com/@triptych/hello-sticky-headers?collection=@triptych/random-bits Hello, Sticky Headers / Andrew Wooldridge | Observable Feb 17, 2021 - Reference: css-tricks scroll the outer div up to see sticky header stick. sticky headersandrew wooldridgehelloobservable https://observablehq.com/@triptych/hello-embla-carousel Hello, Embla Carousel! / Andrew Wooldridge | Observable Feb 17, 2022 - A lightweight carousel library with fluid motion and great swipe precision Documentation The HTML (Drag the slide 1 to the left and right with your mouse) The... embla carouselandrew wooldridgehelloobservable https://observablehq.com/@triptych/tempest-utilities?collection=@triptych/storylets Tempest Utilities / Andrew Wooldridge | Observable Jan 9, 2022 - Libraries and resources for the storytelling engine - Tempest Kaboom engine - for rendering. bitECS - for an Entity-Component System Rita JS for text... andrew wooldridgetempestutilitiesobservable https://observablehq.com/@triptych/hello-dice-roller?collection=@triptych/working-libraries Hello, Dice Roller / Andrew Wooldridge | Observable Jul 27, 2021 - Documentation https://greenimp.github.io/rpg-dice-roller/guide/#how-it-works dice rollerandrew wooldridgehelloobservable https://observablehq.com/@triptych/hello-zcanvas?collection=@triptych/api Hello, zcanvas / Andrew Wooldridge | Observable Aug 27, 2021 - Reference https://github.com/igorski/zCanvas Reference: https://observablehq.com/@eczajk1/convert-an-image-to-base64-data-url andrew wooldridgehelloobservable https://observablehq.com/@triptych/kaboom-js-custom-component-test?collection=@triptych/kaboom-examples Kaboom JS Custom Component Test / Andrew Wooldridge | Observable Nov 7, 2021 - This is a Kaboom JS test. Re implementing https://kaboomjs.com/play?demo=component custom componentandrew wooldridgekaboomjstest https://observablehq.com/@triptych/how-to-import-a-dataset-from-github?collection=@observablehq/github-on-observable How to Import a Dataset from GitHub / Andrew Wooldridge | Observable Jul 24, 2021 - Step one: identify data set Step two: determine CSV url I want to make a table for emojis. So I'm going to use this url... how to importa datasetfrom githubandrew wooldridgeobservable https://observablehq.com/@triptych/hello-core-js?collection=@triptych/working-libraries Hello, core-js! / Andrew Wooldridge | Observable Feb 17, 2022 - Modular standard library for JavaScript. Includes polyfills for ECMAScript up to 2021: promises, symbols, collections, iterators, typed arrays, many other... core jsandrew wooldridgehelloobservable https://observablehq.com/@triptych/p5-game-of-life?collection=@triptych/p5 p5 Game of Life / Andrew Wooldridge | Observable Apr 25, 2021 - From this example: https://p5js.org/examples/simulate-game-of-life.html Jazzed up with some "random colors" game of lifeandrew wooldridgep5observable https://observablehq.com/@triptych/testing-sqlite-and-zip?collection=@triptych/tips-and-utilities Testing SQLite and ZIP / Andrew Wooldridge | Observable Oct 19, 2021 - The Chinook SQLite database has been imported to this notebook as a zip file. (See the diagram ) Now let's get the database out via the file api. And chain... andrew wooldridgetestingsqlitezipobservable https://observablehq.com/@triptych/kaboom-0-5-1-load-font?collection=@triptych/kaboom-examples Kaboom 0.5.1 -- load font / Andrew Wooldridge | Observable Jun 6, 2021 - Reference https://kaboomjs.com/ 0 5andrew wooldridgekaboom1load https://observablehq.com/@triptych/hello-auto-animate Hello auto-animate! / Andrew Wooldridge | Observable Jul 4, 2022 - Documentation: https://auto-animate.formkit.com/#usage andrew wooldridgehelloautoanimateobservable https://observablehq.com/@triptych/3d-pixel-art-with-three-elements 3D Pixel Art with three-elements / Andrew Wooldridge | Observable Mar 26, 2021 - Got inspired by KenShape and wondered if I could so something basic with three-elements. So naturally doing it here on Observable was my next step. Click a... 3d pixelthree elementsandrew wooldridgeartobservable https://observablehq.com/@triptych/hello-croquet?collection=@triptych/tips-and-utilities Hello, Croquet! / Andrew Wooldridge | Observable Jun 12, 2022 - Docs https://croquet.io/docs/croquet/tutorial-1_1_hello_world.html Inspired by https://twitter.com/codefrau/status/1526618716602937345 You must get your own... andrew wooldridgehellocroquetobservable https://observablehq.com/@triptych/testing-fetch-with-runkit?collection=@triptych/random-bits Testing fetch with runkit / Andrew Wooldridge | Observable Dec 27, 2020 - Trying out creating a service from Runkit and deploying it here https://runkit.com/triptych/poop andrew wooldridgetestingfetchrunkitobservable https://observablehq.com/@triptych/hello-lil-gui Hello, lil-gui! / Andrew Wooldridge | Observable Jul 1, 2022 - Documentation: https://lil-gui.georgealways.com/# andrew wooldridgehellolilguiobservable https://observablehq.com/@triptych/storylet-framework?collection=@triptych/storylets Storylet Framework / Andrew Wooldridge | Observable andrew wooldridgeframeworkobservable https://observablehq.com/@triptych/hello-sortablejs?collection=@triptych/working-libraries Hello, sortablejs / Andrew Wooldridge | Observable Jan 9, 2022 - Drag and drop to resort elements https://github.com/SortableJS/Sortable andrew wooldridgehelloobservable https://observablehq.com/@triptych/hello-slide-element?collection=@triptych/random-bits Hello, Slide-Element / Andrew Wooldridge | Observable Jul 23, 2021 - A small library to allow you to slide elements open and closed. Reference: https://alexmacarthur.github.io/slide-element/ Code from:... andrew wooldridgehelloslideelementobservable https://observablehq.com/@triptych/testing-new-mermaid-template-literal Testing New Mermaid Template Literal / Andrew Wooldridge | Observable andrew wooldridgetestingnewmermaidtemplate https://observablehq.com/@triptych/hello-sortablejs?collection=@triptych/tips-and-utilities Hello, sortablejs / Andrew Wooldridge | Observable Jan 9, 2022 - Drag and drop to resort elements https://github.com/SortableJS/Sortable andrew wooldridgehelloobservable https://observablehq.com/@triptych/hello-handel?collection=@triptych/javascript-tips Hello, Handel / Andrew Wooldridge | Observable Jan 5, 2021 - Handel is a procedural programming language for generating sounds and music: https://handel-pl.github.io/ andrew wooldridgehellohandelobservable https://observablehq.com/@triptych/sponsorships Sponsorships / Andrew Wooldridge | Observable andrew wooldridgesponsorshipsobservable https://observablehq.com/collection/@triptych/javascript-tips JavaScript Tips / Andrew Wooldridge | Observable javascript tipsandrew wooldridgeobservable https://observablehq.com/@triptych/testing-a-local-image?collection=@triptych/random-bits Testing a local image / Andrew Wooldridge | Observable local imageandrew wooldridgetestingobservable https://observablehq.com/@triptych/my-rpg-persona?collection=@triptych/random-bits My RPG Persona / Andrew Wooldridge | Observable andrew wooldridgerpgpersonaobservable https://observablehq.com/@triptych/the-oracle?collection=@triptych/api The Oracle / Andrew Wooldridge | Observable Nov 20, 2021 - You walk down a solitary path. The trees seem to lean inward, seeking to block your way. You persevere, because you seek the Oracle's wisdom. You must find the... the oracleandrew wooldridgeobservable https://observablehq.com/collection/@triptych/small-tools Small Tools / Andrew Wooldridge | Observable small toolsandrew wooldridgeobservable https://observablehq.com/@triptych/playing-with-yield?collection=@triptych/tips-and-utilities Playing with yield / Andrew Wooldridge | Observable Oct 22, 2021 - References https://observablehq.com/@ellemenno/testing-things andrew wooldridgeplayingyieldobservable https://observablehq.com/@triptych/hello-reef?collection=@triptych/working-libraries Hello, Reef! / Andrew Wooldridge | Observable May 20, 2022 - Documentation : https://reefjs.com/getting-started/ A lightweight library for creating reactive, state-based UI. Reef is a simpler alternative to React, Vue,... hello reefandrew wooldridgeobservable https://observablehq.com/@triptych/hello-markdown-tag Hello, Markdown-Tag ! / Andrew Wooldridge | Observable Jul 28, 2022 - https://github.com/MarketingPipeline/Markdown-Tag andrew wooldridgehellomarkdowntagobservable https://observablehq.com/@triptych/hello-trivia-api Hello Trivia API! / Andrew Wooldridge | Observable Jul 5, 2022 - The Trivia API - Free to use API for multiple choice trivia questions. Featuring procedurally generated and user generated questions. Documentation:... trivia apiandrew wooldridgehelloobservable https://observablehq.com/@triptych/rpg-tiles-scatter-art-with-kaboom?collection=@triptych/kaboom-examples RPG Tiles: Scatter Art with Kaboom / Andrew Wooldridge | Observable Jun 6, 2021 - References: https://kaboom.js https://opengameart.org/content/tiny-16-basic rpg tilesandrew wooldridgescatterartkaboom https://observablehq.com/@triptych/hello-tsparticles?collection=@triptych/random-bits Hello, tsParticles / Andrew Wooldridge | Observable andrew wooldridgehelloobservable https://observablehq.com/@triptych/test-message-channel-with-godot-engine?collection=@triptych/games Godot Game - Browser Page Communication / Andrew Wooldridge | Observable Jun 11, 2023 - The Godot Engine allows you to export your game to the web. It can use a JavaScript Object to communicate with its parent page, and thusly to communicate with... game browserandrew wooldridgegodotcommunicationobservable https://observablehq.com/@triptych/hello-pintora?collection=@triptych/tips-and-utilities Hello, pintora / Andrew Wooldridge | Observable Feb 12, 2022 - Pintora is a text to diagrams library. Documentation here andrew wooldridgehellopintoraobservable https://observablehq.com/@triptych/hello-model-viewer?collection=@triptych/api Hello, model-viewer / Andrew Wooldridge | Observable Oct 18, 2021 - Documentation https://modelviewer.dev/ Other links https://observablehq.com/@olange/using-the-model-viewer-web-component model viewerandrew wooldridgehelloobservable https://observablehq.com/@triptych/p5-js-sketch-learnings P5 js Sketch learnings / Andrew Wooldridge | Observable p5 jsandrew wooldridgesketchlearningsobservable https://observablehq.com/@triptych/hello-cash-cash-dom?collection=@triptych/api Hello, cash ( cash-dom ) / Andrew Wooldridge | Observable Oct 15, 2021 - An absurdly small jQuery alternative https://github.com/fabiospampinato/cash andrew wooldridgehellocashdomobservable https://observablehq.com/@triptych/tiny-tools-viewer?collection=@triptych/31-days-of-observable Tiny Tools viewer / Andrew Wooldridge | Observable Mar 24, 2021 - Source: https://github.com/everestpipkin/tools-list I learned this magic from... tiny toolsandrew wooldridgeviewerobservable https://observablehq.com/@triptych/3d-pixel-art-with-three-elements?collection=@triptych/three-elements 3D Pixel Art with three-elements / Andrew Wooldridge | Observable Mar 26, 2021 - Got inspired by KenShape and wondered if I could so something basic with three-elements. So naturally doing it here on Observable was my next step. Click a... 3d pixelthree elementsandrew wooldridgeartobservable https://observablehq.com/@triptych/hello-js-image-zoom?collection=@triptych/tips-and-utilities Hello, JS Image Zoom / Andrew Wooldridge | Observable Nov 11, 2021 - This is a JavaScript library to allow you to zoom in on an image via mousing over it like you might see on Amazon or eBay. Source and Info:... image zoomandrew wooldridgehellojsobservable https://observablehq.com/@triptych/kaboom-rpg-example Kaboom RPG Example / Andrew Wooldridge | Observable Jun 6, 2021 - Reference https://kaboomjs.com/examples#rpg andrew wooldridgekaboomrpgexampleobservable https://observablehq.com/@triptych/hello-sugar-js?collection=@triptych/tips-and-utilities Hello, sugar js! / Andrew Wooldridge | Observable Jul 3, 2022 - Sugar is a Javascript utility library for working with native objects. Documentation: https://sugarjs.com/ hello sugarandrew wooldridgejsobservable https://observablehq.com/@triptych/object-assign-to-modify-html?collection=@triptych/tips-and-utilities Object Assign to Modify HTML / Andrew Wooldridge | Observable Nov 27, 2021 - Let's make an HTML element, and then modify it's attributes via Object.assign() instead of setAttribute, or innerHTML. It's a handy shorthand to make many... andrew wooldridgeobjectassignmodifyhtml https://observablehq.com/@triptych/how-to-filter-a-data-set-via-search?collection=@triptych/tips-and-utilities How to: filter a data set via search / Andrew Wooldridge | Observable Sep 24, 2021 - Type anything in the search box and the table below will auto filter the data to match the search Reference... how toa dataandrew wooldridgefilter https://observablehq.com/@triptych/testing-fetch-with-runkit?collection=@triptych/javascript-tips Testing fetch with runkit / Andrew Wooldridge | Observable Dec 27, 2020 - Trying out creating a service from Runkit and deploying it here https://runkit.com/triptych/poop andrew wooldridgetestingfetchrunkitobservable https://observablehq.com/@triptych/hello-vivus?collection=@triptych/api Hello, Vivus / Andrew Wooldridge | Observable Sep 21, 2021 - Documentation https://github.com/maxwellito/vivus andrew wooldridgehellovivusobservable https://observablehq.com/@triptych/hello-lazy-js Hello, lazy.js! / Andrew Wooldridge | Observable Jul 3, 2022 - Lazy.js is a functional utility library for JavaScript, similar to Underscore and Lodash, but with a lazy engine under the hood that strives to do as little... andrew wooldridgehellolazyjsobservable https://observablehq.com/@triptych/hello-ramda Hello, Ramda! / Andrew Wooldridge | Observable May 24, 2022 - Why Ramda? There are already several excellent libraries with a functional flavor. Typically, they are meant to be general-purpose toolkits, suitable for... andrew wooldridgehelloramdaobservable https://observablehq.com/@triptych/hello-lazy-js?collection=@triptych/working-libraries Hello, lazy.js! / Andrew Wooldridge | Observable Jul 3, 2022 - Lazy.js is a functional utility library for JavaScript, similar to Underscore and Lodash, but with a lazy engine under the hood that strives to do as little... andrew wooldridgehellolazyjsobservable https://observablehq.com/collection/@triptych/tools Tools / Andrew Wooldridge | Observable andrew wooldridgetoolsobservable https://observablehq.com/@triptych/hello-markdoc?collection=@triptych/working-libraries Hello, Markdoc! / Andrew Wooldridge | Observable May 12, 2022 - A new markdown parser - see docs at https://markdoc.io/docs/getting-started "Markdoc is a Markdown-based document format and a framework for content... andrew wooldridgehelloobservable https://observablehq.com/@triptych/hello-jspdf Hello, JSPDF / Andrew Wooldridge | Observable Oct 21, 2021 - Create PDFs with just a simple JavaScript API. PDFs are great for generating shareable documents, creating game sheets, downloadables, and more! See Reference... andrew wooldridgehellojspdfobservable https://observablehq.com/@triptych/interactive-story?collection=@triptych/31-days-of-observable Interactive Story / Andrew Wooldridge | Observable Mar 1, 2021 - You can create simple interactive stories with text and images. Just fork this page and update the story block below interactive storyandrew wooldridgeobservable https://observablehq.com/@triptych/hello-umbrellajs?collection=@triptych/working-libraries Hello, umbrellajs / Andrew Wooldridge | Observable Feb 12, 2022 - Link to documentation. A lightweight replacement for jQuery. andrew wooldridgehelloobservable https://observablehq.com/@triptych/run-some-code-on-button-click?collection=@triptych/31-days-of-observable Run Some Code on Button Click / Andrew Wooldridge | Observable on buttonandrew wooldridgeruncodeobservable https://observablehq.com/@triptych/skypack-pixijs?collection=@triptych/skypack Skypack Pixijs / Andrew Wooldridge | Observable andrew wooldridgeskypackpixijsobservable https://observablehq.com/@triptych/hello-thecatapi?collection=@triptych/random-bits Hello TheCatAPI / Andrew Wooldridge | Observable Dec 27, 2020 - Click the button for a new random cat. andrew wooldridgehelloobservable https://observablehq.com/@triptych/how-to-convert-a-markdown-list-to-json?collection=@triptych/tips-and-utilities How to: Convert a Markdown List to JSON / Andrew Wooldridge | Observable Jun 5, 2022 - Have you ever wanted to create a list of information in say JSON format, but you didn't want to have to deal with all the curly braces, etc? Here's a technique... how to convertandrew wooldridgemarkdownlistjson https://observablehq.com/@triptych/how-to-pull-in-a-javascript-library?collection=@triptych/api How to: pull in a JavaScript Library / Andrew Wooldridge | Observable Oct 20, 2021 - You want to do something cool in Observable that it doesn't already do, but you don't know for sure how to get the code into your notebook. For starters, I... how topull injavascript libraryandrew wooldridgeobservable https://observablehq.com/@triptych/hello-color-legend-element Hello Color Legend Element! / Andrew Wooldridge | Observable Jun 11, 2022 - Reference: https://clhenrick.github.io/color-legend-element/ color legendandrew wooldridgehelloelementobservable https://observablehq.com/@triptych/hello-ramda?collection=@triptych/tips-and-utilities Hello, Ramda! / Andrew Wooldridge | Observable May 24, 2022 - Why Ramda? There are already several excellent libraries with a functional flavor. Typically, they are meant to be general-purpose toolkits, suitable for... andrew wooldridgehelloramdaobservable https://observablehq.com/@triptych/hello-pdfme?collection=@triptych/tips-and-utilities Hello, pdfme! / Andrew Wooldridge | Observable Apr 4, 2022 - Documentation for pdfme https://pdfme.com/docs/getting-started andrew wooldridgehelloobservable https://observablehq.com/@triptych/hello-html-progress-element?collection=@triptych/html-elements Hello HTML Progress Element / Andrew Wooldridge | Observable andrew wooldridgehellohtmlprogresselement https://observablehq.com/@triptych/how-to-pull-in-a-javascript-library?collection=@triptych/tips-and-utilities How to: pull in a JavaScript Library / Andrew Wooldridge | Observable Oct 20, 2021 - You want to do something cool in Observable that it doesn't already do, but you don't know for sure how to get the code into your notebook. For starters, I... how topull injavascript libraryandrew wooldridgeobservable https://observablehq.com/@triptych/hello-iro-js Hello, iro.js / Andrew Wooldridge | Observable Dec 21, 2021 - Iro.js is a design conscious color picker for JavaScript. See the documentation from their home page. andrew wooldridgehelloirojsobservable https://observablehq.com/@triptych/untitled/3 Untitled / Andrew Wooldridge | Observable andrew wooldridgeuntitledobservable https://observablehq.com/@triptych/hello-lil-gui?collection=@triptych/tips-and-utilities Hello, lil-gui! / Andrew Wooldridge | Observable Jul 1, 2022 - Documentation: https://lil-gui.georgealways.com/# andrew wooldridgehellolilguiobservable https://observablehq.com/@triptych/composer Composer / Andrew Wooldridge | Observable Jun 24, 2022 - Composer is an experimental tool to "compose" JavaScript Objects. Create complex objects using composition. Create methods and add them to objects. Save and... andrew wooldridgecomposerobservable https://observablehq.com/@triptych/hello-color-js Hello Color JS! / Andrew Wooldridge | Observable Jun 19, 2022 - Documentation https://github.com/Qix-/color andrew wooldridgehellocolorjsobservable https://observablehq.com/@triptych/hello-fabric-js?collection=@triptych/random-bits Hello, Fabric js / Andrew Wooldridge | Observable andrew wooldridgehellofabricjsobservable https://observablehq.com/@triptych/hello-kaboom-sprite-animation?collection=@triptych/kaboom-examples Hello, Kaboom sprite animation / Andrew Wooldridge | Observable Apr 8, 2021 - Check out the docs here https://kaboomjs.com/ sprite animationandrew wooldridgehellokaboomobservable https://observablehq.com/@triptych/hello-sugar-js Hello, sugar js! / Andrew Wooldridge | Observable Jul 3, 2022 - Sugar is a Javascript utility library for working with native objects. Documentation: https://sugarjs.com/ hello sugarandrew wooldridgejsobservable https://observablehq.com/@triptych/hello-messagepipe?collection=@triptych/api Hello, messagepipe! / Andrew Wooldridge | Observable andrew wooldridgehelloobservable https://observablehq.com/@triptych/kaboom-js-demo-001?collection=@triptych/kaboom-examples Kaboom JS Demo 001 / Andrew Wooldridge | Observable Dec 27, 2021 - (This is a Kaboom JS Template. Fork this to make Kaboom JS games and projects. ) Hit spacebar as soon as this page loads to see bean jump. js demoandrew wooldridgekaboom001observable https://observablehq.com/@triptych/hello-splide?collection=@triptych/working-libraries Hello, Splide / Andrew Wooldridge | Observable Nov 16, 2021 - A lightweight flexible carousel component. Docs https://splidejs.com/ andrew wooldridgehelloobservable https://observablehq.com/@triptych/hello-liveblocks Hello, Liveblocks! / Andrew Wooldridge | Observable andrew wooldridgehelloobservable https://observablehq.com/@triptych/interactive-story Interactive Story / Andrew Wooldridge | Observable Mar 1, 2021 - You can create simple interactive stories with text and images. Just fork this page and update the story block below interactive storyandrew wooldridgeobservable https://observablehq.com/@triptych/hello-owoify-js?collection=@triptych/tips-and-utilities Hello, owoify-js! / Andrew Wooldridge | Observable Jun 27, 2022 - Documentation https://github.com/mohan-cao/owoify-js andrew wooldridgehellojsobservable https://observablehq.com/@triptych/kaboom-0-5-1?collection=@triptych/kaboom-examples Kaboom 0.5.1 / Andrew Wooldridge | Observable Jun 6, 2021 - Reference https://kaboomjs.com/ 0 5andrew wooldridgekaboom1observable https://observablehq.com/@triptych/hello-candygraph?collection=@triptych/tips-and-utilities Hello, CandyGraph! / Andrew Wooldridge | Observable Feb 20, 2022 - A flexible 2d plotting library. Docs here andrew wooldridgehelloobservable https://observablehq.com/@triptych/hello-lokijs?collection=@triptych/working-libraries Hello, lokiJS / Andrew Wooldridge | Observable andrew wooldridgehelloobservable https://observablehq.com/@triptych/hello-multiavatar Hello, Multiavatar! / Andrew Wooldridge | Observable May 10, 2022 - Use the api to create billions of different avatars. https://api.multiavatar.com/ andrew wooldridgehelloobservable https://observablehq.com/@triptych/shuffle-an-array?collection=@triptych/working-libraries Shuffle an Array / Andrew Wooldridge | Observable Mar 21, 2022 - Source: https://gist.github.com/cferdinandi/1ce070047e8b0e3cb9a6b4d74d275638 Usage Embedding Example Notebook... andrew wooldridgeshufflearrayobservable https://observablehq.com/@triptych/html-input-types-explorer?collection=@triptych/tips-and-utilities HTML Input Types Explorer / Andrew Wooldridge | Observable Oct 31, 2021 - Preview all the different kinds of input types by choosing from the dropdown below. For more information read on MDN. (Code examples are from MDN.) Markup... html input typesandrew wooldridgeexplorerobservable https://observablehq.com/@triptych/hello-is-online Hello, is-online! / Andrew Wooldridge | Observable Jun 11, 2022 - Source: https://github.com/sindresorhus/is-online andrew wooldridgehelloonlineobservable https://observablehq.com/@triptych/hello-svg-plant?collection=@triptych/api Hello, SVG Plant / Andrew Wooldridge | Observable Aug 26, 2021 - Documentation: https://www.npmjs.com/package/svg-plant andrew wooldridgehellosvgplantobservable https://hashnode.com/forums/thread/whats-the-best-way-to-pick-up-reactjs/comment/5861797acc0caec55e2f957e Comment by Andrew Wooldridge on "What's the best way to pick up ReactJS?" | Hashnode I enthusiastically endorse going to http://survivejs.com/ and go through the online versions of their webpack and reactjs tutorials. You can also buy the book v https://hashnode.com/forums/thread/are-there-twitch-like-live-stream-videos-where-i-can-watch-great-programmers-at-work/comment/57e2f75d1700bb0b469049b1 Comment by Andrew Wooldridge on "Are there twitch-like live stream videos where I can watch great... You can watch https://handmadehero.org/ - a project to document the creation of an RPG from scratch. You can watch "notch" - the creator of Minecraft