<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Wong Lok</title>
    <description>The latest articles on DEV Community by Wong Lok (@wonglok).</description>
    <link>https://dev.to/wonglok</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F132189%2Fbbe98973-f45c-43ac-b526-71d6c3b667e6.png</url>
      <title>DEV Community: Wong Lok</title>
      <link>https://dev.to/wonglok</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/wonglok"/>
    <language>en</language>
    <item>
      <title>Make Cables and Boxes in Code Directly. </title>
      <dc:creator>Wong Lok</dc:creator>
      <pubDate>Sun, 17 Jan 2021 22:17:57 +0000</pubDate>
      <link>https://dev.to/wonglok/make-cables-and-boxes-in-code-directly-ill</link>
      <guid>https://dev.to/wonglok/make-cables-and-boxes-in-code-directly-ill</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Pgo9JSUw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/3k3nzsygez1fqlyijnlq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Pgo9JSUw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/3k3nzsygez1fqlyijnlq.png" alt="Graph Based Code"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gist.github.com/wonglok/cdb7cf080f6263872b4042eeaae6f1ca"&gt;https://gist.github.com/wonglok/cdb7cf080f6263872b4042eeaae6f1ca&lt;/a&gt;&lt;/p&gt;

</description>
      <category>effectnode</category>
      <category>visual</category>
      <category>coding</category>
      <category>creative</category>
    </item>
    <item>
      <title>Assisted Graphics Engineering ToolSet </title>
      <dc:creator>Wong Lok</dc:creator>
      <pubDate>Fri, 30 Aug 2019 03:27:07 +0000</pubDate>
      <link>https://dev.to/wonglok/assisted-graphics-engineering-toolset-430p</link>
      <guid>https://dev.to/wonglok/assisted-graphics-engineering-toolset-430p</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fM9bOLGh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/6mngu76d8nz4x4x67a98.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fM9bOLGh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/6mngu76d8nz4x4x67a98.png" alt="Assisted Graphics Engineering"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Assisted Graphics Engineering Toolset (A.G.E.) is actually my old concept called ShaderNode. It’s basically a node based remixer for GLSL in a function tree…&lt;/p&gt;

&lt;p&gt;But in A.G.E, it has multiple output.&lt;/p&gt;

&lt;p&gt;There are a few reasons I build shader node / AGE system&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;GLSL is hard to Guess the Output with just code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;GLSL is new to a lot of Web / JS Developers. a Modular System may help things out.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;At the early stage of GLSL market, it is quite hard to debug because all you got is a Blank Screen when there’s a small bug. But fortunately, thanks to Three.JS’s error debug line system. It’s easier now to debug.  But there’s always space for improvement for everything in life.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Normal Setup don’t have live update for GLSL per keystroke. You may rely on third party plugin of chrome or use fire fox debugger.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Setup GLSL execution isn’t as easy as a simple web page visit.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Execution Isolation for debugging and for basic profiling, when we disconnect the module, it wont be executed or even included into execution environment.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;DataType for Arguments / IO of Module. Avoids typing mistake of argument type.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="http://age.wonglok.com"&gt;A. G. E.&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/wonglok/age-gui"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I would love to have a call for dialogue for your way of composing GLSL. Please let me know...&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;How do you write glsl? do you use any software to assist the development process of glsl?&lt;/li&gt;
&lt;li&gt;What’s your creative process for developing GLSL?&lt;/li&gt;
&lt;li&gt;What do you think I should try to code / explore the possibility of development experience.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>webgl</category>
      <category>opengl</category>
      <category>glsl</category>
      <category>javascript</category>
    </item>
    <item>
      <title>I made a visual code organiser for THREE.JS</title>
      <dc:creator>Wong Lok</dc:creator>
      <pubDate>Sat, 01 Jun 2019 14:25:07 +0000</pubDate>
      <link>https://dev.to/wonglok/i-made-a-visual-code-organiser-for-three-js-1f6f</link>
      <guid>https://dev.to/wonglok/i-made-a-visual-code-organiser-for-three-js-1f6f</guid>
      <description>&lt;p&gt;here's the github project&lt;br&gt;
&lt;a href="https://github.com/EffectNode/en-node-graph-gui"&gt;https://github.com/EffectNode/en-node-graph-gui&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The editor engine is open sourced and the backend only stores data but is in private source due to security reasons.&lt;/p&gt;

