Wheel Reinvention Jam

August 15 - 21, 2O22

A one-week jam to change the status quo.

Project updates

Taking a little break from the wasm debugger to integrate harfbuzz into &orca

View original message on Discord

Switching between wasm and internal bytecode views, and adding breakpoints &orca

View original message on Discord

Stepping through my wasm interpreter's internal bytecode (wip wasm3 replacement for &Orca)

View original message on Discord

!til here's part two of my learning jam project &colors where I explain gamma correction and sRGB encoding, and update the vector graphics renderer of &orca to be gamma correct
https://youtu.be/cFoi1OLHFQ0

View original message on Discord

The tiger is back. Running pretty ok already without much optimization. I could probably cull a lot more stuff. &orca

View original message on Discord

Just added strokes (converting strokes to filled paths for now) &orca

View original message on Discord

Added MSAA in the compute shader. It might be more efficient to let a fragment shader "automatically" do it, but I'd have to change the simple final blit pass with a draw indirect call that generates triangles for each touched tile... will test later! &orca

View original message on Discord

Finally, propagating tile-local winding numbers to get global winding numbers. We can now fill paths!
Now I've got a bunch of cleanup to do. And then strokes, texturing, anti-aliasing, clipping, translucency (not necessarily in that order) &orca

View original message on Discord

Same, but merging the tile bins across paths, and rasterizing only the tiles inside the bounding box of the path control points &orca

View original message on Discord

Another building block for orca's webgpu vector graphics render: binning monotonic curves per-path and per-tile and computing tile-local winding numbers &orca

View original message on Discord

been implementing :rxi: 's cached renderer but with compute (&sdf) instead of software rendering. Efficient & Fast!

View original message on Discord

I just finished adding GLES bindings to &orca, so I figured I could try porting my old WebGL fluid sim experiments to it, and it was very pleasingly easy: https://www.youtube.com/watch?v=NqfEtRGEdYU

View original message on Discord

@bvisness wrote a small breakout game in &orca using our vector graphics renderer! Some platform discrepancies to iron out still, but it's shown here running on windows and macos.

View original message on Discord

I added a logging API and a basic in-app console in &orca, that displays log entries emitted by the guest webassembly module. It doesn't look like much yet, but it's already a nice quality of life improvement. The entries are also structured, meaning it could later be used to filter them or to jump to the line that generated the message, set a breakpoint, etc.

View original message on Discord

As a small jam experiment, I added an overlay to &orca that shows you the source code of the webassembly module it's running, and displays colored dots next to the functions that are executed. The color itself indicates the time spent in that functions during the frame relative to the other functions of the module (ie, green = less weight, red = more weight).

View original message on Discord

I implemented another method for &orca gpu vector graphics renderer. Same ghostscript tiger as before (1600x1200 window, 8x msaa), approximately 6x faster: https://twitter.com/forkingpathsdev/status/1644636281459056642?s=20 (edit: deleted and reuploaded, because I can't do twitter right and I posted the video of the previous method)

View original message on Discord

I wrote about the styling system I use in &orca UI toolkit, which solves some problems I had with stack based approaches: https://www.forkingpaths.dev/posts/23-03-10/rule_based_styling_imgui.html

View original message on Discord

I revisited the project and fixed some bugs, made a few improvement and added Markdown support for posts.
https://github.com/marciovmf/static/releases

A little bit late, but my wheel-reinvention-jam project is coming along well. &bewehr

View original message on Discord

Complete IFC (3d building file format used in the AEC industry) file reader generated from its EXPRESS description file.
I am able to render walls and slabs from the file, but not at the right location yet.
&bewehr

View original message on Discord

update Oct. 24, 2022

This diagram:

Hello World

is transpiled to this JSON:

