(Untitled)
So it turns out that the chick I was fucking has fallen in love with me (or some stupid shit), which means I have to get rid of her. The sex wasn’t very good anyway — I always ended up doing all the work. I get more pleasure fucking Rosy Palmer.
I gave a demo of my Business Workflow Engine on Thursday. They actually liked my design a lot — using an expressive language rather than raw XML “programs”, storing state to disk with a flat-file database rather than an RDBMS, non-destructive updating so workflow state could be reconstructed, etc. What they didn’t like was my SOAP library.
SOAP isn’t a complicated thing. It’s just a specification for sending an XML payload. It’s really fucking simple.
The standard method to dynamically describe that payload, WSDL (and the description of the data types used in that payload, XSD) is complicated as fuck. It’s so fucking complicated, I swear, there’s a fucking standard for what not to do with it (though I can’t find a citation to back that up). My workflow engine was written in C, and requires dynamic invocation of remote services. There are a couple SOAP libraries for C, (csoap, gsoap, Axis2/C) but all of them handle the WSDLs statically — you hand their tools the WSDL file and they spit out a C stub which has to be compiled into your binary. Useless. So I had to write own WSDL/XSD parser and tie it into my own SOAP client library, from scratch.
Which my superiors pointed out, is a maintenance disaster waiting to happen. My shitty non-standard implementation was a little over 2,000 lines of C. To put things in perspective, the Java wsdl2c parser (excluding the part which actually outputs the C from the parsed type information) is 12,000 lines long. And even then, that shit isn’t fully standards-compliant. It’s ridiculous.
But despite that, the Axis2 implementation is fairly “standard” (as in, widely-used, not actually conformant), so the argument is that if we used it, we could just tell people writing services for us to consume “make your WSDL Axis2 parseable”. Unfortunately, only the Java version of the implementation does this shit dynamically, which means migrating the whole fucking stack over to a Java/Tomcat-based implementation. Which means rewriting the whole fucking thing yet again (first implementation was in Ruby, second in C, now the third will be in Java).
Needless to say, I am currently shopping around for a new position. I applied for a Senior Application Developer position in the Health Science library; the main project is writing a scraper/reindexer for medical journals in Python. Sounds familiar. I’m hoping for an offer, but we’ll see what happens :3
2 comments