High level overview
Contents
The science of web application development has changed a lot from the pre-AJAX days.
Web development used to heavy on the idea of HTML templates that you would flesh out with template centric programming languages like PHP to put your data in. Most of the work was in the back end on the server.
Now a good web application is more like a client server program where:
- Most of work is on the client which is written in Javascript and uses the browser as a rendering engine. You never should need to do full page refreshes.
- The server is a source of data typically delivered via light weight efficient web service calls serving up JSON.
- The application code is delivered to the browser from the server as a set of static files, CSS (Cascading Style Sheet files) and Javascript.
I usually go for a structure of only serving up a single HTML page which then loads a single Javascript file and CSS file. This is how the Translator itself is built.
Modern web applications don’t need to have complete page refreshes, it gives a better user experience if you can avoid these and instead update your application dynamically using Javascript. It’s quite easy with modern browsers to alter the ‘anchor’ stuff on the location so AJAX applications can maintain expected behaviour with the back button. This approach makes for fast responsive web applications which are efficient on their use of network bandwidth.
From a development standpoint you might break up your Javascript and CSS into multiple files but for the final production version it more efficient to ‘compile’ them into a single compressed Javascript and CSS file. Google’s closure tool is very good for Javascript compression.
Why use the Translator for a Web Backend?
In my experience with modern web development is that currently about 15-20% of the effort is on the server side. The majority of the effort comes from working with the browser APIs in Javascript to make the GUI do what you need it to. For this reason it does make sense often to consider using the Translator for doing the back end if the application is strongly coupled to Iguana anyway. The Translator is perfect for the backend of a modern web application since it handles taking data in and out via HTTP very easy. If you compare say the effort of doing the same functionality in C# then the advantages the Translator has is:
- Data driven test development with a much more comprehensive data driven auto-completion and code navigation than what a traditional IDE like Visual Studio can offer.
- No slow compile, link, execute and debug cycles like you face with C#. Lua is a dynamic language that has an ultra fast Just In Time compiler that has no noticeable delays giving an extremely fast turnaround cycle for iterative development.
- All of your milestones and source control and IDE are perfectly integrated to work together out of the box. You effectively have a versioning and deployment system out of the box which replaces tedious home grown control systems required to control what goes into production.
- Lua is a really simple safe language, you can learn it in a few days and then much more of your mental efforts can go on the application.
- The Translator comes with infra-structure you would otherwise have to build yourself like a logging and error notification system when the application has issues. For a one off application no developer could justify the effort required to make the logging system that comes with Iguana. It makes supporting the application written with the Translator in production very easy, it’s simple to see when exceptions occurred and reproduce them in the Translator environment.
- A dynamic language in the auto-completion data aware environment of the Translator is just so much more convenient for dealing with JSON and XML data than a static language like C#, C++ or Java.
It’s something we recognize internally, we’ve started to write all our internal applications using Iguana and the Translator, it’s so much faster and more convenient for these applications than the way we used to do things. Try it, you’ll enjoy it.