<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>Advogato blog for jfrisby</title>
    <link>http://www.advogato.org/person/jfrisby/</link>
    <description>Advogato blog for jfrisby</description>
    <language>en-us</language>
    <generator>mod_virgule</generator>
    <pubDate>Mon, 8 Sep 2008 09:22:46 GMT</pubDate>
    <item>
      <pubDate>Fri, 13 Dec 2002 19:42:22 GMT</pubDate>
      <title>13 Dec 2002</title>
      <link>http://www.advogato.org/person/jfrisby/diary.html?start=9</link>
      <guid>http://www.advogato.org/person/jfrisby/diary.html?start=9</guid>
      <description>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.&lt;br&gt;
&lt;br&gt;
Basically, I'm building a set of components that will make implementation of a tool such as EasyORM a lot easier:
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Templates&lt;/b&gt; - 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.
&lt;li&gt;&lt;b&gt;BeanBuilder&lt;/b&gt; - 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.
&lt;li&gt;&lt;b&gt;SQL&lt;/b&gt; - A toolkit for modeling the structure of relational schema, including a MySQL DDL parser.  The parser is written using &lt;a href="http://www.antlr.org" &gt;ANTLR&lt;/a&gt; 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.
&lt;/ul&gt;
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.&lt;br&gt;
&lt;br&gt;
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.&lt;br&gt;
&lt;br&gt;
Setting aside EasyORM for a moment, I made a simple but handy little tool called &lt;a href="http://www.mrjoy.com/datadiff.shtml" &gt;DataDiff&lt;/a&gt; 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.&lt;br&gt;
&lt;br&gt;
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.</description>
    </item>
    <item>
      <pubDate>Tue, 9 Jul 2002 00:48:46 GMT</pubDate>
      <title>9 Jul 2002</title>
      <link>http://www.advogato.org/person/jfrisby/diary.html?start=8</link>
      <guid>http://www.advogato.org/person/jfrisby/diary.html?start=8</guid>
      <description>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.&lt;br&gt;
&lt;br&gt;
The Java version of EasyORM however is being delayed somewhat:
&lt;ul&gt;
&lt;li&gt;There were some ugly bugs in EasyORM itself -- nothing that couldn't be worked around, but I'm not comfortable releasing it with them.
&lt;li&gt;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.
&lt;li&gt;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.
&lt;/ul&gt;
</description>
    </item>
    <item>
      <pubDate>Tue, 28 May 2002 00:02:21 GMT</pubDate>
      <title>28 May 2002</title>
      <link>http://www.advogato.org/person/jfrisby/diary.html?start=7</link>
      <guid>http://www.advogato.org/person/jfrisby/diary.html?start=7</guid>
      <description>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.</description>
    </item>
    <item>
      <pubDate>Tue, 28 May 2002 00:00:12 GMT</pubDate>
      <title>28 May 2002</title>
      <link>http://www.advogato.org/person/jfrisby/diary.html?start=6</link>
      <guid>http://www.advogato.org/person/jfrisby/diary.html?start=6</guid>
      <description>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).  

&lt;p&gt; The only task remaining for EasyORM 0.5.0 is to build a PHP-
targeted code generator.  

&lt;p&gt; 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.  

&lt;p&gt; 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...

&lt;p&gt; I'll launch 0.5.0 as soon as I have half a day to build the 
code-generator for PHP.</description>
    </item>
    <item>
      <pubDate>Wed, 21 Nov 2001 02:00:13 GMT</pubDate>
      <title>21 Nov 2001</title>
      <link>http://www.advogato.org/person/jfrisby/diary.html?start=5</link>
      <guid>http://www.advogato.org/person/jfrisby/diary.html?start=5</guid>
      <description>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 &lt;a href="http://www.yourfreedvds.com" &gt;YourFreeDVDs.com&lt;/a&gt;.  
I've published my first Open Source project -- EasyORM an 
Object/Relational mapper for PHP.  It's at &lt;a href="http://www.mrjoy.com" &gt;my web site&lt;/a&gt;.  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... :)</description>
    </item>
    <item>
      <pubDate>Sun, 13 Aug 2000 08:16:45 GMT</pubDate>
      <title>13 Aug 2000</title>
      <link>http://www.advogato.org/person/jfrisby/diary.html?start=4</link>
      <guid>http://www.advogato.org/person/jfrisby/diary.html?start=4</guid>
      <description>Well...  That was...  Humiliating.</description>
    </item>
    <item>
      <pubDate>Mon, 31 Jul 2000 04:53:27 GMT</pubDate>
      <title>31 Jul 2000</title>
      <link>http://www.advogato.org/person/jfrisby/diary.html?start=3</link>
      <guid>http://www.advogato.org/person/jfrisby/diary.html?start=3</guid>
      <description>Well it looks like RMI is the way to go after all.  I 
