|
Working on Zebra [1018.1999] I'm having an incredible time writing Zebra, my template driven reporting engine. It's a much bigger challenge than anything I've done in ages, and I'm thinking of tons of uses for it. Part of the fun is that I had absolutely no idea how to build it - parsing XML, creating a flexible template system, putting multiple headers and footers for different grouping levels on tabular data, even just writing a big program in Python is new to me. I get to do a lot of thinking. In fact, most of my "programming" is being done on paper. I've found an interesting method for creating computer languages. First, write some hypothetical programs in that language. Then print them out, and start writing notes about what each little piece should do. It helps if you're writing a simple, XML-based language, I think, because you don't have to worry about parsing (thanks to the myriad of pre-built XML parsers already out there). My development environment: just my room. I've got a clipboard full of blank computer paper, a bunch of pens, and a small pile of papers covered in multi-colored notes, mindmaps, and diagrams. Musical background: the Cure, Sixpence None the Richer, Andrew Lloyd Webber (you didn't know I was a theater freak, did you?)... Piles of documentation: Learning Python, Advanced Perl Programming (which has a chapter about template driven code generation).. The Perl Journal issue with the article on XML. On screen: Emacs, python docs for xmllib, Evilsoft Word (for easy printout and highlighting of code), MusicMatch Jukebox. I discovered that Zebra could theoretically be used to run a script where different portions ("stripes") are written in different languages, for RAD and prototyping and stuff.. e.g., you could have a python program and want a feature similar to something you have in in Perl or Tcl or scheme (well, any language that supports an "eval" function and something like XML-RPC)... It might be slow, but it would be great for prototyping stuff. In any case, my new term is a "striped language".. examples would be ASP, PHP3, cold fusion.. because there's stripes of HTML mixed in with the core language. The SCRIPT tag in HTML is also a stripe. In light of that knowledge, Zebra doesn't really fit in well as a Zike product. It belongs on . It will still be the engine behind much of ZikeBase, a browser-based RAD tool and database manager (think: Evilsoft Access) for websites.. But Zebra itself will be a separate entity. Anyway.. back to work. |