{back to GSoC 2012 main page}

GSoC 2012 - Ideas page

Enabling support for geo-data and spatial analysis in PicoLisp

  1. Rpil: Porting RPy to PicoLisp
  2. R is the undisputed champion in the world of open-source statistical programming software. Therefore it is no big surprise, that R is frequently used to analyse geo-data. It would be highly beneficial to develop an interface between R and PicoLisp that facilitates the use of R by PicoLisp programmers. Such an interface already exists for Python, and its called RPy2. Our project proposal for the GSoC 2012 is therefore to develop Rpil, a PicoLisp port of RPy2, and write a good programmers guide for the new interface.

  3. pilWPS: Porting PyWPS to PicoLisp
  4. There are powerfull open-source GIS tools available to run on a server (notably GRASS GIS. However, since PicoLisp applications use only webbrowsers as clients, there is a need to send processed geo-data and queries for as well as results of spatial analyses back and forth between the server and the webbrowser.

    For Python, a software that translates between server and client already exists: PyWPS. PyWPS is a translator-proxy application between client (Web Browser, Desktop GIS, command line tool, ...) and working tool installed on the server. PyWPS does not process the data by it self. As working tool, GRASS GIS, GDAL, PROJ, R and other programs can be used.

    The following graphic from the PyWPS web-page shows how PyWPS works:

    pywpsSchema

    Our GSoC 2012 project proposal is to write and documentate pilWPS, a PicoLisp port of PyWPS (and therefore an PicoLisp implementation of the OGC Web Processing Service standard.

  5. pilMOD: Implementing core data types and algorithms for Moving Object Databases in PicoLisp
  6. Moving Object Databases (MOD) are an exciting topic of research and application design in times when GPS has become ubiquitous and (web and desktop) GIS is gaining importance. This project idea aims at implementing the core features of MOD, data structures as well as algorithms, into the PicoLisp database. The intention is to enable specific storage techniques and query methods for moving objects as described and implemented by Güting. As a side effect, a successfull realisation of this project will draw some attention from the GIS and MOD community to the PicoLisp framework and the way it makes implementing complex features easier and faster.




The browser 'IS' the data base

  1. pilBrowserDB: Integrating the PicoLisp database into webbrowsers
  2. Convert your browser into a powerful data base by bringing the PicoLisp data base into the browser.

    background: PL is a merger of

    task: write a PIL.JS lib (Virtual Machine) which loads into the browser, together with a simple IDE, investigating the use of node.js for server side functions (storage) and allowing for 'live' debugging. The PIL.JS lib should convert PIL code into JS.

    rationale: increase portability (develop & deploy PL anywhere in the web via browser), make deployment easy.

    readings/links: Idea inspired by:



    see also: emuLisp, a PicoLisp Project by J. Kleiser

    so, why is porting picoLisp to the browser 'different'?

    Answer: PL is a virtual machine focused on data base application. Bringing it successfully to be developed and run inside the browser converts the browser itself into a data base and GUI at the same time.

    motivation

    Make use of the neat characteristics of PicoLisp to enhance webbrowsers with new much wanted features, and learn a lot about JavaScript, node.js, virtual machines and .. LISP of course.



Power-efficient computing

  1. PicoLisp in hardware: Implementing the PicoLisp virtual machine in hardware


  2. PicoLisps' simple yet efficient virtual machine is unusually suited for an implementation in hardware. This is because the machine format is based exclusively on cells, all of the same size. The interpreter loops over these cells. Currently the interpreter has been implemented in C and in 64 bit assembler, but not in hardware description languages such as VHDL or Verilog.

    task: write a CPU in Verilog or VHDL capable of executing 32 bit or 64 bit cells, modeled after the existing C or assembler interpreters. Verify in simulator or on FPGA development board.

    task: connect the CPU to a RAM and some kind of I/O. Demonstrate that the the CPU can load picolisp cells from external I/O (memory card, serial port, Ethernet or USB) and write out some result to an external I/O. (memory card, serial port, Ethernet, USB, LCD screen, monitor or other suitable output.)

    task: Convert the ASCII parser to PicoLisp, so the FPGA board can load ASCII PicoLisp source code directly and not just binary cells. Now the I/O can be provided in the form of PicoLisp source instead of precompiled cells.

    task: Implement a REPL or other interactive mechanism over serial port, Ethernet or some form of console, so code can dynamically updated.

    task: If the FPGA has an Ethernet port, implement a web server which can get its code and data updated over the net.

    rationale: Demonstrate how little chip area can translate to immensely fast execution of a high level and powerful language.

    motivation

    Demonstrate how a data driven CPU architecture can be programmed with a familiar paradigm. (Lisp.)



System Libraries

  1. Unlimited Precision Fixpoint Library)

    For trigonometric and transcendental functions PicoLisp currently calls external C-libraries.

    This is all right in terms of ease and correctness. However, while PicoLisp's built-in fixpoint arithmetic is unlimited in precision, the 'double' numbers of the IEEE-754 implementation support only about 15 significant digits in the mantissa. This restricts applications which might want to use a higher precision.

    The task is to implement trigonometric and transcendental functions, and possibly other like fourier transformations, statistical and financial functions. The data to operate on are the standard PicoLisp fixpoint numbers, with a single application-wide constant scale (see '*Scl' and 'scl').

    The applications using that library are free to choose proper, arbitrarily high scales, and it is the application's responsibility to avoid precision underflow.

    Another advantage (besides the precision) is the predictability of the arithmetic operations. The mantissa is never scaled (shifted). Addition and subtraction are completely exact, and multiplication and division follow simple rounding rules.

http://picolisp.com/wiki/?ideaspage

09mar12    abu