Ecosyste.ms: OpenCollective

An open API service for software projects hosted on Open Collective.

Ruffle

Adobe Flash Player emulator written in the Rust programming language.
Collective - Host: opensource - https://opencollective.com/ruffle - Website: https://ruffle.rs - Code: https://github.com/ruffle-rs

nit: Consistently spell "GitHub" as such in text

github.com/ruffle-rs/ruffle-rs.github.io - 35ad23b623ff1bc039c96c0f9ef7ff2e7d7f27f0 authored 11 months ago by TÖRÖK Attila <[email protected]>
tests: Add tests for `_lockRoot`

github.com/ruffle-rs/ruffle - 95057ee2143fe9aa11d155563eb906d29009bce7 authored 11 months ago by Lord-McSweeney <[email protected]>
avm1: Correctly access topmost `LoaderDisplay` or `Stage` instead of accessing the parent of `avm1_root`

This fixes a case where `lockRoot` is involved.

github.com/ruffle-rs/ruffle - 96376822161a5ff3d317d28da01a46f43467db16 authored 11 months ago by Lord-McSweeney <[email protected]>
avm2: Stub XML::namespaceDeclarations

Improves #14734

github.com/ruffle-rs/ruffle - 1b5eb2e8e258a81767652e3d6dfd8786284395e3 authored 11 months ago by Tom Schuster <[email protected]>
fix(deps): update rust dependencies

github.com/ruffle-rs/ruffle - 3c115238fdf05a6965fde036f282d19730cfb07f authored 11 months ago by renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
chore: Update translations from Crowdin

github.com/ruffle-rs/ruffle - 3f17d1c7788b198519b8c66953a47d44afc60798 authored 11 months ago by Crowdin Bot <[email protected]>
chore: Update wasm-bindgen version references to 0.2.90

github.com/ruffle-rs/ruffle - dccd48dca82f7afa465b95f42d0292cffb08af7a authored 11 months ago by TÖRÖK Attila <[email protected]>
avm2: Implement XML.setLocalName

github.com/ruffle-rs/ruffle - 5b19ecec97615c45e53a2e6148d82ef56f617e5b authored 11 months ago by sleepycatcoding <[email protected]>
fix(deps): update wasm-bindgen

github.com/ruffle-rs/ruffle - e0a22b56ced10fea19d29979ae4611fe54b02d6f authored 11 months ago by renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
avm2: Stub Accelerometer.isSupported

github.com/ruffle-rs/ruffle - df3a033b77a06c075baf4c47173087b2316331f6 authored 11 months ago by Abiel Deneke <[email protected]>
ci: Remove PR tracking action

github.com/ruffle-rs/ruffle - e5e1a8e11b50c3bd905118a9145865673a5bcf30 authored 11 months ago by Nathan Adams <[email protected]>
ci: Use right auth token for tracking merged PRs

github.com/ruffle-rs/ruffle - f908b8b33ec560166b64adcd6814d7b3a2d4bdf8 authored 11 months ago by Nathan Adams <[email protected]>
ci: Track merged PRs in a project

github.com/ruffle-rs/ruffle - 1abf8b49141f4e9095b605cb034549047a579ec7 authored 11 months ago by Nathan Adams <[email protected]>
Bump next from 14.0.3 to 14.0.4

