jfrisby is currently certified at Journeyer level.

Name: Jon Frisby
Member since: 2000-07-18 20:34:39
Last Login: N/A

FOAF RDF Share This

Homepage: http://www.mrjoy.com


Recent blog entries by jfrisby

Syndication: RSS 2.0

I haven't posted much about it recently but the status of EasyORM is thus: EasyORM 0.5.0-alpha9 has proven in our reasonably stressful production environment to be quite robust. The Java version is very very slowly progressing, having been scrapped and restarted.

Basically, I'm building a set of components that will make implementation of a tool such as EasyORM a lot easier:

  • Templates - A generalized nested (heirarchical) template system intended for use by code-generators. This is 100% done and I really should establish a Freshmeat project for it.
  • BeanBuilder - Using Templates, this tool takes a description of a JavaBean and produces source for that bean. Allows terse description of robust beans, including type-safe collections as attributes and so forth. This is about 98% done -- using it to build SQL (see below) has proven quite instructive and so I'm making it a bit more flexible before releasing it.
  • SQL - A toolkit for modeling the structure of relational schema, including a MySQL DDL parser. The parser is written using ANTLR and is about 98% completed and quite robust in its support of MySQL's DDL (as it's IMPLEMENTED, not how it's DESCRIBED in the docs -- the docs have a number of mistakes). The model is written using BeanBuilder and is about 85% complete.
There will doubtless be several more such packages/tools built before or during the construction of EasyORM. One such toolkit is likely to be an analogue of the SQL package but for object models, rather than relational schema.

Ultimately I want each of these tools to do as little as possible because I know that each piece will probably undergo MASSIVE revision as I learn more about it. It may not seem like it on the surface but O/R mapping contains a LOT of non-trivial problems to deal with: Besides the obvious (mapping objects to relational schema), things like robust generation of efficient and reliable code aren't as trivial as they might at first seem. There's also issues of usability with respect to the mapping definition language, GUIs, etc.

Setting aside EasyORM for a moment, I made a simple but handy little tool called DataDiff which will compare the contents of identically-named tables in two databases on a MySQL server and return rows that differ between the two. Sort of like a NATURAL FULL OUTER JOIN, except that MySQL doesn't do FULL joins, and NATURAL joins don't give the desired results if columns contain NULLs. In addition, the tool will optionally ignore the values in DATE/TIME/DATETIME/TIMESTAMP columns. Basically, this tool was built as part of an initiative to have a push-button release process that included extensive regression testing. It isn't enough to ensure that the front-end produced the "right" answer, one must also ensure that it did the right thing in the back-end as well. DataDiff allows us to do this.

DataDiff is one of a handful of small tools developed internally for our Java-based development efforts, and as time permits I'll release the others. All of these tools are focused on quality-management by automating testing and to a smaller-extent enforcement of "best practices" where applicable.

Bleh. Well, I finally have the Perl version of EasyORM polished and stable. The documentation matches the code, there are no significant bugs in either EasyORM or the generated PHP code, and it Just Works. Whew. EasyORM 0.5.0-alpha8 for the curious.

The Java version of EasyORM however is being delayed somewhat:

  • There were some ugly bugs in EasyORM itself -- nothing that couldn't be worked around, but I'm not comfortable releasing it with them.
  • The generated Java code is being totally changed. It will be a feature-for-feature match with the generated PHP code, (caching, debug levels, etc) and business logic integration should be as seamless as with the PHP version.
  • The PHP generator is still not-yet-ready. When I get done with it, the generated code should be byte-for-byte identical to EasyORM 0.5.0-alpha8. Hopefully this will smooth migration.

I should also note that we're using EasyORM generated code on a daily basis for all O/R mapping in our production system. We handle around 100,000 database-driven page views per day with a few special cases that tend to stretch EasyORM in uncommon ways so I can say with some degree of confidence that the generated code from 0.5.0 is quite stable and usable. The generated code for 0.4.1 however has some serious holes and shouldn't be trusted without *very* detailed testing.

Well, a couple weeks ago I finished the Java-based, Java- targeted rewrite of EasyORM. First Java project in a while and I must say I like the tools available to Java Developers (JUnit and Ant in this case).

The only task remaining for EasyORM 0.5.0 is to build a PHP- targeted code generator.

Since 0.5.0 was built with the pressing need of moving to Java, that's what I focused on. But by the time I had even begun the Java rewrite, I had a great new model for the generated PHP code finished and more or less tested.

O/R mapping in general isn't a trivial task. In particular, caching semantics and object (entity) life cycle management turn out to have a fair number of subtle details that aren't neccesarily easy to address. That said, I think EasyORM 0.5.0 (both PHP-targeted and Java- targeted) rectifies most of said issues...

I'll launch 0.5.0 as soon as I have half a day to build the code-generator for PHP.

Well, it's been a while... Having been laid off from Everyone.net, and then promptly laid off from digiGroups when they got bought out 3 months after I started with them, I'm now working at YourFreeDVDs.com. I've published my first Open Source project -- EasyORM an Object/Relational mapper for PHP. It's at my web site. Yeah, the code is really rough, its buggy, it doesn't produce wonderful code and has 0 documentation but I only had 2 days to put it together... :)

5 older entries...


jfrisby certified others as follows:

  • jfrisby certified jfrisby as Apprentice
  • jfrisby certified neonzebra as Apprentice
  • jfrisby certified Iain as Master

Others have certified jfrisby as follows:

  • jfrisby certified jfrisby as Apprentice
  • neonzebra certified jfrisby as Apprentice
  • jmelesky certified jfrisby as Journeyer
  • miniver certified jfrisby as Apprentice
  • nixnut certified jfrisby as Apprentice
  • TheCorruptor certified jfrisby as Journeyer
  • ErikLevy certified jfrisby as Apprentice
  • Iain certified jfrisby as Apprentice

[ Certification disabled because you're not logged in. ]

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!

Share this page