1 September 2026
For the past month or two I've been heavily using Are.na Canvas. Partly because I've started working on it again. I've been meaning turn the structure for Are.na canvas into a plugin system. The idea being that the core (dragging, panning, loading, mounting, state, transactions) become stable ground to build on top. And then you just write components that build on the context of the channel and individual blocks.
So here's some updates on progress I've made with the plugin system. The way I'm going about it is seeing what are my needs and then figuring out how a plugin could do this. Once I think through that, I can add that to the plugin surface. So right now the plugin surface, or as I call it -> the controller is very messy... but I think over time it will clean itself out. So here goes...
See more9 August 2026
Come a long way since I last posted on this feed. This was also the first time I started out the design in figma and then later implemented it in html/css. There's still some refining to do in terms of UI I think, I'm not totally happy with it.
BUT. I think it looks great and works really well and I'm happy it's almost done :)
I'm thinking for this one I'm going to embed a tutorial as a startup sequence for users loggin in for the first time. I don't usually do this but I think I should start caring more about UX and Usability.
See more9 August 2026
Connected it to Are.na so images can be hosted there. Also Are.na's new API lets you store key value pairs on blocks as metadata. Using this to store socket data on the block.
See more25 June 2026
Saw this blog post earlier today, and now I'm thinking the next step for the node based + publication tool is to be transplanted into a spreadsheet like interface. After all, spreadsheets have proven to be the most successful interface for spatial end-user programming (and i think that is what I'm after).
In this scenario the mechanisms of the [node based] will still stay the same, but instead of connecting wires to reference another node or creating a flow of data, it would be location references. Same as spreadsheets, eg. e4, b8.
See more9 June 2026
To multi select, move, rename, delete, etc. Create an action queue, review, edit and execute.
See more13 May 2026
Lots happened over the past 2 months. I been in the shop making, tinkering, designing and fabricating. Prepped for gradex (undergrad final year show) and exhibited for 4 days! it was so quite fun, equally taxing.
Will be posting some updates on whats been happening over the past two months because I wanna document it here.
Till then, here's a compiled video of all the books I've been making using the publication tools:
See more27 March 2026
Playing around with quad trees
connected it to this typesetting tool that leaks words as the textboxes are moved around. The residue generates the quad trees.
See more9 March 2026
Working on a folding typeface. Here's how the interface lookin!
Print out long strips of paper with measurements
23 February 2026
Changed the theme and rewrote the implementation for the svg lines that connect the nodes See more
22 February 2026
I wanna turn this website into an RSS Feed. Essentially anything I want to publish would be here, including stuff over at writing.a-p.space and other stuff.
I will be posting on instagram, and I've mentioned some thoughts about that before over . But finally what I've finally come to decide is to post monthly, so first week of every month, a recap of the previous month. And instead of fitting media to Instagram constraints, I will be posting screenshots and screen-recordings from elsewhere on the web. As if to say, "If you want the full picture get out of Instagram, look at stuff outside the platform". I would obviously prefer not to engage with it at all, but I feel like I need some exposure for my work on that platform, and without which I may struggle to find work. But I'm not sure if this is true, but again I would rather err on the safer side.
See more19 February 2026
I wanted to play around with this stuff:
So I implemented a basic low res version for it
See more18 February 2026
Submitted the first whittling assignment! This was soooooo fun!!!
1 February 2026
What I seem to figure out is how are loops and functions going to work...
This is one way I'm thinking of setting it up. This may take place as a group looking thing. The group will be a node that outputs a function and can be referenced as a variable. The group will have inputPoint and an OutputPoint. The group will construct a function composition by traversing the nodes contained within it.
It will take the nodes that connect to inputPoint and follow them to each node that is connected to its ouput. While traversing, construct a transform function map. Once you make it to the output node, close the transform function map and export it as a function closure.
See more28 January 2026
So generally things are going well. Currently the base of the whole reactive graph system is working well. And adding new nodes isn't as hard, although in the future will definitely be moving transformation functions and render into one file and export as an object type thing.
Anyways, so whats to do now...
a list view for selecting which node to add, maybe like a command bar. Maybe can also use this to compose node trees, for instance perhaps I can type— See more
25 January 2026
Revamped the graph system so its simpler to make new nodes and manage them. Still contemplating the validation system I have... that might need some clean up.
Also contemplating adding reverse flow. So basically the circle that gets outputted on canvas could be overlaid with a bounding box that I could drag.
See more22 January 2026
Changes color based on active link!
Makes it easier to follow relationships :)
See more18 January 2026
The idea is to take the interface of are.na canvas, so positioning, zooming, draggin etc and then combine it with the engine of the publication tool, essentially giving me a node based procedural publication design tool.
Essentially will have views for drawable tings, so here is a circle for example.
See more17 January 2026
I've been using Emacs for the past 6-8 months and I've grown to like it quite a lot. I shifted to it when I was doing C programming and eventually wanted to do some Lisp.
I moved with ideas of extreme configurability and the awesomeness of Org mode. But I never got into Org mode (because of inferior portability compared to markdown) and I didn't get that into configuring emacs. I did some playing around, wrote some Elisp functions and had a nice workflow going, but I think its been pretty clunky. Things work but they're not as lighweight as nvim I'd say. And I don't think thats what emacs is, 'Emacs is an OS'.
So yeah, I think for now, I want something lighter. But I've learned a lot of things from emacs in terms of interaction possibilities. How you navigate through your system, how to spawn and keep servers running etc.
I think I wanna bring those things back and use TMUX + Nvim combo to sort of rebuild that. Keeping focus on simplicity so things are easy to change.
See more7 January 2026
Update Number #2 (JAN 17): since having started this post, I began a refactor and now the refactor is done... Fully rewrote the repo to make it more easier to work with and better organised and performance wise much better + added undo redo by using a reversible store object.
Whatup gang! Some updates on the Are.na Canvas. I'm making this entry on the canvas itself, I've been using it daily over the past few days and its been pretty great. Everything works and feels smooth!
Let me outline all the stuff I added!
1 January 2026
I'm updating this post from the canvas :) I think the canvas itself is almost ready and excited to share it online. There was some weird bug where when I saved the .canvas file to are.na channel and loaded it back in there was a JSON parsing error. Although it happened only for a specific block and hasn't happened since... so I dunno. Will see if this comes back later.
I still need to implement groups, and making new blocks. Maybe make the canvas infinite, like it can start of at a certain size and grow based on farthest away block or something.