[Date Prev][Date Next][Thread Prev][Thread Next] [Search] [Date Index] [Thread Index]

OmniMark Rant (was Re: [FWP] A fun bit of obfuscation)



I had initially just wanted to mention OmniPerl, but it spun off onto
a rant about OmniMark.  Oh well, its fun to beat up on.

On Mon, Oct 11, 1999 at 09:50:55PM +0100, Adam Sampson wrote:
> The other evening, I had this idea for a truly twisted bit of obfuscation. I
> figure either Perl or C would be the best. The problem is that I have no
> idea whether it's actually possible.
> 
> My idea is to have a program which does one thing, but does something
> completely different when read out loud and retyped. For instance, the
> original program could contain:
> 
> ...	$star=twosemicolonprint;	...
> 
> which could become
> 
> ...	dollar*=2;print semicolon	...
> 
> Any ideas?

Use OmniPerl!  Its CHEAPER THAN OMNIMARK!
http://www.pobox.com/~japhy/OmniPerl/ With the simple Perl Objects ->
OmniPerl converter (poop) you can get rid of those nasty strange
characters.  For instance, the obfuscated program:

	@array = qw(foo bar yar);
	print join ', ', @array;

Becomes the clear, simple:

	at array space equals space qw openparen foo space bar space yar 
	closeparen semicolon newline
	print space join space tick comma space tick comma space at array 
	semicolon newline

Which can then be quickly run by the OmniPerl program!  And its faster
than Perl because its compiled [into English]!

You can probably adapt poop and OmniPerl to your needs.


For those of you who don't get the joke, OmniMark is this weird SGML
parsing language that showed up at TPC3 claiming to be "Cheaper Than
Perl".  A close-source commercial language at the Open Source
conference, showing off their Windows-only IDE (they gave out CDRoms
for Windows) at the Linux conference loudly claiming to be "Cheaper
Than Perl" at the Perl Conference.

Can we say, "Bad marketing idea?"

Here's some of the fun things from Omnimark:

"OmniMark is cheaper than Perl because it is readable"
"OmniMark is cheaper than Perl because it is more concise"

	Here's an example of a regex in Omnimark take from their promos:

	match white-space* digit+ blank+ digit+=>y "-"
		digit{2}=> m "-" digit{2}=> d blank+ digit{2}=> h
		";" digit{2}=>min ":" digit{2} => s

	Somebody tell me why this is cheaper than:

	($year, $month, $day, $hour, $min, $sec) =
	 	/\d+[ ]+(\d+)-(\d{2})-(\d{2})[ ]+(\d{2});(\d{2}):(\d{2})/;

	They're both equally incomprehensible to the untrained eye, IMHO.

"Perl is free.  OmniMark is free."
	No, Perl is Free, parts of OmniMark are free.  The compiler and
	virtual machine are free.  Their "first-class IDE" costs $700
	for commercial use.

"OmniMark is cheaper than Perl because it has a first-class IDE"
	Yeah, only on Windows and for $700.  If commercial and Windows-only
	are the criteria, then ActiveState has Perl convered.

"OmniMark is cheaper than Perl because it is well supported"
	At only $150 per tech support call, WHAT A BARGIN!  And allll those
	OmniMark books out there for you to learn from!

"OmniMark is cheaper than Perl because it has integrated XML support"
	They've got us there.  If their code examples are to be 
	believed, their XML, SGML and HTML parsing is really, really good.
	It looks like that's the basis for the language.  I wish they'd
	stick to what they're good at instead of trying to compete with Perl.

"OmniMark is cheaper than Perl because OmniMark was designed for text
 processing.  Although you can do many things in Perl, it was designed
 to be a UNIX system administrator's tool."
	I'll just leave that one right where it is.

"OmniMark is cheaper than Perl because it is more readable.  OmniMark
has a clear English-like syntax."
	Yes, OmniMark follows on the heels of the spectacular successes of 
	BASIC and COBOL!

"OmniMark is cheaper than Perl because it is more concise.  You can
often do as much in one line of OmniMark as you can in five lines of
Perl..."
	Wow, I've -never- see anyone claim to be more concise than Perl.
	Let's look at some of this wonderful consiceness.

	Hmmm, in Perl, if you wanted to print out the numbers one to
	ten, you'd do the labour-intensive:
		for(1..10) { print "$_\n" }

	But with OmniMark's conciseness, you can do it even simpler!
	Watch!

	  macro repeat for token counter-name
	        from arg min-value to arg max-value
	        doing arg actions again
	     is
	        do
	           local counter counter-name

	           set counter-name to min-value
	           repeat
	              exit when counter-name > (max-value)
	              actions
	              increment counter-name
	              again
	           again
	        done
	  macro-end

	  repeat for column-number
		     from 1
	             to 10
		doing
		   output "\emptycolumn{%d(column-number)}"
	  again

	Ooops!  OmniMark has no for loops!  So we had to construct one
	ourselves with a macro.  But, still, as you can see, OmniMark
	is much cheaper than Perl.

"OmniMark is cheaper than Perl because it can be compiled.  OmniMark
code can be distributed and run either in source form (like Perl) or
as compiled byte code (like Java).  Distributing OmniMark applicaitons
as byte code protects your business process and you intellectual
property... OmniMark saves you money by protecting your security and
your revenues."
	Ahh, yes.  The old fallacy of compilation that we know so well.

	As everyone knows, compiling hides nothing.  That eeevil hacking
	tool /usr/bin/strings can still get at your precious business
	process.  And, of course, byte code can easily be decompiled.

	And compiled languages are not inheritly faster than interpreted.


-- 

Michael G Schwern                                           schwern@pobox.com
                    http://www.pobox.com/~schwern
     /(?:(?:(1)[.-]?)?\(?(\d{3})\)?[.-]?)?(\d{3})[.-]?(\d{4})(x\d+)?/i

==== Want to unsubscribe from Fun With Perl?  Well, if you insist...
==== Send email to <fwp-request@technofile.org> with message _body_
====   unsubscribe