Many years ago when i wrote my first programs on a Atari 800XL you only had to turn on your computer wait some seconds and after that you could start to draw lines our print some strings on the screen. Today computers are much faster und programming is much more complex. Before you can draw lines, diagrams or tables you have to build a GUI and you have to do a lot of other things that have nothing to do with your problem that you want to be solved.
Sometimes I only want to check if an algorithm works as expected or I would like to see the result of the computation of an intersection of lines or circles by drawing a vector grafic. I would like to start to program my algorithms without wasting time to build a GUI. Thats the reason why I started to develop this tiny Lua IDE.
today, you start a computer (possibly running chromeos or android), open a browser and start writing multimedia documents, share with people, search others' work, integrate with yours, remix... etc.
A great idea - it looks similar to the excellent NodeBox for Python (http://nodebox.net). I'm very much in favor tools that make experimentation faster and easier, for all the reasons that Bret Victor explains so well in Inventing on Principle (http://vimeo.com/36579366).
Wow. Didn't know about nodebox. I wrote a similar tool named info-beamer (http://info-beamer.org). Its focus is livecoding for interactive OpenGL visualizations. Think about digital signage controlled by Lua. It was inspired by Inventing on Principle: I'm using inotify to reload the Lua code each time you save. Documentation is at http://info-beamer.org/doc/
"Linux Mint" version? It should be "Debian" version. Mint is based off Ubuntu which is based off Debian. ".deb" are for Debian-based distros, not for Linux Mint.
If they depend on something specific to Mint, or on Mint-specific versions of packages, then these are Mint packages. I'm not sure if they do, but it's a possibility.
Practically it may depend on where they were produced / tested. If Mint is all the developers use, then it would be tricky for them to decide if the packages are compatible with previous distros (Ubuntu, Debian)
There is no such thing as 'mint-specific' packages.
It's just the Ubuntu repository, with a different default installation and some 'out-of-repository' settings, script and GUI applications.
Mint is not a build target in any way shape or form. Ubuntu however, deviates enough from Debian (patched kernel, patched/out-of-sync glibc, as well as patched core libraries) that one would have to explicitely test on Debian proper.
To call these packages Mint specific is like calling the windows executable HP-Windows-Executable, because you had HP crapware preinstalled.
Ubuntu patches the kernel, and glibc. They are not binary compatible. Ubuntu's stuff is synced from debian unstable, which is a moving target.
So, for a dynamically linked application, you need to build specifically for Ubuntu. With a statically linked app, that is distrobuted with its libraries .. you can make a generic linux application that should work just about everywhere.
Mint is a completely different story. They don't patch the kernel, or stuff like that. They just preinstall different packages from the Ubuntu repo, and have a different default user-skeleton. (different default settings in userspace). They also add some extra GUI tools and scripts.
But they are Ubuntu, just like HP Windows is just Windows and run Windows applications.
One thing I was wondering is if there was anyway to read the table cells? And read them interactively? (perhaps have the option of "on changed" event callbacks) It would be really nice if the table can be used to control the graphics output.
A suggestion - an option to swap the tabs (source code, table, diagram, etc) between tabs and dock windows would be really really awesome, that way I could, for example, view the source code and the graph side-by-side.
I haven't got the time to check out the source code right now, but maybe over the weekend or early next week I will, so I may try and add these features myself, so don't worry about it if you don't want to add them just now.
In any case, good job! I've been meaning to brush up on my Lua skills for a while now and this seems like a great tool to use to play around with the language.
Not to diminish this work, since Lua is cool and all, but: Before you can draw lines, diagrams or tables you have to build a GUI and you have to do a lot of other things that have nothing to do with your problem that you want to be solved. .. isn't quite true.
If you have a browser and an internet connection, you can go jsFiddle.net and load Processing.js, Raphael.js, Fabric.js or others and begin drawing graphics (often interactive) right in your browser in canvas or SVG.
I think you might be missing the point that he's trying to make, which is that having the Lua VM is one thing, and great and everything, but you do still need some interface to the raw devices - input/output - to make use of it in any sense.
You can't build a user-application with the basic Lua VM in any fashion other than as a command line tool. If you want more sophisticated GUI, you do have to wrap it somehow to get this working in the context of the Lua VM.
(Disclaimer: I'm currently developing professionally using the MOAI toolkit..)
There are plenty of solutions to the problem of not having a GUI/user-interaction built-in, of course - you can emit .png files, or you could get raw framebuffer support somehow, or you could even interface to the native GUI .. but all of this has to be done extra, its not something that works, out of the box, with the basic Lua VM ..
Wow, yet another proof of the "live coding" concept, this gives me yet more confidence feeling about my live html/css/js code editor (http://liveditor.com) ;)
This looks really nice, I'm a big fan of lua as it's really quick to develop in and still minimal. It also seems to be relatively simple to integrate into other programs.
I've been playing around a little with a lua based game framework called LÖVE and that was a really pleasant experience. Perhaps you could integrate love into Lua-quick-try. That would be a fantastic way to introduce people to programming since you can get pretty results quickly. Most tutorials I've seen starts with printing texts and calculating Fibonacci numbers which is good to know but I'm sure that starting with writing a pong clone would be more rewarding.
I tried to use the Mint .debs on my system (Ubuntu 12.04-amd64) but there was a dependency to libc6-amd64, which I didn't feel like fixing, so I downloaded the sources, opened the project in QT Maker, built the project and ran it. Works fantastically, and its nice to have a look at the sources too ..
22 comments
[ 3.0 ms ] story [ 64.2 ms ] threadA Lua IDE to quickly try out algorithms
Many years ago when i wrote my first programs on a Atari 800XL you only had to turn on your computer wait some seconds and after that you could start to draw lines our print some strings on the screen. Today computers are much faster und programming is much more complex. Before you can draw lines, diagrams or tables you have to build a GUI and you have to do a lot of other things that have nothing to do with your problem that you want to be solved.
Sometimes I only want to check if an algorithm works as expected or I would like to see the result of the computation of an intersection of lines or circles by drawing a vector grafic. I would like to start to program my algorithms without wasting time to build a GUI. Thats the reason why I started to develop this tiny Lua IDE.
Tools which don't attempt to do too much are sometimes just what you need.
http://github.com/antirez/load81
Lua sure is a lovely language for this sort of thing!
Practically it may depend on where they were produced / tested. If Mint is all the developers use, then it would be tricky for them to decide if the packages are compatible with previous distros (Ubuntu, Debian)
It's just the Ubuntu repository, with a different default installation and some 'out-of-repository' settings, script and GUI applications.
Mint is not a build target in any way shape or form. Ubuntu however, deviates enough from Debian (patched kernel, patched/out-of-sync glibc, as well as patched core libraries) that one would have to explicitely test on Debian proper.
To call these packages Mint specific is like calling the windows executable HP-Windows-Executable, because you had HP crapware preinstalled.
So, for a dynamically linked application, you need to build specifically for Ubuntu. With a statically linked app, that is distrobuted with its libraries .. you can make a generic linux application that should work just about everywhere.
Mint is a completely different story. They don't patch the kernel, or stuff like that. They just preinstall different packages from the Ubuntu repo, and have a different default user-skeleton. (different default settings in userspace). They also add some extra GUI tools and scripts.
But they are Ubuntu, just like HP Windows is just Windows and run Windows applications.
One thing I was wondering is if there was anyway to read the table cells? And read them interactively? (perhaps have the option of "on changed" event callbacks) It would be really nice if the table can be used to control the graphics output.
A suggestion - an option to swap the tabs (source code, table, diagram, etc) between tabs and dock windows would be really really awesome, that way I could, for example, view the source code and the graph side-by-side.
I haven't got the time to check out the source code right now, but maybe over the weekend or early next week I will, so I may try and add these features myself, so don't worry about it if you don't want to add them just now.
In any case, good job! I've been meaning to brush up on my Lua skills for a while now and this seems like a great tool to use to play around with the language.
Even forgetting things like Processing, various projects exist for other languages for visualization IDEs or to add graphics support to their REPLs. A few: http://ipython.org/ http://kidsruby.com/ http://hackety.com/ http://nodebox.net/ http://docs.python.org/library/turtle.html or even my own https://github.com/peterc/trtl
You can't build a user-application with the basic Lua VM in any fashion other than as a command line tool. If you want more sophisticated GUI, you do have to wrap it somehow to get this working in the context of the Lua VM.
(Disclaimer: I'm currently developing professionally using the MOAI toolkit..)
There are plenty of solutions to the problem of not having a GUI/user-interaction built-in, of course - you can emit .png files, or you could get raw framebuffer support somehow, or you could even interface to the native GUI .. but all of this has to be done extra, its not something that works, out of the box, with the basic Lua VM ..
I've been playing around a little with a lua based game framework called LÖVE and that was a really pleasant experience. Perhaps you could integrate love into Lua-quick-try. That would be a fantastic way to introduce people to programming since you can get pretty results quickly. Most tutorials I've seen starts with printing texts and calculating Fibonacci numbers which is good to know but I'm sure that starting with writing a pong clone would be more rewarding.