[
  [
    {
      "children": [ {"kind":"Hello", "name":"cell_7"},  {"kind":"World", "name":"cell_8"} ],
      "connections": [
	{
	  "receivers": [ {"receiver": {"component":"cell_7", "port":"stdin"}} ],
	  "senders": [ {"sender": {"component":"cell_6", "port":"stdin"}} ]
	},
	{
	  "receivers": [ {"receiver": {"component":"cell_8", "port":"stdin"}} ],
	  "senders": [ {"sender": {"component":"cell_7", "port":"stdout"}} ]
	},
	{
	  "receivers": [ {"receiver": {"component":"cell_6", "port":"stdout"}} ],
	  "senders": [ {"sender": {"component":"cell_8", "port":"stdout"}} ]
	}
      ],
      "id":"cell_6",
      "inputs": ["cell_17" ],
      "kind":"HelloWorld",
      "name":"HelloWorld",
      "outputs": ["cell_15" ],
      "synccode":""
    }
  ],
  [
    {
      "children": [],
      "connections": [],
      "id":"cell_7",
      "inputs": ["cell_12" ],
      "kind":"Hello",
      "name":"Hello",
      "outputs": ["cell_10" ],
      "synccode":""
    }
  ],
  [
    {
      "children": [],
      "connections": [],
      "id":"cell_8",
      "inputs": ["cell_11" ],
      "kind":"World",
      "name":"World",
      "outputs": ["cell_14" ],
      "synccode":""
    }
  ]
]

and the above JSON is transpiled to this Python:

from message import Message
from sender import Sender
from selfsender import SelfSender
from receiver import Receiver
from selfreceiver import SelfReceiver
from upconnect import UpConnect
from downconnect import DownConnect
from routeconnect import RouteConnect
from passthroughconnect import PassThroughConnect
from container import Container
from Hello import Hello
from World import World
class HelloWorld (Container): 
  def __init__ (self, parent, name):
    cell_7 = Hello (self, f'{name}-Hello-cell_7');
    cell_8 = World (self, f'{name}-World-cell_8');
    self._children = [cell_7,cell_8]
    self._connections = [
      DownConnect (SelfSender (self,'stdin'), Receiver (cell_7,'stdin')),
      RouteConnect (Sender (cell_7,'stdout'), Receiver (cell_8,'stdin')),
      UpConnect (Sender (cell_8,'stdout'), SelfReceiver (self,'stdout'))
      ]
    super ().__init__ (parent, name, self._children, self._connections)

and is transpiled to Common Lisp