&lt;p&gt;Vuejs is so awesome...&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;it can help me make a SVG graph easily without other UI library.&lt;/li&gt;
&lt;li&gt;it can help me to build the execution envrionment code for the iframe easily so that i can put the user logic within iframe to make things safer.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Three.js is awesome...&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It can help me use a scene graph to compose a tree structures of items.&lt;/li&gt;
&lt;li&gt;It can help me focus on coding the graphics not the structure setup..&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;My little software is awesome... XD lol hahahahahaha&lt;/p&gt;

&lt;p&gt;&lt;a href="https://igraph.effectnode.com/"&gt;https://igraph.effectnode.com/&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;It can help me reduce effort for setting up stuff like resize handler, how should things be structured and organised.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It can help me organise content with the same strcutrue of scene graph.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It can help me input human values such as timeline timing easily.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It can help me to make life easier by storing code online so that i can share them easily.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Thank you so much for reading my post.... :D&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fztj6jhp3le4izu2m7lje.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fztj6jhp3le4izu2m7lje.png" width="800" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>vue</category>
      <category>threejs</category>
      <category>svg</category>
      <category>javascript</category>
    </item>
    <item>
      <title>My Effect Node got nominated by Webbys Top5 WebSite Tech Achievement YAY!</title>
      <dc:creator>Wong Lok</dc:creator>
      <pubDate>Fri, 05 Apr 2019 01:04:42 +0000</pubDate>
      <link>https://dev.to/wonglok/my-effect-node-got-nominated-by-webbys-top5-website-tech-achievement-yay-3jn2</link>
      <guid>https://dev.to/wonglok/my-effect-node-got-nominated-by-webbys-top5-website-tech-achievement-yay-3jn2</guid>
      <description>&lt;h1&gt;
  
  
  OH MY EffectNode.com
&lt;/h1&gt;

&lt;p&gt;I was so surprised that I could even win the Webby Nomination.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BFjGEaFp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/j29xxw81kyq48umpg7hg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BFjGEaFp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/j29xxw81kyq48umpg7hg.png" alt="Effect Node"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://vote.webbyawards.com/PublicVoting#/2019/websites/features-design/technical-achievement"&gt;Link To Webby Vote&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Please feel free to try the library npm -i enos; it's fully open sourced on github and also front end only.&lt;/p&gt;

&lt;p&gt;Enjoy! :)&lt;br&gt;
woop woop! :D &lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/EffectNode/EffectNode-Lib"&gt;https://github.com/EffectNode/EffectNode-Lib&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webbys</category>
      <category>webgl</category>
      <category>glsl</category>
      <category>javascript</category>
    </item>
    <item>
      <title>(Gist) Similar to a Geometry Shader with GPGPU and Three.js</title>
      <dc:creator>Wong Lok</dc:creator>
      <pubDate>Mon, 11 Feb 2019 21:11:20 +0000</pubDate>
      <link>https://dev.to/wonglok/gist-similar-to-a-geometry-shader-with-gpgpu-and-threejs-2mf7</link>
      <guid>https://dev.to/wonglok/gist-similar-to-a-geometry-shader-with-gpgpu-and-threejs-2mf7</guid>
      <description>&lt;p&gt;&lt;a href="https://gist.github.com/wonglok/66760f51d56bb1acf833dcbb4f987e78"&gt;https://gist.github.com/wonglok/66760f51d56bb1acf833dcbb4f987e78&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/KindnessAPI/KindnessAPI/blob/master/gl/vertexer/index.js"&gt;https://github.com/KindnessAPI/KindnessAPI/blob/master/gl/vertexer/index.js&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Q4nFBb8y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ljjiz95n88vn7ai9rmo9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Q4nFBb8y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ljjiz95n88vn7ai9rmo9.png" alt="Preview"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gpgpu</category>
      <category>shader</category>
      <category>geometry</category>
      <category>threejs</category>
    </item>
    <item>
      <title>Turning my WebGL webapp into a npm library</title>
      <dc:creator>Wong Lok</dc:creator>
      <pubDate>Thu, 31 Jan 2019 21:38:17 +0000</pubDate>
      <link>https://dev.to/wonglok/turning-my-webgl-webapp-into-a-npm-library-4fmo</link>
      <guid>https://dev.to/wonglok/turning-my-webgl-webapp-into-a-npm-library-4fmo</guid>
      <description>&lt;h1&gt;
  
  
  Intro
&lt;/h1&gt;

&lt;p&gt;My app is called &lt;a href="https://effectnode.com" rel="noopener noreferrer"&gt;effectnode.com&lt;/a&gt; It's a flow based creative coding platform for developers and designers to work together :)&lt;/p&gt;

