Show HN: Isomorƒ, an experimental software development paradigm
We wanted to see if we could reimagine the software development process in a way that would be more automated and assistive, less redundant, and more flexible. Drawing heavily on the concepts of functional purity, static typing, and statelessness, our premise was to design a simple, "low power" representation (i.e., AST) that serves as an easily manipulated backbone for storage/analysis, and then build a structured editor on top of it that allows for very flexible syntax and syntactic sugars. The simplified central storage allows us to offer refactoring, debugging, optimization, and reuse assistance that is often limited by traditional text-file-based editing.
Here is a tour of the concept that ends in a sandbox where you can play around: https://isomorf.io/#!/tour
A few things to note:
- Editing. The editing is structured, so there are no syntax errors (e.g., no mismatched braces). The editing is also propagational (i.e., if you rename or delete something, that change is propagated everywhere that applies). We have built distinct mouse vs keyboard paradigms. You can double-click to see menus, or you can use keyboard shortcuts. (Look for the keyboard legend button for details).
- Deployment. Current focus is on microservices as this was the most universal, easiest to implement deployment. But native apps and HTTP servers are in the works.
- Progress. What we have is very much a work-in-progress, but it’s enough that we wanted to share and get some feedback.
email: feedback <at> isomorf.io
beta release signup: http://eepurl.com/c0CaeX
blog: https://medium.com/isomorf-blog
Thanks!
20 comments
[ 5.6 ms ] story [ 64.8 ms ] threadAs far as the optimizations: we transpile the code to different target runtime languages where we can automatically instrument different optimizations. Currently our microservice runtime is Scala code and we can add a cache layer around any function application or a parallelization queue around any map-like operations on iterable types (e.g., List).
The application deployment UI let's you pick the points of optimization (a top level function for a cache, or map-like application for a parallelization). Then you can pick the tier of optimization implementation you want (e.g., local in-memory map vs remote Redis instance; local thread-based parallelization vs remote actor-based cluster parallelization)
I'm excited to play with it, but I am not the most comfortable with any of your current language choices. Any plans for PHP or JS syntax wrappers?
While we customized syntax in the tour & sandbox to closely match familiar languages, the way code is rendered is totally configurable: the underlying ASTs are passed through a rendering layer with keywords/symbols/etc populated. So adding new syntaxes is pretty easy. We will add those to the list!
Also worth mentioning is that right now renderers are defined by us as part of the webapp, but ultimately they will be loaded as isomorƒ code, allowing users of the platform to design and share new ways to interact with code.
Here's a relevant one just 5 days ago under "What next?":
> The elephant in the room is graduating beyond plaintext (projectional editor, model-based editor).
https://news.ycombinator.com/item?id=15053260
We'd love to get your feedback and discuss in more detail! We think that even beyond the non-plaintext representation, an IDE married with storage can enable a lot of powerful analytical features and services.
Do you have any recommendations for where else we can find a good audience for this? Any other communities talking about this direction for dev tools?
"Intentional programming" is also a good keyword to look for.
would be a good place to post as well
But I may be able to get one, I'll check.
https://lobste.rs/s/kiva0w/structured_cloud_ide_designed_aro...
My friend and fellow HNer Miguel invited both of us a little while ago. I just joined too.