5 ms·
Lunascript, another language for writing great web apps
- breck 17y ago> There's no need to write separate code to help the server figure out which values need to be sent to the client: the server can do this by simulating the UI. Interesting approach. The screencast is very good. Wonder if that 1500 line todo list app is part of Asana?
- TwoSheds 17y agoIsn't this a bit similar than what GWT does? GWT requires Java which is clunkier than a modern dynamic language, but still...
- m0th87 17y agoI respect the ambition, but doesn't it seem like a waste of time and money for a brand new startup to focus on the creation of a brand new language (+compiler +debugging facilities +documentation for new employees +libraries +...) before making the core product? I understand the argument that better languages = increased productivity. But designing a new language is a serious investment, and unless what they've made is so revolutionary that it completely changes the web development paradigm, it doesn't seem as if it would pay off.
- smcq 17y agoProgramming languages aren't that hard, so I'd say, if it makes them way more productive later, then no it's not a waste of time.
- davidw 17y agoIf they aren't that hard, how come so many never seem to be... well, 'finished'? I think they tend to be a fairly large time sink, especially because it's great fun to work on one. It's exactly the kind of thing that could be very distracting for a startup.
- raganwald 17y agoYou're making two points, either or both of which may be good, but they are two different points. First, are they hard or easy? Second, are they distracting because they're fun/engaging? Either "problem" may lead to them being a huge time sink for startups and either may lead to them being perennially unfinished. The good news is that a language for in-house use need not be finished to be useful. For example, FB's PHP compiler can't compile "eval." No problem, don't use eval in-house. If they were trying to "finish" it in the sense of writing a compiler for every possible PHP app, they would have to address that somehow. But instead, they punt on it and carry on using it in house.
- davidw 17y agoI would say reasonably easy to start with, but needing a lot of ongoing effort for improvements, bug fixes, and so on, which is exactly why I think it's a dangerous combination for a small company. I think they're likely to be an ongoing distraction for the above reason, and also because of the fun/intellectual challenge reason. > punt on it and carry on using it in house. Over time, that kind of thing can (if you're not careful) lead to dangerous cruft, where the in-house divergences pile up to the point where it's no longer so easy to go back and forth between the public/open version. And thus is born a new species with a far smaller ecosystem than the original.
- plinkplonk 17y ago"I think it's ... dangerous .. for a small company." of non compiler/language processing experts. If you've built compilers before and know what you are doing (I have no idea if these guys are such experts or not) , it may be a reasoned decision taken after weighing benefits and costs. Leon Bottou and Yann LeCun seems to have built the Lush dialect of lisp to build commercial systems. (http://lush.sourceforge.net/credits.html http://lush.sourceforge.net/credits.html) For example, I can easily imagine PG building a variant of lisp and building a product/company around that . Of course if you only have a vague idea of how to build a compiler/interpreter/whatever, then building a company around your first such project may be ... interesting.
- glymor 17y agoIf it increases the chance of a technology or people acquisition it would be creating value.
- deleted 17y ago[deleted]
- tptacek 17y agoIt decreases the chance of an acquisition, unless things have changed since the last time I was involved in acquisition talks. A sticking point in at least 3 acquisition attempts I was involved in (one consummated) was the use of idiosyncratic tech; in one case, it was using Tcl; in another, OpenBSD.
- psranga 17y agoGreat information, thanks! I take it the companies using Tcl and OpenBSD failed to get acquired. I didn't realize the technology used would deter an acquirer. This probably explains why most startups go with "safe choices".
- tptacek 17y agoI'm not going to say that (eg) OpenBSD kept a company from getting acquired; terms and timing were more important. But it was continuously raised as an issue, seriously enough that the engineering team was asked to port. Bizdev is an awful reason to choose technology, or for that matter to make any other decision about your product. I'm just refuting the statement that writing your own programming language will help you get bought.
- jessep 17y agoSeems to me like being able to implement things 10x more quickly than your competitors is a sustainable competitive advantage. If you're trying to appeal to employees/investors, being an order of magnitude faster is a good pitch. Think about it this way: When you evaluate a startup, what do you look at first, the idea or the team? Obviously, the team. Why? Because (a) you want to know if they're capable of implementing the idea and (b) because you know that ideas almost always change, so the team's ability to rapidly implement and iterate is its real strength. I agree that this struck me as somewhat absurd when I heard Asana was developing a new language, but if it actually works as advertised then it's really smart.
- davidw 17y ago> being able to implement things 10x more quickly than your competitors is a sustainable competitive advantage. The only way you are going to get 10x, with roughly equivalent people is if someone is using a wholly inappropriate language (Ruby vs Forth for web apps, say), or if you can avoid writing libraries because someone has already written them. This is one of the positive network externalities involved in programming language economics: the more people involved, the more likely it is someone has already written the code you need. Of course, these effects are not so strong that everyone gravitates to only a few languages, but they are certainly a consideration. By writing your own language, unless it makes it very easy to take advantage of some other language (the JVM languages are a good example), you are pretty much guaranteeing that you will have to do this work yourself.
- deleted 17y ago[deleted]
- smcq 17y agoYou're effectively arguing that all languages/frameworks are equal within an order of magnitude. I think this has been demonstrated false time and time again, and you even demonstrate it again in your own post (saying Forth is unacceptable for web development). Why so negative?
- 17y ago
- extension 17y agoWith a team of rock stars and $9M+ to burn, they can take the time to scratch a really big itch.
- olalonde 17y ago37signals ?
- davidw 17y agoIn the Rails source tree: find . -name "*.rb" | xargs wc -l | tail -1 161472 total In the Ruby source tree: find . -name "*.rb" | xargs wc -l | tail -1 639682 total find . -name "*.c" | xargs wc -l | tail -1 590656 total
- rudin 17y agoMaybe there is another side to things. I know that creating a new programming language isn't the easiest way to earn money but if you are successful there are lots of interesting ways to make money. Even an open source language provides possibilities for books, conferences, advocate positions, merchandize etc.
- narcvs 17y agoI had a chance to chat with them - I honestly think lunascript and its platform is the core product. The productivity app they're building is a first show case (and in-house infrastructure)
- narcvs 17y agoI had a chance to chat with them - I honestly think lunascript and its platform is the core product. The productivity app they're building is a first show case (and in-house infrastructure)
- smcq 17y agoThis language looks pretty awesome, reading the example code I can see how it would slash my loc for ajaxy stuff by at least an order of magnitude. However, I am confused about this announcement since I cannot discover what your company does from the web page and except the video there's not much to go on about the language. Perhaps you want to fill in some blanks in the comment section?
- ambition 17y agoI'm interested in exactly the sort of application framework they seem to be talking about. This is really how web apps (or all apps) should be built. The Wikipedia link isn't terribly informative, but there's a ton of more relevant literature tied in with functional reactive programming. (That's the FRP in their to-do list). In particular, there's a research project called Flapjax that you can play with right now that drives home how nice it could be to program in this paradigm. I have two worries about Luna, though. It doesn't look like they're using a nice type system, which will be a pain for larger apps. And I can't say I like that "Finish patent documentation for incremental computing framework" to-do item.
- alabut 17y agoI interviewed with Asana back in October and I got to see an in-person demo of the app Justin shows at the 1:45 mark, a "structured list editor" that he says they use internally to track bugs and projects. It's not just a hello world app they built to test the language, it's a real app they use daily and fast fast fast. After poking around on it with only keyboard shortcuts while discussing UI ideas for a few minutes, I completely forget that it was a web app. It didn't have any of gmail's or google reader's lag, for example, which are the only apps with keyboard shortcuts I use regularly.
- olalonde 17y agoIt seems like writing a whole new language is a bit overkill... why not simply stick to the framework layer?
- ambition 17y agoYou really want to write code only once, and compile it to two targets: One for the server, one for the client. This is really hard to do in all current mainstream languages. To illustrate: You have some piece of state y, and you have x = f(y) that means "x is always the value of f(y), when y changes, update x." Furthermore x is shared state across many users. On the server side you want that statement to generate code for synchronizing values of x and y across users. On the client side you want to generate code for pushing and pulling Ajax/Comet updates from the others.
- b-man 17y agoIsn't this somewhat equivalent to flapjax[1]? [1] http://www.flapjax-lang.org/ http://www.flapjax-lang.org/
- lincolnq 17y agoI don't think so. I don't see any functional reactive stuff in Luna, whereas that's the whole point of Flapjax... Edit: reading more closely, I see why you say that -- "incremental computing" link makes me think of FRP a little bit. But these people's goal with Lunascript seems to be automatic communication between the client and server. The "incremental" part is sending only what's needed to the client to execute the client-side code, which is a really cool idea, but not very much like FRP, I think.
- mdg 17y agoAndrew Warner should interview these guys immediately.