&lt;p&gt;To share the technology with the whole world, i would like to turn it into a front end only library so that all developers can play with what I made.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F71440lzyombqffx04afp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F71440lzyombqffx04afp.png" alt="Effect Node"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Install
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i enos &lt;span class="nt"&gt;--save&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Demo
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://enos.netlify.com" rel="noopener noreferrer"&gt;Live Demo with Effect Node Build with WebPack&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://codesandbox.io/s/r7oy8r2nmn" rel="noopener noreferrer"&gt;Live Demo wihtout Effect Node&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://codesandbox.io/s/vj67lqm9m3" rel="noopener noreferrer"&gt;Live Demo with Effect Node&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F6gc5kapbotpba1lt5dez.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F6gc5kapbotpba1lt5dez.png" alt="EffectNode Library"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  How does it work?
&lt;/h1&gt;

&lt;p&gt;To organise code, we uses modules, just like the idea of es6.&lt;/p&gt;

&lt;p&gt;With creative coding, we often needs designer input like coloring, sizing, animation seed, effect amount and timeline and so.&lt;/p&gt;

&lt;p&gt;Each module can host its own value sliders, color picker and timeline.&lt;/p&gt;

&lt;p&gt;The reason I adopt flow based coding is that it can pass animation data in a visual way and also provide a rapid way to compose effect or mix and match value in desing wise.&lt;/p&gt;

&lt;h1&gt;
  
  
  Example
&lt;/h1&gt;

&lt;p&gt;There are two modules in the demo picture above.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Main Loop Module&lt;/li&gt;
&lt;li&gt;Dom Updater&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The mainloop module runs a requestAnimationFrame loop and emit render events to a message bus (a vuejs instance)&lt;/p&gt;

&lt;p&gt;The Dom Updater modules receive the render event from the message bus and then animate the CSS background linear-gradient of the root DOM of the project.&lt;/p&gt;

</description>
      <category>npm</category>
      <category>es6</category>
      <category>webgl</category>
      <category>glsl</category>
    </item>
    <item>
      <title>Contemplating on idea of Flow Based Programming for WebGL / Canvas 2D</title>
      <dc:creator>Wong Lok</dc:creator>
      <pubDate>Sun, 27 Jan 2019 08:20:52 +0000</pubDate>
      <link>https://dev.to/wonglok/contemplating-on-idea-of-flow-based-programming-for-webgl--canvas-2d-4b70</link>
      <guid>https://dev.to/wonglok/contemplating-on-idea-of-flow-based-programming-for-webgl--canvas-2d-4b70</guid>
      <description>&lt;h1&gt;
  
  
  Why do I choose Flow Based Programming to Explore.
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Flow Based Programming is awesome because I love the part that we can modularise code with specific input output in a visual and mouse clickable way....&lt;/li&gt;
&lt;li&gt;The Natural Cables with IO feels like Vuejs Props and Events.&lt;/li&gt;
&lt;li&gt;Hmmm let's mimic props and events to a flow based paradigm.&lt;/li&gt;
&lt;li&gt;Here we gooooooo lol That's why I made my side Project Effect Node.&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Sometimes, just Code as tool isn't enough....
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Writing Visual Effect is related a lot to Buttons, Sliders and Color Pickers.&lt;/li&gt;
&lt;li&gt;Waiting for reload to update a color tweaking is slow and ineffective.&lt;/li&gt;
&lt;li&gt;Sometimes we also need to use a Range Slider to adjust Effect Speed and Amount.&lt;/li&gt;
&lt;li&gt;Sometimes we also need to dynamically provide Timeline based fade in fade out sequence data into code.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ThTevltH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/0dcw2cgsqj760p5dsuiw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ThTevltH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/0dcw2cgsqj760p5dsuiw.png" alt="EffectNode"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/EffectNode/EffectNode-GUI"&gt;https://github.com/EffectNode/EffectNode-GUI&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  The way I think about organising the creation, flow and consumption of animation data..... :)
&lt;/h1&gt;

&lt;p&gt;There's a pull, there's push thinking....&lt;/p&gt;

&lt;p&gt;I think there would be three types of modules&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Source of truth Module, like UI Sliders, Timeline, Color Picker &lt;/li&gt;
&lt;li&gt;RequestAnimationFrame Event Emitter&lt;/li&gt;
&lt;li&gt;Operational Module that handle animation setup and render.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I love thinking about different paradigms of programming.&lt;br&gt;
Hope you like my work. woop woop. &amp;lt;3&lt;/p&gt;

</description>
      <category>webgl</category>
      <category>glsl</category>
      <category>threejs</category>
      <category>vue</category>
    </item>
  </channel>
</rss>
