Show HN: Isomorƒ, an experimental software development paradigm
Hi HN! We’re the founders of isomorƒ (https://isomorf.io), an experimental software development paradigm. isomorƒ is a structured cloud IDE designed around the ideas of functional programming and serverless architecture and built to reduce barriers to entry and increase developer efficiency.
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! Great to see Isomorf here. I have commented multiple times about it before in the context of the next generation of programming languages (or more generally, moving away from plaintext). 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). Thanks! We've seen your mentions, and we appreciate your enthusiasm. We clearly have similar visions for next generation development stacks. 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? Come on Lamdu Gitter, the Lamdu team also wanted to set up a community site for non-plaintext programming. FYI, this led to the creation of https://www.reddit.com/r/nosyntax/ Sadly I'm not aware of an organised community around this concept. There should be one! "Intentional programming" is also a good keyword to look for. would be a good place to post as well Thanks. Hadn't heard of that one. Seems like we need an invite. Would you be up for inviting us? I actually don't have an account myself, I just read. But I may be able to get one, I'll check. No worries, we were able to get accounts. It seems like an awesome community! We posted and have gotten a great response. Lots of encouragement and good feedback. There was even some talk of Intentional Programming and Charles Simonyi, which I'm sure you'll appreciate. Happy to extend you an invitation if you want one. https://lobste.rs/s/kiva0w/structured_cloud_ide_designed_aro... Thanks. Good to see the discussion there. My friend and fellow HNer Miguel invited both of us a little while ago. I just joined too. This seems like a novel approach to development. Really moving away from a traditional IDE toward one that considers the modern development and deployment stack. Will be cool to see how a growing community can better support intelligent code sharing Wow that's a really impressive and well put together demo and overview. Really easy to follow and I'm glad I went through the whole tour. Question - you mentioned optimizations but I didn't see that in the tour. How would that work? Thanks! As 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) Cool concept -- it does seem like the future is in functional coding approaches. 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? Thanks! 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. Interesting idea. How do you think about language-specific libraries? E.g., is there a scikit-learn coming to isomorƒ soon? Looks really interesting Truly a fascinating concept with dynamic applications!