Ecosyste.ms: OpenCollective

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

GraphQL Java

GraphQL Implementation for Java
Collective - Host: opensource - https://opencollective.com/graphql-java - Website: https://graphql-java.com - Code: https://github.com/graphql-java

Merge pull request #3519 from graphql-java/dependabot/gradle/com.fasterxml.jackson.core-jackson-databind-2.16.2

Bump com.fasterxml.jackson.core:jackson-databind from 2.16.1 to 2.16.2

github.com/graphql-java/graphql-java - cc24040f75a874cf6bbad03e0e578781feeb67e8 authored 10 months ago by dondonz <[email protected]>
Merge pull request #3520 from graphql-java/dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.14.12

Bump net.bytebuddy:byte-buddy-agent from 1.14.11 to 1.14.12

github.com/graphql-java/graphql-java - f06b475f187dfc7151c8f9d4c5b101a75ef3694d authored 10 months ago by dondonz <[email protected]>
Merge pull request #3522 from graphql-java/dependabot/gradle/net.bytebuddy-byte-buddy-1.14.12

Bump net.bytebuddy:byte-buddy from 1.14.11 to 1.14.12

github.com/graphql-java/graphql-java - dc4b2a160d143205540acddd4c0fa84c0659c72e authored 10 months ago by dondonz <[email protected]>
Bump net.bytebuddy:byte-buddy-agent from 1.14.11 to 1.14.12