really wish Perl had something comparable, and better 
garbage collection -- circular data structures are very 
convenient.  Thankfully the problem domain is fairly 
simple, and reimplementing what I have already wont be too 
hard or time consuming.

&lt;p&gt; Anyway, that may or may not be a priority in the Very Near 
Future.  I've got higher priority stuff to focus on at work.

&lt;p&gt; I am however considering defining my own XML language for 
vocabulary translations.  I.E. to help me memorize Japanese 
vocabulary...  *grin*  Am I duplicating any efforts?  I 
hope not...  I'll be posting the DTD or specification on my 
site, along with reference code when I get the chance...

&lt;p&gt; I haven't tried messing with global-IMEs and Unicode 
display in Java or Perl...  Any advice?

&lt;p&gt; Nihongo wa utsukushii to muzukashii desu.

&lt;p&gt; Anyway, I miss my sweetie...  I didn't see her today. :(  
Apparently however she and her mom nearly got killed on the 
way to dinner -- moron ran a long-since red light at around 
50MPH.  Her mom stopped just in time.  He just waved as he 
blew by...  Some people really need to be removed from the 
gene pool for the sake of the rest of humanity.

&lt;p&gt; -JF</description>
    </item>
    <item>
      <pubDate>Mon, 24 Jul 2000 18:05:12 GMT</pubDate>
      <title>24 Jul 2000</title>
      <link>http://www.advogato.org/person/jfrisby/diary.html?start=2</link>
      <guid>http://www.advogato.org/person/jfrisby/diary.html?start=2</guid>
      <description>Hmmm...  Is the Perl interface to PVM *really* that out of 
date?  The most current one according to the &lt;A 
HREF="http://www.epm.ornl.gov/pvm/"&gt;PVM web site&lt;/a&gt; and 
CPAN is from '96.  Bleh!

&lt;p&gt; Well, I'm not even sure PVM is the right tool for this 
job.  Essentially I have a tree structure, where each node 
is a work unit and is dependent upon the results of 
rendering its children.

&lt;p&gt; Rendering a node involves:&lt;br&gt;
1) Gathering inherited information from the child nodes.&lt;br&gt;
2) Gathering node-local information from the database.&lt;br&gt;
3) Winnowing down the data to the relevent subset.&lt;br&gt;
4) Producing output files (2 per node).&lt;br&gt;
5) Returning the subset data to the parent node.

&lt;p&gt; I've had PVM and MPI suggested to me as starting points, 
although it seems that moving to Java and RMI might be 
better for the situation...

&lt;p&gt; &lt;A 
HREF="http://www.advogato.org/person/neonzebra/"&gt;Gerry&lt;/a&gt; 
says PVM is probably inappropriate since my code has side-
effects (step #4), but Wayne (who suggested PVM/MPI 
initially) says that RMI may be inappropriate because of 
the volume of data being passed around -- individually the 
data set returned to a parent is small, but there can be 
lots of children.

&lt;p&gt; I still need to look the PVM vs. MPI comparison on the PVM 
site -- being on Windows, viewing PostScript files is kind 
of a chore.

&lt;p&gt; Any input or advice?

&lt;p&gt; On a (*grin*) personal note: My girlfriend is awesome.  
It's really cool to have someone who will give you an 
8:00AM wake-up call, even if that means calling epeatedly 
for 10 minutes straight until you wake up. :)</description>
    </item>
    <item>
      <pubDate>Wed, 19 Jul 2000 19:06:41 GMT</pubDate>
      <title>19 Jul 2000</title>
      <link>http://www.advogato.org/person/jfrisby/diary.html?start=1</link>
      <guid>http://www.advogato.org/person/jfrisby/diary.html?start=1</guid>
      <description>Wow...  Advogato is cool. :)

