My first chunk of heavy code on MSDN (yes, that MSDN!!) is a whole lotta PHP to SQLServer. Microsoft, and the world, is a funny old place.
Notes from De-commissioning old Content Management System: The MungenetEngine. The engine has rendered 10 million image views and 2.5 million page views from handcoded MySQL and PHP.
- “coding” in PHP feels wrong, wrong, wrong. A little dirty. After 6 months, I feel I should be writing in C#, IronPython; at least something decent. Not PHP. It’s too lose. Like Visual Basic. Sadly, this will probably the last time I use PHP for a significant amount of time as I move to CLR/DLR style languages and platforms.
- The code to complete the transition was a mere 138 lines of PHP; referencing some opensource XML-RPC libraries (to insert blog entries over the wire), and 2110 lines in the base library that acts as the old engine.
- Turning off http://twitter.com/nickhodge for a few days helped productivity. Also working at home during the shenanigans of APEC 2007 helped productivity, too. I also stopped being as responsive on email, voicemail etc to get some good “focus” time to get this happening.
- The code I am putting out to pasture was largely written in 2001-2. Small pieces were tweaked through 2002-7. It has survived PHP 4.0.x to 5.2.x pretty unscathed. http://nickhodge.com/mn8/section/23/ details the history and philosophy of the self-written and maintained CMS.
- WordPress is not the final step. It is just a good time to move a platform I transition to other places in the future, somewhere in the cloud.
- As Joel Pobar says, “having no policy on cache is a memory leak”. In my instance, the smartness of a cache for production use to reduce hits on MySQL resulted in a bug that took 45 minutes to track down. Not as a memory leak, just unexpected behavior.
- Strategy: get images from the database into a fixed file system under http://media.nickhodge.com/. As per the wise guidance of UncleMike, this futureproofs my data. A part of the strategy is to move the rss feeds to a local feed system as I am not trusting feedburner and feedjumbler for stats right now.
- Rendered pages: best thing to do is “wrap” what is content with markers, render the page via CURL, and persist what is wrapped into the WordPress CMS. The how came to me in an afternoon nana nap. Conscious brain was on hold, and the real smarts came to the fore.
- Regular Expressions. Why-oh-why where they invented to make my brain explode? Thankfully, the intarwebs helps.
- A shim of the MungenetEngine will remain in place to “301” old URLs to new URLs. Full page rendering and image/binary rendering will be turned off. Therefore, the import mode will not be WordPress RSS style import. Using http://www.dentedreality.com.au/bloggerapi/ to post via XML-RPC
- Mangling dates, and doing hand-crafted fixes to my WordPress XML-RPC (note: this is patched for 2.3, evidently) took some hours.
- There are 761 blog entries prior to transition. From an earlier blog transition on August 8th 2006, the count was 371. There have been 390 entries since. Post transition, there are now 940 posts.
- Raw transfer complete at 6:50pm 5th September 2007.
- To complete: neater classification of the new entries.
Having lots of fun with XSL-FO. I don’t know why I didn’t go and learn this stuff sooner. In my experiments, I am using styles and flows as defined by Adobe FrameMaker overriding the XSL-FO commands. Next stop: XSLT.
All this is in aid of some Adobe Document Server demonstrations I am doing over the next couple of weeks. Also learning how to use JScript as an ASP language. I would have preferred to be coding in PHP; but the COM to PHP stuff is a little beyond my ken at the moment. Keep things as simple as possible. Oh yes, the music of the 1980s assists greatly.
At 8.30am today, mungenetengine had served 10000 unique page views to 1829 unique viewers.
Earlier today I had an idea of a web service that I could implement here. To the right is from this web service on mungenet – the Random Neil Finn Lyric Server. This is implemented as a
SOAP service installed on my host, backended by a MySQL database. Including the interface to the database and the
SOAP service, it took about 4 hours to complete.
Lynn Grillo on Creating HTML emails with GoLive
I’ve just tried to load mungenet in Netscape 4.7 and realised its very broken. I’ll have to look into how to fix this on the server side. The good news is that things are still cool with the newly released preview of Netscape 7. It looks like we’re back into web browser version number wars.
note to self:
WSDL is easy, as long as you name things intelligently and match the code and parameter’s naming conventions
For those interested in InDesign. The ‘engineer’ mentioned is, err, me.
How the mungenetengine works is a quickie description of what is going on behind the scenes.
There’s another rewrite in my head. In my features database, there are 21 to-dos. So many ideas, so little time. The more I think about mungenetengine, I realise that there is a better way. At the moment, the render engine is tied up in one object- not the best way to create a OO application.
When you ‘write’ your own application, and run it live, its easy to see how difficult it is to create large applications like Photoshop or InDesign. Let alone an operating system…
Dï¿½Oh. NZ Weather SVG & PHP Demo demo now works. I over did the security bit, but thatï¿½s all fixed now.
Holiday nearly over, still more programming left undone. For those interested in creating dynamic web sites, let me give a little plug to PHP After coding most of the week, Iï¿½ve found this programming language extremely productive. About the only thing that I miss is a development environment with a debugger (but I do know that they are out there for PHP)
The last languages/environments I felt this positive about were: Java in WebObjects and an obscure language called VICOMscript which was a part of a terminal emulation/front end development package called VICOM Pro
For those who are not interested in programming, I will be returning to write some more guides on Photoshop, Illustrator and Acrobat in coming weeks.
Completed some very small example projects using XML-RPC. Clients in Visual Basic, PHP and AppleScript – and a server in PHP
As a part of the next roadshow these examples will be shown to all and sundry — I will also post the code here for perusal. MySQL is a part of this project as well. I have it installed under MacOS X 10.1 and Windows 2000.
PHP, whilst an excellent scripting language for server-side HTML scripts, I can understand why it is easy to mix up your presentation (HTML) with code (PHP) and loose track of your project. Even with objects and external include files, it lacks the MVC (Model-View-Controller) paradigm that is required for good OO and maintainability. Maybe its time to brush up on the Java skills?
A very good article comparing PHP, Perl and Java for Web server-side scripting.
Next on the agenda: using PHP, SVG (for a navigation element) and other stuff I need to update myself on.