Processing Community Forum - Latest posts https://discourse.processing.org Latest posts PCD @ Denver 2026 Absolutely interested!

]]>
https://discourse.processing.org/t/pcd-denver-2026/48143#post_2 Mon, 16 Mar 2026 19:46:53 +0000 discourse.processing.org-post-158480
GSoC 2026: Join the Processing Foundation as a Summer of Code Contributor! Hi @jatin, good spot! Feel free to add it to the authenticated flows.

The examples written here are examples and not exhaustive. We would want you to define your own flows during the project and to proposed which ones are priority to the web editor experience to secure.

]]>
https://discourse.processing.org/t/gsoc-2026-join-the-processing-foundation-as-a-summer-of-code-contributor/47450?page=6#post_121 Mon, 16 Mar 2026 19:41:40 +0000 discourse.processing.org-post-158479
PCD @ Worldwide 2026 - Call for Organizers Hi @hypergrace and welcome!

Riso printing is so cool! Exciting! Are you using p5.riso?

Please post a local thread as PCD @ Chicago 2026 in the Community category (make sure to use the pcd tag). I’ll add it to the event on the map so it’s easier for ppl to join!

]]>
https://discourse.processing.org/t/pcd-worldwide-2026-call-for-organizers/48081#post_10 Mon, 16 Mar 2026 18:49:43 +0000 discourse.processing.org-post-158475
PCD @ Worldwide 2026 - Call for Organizers Hello! I’m Grace, posting on behalf of CCAM (Center for Concrete and Abstract Machines and Peripheral Study. We’ll be hosting an event at Co-Prosperity Sphere in Bridgeport, Chicago, US!

event description

The Center for Concrete and Abstract Machine and Peripheral Study is hosting a Chicago-based meeting of Processing Community Day in October 2026. We’ll be celebrating 25 years of Processing with workshops, talks, and presentations at Co-Prosperity in Bridgeport.

The programming is still firming up, but participants will learn how to use p5.js to create images to print on Co-Pro’s risograph :0

]]>
https://discourse.processing.org/t/pcd-worldwide-2026-call-for-organizers/48081#post_8 Mon, 16 Mar 2026 17:59:34 +0000 discourse.processing.org-post-158472
Control variables and method created while a program is running
  • It’s bad etiquette modifying JS built-ins.
  • Even if you do, you’d still need to use extends Object in order to inherit it.
  • instead, what about having a @protected super class Sealer containing _sealInstance()?
  • #!/usr/bin/env node
    
    // @ts-check
    
    // https://Discourse.Processing.org/t/
    // control-variables-and-method-created-while-a-program-is-running/47995/26
    
    "use strict";
    
    class Sealer {
      /**
       * @protected
       * @throws {TypeError}
       */
      constructor() {
        if (Sealer._sealInstance(this)) throw TypeError(
          "Sealer is an abstract utility super class and cannot be instantiated!");
      }
    
      /**
       * Seals `instance` if its *constructor* is the invoking class itself.
       * Prevents further property additions after constructor completes.
       *
       * @protected
       *
       * @param {Sealer} instance - object to be conditionally sealed
       *
       * @returns {boolean} whether `instance` got sealed or not 
       */
      static _sealInstance(instance) {
        const isBottomClass = instance.constructor == this;
        isBottomClass && Object.preventExtensions(instance);
        return isBottomClass;
      }
    }
    
    class A extends Sealer {
      /**
       * Creates a new being with the given name.
       *
       * @param {string} name - the name for the being
       */
      constructor(name) {
        super();
    
        /** the name for the being */ this.name = name;
    
        A._sealInstance(this); // Seal it only if this instance is exactly type A!
      }
    }
    
    class B extends A {
      /**
       * Creates a new animal with name, type and favorite food.
       *
       * @param {string} name - the name for the animal
       * @param {string} animal - kind of animal
       * @param {string} food - favorite food of the animal
       */
      constructor(name, animal, food) {
        super(name);
    
        // Redundant re-assignment to change prop name's IntelliSense description:
        /** the name for the animal */ this.name = this.name;
    
        /** kind of animal */ this.animal = animal;
        /** favorite food of the animal */ this.food = food;
    
        B._sealInstance(this); // Seal it only if this instance is exactly type B!
      }
    }
    
    class Pet extends B {
      /**
       * Creates a new pet with name, type and favorite food.
       *
       * @param {string} name - the name for the pet
       * @param {string} animal - kind of pet
       * @param {string} food - favorite food of the pet
       */
      constructor(name, animal, food) {
        super(name, animal, food);
    
        Pet._sealInstance(this); // Seal it only if this instance is type Pet!
      }
    
      feed() {
        const { name, animal, food } = this;
        console.info(name, "the", animal, "eats the delicious", food);
      }
    
      pet() {
        const { name, animal } = this;
        console.info(name, "the", animal, "loves to be petted!");
      }
    }
    
    const a = new A("Thor");
    
    try {
      a.weapon = "hammer"; // Prop 'weapon' does not exist on type 'A' ts(2339)
    } catch (err) {
      console.warn("Class A is sealed & prohibits additional properties!\n", err);
    }
    
    console.log(a.name); // "Thor"
    console.table(a);
    
    const b = new B("Pengo", "penguin", "fish");
    
    // 1. IntelliSense recognizes props "name", "animal" & "food" as strings:
    console.log('\n', b.name, b.animal, b.food, '\n'); // "Pengo" "penguin" "fish"
    
    // 2. Sealed object safety works! Property "color" is rejected by the linter:
    try {
      b.color = "gray"; // Property 'color' does not exist on type 'B' ts(2339)
    } catch (err) {
      console.warn("Class B is sealed & prohibits additional properties!\n", err);
    }
    
    // 3. Runtime works:
    // The object is sealed, and no class fields were generated to crash it.
    console.table(b);
    
    const { name: pet, animal, food } = b;
    const c = new Pet(pet, animal, food);
    
    try {
      c.sleep = function () { // Prop 'sleep' doesn't exist on type 'Pet' ts(2339)
        const { name, animal } = this;
        console.info(name, "the", animal, "is dreaming right now!");
      };
    } catch (err) {
      console.warn("Class Pet is sealed & prohibits additional props!\n", err);
    }
    
    console.table(c);
    c.feed(); c.pet();
    
    ]]>
    https://discourse.processing.org/t/control-variables-and-method-created-while-a-program-is-running/47995?page=2#post_26 Mon, 16 Mar 2026 17:51:25 +0000 discourse.processing.org-post-158468
    GSoC 2026: Join the Processing Foundation as a Summer of Code Contributor! Hi @kit,

    I recently contributed to the dev-2.0 branch by filing issue 8621 (replacing raw console.log calls with FES across Data, DOM, Events, and Image modules) and PR 8622 for the same.

    While auditing the codebase, I noticed there are ~20+ raw console.log calls in the WebGL modules on dev-2.0 that appear to be leftover debug statements leaking to the user console.

    These are in:

    ShapeBuilder.js — tesselation error/debug callbacks (L441, L446-447)

    p5.Shader.js — inspectHooks() dumps shader info to console (L146-166)

    p5.RendererGL.js — multiple debug logs (L253, L295, L308, L354, L541)

    p5.Camera.js — debug logs (L209, L216)

    webgl/text.js — debug logs (L677, L687)

    webgl/utils.js — debug logs (L279, L316)

    3d_primitives.js — multiple debug logs (L1701, L2246, L2330, L2394, L2435, L2476, L2544)

    Would it be appropriate to file an issue to clean these up? Some could be replaced with p5._friendlyError(), and others (pure debug leftovers) could be removed entirely.

    One question: p5.Shader.inspectHooks() seems like an intentional debug utility — should that be left as-is, or should it also be updated?

    Happy to open an issue and a PR for this if the approach sounds good.

    ]]>
    https://discourse.processing.org/t/gsoc-2026-join-the-processing-foundation-as-a-summer-of-code-contributor/47450?page=6#post_120 Mon, 16 Mar 2026 17:32:08 +0000 discourse.processing.org-post-158467
    Control variables and method created while a program is running I wonder…

    is there a way to add the static _sealInstance() method to the Object class ?

    You see what I mean ! lol

    ]]>
    https://discourse.processing.org/t/control-variables-and-method-created-while-a-program-is-running/47995?page=2#post_25 Mon, 16 Mar 2026 17:10:46 +0000 discourse.processing.org-post-158464
    How am I wrong with this
    quark:

    I know I can be a little pedantic when it comes to syntax and semantics

    What you call pedantic is really precision! Never change.

    In coding and technical work, precision and correctness matter because small differences in syntax and semantics can change meaning and behavior.

    :)

    ]]>
    https://discourse.processing.org/t/how-am-i-wrong-with-this/48083#post_7 Mon, 16 Mar 2026 16:36:39 +0000 discourse.processing.org-post-158462
    GSoC 2026: Join the Processing Foundation as a Summer of Code Contributor! Thanks for the reply!

    After exploring the translation tracker workflow, I had a few ideas that might improve the contributor experience:

    1. Translation Progress Dashboard – A small dashboard showing translation completion across languages and sections of the documentation.

    2. Automatic Stub Generation – When a new English example is added, automatically create placeholder translation files for other languages.

    3. Improved Issue–PR Workflow – Automatically close translation issues when the corresponding PR is merged.

    4. Better Contributor Onboarding – A CLI script or documentation to help new translators set up the environment quickly.

    I’m currently exploring the codebase under .github/actions/translation-tracker and testing how the commit comparison works.

    Would love to hear your thoughts on which of these directions might be most useful for the project.

    Thanks!

    ]]>
    https://discourse.processing.org/t/gsoc-2026-join-the-processing-foundation-as-a-summer-of-code-contributor/47450?page=6#post_119 Mon, 16 Mar 2026 16:18:07 +0000 discourse.processing.org-post-158461
    PCD @ Worldwide 2026 - Call for Organizers Hola,

    Mi nombre es Nicolás. Soy diseñador en Santiago de Chile y enseño programación creativa a estudiantes universitarios. En 2019 participé en el Processing Community Day como coorganizador y además impartí un workshop.

    Estoy muy interesado en organizar nuevamente un PCD en Santiago o en alguna otra ciudad de Chile.


    Hello,

    My name is Nicolás. I’m a designer based in Santiago, Chile, and I teach creative coding to university students. In 2019, I participated in Processing Community Day as a co-organizer and also led a workshop.

    I’m very interested in organizing a PCD again in Santiago or in another city in Chile.

    ]]>
    https://discourse.processing.org/t/pcd-worldwide-2026-call-for-organizers/48081#post_7 Mon, 16 Mar 2026 16:00:47 +0000 discourse.processing.org-post-158460
    PCD @ Denver 2026 Hi everyone!

    Let’s organize a Processing Community Day in Denver

    ]]>
    https://discourse.processing.org/t/pcd-denver-2026/48143#post_1 Mon, 16 Mar 2026 15:54:15 +0000 discourse.processing.org-post-158457
    Linear compass display to use with a MPU Hello again!

    I added a very simple compass image to visualize the actual mouse movement.
    I had some code buried away in the forum that I used to make it.
    It helped me! The mouse movement was needing attention on my end.

    This is your code with the image added.
    I moved all of your PGraphic to a function (not included).

    Code (click for more details)

    You can modify to have mouse move along the compass and update!
    Example:
    Vector / Examples / Processing.org

    You text and code is much cleaner in your last example! I noticed.

    Have fun!

    ]]>
    https://discourse.processing.org/t/linear-compass-display-to-use-with-a-mpu/48060#post_19 Mon, 16 Mar 2026 15:53:32 +0000 discourse.processing.org-post-158456
    PCD @ Greensboro 2026 Hi everyone, I am Leilei Xia, I do animation, tactile art and community engaged project. I am currently teaching p5.js in interactivity classes in University of North Carolina Greensboro. I am looking forward to hosting a PCD at Greensboro for the first time! I am envisioning the event to invite people to experience drawing things with ml5, and try using p5 to create their own drawing app. I am curious what other ideas everyone has!

    Looking forward to the organizer’s kit!

    Also, my website is www.leileixia.com if that is of any of yours interest!

    ]]>
    https://discourse.processing.org/t/pcd-greensboro-2026/48142#post_1 Mon, 16 Mar 2026 15:45:50 +0000 discourse.processing.org-post-158455
    PCD@Amsterdam 2026 Hi, Just also created a topic for The Netherlands:

    ]]>
    https://discourse.processing.org/t/pcd-amsterdam-2026/48140#post_2 Mon, 16 Mar 2026 15:42:24 +0000 discourse.processing.org-post-158454
    Processing Community Day @ The Netherlands 2026 Hi All,

    Starting a place to check how we can make one or multiple PCD events in The Netherlands.

    Let me know if anyone have any plans.

    ]]>
    https://discourse.processing.org/t/processing-community-day-the-netherlands-2026/48141#post_1 Mon, 16 Mar 2026 15:40:50 +0000 discourse.processing.org-post-158453
    PCD@Amsterdam 2026 Hi everyone!
    A couple of years ago I organised a summer course on Creative Coding with P5.js at VU Amsterdam, I’m excited to explore the possibility of hosting a PCD event in Amsterdam.

    If you’re interested in organizing a PCD in Amsterdam, let’s get in touch!

    ]]>
    https://discourse.processing.org/t/pcd-amsterdam-2026/48140#post_1 Mon, 16 Mar 2026 15:40:28 +0000 discourse.processing.org-post-158452
    PCD @ Bath 2026 I will put a flag up for Bath UK. If someone wants to do an event in Bristol, maybe we can coordinate for the same weekend, or join the events in some way.

    I am a creative technologist and also part time lecturer in creative computing at Bath Spa University, which maybe could provide a venue.

    ]]>
    https://discourse.processing.org/t/pcd-bath-2026/48139#post_1 Mon, 16 Mar 2026 15:32:37 +0000 discourse.processing.org-post-158451
    Linear compass display to use with a MPU I have the same one. haven’t tried it out still in it adafruit packaging. I was never able to get the MPU9250 to give me the correct reading. so i mostly bounce back to the GY80 and GY521( Cheap, ive fried a few of these not paying attention) Thanks for the heads up.

    ]]>
    https://discourse.processing.org/t/linear-compass-display-to-use-with-a-mpu/48060#post_18 Mon, 16 Mar 2026 14:04:07 +0000 discourse.processing.org-post-158444
    GSoC 2026: Join the Processing Foundation as a Summer of Code Contributor! firstly, thankyou for sharing the proposal template @claudine. I have one question, what would be the ideal number of pages for our proposal ??

    ]]>
    https://discourse.processing.org/t/gsoc-2026-join-the-processing-foundation-as-a-summer-of-code-contributor/47450?page=6#post_118 Mon, 16 Mar 2026 13:59:29 +0000 discourse.processing.org-post-158443
    GSoC 2026: Join the Processing Foundation as a Summer of Code Contributor! Hi @divyansh013!

    Thank you for the clarification on commit dates, that makes complete sense, i’ll drop the hash-based sync tracking then.

    Regarding displaying translation data on the website UI, i think a more feasible approach would be a lightweight GitHub Pages based status page, which will be generated automatically from the manifest JSON files the tracker produces.

    This would:

    1. give contributors clear visibility on what needs translation for every language.
    2. avoid touching the main website entirely
    3. make auto-update every time the tracker runs

    Would this direction make sense, or do you see any limitations with this approach?

    Also noted on the README updates, I’ll make sure my proposal doesn’t overlap with that!

    ]]>
    https://discourse.processing.org/t/gsoc-2026-join-the-processing-foundation-as-a-summer-of-code-contributor/47450?page=6#post_117 Mon, 16 Mar 2026 13:41:57 +0000 discourse.processing.org-post-158442
    PCD@London 2026 As per the main thread, I’m planning to organise Processing Community Day in London, possibly hosted and run by UAL CCI where I work. There are a few of us here at CCI that works on p5.js and related stuff and we welcome others in London who may be interested in joining in organising to get in contact!

    I’ll share more information in this thread after the info session and when we have got the ball rolling here.

    ]]>
    https://discourse.processing.org/t/pcd-london-2026/48132#post_1 Mon, 16 Mar 2026 13:16:08 +0000 discourse.processing.org-post-158440
    Linear compass display to use with a MPU
    philtkp:

    going try it on some of the one’s i have here, mpu9250, GY80, gy521, BNO055

    I remember my first experience with the BNO055!
    The yaw, pitch and roll were a firmware bug and I had to use quaternions and convert to Euler angles!
    That was a challenge I overcame.

    You topic has inspired me to revisit some of my projects.

    :)

    ]]>
    https://discourse.processing.org/t/linear-compass-display-to-use-with-a-mpu/48060#post_17 Mon, 16 Mar 2026 12:40:43 +0000 discourse.processing.org-post-158439
    GSoC 2026: Join the Processing Foundation as a Summer of Code Contributor! Hi! I’m currently reviewing the E2E testing idea and exploring the editor to define potential user flows. I noticed that downloading a sketch requires the sketch to be saved first, and saving requires authentication. However, the GSoC idea examples mention that an unauthenticated user can download a sketch. Should the download flow instead be considered part of the authenticated user flows? Just wanted to confirm before defining the flows for the proposal.

    ]]>
    https://discourse.processing.org/t/gsoc-2026-join-the-processing-foundation-as-a-summer-of-code-contributor/47450?page=6#post_116 Mon, 16 Mar 2026 09:03:53 +0000 discourse.processing.org-post-158421
    GSoC 2026: Join the Processing Foundation as a Summer of Code Contributor! Thanks for sharing the proposal template @kit

    ]]>
    https://discourse.processing.org/t/gsoc-2026-join-the-processing-foundation-as-a-summer-of-code-contributor/47450?page=6#post_115 Mon, 16 Mar 2026 06:47:01 +0000 discourse.processing.org-post-158418
    GSoC 2026: Join the Processing Foundation as a Summer of Code Contributor! Thanks a lot everyone, for your questions and answers, it was really insightful.

    ]]>
    https://discourse.processing.org/t/gsoc-2026-join-the-processing-foundation-as-a-summer-of-code-contributor/47450?page=6#post_114 Mon, 16 Mar 2026 04:44:31 +0000 discourse.processing.org-post-158417
    Linear compass display to use with a MPU Hi, going try it on some of the one’s i have here, mpu9250, GY80, gy521, BNO055, I did add

    int heading = 360-(degree)%360; to get it to go from N to S with the proper heading. I wish i was able to step thru the code. but I haven’t been able to get the debug part of it to work for me. I’ll look at this code.Thanks for the help!

    here’s my code so far

     // LINEAR COMPASS
    PGraphics hdg;
    
    float degree1;
    int degree = 0;
    int heading = 0;
    
    //
    // ---------------------------------------------------------------
    //
    void setup()
    {
    // init
    size(800, 600);
    hdg = createGraphics(360,50);
    } // func
    
    void draw()
    {
    degree1=map(mouseX, 0, width, 0, 4*360);
    degree=int(degree1%360);
    
    hdg.beginDraw();
    hdg.background(255);
    
    // black rect (the whole compass)
    hdg.noFill();
    hdg.stroke(0); //Black
    hdg.rect(0, 0, 359, 49);
    
    // yellow rect (the display)
    hdg.fill(255,255,2);
    hdg.rect(0, 25, 359, 24);
    
    // yellow triangle
    
    hdg.stroke(0);// black
    hdg.fill(255, 255, 2); // yellow
    
    hdg.triangle(180-5, 18, 180+5, 18, 180, 24);
    
    int heading = 360-(degree)%360;
    
    // DISPLAY DEGREES
    //if (heading >= 360) heading = 0;
    hdg.stroke(0);// black
    hdg.fill(0); //  black
    hdg.textAlign(CENTER);
    hdg.textSize(16);
    hdg.text(heading,180, 15);
    
    // DRAW BLACK DEGREE MARKS
    hdg.stroke(0); // black
    int lengthLine = 0;
    for (int i=0; i < 360; i+=5)
    {
    if (i%90==0) {
    lengthLine=9;
    }
    else if(i%45==0){
    lengthLine=6;
    }
    else
    {
    lengthLine=3;
    }
    hdg.line((degree+i)%360, 26, (degree+i)%360, 26+lengthLine);
    hdg.fill(0);
    
    }
    hdg.textSize(14);
    hdg.text(“S”, (degree+360)%360, 47);
    hdg.text(“N”, (degree+180)%360, 47);
    hdg.text(“E”, (degree+270)%360, 47);
    hdg.text(“W”, (degree+450)%360, 47);
    hdg.textSize(10);
    hdg.text(“NW”, (degree+495)%360, 45);
    hdg.text(“NE”, (degree+225)%360, 45);
    hdg.text(“SE”, (degree+315)%360, 45);
    hdg.text(“SW”, (degree+405)%360, 45);
    // red line in display
    hdg.stroke(255, 2, 2); // red
    hdg.line(180, 26, 180, 48);
    
    hdg.endDraw();
    image(hdg, 240, 275);
    
    // print(" ",degree);
    println(heading,-degree1%360);
    }
    
    ]]>
    https://discourse.processing.org/t/linear-compass-display-to-use-with-a-mpu/48060#post_16 Mon, 16 Mar 2026 04:42:48 +0000 discourse.processing.org-post-158416
    Linear compass display to use with a MPU
    philtkp:

    MPU(I2C)

    Hello,

    Which MPU(I2C) are you using?

    I made some adjustments to your last code to sort out some of the issues:

    Code (click for more details)

    It now moves N > E > S > W as angle increases.

    Sometimes it helps to simplify the code, start from scratch and\or rethink it rather than patch it.

    Even some time away helps!

    :)

    ]]>
    https://discourse.processing.org/t/linear-compass-display-to-use-with-a-mpu/48060#post_15 Sun, 15 Mar 2026 23:38:25 +0000 discourse.processing.org-post-158414
    GSoC 2026: Join the Processing Foundation as a Summer of Code Contributor! Thanks a lot for the clarification, @kit!

    ]]>
    https://discourse.processing.org/t/gsoc-2026-join-the-processing-foundation-as-a-summer-of-code-contributor/47450?page=6#post_113 Sun, 15 Mar 2026 22:43:45 +0000 discourse.processing.org-post-158413
    10 print chr$(205.5+rnd(1)); : goto 10 Hello folks!

    88 characters now!
    Looped it backwards for this version.

    setup=_=>{for(j=256;j--;)r=random([0,m=6.25]),x=j&15,line(x*m+r,y=(j>>4)*m,x*m+m-r,y+m)}
    

    Note:

    // Default screen size is 100x100
    // Grid is 16x16
    // Spacing is 100/16 = 6.25
    // You can modify the 6.25 but it was left as is for correct spacing.
    // m=6 makes each grid cell 6 pixels wide and tall, so the 16×16 tile maze becomes 96×96 instead of 100x100 total size.
    
    r=random([0,m=6.25]), //100/16 = 6.25
    

    :)

    ]]>
    https://discourse.processing.org/t/10-print-chr-205-5-rnd-1-goto-10/15483?page=4#post_82 Sun, 15 Mar 2026 21:46:55 +0000 discourse.processing.org-post-158411
    GSoC 2026: Join the Processing Foundation as a Summer of Code Contributor! Hi @kit !
    I’m George Ibrahim, I’m planning my proposal for the L5 Project and I have a quick question.
    When submitting the Individual Feedback Request Form, is it okay to ask if the feedback could be reviewed by the mentor of the project (since they would be the one mentoring it)? Or should we just submit it normally without specifying? Thanks!

    ]]>
    https://discourse.processing.org/t/gsoc-2026-join-the-processing-foundation-as-a-summer-of-code-contributor/47450?page=6#post_111 Sun, 15 Mar 2026 21:25:24 +0000 discourse.processing.org-post-158410
    GSoC 2026: Join the Processing Foundation as a Summer of Code Contributor! Thank you @claudine! That is really helpful. I will focus on adding missing visual regression tests for Processing4. I will submit my proposal draft for feedback soon!

    ]]>
    https://discourse.processing.org/t/gsoc-2026-join-the-processing-foundation-as-a-summer-of-code-contributor/47450?page=6#post_110 Sun, 15 Mar 2026 16:55:06 +0000 discourse.processing.org-post-158405
    GSoC 2026: Join the Processing Foundation as a Summer of Code Contributor! Hello @khuntvidisha13 , proposing tests that are not there yet is a solid approach!

    You’re right :slight_smile: there is a reporting system for p5.js, that we are planning to integrate into Processing4. It is the intention of the contributor who developed the reporting system to add that to Processing4, so it’s already sort of on the roadmap.

    ]]>
    https://discourse.processing.org/t/gsoc-2026-join-the-processing-foundation-as-a-summer-of-code-contributor/47450?page=6#post_109 Sun, 15 Mar 2026 16:11:19 +0000 discourse.processing.org-post-158404
    GSoC 2026: Join the Processing Foundation as a Summer of Code Contributor! Hi everyone!

    Thanks @kit for the template, I now have the clearer idea of how to approach writing it .
    I have been exploring the Processing repositories and discussions while trying to understand the codebase. Recently I started looking into the eyedropper tool, since while using the website I noticed how useful this feature would be, especially when working with colours from the canvas.
    Excited to keep learning from the discussions here and contribute where I can.

    ]]>
    https://discourse.processing.org/t/gsoc-2026-join-the-processing-foundation-as-a-summer-of-code-contributor/47450?page=6#post_108 Sun, 15 Mar 2026 15:35:31 +0000 discourse.processing.org-post-158398
    Linear compass display to use with a MPU (post deleted by author)

    ]]>
    https://discourse.processing.org/t/linear-compass-display-to-use-with-a-mpu/48060#post_14 Sun, 15 Mar 2026 15:05:06 +0000 discourse.processing.org-post-158388
    How move the penguin without the arms flying off? Maybe the position of the wings should not be calculated based on (xPos, yPos) which must be I think the position of the total image. Thus, it would be enough to change the position of the whole by a translate(xPos,yPos) before drawing everything including the wings.

    ]]>
    https://discourse.processing.org/t/how-move-the-penguin-without-the-arms-flying-off/48065#post_2 Sun, 15 Mar 2026 11:11:45 +0000 discourse.processing.org-post-158379
    Linear compass display to use with a MPU
    philtkp:

    on this one i wont mind seeing the sketch. I’ve never tried to use images.

    Sorry I didn’t make myself clear. The compass scale image was created using your code (with slight modifications) the only difference being it was created once and is drawn in a position to reflect the heading.

    In the sketch I create a clipping zone the same size as the compass scale then I draw the image 3 times to make sure that I fill in any gaps at the left or right of the compass. This is much more efficient that recreating the compass scale for every heading because drawing an image and clipping is a very fast operation for Java.

    Here is the sketch if you have any questions about it please ask. :smile:

    PGraphics compassScale;
    float angle = 0;
    
    void setup() {
      size(400, 120);
      cursor(HAND);
      compassScale = createCompassScale();
    }
    
    void draw() {
      background(220);
      updateAngle();
      drawCompass((width - 360)/2, height/2 - 20, angle);
    }
    
    
    void updateAngle() {
      // Rate will increase rapidly as the mouse moves towards the sides of the display
      float rate = 0.02 * tan(radians(map(mouseX, 0, width, -80, 80)));
      // Create a dead zone near the centre
      if(abs(rate) < 0.002) rate = 0;
      angle += degrees(rate);
      // Force the angle into the range >=0 and <360
      while(angle < 0) angle += 360;
      while(angle >= 360) angle -= 360;
    }
    
    // Draw linear compass heading (degrees)
    // posX, posY = top-left corner display position
    // angle the heading in degrees (must be in range >=0 and <360
    void drawCompass(float posX, float posY, float angle) {
      push();
      translate(posX, posY);
      fill(255);
      noStroke();
      rect(0, 0, 360, 40);
    
      // DRAW SCALE
      clip(0, 20, 360, 40);
      float mark = 180; // compass marker position
      // Draw scale under compass marker / gratuicule
      image(compassScale, mark - angle, 20);
      // Fill any gaps to the left
      image(compassScale, mark - angle - 360, 20);
      // Fill any gaps to the right
      image(compassScale, mark +360 - angle, 20);
      noClip();
    
      // RED GRATICULE LINE
      stroke(255, 0, 0);
      strokeWeight(1);
      line(mark, 20, mark, 38);
    
      // TRIANGLE MARKER
      fill(255, 255, 2);
      stroke(0);
      triangle(mark, 20, mark - 6, 13, mark + 6, 13);
    
      // ANGLE TEXT
      textAlign(CENTER, TOP);
      textSize(12);
      fill(0);
      noStroke();
      text(""+ floor(angle), mark - 30, 1, 60, 20);
    
      // COMPASS BORDER
      noFill();
      stroke(0);
      rect(0, 0, 360, 40);
    
      pop();
    }
    
    PGraphics createCompassScale() {
      PGraphics cs = createGraphics(360, 20);
      cs.beginDraw();
      cs.background(255, 255, 2);
    
      // DISPLAY DEGREES
      cs.stroke(0);// black
      cs.fill(0); //  black
      cs.textAlign(CENTER);
    
      // DRAW BLACK DEGREE MARKS
      cs.stroke(0); // black
      cs.strokeWeight(1.2);
      for (int i = 0; i < 360; i += 5) {
        cs.line(i, 0, i, 4);
      }
      for (int i = 0; i < 360; i += 30) {
        cs.line(i, 0, i, 8);
      }
      cs.line(0, 0, 360, 0);
    
      // DRAW COMPASS POINTS
      cs.textAlign(CENTER, TOP);
      cs.textSize(12);
      cs.noStroke();
      cs.fill(0);
      String pts = "NESWN";
      for (int i=0; i<pts.length(); i++) {
        cs.text(""+pts.charAt(i), i * 90 - 10, 10, 20, 12);
      }
      cs.endDraw();
      cs.save("cs.png");
      return cs;
    }
    
    ]]>
    https://discourse.processing.org/t/linear-compass-display-to-use-with-a-mpu/48060#post_13 Sun, 15 Mar 2026 08:48:18 +0000 discourse.processing.org-post-158377
    GSoC 2026: Join the Processing Foundation as a Summer of Code Contributor! Hi @claudine! After researching the project and exploring the visual-testing branch, I found that p5.js already has an HTML visual test report system but Processing4 does not have this yet.

    I would like to propose two things for my GSoC project:

    1. Add missing visual regression tests for Processing4 functions like shapes, blend modes, typography, transforms

    2. Implement an HTML test report system for Processing4 — showing expected image, actual image, and diff image when a test fails — so developers can easily understand what changed

    Is this a good direction for my GSoC proposal?

    ]]>
    https://discourse.processing.org/t/gsoc-2026-join-the-processing-foundation-as-a-summer-of-code-contributor/47450?page=6#post_107 Sun, 15 Mar 2026 04:49:21 +0000 discourse.processing.org-post-158376
    Linear compass display to use with a MPU Hello @glv

    the only place I could find was

    hdg.line((degree+i)%360, 21, (degree+i)%360, 21+lengthLine);

    but it still was unable to get it to wrap :slightly_frowning_face:

    ]]>
    https://discourse.processing.org/t/linear-compass-display-to-use-with-a-mpu/48060#post_12 Sun, 15 Mar 2026 02:40:23 +0000 discourse.processing.org-post-158375
    Linear compass display to use with a MPU Hello @philtkp,

    Try this in original code in the first post in the correct location.

    (degree+i)%360 // Take modulus of sum

    It also helps to use println() statements in your code you help understand the values.

    The modulo operator can take some time to wrap your head around. No pun intended!

    :)

    ]]>
    https://discourse.processing.org/t/linear-compass-display-to-use-with-a-mpu/48060#post_11 Sat, 14 Mar 2026 23:30:53 +0000 discourse.processing.org-post-158374
    Linear compass display to use with a MPU @ glv

    this is where I’m at. I changed a few things to mirror some of your code. I’m closer but, still have a glitch.

    image

    image

    // LINEAR COMPASS
    PGraphics hdg;
    
    int compassScale = 360;
    int degree = 0; 
    int degree1 = degree%compassScale;
    //
    // ---------------------------------------------------------------
    //
    void setup()
    {
      // init
      size(800, 600);
      hdg = createGraphics(360,40);
    } // func 
     
    void draw() 
    { 
     degree = (int)map(mouseX, 0, 360, 0, 2*compassScale);
     //text(degree,mouseX,mouseY, 11);
       // DISPLAY DEGREES
     hdg.stroke(0);// black
     hdg.fill(0); //  black 
     hdg.textAlign(CENTER);
     //text(degree1,180, 11); 
     
    
     hdg.beginDraw();
     hdg.background(255);
    
    // black rect (the whole compass)
     hdg.noFill();
     hdg.stroke(0); //Black
     hdg.rect(0, 0, 359, 39);
      
      // yellow rect (the display)
      
     hdg.fill(255,255,2);
     hdg.rect(0, 20, 359, 19);
      
      // yellow triangle 
       
     hdg.stroke(0);// black
     hdg.fill(255, 255, 2); // yellow 
      
     hdg.triangle(180-5, 13, 180+5, 13, 180, 19);
      
      int degree1 = degree%compassScale;
      
      println(degree, degree1);
      // DISPLAY DEGREES
     hdg.stroke(0);// black
     hdg.fill(0); //  black 
     hdg.textAlign(CENTER);
     hdg.text(degree1,180, 11); 
      
     // DRAW BLACK DEGREE MARKS
     hdg.stroke(0); // black
     int lengthLine = 0;  
    
     for (int i=90; i < 450; i+=5) {
      if (i%90==0) { 
         lengthLine=8;
       } 
       else if (i%20==0){
         lengthLine=5;
       }
       else   
       {
         lengthLine=3;
       }
       hdg.line(-degree1%360+i, 21, -degree1%360+i, 21+lengthLine);
       hdg.fill(0);
       hdg.text("N", -degree1+180, 38);
       hdg.text("E", -degree1+270, 38);
       hdg.text("S", -degree1+360, 38);
       hdg.text("W", -degree1+450, 38);
      }
      
        // red line in display
     hdg.stroke(255, 2, 2); // red
     hdg.line(180, 21, 180, 39);
      
     hdg.endDraw();
     image(hdg, 220, 280);
     
    
    }
    
    ]]>
    https://discourse.processing.org/t/linear-compass-display-to-use-with-a-mpu/48060#post_10 Sat, 14 Mar 2026 23:15:47 +0000 discourse.processing.org-post-158373
    Linear compass display to use with a MPU Hello @quark,

    Small bug:
    image

    I am sure it is a simple fix on your end.

    Note:
    I offset my image by 8 pixels so I did not have to split a glyph.
    Not sure what smoothing does on the edges and gave the glyph some breathing room.

    :)

    ]]>
    https://discourse.processing.org/t/linear-compass-display-to-use-with-a-mpu/48060#post_9 Sat, 14 Mar 2026 22:00:11 +0000 discourse.processing.org-post-158372
    Linear compass display to use with a MPU
    philtkp:

    I’ve never tried to use images

    get() / Reference / Processing.org

    Minimal example:

    Your code was used to make the compass.
    I then sliced it with PImage.get() and moved it around.

    I offset the slices:

    You still need to move modify x for correct placement and wrapping around.
    I encourage you to work through this one on your own.

    Note: I had an offset of 8 pixels for the glyphs. The code needs more work to align everything.

    :)

    ]]>
    https://discourse.processing.org/t/linear-compass-display-to-use-with-a-mpu/48060#post_8 Sat, 14 Mar 2026 21:50:43 +0000 discourse.processing.org-post-158371
    Linear compass display to use with a MPU on this one i wont mind seeing the sketch. I’ve never tried to use images.:flushed_face:

    ]]>
    https://discourse.processing.org/t/linear-compass-display-to-use-with-a-mpu/48060#post_7 Sat, 14 Mar 2026 21:24:57 +0000 discourse.processing.org-post-158370
    GSoC 2026: Join the Processing Foundation as a Summer of Code Contributor! Thanks for the update, @kit I will look up to the proposal template really appreciate all the guidance from you and the others here.

    ]]>
    https://discourse.processing.org/t/gsoc-2026-join-the-processing-foundation-as-a-summer-of-code-contributor/47450?page=6#post_106 Sat, 14 Mar 2026 19:47:10 +0000 discourse.processing.org-post-158369
    GSoC 2026: Join the Processing Foundation as a Summer of Code Contributor! It was a pleasure @kit . Now will be preapring my proposal.

    ]]>
    https://discourse.processing.org/t/gsoc-2026-join-the-processing-foundation-as-a-summer-of-code-contributor/47450?page=6#post_105 Sat, 14 Mar 2026 19:41:02 +0000 discourse.processing.org-post-158368
    Linear compass display to use with a MPU There are several ways to do this. The approach I would take would be to create a full 360° image of the scale like this which is tiled horizontally (image will wrap on x axis)

    cs

    And then position it according to the heading. I created a sketch using this approach and this video shows it in action.

    Linear Compass created with Processsing

    The code is modular so would be easy to incorporate into your own sketch. For instance in my sketch the draw method for my sketch is just this.

    void draw() {
      background(220);
      updateAngle();
      drawCompass((width - 360)/2, height/2 - 20, angle);
    }
    

    the drawCompass call requires just 3 parameters, the first 2 control where it is displayed and the third the heading in degrees.

    If you want the sketch code I can post it here but I fully understand if you want to create the linear compass yourself. :smile:

    ]]>
    https://discourse.processing.org/t/linear-compass-display-to-use-with-a-mpu/48060#post_6 Sat, 14 Mar 2026 17:53:21 +0000 discourse.processing.org-post-158366
    PCD @ Worldwide 2026 - Call for Organizers HI,

    My name is Benoit, I am a Professor in Computer Science in Montreal, Canada and I teach a graduate course on algorithmic art at Université de Montréal ( GitHub - rethread-studio/algorithmic-art-course: Collection of resources for the algorithmic art course at the Université de Montréal · GitHub ).

    I’d love to have a PCD in Montreal, at Université de Montréal or another University in Montreal.

    I’ll join the info session on Monday. I’d like to learn more about the previous PCDs and maybe how to reach out to the Processing community in Montreal

    Cheers,

    Benoit

    ]]>
    https://discourse.processing.org/t/pcd-worldwide-2026-call-for-organizers/48081#post_5 Sat, 14 Mar 2026 15:28:56 +0000 discourse.processing.org-post-158365
    Linear compass display to use with a MPU I’m slowly starting to get my head around this.

    ]]>
    https://discourse.processing.org/t/linear-compass-display-to-use-with-a-mpu/48060#post_5 Sat, 14 Mar 2026 04:24:35 +0000 discourse.processing.org-post-158364
    Video doesn't play on the canvas. I don't understand why!
    limzykenneth:

    you can open an issue about this on GitHub so we can look into it.

    issue opened on Github

    :wink:

    ]]>
    https://discourse.processing.org/t/video-doesnt-play-on-the-canvas-i-dont-understand-why/48095#post_6 Fri, 13 Mar 2026 08:17:16 +0000 discourse.processing.org-post-158358
    Video doesn't play on the canvas. I don't understand why! Thanks

    So, this works !

    let video;
    
    function setup() {
      createCanvas(900, 600);
      video = createVideo("video.mp4");
      video.hide();
    }
    
    function draw() {
      background(200);
      image(video, 10, 10);
    }
    
    function mousePressed() {
      video.loop();
    }
    
    
    ]]>
    https://discourse.processing.org/t/video-doesnt-play-on-the-canvas-i-dont-understand-why/48095#post_5 Fri, 13 Mar 2026 08:08:20 +0000 discourse.processing.org-post-158357