Older blog entries for cbbrowne (starting at number 10)

The Too Cool Thing that I discovered today is that there is now, many years later, a free software alternative to AMPL, namely ZIMPL .

What is that? It is a Little Language for transforming descriptions of mathematical problems into Integer Programming/Linear Programming formulations that may then be solved using an LP/MIP solver.

Why? Because the quasi-standard format for these problems, MPS, will make your ears bleed if you try to write up a complex model directly. If you're trying to describe a problem of interesting size (thousands of variables and constraints), you really do need to write a program to generate an MPS file.

AMPL, and now ZIMPL, allow you to describe your problem using reasonably nice looking equations, with two particularly pointed additions:

  • You can define model variables and parameters that draw their values from formatted data in external files, allowing you to use any sort of database / import scheme to define large portions of the problem and parameters

  • You can define sets of model variables with descriptive "subscripts," and have equation descriptions that generate gobs of model equations that are identically shaped by merely describing one of them

It's not difficult for 30 lines of AMPL/ZIMPL model description to combine with a data file with 50-100 parameter values to then expand to generate a planning model with tens of thousands of variables and constraints.

Of course, it would be bad news if this was insoluble; modern LP solvers on modern hardware can solve problems with hundreds of thousands if not millions of variables/constraints.

The one annoyance is that the default solver is anything but free; it's still all too common for Operations Research tools to be "free for purely academic use" but exceedingly proprietary anywhere else...

29 May 2006 (updated 29 May 2006 at 22:37 UTC) »

I think I busted some cfengine scripts the first time I remote-edited via Tramp; apparently, it doesn't preserve executable permissions :-(.

Ah, well, there are plenty of other cases where Tramping around to plain old config files works out fine. Yay, I can edit slonik scripts on application servers using Emacs.

Now, I just need to create an Emacs Slonik mode :-).

Emacs note du jour...

On Using Tramp which is a module that allows editing files on remote hosts using scp, ftp, or such...

To have it in place, you need, in $HOME/.xemacs/init.el, the following:

(require 'tramp)

Then, you can request editing a file on a remote host thus...

C-x C-f /[ssh/root@rg520-data-dotinfo]/etc/hosts

Tab completion works in various places...

Interesting protocols include ssh, ssh1, ssh2, scp, rsh, rsync, su, sudo, smb, ftp, telnet...

How about those wonderful people from SCO?

It all feels like a great All Your Linux Are Belong To Us .

More realistically, they seem to be heading down a similar road to Intergraph. Intergraph has a fairly nominal amount of income coming from sales of products. But the real profits come in from litigating against chip makers like TI and Intel.

It seems probable that Caldera made more money off of the judgement against Microsoft relating to DR-DOS than they ever did on selling Linux distributions.

(defun prolog-build-email-address (name host) (format nil "wm(X,Y):-write(X),write('@'),write(Y). wm('~A','~A')." name host))

(defun ocaml-build-email-address (name host) 
  (format nil "let name=~S and tld=~S in name ^ \"@\" ^ tld;;" 
          name host)) 

(defun ocaml-build-email-address-2 (name host) (format nil "let name=~S and tld=~S in String.concat \"@\" [name;tld];;" name host))

(defun snobol-build-email-address (name host &optional (revp nil)) (if revp (concatenate 'string "output = reverse(" (quotify (reverse host)) " " (quotify (reverse name)) ")") (concatenate 'string "output = (" (quotify name) " " (quotify host) ")")))

(defun sql-build-email-address (name host) (format nil "select '~A' || '~A';" name host))

(defun a+-build-email-address (name host) (format nil "~S,~S" name host))

Nifty News Du Jour

SBCL AMD64 Port is proposing a port of Steel Bank Common Lisp, a CMU/CL-related Common Lisp implementation, to run on the AMD x86-64 platform.

Bidding can be done here to provide funding for this...

Note To Self...

Need to put a few more language examples into the code generator in lispcookies.lisp . At present, it generates my email address using code fragments in Common Lisp, Icon, and Snobol.

I should certainly add in Prolog and OCAML. Parrot assembler would probably be a slick idea, too...

What "goes around, comes around."

Many moons ago, I was involved with a project where a paper company in Thunder Bay was looking for accounting software. The vendor that turned out to be preferred was called System Dynamics. They now have a web site.

They produce an Oracle-based set of accounting and manufacturing software. Not neat to most people, but useful to some.

Ran into someone looking for "serious manufacturing software" that runs on Linux, prepared to pay something. SDC seems to fit the bill. They may owe me a job, some day :-).

13 May 2003 (updated 13 May 2003 at 19:40 UTC) »

It has been a while since the last diary entry...

Entertainment of the week is BlogShares.com; this involves "investing" in "shares" in various peoples blog diaries.

Value is enhanced assortedly by:

  • The vagaries of supply and demand; popular shares get bid up in price;
  • The numbers of incoming links, which are considered a metric of popularity

Here are some interesting blogs. (These should be counted as incoming links, enhancing stock values :-).)


    I live about a mile away from the main SARS hospital in Canada...

  • Wil Wheaton's BLOG

    His Star Trek character was pretty irritating, but the actor isn't...

As a completely different matter, I'm curious as to where Nat Friedman's "GNU Rope" has gone. I was at the 1998 ALS G-Rope talk which described this tool, whose purpose was to rummage around object files, rearranging code to improve locality of reference.

Nat has gotten busy with other things, involved with Ximian; it is not evident what happened to this.

1 older entry...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!