&lt;p&gt; &lt;A HREF="http://www.advogato.org/person/raph/"&gt;Raph&lt;/a&gt; 
pointed me to the TIGER/Line database, and Benjy dropped me 
an e-mail pointing me to &lt;A 
HREF="http://www.perens.com/FreeSoftware/"&gt;Bruce 
Perens'&lt;/a&gt; site, where a Free copy can be found.  Cool.

&lt;p&gt; I'm on a deadline so I can't review the data just yet, but 
I imagine it has everything I'm looking for.  I can't wait 
to OS this job database...

&lt;p&gt; I should be up-front in pointing out that the system is 
back-end only...  All the extant front-end code sucks and 
uses unusual tools (the best front-end code -- from the now 
defunct BrainPower -- uses &lt;A 
HREF="http://www.engelschall.com/sw/eperl/"&gt;ePerl&lt;/a&gt;...  
MrJoy.com uses &lt;A 
HREF="http://www.masonhq.com/"&gt;HTML::Mason&lt;/a&gt; but the 
front-end is extremely crude and tightly integrated with 
the rest of MrJoy.com).  Basically it's a high-level Perl 
API and database schema for posting/modifying jobs, etc.  
It's carved out of a larger system so some things will seem 
a little incomplete...

&lt;p&gt; I may include my e-mail processor that lets you handle e-
mailed job submissions -- using a special format -- but 
it's kind of clunky.  I'd much rather rewrite it to use an 
XML language to define the jobs first.

&lt;p&gt; The e-mail handler was made to work with &lt;A 
href="http://www.qmail.org"&gt;QMail&lt;/a&gt;, but I've made a POP3 
wrapper which can be run as a cron job...  Currently the 
API only supports MySQL, but I'd like to port it to 
Postgres as well, and add support for BDB transactions in 
MySQL 3.23...

&lt;p&gt; The job engine really hits MySQL in it's weak spots.  
Performance can really grind because of uber-complex 
queries.  Feh.  MySQL really needs sub-selects.

&lt;p&gt; BTW, anyone looking for actual open source stuff I've 
written can check out &lt;A 
HREF="http://www.mrjoy.com"&gt;MrJoy&lt;/a&gt; (click on "Software") 
or check out &lt;A HREF="http://www.masonhq.com"&gt;MasonHQ&lt;/a&gt; 
under the contributions section.  It's all really trivial 
stuff, but it works. :)

&lt;p&gt; Given the response to my last question, I'll pose another 
one:  What ever happened to the plans to have proper 
garbage collection in Perl?  I drove myself batty recently 
trying to eliminate an unintentionally circular data 
structure...  *grumble*

&lt;p&gt; On a personal note, my &lt;A 
HREF="http://www.homestead.com/vivaciousjen/"&gt;sweetie&lt;/a&gt; 
is great. :)  She can be a tad emotional at times, but I 
have some of the same issues she does so I understand how 
she feels when her mood takes a nosedive...

&lt;p&gt; I need to buy her some flowers.  I haven't done that yet.  
I should also take her for dinner at AP Stumps or some 
such...  The nicest place I've taken her so far is Macaroni 
Grill.  </description>
    </item>
    <item>
      <pubDate>Tue, 18 Jul 2000 21:10:52 GMT</pubDate>
      <title>18 Jul 2000</title>
      <link>http://www.advogato.org/person/jfrisby/diary.html?start=0</link>
      <guid>http://www.advogato.org/person/jfrisby/diary.html?start=0</guid>
      <description>So where does one go to find Free data?  I have a really 
cool piece of code I'd like to release, but for part of its 
search capabilities it needs a database of Zip/Area/MSA 
Codes.

&lt;p&gt; The USPS apparently charges an annual subscription fee to 
get the raw data and numerous other companies integrate it 
(zip and area code data are normally entirely seperate for 
example) and then resell it.

&lt;p&gt; My only options are to remove most of the location-search 
functionality from my code (you can search for data that 
is "near" where you specify, you can enter zip codes, area 
codes, etc...) leaving just the raw location search, or 
mandate that users buy this database.  Unfortunately the 
location search is pretty key...

&lt;p&gt; What then should I do?

&lt;p&gt; On a personal note, I'm happy.  I like my girlfriend. :)  
&lt;A HREF="http://www.homestead.com/vivaciousjen/"&gt;Jen&lt;/a&gt; is 
the reason I get up in the morning now...</description>
    </item>
  </channel>
</rss>
