Show HN: ProcASM – A general purpose, visual programming lanugage
procasm.temware.siteI've been working as a software engineer since 2016. I've always had side projects that I would work on outside of my job. At first, it was just web games. But in 2021, I took an interest in programming languages and started making my own. When I got laid off from my job in late 2023 (budget cuts according to my employer), I decided to focus on becoming an independent developer and being able to monetize my own software.
Since I was working on programming languages, my plan was to make a commercial grade programming language. Monetizing it would be difficult since there are so many free and open source programming languages out there. The only way I could think to stand out was to make something that hasn't been made before. General purpose programming languages DO exist; Visual programming languages DO exist. As far as I know, general purpose, visual programming languages DO NOT exist. So, that is what I decided to create.
I wrote a blog on my website <https://temware.site/html/blogs/procasm_justification.html> talking about how ProcASM works and some justifications on why developers and companies would consider using it. There is documentation <https://procasm.temware.site/documentation.html> describing ProcASM's concepts in more detail. And, there is a manual <https://procasm.temware.site/manual.html> that describes how to use application itself.
I have examples on the website <https://procasm.temware.site/procedure_view.html> showcasing how procedures are displayed in ProcASM. The images on that page are procedures, created in ProcASM, that were exported to SVG files from ProcASM.
You can try out ProcASM for free in your browser here: <https://procasm.temware.site/demo.html>
If you just want to see examples in ProcASM, use the links below to load projects in the demo.
Sample Project: <https://procasm.temware.site/demo.html?sampleProject=https%3...> Execute the Procedures: *Fibonacci*, *Test: Fizz Buzz*, and *Guess Number* to get an idea on how ProcASM works.
Network Project: <https://procasm.temware.site/demo.html?sampleProject=https%3...> This project contains examples of TCP clients and servers. If your using the browser version, you can load the project and view the procedures. However, you cannot execute any of the procedures in this project since they rely on native dynamic libraries which can't be executed in the browser. If you are using the desktop version, you can execute the procedures: Test TCP Client, Test TCP Server, and Test HTTP Server. This page <https://procasm.temware.site/getting_started.html?show=netwo...> can help you with compiling a dynamic library on you machine.
Support Forum Project: <https://procasm.temware.site/demo.html?sampleProject=https%3...> To ensure that ProcASM was suitable for software development, I decided to create something non-trivial with it; the back-end for the support forum <https://forum-procasm.temware.site>. The project was transpiled to C code using ProcASM (available only for the desktop versions). Then, that C code was compiled on a FreeBSD machine to generate an executable. That executable is running on a FreeBSD server. The *Server* procedure is the *main* procedure for the application. The dynamic library is not available. So, you can only view the procedures in this project.
> Personal Subscriptions are per-user. So, this subscription is valid for one user
So if it's $100 per year and it's a programming language, at 366 days I can't even use what I already wrote? I'd advocate for the JetBrains licensing model: it remains licensed to the user indefinitely but just with no updates. Otherwise for a programming language that's extortion not a licensing fee
> it remains licensed to the user indefinitely but just with no updates
That is how the purchasing model currently works. Once you have downloaded the executable, you are free to use it forever even after your subscription ends.
But, I can see where there might be confusion. So, I'll be sure to re-word that page and make it more clear.
I just saw the Hello World example on the website, and the video.
It seems like your program is really capable, but I'm finding the UI extremely overwhelming.
I find myself comparing this to MIT's Scratch, and I know your tool is much more capable, but the user experience makes Scratch so intuitive.
Everything reads like a short sentence, and I can just dive in without understanding what I'm doing.
Any chance this can turn into something like "building legos"?
Blocks can be built exactly like Scratch. And, then, maybe you can map their input/output streams as a way to connect blocks (ideally inferred on the run).
And people can re-use blocks that others have built.
I know this is supposed to be a programming language, not a toy. But, selfishly, I want the UX to feel like it's a toy, so simple to discover it on my own. I can imagine prototyping stuff with it, especially if there's a library of stuff that I can use or contribute to while doing so...
Thanks for the feedback.
I was wondering if the UI might give users some trouble. I had decided to write my own GUI library for this application instead of using an existing one. But now, I think retooling the GUI with an existing GUI library is in order.
> Any chance this can turn into something like "building legos"?
I'm not sure what you mean by "building legos"? Right now, users can create and reuse procedures. Sub-procedures, on the other hand, are tied to a specific procedure. I think this tool can work fine as is for prototyping.
But without a better UI, users may be choosing not use the app at all. So, I'll focus on a UI redesign.
The legos was referring to user experience, sorry about the vagueness.
I'd love to try this again with a simpler UI. If there's a place I can follow for updates, LMK.