text:
@inproceedings{10.1145/3251330,
author = {Wilson, Andy},
title = {Session Details: Keynote Address},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3251330},
doi = {10.1145/3251330},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
numpages = {1},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622178,
author = {Macknik, Stephen L. and Martinez-Conde, Susana},
title = {Interactive Viscosity},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622178},
doi = {10.1145/1622176.1622178},
abstract = {Your conscious experience is not a function of the world, it is a function of the neural networks of your brain. Therefore, the biology of the brain and consciousness is as fundamental to understanding the universe, as we know it, as the high-energy physics of subatomic particles. This is especially true for the study of sensory and cognitive illusions, since they represent effects that clearly stand out as not representing the real world. That is, since illusions don't match reality we can know that by studying illusions we are studying exactly what the brain is actually doing, and not just what we think the brain should be doing. Your brain does a staggering amount of pragmatic self-dealing guesswork and outright confabulation in order to construct the highly imperfect mental simulation of reality known as "consciousness." This is not to say that objective reality isn't "out there" in a very real sense--but no one lives there. No one's ever even been there for a visit. Ironically, the fact that consciousness feels like a solid, robust, fact-rich transcript of reality is just one of the countless illusions your brain creates for itself.Illusions are not errors of the brain. Far from it. Illusions arise from processes that are critical to our survival. Our brains have developed illusory processes so that we may experience the world in a ready-to-consume manner. Remove the machinery of illusion, and you unwind the entire tapestry of human awareness. Illusions are those perceptual experiences that do not match the physical reality. They are therefore exquisite tools with which to analyze the neural correlates of human perception and consciousness. Neuroscientists have long known that they can only be sure of where they stand, in terms of correlating neural responses to awareness, when they correlate the awareness of an illusion to the brain's response, specifically because of the illusions' mismatch with reality. The study of illusions is therefore of critical importance to the understanding of the basic mechanisms of sensory perception and conscious awareness.If you've ever seen a good magician perform, you know how thrilling it is to watch the impossible happening before your eyes. The laws of physics, probability, psychology and common sense--the four trusty compass points in your mental map of reality--are suddenly turned into liabilities. Objects and people appear, vanish, levitate, transpose, transform, and with all your smarts you can't imagine how it's being done. Magicians are the premier artists of attention and awareness, and they manipulate our cognition like clay on a potter's wheel.And the mechanisms underlying magic perception have implications for our daily lives. The magical arts work because humans have hardwired processes of attention and awareness that are hackable. By understanding how magicians hack our brains, we can better understand how we work.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {1–2},
numpages = {2},
keywords = {illusions, magic, the mind},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/3251331,
author = {Perlin, Ken},
title = {Session Details: We Have Contact!},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3251331},
doi = {10.1145/3251331},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
numpages = {1},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622180,
author = {Wigdor, Daniel and Williams, Sarah and Cronin, Michael and Levy, Robert and White, Katie and Mazeev, Maxim and Benko, Hrvoje},
title = {Ripples: Utilizing per-Contact Visualizations to Improve User Interaction with Touch Displays},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622180},
doi = {10.1145/1622176.1622180},
abstract = {We present Ripples, a system which enables visualizations around each contact point on a touch display and, through these visualizations, provides feedback to the user about successes and errors of their touch interactions. Our visualization system is engineered to be overlaid on top of existing applications without requiring the applications to be modified in any way, and functions independently of the application's responses to user input. Ripples reduces the fundamental problem of ambiguity of feedback when an action results in an unexpected behaviour. This ambiguity can be caused by a wide variety of sources. We describe the ambiguity problem, and identify those sources. We then define a set of visual states and transitions needed to resolve this ambiguity, of use to anyone designing touch applications or systems. We then present the Ripples implementation of visualizations for those states, and the results of a user study demonstrating user preference for the system, and demonstrating its utility in reducing errors.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {3–12},
numpages = {10},
keywords = {tabletop, touch, fat fingers, feedback ambiguity, no touch left behind, multi-touch, precision input},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622181,
author = {Moscovich, Tomer},
title = {Contact Area Interaction with Sliding Widgets},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622181},
doi = {10.1145/1622176.1622181},
abstract = {We show how to design touchscreen widgets that respond to a finger's contact area. In standard touchscreen systems a finger often appears to touch several screen objects, but the system responds as though only a single pixel is touched. In contact area interaction all objects under the finger respond to the touch. Users activate control widgets by sliding a movable element, as though flipping a switch. These Sliding Widgets resolve selection ambiguity and provide designers with a rich vocabulary of self-disclosing interaction mechanism. We showcase the design of several types of Sliding Widgets, and report study results showing that the simplest of these widgets, the Sliding Button, performs on-par with medium-sized pushbuttons and offers greater accuracy for small-sized buttons.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {13–22},
numpages = {10},
keywords = {interactive surfaces, touchscreen, touch input},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622182,
author = {Wang, Feng and Cao, Xiang and Ren, Xiangshi and Irani, Pourang},
title = {Detecting and Leveraging Finger Orientation for Interaction with Direct-Touch Surfaces},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622182},
doi = {10.1145/1622176.1622182},
abstract = {Current interactions on direct-touch interactive surfaces are often modeled based on properties of the input channel that are common in traditional graphical user interfaces (GUI) such as x-y coordinate information. Leveraging additional information available on the surfaces could potentially result in richer and novel interactions. In this paper we specifically explore the role of finger orientation. This property is typically ignored in touch-based interactions partly because of the ambiguity in determining it solely from the contact shape. We present a simple algorithm that unambiguously detects the directed finger orientation vector in real-time from contact information only, by considering the dynamics of the finger landing process. Results of an experimental evaluation show that our algorithm is stable and accurate. We then demonstrate how finger orientation can be leveraged to enable novel interactions and to infer higher-level information such as hand occlusion or user position. We present a set of orientation-aware interaction techniques and widgets for direct-touch surfaces.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {23–32},
numpages = {10},
keywords = {direct-touch surface, orientation aware interface, finger orientation},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/3251332,
author = {Jacob, Rob},
title = {Session Details: Hold Me, Squeeze Me},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3251332},
doi = {10.1145/3251332},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
numpages = {1},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622184,
author = {Villar, Nicolas and Izadi, Shahram and Rosenfeld, Dan and Benko, Hrvoje and Helmes, John and Westhues, Jonathan and Hodges, Steve and Ofek, Eyal and Butler, Alex and Cao, Xiang and Chen, Billy},
title = {Mouse 2.0: Multi-Touch Meets the Mouse},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622184},
doi = {10.1145/1622176.1622184},
abstract = {In this paper we present novel input devices that combine the standard capabilities of a computer mouse with multi-touch sensing. Our goal is to enrich traditional pointer-based desktop interactions with touch and gestures. To chart the design space, we present five different multi-touch mouse implementations. Each explores a different touch sensing strategy, which leads to differing form-factors and hence interactive possibilities. In addition to the detailed description of hardware and software implementations of our prototypes, we discuss the relative strengths, limitations and affordances of these novel input devices as informed by the results of a preliminary user study.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {33–42},
numpages = {10},
keywords = {surface computing, multi-touch, novel hardware, desktop computing, input devices, mouse},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622185,
author = {Sato, Toshiki and Mamiya, Haruko and Koike, Hideki and Fukuchi, Kentaro},
title = {PhotoelasticTouch: Transparent Rubbery Tangible Interface Using an LCD and Photoelasticity},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622185},
doi = {10.1145/1622176.1622185},
abstract = {PhotoelasticTouch is a novel tabletop system designed to intuitively facilitate touch-based interaction via real objects made from transparent elastic material. The system utilizes vision-based recognition techniques and the photoelastic properties of the transparent rubber to recognize deformed regions of the elastic material. Our system works with elastic materials over a wide variety of shapes and does not require any explicit visual markers. Compared to traditional interactive surfaces, our 2.5 dimensional interface system enables direct touch interaction and soft tactile feedback. In this paper we present our force sensing technique using photoelasticity and describe the implementation of our prototype system. We also present three practical applications of PhotoelasticTouch, a force-sensitive touch panel, a tangible face application, and a paint application.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {43–50},
numpages = {8},
keywords = {tabletop interfaces, interactive surfaces, direct manipulation, multi-touch, photoelasticity},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622186,
author = {Hook, Jonathan and Taylor, Stuart and Butler, Alex and Villar, Nicolas and Izadi, Shahram},
title = {A Reconfigurable Ferromagnetic Input Device},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622186},
doi = {10.1145/1622176.1622186},
abstract = {We present a novel hardware device based on ferromagnetic sensing, capable of detecting the presence, position and deformation of any ferrous object placed on or near its surface. These objects can include ball bearings, magnets, iron filings, and soft malleable bladders filled with ferrofluid. Our technology can be used to build reconfigurable input devices -- where the physical form of the input device can be assembled using combinations of such ferrous objects. This allows users to rapidly construct new forms of input device, such as a trackball-style device based on a single large ball bearing, tangible mixers based on a collection of sliders and buttons with ferrous components, and multi-touch malleable surfaces using a ferrofluid bladder. We discuss the implementation of our technology, its strengths and limitations, and potential application scenarios.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {51–54},
numpages = {4},
keywords = {multi-touch, tangibles, malleable surface, reconfigurable input device, ferromagnetic sensing},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622187,
author = {Dietz, Paul H. and Eidelson, Benjamin and Westhues, Jonathan and Bathiche, Steven},
title = {A Practical Pressure Sensitive Computer Keyboard},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622187},
doi = {10.1145/1622176.1622187},
abstract = {A pressure sensitive computer keyboard is presented that independently senses the force level on every depressed key. The design leverages existing membrane technologies and is suitable for low-cost, high-volume manufacturing. A number of representative applications are discussed.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {55–58},
numpages = {4},
keywords = {force pressure sensitive keyboard},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/3251333,
author = {Marks, Joe},
title = {Session Details: The Third Dimension},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3251333},
doi = {10.1145/3251333},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
numpages = {1},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622189,
author = {Bae, Seok-Hyung and Balakrishnan, Ravin and Singh, Karan},
title = {EverybodyLovesSketch: 3D Sketching for a Broader Audience},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622189},
doi = {10.1145/1622176.1622189},
abstract = {We present EverybodyLovesSketch, a gesture-based 3D curve sketching system for rapid ideation and visualization of 3D forms, aimed at a broad audience. We first analyze traditional perspective drawing in professional practice. We then design a system built upon the paradigm of ILoveSketch, a 3D curve drawing system for design professionals. The new system incorporates many interaction aspects of perspective drawing with judicious automation to enable novices with no perspective training to proficiently create 3D curve sketches. EverybodyLovesSketch supports a number of novel interactions: tick-based sketch plane selection, single view definition of arbitrary extrusion vectors, multiple extruded surface sketching, copy-and-project of 3D curves, freeform surface sketching, and an interactive perspective grid. Finally, we present a study involving 49 high school students (with no formal artistic training) who each learned and used the system over 11 days, which provides detailed insights into the popularity, power and usability of the various techniques, and shows our system to be easily learnt and effectively used, with broad appeal.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {59–68},
numpages = {10},
keywords = {sketch surface, gestural interface, learnability, 3D sketching, perspective sketching, axis widget},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622190,
author = {Reisman, Jason L. and Davidson, Philip L. and Han, Jefferson Y.},
title = {A Screen-Space Formulation for 2D and 3D Direct Manipulation},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622190},
doi = {10.1145/1622176.1622190},
abstract = {Rotate-Scale-Translate (RST) interactions have become the de facto standard when interacting with two-dimensional (2D) contexts in single-touch and multi-touch environments. Because the use of RST has thus far focused almost entirely on 2D, there are not yet standard techniques for extending these principles into three dimensions. In this paper we describe a screen-space method which fully captures the semantics of the traditional 2D RST multi-touch interaction, but also allows us to extend these same principles into three-dimensional (3D) interaction. Just like RST allows users to directly manipulate 2D contexts with two or more points, our method allows the user to directly manipulate 3D objects with three or more points. We show some novel interactions, which take perspective into account and are thus not available in orthographic environments. Furthermore, we identify key ambiguities and unexpected behaviors that arise when performing direct manipulation in 3D and offer solutions to mitigate the difficulties each presents. Finally, we show how to extend our method to meet application-specific control objectives, as well as show our method working in some example environments.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {69–78},
numpages = {10},
keywords = {multi-touch, direct manipulation, constraints, pressure, optimization},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/3251334,
author = {Miller, Rob},
title = {Session Details: New Solutions for Old Problems},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3251334},
doi = {10.1145/3251334},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
numpages = {1},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622192,
author = {Cherniavsky, Neva and Chon, Jaehong and Wobbrock, Jacob O. and Ladner, Richard E. and Riskin, Eve A.},
title = {Activity Analysis Enabling Real-Time Video Communication on Mobile Phones for Deaf Users},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622192},
doi = {10.1145/1622176.1622192},
abstract = {We describe our system called MobileASL for real-time video communication on the current U.S. mobile phone network. The goal of MobileASL is to enable Deaf people to communicate with Sign Language over mobile phones by compressing and transmitting sign language video in real-time on an off-the-shelf mobile phone, which has a weak processor, uses limited bandwidth, and has little battery capacity. We develop several H.264-compliant algorithms to save system resources while maintaining ASL intelligibility by focusing on the important segments of the video. We employ a dynamic skin-based region-of-interest (ROI) that encodes the skin at higher quality at the expense of the rest of the video. We also automatically recognize periods of signing versus not signing and raise and lower the frame rate accordingly, a technique we call variable frame rate (VFR).We show that our variable frame rate technique results in a 47% gain in battery life on the phone, corresponding to an extra 68 minutes of talk time. We also evaluate our system in a user study. Participants fluent in ASL engage in unconstrained conversations over mobile phones in a laboratory setting. We find that the ROI increases intelligibility and decreases guessing. VFR increases the need for signs to be repeated and the number of conversational breakdowns, but does not affect the users' perception of adopting the technology. These results show that our sign language sensitive algorithms can save considerable resources without sacrificing intelligibility.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {79–88},
numpages = {10},
keywords = {sign language, variable frame rate, mobileasl, region-of-interest, video compression, computer vision},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622193,
author = {Smaragdis, Paris},
title = {User Guided Audio Selection from Complex Sound Mixtures},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622193},
doi = {10.1145/1622176.1622193},
abstract = {In this paper we present a novel interface for selecting sounds in audio mixtures. Traditional interfaces in audio editors provide a graphical representation of sounds which is either a waveform, or some variation of a time/frequency transform. Although with these representations a user might be able to visually identify elements of sounds in a mixture, they do not facilitate object-specific editing (e.g. selecting only the voice of a singer in a song). This interface uses audio guidance from a user in order to select a target sound within a mixture. The user is asked to vocalize (or otherwise sonically represent) the desired target sound, and an automatic process identifies and isolates the elements of the mixture that best relate to the user's input. This way of pointing to specific parts of an audio stream allows a user to perform audio selections which would have been infeasible otherwise.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {89–92},
numpages = {4},
keywords = {audio interfaces},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622194,
author = {Wobbrock, Jacob Otto},
title = {TapSongs: Tapping Rhythm-Based Passwords on a Single Binary Sensor},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622194},
doi = {10.1145/1622176.1622194},
abstract = {TapSongs are presented, which enable user authentication on a single "binary" sensor (e.g., button) by matching the rhythm of tap down/up events to a jingle timing model created by the user. We describe our matching algorithm, which employs absolute match criteria and learns from successful logins. We also present a study of 10 subjects showing that after they created their own TapSong models from 12 examples (< 2 minutes), their subsequent login attempts were 83.2% successful. Furthermore, aural and visual eavesdropping of the experimenter's logins resulted in only 10.7% successful imposter logins by subjects. Even when subjects heard the target jingles played by a synthesized piano, they were only 19.4% successful logging in as imposters. These results are attributable to subtle but reliable individual differences in people's tapping, which are supported by prior findings in music psychology.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {93–96},
numpages = {4},
keywords = {jingles, rhythm, temporal strings, mobile devices, songs, binary sensors, user authentication, password entry, tapping},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622195,
author = {Bernstein, Michael and Tan, Desney and Smith, Greg and Czerwinski, Mary and Horvitz, Eric},
title = {Collabio: A Game for Annotating People within Social Networks},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622195},
doi = {10.1145/1622176.1622195},
abstract = {We present Collabio, a social tagging game within an online social network that encourages friends to tag one another. Collabio's approach of incentivizing members of the social network to generate information about each other produces personalizing information about its users. We report usage log analysis, survey data, and a rating exercise demonstrating that Collabio tags are accurate and augment information that could have been scraped online.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {97–100},
numpages = {4},
keywords = {social tagging, human computation, social computing},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/3251335,
author = {Wobbrock, Jacob},
title = {Session Details: Mobile Magic},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3251335},
doi = {10.1145/3251335},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
numpages = {1},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622197,
author = {Ni, Tao and Baudisch, Patrick},
title = {Disappearing Mobile Devices},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622197},
doi = {10.1145/1622176.1622197},
abstract = {In this paper, we extrapolate the evolution of mobile devices in one specific direction, namely miniaturization. While we maintain the concept of a device that people are aware of and interact with intentionally, we envision that this concept can become small enough to allow invisible integration into arbitrary surfaces or human skin, and thus truly ubiquitous use. This outcome assumed, we investigate what technology would be most likely to provide the basis for these devices, what abilities such devices can be expected to have, and whether or not devices that size can still allow for meaningful interaction. We survey candidate technologies, drill down on gesture-based interaction, and demonstrate how it can be adapted to the desired form factors. While the resulting devices offer only the bare minimum in feedback and only the most basic interactions, we demonstrate that simple applications remain possible. We complete our exploration with two studies in which we investigate the affordance of these devices more concretely, namely marking and text entry using a gesture alphabet.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {101–110},
numpages = {10},
keywords = {miniaturization, ubicomp, mobile device, input device, interaction technique, gesture, wearable, sensor},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622198,
author = {Yatani, Koji and Truong, Khai Nhut},
title = {SemFeel: A User Interface with Semantic Tactile Feedback for Mobile Touch-Screen Devices},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622198},
doi = {10.1145/1622176.1622198},
abstract = {One of the challenges with using mobile touch-screen devices is that they do not provide tactile feedback to the user. Thus, the user is required to look at the screen to interact with these devices. In this paper, we present SemFeel, a tactile feedback system which informs the user about the presence of an object where she touches on the screen and can offer additional semantic information about that item. Through multiple vibration motors that we attached to the backside of a mobile touch-screen device, SemFeel can generate different patterns of vibration, such as ones that flow from right to left or from top to bottom, to help the user interact with a mobile device. Through two user studies, we show that users can distinguish ten different patterns, including linear patterns and a circular pattern, at approximately 90% accuracy, and that SemFeel supports accurate eyes-free interactions.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {111–120},
numpages = {10},
keywords = {multiple vibration motors, touch screen, mobile device, tactile feedback},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622199,
author = {Harrison, Chris and Hudson, Scott E.},
title = {Abracadabra: Wireless, High-Precision, and Unpowered Finger Input for Very Small Mobile Devices},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622199},
doi = {10.1145/1622176.1622199},
abstract = {We present Abracadabra, a magnetically driven input technique that offers users wireless, unpowered, high fidelity finger input for mobile devices with very small screens. By extending the input area to many times the size of the device's screen, our approach is able to offer a high C-D gain, enabling fine motor control. Additionally, screen occlusion can be reduced by moving interaction off of the display and into unused space around the device. We discuss several example applications as a proof of concept. Finally, results from our user study indicate radial targets as small as 16 degrees can achieve greater than 92% selection accuracy, outperforming comparable radial, touch-based finger input.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {121–124},
numpages = {4},
keywords = {finger input, gesture, magnetic, interaction techniques, mobile devices, small screens, cursor, pointing},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622200,
author = {Li, Frank Chun Yat and Dearman, David and Truong, Khai N.},
title = {Virtual Shelves: Interactions with Orientation Aware Devices},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622200},
doi = {10.1145/1622176.1622200},
abstract = {Triggering shortcuts or actions on a mobile device often requires a long sequence of key presses. Because the functions of buttons are highly dependent on the current application's context, users are required to look at the display during interaction, even in many mobile situations when eyes-free interactions may be preferable. We present Virtual Shelves, a technique to trigger programmable shortcuts that leverages the user's spatial awareness and kinesthetic memory. With Virtual Shelves, the user triggers shortcuts by orienting a spatially-aware mobile device within the circular hemisphere in front of her. This space is segmented into definable and selectable regions along the phi and theta planes. We show that users can accurately point to 7 regions on the theta and 4 regions on the phi plane using only their kinesthetic memory. Building upon these results, we then evaluate a proof-of-concept prototype of the Virtual Shelves using a Nokia N93. The results show that Virtual Shelves is faster than the N93's native interface for common mobile phone tasks.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {125–128},
numpages = {4},
keywords = {spatially aware devices, kinesthetic memory, mobile computing, spatial memory},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/3251336,
author = {Baudisch, Patrick},
title = {Session Details: Waiter, Can You Please Bring Me a Fork?},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3251336},
doi = {10.1145/3251336},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
numpages = {1},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622202,
author = {Kane, Shaun K. and Avrahami, Daniel and Wobbrock, Jacob O. and Harrison, Beverly and Rea, Adam D. and Philipose, Matthai and LaMarca, Anthony},
title = {Bonfire: A Nomadic System for Hybrid Laptop-Tabletop Interaction},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622202},
doi = {10.1145/1622176.1622202},
abstract = {We present Bonfire, a self-contained mobile computing system that uses two laptop-mounted laser micro-projectors to project an interactive display space to either side of a laptop keyboard. Coupled with each micro-projector is a camera to enable hand gesture tracking, object recognition, and information transfer within the projected space. Thus, Bonfire is neither a pure laptop system nor a pure tabletop system, but an integration of the two into one new nomadic computing platform. This integration (1) enables observing the periphery and responding appropriately, e.g., to the casual placement of objects within its field of view, (2) enables integration between physical and digital objects via computer vision, (3) provides a horizontal surface in tandem with the usual vertical laptop display, allowing direct pointing and gestures, and (4) enlarges the input/output space to enrich existing applications. We describe Bonfire's architecture, and offer scenarios that highlight Bonfire's advantages. We also include lessons learned and insights for further development and use.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {129–138},
numpages = {10},
keywords = {micro-projector, laptop, gestures, peripheral display, tangible bits, object recognition, ambient interaction, tabletop, surface, extended display, computer vision},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622203,
author = {Hilliges, Otmar and Izadi, Shahram and Wilson, Andrew D. and Hodges, Steve and Garcia-Mendoza, Armando and Butz, Andreas},
title = {Interactions in the Air: Adding Further Depth to Interactive Tabletops},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622203},
doi = {10.1145/1622176.1622203},
abstract = {Although interactive surfaces have many unique and compelling qualities, the interactions they support are by their very nature bound to the display surface. In this paper we present a technique for users to seamlessly switch between interacting on the tabletop surface to above it. Our aim is to leverage the space above the surface in combination with the regular tabletop display to allow more intuitive manipulation of digital content in three-dimensions. Our goal is to design a technique that closely resembles the ways we manipulate physical objects in the real-world; conceptually, allowing virtual objects to be 'picked up' off the tabletop surface in order to manipulate their three dimensional position or orientation. We chart the evolution of this technique, implemented on two rear projection-vision tabletops. Both use special projection screen materials to allow sensing at significant depths beyond the display. Existing and new computer vision techniques are used to sense hand gestures and postures above the tabletop, which can be used alongside more familiar multi-touch interactions. Interacting above the surface in this way opens up many interesting challenges. In particular it breaks the direct interaction metaphor that most tabletops afford. We present a novel shadow-based technique to help alleviate this issue. We discuss the strengths and limitations of our technique based on our own observations and initial user feedback, and provide various insights from comparing, and contrasting, our tabletop implementations},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {139–148},
numpages = {10},
keywords = {holoscreen, 3D graphics, depth-sensing cameras, switchable diffusers, interactive surfaces, 3D, surfaces, computer vision, tabletop},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622204,
author = {Hartmann, Bj\"{o}rn and Morris, Meredith Ringel and Benko, Hrvoje and Wilson, Andrew D.},
title = {Augmenting Interactive Tables with Mice & Keyboards},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622204},
doi = {10.1145/1622176.1622204},
abstract = {This note examines the role traditional input devices can play in surface computing. Mice and keyboards can enhance tabletop technologies since they support high fidelity input, facilitate interaction with distant objects, and serve as a proxy for user identity and position. Interactive tabletops, in turn, can enhance the functionality of traditional input devices: they provide spatial sensing, augment devices with co-located visual content, and support connections among a plurality of devices. We introduce eight interaction techniques for a table with mice and keyboards, and we discuss the design space of such interactions.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {149–152},
numpages = {4},
keywords = {surface computing, interactive tabletops},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622205,
author = {McCallum, David C. and Irani, Pourang},
title = {ARC-Pad: Absolute+relative Cursor Positioning for Large Displays with a Mobile Touchscreen},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622205},
doi = {10.1145/1622176.1622205},
abstract = {We introduce ARC-Pad (Absolute+Relative Cursor pad), a novel technique for interacting with large displays using a mobile phone's touchscreen. In ARC-Pad we combine ab-solute and relative cursor positioning. Tapping with ARC-Pad causes the cursor to jump to the corresponding location on the screen, providing rapid movement across large distances. For fine position control, users can also clutch using relative mode. Unlike prior hybrid cursor positioning techniques, ARC-Pad does not require an explicit switch between relative and absolute modes. We compared ARC-Pad with the relative positioning commonly found on touchpads. Users were given a target acquisition task on a large display, and results showed that they were faster with ARC-Pad, without sacrificing accuracy. Users welcomed the benefits associated with ARC-Pad.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {153–156},
numpages = {4},
keywords = {clutching, touchpad, cursor, absolute position},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/3251337,
author = {Andr\'{e}, Paul},
title = {Session Details: Meat-Space},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3251337},
doi = {10.1145/3251337},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
numpages = {1},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622207,
author = {Solovey, Erin Treacy and Girouard, Audrey and Chauncey, Krysta and Hirshfield, Leanne M. and Sassaroli, Angelo and Zheng, Feng and Fantini, Sergio and Jacob, Robert J.K.},
title = {Using FNIRS Brain Sensing in Realistic HCI Settings: Experiments and Guidelines},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622207},
doi = {10.1145/1622176.1622207},
abstract = {Because functional near-infrared spectroscopy (fNIRS) eases many of the restrictions of other brain sensors, it has potential to open up new possibilities for HCI research. From our experience using fNIRS technology for HCI, we identify several considerations and provide guidelines for using fNIRS in realistic HCI laboratory settings. We empirically examine whether typical human behavior (e.g. head and facial movement) or computer interaction (e.g. keyboard and mouse usage) interfere with brain measurement using fNIRS. Based on the results of our study, we establish which physical behaviors inherent in computer usage interfere with accurate fNIRS sensing of cognitive state information, which can be corrected in data analysis, and which are acceptable. With these findings, we hope to facilitate further adoption of fNIRS brain sensing technology in HCI research.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {157–166},
numpages = {10},
keywords = {fNIRS, human cognition, functional near-infrared spectroscopy, brain-computer interface, BCI},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622208,
author = {Saponas, T. Scott and Tan, Desney S. and Morris, Dan and Balakrishnan, Ravin and Turner, Jim and Landay, James A.},
title = {Enabling Always-Available Input with Muscle-Computer Interfaces},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622208},
doi = {10.1145/1622176.1622208},
abstract = {Previous work has demonstrated the viability of applying offline analysis to interpret forearm electromyography (EMG) and classify finger gestures on a physical surface. We extend those results to bring us closer to using muscle-computer interfaces for always-available input in real-world applications. We leverage existing taxonomies of natural human grips to develop a gesture set covering interaction in free space even when hands are busy with other objects. We present a system that classifies these gestures in real-time and we introduce a bi-manual paradigm that enables use in interactive systems. We report experimental results demonstrating four-finger classification accuracies averaging 79% for pinching, 85% while holding a travel mug, and 88% when carrying a weighted bag. We further show generalizability across different arm postures and explore the tradeoffs of providing real-time visual feedback.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {167–176},
numpages = {10},
keywords = {muscle-computer interface, interaction, input, electromyography (EMG)},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622209,
author = {Saponas, T. Scott and Kelly, Daniel and Parviz, Babak A. and Tan, Desney S.},
title = {Optically Sensing Tongue Gestures for Computer Input},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622209},
doi = {10.1145/1622176.1622209},
abstract = {Many patients with paralyzing injuries or medical conditions retain the use of their cranial nerves, which control the eyes, jaw, and tongue. While researchers have explored eye-tracking and speech technologies for these patients, we believe there is potential for directly sensing explicit tongue movement for controlling computers. In this paper, we describe a novel approach of using infrared optical sensors embedded within a dental retainer to sense tongue gestures. We describe an experiment showing our system effectively discriminating between four simple gestures with over 90% accuracy. In this experiment, users were also able to play the popular game Tetris with their tongues. Finally, we present lessons learned and opportunities for future work.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {177–180},
numpages = {4},
keywords = {tongue-computer interface, gestures, infrared},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/3251338,
author = {Izadi, Shahram},
title = {Session Details: Keynote Address},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3251338},
doi = {10.1145/3251338},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
numpages = {1},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622211,
author = {Paulos, Eric},
title = {The Rise of the Expert Amateur: DIY Culture and Citizen Science},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622211},
doi = {10.1145/1622176.1622211},
abstract = {We are at an important technological inflection point. Most of our computing systems have been designed and built by professionally trained experts (i.e. us--computer scientists, engineers, and designers) for use in specific domains and to solve explicit problems. Artifacts often called "user manuals" traditionally prescribed the appropriate usage of these tools and implied an acceptable etiquette for interaction and experience. A fringe group of individuals usually labeled "hackers" or "nerds" have challenged this producer-consumer model of technology by hacking novel hardware and software features to "improve" our research and products while a similar creative group of technicians called "artists" have re-directed the techniques, tools, and tenets of accepted technological usage away from their typical manifestations in practicality and product. Over time the technological artifacts of these fringe groups and the support for their rhetoric have gained them a foothold into computing culture and eroded the established power discontinuities within the practice of computing research. We now expect our computing tools to be driven by an architecture of open participation and democracy that encourages users to add value to their tools and applications as they use them. Similarly, the bar for enabling the design of novel, personal computing systems and "hardware remixes" has fallen to the point where many non-experts and novices are readily embracing and creating fascinating and ingenious computing artifacts outside of our official and traditionally sanctioned academic research communities.But how have we as "expert" practitioners been influencing this discussion? By constructing a practice around the design and development of technology for task based and problem solving applications, we have unintentionally established such work as the status quo for the human computing experience. We have failed in our duty to open up alternate forums for technology to express itself and touch our lives beyond productivity and efficiency. Blinded by our quest for "smart technologies" we have forgotten to contemplate the design of technologies to inspire us to be smarter, more curious, and more inquisitive. We owe it to ourselves to rethink the impact we desire to have on this historic moment in computing culture. We must choose to participate in and perhaps lead a dialogue that heralds an expansive new acceptable practice of designing to enable participation by experts and non-experts alike. We are in the milieu of the rise of the "expert amateur".We must change our mantra: "not just usability but usefulness and relevancy to our world, its citizens, and our environment".We must design for the world and what matters.This means discussing our computing research alongside new keywords such as the economy, the environment, activism, poverty, healthcare, famine, homelessness, literacy, religion, and politics.This talk will explore the design territory and potential opportunities for all of us to collaborate and benefit as a society from this cultural movement.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {181–182},
numpages = {2},
keywords = {citizen science, DIY culture},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/3251339,
author = {Weld, Dan},
title = {Session Details: A.I./U.I.},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3251339},
doi = {10.1145/3251339},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
numpages = {1},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622213,
author = {Yeh, Tom and Chang, Tsung-Hsiang and Miller, Robert C.},
title = {Sikuli: Using GUI Screenshots for Search and Automation},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622213},
doi = {10.1145/1622176.1622213},
abstract = {We present Sikuli, a visual approach to search and automation of graphical user interfaces using screenshots. Sikuli allows users to take a screenshot of a GUI element (such as a toolbar button, icon, or dialog box) and query a help system using the screenshot instead of the element's name. Sikuli also provides a visual scripting API for automating GUI interactions, using screenshot patterns to direct mouse and keyboard events. We report a web-based user study showing that searching by screenshot is easy to learn and faster to specify than keywords. We also demonstrate several automation tasks suitable for visual scripting, such as map navigation and bus tracking, and show how visual scripting can improve interactive help systems previously proposed in the literature.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {183–192},
numpages = {10},
keywords = {automation, online help, image search},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622214,
author = {Matejka, Justin and Li, Wei and Grossman, Tovi and Fitzmaurice, George},
title = {CommunityCommands: Command Recommendations for Software Applications},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622214},
doi = {10.1145/1622176.1622214},
abstract = {We explore the use of modern recommender system technology to address the problem of learning software applications. Before describing our new command recommender system, we first define relevant design considerations. We then discuss a 3 month user study we conducted with professional users to evaluate our algorithms which generated customized recommendations for each user. Analysis shows that our item-based collaborative filtering algorithm generates 2.1 times as many good suggestions as existing techniques. In addition we present a prototype user interface to ambiently present command recommendations to users, which has received promising initial user feedback.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {193–202},
numpages = {10},
keywords = {recommender},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622215,
author = {Bigham, Jeffrey P. and Kaminsky, Ryan S. and Nichols, Jeffrey},
title = {Mining Web Interactions to Automatically Create Mash-Ups},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622215},
doi = {10.1145/1622176.1622215},
abstract = {The deep web contains an order of magnitude more information than the surface web, but that information is hidden behind the web forms of a large number of web sites. Metasearch engines can help users explore this information by aggregating results from multiple resources, but previously these could only be created and maintained by programmers. In this paper, we explore the automatic creation of metasearch mash-ups by mining the web interactions of multiple web users to find relations between query forms on different web sites. We also present an implemented system called TX2 that uses those connections to search multiple deep web resources simultaneously and integrate the results in context in a single results page. TX2 illustrates the promise of constructing mash-ups automatically and the potential of mining web interactions to explore deep web resources.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {203–212},
numpages = {10},
keywords = {web forms, deep web, meta-search, mash-ups, programming-by-example},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/3251340,
author = {Chi, Ed},
title = {Session Details: I Walk the Line},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3251340},
doi = {10.1145/3251340},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
numpages = {1},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622217,
author = {Holz, Christian and Feiner, Steven},
title = {Relaxed Selection Techniques for Querying Time-Series Graphs},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622217},
doi = {10.1145/1622176.1622217},
abstract = {Time-series graphs are often used to visualize phenomena that change over time. Common tasks include comparing values at different points in time and searching for specified patterns, either exact or approximate. However, tools that support time-series graphs typically separate query specification from the actual search process, allowing users to adapt the level of similarity only after specifying the pattern. We introduce relaxed selection techniques, in which users implicitly define a level of similarity that can vary across the search pattern, while creating a search query with a single-gesture interaction. Users sketch over part of the graph, establishing the level of similarity through either spatial deviations from the graph, or the speed at which they sketch (temporal deviations). In a user study, participants were significantly faster when using our temporally relaxed selection technique than when using traditional techniques. In addition, they achieved significantly higher precision and recall with our spatially relaxed selection technique compared to traditional techniques.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {213–222},
numpages = {10},
keywords = {time-series data, similarity queries},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622218,
author = {Chen, Billy and Neubert, Boris and Ofek, Eyal and Deussen, Oliver and Cohen, Michael F.},
title = {Integrated Videos and Maps for Driving Directions},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622218},
doi = {10.1145/1622176.1622218},
abstract = {While onboard navigation systems are gaining in importance, maps are still the medium of choice for laying out a route to a destination and for way finding. However, even with a map, one is almost always more comfortable navigating a route the second time due to the visual memory of the route. To make the first time navigating a route feel more familiar, we present a system that integrates a map with a video automatically constructed from panoramic imagery captured at close intervals along the route. The routing information is used to create a variable speed video depicting the route. During playback of the video, the frame and field of view are dynamically modulated to highlight salient features along the route and connect them back to the map. A user interface is demonstrated to allow exploration of the combined map, video, and textual driving directions. We discuss the construction of the hybrid map and video interface. Finally, we report the results of a study that provides evidence of the effectiveness of such a system for route following.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {223–232},
numpages = {10},
keywords = {map, video, routes, driving directions},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622219,
author = {Kong, Nicholas and Agrawala, Maneesh},
title = {Perceptual Interpretation of Ink Annotations on Line Charts},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622219},
doi = {10.1145/1622176.1622219},
abstract = {Asynchronous collaborators often use freeform ink annotations to point to visually salient perceptual features of line charts such as peaks or humps, valleys, rising slopes and declining slopes. We present a set of techniques for interpreting such annotations to algorithmically identify the corresponding perceptual parts. Our approach is to first apply a parts-based segmentation algorithm that identifies the visually salient perceptual parts in the chart. Our system then analyzes the freeform annotations to infer the corresponding peaks, valleys or sloping segments. Once the system has identified the perceptual parts it can highlight them to draw further attention and reduce ambiguity of interpretation in asynchronous collaborative discussions.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {233–236},
numpages = {4},
keywords = {freeform ink annotation, visual perception, visualization, pointing, deixis, selection, line charts},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/3251341,
author = {Gajos, Krzysztof},
title = {Session Details: The Tangled Web We Weave},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3251341},
doi = {10.1145/3251341},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
numpages = {1},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622221,
author = {Teevan, Jaime and Dumais, Susan T. and Liebling, Daniel J. and Hughes, Richard L.},
title = {Changing How People View Changes on the Web},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622221},
doi = {10.1145/1622176.1622221},
abstract = {The Web is a dynamic information environment. Web content changes regularly and people revisit Web pages frequently. But the tools used to access the Web, including browsers and search engines, do little to explicitly support these dynamics. In this paper we present DiffIE, a browser plug-in that makes content change explicit in a simple and lightweight manner. DiffIE caches the pages a person visits and highlights how those pages have changed when the person returns to them. We describe how we built a stable, reliable, and usable system, including how we created compact, privacy-preserving page representations to support fast difference detection. Via a longitudinal user study, we explore how DiffIE changed the way people dealt with changing content. We find that much of its benefit came not from exposing expected change, but rather from drawing attention to unexpected change and helping people build a richer understanding of the Web content they frequent.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {237–246},
numpages = {10},
keywords = {revisitation, web browsing, change, web dynamics, dynamic information, re-finding},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622222,
author = {Amershi, Saleema and Fogarty, James and Kapoor, Ashish and Tan, Desney},
title = {Overview Based Example Selection in End User Interactive Concept Learning},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622222},
doi = {10.1145/1622176.1622222},
abstract = {Interaction with large unstructured datasets is difficult because existing approaches, such as keyword search, are not always suited to describing concepts corresponding to the distinctions people want to make within datasets. One possible solution is to allow end users to train machine learning systems to identify desired concepts, a strategy known as interactive concept learning. A fundamental challenge is to design systems that preserve end user flexibility and control while also guiding them to provide examples that allow the machine learning system to effectively learn the desired concept. This paper presents our design and evaluation of four new overview based approaches to guiding example selection. We situate our explorations within CueFlik, a system examining end user interactive concept learning in Web image search. Our evaluation shows our approaches not only guide end users to select better training examples than the best performing previous design for this application, but also reduce the impact of not knowing when to stop training the system. We discuss challenges for end user interactive concept learning systems and identify opportunities for future research on the effective design of such systems.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {247–256},
numpages = {10},
keywords = {end-user interactive concept learning},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

@inproceedings{10.1145/1622176.1622223,
author = {Karger, David R. and Ostler, Scott and Lee, Ryan},
title = {The Web Page as a WYSIWYG End-User Customizable Database-Backed Information Management Application},
year = {2009},
isbn = {9781605587455},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/1622176.1622223},
doi = {10.1145/1622176.1622223},
abstract = {Dido is an application (and application development environment) in a web page. It is a single web page containing rich structured data, an AJAXy interactive visualizer/editor for that data, and a "metaeditor" for WYSIWYG editing of the visualizer/editor. Historically, users have been limited to the data schemas, visualizations, and interactions offered by a small number of heavyweight applications. In contrast, Dido encourages and enables the end user to edit (not code) in his or her web browser a distinct ephemeral interaction "wrapper" for each data collection that is specifically suited to its intended use. Dido's active document metaphor has been explored before but we show how, given today's web infrastructure, it can be deployed in a small self-contained HTML document without touching a web client or server.},
booktitle = {Proceedings of the 22nd Annual ACM Symposium on User Interface Software and Technology},
pages = {257–260},
numpages = {4},
keywords = {databases, wysiwyg, end user programming},
location = {Victoria, BC, Canada},
series = {UIST '09}
}

license: Unlicense

repository: goyalkaraniit/acm-cr

repo_name: goyalkaraniit/acm-cr

branch_name: refs/heads/main


text:
package subject

import (
	"testing"
	"reflect"
)

func TestLoadSubject(t *testing.T) {
	path := "../../example/subject.csv"
	expect := [][]string{{"A01", "Shibuya Rin", "100"}, {"A02", "", "200"}}

	res, err := LoadSubject(path)

	if !(reflect.DeepEqual(res, expect) && err == nil) {
		t.Errorf("Failed to load and parse csv. result: %s, error: %s", res, err)
	}
}

func TestLoadSubject_LoadError(t *testing.T) {
	path := "/path/to/nowhere.csv"

	res, err := LoadSubject(path)

	if !(res == nil && err != nil) {
		t.Errorf("Failed to raise error properly. result: %s, error: %s", res, err)
	}
}

func TestLoadSubject_ParseError(t *testing.T) {
	path := "/tmp/"

	res, err := LoadSubject(path)

	if !(res == nil && err != nil) {
		t.Errorf("Failed to raise error properly. result: %s, error: %s", res, err)
	}
}

license: MIT

license_type: permissive

branch_name: refs/heads/master

extension: go


text:
string(TIMESTAMP timestamp "[%Y-%m-%d %H:%M:%S] %s" UTC)

string(TIMESTAMP unix_time "%s")

string(TIMESTAMP year "%Y" UTC)
string(TIMESTAMP days "%j" UTC)

# Doing proper date calculations here to verify unix timestamps
# could be error prone.
# At the very least use some safe lower and upper bounds to
# see if we are somewhere in the right region.

math(EXPR years_since_epoch "${year} - 1970")
math(EXPR lower_bound "((${years_since_epoch} * 365) + ${days}) * 86400")
math(EXPR upper_bound "((${years_since_epoch} * 366) + ${days}) * 86400")

if(unix_time GREATER lower_bound AND unix_time LESS upper_bound)
  message("~${unix_time}~")
else()
  message(FATAL_ERROR "${timestamp} unix time not in expected range [${lower_bound}, ${upper_bound}]")
endif()

gha_license_id: MIT

extension: cmake


text:
@article{Budhathoki-2022-Impacts,
    title = "Impacts of future climate on the hydrology of a transboundary river basin in northeastern North America",
    author = "Budhathoki, Sujata  and
      Rokaya, Prabin  and
      Lindenschmidt, Karl-Erich",
    journal = "Journal of Hydrology, Volume 605",
    volume = "605",
    year = "2022",
    publisher = "Elsevier BV",
    url = "https://aclanthology.org/G22-29001",
    doi = "10.1016/j.jhydrol.2021.127317",
    pages = "127317",
}
@article{Nerantzaki-2022-Assessing,
    title = "Assessing extremes in hydroclimatology: A review on probabilistic methods",
    author = "Nerantzaki, Sofia D.  and
      Papalexiou, Simon Michael",
    journal = "Journal of Hydrology, Volume 605",
    volume = "605",
    year = "2022",
    publisher = "Elsevier BV",
    url = "https://aclanthology.org/G22-29002",
    doi = "10.1016/j.jhydrol.2021.127302",
    pages = "127302",
}

repository: gwf-uwaterloo/gwf-publications

repo_name: gwf-uwaterloo/gwf-publications

gha_language: Python

extension: bib


text:
DESCRIPTION = "System Utilities Based on Sysfs"
HOMEPAGE = "http://linux-diag.sourceforge.net/Sysfsutils.html"
LICENSE = "GPLv2"
PR = "r2"

SRC_URI = "${SOURCEFORGE_MIRROR}/linux-diag/sysfsutils-${PV}.tar.gz"
S = "${WORKDIR}/sysfsutils-${PV}"

inherit autotools

includedir += "/sysfs"

do_stage () {
	oe_libinstall -a -so -C lib libsysfs ${STAGING_LIBDIR}
	install -d ${STAGING_INCDIR}/sysfs
	install -m 0644 ${S}/include/dlist.h ${STAGING_INCDIR}/sysfs
	install -m 0644 ${S}/include/libsysfs.h ${STAGING_INCDIR}/sysfs
}

PACKAGES_prepend = "libsysfs libsysfs-dbg libsysfs-dev "
FILES_libsysfs = "${libdir}/*.so.*"
FILES_libsysfs-dev = "${libdir}/* ${includedir}"
FILES_libsysfs-dbg += "${libdir}/.debug"
FILES_${PN}-dbg += "${bindir}/.debug"

extension: bb


text:
package proxy

import (
	"reflect"
	"testing"
)

func TestParseConfigurationJSON(t *testing.T) {
	cases := []struct {
		json     string
		expected Configuration
	}{
		{
			`{}`,
			Configuration{},
		},
		{
			`
{
    "proxyHost": "http://www.proxy-bastard.com",
    "proxyPort": "80",
	"socksProxyHost": "socks.proxy-bastard.com",
    "socksProxyPort": "1085",
    "nonProxyHosts": [
		"localhost",
		"127.0.0.1"
	],
    "targets": {
		"git": {
			"enabled": true
		},
		"npm": {
			"enabled": true,
			"files": [
				"~/.npmrc"
			]
		},
		"apm": {
			"enabled": true,
			"files": [
				"~/.atom/.apmrc"
			]
		},
        "shell": {
			"enabled": true,
			"javaOpts": true,
			"files": [
				"~/.zshrc",
				"~/.bashrc"
			]
		},
        "maven": {
			"enabled": true,
			"files": [
				"~/.m2/settings.xml"
			]
		},
		"ssh": {
			"enabled": true,
			"files": [
				"~/.ssh/config"
			]
		},
		"subversion": {
			"enabled": true,
			"files": [
				"~/.subversion/servers"
			]
		},
		"boot2docker": {
			"enabled": true,
			"ssh_host": "192.168.59.103",
			"ssh_port": "22",
			"ssh_key": "~/.ssh/id_boot2docker"
		},
		"stunnel": {
			"enabled": true,
			"kill_process": true,
			"files": [
				"~/.stunnel/stunnel.conf"
			]
		},
		"docker-machine": {
			"enabled": true,
			"hosts": [
				"dev",
				"otherdev"
			]
		},
		"bower": {
			"enabled": true,
			"files": [
				"~/.bowerrc"
			]
		}
    }
}
            `,
			Configuration{
				ProxyHost:      "http://www.proxy-bastard.com",
				ProxyPort:      "80",
				NonProxyHosts:  []string{"localhost", "127.0.0.1"},
				SOCKSProxyHost: "socks.proxy-bastard.com",
				SOCKSProxyPort: "1085",
				Targets: &TargetsConfiguration{
					Git: &GitConfiguration{
						Enabled: true,
					},
					NPM: &NPMConfiguration{
						Enabled: true,
						Files:   []string{"~/.npmrc"},
					},
					APM: &APMConfiguration{
						Enabled: true,
						Files:   []string{"~/.atom/.apmrc"},
					},
					Shell: &ShellConfiguration{
						Enabled:  true,
						JavaOpts: true,
						Files:    []string{"~/.zshrc", "~/.bashrc"},
					},
					Maven: &MavenConfiguration{
						Enabled: true,
						Files:   []string{"~/.m2/settings.xml"},
					},
					SSH: &SSHConfiguration{
						Enabled: true,
						Files:   []string{"~/.ssh/config"},
					},
					Subversion: &SubversionConfiguration{
						Enabled: true,
						Files:   []string{"~/.subversion/servers"},
					},
					Boot2Docker: &Boot2DockerConfiguration{
						Enabled: true,
						SSHHost: "192.168.59.103",
						SSHPort: "22",
						SSHKey:  "~/.ssh/id_boot2docker",
					},
					Stunnel: &StunnelConfiguration{
						Enabled:     true,
						KillProcess: true,
						Files:       []string{"~/.stunnel/stunnel.conf"},
					},
					DockerMachine: &DockerMachineConfiguration{
						Enabled: true,
						Hosts:   []string{"dev", "otherdev"},
					},
					Bower: &BowerConfiguration{
						Enabled: true,
						Files:   []string{"~/.bowerrc"},
					},
				},
			},
		},
		{
			`
{
	"proxyHost": "http://www.proxy-bastard.com",
	"proxyPort": "80",
	"SOCKSProxyHost": "socks.proxy-bastard.com",
	"SOCKSProxyPort": "1085",
	"nonProxyHosts": [
		"localhost",
		"127.0.0.1"
	]
}
			`,
			Configuration{
				ProxyHost:      "http://www.proxy-bastard.com",
				ProxyPort:      "80",
				SOCKSProxyHost: "socks.proxy-bastard.com",
				SOCKSProxyPort: "1085",
				NonProxyHosts:  []string{"localhost", "127.0.0.1"},
			},
		},
	}
	for _, c := range cases {
		actual := parseConfigurationJSON([]byte(c.json))
		if !reflect.DeepEqual(actual, c.expected) {
			t.Errorf(
				`
Call:
parseConfigurationJson({{input}}) != {{expected}}

Input:
===============
%s
===============

Expected:
===============
%v
===============

Actual:
===============
%v
===============`,
				c.json,
				c.expected,
				actual)
		}
	}
}

repository: andystanton/proxybastard

repo_name: andystanton/proxybastard

branch_name: refs/heads/develop

gha_language: Go


text:
SUMMARY = "The LibreELEC settings addon for KODI"

LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=58a5cc85534ec201eb2e77c3433d309e"

SRCREV = "ce44935c09668da545652b36a72d5f15857f0e18"

PV = "9.0.0"
SRC_URI = "\
	git://github.com/LibreELEC/service.libreelec.settings.git;branch=libreelec-9.2;protocol=https \
	file://0001-src-defaults.py-Adjust-systemd-services.patch \
"

S = "${WORKDIR}/git"

KODIADDONNAME = "service.libreelec.settings"

DEPENDS += " \
	zip-native \
	p8platform \
	kodi-platform \
"

# Doesn't get added automagically, dlopen()?
RDEPENDS_${PN} = " \
	libkodiplatform \
	python-dbus \
	python-pygobject \
	connman \
"

do_compile () {
	oe_runmake addon
}

do_install () {
	install -d ${D}${datadir}/kodi/addons/
	cp -r ${S}/build/${KODIADDONNAME} ${D}${datadir}/kodi/addons/
	install -d ${D}${datadir}/kodi/addons/packages/
	install -m 0644 ${S}/build/${KODIADDONNAME}-${PV}.zip ${D}${datadir}/kodi/addons/packages/
}

INSANE_SKIP_${PN} = "dev-so"
FILES_${PN} += "${datadir}/kodi"
FILES_${PN}-dbg += "${datadir}/kodi/addons/*/.debug/"

repository: leon-anavi/meta-kodi-community

repo_name: leon-anavi/meta-kodi-community


text:
SUMMARY = "Browse for and connect to network shares"
LICENSE = "CC-BY-NC-SA-3.0 | DreamProperty"
LIC_FILES_CHKSUM = "file://src/LICENSE;md5=c4127d21ca0781e51e4886f80a372bc7"
SRCREV = "${@opendreambox_srcrev('a4030d440930d5530bc9eabe4875ac6115403891', d)}"
DEPENDS = "libtirpc nfs-utils python"
PV = "4.4.1"

inherit autotools-brokensep pkgconfig opendreambox-github

export BUILD_SYS
export HOST_SYS
export STAGING_INCDIR
export STAGING_LIBDIR

RDEPENDS_${PN} = " \
    arp-scan \
    python-pysmb \
    python-twisted-core \
    python-xml \
"

require enigma2-plugin.inc

GITHUB_PROJECT = "enigma2-plugin-networkbrowser"

repository: opendreambox/opendreambox

repo_name: opendreambox/opendreambox

branch_name: refs/heads/pyro

gha_license_id: NOASSERTION

gha_language: BitBake


text:
@article{performance:journal,
 author = {Danelutto, Marco and Laforenza, Domenico and Tonellotto, Nicola and Vanneschi, Marco and Zoccolo, Corrado},
 bibmarkers = {Impact Factor (2010) NA CiteScore (2017) 0 SJR (2017) 0.0 SNIP (2017) 0.0 Scopus Cit. 0 Google Cit. 1},
 issn = {1895-1767},
 journal = {Scalable Computing Practice and Experience},
 number = {3},
 pages = {263--275},
 title = {Modeling Stream Communications in Component-based Applications},
 volume = {11},
 year = {2010}
}

repository: khastagir/academic-kickstart

repo_name: khastagir/academic-kickstart


text:
include ibrdtn.inc
DEPENDS += " ibrdtn ibrcommon "
SRC_URI[md5sum] = "4abdc469356f3a50c51f979567c52b1d"
SRC_URI[sha256sum] = "12655518c7772c97094abbd808a1f412ce81dd1889b2ef5ebf5b24845d53289a"

repository: overo/overo-oe-natty

repo_name: overo/overo-oe-natty

branch_name: HEAD


text:
define(['angular'], function () {
    return {
        logDecoratorCallback: ['$delegate', 'logService', function ($delegate, logService) {
            logService.enabled = true;
            var methods = {
                error: function () {
                    if (logService.enabled) {
                        $delegate.error.apply($delegate, arguments);
                        logService.error.apply(null, arguments);
                    }
                },
                log: function () {
                    if (logService.enabled) {
                        $delegate.log.apply($delegate, arguments);
                        logService.log.apply(null, arguments);
                    }
                },
                info: function () {
                    if (logService.enabled) {
                        $delegate.info.apply($delegate, arguments);
                        logService.info.apply(null, arguments);
                    }
                },
                warn: function () {
                    if (logService.enabled) {
                        $delegate.warn.apply($delegate, arguments);
                        logService.warn.apply(null, arguments);
                    }
                }
            };
            return methods;
        }],

        logServiceCallback: [function () {
            var service = {
                error: function () {
                    self.type = 'error';
                    log.apply(self, arguments);
                },
                warn: function () {
                    self.type = 'warn';
                    log.apply(self, arguments);
                },
                info: function () {
                    self.type = 'info';
                    log.apply(self, arguments);
                },
                log: function () {
                    self.type = 'log';
                    log.apply(self, arguments);
                },
                enabled: false,
                logs: []
            };

            var log = function () {

                args = [];
                if (typeof arguments === 'object') {
                    for (var i = 0; i < arguments.length; i++) {
                        arg = arguments[i];
                        var exception = {};
                        exception.message = arg.message;
                        exception.stack = arg.stack;
                        args.push(JSON.stringify(exception));
                    }
                }

                var eventLogDateTime = new Date();
                var logItem = {
                    time: eventLogDateTime,
                    message: args.join('\n'),
                    type: type
                };

                console.log('Custom logger [' + logItem.time + '] ' + logItem.message.toString());
                service.logs.push(logItem);
            };

            return service;
        }],

        logControllerCallback: ['$scope', '$log', function ($scope, $log) {
            $scope.$log = $log;
            $scope.throwError = function () {
                functionThatThrows();
            };

            $scope.throwException = function () {
                throw {
                    message: 'error message'
                };
            };

            $scope.throwNestedException = function () {
                functionThrowsNestedExceptions();
            };

            functionThatThrows = function () {
                var x = y;
            };

            functionThrowsNestedExceptions = function () {
                try {
                    var a = b;
                } catch (e) {
                    try {
                        var c = d;
                    } catch (ex) {
                        $log.error(e, ex);
                    }
                }
            };
        }]
    }
});

//define(['$delegate', 'Logging'], function ($delegate, Logging) {

//});

repository: keensap/easystitch

repo_name: keensap/easystitch

extension: js


text:
@article{zambon2017concept,
  author = {Zambon, Daniele and Alippi, Cesare  and Livi, Lorenzo},
  title={Concept Drift and Anomaly Detection in Graph Streams},
  journal={IEEE Transactions on Neural Networks and Learning Systems},
  year={2018},
  pages={1-14},
  doi={10.1109/TNNLS.2018.2804443},
}


text:
DESCRIPTION = "A lightweight PDF viewer based on gtk and poppler"
HOMEPAGE = "http://www.emma-soft.com/projects/epdfview/"
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
SECTION = "x11/applications"
DEPENDS = "gtk+ poppler"

PR = "r3"

EXTRA_OECONF += "--without-cups"

inherit autotools gettext

SRC_URI = "http://www.emma-soft.com/projects/${BPN}/chrome/site/releases/${BP}.tar.bz2 \
           file://browser_command.patch \
           file://fix-format.patch \
           file://glib-single-include.patch \
           file://swap-colors.patch \
"
SRC_URI[md5sum] = "e50285b01612169b2594fea375f53ae4"
SRC_URI[sha256sum] = "948648ae7c9d7b3b408d738bd4f48d87375b1196cae1129d6b846a8de0f2f8f0"

repository: ExorEmbedded/exor-workspace

repo_name: ExorEmbedded/exor-workspace


text:
require xorg-app-common.inc
DEPENDS += " libxaw libxkbfile "
PR = "${INC_PR}.0"

SRC_URI[archive.md5sum] = "52ad6d8d87577a8ac736ab5488bec210"
SRC_URI[archive.sha256sum] = "e409af0730788aa94ee22711750792546465a8f4729a0084d31a32c3ef0849bd"


text:
package main

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
	"path/filepath"
)

