898 research outputs found

    Directing JavaScript with Arrows (Functional Pearl)

    Get PDF
    JavaScript, being a single-threaded language, makes extensive use of event-driven programming to enable responsive web applications. However, standard approaches to sequencing events are messy, and often lead to code that is difficult to understand and maintain. We have found that arrows, a generalization of monads, are an elegant solution to this problem. Arrows allow us to easily write asynchronous programs in small, modular units of code, and flexibly compose them in many different ways, while nicely abstracting the details of asynchronous program composition. In particular, we show how to use arrows to construct a variety of state machines, such as autoscrollers and drag-and-drop handlers

    Concurrency Analysis in Javascript Programs Using Arrows

    Get PDF
    Concurrency errors are difficult to detect and correct in asynchronous programs such as those implemented in JavaScript. One reason is that it is often difficult to keep track of which parts of the program may execute in parallel and potentially share resources in unexpected, and perhaps unintended, ways. While programming constructs such as promises can help improve the readability of asynchronous JavaScript programs that were traditionally written using callbacks, there are no static tools to identify asynchronous functions that run in parallel, which may potentially cause concurrency errors. In this work, we present a solution for implementing JavaScript programs using a library based on the abstraction of arrows. We enhanced the previous implementation of the arrows library by enabling its use with Node.js and by adding parallel asynchronous path detection. Automated identification of which arrows may execute in parallel helps the programmer narrow down the possible sources of concurrency errors

    Experimental Approaches to the Composition of Interactive Video Game Music

    Get PDF
    This project explores experimental approaches and strategies to the composition of interactive music for the medium of video games. Whilst music in video games has not enjoyed the technological progress that other aspects of the software have received, budgets expand and incomes from releases grow. Music is now arguably less interactive than it was in the 1990’s, and whilst graphics occupy large amounts of resources and development time, audio does not garner the same attention. This portfolio develops strategies and audio engines, creating music using the techniques of aleatoric composition, real-time remixing of existing work, and generative synthesisers. The project created music for three ‘open-form’ games : an example of the racing genre (Kart Racing Pro); an arena-based first-person shooter (Counter-Strike : Source); and a real-time strategy title (0 A.D.). These games represent a cross-section of ‘sandbox’- type games on the market, as well as all being examples of games with open-ended or open-source code

    BOIP: Interactivity Platform

    Get PDF
    For this project, we have implemented an integrated interactive platform tailored for students and professors. Classes at Santa Clara University come in a variety of sizes and styles, with multiple professors teaching multiple students. These professors have different teaching methods that have to cater to students\u27 different learning styles. One of the main features of our platform is a chat room where professors can collect information from their students. Students are able to ask questions about said topic or answer the professor\u27s posted questions about the topic as well as other students\u27 questions. With our platform, we hope to increase the interactivity between student and professor, making keeping up in class a smoother and more active experience. The main technologies implemented in this project are basic web languages: HTML, Javascript, and CSS. One of the main goals of the project was to be as simple as possible to minimize distractions, so we used the Bootstrap framework to keep our site organized and consistent. The backbone of our project is an online database driven by Parse that stores all of our chat log data, our user data, and the Power Point slides required to run our project. We tested this project in multiple classrooms with various class demographics. Results are generally positive, with most student users recommending this system to their other professors. The students enjoyed the comfort of being able to ask questions without anxiety or fear of embarrassment due to our anonymity feature we implemented. The professors greatly appreciated the increased amount of participation that Boip provided as well as their ability to answer questions on the fly without having to interrupt the lecture with students raising their hands. Overall, the tempo of the lectures were greatly increased and the general flow was improved. Some key features that would be helpful if implemented would include a more integrated method to insert Power Point slides and a filtration system for the chatroom. Currently, chatting can get a little out of hand with spam and inappropriate messages. So far we have countered this by having the professor emphasize professionalism before his or her lecture, but a more blunt idea would be to implemented a chat filter that would block inappropriate key words. The second thing that would be helpful is a more integrated method of uploading slides. The method of uploading slides can be tedious as one has to constantly switch tabs to Google Drive to enable permissions and grab the URL of a slideshow, so hopefully in the future adding a friendlier method of adding slides would greatly increase the platform\u27s usability and make it easier on professors

    Learn HTML: A refreshingly fun way to learn the foundations of HTML

    Get PDF
    Learn HTML is an interactive website with the purpose of teaching foundations of HTML. The website was designed to appeal to a teenage audience, ages 15 - 19 years old. The nature of the website diverges away from the typical text based approach utilized in similar applications by abandoning a dependency on the heavy use of text to communicate information. Learn HTML, instead, features a strong use of graphic elements, visual metaphors, and a heavy focus on interactivity, all of which offer the user a visual representation of information. Through interaction with the provided graphic elements and visual metaphors, the user is offered an enjoyable and engaging learning experience through which they are able to seamlessly gain knowledge through means of experiential learning

    HTML5 Game Engine

    Get PDF
    ARM (Adventure Running Machine) is a game engine and editor which can be used to build top-down adventure games without knowing how to program. It includes documentation and tutorials for using the software. Games built utilize the HTML5 canvas for playability in most web browsers

    Live Coding Language Design: PHAD

    Get PDF
    Phad is a live coding environment built for web browsers. Phad strives for minimal syntax, with the purpose of achieving both readability and simplicity targeted to users with no programming or music experience. It is built around the modification of notes and instruments, and the combination of both. The Phad environment was built with the user in mind, offering tutorials, exercises, a playground, and collaborative performance. Users are able to login with a Google Account and save code to our database, making it easy to come back to previous work, or to see what other users have created. The language and system design of Phad was inspired by previous live-coding environments, and was improved iteratively with external feedback as well as our experience at the Algorave
    corecore