Bumps [net.bytebuddy:byte-buddy-agent](https://github.com/raphw/byte-buddy) from 1.14.11 to 1.14...

github.com/graphql-java/graphql-java - b33401ff5c001dc362ae4be4bf56111e51094ad6 authored 10 months ago by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bump net.bytebuddy:byte-buddy from 1.14.11 to 1.14.12

Bumps [net.bytebuddy:byte-buddy](https://github.com/raphw/byte-buddy) from 1.14.11 to 1.14.12.
-...

github.com/graphql-java/graphql-java - a49166e2ea6dc8265b2f7a9e18e85eb791d790b5 authored 10 months ago by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Merge pull request #3521 from graphql-java/dependabot/gradle/org.assertj-assertj-core-3.25.3

Bump org.assertj:assertj-core from 3.25.1 to 3.25.3

github.com/graphql-java/graphql-java - de3d33c4e7e20a98cddbf5cc665e7aee0f661e3d authored 10 months ago by dondonz <[email protected]>
Merge pull request #3523 from graphql-java/dependabot/gradle/org.junit.jupiter-junit-jupiter-5.10.2

Bump org.junit.jupiter:junit-jupiter from 5.7.1 to 5.10.2

github.com/graphql-java/graphql-java - 52cc796907fa951781792c4da3c523b53cf05d3f authored 10 months ago by dondonz <[email protected]>
Bump org.junit.jupiter:junit-jupiter from 5.7.1 to 5.10.2

Bumps [org.junit.jupiter:junit-jupiter](https://github.com/junit-team/junit5) from 5.7.1 to 5.10...

github.com/graphql-java/graphql-java - eb218925e7acd7dd368b0dfc01ad041fe633ed33 authored 10 months ago by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bump org.assertj:assertj-core from 3.25.1 to 3.25.3

Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.25.1 to 3.25.3.
- [R...

github.com/graphql-java/graphql-java - f4744d628f4663369dc94c48ae44bdee45f51ba8 authored 10 months ago by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bump com.fasterxml.jackson.core:jackson-databind from 2.16.1 to 2.16.2

Bumps [com.fasterxml.jackson.core:jackson-databind](https://github.com/FasterXML/jackson) from 2...

github.com/graphql-java/graphql-java - 8000acce51a2cfa1cc6f974b853fb001e98e2502 authored 10 months ago by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Merge pull request #3518 from gnawf/empty-directives-holder

Return empty singleton DirectivesHolder if directives are empty

github.com/graphql-java/graphql-java - 0bc2fd5481f3f11b2ed376a57739aeefbb15068d authored 10 months ago by Brad Baker <[email protected]>
Return empty singleton DirectivesHolder if directives are empty

github.com/graphql-java/graphql-java - e887ca117fcd1ae990ac5929367a584eee7216a0 authored 10 months ago by Franklin Wang <[email protected]>
Merge pull request #3481 from Juliano-Prado/fix-SubscriptionUniqueRootField

SubscriptionUniqueRootField validation to check multiple fragments - Validation Bug fix

github.com/graphql-java/graphql-java - 78d3278e2ca60e2fd8167575931ab8065e9d8db1 authored 10 months ago by Brad Baker <[email protected]>
Merge pull request #3506 from bhabegger/fix-issue-3434

Fix printing of union types

github.com/graphql-java/graphql-java - 768e507c600e0652957202be18349e32bd84cddd authored 10 months ago by Brad Baker <[email protected]>
Merge pull request #150 from graphql-java/add-community-tutorial

Add community tutorial

github.com/graphql-java/graphql-java-page - 1fe90e7a15eff000f380f1fd57f7867aaf44d0ab authored 10 months ago by dondonz <[email protected]>
Merge pull request #149 from iScheme4U/patch-1

Update sdl-directives.md

github.com/graphql-java/graphql-java-page - 07e6ad9ac224ac777ed358ce94eae36398e0f4d3 authored 10 months ago by dondonz <[email protected]>
Merge pull request #3492 from graphql-java/cf-benchmark

A CompleteableFuture benchmark

github.com/graphql-java/graphql-java - 4d817c26de8684a04d57f7b770606d8f20edd219 authored 10 months ago by Brad Baker <[email protected]>
Merge pull request #3488 from graphql-java/map-benchmark

Map benchmarks

github.com/graphql-java/graphql-java - 4307b3fdf521aef17ccb8140e526be4682b7b0ee authored 10 months ago by Brad Baker <[email protected]>
publishing of agent

github.com/graphql-java/graphql-java - 4912feb7818d4c71c3dd6dc6fd5be1a73b9a1fce authored 10 months ago by Andreas Marek <[email protected]>
Merge pull request #3433 from graphql-java/tracking-agent

adding a tracking agent

github.com/graphql-java/graphql-java - fbf4f4932c1ee95bb673921e03401f50ba2e9fcd authored 10 months ago by Andreas Marek <[email protected]>
Fix printing of union types

Closes #3434

github.com/graphql-java/graphql-java - 07c909e15d29e06c4f77c2c29fbc80be050a416b authored 10 months ago by Benjamin Habegger <[email protected]>
Update sdl-directives.md

Fix typo

github.com/graphql-java/graphql-java-page - d899c353f2931bcca4bfcd0208fe847207b0ed61 authored 10 months ago by Scheme <[email protected]>
Merge pull request #3499 from graphql-java/performance-branch

Get fieldDef improvements from Netflix

github.com/graphql-java/graphql-java - 6b7f6b780070b3bf0f7245194f0ae8725533e87c authored 10 months ago by Brad Baker <[email protected]>
Merge remote-tracking branch 'origin/master' into performance-branch

# Conflicts:
# src/main/java/graphql/execution/FieldValueInfo.java
# src/test/java/benchmark/Twi...

github.com/graphql-java/graphql-java - 1b3e9d4cf6c054492df3490733e8b7f92adbe242 authored 10 months ago by Brad Baker <[email protected]>
Merge pull request #3497 from graphql-java/dependabot/gradle/org.codehaus.groovy-groovy-3.0.21

Bump org.codehaus.groovy:groovy from 3.0.20 to 3.0.21

github.com/graphql-java/graphql-java - 5077ffb6eed28084bfabfdbb53841f3a7cd184c5 authored 10 months ago by dondonz <[email protected]>
Bump org.codehaus.groovy:groovy from 3.0.20 to 3.0.21

Bumps [org.codehaus.groovy:groovy](https://github.com/apache/groovy) from 3.0.20 to 3.0.21.
- [C...

github.com/graphql-java/graphql-java - 076678237f0af1266267967826bbcd5b8974a9c7 authored 10 months ago by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Merge pull request #3484 from graphql-java/deffered-callcontext-better-allocation

Does not allocate a default deferred context that is thrown away on transform

github.com/graphql-java/graphql-java - 2362ffdd97cd7aa10871ebfff1bdc5227b02b090 authored 10 months ago by Brad Baker <[email protected]>
Merge pull request #3439 from Juliano-Prado/defer-validation

Defer validation

github.com/graphql-java/graphql-java - 09738eaabb45f9086b0ab96b8fbc189765a9b238 authored 10 months ago by dondonz <[email protected]>
Merge pull request #3493 from graphql-java/combined-benchmark-runner

Combined benchmark runner

github.com/graphql-java/graphql-java - 8c32510d2bbd9a6d954e232a6811e6167c575807 authored 10 months ago by Brad Baker <[email protected]>
Created a runner of N benchmarks at once - doco update

github.com/graphql-java/graphql-java - 26c61addc62a30772c773f6e24e77819caa671b0 authored 10 months ago by Brad Baker <[email protected]>
Created a runner of N benchmarks at once

github.com/graphql-java/graphql-java - dd4341c5c2226822d57847b4a30051ca7f88fa56 authored 10 months ago by Brad Baker <[email protected]>
Raw benchmark on traversing a CF list of objects to traversing a tree of objects- desnt need forks

github.com/graphql-java/graphql-java - 99115a043d912ae8f1716f9074daffc256564f4e authored 10 months ago by Brad Baker <[email protected]>
Raw benchmark on traversing a CF list of objects to traversing a tree of objects- tweak imports

github.com/graphql-java/graphql-java - 2c3cda814eb21937c229972054b52a408e846009 authored 10 months ago by Brad Baker <[email protected]>
Raw benchmark on traversing a CF list of objects to traversing a tree of objects

github.com/graphql-java/graphql-java - 901e66481110374f0858cc6d39dc4a4c5fedaec1 authored 10 months ago by Brad Baker <[email protected]>
Merge pull request #3491 from graphql-java/tweaked-profiling-code-helper

Updated helper code for profiler attachment

github.com/graphql-java/graphql-java - fbca82e69549084193664188c4be4a5b096c4321 authored 10 months ago by Brad Baker <[email protected]>
Updated helper code for profiler attachment

github.com/graphql-java/graphql-java - 127f6a16bcc5f8635e09a9b9fed34026aa51f453 authored 10 months ago by Brad Baker <[email protected]>
Merge pull request #3387 from graphql-java/3357-directive-filter

directive filtering during printing

github.com/graphql-java/graphql-java - 3a30942fc3cac7028bcaf1520a69a4421cbea6c7 authored 10 months ago by Brad Baker <[email protected]>
Merge pull request #3457 from graphql-java/remove-cf-from-instrumentation-context

This removes the CompletableFuture signature from InstrumentationContext

github.com/graphql-java/graphql-java - e8b21b67f9459425e4806cf72b42490a1b05421e authored 10 months ago by Brad Baker <[email protected]>
Merge pull request #3465 from graphql-java/no-builders-on-key-objects

Don't build a builder object and then turn it into the actual object

github.com/graphql-java/graphql-java - cbc8f1275d7dc740a22bdfa580504851f0d629e7 authored 10 months ago by Brad Baker <[email protected]>
Avoid repeated calls to getFieldDef and unnecessary immutable builders/collections (#3478)

* Avoid repeated calls to getFieldDef and unnecessary immutable builders/collections

* Remove...

github.com/graphql-java/graphql-java - 808d7bc24a1ebbbea04b40c48b87b551cd73e132 authored 10 months ago by Danny Thomas <[email protected]>
Merge pull request #3486 from graphql-java/tweak-complex-query-running

Now allows the benchmark to go into profiling mode - 2

github.com/graphql-java/graphql-java - 53408fd17c0232e041c1b1f979e581fb9534764b authored 10 months ago by Brad Baker <[email protected]>
Now allows the benchmark to go into profiling mode - 2

github.com/graphql-java/graphql-java - d30ea23feacf8a23cf0e03675ceed91a8cf831ed authored 10 months ago by Brad Baker <[email protected]>
Merge pull request #3485 from graphql-java/tweak-complex-query-running

Now allows the benchmark to go into profiling mode

github.com/graphql-java/graphql-java - a9f957f6cbdc4c4e6609b4bc7af45303c22e004c authored 10 months ago by Brad Baker <[email protected]>
Now allows the benchmark to go into profiling mode

github.com/graphql-java/graphql-java - 2ef1b7be576a17472327efd0cd3d42672a8c4665 authored 10 months ago by Brad Baker <[email protected]>
Does not allocate a default deferred context that is thrown away on transform

github.com/graphql-java/graphql-java - bf75d08da6a5a360b6f793c69a50c897d027d3ff authored 10 months ago by Brad Baker <[email protected]>
Merge pull request #3476 from graphql-java/cf-based-app-benchmark

Added a more complex query benchmark

github.com/graphql-java/graphql-java - 744b10798b41e322fca866c4dbefcb5a912ed2cf authored 10 months ago by Brad Baker <[email protected]>
Suggestion from Andi

github.com/graphql-java/graphql-java - 1353cbfdeacb40fd753ccea2d1a2315bef46fcd8 authored 10 months ago by Brad Baker <[email protected]>
Changing SubscriptionUniqueRootField in order to also check inline fragments and multiple fragments

github.com/graphql-java/graphql-java - 274aaf1d84fd6e29e8751a3dc24363a26077353f authored 10 months ago by Juliano Prado <[email protected]>
Merge pull request #3479 from graphql-java/remove-parameters-not-needed

Using object instead of CF in DispatcherStrategy interface

github.com/graphql-java/graphql-java - 1d7530276a3f7830c9d589e8e36cdc86196a1f7c authored 10 months ago by Brad Baker <[email protected]>
Merge remote-tracking branch 'origin/master' into remove-cf-from-instrumentation-context

# Conflicts:
# src/main/java/graphql/execution/ExecutionStrategy.java
# src/main/java/graphql/ex...

github.com/graphql-java/graphql-java - 25254a58099d82c5244b6ee5c494b7c77b0443c6 authored 10 months ago by Brad Baker <[email protected]>
ok not removing them - changing them

github.com/graphql-java/graphql-java - 31bf7abe78cd1f9793ebdd29b0ea959dab3a44cf authored 10 months ago by Brad Baker <[email protected]>
removing parameters not needed on dispatch

github.com/graphql-java/graphql-java - 77283155d9fa280e4b6478ed9023835f43260e7b authored 10 months ago by Brad Baker <[email protected]>
Put in a forever mode flag

github.com/graphql-java/graphql-java - 5cb7f012a483f4255aa5904fef440f30665b2f90 authored 10 months ago by Brad Baker <[email protected]>
Reduced howMany objects are created when multipled out by levels

github.com/graphql-java/graphql-java - efc66364e511cf1df868f32fcb99b00ad367917b authored 10 months ago by Brad Baker <[email protected]>
To many dimensions

github.com/graphql-java/graphql-java - 1f55a8e87b2cdc8bd5b24c61eaef007b7a88b705 authored 10 months ago by Brad Baker <[email protected]>
Added a more complex query benchmark

github.com/graphql-java/graphql-java - 2557467e4ec2bc62d81fc08eaf943c09a512ff46 authored 10 months ago by Brad Baker <[email protected]>
Merge pull request #3474 from graphql-java/tweak-id-name

Tweaked id generator name

github.com/graphql-java/graphql-java - 34e92d757ec36e7f64725ec975d3b090ec8f6c57 authored 10 months ago by Brad Baker <[email protected]>
Tweaked id generator name

github.com/graphql-java/graphql-java - 47b8924c7b7b0b25c9f2abcff149df55740dc88a authored 10 months ago by Brad Baker <[email protected]>
Merge pull request #3473 from graphql-java/dependabot/github_actions/google-github-actions/auth-2.1.2

Bump google-github-actions/auth from 2.1.1 to 2.1.2

github.com/graphql-java/graphql-java - ea23b50460435e6c796a4a29f82aac6e1de5a141 authored 10 months ago by dondonz <[email protected]>
Bump google-github-actions/auth from 2.1.1 to 2.1.2

Bumps [google-github-actions/auth](https://github.com/google-github-actions/auth) from 2.1.1 to ...

github.com/graphql-java/graphql-java - a1ba0d013cedabbacfd848985cf9530fca5358b9 authored 10 months ago by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Merge pull request #3466 from graphql-java/performant-uuid

Added an id generator that's more performant

github.com/graphql-java/graphql-java - 596b6d14fa2e417d828a1fb8db017f87f2ed0de9 authored 10 months ago by Brad Baker <[email protected]>
Merge pull request #3470 from graphql-java/add-extensions-to-schema-builder

Fix schema builder to copy extensionDefinitions

github.com/graphql-java/graphql-java - ae4b8115059c30e8eac8e193b5e912d757642981 authored 10 months ago by Brad Baker <[email protected]>
Merge pull request #3472 from graphql-java/tweak-async-benchmark-with-batchsize

andis suggestions on batch size

github.com/graphql-java/graphql-java - 3ff27c40fe1321b4fce711c3123b8aa80d08afb3 authored 10 months ago by dondonz <[email protected]>
andis suggestions on batch size

github.com/graphql-java/graphql-java - e7b732802ff9ea94d5e897ab582439e735096446 authored 10 months ago by Brad Baker <[email protected]>
Removing tests where validation already has set as invalid queries.

github.com/graphql-java/graphql-java - 5b517ccf4765fa1dbd8aeb41d8cdc53cc0da1d4b authored 10 months ago by Juliano Prado <[email protected]>
Merge branch 'master' into defer-validation

* master:
fixed async benchmark - it was non sensical before
fix up loading resources from i...

github.com/graphql-java/graphql-java - f388fc608198f3fa09ee46d4668cc840b7f11272 authored 10 months ago by Juliano Prado <[email protected]>
Merge pull request #148 from graphql-java/dependabot/npm_and_yarn/ip-1.1.9

Bump ip from 1.1.5 to 1.1.9

github.com/graphql-java/graphql-java-page - cf8b2d64cb3cff21ed67dc67dbbe21771bd01666 authored 10 months ago by dondonz <[email protected]>
Merge pull request #3469 from graphql-java/cf-benchamrk-tweak

fixed async benchmark - it was nonsensical before

github.com/graphql-java/graphql-java - 581315509c17cc725252b7a46ae67bb1fd9d0480 authored 10 months ago by Brad Baker <[email protected]>
fixed async benchmark - it was non sensical before

github.com/graphql-java/graphql-java - 78f6243b631aa6047a35524d3a5908f3683171e4 authored 10 months ago by Brad Baker <[email protected]>
fix up loading resources from inside jar

github.com/graphql-java/graphql-java - 19a50f7081a4c99de37d3bb3a809b02399554919 authored 10 months ago by Andreas Marek <[email protected]>
Merge pull request #3468 from graphql-java/jmh-cleanup

cleaning up the jhm benchmarks

github.com/graphql-java/graphql-java - 3486bf638dc656a60ce101007320ed81f6bd1d06 authored 10 months ago by Andreas Marek <[email protected]>
Add extensionDefinitions to schema builder

github.com/graphql-java/graphql-java - d778868655d875843a33796f2dd96e6ffb5c3982 authored 10 months ago by dondonz <[email protected]>
cleaning up the jhm benchmarks

github.com/graphql-java/graphql-java - d1e0c6abd952cedcd3798ecf810e83881d19fdd6 authored 10 months ago by Andreas Marek <[email protected]>
Merge pull request #3467 from graphql-java/jmh_async

Added Async benchmark for future changes

github.com/graphql-java/graphql-java - d91da7e89c4656d4334061150f3242993c18edb5 authored 10 months ago by Brad Baker <[email protected]>
Changed test and move licenses

github.com/graphql-java/graphql-java - ac371d171488d0d8a7660e20ea1362334ff7e612 authored 10 months ago by Brad Baker <[email protected]>
Added Async benchmark for future changes

github.com/graphql-java/graphql-java - 650ca9a98604f79a48835f13d25b9ba0ec3aef35 authored 10 months ago by Brad Baker <[email protected]>
Added an id generator that's more performant - added license

github.com/graphql-java/graphql-java - 863eeaca2ca588ad82aaab1c5ec9157eff30715a authored 10 months ago by Brad Baker <[email protected]>
Added an id generator that's more performant

github.com/graphql-java/graphql-java - 422a3a9c1f005dcae347768146090472918f8cf9 authored 10 months ago by Brad Baker <[email protected]>
Update defer validation - added more friendly i18n error messages, added further tests and fixed defer label, on root level and vali operation rules.

github.com/graphql-java/graphql-java - 55902abdbe93ebe3d06df9c7bebb011d245f1581 authored 10 months ago by Juliano Prado <[email protected]>
Update README.md

github.com/graphql-java/graphql-java - 0bc0845f18c33af5859288ce15244e804a92fc2c authored 10 months ago by Andreas Marek <[email protected]>
Bump ip from 1.1.5 to 1.1.9

Bumps [ip](https://github.com/indutny/node-ip) from 1.1.5 to 1.1.9.
- [Commits](https://github.c...

github.com/graphql-java/graphql-java-page - eb10ab96aa17c45d25eb6f69de1ed1d0f7e95714 authored 10 months ago by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Merge pull request #3464 from kilink/string-concat

Use String concatenation instead of StringBuilder

github.com/graphql-java/graphql-java - 79883ed8235774bde09684c2bc1a2f76a7d0e5c4 authored 10 months ago by Brad Baker <[email protected]>
Don't build a builder object and then turn it into the actual object - package level

github.com/graphql-java/graphql-java - 5d99d65307f5fd4f93f20272f2e42c1759a925a2 authored 10 months ago by Brad Baker <[email protected]>
Don't build a builder object and then turn it into the actual object

github.com/graphql-java/graphql-java - 2d41e5369c0a0a23a0a26897478528a60a065ddc authored 10 months ago by Brad Baker <[email protected]>
Use String concatenation instead of StringBuilder

Change some places to use simple String concatenation instead of a StringBuilder,
since JDK9+ ha...

github.com/graphql-java/graphql-java - f52305325593dcec70aba9c4a5717b18b6543fa0 authored 10 months ago by Patrick Strawderman <[email protected]>
Merge pull request #3463 from graphql-java/small-tweak-on-chained-code

Small code tweaks on recent PR

github.com/graphql-java/graphql-java - ef846bf7a25a4deb8e860c3be2003968c9fcc493 authored 10 months ago by Andreas Marek <[email protected]>
Small code tweaks on recent PR

github.com/graphql-java/graphql-java - d26ed000666f698fbc6cda29bbfcddeb806c3a67 authored 10 months ago by Brad Baker <[email protected]>
Merge pull request #3459 from DanielThomas/dannyt/chained-instrumentation-performance

Avoid Map for instrumentation state

github.com/graphql-java/graphql-java - a1e93e447812e9a9f66a395a666a381db1ba4c81 authored 10 months ago by Brad Baker <[email protected]>
Merge branch 'master' into defer-validation

* master: (105 commits)
Avoid repeated Map lookups in SimpleFieldValidation
Fix flaky defer ...

github.com/graphql-java/graphql-java - 8d382e6bcba7b5ce5bfd5992fa7ae2b4941c330d authored 10 months ago by Juliano Prado <[email protected]>
Add instrumentation with null state

github.com/graphql-java/graphql-java - 4c8f51716d08a940c7c30a4c63d7932b2d1d16d1 authored 10 months ago by Danny Thomas <[email protected]>
Merge pull request #3430 from felipe-gdr/oneof-empty-variables-bug

Fix oneOf bug when variables is empty

github.com/graphql-java/graphql-java - 4c97ad285fd0646c9f436681d2a5967926bf0223 authored 10 months ago by dondonz <[email protected]>
Merge pull request #3461 from kilink/simple-field-validation-map-iteration

Avoid repeated Map lookups in SimpleFieldValidation

github.com/graphql-java/graphql-java - 59a9553757764de7402f9870b295b298bb2560fc authored 10 months ago by Brad Baker <[email protected]>
Avoid repeated Map lookups in SimpleFieldValidation

The validateFields method in SimpleFieldValidation would iterate over the keySet of the rules Ma...

github.com/graphql-java/graphql-java - b26b19de87c04f989c7119ca28c57ce9d57e06f8 authored 10 months ago by Patrick Strawderman <[email protected]>