PageSourceSearch

https://metaphorofitself.net/evexl-introduction

html metaphorofitself.net collected 2026-10-03 18:50:46 UTC 8,915 bytes, 128 lines download raw bytes

1<!DOCTYPE html>
2
3<html lang="en"><head>
4<meta charset="utf-8"/>
5<meta content="width=device-width, initial-scale=1" name="viewport"/>
6<title>EveXL | Introduction</title>
7<link href="/vendor/bootstrap.min.css" rel="stylesheet"/>
8<link href="/style/main.css" rel="stylesheet"/>
9<script src="/vendor/jquery.min.js"></script>
vendor: 1 bytes, line 9
9
10<script src="/vendor/phaser.min.js"></script>
vendor: 1 bytes, line 10
10
11<script src="/vendor/jquery.scrollTo.min.js"></script>
vendor: 1 bytes, line 11
11
12<script src="/js/codemirror-5.55.0/lib/codemirror.js"></script>
vendor: 1 bytes, line 12
12
13<script src="/js/codemirror-5.55.0/addon/mode/simple.js"></script>
vendor: 1 bytes, line 13
13
14<script src="/js/codemirror-5.55.0/mode/evexl/evexl.js"></script>
vendor: 1 bytes, line 14
14
15<script src="/js/StreamGeneratorScene.js"></script>
vendor: 1 bytes, line 15
15
16<script src="/js/ReadingBuffer.js"></script>
vendor: 1 bytes, line 16
16
17<script src="/js/OutputViewer.js"></script>
vendor: 1 bytes, line 17
17
18<script src="/js/InputBox.js"></script>
vendor: 1 bytes, line 18
18
19<script src="/js/EveXLEvaluator.js"></script>
19<script src="/js/Demo.js"></script>
vendor: 1 bytes, line 19
19
20<script src="/js/evexl/Parser.js"></script>
vendor: 1 bytes, line 20
20
21<script src="/js/main.js"></script>
vendor: 1 bytes, line 21
21
22<script src="/vendor/bootstrap4-toggle.min.js"></script>
22
23<link href="/vendor/bootstrap4-toggle.min.css" rel="stylesheet"/>
24<link href="/js/codemirror-5.55.0/lib/codemirror.css" rel="stylesheet"/>
25<link href="/js/codemirror-5.55.0/theme/evexl.css" rel="stylesheet"/>
26<meta content="An introduction to EveXL, a domain-specific language for detecting events through intervals of time and temporal relations." name="description"/><meta content="index,follow,max-image-preview:large" name="robots"/><meta content="#17191c" name="theme-color"/><link href="https://metaphorofitself.net/evexl-introduction" rel="canonical"/><link href="/image/me.jpg" rel="icon" type="image/jpeg"/><meta content="website" property="og:type"/><meta content="EveXL | Introduction" property="og:title"/><meta content="An introduction to EveXL, a domain-specific language for detecting events through intervals of time and temporal relations." property="og:description"/><meta content="https://metaphorofitself.net/evexl-introduction" property="og:url"/><meta content="https://metaphorofitself.net/image/me.jpg" property="og:image"/><link href="/style/production.css?v=20260930-1" rel="stylesheet"/>
26<script type="application/ld+json">{"@context":"https://schema.org","@type":"Person","@id":"https://metaphorofitself.net/#bruno-cardoso","name":"Bruno Cardoso","url":"https://metaphorofitself.net","image":"https://metaphorofitself.net/image/me.jpg","jobTitle":"Research Software Engineer","affiliation":{"@type":"Organization","name":"Tilburg University"},"knowsAbout":["Human-Computer Interaction","Research software engineering","Multimodal annotation","Visual language","Interactive systems"],"sameAs":["https://scholar.google.com/citations?hl=en&user=o4si7NoAAAAJ"]}</script>
26</head>
27<body class="portfolio-page evexl-introduction-page"><nav aria-label="Primary navigation" class="navbar navbar-expand-lg navbar-light bg-light sticky-top">
28<div class="container-fluid">
29<a class="navbar-brand" href="/"><span aria-hidden="true" class="brand-mark">BC</span><span>Bruno Cardoso</span></a>
30<button aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation" class="navbar-toggler" data-bs-target="#navbarNavDropdown" data-bs-toggle="collapse" type="button">
31<span class="navbar-toggler-icon"></span>
32</button>
33<div class="collapse navbar-collapse" id="navbarNavDropdown">
34<ul class="navbar-nav">
35<li class="nav-item"><a class="nav-link" href="/">About Me</a></li>
36<li class="nav-item"><a class="nav-link" href="/publications">Publications</a></li>
37<li class="nav-item"><a class="nav-link" href="/caat">CAAT</a></li>
38<li class="nav-item dropdown active">
39<a aria-current="page" aria-expanded="false" class="nav-link dropdown-toggle active" data-bs-toggle="dropdown" href="/evexl-introduction" id="navbarDropdownMenuLink" role="button">EveXL</a>
40<ul aria-labelledby="navbarDropdownMenuLink" class="dropdown-menu">
41<li><a class="dropdown-item" href="/evexl-introduction">Introduction</a></li>
42<li><a class="dropdown-item" href="/evexl-intervals">Intervals of Time</a></li>
43<li><a class="dropdown-item" href="/evexl-duration">Interval Duration</a></li>
44<li><hr class="dropdown-divider"/></li>
45<li><a class="dropdown-item" href="/evexl-temporal-relations">Temporal Relations - Operators</a></li>
46<li><a class="dropdown-item" href="/evexl-temporal-relations-eg1">Temporal Relations - Examples I</a></li>
47<li><a class="dropdown-item" href="/evexl-temporal-relations-eg2">Temporal Relations - Examples II</a></li>
48<li><hr class="dropdown-divider"/></li>
49<li><a class="dropdown-item" href="/evexl-examples">Examples (try it!)</a></li>
50</ul>
51</li>
52<li class="nav-item"><a class="nav-link" href="/ux-research-visualizations">UX Research</a></li>
53<li class="nav-item"><a class="nav-link" href="/modernize-legacy-interactive-research-demo">Research Guide</a></li>
54<li class="nav-item"><a class="nav-link" href="/mast-ui-design">MAST</a></li>
55</ul>
56</div>
57</div>
58</nav>
59<div class="container">
60<div class="page-header">
61<h1>EveXL <small>Event detection based on intervals of time</small></h1>
62</div>
63<h2>What is it?</h2>
64<p>
65      EveXL is a Domain-Specific Language that I developed while completing my PhD studies. 
66   </p>
67<p>
68      I originally developed it to be used in smartphones (I built the first prototype for Android), to support the development of 
69      interactive applications that reacted to user behavior as it took place.
70   </p>
71<p>
72      The general idea was to have a server app offering event-detection services to other apps in the smartphone. Whenever another app 
73      needed to be notified about a specific event in the user's life, like arriving at home or at the gym, it would submit an EveXL 
74      event to the EveXL server. In turn, the server would start listening for the event and notify back the submitting app whenever it 
75      took place.
76   </p>
77<p>
78      Here you can learn about EveXL and try programming with it. Instead of real life sensors reading the environment, as would happen 
79      in a smartphone environment, I have created a generator of readings for this site. It's just a small JavaScript game featuring a 
80      physics engine that drops a stream of colored balls and registers their color. You can generate the ball stream yourself by using 
81      the colored buttons, or just flip the "Start Demo" button and let the generator produce a predefined sequence. 
82   </p>
83<p>	
84      At the bottom of the <a href="/evexl-examples">Examples</a> page you'll find an editor that will allow you to write your own expressions 
85      and another generator for you to execute them against a live stream of readings. Have fun!
86   </p>
87<p>EveXL expressions are evaluated directly in your browser, so the interactive examples start without depending on the original external runtime.</p>
88<h2>References</h2>
89<p>
90      If you'd like to know more, please check the following publications:
91      </p><ul>
92<li>
93<a href="https://dl.acm.org/doi/10.1145/2837126.2837139?cid=81490694236">Avoiding "...too late!" - Expressing and Detecting Opportunity with EveWorks and EveXL</a> (MoMM 2015)
94         </li>
95<li>
96<a href="https://dl.acm.org/doi/10.4108/eai.22-7-2015.2260303">Making Sense of EveXL, a DSL for Context Awareness</a> (MOBIQUITOUS 2015)
97         </li>
98<li>
99<a href="https://dl.acm.org/doi/10.1145/2607023.2610279?cid=81490694236">Presenting EveWorks, a framework for daily life event detection</a> (EICS 2014)
100         </li>
101<li>
102<a href="https://dl.acm.org/doi/10.1145/2559206.2581303?cid=81490694236">The Timeline as a Programming Interface</a> (CHI 2014)
103         </li>
104</ul>
105<p></p>
106<nav aria-label="Website navigation" class="pagination-adjustments">
107<ul class="pagination justify-content-center">
108<li class="page-item disabled"><a class="page-link" href="/evexl-introduction" tabindex="-1">Previous</a></li>
109<li class="page-item active"><a class="page-link" href="/evexl-introduction">1</a></li>
110<li class="page-item"><a class="page-link" href="/evexl-intervals">2</a></li>
111<li class="page-item"><a class="page-link" href="/evexl-duration">3</a></li>
112<li class="page-item"><a class="page-link" href="/evexl-temporal-relations">4</a></li>
113<li class="page-item"><a class="page-link" href="/evexl-temporal-relations-eg1">5</a></li>
114<li class="page-item"><a class="page-link" href="/evexl-temporal-relations-eg2">6</a></li>
115<li class="page-item"><a class="page-link" href="/evexl-examples">7</a></li>
116<li class="page-item"><a class="page-link" href="/evexl-intervals">Next</a></li>
117</ul>
118</nav>
119</div>
120<footer class="site-footer">
121<div class="site-footer__inner">
122<p>Bruno Cardoso · Research Software Engineering &amp; HCI</p>
123<p><a href="/about-me">About</a> ·
124       <a href="/publications">Publications</a> ·
125       <a href="https://scholar.google.com/citations?hl=en&amp;user=o4si7NoAAAAJ" rel="noopener">Google Scholar</a></p>
126</div>
127</footer>
127<script src="/vendor/bootstrap.bundle.min.js"></script>
127
128</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.