Recent and Past Projects

      clOpenCL - cluster OpenCL (Research Project)

      Domus - Co-Operation of Distributed Hash Tables in Heterogeneous Clusters (PhD Thesis)

      CDN - a Wireless Communitarian Data Network (Engineering Project)

      PAM iButton - a Linux PAM module for Dallas Semiconductors iButtons (Small Project)

      S3L - a Statelless Secure Socket Layer (MsC Thesis)

      IQS - an Intelligent Query System (End Course Project)

      WinMSP - a Stack Machine simulator for Windows 3.x (End Course Project)



  •   Domus - Co-Operation of Distributed Hash Tables in Heterogeneous Clusters (PhD Thesis)
  • PhD Thesis Abstract:

    Distributed Data Structures (DDSs) as an approach to Distributed Storage are adequate to applications that require high storage capacity, scalability and availability. At the same time, DDSs present simple and familiar interfaces that allow shorter development cycles.

    In a cluster environment, shared by multiple users and applications with dynamic requisites, and built on different hardware generations (with different computing, communication and storage power), the need to simultaneously and efficiently operate several DDSs by user applications presents the scientific and technological challenge embraced by this thesis.

    This thesis presents the proposals and the results achieved during the study of the models and development of the platform that supports the Domus architecture for the {\it co-operation} of multiple Distributed Hash Tables (DHTs) in shared and heterogeneous clusters.

    The platform supports several classes of attributes and operations on DHTs allowing, among other possibilities, the administrative definition of per DHT node boundaries and storage technologies, or the deactivation/reactivation of DHTs. In addition, Domus DHTs are managed by dynamic load balancing mechanisms which ensure certain service levels (like storage space or access performance) and optimize the utilization of cluster resources.

    The architecture builds on specific models for the {\it partitioning} and {\it lookup} of a DHT address space. The {\it partitioning} models ensure optimal distribution of the number of DHT buckets per node, for a dynamic number of DHT nodes, and support the different scenarios that arise from the combination of Static/Dynamic Hashing, with Homogeneous/Heterogeneous Distributions. The quality of the distribution is tuneable under Dynamic Hashing, and repartitioning involves $O(1)$ nodes of the DHT under Homogeneous Distributions.

    With regard to the {\it lookup} problem, a set of {\it accelerated routing algorithms} were designed for distributed lookup, both for DeBruijn and Chord topologies, in order to deal with the discontinuous DHT partitions generated by our partitioning models. The algorithms explore the availability of multiple routing tables per DHT node with the aim of reducing the lookup cost with full graphs, in which the vertexes are all the DHT buckets, towards the reference lookup cost with sparse graphs, in which the vertexes are all the DHT nodes. The best lookup algorithms ensure a lookup cost of 70\% to 90\% of the reference cost.

    Related links:



  •   CDN - a Wireless Communitarian Data Network
  • The city of Bragança was pioneer in the context of the portuguese Digital Cities Program. The Bragança - Digital City (BDC) initiative started formally in the 22nd of February of 1999, with twelve projects from public and private local institutions covering several areas of the so-called Information Society, with an ultimate goal: "to reduce interiority costs".

    The Communitarian Data Network (CDN) project is one of the leading projects of the BDC initiative, having provided, since April 2000, a common data communications backbone and shared Internet access, between partners. In other words, the CDN is an IEEE 802.11b Wireless Metropolitan Area Network, linking every partner of the BDC initiative in a kind of Intranet with a single common gateway to the Internet.

    Although based on new technology, with very recent legal context, wireless private networks are expanding in Portugal. However, the CDN was, as far as we know, the very first case in the portuguese Digital Cities scenario, having set up a wireless metropolitan network. The first phase of the project interconnected eight partners of the BDC initiative, but the network welcomes other organizations interested in developing the local Information Society.

    Related links:



  •   PAM iButton - a Linux PAM module for Dallas Semiconductors iButtons
  • PAM iButton implements a Linux PAM module providing Authentication (auth) and Password (password) services for the DS1993 Dallas Semiconductors iButton.

    Currently, the software only supports the "login" and "passwd" commands via properly configuring /etc/pam.d/login and /etc/pam.d/passwd. It may work with other PAM-aware applications but it hasn't been tested to do so.

    The package also offers an autologin feature: a patched version of mingetty allows for the use of an iButton to automatically login at selected terminal lines.

    You may download the latest version (2.1 alfa for RedHat 6.x) from here [ ]. For a more detailed description of this software please check the README file [ ].



  •   S3L - a Statelless Secure Socket Layer (MsC Thesis)
  • MsC Thesis Abstract:
    "This work presents S3L, a typical application-layer API providing security services (Privacy, Authentication, Integrity and Sequencing - against replay attacks -) immediately above the Berkeley sockets programming interface with which shares great resemblance, both in syntatic and in semantic ways. S3L allows migration, with a minimal effort, for non-secure Berkeley sockets based applications to a more secure operation mode where the exchange of security items (e.g., keys, algorithms, sequencing data, authentication codes, etc.) happens in an almost completely stateless way. As long as an initial run of the proposed Skeyx protocol takes place (allowing for the secure exchange of Diffie-Hellman non-certified public keys) then, any future contacts between two communicating entities can take place, both over connectionless (IP/UDP) - including multicast mode - and connection-oriented (TCP) protocols, without a prior secure session establishment phase. Security items specific for each packet travel side by side with user data and the unique (but mandatory) run of the Skeyx protocol takes place transparently, on-the-fly. Benchmarking proves that, although relying on software based encryption, the benefits derived from the extra qualities of service available upon the use of the S3L API surpass the inevitable overhead introduced."

    Related links:



  •   IQS - an Intelligent Query System for the SOUR project
  • In 1989, the SOUR (SOftware Use And Reuse) project put together some members of the Olivetti consortium (Systena SPA, Syntax Sistemi Software e OIS Ricerca) and INESC (the main portuguese investigation institute in Computer Engineering).

    SOUR main goals were:

    • "...to extend re-use techniques to the whole development process";
    • "...transforming re-use from a handicraft activity to an industrial procedure...";
    • "the construction of tools to facilitate the capture, manipulation and retrieval of this [know-how of the individual programmers and system analysts who work for them]...";

    IQS (Intelligent Query System) is a SOUR application level tool allowing for search of software objects from the SOUR repository so that they may be reused.

    IQS is an intelligent query system because it provides additional features beyond the ones we commonly find in a query system:

    • an assisted mode assures syntactic and semantic assistance during the query process by means of a permanently validated GUI which guides the user through the construction and resolution of the query; this way, the results subset is progressively filtered as the query is being constructed;
    • a batch mode is also provided, matching the need for the resolution of a large number of queries without interactive control;
    • results from past queries may be reused during the same IQS sessions or they may be saved for reuse in further IQS sessions; this is made possible through an History mechanism;
    • exploits the fuzziness of the SOUR's CTS (Concept Thesaurus Subsystem) allowing for the placement of queries with a probabilistic approach regarding object description;

    IQS code is unavailable due to copyright retrictions but you may download some documentation:



  • WinMSP - a Virtual Stack Machine simulator for Windows 3.x
  • MSP (Most Simple Possible) is an assembly-like language used to program a Virtual Stack Machine. This machine is purely Virtual because it is entirely simulated by the WinMSP tool. Also, it is a Stack machine because none registers are available (besides the Program Counter and the Stack Pointer, of course), and so the stack must be used instead.

    The MSP language has a very small set of instructions, with syntax and semantics very easy to learn and understand, making it a good first approach to the Computer Science student. Further learning of the classic programming languages (Pascal, C, C++, Java, ...) will be easier because important concepts such as variables, pointers, code, input and output, have been previously introduced, via MSP, all of them with proper visual representations inside the WinMSP environment.

    The WinMSP tool provides an IDE for the coding, debugging and execution of MSP programs. Coding may be done in an assisted mode, a wizard-like feature that assures the syntactic correctness of the program. A non-assisted mode is also provided, similar to a text editor. Debugging is possible via breakpoints or by executing the program in step-by-step mode. Execution speed may also be defined. The main memory, stack and register (PC, SP, input, output) contents may be visually followed as the program flows.

    WinMSP was programmed in Borland C++ 3.1 for Windows 3.x, by me and my coleague Jorge Santos. It was used, for some time, at University of Minho, and later at ESTiG-IPB. You can download the latest version (1.2a) from here [ ].

    Addendum: as of June 2007, there is a new cross-platform version, entirelly in Python, currently in beta testing; a public version will be availabe soon.


[ Home ]