---
title: "How to make a multi-platform monster"
date: 2003-01-28T02:07:53-05:00
url: https://blog.lmorchard.com/2003/01/28/ooodoc/
author: Les Orchard
---

# How to make a multi-platform monster

<p>So I'm thinking that I might prematurely release some code before the week is out, so anyone who's interested can point and laugh at my <a href="http://www.decafbad.com/twiki/bin/view/Main/PersonalWebProxy">PersonalWebProxy</a> exploits - this time in Java.</p>
<p>One thing that disturbs me a bit about this thing so far is that, for what I have in mind, I'll have built a mini-OS when all is said and done.  It'll have a web server, a web proxy, telnet-able shell, scripting languages, scheduler, full text search and index engine, persistence &amp; metadata storage, and whatever else I can eventually think to toss in.  There are just so many nice toys for Java, and most are a snap to glue together.  But, I can't really use any of the toys that come with the OS itself.</p>
<p>It's something <a href="http://www.decafbad.com/news_archives/000092.phtml#000092" target="_top">I've rambled on about before</a>, as has <a href="http://udell.roninhouse.com/" target="_top">Jon Udell</a> in his old Byte column: <a href="http://udell.roninhouse.com/bytecols/2002-04-10.html" target="_top">Zope Lessons Learned</a>.  If this thing is to run on more than one platform, it can't rely on the facilities of any particular platform.  So, all these lovely things I like OS X for are somewhat off limits.</p>
<p>On the other hand, if I get tired of doing this thing in Java, I could always just finally embrace the platform and go straight for Cocoa.  :)  Yes, that would make for 3 environments tried, but hey - it's still fun for me!</p>
<!--more-->
shortname=ooodoc

<div id="comments" class="comments archived-comments">
            <h3>Archived Comments</h3>
            
        <ul class="comments">
            
        <li class="comment" id="comment-221086533">
            <div class="meta">
                <div class="author">
                    <a class="avatar image" rel="nofollow" 
                       href="http://dannyayers.com"><img src="http://www.gravatar.com/avatar.php?gravatar_id=ac0d01ebb5e438c029c0764064f70827&amp;size=32&amp;default=http://mediacdn.disqus.com/1320279820/images/noavatar32.png"/></a>
                    <a class="avatar name" rel="nofollow" 
                       href="http://dannyayers.com">Danny</a>
                </div>
                <a href="#comment-221086533" class="permalink"><time datetime="2003-01-28T09:13:58">2003-01-28T09:13:58</time></a>
            </div>
            <div class="content">Really looking forward to seeing what you come up with. 

Not wanting to suggest feature drift/bloat or anything, but a mail proxy would be nice too...</div>
            
        </li>
    
        <li class="comment" id="comment-221086534">
            <div class="meta">
                <div class="author">
                    <a class="avatar image" rel="nofollow" 
                       href="http://www.decafbad.com"><img src="http://www.gravatar.com/avatar.php?gravatar_id=2ac2cffd36ada8c734b90e02a1e5c1ac&amp;size=32&amp;default=http://mediacdn.disqus.com/1320279820/images/noavatar32.png"/></a>
                    <a class="avatar name" rel="nofollow" 
                       href="http://www.decafbad.com">l.m.orchard</a>
                </div>
                <a href="#comment-221086534" class="permalink"><time datetime="2003-01-28T12:18:09">2003-01-28T12:18:09</time></a>
            </div>
            <div class="content">I need to rename this project and stop referring to it as a Personal Web Proxy, though that's the first goal.  I want it to be a personal agent platform when it grows up, so a mail proxy would fall under that.

But, for now, one protocol at a time for me :)</div>
            
        </li>
    
        <li class="comment" id="comment-221086535">
            <div class="meta">
                <div class="author">
                    <a class="avatar image" rel="nofollow" 
                       href="http://guests.evectors.it/zoe/"><img src="http://www.gravatar.com/avatar.php?gravatar_id=2d3d8732d4a17d4ad7513b127ce055e7&amp;size=32&amp;default=http://mediacdn.disqus.com/1320279820/images/noavatar32.png"/></a>
                    <a class="avatar name" rel="nofollow" 
                       href="http://guests.evectors.it/zoe/">Zoe</a>
                </div>
                <a href="#comment-221086535" class="permalink"><time datetime="2003-01-28T19:50:41">2003-01-28T19:50:41</time></a>
            </div>
            <div class="content">"If this thing is to run on more than one platform, it can't rely on the facilities of any particular platform. So, all these lovely things I like OS X for are somewhat off limits."

Well... not necessarily... Taking another "monster" as an example, ZOE interacts with core Mac OS X services even if it's written in Java and cross-platform...

As somebody green famously said:

"Software are like onions."
"Layers! Onions have layers. Software have layers. Onions have layers. You get it? We both have layers."
-- Shrek, 2001

ZOE integrates with Apple's system services. It uses Rendezvous directly. Integrates with Apple's Mail.app. And even the Finder itself.

So, not everything is lost ;-)

Z.</div>
            
        </li>
    
        <li class="comment" id="comment-221086536">
            <div class="meta">
                <div class="author">
                    <a class="avatar image" rel="nofollow" 
                       href="http://www.deadlybloodyserious.com/Python/"><img src="http://www.gravatar.com/avatar.php?gravatar_id=11fad486e523536c7d33ea72efbc17cd&amp;size=32&amp;default=http://mediacdn.disqus.com/1320279820/images/noavatar32.png"/></a>
                    <a class="avatar name" rel="nofollow" 
                       href="http://www.deadlybloodyserious.com/Python/">Garth</a>
                </div>
                <a href="#comment-221086536" class="permalink"><time datetime="2003-01-29T06:15:25">2003-01-29T06:15:25</time></a>
            </div>
            <div class="content">Why not used Twisted?</div>
            
        </li>
    
        </ul>
    
        </div>