Bumps [next](https://github.com/vercel/next.js) from 14.0.3 to 14.0.4.
- [Release notes](https:/...

github.com/ruffle-rs/ruffle-rs.github.io - b3164584e54b8dc1f95ced46a3f24a7bbbd6707f authored 11 months ago by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bump postcss from 8.4.31 to 8.4.33

Bumps [postcss](https://github.com/postcss/postcss) from 8.4.31 to 8.4.33.
- [Release notes](htt...

github.com/ruffle-rs/ruffle-rs.github.io - 193b7888fc6163edac1b9a2b50abd811771af4fc authored 11 months ago by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bump @tabler/icons-react from 2.45.0 to 2.46.0

Bumps [@tabler/icons-react](https://github.com/tabler/tabler-icons/tree/HEAD/packages/icons-reac...

github.com/ruffle-rs/ruffle-rs.github.io - 27a021a5a9216b2397a9d15f8d0b3f4f7bb7a497 authored 11 months ago by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bump typescript from 5.3.2 to 5.3.3

Bumps [typescript](https://github.com/Microsoft/TypeScript) from 5.3.2 to 5.3.3.
- [Release note...

github.com/ruffle-rs/ruffle-rs.github.io - 72961522483553c44151e95d24665df0792f6be6 authored 11 months ago by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bump prettier from 3.1.1 to 3.2.2

Bumps [prettier](https://github.com/prettier/prettier) from 3.1.1 to 3.2.2.
- [Release notes](ht...

github.com/ruffle-rs/ruffle-rs.github.io - 22933877f8782345f7bc84d3f403c120195e22e1 authored 11 months ago by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
core: Improve caret blinking behavior

Caret now blinks only when idle.

github.com/ruffle-rs/ruffle - 5bd643cd4fcde0792adb42d471fa02e92cc0c62e authored 11 months ago by Kamil Jarosz <[email protected]>
avm2: Throw null param error in navigateToURL

Fixes #14733

github.com/ruffle-rs/ruffle - a638715bd87d818d134a70659e7124234b992447 authored 11 months ago by nosamu <[email protected]>
Add opengraph info to blog posts

github.com/ruffle-rs/ruffle-rs.github.io - de73a08d52d0a48f5400219b51ae47508ca94b9b authored 11 months ago by Nathan Adams <[email protected]>
New blog post: "2023 in review"

github.com/ruffle-rs/ruffle-rs.github.io - 8a354f145bd402ba6f89ec2587ab218d199c90d5 authored 11 months ago by Nathan Adams <[email protected]>
Give each blog post header a unique id

github.com/ruffle-rs/ruffle-rs.github.io - e88b4796e5a69ee0b7ddafa3ce7029908e24a9f0 authored 11 months ago by Nathan Adams <[email protected]>
avm2: Add weird parse-as-uint special case to Object keys

When handling dynamic properties, avmplus will always try to
parse the string key name as a uint...

github.com/ruffle-rs/ruffle - 3cbfbdd4a61c4d971ad9e5c218e25b22f8de6d54 authored 11 months ago by Aaron Hill <[email protected]>
chore: Disallow "kyren" as GitHub organization for crate sources

Since we have switched to the published gc-arena 0.5.0 release.

github.com/ruffle-rs/ruffle - a930c6fd5fd04c9408d6f483ba8da7e3b53b69c6 authored 11 months ago by TÖRÖK Attila <[email protected]>
chore: Deny unknown crate registry and git repository sources

github.com/ruffle-rs/ruffle - 2c26eaae390313038516e60884c113d3e2efa987 authored 11 months ago by TÖRÖK Attila <[email protected]>
Bump jpegxr dependency for wasm ABI bugfix

This fixes a crash when loading an ATF 'compressed alpha'
texture under wasm. The rust-side jpeg...

github.com/ruffle-rs/ruffle - 2557d1467810ff48c913fa7a6939242287a7224b authored 11 months ago by Aaron Hill <[email protected]>
avm2: Add API versioning to DisplayObjectContainer

github.com/ruffle-rs/ruffle - 55cdfab3d311f8410d804dfc7c2d158b2d1612b0 authored 11 months ago by TÖRÖK Attila <[email protected]>
avm2: Cleanup: Make `Domain::get_class` not return a `Result`

As it was always the `Ok` variant anyway.

github.com/ruffle-rs/ruffle - 4c1d59c4a397dce5d3363752f874d9bce58f90fd authored 11 months ago by TÖRÖK Attila <[email protected]>
avm2: Stub all remaining TextField methods and properties

github.com/ruffle-rs/ruffle - 195822885ee8aa2c15848492bc35f95735d66a55 authored 11 months ago by Aaron Hill <[email protected]>
Apply 'xml["@myattr"]' logic when setting/deleting properties

We previously only applied this when getting properties.

github.com/ruffle-rs/ruffle - 639d17d2596ef75c2d4951d41356c25c45db02f0 authored 11 months ago by Aaron Hill <[email protected]>
avm2: Correctly handle `@*` in string_to_multiname

github.com/ruffle-rs/ruffle - 2775c917bf61254dbddf67b604d36157efdff7d5 authored 11 months ago by sleepycatcoding <[email protected]>
core: Provide a better fallback for Ming typefaces

github.com/ruffle-rs/ruffle - 79c5112f45bf2153e2260924a865e7fbbbcdfacc authored 11 months ago by Tom Schuster <[email protected]>
web: Add special case for base="."

github.com/ruffle-rs/ruffle - d1fff8a8ff6b3b557fd2ed04b36428e688fba046 authored 11 months ago by nosamu <[email protected]>
avm2: Implement TextField.restrict

github.com/ruffle-rs/ruffle - 2ef63d3a61b46d45f77fa9f97d2f38ca16e02335 authored 12 months ago by Kamil Jarosz <[email protected]>
avm1: Implement TextField.restrict

github.com/ruffle-rs/ruffle - 1c15cd55b951f0b34b9b38ad1d213e21d5156e34 authored 12 months ago by Kamil Jarosz <[email protected]>
core: Support TextField.restrict when pasting

github.com/ruffle-rs/ruffle - 70486465e8380cb846dbf77d57295867533fe61c authored 12 months ago by Kamil Jarosz <[email protected]>
tests: Add AutomatedEvent::SetClipboardText

Currently in tests (input.json) it is possible to trigger Ctrl-V using:

{ "type": "TextCont...

github.com/ruffle-rs/ruffle - 1db34993a2060cd874380c640132244300d39e47 authored 12 months ago by Kamil Jarosz <[email protected]>
core: Implement restrict for EditText

EditTextRestrict models the `restrict` property, which is used
to specify which characters the u...

github.com/ruffle-rs/ruffle - 43d4c26b77c5a70fb8d413af3ee73c2edc9895c7 authored 12 months ago by Kamil Jarosz <[email protected]>
core: Fix caret and selection rendering

This commit fixes issues with caret and selection rendering:
1. They had the wrong height and we...

github.com/ruffle-rs/ruffle - 5ece6981ce3c502c5e57d00ac08894cc56d848d0 authored 12 months ago by Kamil Jarosz <[email protected]>
desktop: Support F13..F24 keys

github.com/ruffle-rs/ruffle - 078b264c19e0eca22356bad20a499c7f50101d9e authored 12 months ago by TÖRÖK Attila <[email protected]>
web: Support F13..F24 keys

github.com/ruffle-rs/ruffle - 6b7bca1fd63c8fa5ca93baae51cf9eb64168e383 authored 12 months ago by Nathan Adams <[email protected]>
core: Support F13..F24 keys

github.com/ruffle-rs/ruffle - e993f5ce465939c21440e5f5684f7d770bf96fec authored 12 months ago by Nathan Adams <[email protected]>
core: Font kerning is in points not pixels

github.com/ruffle-rs/ruffle - 7498ed51d83564b36fc7b66e19e2d444ab82841e authored 12 months ago by Tom Schuster <[email protected]>
core: Use sans instead of serif when missing a font

github.com/ruffle-rs/ruffle - ae8c0148c27c37e69e9a450ea2ff58c4a2782ae2 authored 12 months ago by Tom Schuster <[email protected]>
avm1: Add support for onSetFocus & onKillFocus

Methods `onSetFocus` & `onKillFocus` are invoked when focus is changed
for `TextField`, `Button`...

github.com/ruffle-rs/ruffle - 5feafb2ca36ecdf97363476b0bc2982a0a6937c4 authored 12 months ago by Kamil Jarosz <[email protected]>
avm2: Stub flash.text.engine.GraphicElement

github.com/ruffle-rs/ruffle - c01ab53d2e49515cfd5f5bffb83f2760f1d29b32 authored 12 months ago by Aaron Hill <[email protected]>
avm2: Stub TextField.getCharBoundaries

github.com/ruffle-rs/ruffle - db623a90e85275eb4b28b5543cb7874a191eb597 authored 12 months ago by Aaron Hill <[email protected]>
render: Implement PixelBender Operation::Select (renamed from Loop) (#14503)

github.com/ruffle-rs/ruffle - 57f69631337e8145d4d15da310be662ee1fe7c73 authored 12 months ago by Aaron Hill <[email protected]>
avm2: Implement XML.normalize

github.com/ruffle-rs/ruffle - aeedec19fa69889eaf0b6135c8367f18916ac009 authored 12 months ago by sleepycatcoding <[email protected]>
build(deps): bump follow-redirects from 1.15.2 to 1.15.4 in /web

Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.2 to 1....

github.com/ruffle-rs/ruffle - 46f95a95224bac0c79e673ea67e588e84b957dbd authored 12 months ago by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
tests: Add a test for optimized index access from the interpreter

github.com/ruffle-rs/ruffle - 629e8f89ab79afc5ed44cb5888b80ee442ed254e authored 12 months ago by Tom Schuster <[email protected]>
avm2: Optimize op_get_property index access on array-like

github.com/ruffle-rs/ruffle - 82ce40af82f366afbaea0179d2deb5565aec421d authored 12 months ago by Tom Schuster <[email protected]>
avm2: Inline Avm2::peek

github.com/ruffle-rs/ruffle - 532279b4e63768dfef95b0171510d9a03bdea66d authored 12 months ago by Tom Schuster <[email protected]>
core: Support Japanese font defaults

github.com/ruffle-rs/ruffle - d89e4536b3c396c7f19db83df35c55969b5a9285 authored 12 months ago by Nathan Adams <[email protected]>
Bump prettier from 3.1.0 to 3.1.1

Bumps [prettier](https://github.com/prettier/prettier) from 3.1.0 to 3.1.1.
- [Release notes](ht...

github.com/ruffle-rs/ruffle-rs.github.io - a4c713b6a74a76c6a0618f37a9077c310b6e403a authored 12 months ago by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
avm2: Improve Graphics.drawGraphicsData stubs

We now produce stubs or clearer errors for unsupported argument
combinations, instead of unclear...

github.com/ruffle-rs/ruffle - 9a96941de9c9e0570cecbc0ef987b19400d0cba5 authored 12 months ago by Aaron Hill <[email protected]>
core: Don't treat known aliases as default fonts before trying to load them as device fonts

github.com/ruffle-rs/ruffle - ba3d1bbf664d26a17bbc740a07ebdcf999ffc228 authored 12 months ago by Tom Schuster <[email protected]>
web: Fix download link

github.com/ruffle-rs/ruffle - 4db454e933d742cfcb6e5296aff9f45af1e2c8af authored 12 months ago by nosamu <[email protected]>
chore: Update translations from Crowdin

github.com/ruffle-rs/ruffle - 6e1e26e0e8ef26aaee6c5c361191475dc33eb5d1 authored 12 months ago by Crowdin Bot <[email protected]>
desktop: define default fonts

github.com/ruffle-rs/ruffle - 4db87a9643e23e3f0ae91694d89a67c9b566074d authored 12 months ago by Tom Schuster <[email protected]>
desktop: Load device fonts from system

github.com/ruffle-rs/ruffle - 2a2bcbbfbcff41cde7f85c72fbb6ccbdbe45a22e authored 12 months ago by Tom Schuster <[email protected]>
core: Explicitly match and use default fonts, before loading device fonts

github.com/ruffle-rs/ruffle - b34d3c9ad2819b33483ef7e74945fd4ec58f0d86 authored 12 months ago by Tom Schuster <[email protected]>
core: Add FontFace struct, for loading a Font from a file binary

github.com/ruffle-rs/ruffle - 7e4ac986f20d33dd73ca23ed6484ab0d47eabb51 authored 12 months ago by Nathan Adams <[email protected]>
tests: Add a device font test using Tinos

github.com/ruffle-rs/ruffle - f47e15b68ccca709b79aece30d81d9b950488958 authored 12 months ago by Tom Schuster <[email protected]>
Bump postcss-preset-mantine from 1.11.0 to 1.12.3

Bumps [postcss-preset-mantine](https://github.com/mantinedev/postcss-preset-mantine) from 1.11.0...

github.com/ruffle-rs/ruffle-rs.github.io - 2bf91fa68172849bcbc4d51128c74834f494ef7b authored 12 months ago by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bump @types/react-dom from 18.2.16 to 18.2.18

Bumps [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/reac...

github.com/ruffle-rs/ruffle-rs.github.io - 17e4bcfea480934f25723f7e054e1cd8ef90ed52 authored 12 months ago by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bump jsdom from 23.1.0 to 23.2.0

Bumps [jsdom](https://github.com/jsdom/jsdom) from 23.1.0 to 23.2.0.
- [Release notes](https://g...

github.com/ruffle-rs/ruffle-rs.github.io - 592ce79ed9403745102ac77d75ac3f17d2a9ab9a authored 12 months ago by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Update avm2 progress

github.com/ruffle-rs/ruffle-rs.github.io - db499100c8683b230b56af1520dbda9524fafeab authored 12 months ago by Nathan Adams <[email protected]>
extension: Bail if postMessage event has no data

Fixes #14486

github.com/ruffle-rs/ruffle - d97314d3157cbf78f534629d4bd60d50e19e2555 authored 12 months ago by nosamu <[email protected]>
Bump @typescript-eslint/eslint-plugin from 6.13.1 to 6.18.0

Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/...

github.com/ruffle-rs/ruffle-rs.github.io - 156e765261bfd9b172faede2051e3a8e139f9ee3 authored 12 months ago by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Correctly handle zero-frame MovieClip

A MovieClip with zero frames can still have a child added
through ActionScript, which ticks norm...

github.com/ruffle-rs/ruffle - 6c2e28a08f3a2d4236f94c3f65cdba7ae39f2cc8 authored 12 months ago by Aaron Hill <[email protected]>
docs: Use new location for sponsor logos

github.com/ruffle-rs/ruffle - f8219a06e0fab94fc3116e7ec569f227ee0462dc authored 12 months ago by Daniel Jacobs <[email protected]>
docs: Update README to point to the new logo SVG location

github.com/ruffle-rs/ruffle - b43981f3d9b61ebeab72570db0b6b38b06297615 authored 12 months ago by Daniel Jacobs <[email protected]>
fix(deps): update rust dependencies

github.com/ruffle-rs/ruffle - a328deab117be08e2c3d07e8db72c92171a4c9e3 authored 12 months ago by renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
avm2: Improve handling of Stage3D profile

We now validate the passed in profile, and return the selected profile
from 'Context3D.profile'....

github.com/ruffle-rs/ruffle - 47db84473a639c405289bb86ce238a83af574137 authored 12 months ago by Aaron Hill <[email protected]>
Bump eslint-config-next from 14.0.3 to 14.0.4

Bumps [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-ne...

github.com/ruffle-rs/ruffle-rs.github.io - ab67db58e1a2e40e3cbc01192d80532113cc4587 authored 12 months ago by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Make demo open in new tab

github.com/ruffle-rs/ruffle-rs.github.io - ed1adc23fb6cf3a57e2c0b4dec5a3498dc5fc1c6 authored 12 months ago by Nathan Adams <[email protected]>
avm2: Throw correct errors in Graphics.[drawPath,drawGraphicsData]

This is pretty straightforward, except for the fact that Flash
completely ignores the provided c...

github.com/ruffle-rs/ruffle - 3156bf31cefbfb82f5dbc370145e27ec5d4500df authored 12 months ago by Aaron Hill <[email protected]>
Bump @next/bundle-analyzer from 14.0.3 to 14.0.4

Bumps [@next/bundle-analyzer](https://github.com/vercel/next.js/tree/HEAD/packages/next-bundle-a...

github.com/ruffle-rs/ruffle-rs.github.io - 13e25a1df06665359277ad82c561c3e2ac9a1542 authored 12 months ago by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bump eslint-config-prettier from 9.0.0 to 9.1.0

Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 9.0.0 to...

github.com/ruffle-rs/ruffle-rs.github.io - afc34fc6a18a7d9358285b51860f9b165cdb19d3 authored 12 months ago by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bump @types/node from 20.9.3 to 20.10.7

Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) fro...

github.com/ruffle-rs/ruffle-rs.github.io - 3116d1f52e51faf7dddcc8d27a1726f1915b63af authored 12 months ago by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bump @tabler/icons-react from 2.42.0 to 2.45.0

Bumps [@tabler/icons-react](https://github.com/tabler/tabler-icons/tree/HEAD/packages/icons-reac...

github.com/ruffle-rs/ruffle-rs.github.io - a54fd22dc4f1e4620bba40d92a09c851b2331ec4 authored 12 months ago by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Emphasise the key points a bit more

github.com/ruffle-rs/ruffle-rs.github.io - 227458293d0a0db165f8b923e4422cb29136a1a1 authored 12 months ago by Nathan Adams <[email protected]>
Add tree graph link

github.com/ruffle-rs/ruffle-rs.github.io - 183d296f4aa7d8371ceef4f86c0c4d3c095115ba authored 12 months ago by Nathan Adams <[email protected]>
Add background to each sponsor

github.com/ruffle-rs/ruffle-rs.github.io - c5148e706102904eed3d9a06debca3fb42c246a7 authored 12 months ago by Nathan Adams <[email protected]>
Hide contributing image on smaller screens

github.com/ruffle-rs/ruffle-rs.github.io - f036350840777947818d7ae1a922fb1dd7538249 authored 12 months ago by Nathan Adams <[email protected]>
Don't open Other Downloads in a new tab

github.com/ruffle-rs/ruffle-rs.github.io - c7c8ca632a5349f09258fc32c04a9d04a0531640 authored 12 months ago by Nathan Adams <[email protected]>
First Compatibility draft

github.com/ruffle-rs/ruffle-rs.github.io - fb5dc1e6cbcfd36737056be2373513b8e767a013 authored 12 months ago by Nathan Adams <[email protected]>
Add link to more nightlies

github.com/ruffle-rs/ruffle-rs.github.io - 42ac18fe0f968904c9833d8fbc86d5f48b23efc7 authored 12 months ago by Nathan Adams <[email protected]>
Added firefox-for-android link

github.com/ruffle-rs/ruffle-rs.github.io - e911f8f52cd23551899e9211dc6d7229fc1e6aba authored 12 months ago by Nathan Adams <[email protected]>
Make ruffle logo in header clickable

github.com/ruffle-rs/ruffle-rs.github.io - f9fae392348db126256fde03669ee6a026621b13 authored 12 months ago by Nathan Adams <[email protected]>
Change sponsor background

github.com/ruffle-rs/ruffle-rs.github.io - 7bfc8173706b6a5be80883d72439ba54b702a1ea authored 12 months ago by Nathan Adams <[email protected]>
Add some download links

github.com/ruffle-rs/ruffle-rs.github.io - 6cb8c5d8188f6e97d27d7b7085996c00a71db5f4 authored 12 months ago by Nathan Adams <[email protected]>
Handle if ruffle failed to load

github.com/ruffle-rs/ruffle-rs.github.io - eaeb41f71ac8baef1512d7b1837f765bd4c579e4 authored 12 months ago by Nathan Adams <[email protected]>