Just an update

January 3, 2007

Today I am working on making a wrapper for freeimage that is nicer than just the trivial cffi wrapping I had already done for it. I am also looking at doing the same for opencv. Although, I guess I could release them as trivials– not sure what the preference in the community is in regards to this. If anyone has an opinion on whether a trivial release would be useful for others to build their own packages on or not please drop a comment.

CLORB: CORBA for Lisp

December 31, 2006

Well, I thought about it for awhile and decided I would post something about CLORB in particular. Where I work we use CORBA as the transport for our grids. I have always wanted to be able to use Lisp as a client– yay! CLORB. Now, I know there are other CORBA implementations for Lisp– but this one is free. That last word there– free– is very, very important when you are trying to establish a foothold for Lisp in the corporate IT world. I use SBCL on Linux and CLISP on Windows because they are free. That means I don’t have to go through the entire process of requesting funds for LispWorks or ACL. Which, also means, I don’t have to justify an expense for something no one else in the company for which I work is using. So, now that I have free Lisp tools and CLORB I can interoperate with all of the other services that have been developed in other languages at the company I work. The interesting thing about this use of free tools is that once I have a few projects/services in place using Lisp I can justify actually buying LispWorks or ACL if needed. Now back to CLORB– I was very happy at how easy it was to get a client up and talking to a python service. I am using OmniNames as my nameservice. The following snippet will enable the connection and use of a corba service– in this case the python corba service provides a single method called getsyphs.


(require :asdf)
(require :sb-bsd-sockets)
(require :clorb)

(defvar *orb*
    (CORBA:ORB_init
         (list "-ORBInitRef" "NameService=corbaloc::10.85.90.144:2809/NameService")))

(corba:idl "syph.idl")

(defvar *obj*
        (op:resolve_initial_references *orb* "NameService"))

(defvar *rc*
        (op:narrow 'cosnaming:namingcontextext *obj*))

(defvar syph
        (op:resolve "BCS.syph/BCSSyph.Object"))

(defvar rt
        (op:narrow 'BCS:Syph syph))

(op:getsyphs rt "014600AIR CANADA")

The only downside I have experienced with CLORB is that it depends on cpp to preprocess idl. This is a small problem if you are on Windows and don’t have a cpp. I got around it by having CLORB generate all of the Lisp code to a single file for the idl on Linux.


(CORBA:IDL "syph.idl" :output "syph.lisp")

Then in CLISP on my Windows box I replaced


(corba:idl "syph.idl")

with


(load "syph.lisp")

and all was happy.

good-bye 2006

December 31, 2006

Well, another year is coming to a close. This has been a good year for me in terms of programming Lisp professionally. I became a Team Leader for a group of developers and we were charged with developing a new ocr system. We used several languages– right tool for the job mentality. My boss was so pleased with what we accomplished and the time-frame in which it took that I have now been given the task to design and replace a large legacy system. All of this success has been because I do not believe in one language for every task. I firmly believe in the right tool for the job. I also believe in rapid-prototyping. Following these beliefs has put me in the position that I can use Lisp in an enterprise I.T. setting. What have I been using Lisp for? I can’t give too many details at this point– but I can tell what packages I have been using or have created. I have wrapped FreeImage and OpenCV in the last month– I’ll be releasing them in the next month. I have also recently started looking at CLORB. I have gotten CLORB clients talking to omniORB python servents. I am also using wxcl. Right now I am working on a Name Utility that will list CORBA bindings in a wxcl gui. I will post the code on this site in about a week. Have a Happy New Year!

Foundations

December 11, 2006

Part of my work is researching ways to parse printed language. It can be very interesting but difficult to get a basic understanding of the techniques involved. Recently, I came across an excellent book called “Foundations of Statistical Natural Language Processing”. I am currently only to chapter 6 but I can say it is well worth the money. I am working through the book implementing the techniques in Lisp. I will be posting Chapter 5 as soon as I work out a few bugs and get it packaged nicely.

A New World

December 8, 2006

You see, what we’re after is to remind ourselves that we didn’t come to Anarres for safety, but for freedom. If we must all agree, all work together, we’re no better than a machine. If an individual can’t work in solidarity with his fellows, it’s his duty to work alone. His duty and his right. We have been denying people that right. We’ve been saying, more and more often, you must work with the others, you must accept the rule of the majority. But any rule is tyranny. The duty of the individual is to accept no rule, to be the initiator of his own acts, to be responsible. Only if he does so will the society live, and change, and adapt, and survive. We are not subjects of a State founded upon law, but members of a society formed upon revolution. Revolution is our obligation: our hope of evolution. The Revolution is in the individual spirit, or it is nowhere. It is for all, or it is nothing. If it is seen as having any end, it will never truly begin. We can’t stop here. We must go on. We must take the risks.

—Shevek, page 296

The above quote is from the book “The Dispossessed” by Ursula LeGuin. I think it sums up my view about the responsibility that each individual has in society to do things they believe in regardless of the masses and to be responsible for having done such things. I think those of us in the Lisp community need to continue down this path– some of us need to get back on it. Lisp should continue to lead innovation– other languages/technologies should always be playing catch-up– that should be our goal. We will have moments of porting ideas and technologies to Lisp to keep it attractive– I have ported several image libraries to Lisp that I will be releasing to the wild by January. Let’s not stay to focused on that, though; let’s make sure we continue to be innovative with Lisp itself and not just applications. More advocacy to come, in many ways….