The C1 Rewards will only be available during Pre-Launch. With the growth during Pre-Launch and after each launch, all pioneers and affiliates will be able to get a very good return on their C1 Rewards since the user base will increase massively.
Included in each Member package is a certain amount of free C1 Rewards.
The C1 Rewards is the tool which will allow you and the entire crowd to make money not only on your own achievements but the entire Crowd1s’ activity! Owning C1 Rewards is effortless, you collect them with one click and then you will receive your share of the profit from products and services all over the world.
C1 Rewards give you quarterly payouts directly to your Crowd1 account.
Having the foundation in the profit made from products and services, the payout on C1 Rewards are depending on the number of people using the provided products and services as well as of the amount spent.


Phaser 2.0.3
Phaser is a fast, free and fun open source game framework for making desktop and mobile browser HTML5 games. It uses Pixi.js internally for fast 2D Canvas and WebGL rendering.
Version: 2.0.3 "Allorallen" - Released: 11th April 2014
By Richard Davey, Photon Storm
- View the Official Website
- Follow on Twitter
- Join the Forum
- Source code for 250+ Phaser Examples
- Read the documentation online
- Browse the Examples online
- Join our #phaserio IRC channel on freenode
Subscribe to our new Phaser Newsletter. We'll email you when new versions are released as well as send you our regular Phaser game making magazine.
What's new in 2.0.3?
In this release we have upgraded both pixi.js to v1.5.2 and p2.js to v0.5.0. This improves features and stability across the whole framework, and as always you'll find the complete list of improvements below.
We've taken some time to enhance the Particle Emitter adding a few substantial features such as the ability for Particles to now change scale or alpha over time using any of the easing functions, or apply a blend mode. These small additions now allow you to create visually more impressive effects than before, and while we still have a complete overhaul of the particle system on our roadmap it's a welcome boost in the meantime.
Along with the p2.js update we have also refined the Phaser P2 classes, making tweaks that help overall performance, such as splitting the world bounds into separate bodies. The World now has a default contact material, which allows for easier setting of responses when objects collide with no materials set. All in all it's a powerful update.
What's interesting is that loads of the new features and bug fixes in this release have come direct from the community. Of course we've been busy and working hard on Phaser as well, but the volume of contributors now is fantastic. We've have always listed their names next to the issues they helped resolve, but now we're doing so with their github usernames directly so they appear on the revisions change log.
As promised with the 2.0.0 release we have done all of this without changing existing API calls in the core Phaser classes. New features are introduced either via the creation of new optional parameters or by creating new methods. Where a feature has been deprecated we have flagged it as such in the docs, but left it in so as to not break existing code.
Some of you may not be aware, but the phaser.min.js
file in the build folder contains all 3 physics systems bundled in. We've refined our build process so that it's easy for you to create custom builds now via grunt, but if you know you only need Arcade Physics (and not P2 or Ninja) then you can use phaser-arcade-physics.min.js
which is found in the build/custom
folder. This will save you 180KB from the minified file size, so please use it if you can.
Welcome to Phaser
6 months ago we released Phaser 1.0 into the world. Suffice to say that since then we've been overwhelmed at the huge surge of developers taking to it! Our github repository is consistently in the top JavaScript lists, we've over 3200 stars at the time of writing, and a wonderful, vibrant and friendly community. Phaser 2 is a natural evolution of what we started. We've focused specifically on performance and expansion with this release. Lots of developers have already reported to us considerably speed increases just by swapping to Phaser 2 (reports of 200% faster speeds on mobile aren't unheard of!). There's also a full-body physics system available now, in the form of the excellent p2.js. The upgrade to Pixi 1.5 under the hood bought lots of new visual effects in, including blend modes and tints.
And we're also really pleased to have closed down over 550 issues reported on github. We literally went through every last bug reported to us, and fixed it. All kinds of little things that as a whole make the library that much more solid. With the 2.0 release we're now freezing the API. Before we have to admit that the API changed somewhat on a whim, and we moved things around and changed things without too much consideration for fellow developers. With 2.0 that stops - we've spent long enough on this release that we're now extremely happy with the organisation of classes and methods, and while we may still need to make small tweaks in the future, none of them will be API breaking without prior community approval first. This means if you're using Phaser to teach in classes, or writing a book / tutorials around it, this is the version to base off.
If you want to port a Phaser 1.x game over to 2 then do read our Migration Guide first.
So what's next? We have a roadmap (which you can find at the bottom of this document), but we're going to sit back and take stock for a while, building up the tutorials and sample games. We will of course jump on bug fixes quickly, but this is definitely the best release of Phaser ever. The most features, the fastest, the most stable and just generally the most fun to use.
Happy coding everyone! See you on the forums.
Getting Started Guides
We have a new Getting Started Guide which covers all you need to begin developing games with Phaser. From setting up a web server to picking an IDE. If you're new to HTML5 game development, or are coming from another language like AS3, then we recommend starting there.
There is a comprehensive How to Learn Phaser guide on the GameDevTuts+ site which is a great place to learn where to find tutorials, examples and support.
There is also an un-official Getting Started Guide.
Change Log
Version 2.0.3 - "Allorallen" - 11th April 2014
Updates
- Updated to Pixi.js 1.5.2
- Updated to p2.js 0.5.0
- Return the result of P2.Body.setCircle for further chaining and manipulation (fix #659)
- Updated the PhysicsEditor plugin to maintain position, radius, mask bits, category bits and sensor flags (thanks @georgiee, #674)
- Further TypeScript defs tweaks (thanks @clark-stevenson)
- Lowered the default size of SpriteBatch from 10000 to 2000 as this yields faster results on mobile (pixi.js update)
- Fix for 'jagged' strokes on custom fonts (thanks @nickryall, #677)
- The State.update function (and thus the update of any sub-classed Sprites or other objects) is now called before Stage, Tweens, Sound, Input, etc (#662)
- The Phaser jshint process is now running on Travis (thanks @xtian, #656)
- The Phaser Gruntfile is now split up into option tasks (thanks @xtian, #638)
- Key.reset now clears any callbacks associated with the onDown and onUp events and nulls the onHoldCallback if set. Key.reset is called by Keyboard.reset when changing state.
- If you pass
null
to Tilemap.putTile as the tile parameter it will pass the call over to Tilemap.removeTile. - TypeScript definitions updated for latest changes (thanks @clark-stevenson)
- Keyboard.stop nulls the function references after removing the event listeners (thanks @bmceldowney, #691)
- Tilemap.hasTile allows for multi-layer type parameter (thanks @Raeven0, #680)
- Grunt update to dev dependencies (thanks @xtian, #695)
- Emitter now emits Phaser.Particle objects instead of Phaser.Sprites, which can be extended as required.
- Emitter has had various local properties removed that were already declared in Phaser.Group which it extends.
- PluginManager parent parameter removed as it's redundant. Also most core functions tidied up and jsdocs fixed.
- p2.World.defaultRestitution has been deprecated and is now p2.World.restitution.
- p2.World.defaultFriction has been deprecated and is now p2.World.friction.
- p2.World now uses 4 bodies for the world boundaries, rather than 1 body with 4 shapes. This stops the bounds triggering narrowphase with every single body in the world.
- p2.World bounds are now included in the callback events such as beginContact and impact events.
- Thanks to @STuFF the Classes drop-down list in the API docs now indents the sub-classes.
New Features
- Added ability to retrieve a single p2 fixture from the cache (thanks @georgiee, #674)
- Timers can now have a start delay value (thanks @georgiee, #660)
- CacheAsBitmap added to Display Object, so works for Sprite, Image, Button. Allows you to cache complex display hierarchies for speed.
- CacheAsBitmap added to Graphics Object. Allows you to cache complex graphics structures hierarchies for speed.
- Added generateTexture function to display objects. Create a texture from the current object display hierarchy for use as a texture elsewhere.
- Added optional FilterArea to display object (for optimisation)
- Graphics chaining functions.
- Added Pointer.positionUp which records the last point at which the pointer left the screen (thanks @Cryszon, #676)
- Phaser.Point.centroid static function added to calculate the centroid or midpoint of an array of points (thanks @lewster32, #675)
- SoundManager.remove(sound) now lets you remove a sound from the SoundManager, destroying it in the process.
- Sound.destroy will remove a sound and all local references it holds, optionally removing itself from the SoundManager as well.
- SoundManager.removeByKey(key) will remove all sounds from the SoundManager that have a key matching the given value.
- ArcadePhysics.Body.hitTest(x, y) will return a boolean based on if the given world coordinate are within the Body or not.
- StateManager.restart allows you to quickly restart the current state, optionally clearing the world and cache.
- Tilemap.removeTile(x, y, layer) lets you remove the tile at the given coordinates and updates the collision data.
- Tilemap.removeTileWorldXY lets you remove the tile at the given pixel value coordinates and updates the collision data.
- Key.enabled boolean allows you to toggle if a Key processes its update method or dispatches any events without deleting and re-creating it.
- Emitter now has minParticleAlpha and maxParticleAlpha values for setting a random alpha on emitted particles.
- Emitter.particleAnchor allows you to control the anchor of emitted Particles. Defaults to 0.5 (same as before) but now under your control.
- Emitter.setAlpha allows you to quickly set the min and max alpha values.
- Emitter.setScale allows you to quickly set the min and max scale values.
- Emitter.blendMode lets you set the blendMode of any emitted Particle (needs a browser that supports canvas blend modes)
- Group.customSort allows you to sort the Group children based on your own sort function.
- Emitter.setScale has a new 'rate' parameter which allows particles to change in scale over time, using any Easing value or timescale.
- Emitter.setScale now allows you to scale the x and y axis of the particles independently.
- Emitter.setAlpha has a new 'rate' parameter which allows particles to change alpha over time, using any Easing value or timescale.
- Emitter.bringToTop and Emitter.sendToBack are booleans that let you optionally set the display order of the Particle when emitted.
- Emitter now calls the Phaser.Particle.onEmit function, which is left empty for you to override and add in custom behaviours.
- p2.World has a new contactMaterial property, which can be configured like a normal P2 Contact Material and is applied when two bodies hit that don't have defined materials.
- Group.remove has a new 'destroy' parameter (false by default), which will optionally call destroy on the item removed from the Group.
- Group.removeAll has a new 'destroy' parameter (false by default), which will optionally call destroy on the items removed from the Group.
- Group.removeBetween has a new 'destroy' parameter (false by default), which will optionally call destroy on the items removed from the Group.
- @georgiee created a new P2.FixtureList class to allow easy access the fixtures of a created P2 Body:
This is especially useful in combination with PhysicsEditor and P2.Body#addPhaserPolygon.
You can configure your whole collision grouping in PhysicsEditor and then you can later change the mask bits easily with this class. You can also access parts (groups) and named fixtures by a group index or a fixture key - both properties can be set in PhysicsEditor with the custom phaser exporter.
Use cases:
- Configure collision bits in PhysicsEditor and you want to change them later.
- Place a sensor in your fixture and access this single fixture later (to disable temporarily)
- Create a small body with threes fixtures (circle, circle + polygon/convex). Now you want that the polygon part to behave like rubber and assign a bouncing (restitution > 1) material. Assign a fixture key in PhysicsEditor and access the fixture like this. (see the image for the fixture I described)
Bug Fixes
- If you inputEnable = false a gameobject you couldn't re-enable it again using inputEnable = true, only directly via the handler (thanks @nickrall, fix #673)
- Fixed setTexture bug with TilingSprite (pixi.js 1.5.2 bug fix)
- Fixed anchor point bug in canvas with TilingSprite (pixi.js 1.5.2 bug fix)
- Fixed positionOffset not begin correct in TilingSprite (pixi.js 1.5.2 bug fix)
- Fixed issue where filters were not being applied to TilingSprite (pixi.js 1.5.2 bug fix)
- Fixed SpriteBatch canvas transform bug (pixi.js 1.5.2 bug fix)
- Fixed Cached textures issue when using base64 encoded images (@cacheflowe) (pixi.js 1.5.2 bug fix)
- Fixed issue where visibility was not being respected in sprite batch (pixi.js 1.5.2 bug fix)
- Fixed bug in gl.bindTexture which tried to use an undefined private var. (@photonstorm) (pixi.js 1.5.2 bug fix)
- Fixed the 'short cut' version of Math.floor in setTransform if roundPixels is true. (@photonstorm) (pixi.js 1.5.2 bug fix)
- SoundManager.boot will check to see if the AudioContext was created before carrying on (thanks @keyle, fix #669)
- Fixed bug where move up and move down method in groups did not work (thanks @jonthulu, fix #684)
- Fixed bug in Group.next when cursor is at the last child (thanks @jonthulu, fix #688)
- Emitter.minParticleScale and maxParticleScale wasn't resetting the Body size correctly.
- Group.removeBetween now properly iterates through the children.
- P2.World had a type in the restitution method title. Now fixed.
- Objects with an InputHandler now deactivate it when the object is removed from a Group but not destroyed (fix #672)
- Fixed the vectors used in the BlurX and BlurY filters (thanks @nickryall, fix #668)
p2.js v0.5.0
- Added property .enableIslandSleeping to World.
- Added property .useFrictionGravityOnZeroGravity to World.
- Renamed .useWorldGravityForFrictionApproximation in World to .useWorldGravityAsFrictionGravity to keep things more uniform.
- Sleep improvements.
- Added property .frictionIterations to GSSolver, and removed .skipFrictionIterations.
- Upgraded to gl-matrix 2.1.0.
- Removed QuadTree.
- Removed mat2.
- Added Utils.extend.
- Added methods .setStiffness and .setRelaxation methods to Constraint.
- Removed properties .stiffness, .relaxation and .useGlobalEquationParameters from GSSolver.
- Added methods .setGlobalStiffness, .setGlobalRelaxation, .setGlobalEquationParameters to World.
- Renamed property .eps to .epsilon for Equation.
- Removed property .useBoundingBoxes from NaiveBroadphase in favor of the new property .boundingVolumeType in Broadphase.
- Added methods .getMaxForce and .setMaxForce to LockConstraint.
- Changed property names .bi, .bj, .ni, .ri, .rj to .bodyA, .bodyB, .normalA, .contactPointA, .contactPointB in Equation, ContactEquation and FrictionEquation classes.
- Removed IslandSolver in favor of the new property World.islandSplit.
- Changed constructors of the Constraints so they all take an options object as last parameter.
- Added property .collideConnected to Constraint.
- Added property .islandSplit to World.
- Added methods .disableBodyCollision and .enableBodyCollision to World.
- Added properties .useWorldGravityForFrictionApproximation and .frictionGravity to World.
- Added Heightfield class.
- Removed properties .defaultFriction and .defaultRestitution from World, in favor of .defaultContactMaterial.
- Added property .enabled to Equation.
- Added property .surfaceVelocity to ContactMaterial.
- Added property .sensor to Shape.
- World now emits events 'beginContact', 'endContact' and 'preSolve'.
- Added property .gravityScale to Body.
- Renamed class SAP1DBroadphase to SAPBroadphase.
- Added property .interpolatedPosition to Body`.
- Added method .internalStep to World.
- Added property .applyGravity to World.
- Renamed method .computeC to .computeInvC in Equation, and made it compute the inverse.
- Added static method Utils.splice.
- Added property .world to Body.
- Added property .fixedRotation to Body.
- Added class AABB.
- Added properties .aabb and .aabbNeedsUpdate to Body, as well as a method .updateAABB.
- Added property .useBoundingBoxes to NaiveBroadphase.
- Added static method Broadphase.aabbCheck.
- Added method .computeAABB to Shape.
- Added static method Broadphase.canCollide.
- Body now inherits from EventEmitter, and dispatches events 'sleep','sleepy' and 'wakeup'.
- Added properties .allowSleep, .sleepState, .sleepSpeedLimit, .sleepTimeLimit, .lastTimeSleepy as well as methods .sleep, .wakeUp and .sleepTick to Body.
- Added enums Body.AWAKE, Body.SLEEPY, Body.SLEEPING.
- Added property .enableBodySleeping to World.
- Added options .disableRotationalLock, .lowerLimit, .upperLimit to PrismaticConstraint constructor.
- Added methods .enableMotor, .disableMotor to PrismaticConstraint as well as properties .motorEnabled, .motorSpeed, .motorEquation.
There is an extensive Migration Guide available for those converting from Phaser 1.x to 2.x. In the guide we detail the API breaking changes and approach to our new physics system.
The full Change Log is at https://github.com/photonstorm/phaser/blob/master/CHANGELOG.md
How to Build
We provide a fully compiled version of Phaser in the build
folder, in both plain and minified formats.
You will also find custom builds in the build\custom
folder, that split phaser up into components.
We also provide a Grunt script that will build Phaser from source.
Run grunt
to perform a default build to the dist
folder.
If you replace Pixi or p2 then run grunt replace
to patch their UMD strings so they work properly with Phaser and requireJS.
Note: Some of you may not be aware, but the phaser.min.js
file in the build folder contains all 3 physics systems bundled in. If you only need Arcade Physics then you can use build\custom\phaser-arcade-physics.min.js
instead. This will save you 180KB from the minified file size.
Koding
You can ![clone the Phaser repo in Koding]koding and then start editing and previewing code right away using their web based VM development system.
Bower
If you use bowser you can install phaser with:
bower install phaser
Nice and easy :)
CDNJS
Thanks to a community member Phaser is now available on CDNJS. You can include the following in your html:
http://cdnjs.cloudflare.com/ajax/libs/phaser/2.0.3/phaser.min.js
Or if you prefer you can leave the protocol off, so it works via http and https:
//cdnjs.cloudflare.com/ajax/libs/phaser/2.0.3/phaser.min.js
Requirements
Games created with Phaser require a modern web browser that supports the canvas tag. This includes Internet Explorer 9+, Firefox, Chrome, Safari and Opera. It also works on mobile web browsers including stock Android 2.x browser and above and iOS5 Mobile Safari and above.
If you need to support IE9 or Android 2.x then you must use a build of Phaser that doesn't include P2 physics. You'll find these in the build/custom
folder.
For developing with Phaser you can use either a plain-vanilla JavaScript approach or TypeScript using the provided TypeScript definitions file. We made no assumptions about how you like to code your games, and were careful not to impose any form of class/inheritance/structure upon you.
Phaser is 576 KB minified (including all 3 physics engines, 311 KB without) and 128 KB gzipped (67 KB without physics libs).
Learn By Example
Ever since we started Phaser we've been growing and expanding our extensive set of Examples. Currently over 270 of them!
They used to be bundled in the main Phaser repo, but because they got so large and in order to help with versioning we've moved them to their own repo.
So please checkout https://github.com/photonstorm/phaser-examples
Here you'll find an ever growing suite of Examples. Personally I feel that developers tend to learn better by looking at small refined code examples, so we created hundreds of them, and create new ones to test new features and updates. Inside the examples
repo you'll find the current set. If you write a particularly good example then please send it to us.
The examples need to be run through a local web server (in order to avoid file access permission errors from your browser). You can use your own web server, or start the included web server using grunt.
Using a locally installed web server browse to the examples folder:
examples/index.html
Alternatively in order to start the included web server, after you've cloned the repo, run npm install
to install all dependencies, then grunt connect
to start a local server. After running this command you should be able to access your local webserver at http://<IP_ADDRESS>:8000
. Then browse to the examples folder: http://<IP_ADDRESS>:8000/examples/index.html
There is a new 'Side View' example viewer as well. This loads all the examples into a left-hand frame for faster navigation. And if you've got php installed into your web server you may want to try debug.php
, which provides a minimal examples list and debug interface.
You can also browse all Phaser Examples online.
Features
WebGL & Canvas
Phaser uses both a Canvas and WebGL renderer internally and can automatically swap between them based on browser support. This allows for lightning fast rendering across Desktop and Mobile. When running under WebGL Phaser now supports shaders, allowing for some incredible in-game effects. Phaser uses and contributes towards the excellent Pixi.js library for rendering.
Preloader
We've made the loading of assets as simple as one line of code. Images, Sounds, Sprite Sheets, Tilemaps, JSON data, XML and JavaScript files - all parsed and handled automatically, ready for use in game and stored in a global Cache for Sprites to share.
Physics
Phaser ships with our Arcade Physics system, Ninja Physics and P2.JS - a full body physics system. Arcade Physics is for high-speed AABB collision only. Ninja Physics allows for complex tiles and slopes, perfect for level scenery, and P2.JS is a full-body physics system, with constraints, springs, polygon support and more.
Sprites
Sprites are the life-blood of your game. Position them, tween them, rotate them, scale them, animate them, collide them, paint them onto custom textures and so much more! Sprites also have full Input support: click them, touch them, drag them around, snap them - even pixel perfect click detection if needed.
Groups
Group bundles of Sprites together for easy pooling and recycling, avoiding constant object creation. Groups can also be collided: for example a "Bullets" group checking for collision against the "Aliens" group, with a custom collision callback to handle the outcome.
Animation
Phaser supports classic Sprite Sheets with a fixed frame size, Texture Packer and Flash CS6/CC JSON files (both Hash and Array formats) and Starling XML files. All of these can be used to easily create animation for Sprites.
Particles
An Arcade Particle system is built-in, which allows you to create fun particle effects easily. Create explosions or constant streams for effects like rain or fire. Or attach the Emitter to a Sprite for a jet trail.
Camera
Phaser has a built-in Game World. Objects can be placed anywhere within the world and you've got access to a powerful Camera to look into that world. Pan around and follow Sprites with ease.
Input
Talk to a Phaser.Pointer and it doesn't matter if the input came from a touch-screen or mouse, it can even change mid-game without dropping a beat. Multi-touch, Mouse, Keyboard and lots of useful functions allow you to code custom gesture recognition.
Sound
Phaser supports both Web Audio and legacy HTML Audio. It automatically handles mobile device locking, easy Audio Sprite creation, looping, streaming and volume. We know how much of a pain dealing with audio on mobile is, so we did our best to resolve that!
Tilemaps
Phaser can load, render and collide with a tilemap with just a couple of lines of code. We support CSV and Tiled map data formats with multiple tile layers. There are lots of powerful tile manipulation functions: swap tiles, replace them, delete them, add them and update the map in realtime.
Device Scaling
Phaser has a built-in Scale Manager which allows you to scale your game to fit any size screen. Control aspect ratios, minimum and maximum scales and full-screen support.
Plugin system
We are trying hard to keep the core of Phaser limited to only essential classes, so we built a smart Plugin system to handle everything else. Create your own plugins easily and share them with the community.
Mobile Browser
Phaser was built specifically for Mobile web browsers. Of course it works blazingly fast on Desktop too, but unlike lots of frameworks mobile was our main focus. If it doesn't perform well on mobile then we don't add it into the Core.
Developer Support
We use Phaser every day on our many client projects. As a result it's constantly evolving and improving and we jump on bugs and pull requests quickly. This is a living, breathing framework maintained by a commercial company with custom feature development and support packages available. We live and breathe HTML5 games.
Battle Tested
Phaser has been used to create hundreds of games, which receive millions of plays per month. We're not saying it is 100% bug free, but we use it for our client work every day, so issues get resolved <em>fast</em> and we stay on-top of the changing browser landscape.
Road Map
Beyond version 2.0 here are some of the features planned for the future:
Version 2.1 ("Shienar")
- Enhance the State Management, so you can perform non-destructive State swaps and persistence.
- A more advanced Particle system, one that can render to a single canvas (rather than spawn hundreds of Sprites), more advanced effects, etc.
- Ability to control DOM elements from the core game and layer them into the game.
- Touch Gestures.
- Support for parallel asset loading.
Version 2.2 ("Tarabon")
- Comprehensive testing across Firefox OS devices, CocoonJS and Ejecta.
- Integration with third party services like Google Play Game Services and Amazon JS SDK.
- Flash CC HTML5 export integration.
- Massively enhance the audio side of Phaser. Take more advantage of Web Audio: echo effects, positional sound, etc.
Beyond version 2.2
- Test out packaging with Node-webkit.
- Game parameters stored in Google Docs.
- Look at HiDPI Canvas settings.
- Multiple Camera support.
- DragonBones support.
- Cache to localStorage using If-Modified-Since. See github request
- Allow for complex assets like Bitmap Fonts to be stored within a texture atlas.
- Look at XDomainRequest for IE9 CORs issues.
Nadion
Nadion is a set of powerful enhancements for Phaser that makes level building even easier. It includes features such as Trigger, Area, Alarms and Emitters, debug panels, state machines, parallax layer scrolling, 'developer mode' short-cuts and more.
Contributing
We now have a full Contributors Guide which goes into the process in more detail, but here are the headlines:
If you find a bug then please report it on GitHub Issues or our Support Forum.
If you have a feature request, or have written a game or demo that shows Phaser in use, then please get in touch. We'd love to hear from you! Either post to our forum or email<EMAIL_ADDRESS>If you issue a Pull Request for Phaser, please only do so againt the
dev
branch and not against themaster
branch.Before submitting a Pull Request please run your code through JSHint to check for stylistic or formatting errors. To use JSHint, run
grunt jshint
. This isn't a strict requirement and we are happy to receive Pull Requests that haven't been JSHinted, so don't let it put you off contributing, but do know that we'll reformat your source before going live with it.
Bugs?
Please add them to the Issue Tracker with as much info as possible, especially source code demonstrating the issue.
"Being negative is not how we make progress" - Larry Page, Google
License
Phaser is released under the MIT License.


bookmarklets iCalendar URL builders iCalendar filters feed viewers
This bookmarklet extracts the iCalendar URL from a web page on which an instance of Google Calendar has been embedded. An example of such a page: the Mariposa Museum Calendar.
Here is the bookmarklet: get ical from gcal. To install it, drag the link to your browser's links toolbar. To use it, visit a page like the Mariposa Museum Calendar and click the link. The bookmarklet will figure out the iCalendar URL and report it at the top of the page.
Some Facebook pages, like Berkeley Underground Film Society, include calendars.
This helper accepts the URL of a Facebook page and an Elm City ID. It produces a corresponding iCalendar feed URL that you can add to your hub's registry.
| Facebook Page: | |
| Elm City ID: | |
Note: This now works both for Facebook fan pages as shown above, and also for group pages with calendars such as https://www.facebook.com/groups/Bytemarks.Meetup.
This helper accepts the URL of an EventBrite event page and an Elm City ID. It finds the EventBrite ID for the event, synthesizes an iCalendar feed for that event, and produces an iCalendar feed URL that you can add to your hub's registry.
| EventBrite Page: | |
| Elm City ID: | |
This helper accepts the URL of an EventBrite event page and an Elm City ID. It finds the organizer for the event, synthesizes an iCalendar feed for that organizer's events, and produces a iCalendar feed URL that you can add to your hub's registry.
| EventBrite Page: | |
| Elm City ID: | |
On NASA's Spot the Station page you can find the schedule for upcoming sightings of the space station in your location. There is only an RSS feed, not an iCalendar feed, but you can construct an iCalendar feed here. Find your closest city on the NASA page, it will produce an URL like this:
http://spotthestation.nasa.gov/sightings/view.cfm?country=United_States®ion=New_Hampshire&city=Dublin
Transfer the values for country, region, and city (exactly as shown in the generated URL) to this form.
| Elm City ID: | |
| Country: | |
| State or Region: | |
| City: | |
Some sites, like The Jewish Mother in Virginia Beach, offer feeds that require the Elm City service to use an HTTP POST request rather than an HTTP GET request. This helper accepts an URL formulated like a GET request, and produces an URL that will fetch the feed by POSTing the corresponding form.
| Feed URL, GET-style: | |
Some sites, like Rice University Athletics, provide calendar data only as CSV files. This helper accepts these inputs:
It produces the iCalendar feed URL corresponding to the CSV data.
| CSV URL: | |
| Home URL: | |
| Skip first row: | |
| Title column: | |
| Date column: | |
| Time column: | |
| Timezone: | |
Although many sites provide RSS feeds for their calendars, most of these feeds don't format the calendar information in a way that enables automated data exchange. One notable exception is Zvents, a service used by a number of newspapers including SeattlePI.
The Arts & Crafts category at SeattlePI.com is an example of such a feed. Here's how the elmcity project's Seattle hub transforms that RSS feed into an iCalendar feed:
| RSS feed: | |
| Elm City ID: | |
Many schools (e.g. Keene High School) use HighSchoolSports.Net to help manage sports programs. The HighSchoolSports.Net Sync button produces iCalendar feed URLs for individual sports schedules, or for sets of up to 5 schedules (e.g. all basketball teams, including JV and varsity, boys and girls).
This helper accepts the name of a high school and a timezone. It produces an iCalendar feed URL that includes all the sports schedules for the named school.
| School: | |
| Timezone: | |
Note: Broken for now. See A great disturbance in the force.
Sometimes you'll want to use just part of an iCalendar feed. Consider Vinology, a restaurant, wine bar, and jazz venue in Ann Arbor. The Vinology calendar contains a mix of restaurant events (e.g. Happy Hour) and jazz events (Doug Horn trio).
As curator of the Ann Arbor hub, you'd prefer that Vinology offered a separate iCalendar feed for the jazz events, so you could include it in the music and jazz category. Even though Vinology doesn't offer a categorized feed, you can still create one on its behalf. This helper accepts an iCalendar feed URL and various inputs that control the selection of a subset of the feed. It returns a subset of the iCalendar feed.
One way to produce a jazz feed for Vinology is to restrict the feed to only events containing 'jazz' in the SUMMARY or DESCRIPTION:
| iCalendar feed URL: | |
| include keyword: | |
| Elm City ID: | |
Another way produce a jazz feed for Vinology is to restrict the feed to only events after 8PM.
| iCalendar feed URL: | |
| after: | (use 24hr notation) |
| Elm City ID: | |
Sometimes a keyword you'd like to filter will on only appear in the URL field of an iCalendar event. Consider the Berkeley Art Museum / Pacific Film Archive (BAM/PFA) calendar. It's a mixture of art exhibitions and film showings. The exhibitions can be found using the keyword 'exhibition' but the keyword 'film' does not appear consistently in the SUMMARY or DESCRIPTION fields of the film events. It does, however, appear consistently in the URL field (e.g. http://www.bampfa.berkeley.edu/film/FN19019).
Here's how the Berkeley hub uses iCalendar filtering to construct the BAM/PFA film feed that appears in Berkeley's film category:
| iCalendar feed URL: | |
| include keyword: | |
| URL only: | yes |
| Elm City ID: | |
The keyword you'd like to filter might also appear in the LOCATION field of an iCalendar event. Consider Trinity College. Its sports schedule lists home and away games, and you can distinguish between them because away games use the word Away in the LOCATION field, like so:
LOCATION:Away Brandeis Univ Rieger Tennis Courts
Here's how the socialhartford hub uses iCalendar filtering to construct feeds for away games:
| iCalendar feed URL: | |
| include keyword: | |
| LOCATION only: | yes |
| Elm City ID: | |
And for home games:
| iCalendar feed URL: | |
| exclude keyword: | |
| LOCATION only: | yes |
| Elm City ID: | |
If you include or exclude a comma-separated list of keywords, they'll OR together. Here's an includer for Crazy Wisdom, in Ann Arbor, that finds events for a Health category. The found events will have health, herbal wisdom, healing, or remedies in the SUMMARY.
| iCalendar feed URL: | |
| include keyword: | |
| SUMMARY only: | yes |
| Elm City ID: | |
Here's an excluder for Let's Dance Southern Vermont, a feed of dance events with occasional Zumba, Tai Chi, and Yoga events that wouldn't belong in a Dance category.
| iCalendar feed URL: | |
| exclude keyword: | |
| SUMMARY only: | yes |
| Elm City ID: | |
This helper accepts a feed URL and shows you the raw contents of the feed. If you specify an iCalendar property (e.g. SUMMARY, DESCRIPTION) it shows you just those properties. Note that if you filter on an optional property that isn't in the feed you'll see nothing. In that case remove the filter and try again.
| url: | |
| property filter: | |
This helper accepts a feed URL and an Elm City ID. It formats the feed as HTML, so you can check the contents of the feed.
| url: | |
| Elm City ID: | |


Just two more steps, and you are done!
MOVIEFLIX
Sign up to start your free month
Create your account:
Register


HOOP DREAMS A film review by Jeffrey Graebner Copyright 1995 Jeffrey Graebner
The lives of real people can sometimes be far more interesting than anything that a screenwriter can imagine. Because of this, it is completely possible for a good documentary to be as dramatic and engrossing as any fiction film. HOOP DREAMS is a strong example of what can be accomplished with the documentary form.
HOOP DREAMS follows two Chicago inner-city youth through their high school years. At the beginning of the film, we meet William Gates and Arthur Agee, two fourteen-year-old kids getting ready to begin high school. Both are extremely talented basketball players that are recruited by St. Joseph High School, a small private school that includes NBA-star Isiah Thomas among its alumni. Both Gates and Agee are recruited from inner-city playground basketball courts and are given scholarships to help them attend the expensive private school. The film follows them through their high school graduation, ending as both are leaving for college.
Filmmakers Steve James, Fredrick Marx and Peter Gilbert originally conceived this project as a short subject for PBS (it is partially financed by KTCA-TV out of Minneapolis with additional financial support from the Corporation for Public Broadcasting). Over time, it became obvious that they had a much bigger story here. The result is a fascinating 3-hour-and-45-minute examination of the lives of Gates and Agee. Over the course of the film, we truly feel that we come to know these kids and their families. It left me wanting to know more about what happens to these people.
The makers of this film were very fortunate to have chosen Gates and Agee as their subjects. There are some parallels to their lives, but for the most part, they go in widely different directions. The different lives of the two boys allow the filmmakers to show a wide variety of experiences. The film is extremely well edited, smoothly cutting from one boy to the other. Often, the film is deftly edited to compare and contrast their experiences.
As we first meet them, Agee and Gates seem to be starting from the same point. The film makes it completely clear that the St. Joseph administration invited both boys to attend based on their potential on the basketball court. Gates quickly lives up the school's expectations and the school bends over backwards to provide him the financial help needed to continue attending. The St. Joseph coach frequently points out a similarity between Gates and Isiah Thomas, leading him to believe that Gates is another chance for the school to generate a star.
Agee, on the other hand, does *not* initially prove to be a basketball star. Because of this, the school essentially abandons him. Shortly into his sophomore year, he is forced to drop out of St. Joseph when his family can no longer afford tuition. As shown in the film, it looks very much like both boys were "hired" to play for St. Joseph. When Agee's playing didn't live up to the school's lofty expectations, they essentially "fired" him. The rest of the movie follows Agee's experiences at Marshall High School, an inner-city public school. At Marshall, Agee eventually comes into his own as a basketball star.
Basketball plays a key role in this film, but the film isn't really about the sport itself. Instead, the sport represents opportunity for both Gates and Agee. They see it as their ticket to a better life. As the film explores the other people in their life, we also see that some people see the chance to live vicariously through the boys. In particular, Agee's father and Gates' brother both are looking to the boys for a "second chance" to fulfill their own dreams of a basketball career.
Isiah Thomas is frequently mentioned in the film as the ultimate example of someone who escaped from inner-city life to NBA stardom. Both families and the St. Joseph coach frequently express a desire for Agee and/or Gates to become the next Thomas. The film subtlely suggests that both boys might have been better off if they had been pushed to be *themselves* instead of trying to get them to emulate Thomas' success.
For the most part, director Steve James stays in the background allowing his subjects to tell their own stories. Where necessary, James does provide some understated narration, but he also knows when elaboration is not necessary. The narration never overshadows the events being shown or the words of the people being interviewed.
The film also benefits a great deal from the adept camerawork. The filmmakers have a good instinct about what to photograph, resulting in them showing some very key moments in the kids' lives. Of course, persistence is also a big contributor to this success. The filmmakers reportly shot well over 100 hours of footage allowing them to choose from a wide variety of material. The ambition of the project definitely pays off in the finished film.
The fact that the film is showing the lives of real people provides HOOP DREAMS with a very refreshing unpredictability. Real life doesn't have standard formulas like most fiction films. There are numerous surprises in the film thanks to the fact that we are being shown real events as they actually happened. This unpredictability is most evident during the basketball scenes. In most fictional movie sporting events, it is easy to predict whether or not the heroes will win the big game. In this movie, the sporting events are all real with an equal likelihood of winning or losing.
As good as this film is, it isn't perfect. At times, the filmmakers seemed a little too interested in the basketball games. It certainly was necessary to show a lot of footage of the boys' playing, but the filmmakers often feel that the games speak for themselves. It eventually begins to seem repetitive. The later basketball sequences were the only times that I found myself noticing the film's length. The movie really needed to elaborate on what these games *meant* to the people involved. I would have liked to have heard Gates, Agee, and their family *commenting* during some of the game sequences. Instead, we get nothing but James providing dry, purely descriptive commentary on what is happening.
Another problem is probably inherent to the documentary form. The subjects are clearly aware of the presense of the camera and are understandably unwilling to show some of their more unhappy experiences. There are hints of certain key events that clearly didn't happen while the camera was present. In particular, we are given some sketchy details about problems with Agee's father. We are told that he has a drug problem and that he left the family a couple times, but there is a definite feeling that many of the details were kept from the cameras. We learn a lot about these people, but it is hard not to feel that there was a lot going on that we *don't* learn.
The film's origin as a TV project causes a major technical problem when seeing it in a movie theater. Most of the footage was shot on videotape which does not transfer extremely well to 35mm film. The whole film is visibly blurred, making it a bit difficult to watch. The blurring particularly made it difficult to follow many of the basketball sequences. The cathartic effects of seeing this film with a crowd makes it worth seeing in a theater, but this is a very rare case of a film that will *look* considerably better on video.
In the long run, these flaws do not take much away from the power of this film. HOOP DREAMS provides a fascinating look at some pivotal events in some very real lives. This is a very special film that allows the viewer to meet some very special people. It is an absolute must-see film.
-- Jeffrey P. Graebner Columbus, Ohio
.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


{% load staticfiles %}
A/B Testing Tool
{% if intervention_points %}
{% csrf_token %}
Tracks for experiment
To install a new Intervention Point, select one from list of uninstalled intervention points below:
{% for intervention_point in intervention_points %}
Intervention Point "{{intervention_point.name}}" -- Experiment "{{intervention_point.experiment.name}}"
{%endfor %}
Add From List
{% else %}
There are no uninstalled intervention points at this time.


AlvarezNews
About
New Link
My Links
×
Welcome
Sign in
{{index.signInErrorMessage}}
Sign in
Sign up
{{index.signUpErrorMessage}}
Sign up
×
Search


★ An Overview ★ A Model for the Mind ★ Directive Cognitive Expansion ★
Strenthening Specific Mental Faculties through Learning
Learning new activities, like chess, language or acting, can help us strengthen specific faculties of our mind, conscious and subconscious. This is particularly effective during childhood, but neuroplasticity enables to continually update our hardware and software throughout life. There’s a huge focus on STEM and this is appropriate, but the arts offer immense benefits to further accelerate development and self-actualization. We can’t forget that what we seem to do just for fun has a great benefit in how we’ll perform at work. Additionally, the arts can help us understand what kinds of tasks our mind would be most profient at pursuing. I’ll discuss the following arts and activities:
⊗ Programming
⊗ Chess
⊗ Painting
⊗ Music
⊗ Writing
⊗ Freestyle Rapping
⊗ Breakdancing
⊗ Tricking & Parkour
⊗ Yoga
⊗ Acting
⊗ Improv
⊗ Directing
⊗ Skateboarding
⊗ Martial Arts
⊗ Martial Arts with Weapons
⊗ Languages
For the third time, all that we become is a result of what we have thought. So by pursuing these activities, we’re controlling the kinds of experiences that we have and choosing the benefits we’ll derive from life, while equipping ourselves with more tools. And therefore, we’re determining our own course of mental development. In order to pursue the ideal direction, we need to understand more about the mental faculties that various activities both require and develop. These activities require a certain level of profiency in mental skills, but also improve profiency at different rates. We also need to assess our own mind, to become aware of what would be valuable to develop further.
As you focus on self-improvement in these activities, you’ll be reinforcing the circuits in your mind that enable certain functional capabilities. If you want better short-term memory, focus on practicing activities that require short-term memory. If you want quicker reflexivity, focus on activities that require quick reflexes. If you want to be more spontaneous, practice activities that require and develop spontanaeity. If the process to discovering new cognitive techniques can be consciously observed and improved on, then we can expand the conscious mind to develop and coordinate the subconscious. Approaching cognition and metacognition from this perspective allows us to greatly accelerate our rate of learning by orders of magnitude.
Many psychological and neurological disorders see promising treatment by focusing patients on certain activities and thought patterns, which are thought to gradually improve the state of their mind. Therefore, the arts can be used as treatments and I explored this idea in my article Language Therapy For Autism and Traumatic Brain Injury. Part three of this series on cognition is a kind of generalization of that article. Cognitive Behavioral Therapy applies ideas like this to present a patient with situations compelling them to think and react differently, to force development of new skills and thought patterns. However, the pursuit of these activites typically requires the patient to focus on activities they don’t inherently excel at. And so, we need to approach this in such a way as to avoid needless frustration for someone.
However, it is a virtue to enjoy the pursuit of that which is challenging. People who don’t embody this often find themselves at a disadvantage. Gotta break free of your comfort zone. Everyone should read Aristotle’s Ethics to understand what these various virtues are and how to balance yourself in the mean. Yes, philosophy is useful … perhaps too useful…
Modeling Cognitive Traits for Activities
Some of these examples of arts and activities refer to specific base cognitive capabilities, like short-term memory or empathy. Others refer to more aggregate activities, which strengthen the coordination of those base cognitive functions in a specialized way.
⊗ Programming
I’m going to start out with programming because it is perhaps one of the most beneficial, in terms of expanding your cognition. It’s also one of the few that require development of metacognition. First off, programming is rarely useful in and of itself. That is, whether you are developing a web app, mining data to construct statistical models or coding audio visualization, you are almost always working with programming and another field. In order to solve programming problems in that field, you have to exhibit proficiency in modeling problems for that domain.
Programming strenthens our ability to deconstruct and generalize large, complicated problems into smaller problems. Therefore, it embodies our ability to abstract processes into logical step-by-step procedures. Programming actually involves very high-level mathematic concepts, though seeing it from this perspective is hidden to most, which is fantastic – you learn the basics of implementations of these high-level concepts without having to take master’s level math classes. The cognitive functions that programming improves are cognition itself and metacognition. Anyone who learns to program fairly proficiently will become more intelligent, the earlier the better.
⊗ Chess
To think more than three or four moves ahead in chess requires extensive short-term memory. In order to excel at chess, you need to retain experience of previous games, in order to infer strategic similiarities between situations, which is the only way to really compress the space of all board positions. You need to understand how to read your opponents moves to understand how they’ll react to yours.
You also need to be able to identify the strategic board positions you want to reach in 5+ moves and deconstruct your move sequences into those that prevent interference or won’t alarm your opponent. In order to do so, you need to strenthen your cognitive ability to perform backward induction. In chess, endgame is a backward induction problem, where you try to identify possible checkmate scenarios and the move sequences that allow you to reach them. Backward induction is employed throughout a chess game.
⊗ Painting
There’s a good reason that many polymaths were painters. We live in a very visual world. Painting and visual art in general require us to develop this kind of inner vision, which is crucial to design and expression. Painters need to understand how to convey a universally understood message without using words.
Renaissance painters were masters of constructing situations utilizing body language and suspended animation to convey a message that could be understood by even those who couldn’t read. Abstract art acheives this in a different way and because of its diverse construction, it can be harder to identify the meaning. However, this actually contributes to its propensity to be more expansive as art: by lacking a more certain meaning, abstract appeals to more people, as it allows us to search within ourselves for its specific meaning to us.
The most successful paintings are those which inspire us to meditate deeply on their meaning and are coupled with a universal, timeless message. So, as an artist, it’s important to cultivate that understanding of what is universal and what won’t fade with time. So not only do you need to develop the technique, but you also have to look inwards and familiarize yourself with the world around you, beyond just seeing what is there now. It’s very difficult to think timelessly and our thoughts today are so innundated with sensory distraction. I feel there is much people that understood more innately 200, 1000 and 3000 years ago that today seems profound to us, simply because what we are required to know and how we are require to think does not facilitate introspection or spiritual awakening.
In addition to the development of a vision, painting requires comprehending the composition of various techniques to acheive that vision. Da Vinci and Rembrandt were masters of this process of determining process. You have to not only understand what you want to paint, but exactly how you are going to paint it. This requires much short-term memory. The more experience you have, the more capable you are of extrapolating the process you will use to create it. Additionally, these techniques can be very time-dependent for painting.
⊗ Music
Music is another great cognition expanding activity, but it’s important to start early, study theory and play many instruments, especially piano. Music theory allows you to understand how many complicated patterns interrelate, in order to identify similarities in information.
Music composition employs music theory and requires that you develop this aural inner vision: the ability to ideate the kind of sounds you want to create. It’s similar to a painter’s inner vision I discussed above. This kind of inner vision is also similar to the endgame strategy and backward induction, though you don’t have to account for an opponent’s reaction. You brainstorm where you want to be and find a way to get there. Both painting and music composition allow you to strengthen this ideation and provide you with the tools to realize your vision. Backwards induction is a critical skill to develop in life and one that can be generalized by our mind.
Performing music requires strengthening your self-perception. If you’re playing for an audience, you need to understand how you sound to the audience and how your expression of sound will affect their interpretation. When playing in a group, it’s even more important because your volume level needs to match that of the band. Some members of a band, like drums and bass never seem to stand out, but provide a foundation for the rest of the music. The other members would completely fall apart if the drummer lost rhythm. So performing music with a group also allows us to introspect on the importance of fulfilling specialized roles as part of a group. Additionally, performing improvisationally as part of a group requires deep understanding of the group’s intention of musical direction, as well each member’s playing abilities.
Drumset is unique among instruments for its ability to improve rhythmic coordination. Learning drumset forces you to dissociate from conscious control over each limb as the rhythms you play become further disconnected. A good excercise is to learn to play triplet patterns while playing sixteenth note patterns with another limb, a la Fantasie Impromptu, though this is pretty simple. You have to learn to focus on playing complicated rhythms distributed to each limb. This is similar to isolations in poplock and hiphop dance styles and your mind should be able to carry over some of the skills used for drumsets to dancing as well. This is because the mind should generalize the skill of coordinating these dissociated movements to apply what you’ve learned from drumset to dancing and vice versa.
⊗ Writing
Writers have to understand how to portray various situations in order to cultivate the reader’s thoughts towards specific avenues. Writers need to intensely understand psychology, not just of the situations they present in their works, but also of the various categories of readers, who will interpret the work differently. The best writers can do this in such a way that allows readers to explore hidden ideas that inspired a work.
In addition to cultivating specific thought in a reader, writers also need to captivate the reader’s attention. This requires structuring plot and events with a strategic pace and understanding what motivates people to continue reading. Writers need to understand what makes events and dialog seem “natural” or at least coherent with the story or characters.  You’ll find that a good writer is a people watcher, constantly observing their interactions and often perceiving them more clearly than the people themselves. You must also develop expressive language and writing skills.
⊗ Freestyle Rapping
MC’ing and especially freestyle rapping requires intimate knowledge of language, rhythm and expression. The best MC’s can can layer their phonetic skills with the spontaneous ideation of a coherent message. Often you’ll find MC’s who freestyle and have somewhat proficient rhythm and rhyme, but aren’t really conveying a message. This doesn’t take nearly as much skill as the whole package.
⊗ Breakdancing
Breakdancing requires the development of the physical skills balance, flexibility and strength. Not only does more strength enable new moves, but the more strenth you have, the less proportionate energy you invest in those moves. Therefore, more strength, more endurance. How does this relate to the mind? In order to develop physical balance, flexibility and strength, you need to identify ways to develop all three, without excluding flexibility.
Also, breakdancing requires the development of a particular spatial awareness of the self. You need to be aware of all the possibilities for movement from any position to any possible position. You develop this kind of graph, which represents your awareness of which moves allow transitions to all other moves. You cultivate creativity to determine which transitions & moves are possible, as well as how they can be generalized and variated. Additionally, certain song rhythms and tempo’s facilitate patterns of movements.
Some bboy’s focus on the power moves, like mills, flares and airflares. Others focus on style, which is the use of movements to express a message. In other words, you cultivate your own personal language through dance, which transcends cultural boundaries just like visual art. In order to best express yourself through dance, you’ll need to develop counting beats and phrases, until you do it subconsciously. If you’re not counting beats and phrases, you’re not a dancer.
⊗ Tricking & Parkour
Tricking requires extremely quick reflexes and a different kind of spatial awareness of the self. Whereas breakdancing requires awareness of the body in relation to itself towards the expression of your own personal language, tricking and parkour require a kind of spatial awareness of your self in relation to your environment and motion. You need to be able to subconsciously feel exactly where you are, with and without utilizing vision. Similarly to bboying, you need to understand and feel which moves you can transition to next.
An experienced parkour runner sees the world differently. Every physical scenario is an opportunity for challenge and self-expression. I’ll discuss tricking and parkour further in part five, in order to demonstrate how category theory can be used to help model something not usually considered mathematic.
⊗ Yoga
Yoga develops mind-body awareness, which is very important for spatial awareness. As you practice poses, you better understand how to balance in different planes at various joints. In contrast to spatial awareness, you develop the subconscious understanding of which muscles contribute to balance under various circumstances, which is part of mind-body awareness. Yoga can also facilitate the exploration of meditative states of consciousness and helps develop healthy full breathing patterns. We all breath, but not everyone oxygenates as well as they could.
⊗ Acting
This is the combination of a wide variety of skills that require high emotional intelligence and accurate self-perception. Even for those of us who don’t plan on being an actor, acting can facilitate the development of this emotional intelligence by requiring us to assume roles where we have to empathize with our character, as well as other actors. Acting requires expressiveness, self-understanding and the ability to see things from more than one viewpoint, both visually and emotionally. It requires the development of acute spatial awareness, accurate visual/aural self-perception and empathy with fellow actors and your audience.
Actors need to be aware of how people will interpret various expressions, as well as how other actors will respond to them. You’ll need to cooperate with these actors in the creation of an experience conveying some definite meaning that contributes to development in the overall work. But you’ll need to do so without detracting from some possibly unknown and/or indefinite meaning.
Similar to how painters develop inner vision to ideate paintings, actors develop an inner vision to ideate scenarios with other people, which seems very complicated to me. Development of various kinds of inner vision is dependent on adept coordination of cognitive faculties. You’ll notice that painters will exhibit great visual memory & ideation. Similarly, actors will exhibit great situational memory and ideation of possibilities.
Proficiently trained neural networks can interpret & classify content, but they can also be inverted to produce content. This concept is clearly demonstrated in the arts ability to develop a particular kind of creative vision.
⊗ Improv
Like acting, improv requires this awareness of how situations will be perceived as entertaining by the audience. However, you have to be more familiar with the possibilities, so that you can work with the other actors to create the most entertaining experiences for your audience, while maintaining the novelty. Improv requires empathizing with your performers in order to understand how they’ll react to various situations.
Interestingly, there are some overlaps with math and category theory: you want to create situations the maximize both the entertainment value and the number of possible transitions to other situations. This is kind of the basis of “Yes And,” which is a trick that improv actors use to prevent a dead end and allow another actor to pursue the ideation of his own scenario. Don’t know what to say? Yes And. Need more information about the direction your partner wants to take? Yes And.
Improv actors would need to be familiar with all the possible direcitons that a conversation or scenario could take. You’ll need the short-term memory and listening skills to empathize with your fellow performers. You’ll also need the spontaneity and creativity to create novel situations. These need to be novel both to the audience and to the performers. *In order to judge whether or not something is novel, you need to understand how various situations & possibilities are similar to each other, *which is kind of a mathematic basis for creativity. ** Thus, improv can improve empathy, but also spontaneity by developing our subconscious ability to preprocess these scerarios in order to present our conscious mind with possibilities.
⊗ Directing
Directing requires innate understanding of the perception of how a scene and a work will be perceived. Like actors, directors need the same inner vision to develop possibilities of how a writer’s vision will be portrayed. Furthermore, they need to understand more generalized patterns of portraying this vision. Directors need to understand how the senses can be used to direct the focus of the audience, similar to how a writer must understand how their words will direct the thoughts of the audience. Directors must then use these techniques to create a controlled experience that facilitiates the audience’s exploration of greater ideas behind the work.
Additionally, directors must understand more about the logistics behind the production of a work. Similar to how a painter coordinates his various techniques towards implementing his vision, a director needs to coordinate with production and other teams to help orchistrate these logistics. Certain scenes require specific lighting that focuses the viewer’s attention, so a director needs to be aware of those details.
The director is going to be more focused on overall definite and indefinite meaning of their work than the actors. So they need to understand the abilities and tendencies of their actors, in order to accurately portray their vision. The best directors sort of funnel their audience through a very specific experience. Quentin Tarantino’s Jackie Brown is a spectacular example of this, as are his other works.
Obviously, directing movies isn’t possible for everyone. But meditating on what it would be like to direct a work and on the processes used to create the work is a powerful exercise.
⊗ Skateboarding
Like tricking, skateboarding develops spatial awareness, but it requires an acute understanding of how to manipulate an object as an extension of your body. Skateboarding requires extremely quick reflexes, so you develop muscle memory and balance. But in order to develop the techniques required for moves, you need to be creative in how you approach the problems. In addition to learning specific moves, you also need to be capable of understanding certain generalized techniques, such as countering each foot’s motion with the other foot so that the board remains centered below your body.
So you need considerable muscle memory, but it’s a dynamic kind of muscle memory. As you further generalize the moves, you have instantly be in tune with how your movements and foot motions affect each other and the board. You need to develop a spatial awareness that allows you to know the board position and rotation based on feel, rather than sight. I’ll further discuss skateboarding technique in part five, using category theory to model the interactions.
Similar to how a parkour runner can’t help but walk through life seeing all the possibilities around them, a skater will also observe these opportunities for challenge and self-expression.
⊗ Martial Arts
Martial arts might be one of the most rewarding pursuits. It interests me most because sparring requires the conditioned, subconscious application of physical strategy. Similar to chess, it requires backwards induction and ideation of paths to reach a particular objective. In contrast to chess, it’s much more crucial to be capable of empathizing with your opponent in order to read their strategy. Development of such a strategy requires short-term memory.
“If you know the enemy and know yourself, you need not fear the result of a hundred battles. If you know yourself but not the enemy, for every victory gained you will also suffer a defeat. If you know neither the enemy nor yourself, you will succumb in every battle.” - Sun Tzu
As sparring is not a strictly defined turn-based game, it’s much more loosely defined than chess. It requires a kind ineffable mental process to reactively construct the physical application of strategy. You need to be aware of how your actions are perceived by your opponent in order to understand how your opponent is constructing their perception of you. What I find most interesting is this reactive development of a particular kind of strategy & tactics, the goal of which is to be incapable of being completely understood by your opponent. A strategy for which counter-tactics cannot be predicted or defined or understood cannot be strategically unraveled. There’s that math again: how do you identify patterns which were specifically developed to be indefinable? How do you develop or define patterns or strategies specifically to escape definition?
Or as the Tao Te Ching so eloquently states:
“The Tao that can be spoken is not the eternal Tao
The name that can be named is not the eternal name
The nameless is the origin of Heaven and Earth
The named is the mother of myriad things”
But martial arts is physcial and requires muscle memory. I posit that by entangling empathy, spatial awareness, strategy and muscle memory, that martial arts develop certain orchestrations of cognitive functions that can be generalized in many other situations. Martial arts requires spatial awareness of self, but also of your opponent. You need to be able to read your opponent to understand his or her capabilities. You need to learn to defend critical spaces, such as generally blocking the critical space around your face. Balance is key. Disrupting balance means that your opponent’s space of applyable reactions becomes extremely limited – a key concept in game theory – so understanding how balance works in general is fundamental to martial arts. But you must be capable of strategizing with these inferences. And it’s ironic how crucial empathy is to martial arts. You must clearly see how your opponent sees.
⊗ Martial Arts with Weapons
Like skateboarding, fencing and kendo also require spatial awareness generalized to an object. Whereas, with skateboarding, your learned behaviors focus on a single object type, with weapon techniques, you tend to start generalizing the object itself. As you examine different combinations of weapons, you’ll learn about advantaged and disadvantaged scenarios and how the weapon choice affects the space you need to defend. Techniques for various weapons also affect available stances while attacking or defending, which enable you to determine how best to throw your opponent off balance.  And through training, you relegate technique and other processes to your subconsious, which further frees your conscious mind to explore strategy when employing these techniques.
Bruce Lee Demonstrating Mastery of Spatial Awareness
In the video above, Bruce Lee demonstrates a mastery of spatial awareness, as applied to a strategic situation. However, be aware that the coordination of nunchuku technique requires time. Bruce Lee’s choice of nunchuku movements restricts the space of movements available next. So success in this game not only requires mastery of technique, but also mastery of the coordination of technique to ensure versatility of next available techniques. Additionally, you need acute understanding of your opponent’s options in order to coordinate these techniques to allow your self the time and available reactions. However, as you’ll see with category theory, you find that your model is never really restricted. Instead of only considering the next available moves, you simply start understanding the nature of how moves can be combined. In this way, you’ll find that your behavior can never truly be pigeon-holed, as long as you respect and avoid certain conditions throughout the game. Therefore, with experience, you retain the ability to react to nearly any situation.
⊗ Languages
More important for cognitive development than martial arts or even programming, learning multiple languages not only furthers your cultural understanding, but also enables you mind to generalize the metaphysical data that language encodes. This is especially true when learning more differentiated languages, but less useful when learning Romance languages, since they typically encapsulate the same relationships between concepts. Romance languages have diverged fairly signifantly though. Learning a new language is most effective during early childhood, which is where the benefits of conceptual abstraction will also be the greatest. This is why it’s unfortunately ironic for certain Americans to disdain bilingualism.
In conversation, a language holistically coordinates the entire brain. Therefore, in respect to the mind, language could be considered as it’s own dimension. That is, the same concepts and ideas can be abstracted for expression in multiple lanuages. Because abstraction requires generalization, then after learning more languages, the mind would begin to transcend the dimension of language. And therefore, IMO, your mind becomes moreso capable of directly understanding concepts and their relationships, without having languages and words as parameters. Instead it deals with pure semantics of concepts.
Learning new languages with alternative written expression teaches us more about phonetics and increases the efficiency and proficiency for visiual symbolic recognition and manipulation. New languages are challenging, requiring short-term memory to support the learning processes, as well as very proficient long-term memory to support retention of vocabulary. Learning new word order and expanding out of the traditional SVO of Romantic languages is interesting, indeed. In computer science and in Chomsky’s works, you’ll find these tree-based parsing concepts everywhere and essential for the development of programming languages.
 These include watching TV, aimlessly browsing social media and others. While sometimes watching TV can allow you to reflect on the story and characters, it’s too easy for your brain to do passively. More active pursuits, even video games, are much better. Video games can actually be quite beneficial to the mind, to some extent. World of Warcraft can teach people the value of fulfilling a role in a group, just like the example of playing in a band listed above. However, ideally, you’ll have some variety to the activities you pursue, which will include some with physical activity. Logging into WoW for 40+ hours a week isn’t beneficial unless you’re a pro gamer.
The Similarity of All Things
Many are trapped believing that they are incapable of learning quickly, that it’s not worthwhile. Unfortunately, many people lack the mental modeling required to efficiently learn new things. IMO, the lack of efficient and robust modeling for cognition and metacognition is one reason some people seem to learn much faster, while others barely keep up. I believe that early childhood experiences and thought processes determine intelligence and cognitive functionality moreso than genetics. This is why family and early childhood care are crucial for development.
Our beliefs determine what experiences we’re willing to try, as well as how many times we’ll be willing to keep trying when we fail. Our behavioral metaprogramming and programming determine how we approach problems and whether we continue to practice on our own or wait for someone else to show us. Our outlook on life determines the perspective with which we choose to view failure, as well as the light we cast it in.
But for those who have the determination and versatile perspective required for perseverence, a more expansive system of modeling can facilitate learning. You can choose to learn new activities, just to expand your cognitive skills. The repeated metacognition required for introspection becomes more natural the more often you do this. As your conscious mind constructs models per-category, the subconscious generalizes these models so they can be reused for other processes. But if you have the powerful ability to construct models for any category, then you can use the conscious mind to deconstruct anything into a familiar model.
It is extremely powerful to have the capability to see the similiarities in all things. The more you understand how and why all things are similar, then the more you can apply your acquisition of knowledge towards the acceleration of learning. More simply, the more you know, the faster you learn new things - because they are all similar. But also, the more you’ve learned, the more proficient your cognitive abilities are, which provides further acceleration.
Your rate of learning is a function of (1) everything you know (2) your ability to interrelate your knowledge to model new things (3) the proficiency of each base cognitive function and (4) your ability to coordinate those cognitive functions. Therefore, by improving on any of these four points, you will accelerate your rate of learning.
 In order to optimize the contribution of new knowledge towards the acceleration of learning, we also need to discover and understand a unified framework of modeling any problem space. And that framework is category theory. Part four provides an overview of category theory – at least, from my imperfect understanding of it – and describes my experience in discovering why it’s so flexible.


Copyright |
Copyright and Reprint PermissionAbstracting is permitted with credit to the source. Libraries are permitted to photocopy beyond the limit of U.S. copyright law for private use of patrons those articles in this volume that carry a code at the bottom of the first page, provided the per-copy fee indicated in the code is paid through Copyright Clearance Center, 222 Rosewood Drive, Danvers, MA 01923. For reprint or republication permission, email to IEEE Copyrights Manager at<EMAIL_ADDRESS>All rights reserved. Copyright ©2018 by IEEE. Author Responsibilities
The IEEE distributes its technical publications throughout the world and wants to ensure that the material submitted to its publications is properly available to the readership of those publications. Authors must ensure that their Work meets the requirements as stated in section 8.2.1 of the IEEE PSPB Operations Manual, including provisions covering originality, authorship, author responsibilities and author misconduct. More information on IEEE’s publishing policies may be found at
Author/Employer RightsIf you are employed and prepared the Work on a subject within the scope of your employment, the copyright in the Work belongs to your employer as a work-for-hire. In that case, the IEEE assumes that when you sign this Form, you are authorized to do so by your employer and that your employer has consented to the transfer of copyright, to the representation and warranty of publication rights, and to all other terms and conditions of this Form. If such authorization and consent has not been given to you, an authorized representative of your employer should sign this Form as the Author. Contact Information
For technical inquiries about the content of these proceedings, please contact: |


Oscar
Every year is the best year.
Surprised 2019
Unexpected 2018
Romantic 2017
Beautiful 2016
Biographical 2015
Black-comedy 2014