13 ms·
Show HN: Alan – a low-code application platform
- klageveen 8y agoHi, Alan is a new approach to "low code" for the rapid development of data centric applications. I'm one of the developers of the platform. > Instead of the traditional relational database + 3GL or 4GL language, the core of Alan is a data modelling language that automatically generates full stack applications. If you'd like to know more, we'll be monitoring this HN post and we have a forum: https://forum.alan-platform.com https://forum.alan-platform.com
- mpweiher 8y agoSounds a bit like naked objects? https://en.wikipedia.org/wiki/Naked_objects https://en.wikipedia.org/wiki/Naked_objects http://downloads.nakedobjects.net/resources/Pawson%20thesis.pdf http://downloads.nakedobjects.net/resources/Pawson%20thesis....
- neppo 8y agoyour tutorial page goes to http://127.0.0.1:4000/pages/tuts/getting-started.html http://127.0.0.1:4000/pages/tuts/getting-started.html
- klageveen 8y agoSorry, go here instead: https://alan-platform.com/pages/tuts/getting-started.html https://alan-platform.com/pages/tuts/getting-started.html
- ctz 8y agoTutorial links to http://127.0.0.1:4000 http://127.0.0.1:4000 :(
- klageveen 8y agoThanks for catching that... Sorry! This is the correct link: https://alan-platform.com/pages/tuts/getting-started.html https://alan-platform.com/pages/tuts/getting-started.html
- hguhghuff 8y agoIt should have a video showing the code the process and the sort of apps it builds. I’m not doing the tutorial. I’m sufficiently interested to give it a 30 second video. If that looks interesting I might look at more involved videos about some aspect.
- klageveen 8y agoHey, that's good feedback thanks. We did a little video/gif of the deployment process (https://alan-platform.com/pages/tuts/getting-started.html#build-it https://alan-platform.com/pages/tuts/getting-started.html#bu...). At some point we'll do a full walk through video, but time-wise it's expensive to do. The flow is pretty bare bones though, so if you're used to a text editor and command line tools it'll be pretty familiar.
- hguhghuff 8y agoWell you’ve launched, so you should be meeting the needs of potential customers. In your shoes I’d turn around and make a 1 minute video and upload it to YouTube within 20 minutes, showing what your system is and what these data structures look like. If you have an Apple Mac, the screen recording is built right into QuickTime, just plug your telephone headset into the machine to record some narrative as you go. Seriously, why launch without showing people what it is? 10 years coding, not willing to spend 5 minutes to record it and show us? I’m not interested in reading about the deployment process. Really not. Sell me on what you made.
- soneca 8y agoI disagree with your strategic view for what one should do after launch. I think the focus should be meeting the needs of actual customers. And an intro video for people who are still deciding if they will give a chance is not one of those needs by definition. Right after launch, you want to iterate the product for your actual users. After-launch is not growth phase, is product/market fit phase. Some friction that filters out customers that are not of the early adopter profile might even be desirable. The only exception is if you do not have enough customers to get feedback from, then you work on this sort of thing. An important, if subtle, point is that I am not against sales in this early stage, I am all for it. I am against investment in inbound growth-only tactics. Founders doing early sales can both overcome any deficiency in a landing page, learn about what is the best message, and improve their product along the way.
- shakna 8y ago> See it with your own eyes I'd love to. You need to show it on this page. Even if a screenshot (or screen capture, or some code) is pretty useless, it helps give the right context, and tells me this is actually a thing, and not just a hope. This [0] should be front and center. [0] https://alan-platform.com/pages/tuts/helloworld1.png https://alan-platform.com/pages/tuts/helloworld1.png
- klageveen 8y agoThanks for the feedback! Luckily you found the tutorial :) It's indeed a real thing, so a screenshot has been added!
- shakna 8y agoAwesome. Good placement, too.
- warpech 8y agoThere is an animated gif in the tutorial: https://alan-platform.com/pages/tuts/getting-started.html https://alan-platform.com/pages/tuts/getting-started.html
- dmitriid 8y agoThat gif is very confusing without context and doesn't show the actual working app (except one page for a split second)
- argimenes 8y agoAn oKay name ...
- inopinatus 8y agoBut is it sending a message, or just making small talk.
- klageveen 8y agoNot that Alan though ;)
- tyingq 8y agoSeems odd, given "It’s declarative and not Turing complete"
- TuringTest 8y agoWhat? Alan Turing also created non-universal Turing machines. :-P
- kazinator 8y agoIt's thanks to Turing that we know that a programmable machine is not Turing-complete.
- have_faith 8y agoApologies for off-topic..., but can someone explain the logo to me? is it a head with legs??
- soneca 8y agoI believe it is a head with a shirt collar. But at first glance, I thought it was a beer mug.
- copperx 8y agoI'm disconcerted after reading this thread, seeing that some people somehow think that "low code" means "low-level code" (really?) and mistaking a collared shirt for legs. I'm going to assume it's because this post was made early in the morning and no one has had their coffee yet.
- a-nikolaev 8y agoYour application is awesome! However, the logo to me did look like a blood bag with some yellow liquid in it and two tubes sticking out at the bottom. (When shown on white background, you cannot see hair on the guy's head - https://alan-platform.com/pages/tuts/introducing.html https://alan-platform.com/pages/tuts/introducing.html ) Anyway, the program looks very intuitive in its purpose and goal!
- klageveen 8y agoI does look kinda like a beer mug, I can't unsee it! But that's probably also because on this side of the planet it's time for a pint.
- sitepodmatt 8y agoHow does this compare to Google App Maker? And MS Power Apps?
- klageveen 8y agoI guess you could compare it to the model driven Power Apps. However, Alan's modeling language is more powerful. Especially the concept of state groups that allows you to specify complex business rules in the application model itself. It's the process of laying down the rules for the data in your application that drives development in Alan. Unlike Google App Builder, you don't start from a drag and drop UI builder. Although a drag-and-drop UI builder is something we might want to add at some point. For most applications though, the generated UI is plenty powerful, because what it needs to support is perfectly specified in the datamodel.
- soneca 8y agoI am not sure I get it right, but is this supposed to be a modern MS Access? If it is, I think it is a very welcoming innovation. I believe there are a lot of use cases in business that are currently under-engineered into Excel or over-engineered into complete web apps, SAP or salesforce applications. BTW, it is a mystery to me why MS Access itself, that is still around, lost this post.
- klageveen 8y agoYou could look at it like that. But because data modeling language underneath is so much more detailed and powerful, the default UI is also much more useful than what you get in Access or any other relational database. The basic target audience is similar, but Alan scales a lot better to more complicated applications. As you say, we see Excel being stretched to doing things it cannot do, and on the other hand custom apps being built for things that don't need to be so specific. There is a place for low code the way Outsystems does it for instance, but we believe a lot of businesses would be better served by something like we're offering here.
- elviejo 8y agoSome feedback: * "low code" is confusing When I started reading I thought low code, meant low "level" code, something like assembly or rust. After reading a lot in the page I saw it meant not writing imperative code. I think the term Model Driven Engineering would be more appropriate: https://en.wikipedia.org/wiki/Model-driven_engineering https://en.wikipedia.org/wiki/Model-driven_engineering * How do I model business rules? How do I model a State machine? I want to specify that once an order has been created I want to send it to the procurement department. * How do I connect with external APIs systems? * You mention that you have an ERP system based on this platform. Can we look at that code? Can we have some testimonials? Kudos: * It's good that you are doing a declarative approach to business software... this is still most of the software we use and I don't think it's a solved problem. * On using a Graph database I think this is better to model complex domains. However which graph database are you using? Neo4j, Dgraph, OrientDB or is an inhouse graph database? * On the name
- codetrotter 8y ago> "low code" is confusing When I started reading I thought low code, meant low "level" code, something like assembly or rust. I expected that as well from the title but at the very start they link the meaning of the term so that those of us that don’t know what it means can quickly find out on Wikipedia. I think it’s best to do like they are doing and link the Wikipedia article.
- WorkLifeBalance 8y agoHow do you take this from here to the next step? Let's say I want to develop a multi user todo and I've followed the examples and now have some Users who log in entering a password. Someone points out that I shouldn't be storing passwords in plain text so I want to store them hashed. Despite there being hints in the documentation that this is possible (migrations shows the password hashed), it's not clear how to carry out this kind of change. A walkthrough of making a change would help convey the use case much better than just templates of "this incantation produces this output".
- gcb0 8y agothe goal is to "step in when excell starts to get in the way" I doubt they will ever care about any of that. a "side loaded application" will likely be the answer to most of those comments.
- klageveen 8y agoThere is a lot the platform can do by itself, but I think you grasped it well enough. The side loaded apps are definitely the escape hatch to enable things it doesn't cover (yet).
- klageveen 8y agoWell, in this particular case passwords are always hashed. So the platform deals with that for you. Other changes to the data model need a migration, which is covered here: https://alan-platform.com/pages/tuts/migration.html https://alan-platform.com/pages/tuts/migration.html
- WorkLifeBalance 8y agoWhere is the definition of the password being hashed? The tutorial defines it as text: /* 'Users': collection { 'Password': text }*/ How does the platform know to hash that? Is it looking for magic property names?
- 8y ago
- leandrod 8y agoDo that relationally, win the world.
- klageveen 8y agoGraph databases are much more powerful and a better fit for our modeling language. However, the platform can create a live SQL database mirror if you need that kind of thing.
- gnud 8y agoCan your graph database update multiple models at once in a transaction?
- klageveen 8y agoOne database runs one model (multiple databases can be connected to each other via interfaces). One transaction can update any number of properties, collections, etc.
- mvleeuwen 8y agoCan you comment a bit more on what makes graph databases such a good fit for you? As far as I can see the models seem to fit pretty much 1:1 to a relational model? I have experienced low-code platforms, and to me your approach looks very well thought-out! Veel succes ;)
- tyingq 8y agoAny thoughts on pricing model yet? I see it's free for personal use. Who do you view as your competition?
- klageveen 8y agoWe're still feeling out the market here, to see where we can take it. It will probably stay free for personal use and then grow from there with services like hosting, etc. Pricing model for businesses is something we're looking at from case to case currently. Competitors include Mendix, Outsystems etc., when it comes to low-code and serving citizen developers. Excel as well. On the other hand there are still a lot of custom implementors out there that try to solve similar problems for businesses.
- tyingq 8y agoThat's helpful...thanks. I had been very interested in Google's Appmaker (https://developers.google.com/appmaker/ https://developers.google.com/appmaker/), but their model where only paid Gsuite users can access applications was a showstopper, as it made access to the general public impossible.
- servercobra 8y agoReally interesting framework. And the docs are super easy to understand; nice work! I'll be interested to see where it goes with pricing. It's hard to start building on a platform if you don't know if it's going to become too expensive in the future. Paid hosting seems like it would work really well for a system like this (though I'd encourage some type of open-core model as well, so people have some escape hatch if the company goes under).
- klageveen 8y agoGood to hear the docs are clear for someone who hasn't been "living it" for years. I understand it's hard to put your trust into something Alan right now, so we're definitely looking at making more of it available without our direct involvement. All I can say right now is that you should just give it a go, I bet it will change the way you look at code. If you do eventually want to build something critical on Alan, get in touch with us and we'll get the contracts set up to support that properly.
- polskibus 8y agoHow do you compare yourself against other "low code" platforms in the 4GL landscape? https://en.wikipedia.org/wiki/Fourth-generation_programming_language#Low_code_development_platforms[9][10] https://en.wikipedia.org/wiki/Fourth-generation_programming_...
- le-mark 8y agoI would also like to see this comparison. Another thing is; HN is really the wrong audience for this. Technologists here will spin up a vm/container with their stack of choice. Indeed; ruby and rails, django, node, all fill the void 4GLs did decades ago. Finding and reaching users for this type of tool is the challenge imo. Implementation is the easy part.
- klageveen 8y agoWe anticipated that HN wouldn't be a perfect fit, but it's a critical audience and usually open to something new. It needs to become more mature before mass adoption amongst citizen developers and exposure to the developer community is one way to make some steps in that direction.
- andrewflnr 8y agoI dunno. This is exactly the kind of thing I come here for. Even if I never use it myself, it's an idea I've thought about myself, so it's good to see someone else made it.
- klageveen 8y ago4GL solutions are one way to attack the problem of scaling and maintaining large applications. However, you tend to end up with a traditional code base and a relational database, without a strong core specification. Especially once you start customizing an application like that, you run into the same problems as a 3GL stack. Alan plays a longer game, with a drastically different approach to specification and development of applications of any level of complexity. Models drive everything and you can't look "under the hood" to look at or modify the implementation. Even at the level of the platform itself, models and code generation drive down the amount of 3GL code we have to deal with. WYSIWYG editors and drag-and-drop UI builders aren't a starting point, it's something we might grow towards supporting in the future.
- drostie 8y agoHey Koen, congrats on you and Corno making front-page on HN! I can definitely confirm for others reading this that it indeed has been something like 10 years in the making; I was working with a prototype of it 8-9 years ago and found those data models so nice that I actually reimplemented the core idea in a repository on GitHub, though it didn't really go anywhere except for my own web site. I have also been able to reimplement it in TypeScript more recently, so that there is a non-Turing-complete subset of algebraic data types (though maybe I'll be able to add a fixpoint operator, who knows) as runtime objects with highly specific TypeScript types that are inferred from the functions you use to construct them. So then a parametric TypeScript construct, ValueOfType<typeof mySchema> embraces values that match the schema that you just specified. You can use this trick to write functions like myHTTPRouter.get('/objects/by-id/:objectguid', { params: { objectguid: { type: 'guid' } }, async handler(params) { // inside of here, params has type {objectguid: string}, // and VSCode knows this, because params is ValueOfType<schema> where // the schema is specified in the `params` key above. return response.json({success: true}) } }) It's a really fun perspective on programming to have these schemas available at both runtime and compile-time, very DRY.
- klageveen 8y agoHi Chris, how are you!? It's been a while man. We've definitely dug into it a lot deeper than last time you worked on it. As you say, once you get how the models work it sticks with you :)
- drostie 8y agoI've been well. Landed a software job with a company called IntegriShield doing a sort of internet rent-a-cop work, now am writing apps for a mechanical contractor called US Engineering -- turns out the construction business always runs on razor-thin margins which is kinda nice because, like, reducing cost by 1% when construction margins are only ~5% causes a 20% improvement in net profit. This is great work, and I think you're burying one lede, which is that it looks like you've embedded a declarative permissions model in this thing, and I built one of those and the time saved can be huge when authorization is handled at the model level rather than everywhere in the business logic.
- skadamat 8y agoI have to know .. any chance the name was inspired by Alan Kay? :]
- klageveen 8y agoNope, different Alan ;) You'll figure it out.
- tlrobinson 8y agoAlan Turing? Because it’s not Turing complete?
- deleted 8y ago[deleted]
- leowoo91 8y agoAll states should be defined? Then how to write an app takes two numbers and returns the sum?
- iNate2000 8y ago(Totally speculating here) I imagine the states would be something like "have no numbers", "have one number", and "have both numbers". And there would be some kind of transition in-to or out-of that third state that would specify the addition.
- klageveen 8y agoCheck this for an example: https://github.com/M-industries/AlanProjectTemplate/blob/master/interfaces/examples/application.alan#L116 https://github.com/M-industries/AlanProjectTemplate/blob/mas...
- leowoo91 8y agoThank you for the example. I just don't want to be picky but that is church encoding. To represent a number, say 1234567, you will need million items in a list.
- klageveen 8y agoAh, like that. It's a fair point, but you're interpreting the model at too low a level. You don't have to model all possible values of scalar types (number, text) because the implementation of all possible values is known. I.e. you're writing a model that will drive the behavior of the application in terms of business rules, with specifications that matter to users of the application.
- yosefzeev 8y agoHow come the "behind the scenes code" is unavailable?
- klageveen 8y agoIn your project, you write specifications. These are read by the runtime components (database, web client) and this specification fully defines their behavior. There is no project specific code, everything you can write in your data model is supported by the runtime components. You can look under the hood at that level, the runtimes are built in C(++) and TypeScript etc., but it's completely generic. In fact a lot of that codebase is generated.
- xivzgrev 8y agoI like that this picks up where excel drops off. But I would like to see some concrete examples. Someone here mentioned a video, that would be good, or even just a list of several specific use cases.
- nathan_f77 8y agoThis is very interesting. I'm looking through the Hours [0] code. Instead of: 'Week Day': stategroup ( 'Monday' -> { } 'Tuesday' -> { } 'Wednesday' -> { } 'Thursday' -> { } 'Friday' -> { } 'Saturday' -> { } 'Sunday' -> { } ) I think it would be nice if you could just write something like: 'Week Day': stategroup ('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday') Or even something like %w() from Ruby: 'Week Day': stategroup %w(Monday Tuesday Wednesday Thursday Friday Saturday Sunday) I also see a lot of "'Yes' -> { }" and "'No' -> { }" stategroups that are quite verbose. So it would be nice if you could just do: 'Active': stategroup @default: 'Yes' %w(Yes No) 'Subsidized': stategroup @default: 'Yes' %w(Yes No) Or even a "Boolean" shorthand instead of 'Yes' and 'No': 'Active': stategroup @default: 'Yes' Boolean 'Subsidized': stategroup @default: 'Yes' Boolean Also 'can-create:' and 'can-update:' seem to always have some shared logic. Instead of: can-create: user +'Roles'?'Manager'|'Yes' || user +'Roles'?'Project Manager'|'Yes' can-update: user +'Roles'?'Manager'|'Yes' || user +'Roles'?'Project Manager'|'Yes' || equal ( user , $ >'Project Group'>'Owner'>key ) You could do something like: can-create: user +'Roles'?'Manager'|'Yes' || user +'Roles'?'Project Manager'|'Yes' can-update: &can-create || equal ( user , $ >'Project Group'>'Owner'>key ) [0] https://github.com/M-industries/Hours/blob/master/interfaces/model/application.alan https://github.com/M-industries/Hours/blob/master/interfaces...
- peacetreefrog 8y agoI feel like there should be a link to a demo application more easily accessible. I'm interested in what type of things I could build with it, is the only way to check that out forking the tutorial repo and building it etc?
- klageveen 8y agoRight now it is. Getting it to run should be pretty straight forward. We should do a video demo though, so perhaps check back later this week.
- hliyan 8y agoI liked the developer experience right off the bat -- the way the data structures are modeled couldn't be more elegant. However, this put a crimp in my enthusiasm: "[Alan] defines all possible states of the data, and in effect all possible states of your application" We recently finished refactoring a complex algorithm that got away from us because we coded it as a state machine rather than a plain vanilla algorithm using good old sequence + iteration + selection. The state machine version may have been easier to write, but the old fashioned algorithm was so much easier to reason about and maintain.
- klageveen 8y agoBoth approaches have their place. If the problem you're solving is best served by an "old fashioned algorithm" you can hook up a side application to your core system. The interface you define between the side app and core ensures your data never gets into a weird state because your algorithm didn't cover a case. For instance, for some projects we hook up to the Preactor planning system specifically to use their algorithms.
- skybrian 8y agoOn this page: https://alan-platform.com/pages/tuts/bottom-up.html https://alan-platform.com/pages/tuts/bottom-up.html The ASCII art isn't rendering correctly. (In Chrome on a tablet.)
- klageveen 8y agoDamn, I was so proud of that. You should bookmark it so you can enjoy it on a big screen later ;)
- workmandan 8y agoAlso broken on my 24" monitor (Chrome on Windows)
- Serow225 8y agoSame for me, widescreen FF62 on Windows 10 FWIW
- davewasthere 8y agoAh, weirdly, removing 'Source Code Pro' from the font-family then renders it correctly.. Which is odd, because that's a mono-space font, I'm sure.
- jraph 8y agoCorrect rendering on Firefox, Chromium and Netsurf on Debian testing, wrong rendering on Firefox Mobile and the Browser app on Android. Most probably a font issue.
- fouc 8y agoAny thoughts of totally revamping the syntax of this declarative language? Perhaps borrow some inspiration from Ruby or some other humane english-like programming language? What's the point in forcing non-coders to write "-> {}" multiple times for no reason? As for Ruby, you can be like Matz and strive for happiness by minimizing syntax and maximizing readability.
- jameshart 8y ago‘M-Industries’? Any relation to the defunct Microsoft Oslo/M-Language model-driven development platform?
- Aeolun 8y agoAs much as I like the idea. There seems to be a fair number of requirements. I don't particularly feel like installing an 'alan' server, or an 'alan' connector just to test out my application. Is there any reason why 'alan run' couldn't do these things for me automatically and run it on my local host?
- klageveen 8y agoWell it could. We find in practice that it's easier to just have a server running "somewhere" (locally if you have the resources) and push applications to it. But if the feedback shows that the first-run experience needs to improve that's definitely an area we would be looking at.
- Serow225 8y agoMy experience has been that it's valuable to have an easy way to spin up a local server/runtime stack, for a wide variety of reasons.
- blobwalker 8y agoI agree. I think people would be far more likely to try it out if you could kick off a dev server from the CLI without having to fire up any extra processes.
- deleted 8y ago[deleted]
- ccleve 8y agoI've long thought that this is the way applications should be built. 90% of what we do as app developers could be automated away. This looks really promising. That having been said, I'd like to echo some of the other comments here. You need better docs. As an app developer, I want to see some things right away: 1. What's the server written in? Can I see the code? It isn't clear which of your Github repos contain the server. If your server is proprietary or secret, make that clear. 2. I'm not going to install VirtualBox. Just give me a binary that I can install so I can see what's going on. 3. I want to see what a finished app looks like. Either do a video, or better yet, put up a demo site. Don't make me install the Hours app just to see it. 4. What is the Alan Connect app? I want to see it before I install it. 5. Give me a way to escape the system. I get that I don't need to write code, but for some things, I really do. In what language do I write custom functions? How do I customize the UI? I understand that I could slog through the docs to find the answers for all these things, but your adoption rate will go way up if you make it easier. When I evaluate new software, if I can't find the answers to the big questions in 20 or 30 minutes, I move on.
- klageveen 8y agoThanks for the feedback, this is exactly what we're looking for here. Perhaps some of this is "how to launch a platform 101", but we can't guess all the concerns everyone may have. Also, we're not necessarily looking to really kick start adoption for a wide audience right now. The platform lacks maturity on a number of levels to properly support that. We'll continue to work on our documentation and clarify some of the things you mention here. A grab bag of quick responses: The server is in-house, written in C and C++ and (at this moment) closed source. If you're on Linux or MacOS you can simply run the server from the command line: https://alan-platform.com/pages/tuts/reference.html#starting-a-server-from-the-command-line https://alan-platform.com/pages/tuts/reference.html#starting... We don't support custom functions, but we do support custom applications that run alongside the stack. They can be written in anything, and we have tools to quickly develop such systems in JS, TypeScript and C++. They're not part of what we're making available to community users right now, so documentation is still a bit limited. We understand people want to see the UI, but it's not the key selling point. Pretty apps isn't what you'd use Alan for (although you could). We try to focus on the modeling language, as it's hopefully unique and cool enough to draw the right audience in.
- pitay 8y agoKind of amusing that it is named after Alan Turing when one of its major features is not being Turing complete by default. This effort for very high level code for building applications reminds me of Eve[1] as a non-traditional programming language (now not actively developed AFAIK, so more suitable for study than actual use). Both languages are designed to be accessible to people who aren't developers and making it simpler for people solving problems. Love how Alan is trying to close the gap between requirements and actual code. At least for me, one of the things that has bugged me about writing in a language such as Java is tracing code to requirements. For Java the first thing to think of to solve this is discipline and complete documentation. I mean there are things like using a traceability matrix[2], but are there better ways to find or represent the relationship between requirements and code. There have been things commonly proposed to programmers such as Test Driven Design, but they are for making sure that the requirements are met by at least some of the code, not for tracing code back to requirements. Are there better ways to manually checking? Perhaps formal methods for tying requirements to every bit of code in a project, or anything else. Maybe languages and platforms like Alan are the way forward on this issue for a lot of things. Counterpoint, I don't know of any real effort from me or anyone I have worked near to trace code to requirements, the effort has been only to make sure requirements are satisfied, it doesn't seem to have caused any issues, so maybe it is only worth it for safety critical code. [1] Eve: http://witheve.com/ http://witheve.com/ [2] Traceability matrix: https://en.wikipedia.org/wiki/Traceability_matrix https://en.wikipedia.org/wiki/Traceability_matrix
- yayr 8y agoHow are you going to differentiate against Mendix or ServiceNow? At the moment their offering seems to be much more mature. Niche strategy? Price? Open Source community? Grow faster (needs more money)?
- klageveen 8y agoThey have a head start in getting to the market. We need more time to reach their level of maturity, but we believe we have the core concept and technology to surpass them quite a bit. For the really large projects our focus on the core specification already makes a difference.
- RomanPushkin 8y agoSomebody should implement this with Ruby DSL over RoR.
- randomThoughts9 8y agoThe oldest project I know of that tried to do something similar was Naked Objects, which later became Apache Isis (the Java version at least). What's the difference between Alan Platform and Apache Isis?
- rvanderarend 8y agoWe definitely have had experience with Naked Objects before this. I can tell you the main difference between Alan and Naked Objects is the modeling language under the hood. Which in Alan's case is a specific for its use, whereas in Naked Objects, it is something like Java or C#.
- balls187 8y agoAs an Alan, I'm not sure how I feel about this.
- childintime 8y agoHow does this compare to http://jasonette.com http://jasonette.com (besides the obvious platform differences)?
- klageveen 8y agoI don’t know jasonette in detail, but you should think of Alan primarily as a way of building and iterating on apps with lots of guarantees about data quality and matching specs, not necessarily a way to build an app quickly.
- chenster 8y agoHow does it compare to the current low-code/no-code platforms such as Caspio (https://caspio.com https://caspio.com), Zoho Creator(https://zoho.com/creator https://zoho.com/creator, or ZenBase (https://getzenbase.com https://getzenbase.com)?
- barryjb 8y agoNot exactly a fair comparison because zenbase is NO code, one more step further. With zoho, one must also learn a rather strange proprietary programming language called Deluge.
- someguydave 8y agoHow do you deal with performance issues with this kind of abstraction?
- klageveen 8y agoBecause we continuously reuse use a fairly limited number of patterns we get to optimize the hell out of them. At a generic level, not specific implementations, but you can still make them fast. There are some other mitigating factors, like: - the datastore is fully in memory - you can spin up multiple datastores to share the load You also don't tend to accidentally run into a performance issue. The constructions that cost more (e.g. nested derived collections) or are risky (kicking of derivations at a high interval) are known beforehand. You tend to know already if you're going to use a lot of memory or expect high CPU load.
- someguydave 8y agoBut you are releasing the server binaries for people to run on arbitrary hardware. Surely different CPUs and machine profiles move the performance thresholds on various dataflow implementations?
- platz 8y agois this based on the concept of StateCharts?
- klageveen 8y agoIt isn’t based on that concept, but certainly there are similarities with StateCharts and probably some other projects as well.
- ilaksh 8y agoIt's interesting to me that the positive HN response seems to show that programmers do (publicly) like CRUD generators and RAD (rapid application development) but only if there's no front-end. I don't buy that it's actually better without a UI or that you can't make a UI for configuring complex models (it's hard but has been done many times before). But like I said, programmers seem to accept it more readily without the UI so maybe that's the trick to programmer popularity for these types of systems.
- rvanderarend 8y agoActually, in the early days we thought about whether to go text-based or not, for instance going for a boxes-and-lines type of modeling environment. We concluded that for serious modeling, 80% or more of what one does is giving names to concepts, leading to the usage of a lot of text any way. And that boxes-and-lines introduces a lot of 'clutter' which is probably meaningful, but not in a strict enough way to do anything useful with it: x/y coordinates of boxes and lines. That's next to there being a lot of tooling available when going text based (editors, versioning, etc), which is more of an added bonus in the short run. In the end, we will probably evolve in the direction of using a projectional editor, making it possible to have some boxes-and-lines modeling environment as well.
- ilaksh 8y agoMost model editors for CRUD aren't boxes and lines, since as you say moving around and connecting boxes isn't generally useful. So I'm not sure why you were starting with that UI. To me, projectional editing is the most sensible type of programming. Unfortunately projectional editors have not had as warm a reception on HN, because programming is narrowly defined by complex text editing. Anything with a UI and programmers are afraid they will be accused of being users. It's dumb, and most won't realize it or admit it, but that's what it comes down to.
- rvanderarend 8y agoThe boxes-and-lines is a very common way of visualizing tables and relations or types and subtypes and/or components. Also in most other so called low-code platforms. That is why it was under consideration: familiarity. I agree it is not very useful though. Projectional editors can of course show the model as text and in other formats as well, like boxes-and-lines. You wouldn't be able to permanently place them in any specific spot then, so moving them around would at most be supported during a viewing session.
- jf- 8y agoTutorial has some issues. “from_scratch.migration” should be “from_zero.migration”, and visiting server_ip:7584 gives an invalid address error. This is after downloading the virtual box image, installing Alan connect, doing the build steps, importing the built image and starting it. Edit: Looks like the Alan connect app needs to be restarted after adding the image. Clicking “advanced” nothing was running, it’s fixed after reloading.
- jf- 8y agoAlso can’t find a valid username/password for Hours. There is what looks like a username (hello world) and password in the source but they don’t let me log in.
- klageveen 8y agoThanks for catching that. Did I mention we're still moving fast and breaking things? ... Sorry. The tutorial text should be fixed, will be looking into the Alan Connect app.
- jf- 8y agoNo worries! Nothing is ever perfect on launch day. It’s a nice app you have here. My gut instinct is that you will need to allow under the hood customisation if you want it to really catch on. Your potential customers will be afraid of getting 90% of the way to their goal and realising that the last 10% is impossible.
- tlrobinson 8y agoIt would be nice to have a simple example application code and demo. Something like TodoMVC seems like a reasonable place to start.
- klageveen 8y agoOut tutorial runs you through setting up something small, and example code lives on GitHub: https://github.com/M-industries/AlanProjectTemplate https://github.com/M-industries/AlanProjectTemplate
- TickleSteve 8y ago"Alan" is presumably named after Alan Turing yet this not Turing-complete... That is an odd naming scheme... Whats next? a Lisp called "NoBrackets"?
- kazinator 8y agoIt is Turing-incomplete. Turing gave us the concept of computational completeness, which requires the complementary incompleteness in the same breath.
- la6470 8y agoThis is useless .. it has a license that prohibits any meaningful use of the product.
- chenster 8y agoHow would you handle workflow? A simple example: email manager when a timesheet has been supported for approval.
- klageveen 8y agoWe'd set up a derived collection of "timesheets that need approval" and export that to an emailer system. Every time a new entry shows up in that collection the emailer will send out an email to the respective manager (whose email address would probably also be part of the data exposed to the emailer system). So, in essence, you hook up a separate system to a part of the data (we have a system ready made for this particular use case), and the datastore will push all changes in that data to this system.
- avighnay 8y agoBack in the peak years of ERP (90s), as a fresh graduate i started my career in a company called BaaN. It was one of the big two SAP (Germany) & BaaN (Netherlands). To give a sense of its capability, it is the product that Boeing chose as its ERP, Boeing being the most complex challenge for any ERP! BaaN were pioneers in this kind of 4GL thinking and made some revolutionary stuff! The product since then is sadly now a living a zombie life with its existing customer base. The link below gives a sense of what they provided. http://www.baanboard.com/node/46 http://www.baanboard.com/node/46
- rajasekharjs 8y agoGreat idea. We were looking for something close to Alan for converting an internal app
- rajasekharjs 8y agoGreat stuff!!
- klageveen 8y agoGlad you like it :)
- bitmadness 8y agoIt looks cool, but I have no idea how to use it. You guys need to give a proper tutorial page, where you show how to from 0 to working app.