- I wrote an IMAP-Bugify connector
that polls an email account and translates the messages into Bugify
issues using the awesome Bugify API.
- PHP ORM parent class and
derived class
I don't like CodeIgniter's ActiveRecord implementation because its
methods return raw stdClass objects rather than instances of your own
custom classes. This completely misses the point of returning objects,
rather than associative arrays: instead of (1) writing instance methods,
(2) keeping all your data logic in one class and (3) having access to
public/protected/private methods, you have to put everything in Helper
functions which means (1) you have to pass in the object as an argument,
(2) the functions are in a separate file and (3) because they are
functions instead of methods, by definition they are all public.
Yes, there are many other excellent PHP persistence
frameworks with more features. This is a much smaller solution than any
of those, which also makes it simpler. Derived classes implement a few
methods (tableName, fieldNames, primaryKeyName) and inherit CRUD
operations, including traversal and caching of related objects (joins),
from the parent class.
- Kbzb, a Perl port of
CodeIgniter
I'm also not a big fan of PHP, although I do use it all the
time. Since I am a big fan of Perl, I wrote a Perl port of CodeIgniter.
It was partly an academic exercise to see what it would it would take
and to learn the framework better, but I've also worked for a few places
that used both Perl and PHP, and I figured this framework could be
useful in those situations.
- WebObjects EOF validation
methods
These simple validation methods provide object uniquing.
Obviously, you can do this at the DB level with a unique constraint on a
field, but EOF operates at a very far remove from the DB. Trapping the
error at the higher level makes it much easier to handle elegantly.
- In 2006 I completed a thesis for my
Master of Liberal Arts in Information Technology Degree at Harvard
Extension School. I wrote several applications using Perl, Java and sh.
The content and code appendix are both available from the link
above.