func registerRequest(outputdir string, next http.Handler) http.Handler {
	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		n, ok := r.Context().Value(requestNumberKey).(uint64)
		if !ok {
			log.Fatalln("missing request number")
		}
		request := newRequestFromHTTP(r)
		b, err := json.Marshal(request)
		if err != nil {
			panic(err)
		}
		err = ioutil.WriteFile(filepath.Join(outputdir, fmt.Sprintf("%d.request.json", n)), b, 0666)
		if err != nil {
			panic(err)
		}
		next.ServeHTTP(w, r)
	})
}

repository: rjfonseca/httpmocker

repo_name: rjfonseca/httpmocker


text:
@manuel{201,
    author={TU Dortmund},
    date={2016-12-21}
    }

@online{chemie,
    title={chemie.de},
    date={2016-12-22},
    url={http://www.chemie.de/lexikon/Universelle_Gaskonstante.html}
    }

@online{bleialu,
    title={chemie.de},
    date={2017-02-03},
    url={http://www.chemie.de/lexikon/Liste_der_spezifischen_W%C3%A4rmekapazit%C3%A4ten.html}
    }

@online{graphit,
    title={schweizer.fn},
    date={2017-02-05},
    url={http://www.schweizer-fn.de/stoff/wkapazitaet/wkapazitaet_metall.php}
    }

gha_language: TeX


text:
MACRO(MACI_CONFIG_PY INPUT INTERMEDIATE OUTPUT TARGET)
	# Target names are not allowed to contain slashes
	# so we need to remove them
	STRING(REGEX REPLACE "/" "+" TARGETNAME ${TARGET})

	CONFIGURE_FILE(${INPUT} ${INTERMEDIATE})
	ADD_CUSTOM_COMMAND(
		OUTPUT  ${OUTPUT}
		COMMAND ${CMAKE_HOME_DIRECTORY}/python/ppp.rb
		ARGS    ${INTERMEDIATE}
			${OUTPUT}
		DEPENDS ${INTERMEDIATE})
	ADD_CUSTOM_TARGET(${TARGETNAME}
		ALL DEPENDS ${OUTPUT})
ENDMACRO()

repository: kraused/maci-code

repo_name: kraused/maci-code


text:
@article{tengPredictionEarlyChildhood2015,
 abstract = {Microbiota-based prediction of chronic infections is promising yet not well established. Early childhood caries (ECC) is the most common infection in children. Here we simultaneously tracked microbiota development at plaque and saliva in 50 4-year-old preschoolers for 2 years; children either stayed healthy, transitioned into cariogenesis, or experienced caries exacerbation. Caries onset delayed microbiota development, which is otherwise correlated with aging in healthy children. Both plaque and saliva microbiota are more correlated with changes in ECC severity (dmfs) during onset than progression. By distinguishing between aging- and disease-associated taxa and exploiting the distinct microbiota dynamics between onset and progression, we developed a model, Microbial Indicators of Caries, to diagnose ECC from healthy samples with 70% accuracy and predict, with 81% accuracy, future ECC onsets for samples clinically perceived as healthy. Thus, caries onset in apparently healthy teeth can be predicted using microbiota, when appropriately de-trended for age.},
 author = {Teng, Fei and Yang, Fang and Huang, Shi and Bo, Cunpei and Xu, Zhenjiang and Amir, Amnon and Knight, Rob and Ling, Junqi and Xu, Jian},
 doi = {10.1016/j.chom.2015.08.005},
 file = {/Users/zech/Zotero/storage/43BBX8W5/2015_Teng_et_al_Prediction_of_Early_Childhood_Caries_via_Spatial-Temporal_Variations_of_Oral.pdf},
 issn = {1931-3128},
 journal = {Cell Host & Microbe},
 langid = {english},
 month = {September},
 number = {3},
 pages = {296--306},
 title = {Prediction of Early Childhood Caries via Spatial-Temporal Variations of Oral Microbiota},
 urldate = {2015-09-12},
 volume = {18},
 year = {2015}
}

repository: zxlab/lab-web

repo_name: zxlab/lab-web


text:
package eurekache_test

import (
	"bytes"
	"encoding/gob"
	"testing"
	"time"

	"github.com/stretchr/testify/assert"

	. "github.com/evalphobia/eurekache"
	"github.com/evalphobia/eurekache/memorycache"
)

func TestExtraEurekacheGet(t *testing.T) {
	assert := assert.New(t)

	e := New()
	m := memorycache.NewCacheTTL(1)
	e.SetCacheSources([]Cache{m})

	m.Set("key", "value")

	var ok bool
	var valInt int
	var valStr string

	// int value
	ok = e.Get("key", &valInt)
	assert.False(ok)
	assert.Empty(valInt)

	// string value
	ok = e.Get("key", &valStr)
	assert.True(ok)
	assert.Equal("value", valStr)

	// struct value
	var valItem1, valItem2 Item
	var valNonItem *Eurekache
	valItem1 = Item{
		Value: "val",
	}
	m.Set("item", valItem1)

	ok = e.Get("item", valNonItem)
	assert.False(ok)
	assert.Nil(valNonItem)

	ok = e.Get("item", &valItem2)
	assert.True(ok)
	assert.Equal(valItem1, valItem2)

	// pointer value
	var valPtr1, valPtr2 *Item
	m.Set("item_ptr", &valPtr1)

	ok = e.Get("item_ptr", &valPtr2)
	assert.True(ok)
	assert.Equal(valPtr1, valPtr2)

}

func TestExtraEurekacheGetInterface(t *testing.T) {
	assert := assert.New(t)
	val := "value"

	e := New()
	m := memorycache.NewCacheTTL(1)
	e.SetCacheSources([]Cache{m})
	m.Set("key", val)

	var result interface{}
	var ok bool

	result, ok = e.GetInterface("key")
	assert.True(ok)
	assert.Equal(val, result)

	result, ok = e.GetInterface("nokey")
	assert.False(ok)
	assert.Nil(result)
}

func TestExtraEurekacheGetGobBytes(t *testing.T) {
	assert := assert.New(t)
	val := "value"

	// encode value
	var buf bytes.Buffer
	enc := gob.NewEncoder(&buf)
	err := enc.Encode(val)
	assert.Nil(err)

	e := New()
	m := memorycache.NewCacheTTL(1)
	e.SetCacheSources([]Cache{m})
	m.Set("key", val)

	var b []byte
	var ok bool

	// check gob encoded result
	b, ok = e.GetGobBytes("key")
	assert.True(ok)
	assert.Equal(buf.Bytes(), b)

	// check gob encoded result
	b, ok = e.GetGobBytes("nokey")
	assert.False(ok)
	assert.Empty(b)
}

func TestExtraEurekacheSet(t *testing.T) {
	assert := assert.New(t)
	val := "value"

	e := New()
	m := memorycache.NewCacheTTL(1)
	e.SetCacheSources([]Cache{m})
	e.Set("key", val)

	var item *Item
	var ok bool

	var result string
	ok = m.Get("nokey", &result)
	assert.False(ok)
	assert.Nil(item)

	ok = m.Get("key", &result)
	assert.True(ok)
	assert.Equal(val, result)

}

func TestExtraEurekacheSetExpire(t *testing.T) {
	assert := assert.New(t)
	val := "value"

	e := New()
	m := memorycache.NewCacheTTL(1)
	e.SetCacheSources([]Cache{m})
	e.SetExpire("key", val, 100)

	var result string
	var ok bool

	ok = m.Get("nokey", &result)
	assert.False(ok)
	assert.Empty(result)

	result = ""
	ok = e.Get("key", &result)
	assert.True(ok)
	assert.Equal(val, result)

	result = ""
	time.Sleep(100 * time.Millisecond)
	ok = e.Get("key", &result)
	assert.False(ok)
	assert.Empty(result)
}

repository: evalphobia/eurekache

repo_name: evalphobia/eurekache


text:
SECTION = "devel/chicken"
DESCRIPTION = "libudev bindings"
LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://udev.meta;md5=8cfcdb7a78b723c20fa2203479a50290"
DEPENDS_append_class-cross = " udev-native"
DEPENDS_append_class-crosssdk = " udev-native"
DEPENDS_append_class-nativesdk = " nativesdk-udev"
DEPENDS = " udev"

SRC_URI = "http://code.call-cc.org/egg-tarballs/4/udev/udev-${PV}.tar.gz"

SRC_URI[md5sum] = "8e78fea8cf7ec3240cd1202265a89d15"
SRC_URI[sha256sum] = "b4915e27b395f0410daaf3876cdb3d679c1e56e49ae0fb2b12627fdbcb22483a"

S = "${WORKDIR}/udev-${PV}"

inherit chicken_install

BBCLASSEXTEND = "cross crosssdk nativesdk"

repository: OSSystems/meta-chicken

repo_name: OSSystems/meta-chicken


text:
DESCRIPTION = ".NET Core Runtime, SDK & CLI tools"
HOMEPAGE = "https://www.microsoft.com/net/core"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=42b611e7375c06a28601953626ab16cb"

COMPATIBLE_HOST ?= "x86_64.*-linux"

DEPENDS += "\
    curl \
    zlib \
    util-linux \
    icu \
    openssl \
    libunwind \
"

RDEPENDS_${PN}_class-target += "\
    lttng-ust \
    libgssapi-krb5 \
    libicuuc \
    libicui18n \
"

PR = "r0"

SRC_URI =  "https://download.microsoft.com/download/D/7/2/D725E47F-A4F1-4285-8935-A91AE2FCC06A/dotnet-sdk-2.0.3-linux-x64.tar.gz;downloadfilename=dotnet-${PV}.tar.gz"
SRC_URI[md5sum] = "add756a84292da3a04cbadfc514d2c69"
SRC_URI[sha256sum] = "6c4223094b1e3e93a466c6d91d3aa1053a3b2aef99b63bf45023bda3fca1aede"

S = "${WORKDIR}"

HOST_FXR = "2.0.3"
SHARED_FRAMEWORK = "2.0.3"
SDK = "2.0.3"

PACKAGES = "\
    ${PN} \
    ${PN}-dev \
"

do_configure[noexec] = "1"
do_compile[noexec] = "1"

python do_install () {
    bb.build.exec_func("shell_do_install", d)
    oe.path.make_relative_symlink(d.expand("${D}${bindir}/dotnet"))
}

shell_do_install() {
    install -d ${D}${bindir}
    install -d ${D}${datadir}/dotnet
    install -d ${D}${datadir}/dotnet/host/fxr
    install -d ${D}${datadir}/dotnet/sdk
    install -d ${D}${datadir}/dotnet/shared/Microsoft.NETCore.App

    install -m 0755 ${S}/dotnet ${D}${datadir}/dotnet
    install -m 0644 ${S}/LICENSE.txt ${D}${datadir}/dotnet
    install -m 0644 ${S}/ThirdPartyNotices.txt ${D}${datadir}/dotnet

    cp -r ${S}/sdk/${SDK} ${D}${datadir}/dotnet/sdk
    cp -r ${S}/host/fxr/${HOST_FXR} ${D}${datadir}/dotnet/host/fxr
    cp -r ${S}/shared/Microsoft.NETCore.App/${SHARED_FRAMEWORK} ${D}${datadir}/dotnet/shared/Microsoft.NETCore.App

    # Symlinks
    ln -s ${D}${datadir}/dotnet/dotnet ${D}${bindir}/dotnet
}

FILES_${PN} = "\
    ${bindir} \
    ${datadir}/dotnet/dotnet \
    ${datadir}/dotnet/*.txt \
    ${datadir}/dotnet/host \
    ${datadir}/dotnet/shared \
"

FILES_${PN}-dev = "\
    ${datadir}/dotnet/sdk \
"

RRECOMMENDS_dotnet-dev[nodeprrecs] = "1"

INSANE_SKIP_${PN} = "already-stripped staticdev ldflags libdir"
INSANE_SKIP_${PN}-dev = "libdir"
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"

BBCLASSEXTEND = "native"

repository: iceaway/meta-iot-cloud

repo_name: iceaway/meta-iot-cloud