The Interface Ecology Lab is a supportive community of developers dedicated to human-centered computing, object-oriented design, and open source software. We are engaged in cutting-edge research that visualizes and embodies social and semantic information, with multi-touch interaction, for use in games, creativity support tools, interactive art, and other digital media. Google Summer of Code (GSoC) Internships enable students located anywhere to collaborate with us in developing open source software.
BigSemantics is a language and architecture for defining, extracting, manipulating, exchanging, and presenting semantic data (metadata) in desktop, mobile, and cloud applications. With BigSemantics, developers author application-independent, reusable code blocks in the meta-metadata language, which are called wrappers, to specify data models, extraction rules, presentation rules, and semantic actions for metadata. The architecture allows you to easily obtain structural semantic data from many template-based web sites, and conveniently operate on semantic data through native classes and objects. It comes with a large, yet growing repository of wrappers, supporting a wide range of commonly used web sites and services, such as weather forecasts, Google Books, Amazon Products, games, movies, blog posts, RSS, tweets, and pinboards. We are working on supporting more and more web sites and information types. Checkout the BigSemantics Wiki for more explanations, scenarios, and tutorials. Also checkout our example web application that uses BigSemantics that presents expandable semantic data.
The foundation of our software is S.IM.PL (Support for Information Mapping in Programming Languages), the best-in-class open source framework for developing distributed programs across programming languages that share and store complex data structures. Its great for writing programs that connect iOS and WPF clients to Java servers.
This summer's projects involve BigSemantics and S.IM.PL:
Find our application template at the bottom of this page. Applications are strictly due on May 3 19:00 UTC (4 pm Central Daylight Time), and must be submitted through Google GSoC site; specify Interface Ecology Lab @ Texas A&M University as the organization. Google will pay each participating student $5000 for the summer.
Applications for Projects M1-M5 require you to author a meta-metadata wrapper. Fork the BigSemanticsWrapperRepository to author your new wrappers, and submit your products through github pull request. See the BigSemantics Wiki for instructions on setting up a development environment and tutorials on authoring wrappers.
Subscribe to BigSemantics developers group, and s.im.pl api developers group to see our history and ask questions.
IRC channel: irc://irc.freenode.net/ecologylab.
Mentor: Tom White
Working across multiple programming languages is often a painful experience. De/Serialization of data across languages often requires lengthy boilerplate code prone to failures. Serialization of graphs and cycles is often impossible or hard to accomplish. Additionally, it is radically hard to port software and validate that those ports work correctly.
Fortunately, it doesn't have stay this way. S.IM.PL (Support for Information Mapping between Programming Languages) is an architecture that promises to fix these problems; we'd love to hire a developer to help us implement it in JavaScript. Our lab uses S.IM.PL as the foundation for some of our research projects; when you're done implementing it, you'll be able to use it as a foundation for your own projects!
Through the course of this project, you will develop a JavaScript-based implementation of S.IM.PL. You'll be able to follow many of the patterns from the reference implementation of S.IM.PL. Your implementation, of course, will also include a robust suite of tests to validate its correctness! Additionally, you'll work on combining S.IM.PL with some of our other tools, such as BigSemantics, to help validate and improve the value of your implementation.
Some of these use S.IM.PL-specific terminology, feel free to read our documentation or contact us for more details.
The architecture has a decent number of small pieces that, once all implemented, give you a complete, robust cross-language type system. We'll help you through the entire process! All you need to provide are your skills (an understanding of type systems, Javascript, and a bit of Java knowledge to understand the reference implementation), and your desire to develop! For more questions, contact us on IRC (#ecologylab on irc.freenode.net) or send us an email.
Mentor: Rhema Linder
Working across multiple programming languages is often a painful experience. De/Serialization of data across languages often requires lengthy boilerplate code prone to failures. Serialization of graphs and cycles is often impossible or hard to accomplish. Additionally, it is radically hard to port software and validate that those ports work correctly.
Fortunately, it doesn't have stay this way. S.IM.PL (Support for Information Mapping between Programming Languages) is an architecture that promises to fix these problems; we'd love to hire a developer to help us implement it in Python. Our lab uses S.IM.PL as the foundation for some of our research projects; when you're done implementing it, you'll be able to use it as a foundation for your own projects!
Through the course of this project, you will develop a JavaScript-based implementation of S.IM.PL. You'll be able to follow many of the patterns from the reference implementation of S.IM.PL. Your implementation, of course, will also include a robust suite of tests to validate its correctness! Additionally, you'll work on combining S.IM.PL with some of our other tools, such as BigSemantics, to help validate and improve the value of your implementation.
Some of these use S.IM.PL-specific terminology, feel free to read our documentation or contact us for more details.
The architecture has a decent number of small pieces that, once all implemented, give you a complete, robust cross-language type system. We'll help you through the entire process! All you need to provide are your skills (an understanding of type systems, Python, and a bit of Java knowledge to understand the reference implementation), and your desire to develop! For more questions, contact us on IRC (#ecologylab on irc.freenode.net) or send us an email.
Mentor: Nic Lupfer
The Managing Web Semantics in JavaScript project focuses on extracting, understanding, and visualizing web semantics(metadata) within a web applications or browser plugins. The deliverables of this project are centered around increasing the stability, functionality, and interoperability of the Metadata Extractor browser plugin and the In-Context Expander (ICE) dynamic interface in HTML5.
The Metadata Extractor is a browser plugin which parses the DOM of web pages as your browse to extract metadata using the BigSemantics meta-metadata language. Currently available for Chrome and Firefox the plugin exposes the extracted metadata to other web or desktop applications through HTML5 data injection on DataTransfer events.
ICE is a dynamic interface which renders web semantics in HTML5. The interface allows for users to browse and navigate to linked web semantics. The student will design and create new dynamic interfaces. Different dynamic interfaces will share significant implementation with ICE but should be novel in how they visualize the data and how the user navigates to connected web semantics.
This project is part of the Interface Ecology Lab's open source BigSemantics toolkit , specifically BigSemantics JavaScript.
Mentor: Andruid Kerne
This project develops popular perspectives in web semantics in order to involve the general public, especially young people, in new experiences of collecting, presenting, and sharing information. Curation is the process of developing a conceptual focus, and selecting and connecting significant information that expresses the chosen concepts. Each REU student assigned to this project will identify a cultural area significant to her / him, and work on the curation of semantic information in this area. Examples of potential popular culture areas include fashion, sports, music, entertainment, skateboarding, DIY, crafts, design, and dance.
The goal of this semantics curation is to make information in these popular culture areas available to people in new ways, to catalyze new expressions, uses, and communities involving the information. Curating semantics involves identifying cultural areas of information on the web that matter to particular groups of people, defining data structures to best represent this information, identifying template-driven web sites that publish data that can be used to instantiate the data structures, and defining XPath and regular expressions that extract information from the web sites. This involves using the Interface Ecology Lab's open source BigSemantics toolkit and ICE presentation tool.
The project involves using social media to coalesce user communities around new visual semantic presentations in the area of popular culture that the student curates.
More than one student can work on this project, assuming that each works on a different area of popular culture. These areas and their associated students can fruitfully intersect.
Mentor: Andruid Kerne
We need methods to facilitate presenting rich heterogeneous metadata on maps. Rich metadata consists of descriptions and relational associative links, derived from web pages, such as a movie, its actors and their movies, and a historical site, its significant events and artifacts, and other related events, sites, and artifacts.
The Interface Ecology Lab's open source BigSemantics project has developed tools for wrappers that represent the data models for rich metadata, extraction rules for particular web sites and other sources, and hints for presentation. A repository of wrappers covers many popular web sites. BigSemantics also already includes components for presenting this rich metadata in JavaScript, Java, and C# / WinRT. The ICE presentation tool is an example.
This project will develop tools and examples for representing rich metadata instances, each associated with a GPS location, on maps, to be known as rich placemarks. The instances of metadata for places that go on the map could be curated in advance, or collected ad hoc by drag and drop. This will be accomplished by integrating BigSemantics, ICE, and OpenStreetMaps (and perhaps Google Maps).
The developer needs experience with HTML5, JSON, and interaction design. Source code is organized with Git.
Mentor: Yin Qu
This project develops a scalable data storage and indexing backend for the BigSemantics service. The Interface Ecology Lab developed the BigSemantics service as open source software to support extracting, representing and presenting semantic data on the web in desktop, mobile, and cloud applications (BigSemantics Wiki). The developed system will provide the service with a scalable backend to store accessed web pages and extracted semantic data, to improve performance. It will also automatically construct indexes and aggregations on relevant fields. The storage and indexing backend will support critical interactions with semantic data needed for planning and doing disaster response, such as filtering, searching, ranking, and faceted browsing.
The student assigned to this project will need to build on existing techniques to develop the system and connect it to the BigSemantics service, under guidance. This involves learning the code structures and APIs of BigSemantics and the service project developed by the Interface Ecology Lab, designing proper interfaces and APIs to abstract the new module, and invoking the backend data store like CouchDB when needed by the service. By the end of the summer, the student should develop a demo web application that uses the storage and indexing functionalities, as a validation.
The Interface Ecology Lab will provide a virtual Linux environment for the student to develop this server-side system. The resulting software will be included in the BigSemantics service release, available to the public as open source software.
The student will learn the architecture and implementation of modern web-based services, and the use of services in advanced interaction technologies. S/he will work in a team of active developers and researchers, participate in conversations, and involve in the process of producing open source software.
Please use the following format and guidelines when preparing your application
Describe your previous experience in software or hardware development, and what skills you bring to the table. Tell us what brings you to the open-source development community. Explain how open source fits with your other pursuits in life, academic or otherwise.
2 to 3 paragraphs describing your motivation for working on the project you have chosen. What you expect to gain from working on the project, why you are interested, and what you believe to be the expected benefits to the open-source community.
In roughly a page of text, breakdown your selected project into a set of milestones or deliverables and set realistic timetables for accomplishing these deliverables. Include a GANTT chart showing your planned progress over the summer. Explain the deliverables that are "must-haves", as well as expanding on future work that you may or may not accomplish, time permitting. Keep in mind that some things may take longer than you originally anticipated, so be sure and include contingency plans for such circumstances. This is the heart of your proposal.
Write a short paragraph detailing how you plan on keeping in communication with your project mentor and ensuring that your deliverables are on time. Will you have weekly Skype meetings? Is email your preferred method of communication? How do you plan to keep us informed of both progress as well as problems?
For each project, please share us a programming project or pieces of programming work that you have done before. For example, a GitHub or Google Code project that you have done for your class, or links to patches you submitted to open source project(s). The project or code sample will be used solely for us to evaluate your programming skills.
For projects M1-M5, you should also submit a meta-metadata wrapper that you have authored, along with an exmaple URL that extracts metadata from it. You should author the wrapper by forking the BigSemanticsWrapperRepository project, and submit your wrapper through GitHub Pull Requests. If you need help, contact us at IRC or via email.
Anything else that you want to let us know about yourself, about the project, or any other information you think would help your application should be included as well. This includes other projects you may have worked on, code samples you are particularly proud of, academic publications, your personal blog, software development experience, education, etc. Remember, you are trying to sell yourself as the right person for the job! Anything that would help convice us of that should be in your application, including its associated web pages.