Back in the day, I ran a consulting company, bDistributed.com. It's gone now, but while I was running it I created some Open Source software that people may find useful. All of it is under a BSD license that's included in the code. I hold the copyright on everything below now, since bDistributed.com, Inc. is gone.
Note: I haven't done any work on any of this in quite a while. Use it entirely at your own risk. You're on your own dealing with compatibility with systems more recent than Mac OS X 10.3 Panther.
BDAlias is a simple class for managing aliases in Cocoa applications. It's probably bDistributed.com's most popular product.
Download BDAlias-1.0.1.tar.gz, the BDAlias 1.0.1 source code.
Update: Wolf Rentzsch has generously hosted BDAlias on his public Subversion repository, along with his updates to it. I suggest going there if you want the most up-to-date version, and coordinating any changes you want to merge back into his distribution with him.
BDControl was a reimplementation of the Enterprise Objects Framework's qualifier and sort ordering objects for Objective-C Cocoa.
Note: This framework is made obsolete by the NSSortDescriptor class in Mac OS X 10.3 Panther, which replaces BDSortOrdering, and by the NSPredicate classes in Mac OS X 10.4 Tiger, which replace the BDQualifier classes.
Download BDControl-1.0.5.tar.gz, the BDControl 1.0.5 source code.
BDRuleEngine and BDRuleEditor
BDRuleEngine was a reimplementation of the WebObjects DirectToWeb Rule Engine atop BDControl. My intent with it was to create a flexible rule engine that could be used to generate an application's human interface from its data model at runtime, and also to specify automatic layout rules (such as inter-item spacing and so on) outside the application itself.
BDRuleEditor was a simple thrown-together application for editing the BDRuleEngine rule sets. It's nowhere near as flexible as the old WebObjects rule editor; on the other hand, it did what I needed it to do.
BDRuleEngine and BDRuleEditor both sit atop the latest version of BDControl and, as such, are also somewhat obsolete.
I'm definitely interested to see if anyone re-targets BDRuleEngine for NSPredicate — which will require modifying a couple of its algorithms — and develops a more comprehensive and nicer rule editor. The specific algorithms I'm referring to relate to the order of rule evaluation; in BDRuleEngine, rules are sorted by the number of clauses in the rule, which isn't readily accessible or even as meaningful in NSPredicate as it was in BDQualifier.
It may make more sense for anyone who wants to modernize BDRuleEngine to just strip that out, and instead evaluate rules in the order in which they're specified, period. (It's also likely to be a lot easier to debug rule sets that way.)
And then there's the fact that BDRuleEngine does no caching. Of course, since it's a "pull" rule engine — that is, it doesn't evaluate the world constantly, but only evaluates rules when you ask for information (like a "smart" dictionary) — any caching you do implement is likely to be relatively straightforward. Especially with key-value observing available.
Download BDRuleEngine-1.1.0.tar.gz, the BDRuleEngine 1.1 source code, and BDRuleEditor-1.1.0.tar.gz, the BDRuleEditor 1.1 source code.
BDXmlRpcForWO is a simple responder class for WebObjects 5.2 and (possibly) later that lets a WebObjects application use Apache XML-RPC to provide XML-RPC web services. Thus it requires Apache XML-RPC as well. I know that at least in 2002, it interoperated with AppleScript's XML-RPC support, since that's what I used to test it.
Download BDXmlRpcForWO-1.0.0.tar.gz, the BDXmlRpcForWO 1.0 source code.
bDistributed.com Software License
Note: This is the license for all of the above software. The archives above contain the license that specifically applies to each individual component; however, they are all substantially similar to the below. Since bDistributed.com, Inc. is defunct, the current copyright holder is myself, Christopher M. Hanson, which is reflected in the below license but not in the included licenses in the archives; this is because the archives are unchanged since they were first posted.
By using or downloading this software, you agree to be bound by the following license. If you do not agree to be bound by the license, please destroy all copies of this software.
Copyright © 2001-2004, Christopher M. Hanson. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- Neither the names of Christopher M. Hanson, nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CHRISTOPHER M. HANSON OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.