(in-package "EH")
(defun new-HelloWorld (parent name)
  (let ((self (make-instance 'Container :parent parent :name name)))
    (let ((cell_7 (make-instance 'Hello :parent self :name (format nil "~a-~a-~a" name "Hello" "cell_7"))))
      (let ((cell_8 (make-instance 'World :parent self :name (format nil "~a-~a-~a" name "World" "cell_8"))))
	(let ((children (list cell_7 cell_8 )))
	  (let ((connections (list  
			      (make-instance 'DownConnect :sender (make-instance 'SelfSender :component self :port "stdin") :receiver (make-instance 'Receiver :component cell_7 :port "stdin")) 
			      (make-instance 'RouteConnect :sender (make-instance 'Sender :component cell_7 :port "stdout") :receiver (make-instance 'Receiver :component cell_8 :port "stdin")) 
			      (make-instance 'UpConnect :sender (make-instance 'Sender :component cell_8 :port "stdout") :receiver (make-instance 'SelfReceiver :component self :port "stdout"))  )))
	    (setf (children self) children)
	    (setf (connections self) connections)
	    self))
	))))

Wart

Branch master has a wart - a hard-coded path (see README.md). This will be fixed in branch dev.

Next Steps

Cleave Ä— into multiple parts

  • diagram to JSON component descriptors
  • JSON component descriptors to Python
  • JSON component descriptors to Common Lisp

Create spin-off which enables manual creation of Ä— and HSM and 0D code in Python.

&abbrv 1.4 is now released:

https://github.com/jakemason/abbrv/releases/tag/v1.4

This update allows you to mark entries as "hidden" which will obfuscate their values when the application is open by replacing their values with asterisks (*) without affecting insertion functionality. This is mostly helpful for streamers who want to be sure that they don't leak API keys and alike by mistake when expanding the abbrv window.

As always, please open an issue if you run into any problems! Thanks!

View original message on Discord

&abbrv Just a quick update to these forums that I've released abbrv 1.2 which I'm considering feature complete. I'll happily fix any bugs reported by Issues or entertain the idea of additional functionality if it's requested, but unless that happens I believe the project will remain at 1.2. It meets my needs and I'm pleased with its performance for me thus far. You can see the 1.2 release here: https://github.com/jakemason/abbrv/releases/tag/v1.2

View original message on Discord

On the left, the website structure. The site.txt and the Posts and themes folders. In the middle, the a portion of the source of the demo site index.html. The highlighted area displays a snipped of code that iterates all posts in order to render a links for each one of them along with their title and their creation date. It's worth noting the list is sorted by post creation date in ascending order.

A bit further, another loop iterating all "pages". Any html file in the current theme folder is considered a page and can be iterated and queried like a post.

As I said, there isn't much to a static site generator and that is why I believe this kind of tool should be simple and less bloated.

  • diagram transpiler - copied das as subdirectory into project

  • hw.drawio -> hw.json transpile helloworld diagram

  • hwhw.drawio -> hwhw.json transpile re-architected diagram

  • wart: das does not transpile simple hello.drawio diagram -> just use hw.drawio and hand-carve the generated json out of it (or just continue ignoring the issue, since hello.drawio is very, very simple and not worth any trouble)

  • diagram parser: das.ohm parses output hw.json and hwhw.json

  • next

    • create .fmt for diagram parser and emit same .py code that was written manually

git (same place as before)

Had to tweak &netsim just a little, because it was annoying me.
Added support for touchscreens, pinch-to-zoom on the graph, and tabbed out the menu bits so it'll fit properly on a horizontal iPad.

View original message on Discord

update: 2022-08-24

make all now runs 4 tests.

Test 4 contains 2 world.pys and produces {'stdout': ['hello', 'world', 'hello', 'world']}

Test 4 shows off some deep technical aspects: fan-out, fan-in, punting messge from Container to Child, Child output routed to other Chidren.

Test 3 is test2 wrapped in another layer, just to test whether it can be done.

Also fixed Hello.py->hello.py case insensitivity in MacOS. Make was failing because it could not find hello.py, whereas other tools (like vscode) did not fail on this.

Next: create .drawio diagrams and transpile them to the above .py code (diagrams as shown in the documentation. [Intend to use https://github.com/guitarvydas/das]

branch: master

(day-after jam, added Usage and Makefile to branch "master")

Usage

make

This runs run.bash which runs a single 0D Leaf component echo.py and prints its output queue at the command-line.

Test.py invokes hello.py and feeds it a trigger message (True).

Then test.py invokes world.py and feeds it the above output.

World.py is almost like hello.py except that hello.py does not echo its input whereas world.py does echo its input. World.py emits 2 outputs for each input it receives.

Both components - hello.py and world.py send outputs to their respective output queues.

The final result is:

  1. hello.py outputs ['hello'] on output port 'stdout'
  2. world.py inputs 'hello' on its input port, then outputs ['hello', 'world'] on its output port 'stdout'.

Test.py invokes the two components and sends them messages in sequence. This process can be generalized to what I call a Container component, but, I didn't get there before the jam ended.

Note that the .outputs () method returns a dictionary of stacks (LIFO) of values for each port. This was a conscious decision. LIFOs, Alists are what original McCarthy FP-style code used. Sector Lisp continues the tradition of using LIFOs. I think that this is one of the secret ingredients for the anti-bloatwareness of Sector Lisp. No RAM, therefore, no heaps, therefore, no mutation, therefore, simplified data access via push/pop/lambda-binding. Lambda-binding and LIFO call-stacks fit together to make small code and no-fuss structure-sharing.

Sequencing in this paradigm is explicit and caused by the order of the sends. Sequencing in most textual programming languages is implicit and is controlled by the syntax of the language (lines of code are ordered sequences).

End of Jam

The jam ended before test.py worked correctly, but, today - 1 day after the jam - test.py is working.

Post Jam

Next, would be to make a Container (Composite) component - helloworld.py that contained two components that can be chained together. Chaining is not necessary in this paradigm and I keep it only to make the examples look more familiar.

After that would come a rearrangement of helloworld.py that would contain one hello.py and two world.pys, resulting in "['hello', 'world', 'hello', 'world']"

GitHub is now up: https://github.com/DanB91/Dreamcast-Burner-for-macOS. Currently some games are working, but larger games seem not to be. Hoping to fix that soon!

I had a few minutes spare this morning so I rushed out a summary video of how MetaDocs is looking after the jam (apologies for lack of polish, I didn't have time to plan it out fully): https://youtu.be/kKppU0zcXjM

Highlights:

  • reading clang's AST from JSON into C structures, deduplicating repeated nodes
  • converting that into a more convenient structure for navigating symbols and their attached documentation comments
  • starting to autogenerate a markdown-like syntax for symbols and attaching the documentation text
  • evaluating constant expressions from the AST for enum values

Still to finish:

  • representing primitive types in the same way as custom types
  • finalising binary and JSON outputs
  • complete example translating to a final HTML
  • library methods to assist with references between documentation and symbols
  • proper scoping of types

Running the Lil UEFI example, which boots up a simple "operating system" that just fills the display with a changing color.

Hour 17:

Final project upload:

  1. Inventory to map dragging works.
  2. Item counts go down.
  3. Dragging items around default color = red(should be green for a valid drop location but whatever).
  4. Can't drag and drop items with count = 0 or restricted items like the helm.

Progress Update

Now supports drag and drop of items across the map from the inventory. The inventory logic is all in a single class: Inventory.cpp.
A transparent sprite is drawn when a user clicks on an item and drags it across the map.
The sprite is colored red (for now) and when the click is released, the item is "dropped" onto the map.

Future Work:

Support dragging and dropping items into crafting slots in the inventory menu.

Final jam ship for &netsim
It's live over at https://bvisness.me/apps/netsim/ and it's incredibly jank. Enjoy!

We've got some fancy new buttons, congestion control, an IP routing rule builder, and some configurables for ACK delay and congestion control.
The best procedural musical instrument you didn't know you wanted.

View original message on Discord

Last update for the jam: I've added in a text area that captures contents from a todo list txt file, and saves edits to that same file. Usable across streams or work sessions - will save me typing up to dos every time I stream.

I didn't have much time this week unfortunately, but I managed to implement the most important features, so filtering filenames by a pattern and searching inside files works. When you hover the mouse cursor over a line in the results window it will show the context around that line and I also made a special widget for entering filesystem paths.

What didn't make the cut was code highlighting, and the filename filtering process is still single-threaded. Also the UI is way worse than I'd like it to be and there are no options for stuff like case-insensitive search and inverted match.

Implementing the path input widget took away way too much time. There are also some performance issues, like the program somehow manages to use 100MiBs of memory (maybe it has to do something with the font used).

I'll continue to work on this after the Jam, because it's nearly in a state where I would want to use it myself :D

Almost completed, just need to round up some rough edges &imagedesk

View original message on Discord

Today I added some idioms for dividing up a log of debug prints into nestable sections, showing them collapsed by default. Here's a demo of the complete experience of opening up a log file, exploring it and potentially jumping from a log line to the precise &bifold-text code that generated it.

The editing environment only knows about lines and sections in the log file; the notion of 'session', 'game' and 'trajectory' are specific to the particular client codebase/game being debugged.

View original message on Discord

Project Ambrosia - Jam Submission

Made with Odin, Sqlite3, SDL 2, and MicroUI.

Features:

  • Viewing Recipes
  • Ability to change units (including density information)
  • Scale recipes.
  • Steps with optional timing and temperature guides.
  • Add ingredients
  • Add Recipes
  • Rounding behaviour with Fractions
  • Dark Mode and Lite Mode
  • Many included recipes!

Future Features:

  • Search by tags
  • Reverse Recipe Search - Search by ingredients and amounts
  • Web App with user features
  • Image support
  • More recipes!

I just finished full image support! The next (and last) update will be soon. I will be diving into the world of generated web pages! &simply-slide

View original message on Discord

So far I have line stepping working :) .
I ended up spending too much time building the UI (3 days), but oh well.

To add: I'm keeping a log of the features I'm adding to the project on my youtube channel - the latest video is here:
https://youtu.be/Ot1ySSe5bjs

So, I finally added in the feature that will hopefully make this application somewhat of a reinvention: camera video capture!

The point of this application is for someone streaming to be able to see what the "viewers" see, but on their own desktop while they work away. The "reinvention" here is to make the process of setting up the UI for the stream overlay to be as effortless and intuitive as possible, retaining as many (and more) features that you get out the box in typical streaming software. I don't think this will suit everyone, but I certainly appreciate it (hence why I'm making this program). It's a similar situation to how screen-sharing works in other apps, but with a streaming twist.

And as mentioned, the addition of camera capture gives us a big step up on recreating what you get out of current video capture software. It took me a while to figure out how to get the camera video stream using the Win32 API. And as I'm programming in C, its been a real experience grappling with COM too. That is meeting my big personal takeaway from this project: to really deep dive into the Win32 and figure out what's achievable in it.

And so ends my submission for the Wheel Reinvention 2022 jam so far. Unfortunately the project is not yet in a state for any kind of release: for starters, the camera capture will almost certainly instantly crash the application on any other computer... magic numbers abound! But this will be a long term project (I'm giving myself 2 years on this one...?!? famous last words), so let's see what we can do with it.

So everyone's posting their jam entries. It's much less than I expected, but here it is anyway. &printf2. The entire point is to just have an off-host logging monitor. The logging monitor can visualize more than just a simple console, with things like bitmaps. Did I leverage that? No of course not, thanks to me being very lazy. I tried to use it as a library, can't say it's particularly useful yet 😂. https://github.com/skejeton/printf-on-steroids

View original message on Discord

Final update for the jam for my &movie-editor filmsaw! Added project loading/saving and also added very unsynchronised audio playback. Also fixed a couple of bugs particularly the aspect ratio when drawing thumbnails. There are still lots of bugs.

View original message on Discord

Nothing new in this gif, just wanted to update the project board and say that I think abbrv made it for a 1.0 (actually 1.1!) release before the jam closes. A very simple project, but ultimately pleased with the progress. Ideally I'd want to make it work for MacOS as well, but for the end of the jam just working on Windows is enough for me. You can grab the release here: https://github.com/jakemason/abbrv/releases

I'd greatly appreciate any/all feedback or bug reports. I figure I'd give this like a week after the jam closes, fix any bugs found and then mark a 1.X release that isn't flagged as beta. &abbrv

View original message on Discord

I didn't end up with something visual or interactive, but it was very insightful.
I was trying to make a CAD app and use metaprogramming for it as much as possible.

What I did:
1. Day: Trying out metadesk and think about how it might help with me creating an app. I realised it is good for describing data, but not so good in describing a program.

2. Day: Trying out sokol_gfx and sokol_app. Also wrote a metaprogram that just takes a DATA_main.c file (in which I write the app in) and turns it into a GEND_main.c file (GEND=generated). I did some keyword replacement just so the metaprogram does something.

3. Day: Started writing the app. I decided that I want a rectangle-struct for basically everything on the screen (backgrounds, buttons, text, ...). I didn't end up writing much code for it though.

4. Day: Now that everything is just this rectangle-object I can describe most of the program in a tree structure. So I did create a META_DATA block (it is a variadic macro so my IDE wouldn't mark it as syntax errors) that holds metadesk data describing rectangles (and other stuff). The metaprogram reads that block and adds the rectangle creation code to a location I marked in the code.

Conclusion: I now have a nice setup for adding arbitrary data in my program and generate code from it.
Running a metaprogram on your code, even when it doesn't do much, can help thinking on a higher level and I think it helps making your code shorter and focus on more relevant things.
&bewehr

View original message on Discord

Squeezed one last feature on &orca before the finish line. Launching apps from the browser, with a choice to cache them for offline use.

View original message on Discord

Implemented TCP sending / receiving, with retransmission. It now reliably transmits data even if the network is unreliable! (In this example, one of the connections drops 10% of packets.) &netsim

View original message on Discord

Building the website via command line is simple and of course, very fast

Minimum configuration is required. Convention is preferred over configuration for the most common task, that is adding posts.

Adding content is just a matter of adding html files to the Posts folder.
The post file name states the template used to render the post, the post creating date and the post title

&multiedit Just to see how easy it is to convert anything to a multiedit plugin, I ported my old solid state visualizer into a plugin.
Also showcases you can do literally anything with plugins here.

View original message on Discord

2-minute demo of how far I've gotten with &bifold-text. Ends pretty much as you would expect.

View original message on Discord

Today was mostly polish. Lots of fiddly background stuff, like hooking up session storage so it'll save the fact that you muted it across refreshes, a little bit of input handling (space is now start/stop), and some mild visual tweaks to make logs more legible. &netsim

View original message on Discord

Not much visible progress on &orca today, but I did a lot of background work!

  • I now load and run real wasm modules in the tab processes, and compile shaders and call gles from them.
  • I also wrote a crappy python script to autogenerate (most of) the API binding code (some of them are more tricky to automate, because the require knowledge of the semantics of the arguments, e.g. glShaderSource, so I write binding code for them manually).
  • Oh and I also designed a simple messaging protocol between my processes, and can send input events to the tabs. Then if the wasm module provides a handler for that event (i.e. defines a function like OnMouseUp() or OnFrameResize()), this gets called automatically (i.e. no need to register input handlers).

So now I can click to change the direction of rotation of my triangle. Phew! But to be fair, I warned you that there's wasn't much eye candy today!

View original message on Discord

&sdf I'm not procrastinating, you're procrastinating :owlofshame:
https://gfycat.com/likableoddhusky

View original message on Discord

Didn't have a lot of time so I didn't finish or get much done for my jam project, but at least I have something...
It modifies .obj's and inserting tracing code. When you run your program, it records where branches and calls are going, and saves that to a file. Then, the user can use another program to view the data which deduces the full execution path and you can look at what your program did, zoom into function calls, etc..
I also wanted to make it work for indirect calls & jmps and in general for bigger programs, and add searching capabilities and recording function args and return values, but alas, no time. That would allow you to do things like search for where in your program you allocated memory, match malloc's to free's, investigate use-after-free's, etc.. &rainman
Also fun fact: a recursive function actually exhibits a Droste effect

View original message on Discord

&simply-slide I added project support, you can have multiple projects and everything!! It also loads your most recent project on startup

View original message on Discord

&cork started work on functions calls, ideally i can do retyping tommorow so that my display of arrays isn't incorrect

View original message on Discord

Changed the SendInput() API calls around to send one big batch of inputs instead of multiple calls. This makes longer string insertion much faster. &abbrv

View original message on Discord

&sdf Adding some features to the editor to allow the user to... y'know, edit
https://gfycat.com/secondhandpoliticalamphiuma

View original message on Discord

&simply-slide You can place text, edit every aspect about it, and delete (forgot to show that in the video). Creating new slides works and also deleting them (again, forgot to show that in the view, sorry)

View original message on Discord

Some fun new bits/pieces today! We've got TCP logging, simulation controls, and some slightly tweaked colors. &netsim

View original message on Discord

There it is! Probably the world's first successful burn on an M1 Mac of Xenocrisis for Dreamcast!

Phew! I Finally figured out a way to do cross-process graphics. So now I can give each tab process a GLES context, that can be displayed inside the main &orca process. To celebrate I'm having some remote triangles!

View original message on Discord

Doing the TCP handshake, and sending and ACKing data! &netsim

View original message on Discord

&multiedit a basic particle system plugin in 183 LOC. Yes it's very barebones, but it works!

View original message on Discord

I seem to be past the "black triangle"[1] phase of my project &bifold-text, so tonight I had some fun. I built a little game using my new text editor. Here's what the source code looks like normally, and revealing debug prints. Finally, just for eye-candy, a video of me playing the game. You'll have to trust me that the debug prints work 😃

[1] https://rampantgames.com/blog/?p=7745

View original message on Discord

&multiedit Multiple plugins and Window resizing done. key events, mouse button events and resize events are now accessible through plugins
Now for the fun part (Trying to make a particle system editor as a demonstration)

View original message on Discord

&simply-slide You can now edit the background of the slide, select slides to view, and save not only the slides but the exact slide you had selected. Thanks to Martins and x13pixels for ImGui help!

View original message on Discord

Got this working earlier this week, but figured I post it. CDI file parsing is going well.

&sdf lerping between sdf's with set keyframes 🔥

View original message on Discord

A less interesting, but still important, update: we can now ship a single .exe file with fonts and any/all other required pieces embedded in the .exe. Once you add entries, your .exe is joined by config.abbrv that contains all your saved data. Moving data between machines is as simple as copy/pasting that file between them. &abbrv

View original message on Discord

Network-sim-as-an-instrument, now with more graphs! &netsim

View original message on Discord

&multiedit Quite a bit of progress since yesterday, added proper plugins and rendering via them is super easy

View original message on Discord

After a bunch more work and one LLVM bug (🙃) we have better visualization of dropped packets, plus a lot of other little animation polish things. &netsim

View original message on Discord

Now the organizing part this image organizer finally begins &imagedesk

View original message on Discord

After some hard work by @bvisness, we've got some fancy animations for packet routing / buffers! &netsim

View original message on Discord

&cork Got my first function converted over using my Decompiler, it's slightly broken but almost there

View original message on Discord

Fractional Unit Showing and basic rounding

Ability to Add Ingredients (with default units, and plural names)

Ability to Add Recipe

My &movie-editor Filmsaw is coming along nicely 🙂 managed to add a source window that opens videos found on the filesystem. You can drag videos onto the timeline then chop them up with X and delete them with Delete. Lots of improvements left to make but the basics are working now I think - hoping to get audio working next. Then I'll probably look at how horrific getting videos exporting is. FFmpeg is amazing!

View original message on Discord

Day3 - The &orca launcher now loads metadata from the app bundles it finds in the local apps folder. You can click an icon to select an app and see its banner and description. Double clicking creates a new tab backed by a separate process.

View original message on Discord

&multiedit Had to rescope a bit, panels were causing quite a pain for rendering for plugins. so wasted a day on that.
In other news, I got the file explorer bit working today, with queries!

View original message on Discord

Viewing an 16k image without optimizing the render (I'm just using SDL for the jam) is way faster the some image viewers &imagedesk

View original message on Discord

First jam update report! Been making pretty good progress so far.

Got ffmpeg opening videos and displaying them on the screen but single threaded and no audio yet.
You can seek the video and I'm using that to generate badly sized clip thumbnails.

I've also started work on the track editor and you can move clips around and chop them in half. I have also added undo/redo support for the clip editing which is all working nicely. You can't delete stuff yet.

I'm working on the sources panel on the left next which will display videos in a folder and allow you to drag them onto the track editor to add them to the film.

Once that bit is working the plan is to see if I can get the video panel to display the film you are editing, taking the clips etc into account!

Some more kinks worked out, input/output seems bugless (so far) and we now support multi-line expansions. Saving and loading works without issue and happens whenever a pair is added, removed or modified. Thanks to Martins I've also resolved a number of Windows System Tray Icon woes! I'm very pleased with this progress so far -- I'll need to start researching the MacOS implementation details starting tomorrow. I assume that'll take a lot more time as I'm far less familiar with that environment... &abbrv

View original message on Discord

We are simulating routing! Packets are moving through the network 😃 &netsim

View original message on Discord

&simply-slide I setup ImGui and SDL2. I also got the basic UI layout setup. Gonna be working on loading in a .ini and dynamically loading slides/resources based off the .ini

View original message on Discord

&sdf When everything's a distance function, hit-testing / mouse-picking is free. (Animated Undo/Redo on the other hand, is gonna cost ya :drugz:)
https://gfycat.com/wellinformeddrearyeskimodog

View original message on Discord

Current progress of Day 2 of the Jam. A "forward" cookbook with decent unit conversion done with the ability to convert between mass and volumetric units! (It knows the density of the ingredients)

Walking the filesystem tree and parallelized regex search mostly works. I'm using the PCRE2 library for regexes.
Filtering files by name doesn't work yet at all and I think that will have to be also parallelized.
A rough draft of the UI is also done, just enough to test things. I'll probably have to make my own controls because the textbox in raygui seems to be very basic (i.e. can't select text, no key repeating).

Capturing all the instructions executed by a program &rainman

View original message on Discord

Mostly successful Windows build for &abbrv ! There's still some work to be done on this version, and the entire Mac OS platform layer to do, but I'm very pleased to be so far along already. I think I chose a reasonably sized project for the jam 🙂

View original message on Discord

Added threading, now it outputs them all at once. &printf2

View original message on Discord

Image organizer going well so far. Done much more progress than I expected by now

View original message on Discord

Enchancing printf debugging! Starting up with making sortable logs.
It's still very crude and it's synchronous for now as you can see by the logs not appearing immediately.
&printf2

View original message on Discord

Just a very crude UI mockup for the first day! The OS is making handling animations during resize overly painful, and I spent way too much time on this :lol_sobbing: &orca

View original message on Discord

Not much progress today.. I may have bitten off more than I can chew. What else is new? 😅 &bifold-text

View original message on Discord

At last...we have "simulated" a "packet". &netsim

View original message on Discord

&multiedit Got basic panels working. Should be easy to attach plugins to them which is the next step

View original message on Discord

&sdf Basic rendering of SDF primitives for an atlas entry

View original message on Discord

&gollash Processes communicate with stdin, stout and stderr. What if we could make a node editor UI where you can create a script, but instead of using the weird bash syntax you can have a nice UI where you connect nodes the way you want.

so far I've only built a small part of the UI 😄

View original message on Discord

&cork I've made TB bindings for Odin using Cuik to handle the automated labor with me filling in for the limits of it. I'll be needing it for the code analysis stuff that i'll be doing.

View original message on Discord

Projects

SDF Atlas

Editor that allows for authoring and exploring compositions of simple SDF's

BYP
Skytrias | Michael Kutowski

Printf on steroids

That's it. The ultimate printf has come to life.

bumbread
skejeton

Dreamcast Image Burner for macOS

There is currently no way to burn a Dreamcast CDI image on macOS. Let's change that with this project!

Dan

Image Desk

Image Desk is a dynamic image organizer built to facilitate sorting and browsing a large number of images using a tag system.

Samuel Deboni Fraga
Igor Fagundes [ifaresi]
Henrique Hiram
biowater

Grab-a-Chair

Booking app with more control over the night out

orrex

pestctl

pestctl: a low barrier to entry, visual debugger for Linux

parada

Cross platform GUI library

Cross platform GUI library in C

saikyun

abbrv

A text expansion solution in C/C++ for Windows.

Jake

Bifold Text

What if we give plain text source code a tiny amount of structure to improve the experience of debug by print

Kartik Agaram

MetaDocs

Syntax-agnostic documentation & AST extraction for C/C++

Andrew Reece

Cork

A decompiler project where you arrange on a magic corkboard

Yasser Arguelles

Gollash

A new way for processes to communicate using a node editor UI

Adham Zahran

Game Inventory System in SDL

Game Inventory management UI

solomonkane

Simply Slide

A new kind of presentation program that has a friendly interface and compiles to html. More description coming soon

Evan Butterfield

filmsaw

A barebones movie editor inspired by Windows Movie Maker built on top of ffmpeg and sokol gfx.

zanders3

MultiEditor

An Application capable of providing/creating editors for multiple file formats via plugins

VoxelRifts

netsim

Play with computer networks and learn how they work.

Ben Visness
Colin

Orca

A WebAssembly runtime environment for portable graphical apps.

Martin Fouilleul

Rain Man

Capturing the full execution path of a program so you can understand how your program state came to be

Duikelaar

boringrep

A multi-threaded file searching tool

protostr

Project Ambrosia

Reinventing the Cookbook---In Reverse!

Ginger Bill

static

A minimalistic static site generator.

Marcio

bewehr

A simple CAD tool for generating reinforcement plans from 3d models.

progfix

Project Overlay

An overlay GUI used for personal or streaming purposes. Featuring transparent windows, streamable games, productivity tools, and more

s0lly

eh

The goal of this project is to program computers using pluggable units of software.

paultarvydas

Lil UEFI

Simple, headers-only C library with definitions of UEFI types and protocols, intended for UEFI application (operating system) programming.

Allen Webster
Ryan Fleury