It is an Enchanted Device Generator for Ars Magica (4th Edition). Itâs built using PHP and Sajax which is a free AJAX toolkit.
Itâs been quite an enlightening experiment. The buzz and hype generated around AJAX is quite something, so I thought Iâd give it a shot. I started with an idea, a simple script that takes in a few values and does some calculations and presents the result to the user. But, I wanted the user to be able to tweak the values and see the results immediately. That sounds like something AJAX is perfect for.
So the first thing I learnt as I started building the script and using Sajax was JavaScript. I used to avoid JavaScript like the plague. I know you can do some funky stuff but in my past experience, JavaScript slows down the user experience and can be very flaky across browsers. Still, what I learned was that I could have easily built my script using just JavaScript.
Yet AJAX would allow me to offload work from the browser to the server. Great, I thought, now I can do the calculations using PHP and just do all the text stuff using JavaScript. The snag I came across was that Sajax treated PHP as an intermediary interface. For example global variables defined in PHP were not accessible when a PHP function was called from JavaScript. Not alone that, only strings could be passed back from PHP. Rich types like arrays are not currently possible. I solved this by doing the calculations once, putting all the values in a string and then passing that string around when calling other PHP functions through Sajax.
It works now and Iâm happy enough. One thing I noticed while I was working away, is that I started thinking about the script more as a User Interface than a webpage. I guess thatâs what the hype is really about. All this Web 2.0 silliness. On the other hand, I found it hard to separate the HTML and CSS code and design from the JavaScript and PHP coding. If you look at the script, itâs very bare. I guess if you treat it like a UI, youâd do your “prototype” first and then add code.
Though Iâve come to love PHP, I have my reservations. While itâs a powerful feature to mix html and code, it always bugged me that you can write code that essentially modifies and generates code (in this case HTML, CSS and JavaScript). I guess Iâm old fart but that use to be a no-no in the land of C and ASM (a land I know better than I want). It makes the code unreadable and un-maintainable. And I think often PHP is a little unreadable unless you have a syntax-aware editor or layout your code very well. Iâm one of those ‘hardened programmersâ that prefer basic text editors over IDEs (though Iâve been softened lately by JEdit). Still the idea of using AJAX to create entire UI-like interfaces is a little scary. You really need to think about design of your code to make it maintainable. Still, I like the potential of AJAX and the possible applications on webpage. On the other hand for small ideas, I could just use some JavaScript.