My thesis project is related to localization of mobile devices, and acoustic signal processing. We are developing a system with
the aim of computing relative positions of nearby mobile devices (such as smartphones) using a small number of acoustic signal
transmissions emitted by a subset of the participating devices. The result would be shown on the initiator user's screen as a
radar-like map of the user's surroundings, including both nearby users who carry devices, and nearby smart objects that
advertise themselves wirelessly.

From mid-March to the end of June 2015, I did a research internship at the National Institute of Informatics in Tokyo where
I worked on a project related to acoustic signal processing under the supervision of Assoc. Prof. Nobutaka Ono.
The objective of my internship was the implementation of Nobutaka Ono's Harmonic-Percussive Sound Separation (HPSS)
effect as an extension for Audacity (a popular open-source sound processing tool). The purpose of HPSS is to separate a music
track into harmonic and percussive components (both of which are considered useful signals). In addition, I also worked on
adding an HPSS-based vocal separation effect as a new effect for Audacity, the purpose of which is to separate vocal
components from non-vocal components in a music track.

EnCore is a mobile social applications research project that leverages rich contextual data available on modern mobile devices (e.g., location, activity, nearby devices) to provide social services to users. Existing systems require that users share their sensitive data with app providers in order to get access to these services. Our aim is to enable building such applications while protecting the privacy of users. The main concept in our system is that of “encounters”: a period of co-location between two devices. For each encounter, a cryptographic handshake is performed, which yields a unique shared secret that can be used for secure communication. The capabilities of the resulting system are sufficient to enable communication among people who encountered each other in the past by referring to the encounter. Unless two users explicitly agree by linking their devices, the system does not exchange any linkable information, neither during the encounter handshake nor during communication.

We have also built an Android application called Context on top of EnCore in order to demonstrate the feasibility of our design. Context maintains a private record of the user’s activities and social encounters, and allows users to communicate, share, collaborate, organize and search information and contacts using events. In our system, events are socially meaningful gatherings of people, or, in other words, named sets of encounters. We integrated our app with Facebook and implemented events as Facebook events. The contextual information we collect, including location, calendar events, Facebook event and social encounters, is visualized on the GUI. The app consists of approximately 30000 lines of code, most of which is written in Java.

The following diagram shows the high-level architecture of our system. The Bluetooth device discovery module (at the bottom) detects nearby Bluetooth devices, performs encounter handshakes with them in the background, and reports them to the EnCore platform. The EnCore platform manages all data collection services running in the background, stores the collected data in a database, and notifies applications about certain events (e.g., when a new encounter starts) via Android intents. This data is also exposed via a content provider-based API. The graphical frontend is our Context application mentioned above. It reads the data that has to be displayed from the EnCore Platform database via the content provider-based API. In order to display human-readable location labels, it contacts a reverse geocoder service such as Google Maps. For communication-related requests and notifications, it contacts Facebook. Privacy preferences are determined by the Context app (based on geofence events) and are propagated down to the Bluetooth discovery module through the EnCore Platform.

Feldspar project (2009-2011)

Location

Eötvös Loránd University (Budapest, Hungary)

Collaborators

Ericsson, Chalmers University of Technology (Göteborg, Sweden)

Programming languages

Mainly Haskell; some Java, C# and C99

Platform

Windows, Linux

Keywords

Functional programming languages, compiler design, C code generation

Feldspar stands for “Functional Embedded Language for DSP and PARallelism”. In this research project, our goal was to define a high-level language (called Feldspar) that allows the description of signal processing algorithms. The Feldspar language is a functional language based on Haskell. We developed a prototype compiler that generates ISO C99 code for programs written in Feldspar. Feldspar is an embedded language: we reused the existing type system of Haskell to generate a graph representation of the Feldspar code (called core language), which we use for generating the C code.

One of my main contributions to this project was the implementation of a transformation framework that allowed developers to define optimization plugins on the generated C code. The framework provides the code related to traversing the abstract syntax tree (which is common to most plugins), and allows the developer to focus on what to do when the graph traversal reaches a certain AST node. I also developed a Java tool to generate the code of this framework (ca. 1000 lines of Haskell code) automatically based on an abstract description of the AST structure, in order to keep up with frequent changes in the AST structure. In addition, I implemented a program in .NET C# that ran the C code generated for various DSP filters and provided a visualization of the input and output signals in real time.

Our goal was to design a new, decentralized peer-to-peer system that provides improved stability and anonymity. The correctness and efficiency of most of our algorithms are theoretically proven. We have also developed a simulator program to verify the correctness of our calculations. The constructed network uses a position-based routing strategy, and, due to the presence of unstructured, random edges, the hop count needed for a packet to reach its destination is logarithmic in the number of peers. The out-degree of individual peers is also logarithmic in the number of peers. We presented a general method for anonymous requesting of data that works with position-based routing in an infinite Euclidean space, and which guarantees the anonymity of the requester node in the sense that the requester cannot be identified within a group of nodes. We proposed a general method for anonymous communication using two or more overlay layers. We showed how it is possible to build a simple data storage layer on top of our proposed system.

BSc thesis: Optimization and visualization of peer-to-peer traffic

One of the main parts of my thesis was the design and implementation of a GUI-based simulator application designed for visualizing (especially BitTorrent-based) peer-to-peer networks. The app supported an ad-hoc wireless and a wired network model. The wireless model, in which peers also had a geographical position, used a form of position-based routing. One could interactively add, remove and change the location of peers, or change the parameters of the network algorithms, even when a simulation was in progress. The application also provided real-time statistics for any selected peer and for the network as a whole. We used the simulator to examine how the network behaves under various conditions, e.g., when a set of peers suddenly disappear, or when certain (potentially malicious) peers consistently transfer corrupted data. As a result, we discovered several interesting aspects of the dynamics of peer-to-peer networks (especially in the wireless model), and found several ways to improve their performance.