Commit 9867b4984c4556369979228c498c848baeedf8c3

Authored by Geoffrey Challen
1 parent 4e09b796

Back to six pages.

.ispell_english
1 Android 1 Android
  2 +API
2 APIs 3 APIs
3 app 4 app
4 apps 5 apps
  6 +codebase
5 Endgames 7 Endgames
6 JSON 8 JSON
  9 +logcat
  10 +Navjack
  11 +Navjack's
7 outsourced 12 outsourced
  13 +PhoneLab
  14 +PocketParker
8 pre 15 pre
  16 +refactored
9 runtime's 17 runtime's
10 smartphone 18 smartphone
  19 +smartphone's
11 smartphones 20 smartphones
  21 +testbed
  22 +USB
12 Wifi 23 Wifi
conclusion.tex
@@ -5,8 +5,7 @@ To conclude, we have described the \texttt{maybe} statement: a new language @@ -5,8 +5,7 @@ To conclude, we have described the \texttt{maybe} statement: a new language
5 construct allowing developers to express structured uncertainty at 5 construct allowing developers to express structured uncertainty at
6 development time and for that uncertainty to be resolved through later 6 development time and for that uncertainty to be resolved through later
7 testing and adaptation. We are in the process of building a prototype of the 7 testing and adaptation. We are in the process of building a prototype of the
8 -\texttt{maybe} system for Android smartphones and are excited to share  
9 -results from our experiences. 8 +\texttt{maybe} system for Android smartphones.
10 9
11 \section*{Acknowledgments} 10 \section*{Acknowledgments}
12 11
discussion.tex
1 \section{Discussion} 1 \section{Discussion}
2 \label{sec-discussion} 2 \label{sec-discussion}
3 3
4 -We have yet to determine how well programmers will be able to use the  
5 -\texttt{maybe} statement. Structurally \texttt{maybe} statements are similar  
6 -to the ubiquitous \texttt{if-else} construct in that at the bottom of the  
7 -statement the programmer may not be sure which block was executed. However,  
8 -while with \texttt{if-else} blocks it can be determined which block was  
9 -executed by examining the branch conditions, \texttt{maybe} statements  
10 -require developers to record which alternative was executed if downstream  
11 -code depends on the decision. To coordinate the adaptation of multiple code  
12 -paths a single \texttt{maybe} variable---such as the policy string in  
13 -Figure~\ref{fig-maybeexamples}---can be used to control multiple  
14 -\texttt{if-else} statements. 4 +We have yet to determine how natural programmers will find the \texttt{maybe}
  5 +statement. Encouragingly, \texttt{maybe} statements are similar to the
  6 +ubiquitous \texttt{if-else} statement, and in many cases can be used to
  7 +directly replace \texttt{if-else} statements that attempt runtime adaptation.
  8 +To coordinate the adaptation of multiple code paths a single \texttt{maybe}
  9 +variable---such as the policy string in Figure~\ref{fig-maybeexamples}---can
  10 +be used to control multiple \texttt{if-else} statements.
15 11
16 While \texttt{maybe} is a powerful programming tool, it is important that it 12 While \texttt{maybe} is a powerful programming tool, it is important that it
17 be used sparingly. If objective dependencies exist between \texttt{maybe} 13 be used sparingly. If objective dependencies exist between \texttt{maybe}
18 statements, the overall configuration space may expand exponentially, 14 statements, the overall configuration space may expand exponentially,
19 -complicating the process of determining the best alternatives described in  
20 -Section~\ref{sec-certainty}. (A similar problem exists with nested  
21 -\texttt{maybe} statements.) Compile-time analysis may be required to detect  
22 -dependencies between \texttt{maybe} statements and ensure that downstream  
23 -optimization remains feasible. 15 +complicating post-deployment adaptation process. Compile-time analysis may be
  16 +required to detect dependencies between \texttt{maybe} statements and
  17 +encourage programmers to limit their use of \texttt{maybe} if to ensure that
  18 +downstream optimization remains feasible.
24 19
25 -One important place where \texttt{maybe} should not be used is when  
26 -adaptation is not app-specific and can be refactored into a library serving  
27 -multiple apps. As an example, an app should not use \texttt{maybe} to decide  
28 -which network interface to use when attempting to achieve a common objective,  
29 -such as maximizing throughput. This choice would be better refactored into a  
30 -dedicated library, which might use its own internal \texttt{maybe}  
31 -statements. Not only is the resulting codebase smaller, but the total number  
32 -of \texttt{maybe} statements that the system has to determine how to handle  
33 -is reduced. 20 +\texttt{maybe} statements should not be used when adaptation is not
  21 +app-specific and can be refactored into a library. As an example, an app
  22 +should not use \texttt{maybe} to decide which network interface to use when
  23 +attempting to achieve a common objective, such as maximizing throughput. This
  24 +choice would be better refactored into a dedicated library, which might use
  25 +its own internal \texttt{maybe} statements. Not only is the resulting
  26 +codebase smaller, but the total number of \texttt{maybe} statements that the
  27 +system has to test is reduced.
34 28
35 However, the \texttt{maybe} statement represents a fundamentally different 29 However, the \texttt{maybe} statement represents a fundamentally different
36 -approach from previously attempts to enable runtime adaptation that relied on  
37 -libraries. As a code organization stategy, the benefits that libraries provide  
38 -in terms of reduced duplication and more powerful interfaces are orthogonal and  
39 -complementary to the \texttt{maybe} statement. That said, a large amount of 30 +approach from attempts to enable runtime adaptation that rely on libraries.
  31 +As a code organization strategy, the benefits that libraries provide in terms
  32 +of reduced duplication and more powerful interfaces are orthogonal and
  33 +complementary to the \texttt{maybe} statement. However, a large amount of
40 code including adaptation logic remains app specific and cannot be refactored 34 code including adaptation logic remains app specific and cannot be refactored
41 into a library. 35 into a library.
42 36
references.bib
@@ -60,7 +60,7 @@ @@ -60,7 +60,7 @@
60 Title = {{The Mote is Dead. Long Live the Discarded Smartphone!}}, 60 Title = {{The Mote is Dead. Long Live the Discarded Smartphone!}},
61 Author = {Geoffrey Challen and Scott Haseley and Anudipa Maiti and Anand 61 Author = {Geoffrey Challen and Scott Haseley and Anudipa Maiti and Anand
62 Nandugudi and Guru Prasad and Mukta Puri and Junfei Wang}, 62 Nandugudi and Guru Prasad and Mukta Puri and Junfei Wang},
63 - Month = {February}, 63 + Month = {Feb.},
64 Year = {2014}, 64 Year = {2014},
65 } 65 }
66 66
related.tex
@@ -4,25 +4,16 @@ @@ -4,25 +4,16 @@
4 New systems such as EnFrame~\cite{arxiv13-enframe} reflect growing interest 4 New systems such as EnFrame~\cite{arxiv13-enframe} reflect growing interest
5 in managing uncertainty at the language level. EnFrame focuses on enabling 5 in managing uncertainty at the language level. EnFrame focuses on enabling
6 programming with uncertain data, rather than the runtime adaptation enabled 6 programming with uncertain data, rather than the runtime adaptation enabled
7 -by the \texttt{maybe} statement. Specifically a variable controlled by a  
8 -\texttt{maybe} statement has a single value that is being evaluated at any  
9 -given time, while EnFrame allows that same variable to have a distribution of  
10 -values reflecting error or other forms of uncertainty about what it's true  
11 -value should be. 7 +by \texttt{maybe}.
12 8
13 -Aspect oriented programming (AOP)~\cite{aop} was proposed by Kiczales et al.  
14 -as a programming paradigm geared toward increasing modularity through the  
15 -separation of cross-cutting concerns in software. The programmer can express  
16 -cross cutting concerns in stand alone modules, or aspects. Aspects are 9 +Aspect oriented programming (AOP)~\cite{aop} aims to increase modularity
  10 +through the separation of cross-cutting concerns. The programmer can express
  11 +cross-cutting concerns in stand alone modules, or aspects. Aspects are
17 composed of advice, which specifies a computation to be performed as well as 12 composed of advice, which specifies a computation to be performed as well as
18 points in the program at which that computation should be performed. 13 points in the program at which that computation should be performed.
19 -Abstractly, aspects provide an interesting framework on top of which we could  
20 -realize \texttt{maybe} blocks. At runtime, different aspects could be weaved  
21 -depending on the framework decisions. Aspects would also allow ``chained''  
22 -\texttt{maybe} blocks through the use of multiple join points and point-cuts.  
23 -Fundamentally, however, the goals of AOP and the \texttt{maybe} statement  
24 -differ, with AOP focusing on modularity and \texttt{maybe} focused on  
25 -increasing runtime flexibility in the face of uncertainty. 14 +Fundamentally, the goals of AOP and the \texttt{maybe} statement differ, with
  15 +AOP focusing on modularity and \texttt{maybe} focused on increasing runtime
  16 +flexibility in the face of uncertainty.
26 17
27 \texttt{maybe} shares similaries with language-based approaches to managing 18 \texttt{maybe} shares similaries with language-based approaches to managing
28 energy consumption in wireless sensor networks such as 19 energy consumption in wireless sensor networks such as
@@ -33,11 +24,10 @@ which energy states are appropriate as the \texttt{maybe} system would do. @@ -33,11 +24,10 @@ which energy states are appropriate as the \texttt{maybe} system would do.
33 \texttt{maybe} can also enable adaptation driven by goals other than energy 24 \texttt{maybe} can also enable adaptation driven by goals other than energy
34 management. 25 management.
35 26
36 -Enabling more adaptive mobile systems is a challenge with a long history dating  
37 -back to work on systems such as Odyssey~\cite{odyssey-sosp97}. However, a  
38 -taxonomy of approaches to enabling adaptation on early mobile  
39 -systems~\cite{badrinath2000conceptual} reflects the focus of early efforts on  
40 -incorporating adaptation into libraries that could be used by multiple apps. As  
41 -we have pointed out previously, while adaptation libraries are useful,  
42 -\texttt{maybe} statements can make them more powerful by allowing programmers  
43 -to express uncertainty. 27 +Attempts to enable more adaptive mobile systems date back to systems such as
  28 +Odyssey~\cite{odyssey-sosp97}. However, a taxonomy of approaches to enabling
  29 +adaptation on early mobile systems~\cite{badrinath2000conceptual} reflects
  30 +the focus of early efforts on incorporating adaptation into libraries that
  31 +could be used by multiple apps. As we have pointed out previously, while
  32 +adaptation libraries are useful, \texttt{maybe} statements can make them more
  33 +powerful by allowing programmers to express uncertainty.
usage.tex
@@ -36,7 +36,7 @@ each user enjoys whichever approach is most effective for them. @@ -36,7 +36,7 @@ each user enjoys whichever approach is most effective for them.
36 \subsection{\texttt{\large PhoneLab} Conductor} 36 \subsection{\texttt{\large PhoneLab} Conductor}
37 37
38 \PhoneLab{} is a large scale smartphone platform testbed at the University at 38 \PhoneLab{} is a large scale smartphone platform testbed at the University at
39 -Buffalo~\cite{phonelab-sensemine13,phonelab-url}. We leverage the Android 39 +Buffalo~\cite{phonelab-sensemine13}. We leverage the Android
40 \texttt{logcat} subsystem as a data collection mechanism---experiment apps 40 \texttt{logcat} subsystem as a data collection mechanism---experiment apps
41 write their data into a system-wide log buffer and we collect and upload this 41 write their data into a system-wide log buffer and we collect and upload this
42 data on their behalf. 42 data on their behalf.
@@ -58,7 +58,7 @@ allows us to control aspects of program behavior such as the amount of @@ -58,7 +58,7 @@ allows us to control aspects of program behavior such as the amount of
58 storage space we use on each device for logs, how often we check for updates, 58 storage space we use on each device for logs, how often we check for updates,
59 and how to decide whether to upload data. Several of these features have 59 and how to decide whether to upload data. Several of these features have
60 proven essential after deployment---for example, when an upload policy that 60 proven essential after deployment---for example, when an upload policy that
61 -worked previously abruptly stopped working on a newer Androiod version. 61 +worked previously abruptly stopped working on a newer Android version.
62 Development of this app would have been considerably easier using 62 Development of this app would have been considerably easier using
63 \texttt{maybe}, which could automate the process of pushing policies to 63 \texttt{maybe}, which could automate the process of pushing policies to
64 clients in an energy-efficient way, and enable per-user goal-driven 64 clients in an energy-efficient way, and enable per-user goal-driven
@@ -68,9 +68,9 @@ adaptation. @@ -68,9 +68,9 @@ adaptation.
68 \subsection{Navjack Sensing Platform} 68 \subsection{Navjack Sensing Platform}
69 69
70 The Navjack project is exploring hijacking in-car navigation devices built 70 The Navjack project is exploring hijacking in-car navigation devices built
71 -from repurposed smartphones~\cite{sustain-hotmobile14} and deployed in 71 +from recycled smartphones~\cite{sustain-hotmobile14} and deployed in
72 personal vehicles to enable city-scale sensing. Volunteers install a device 72 personal vehicles to enable city-scale sensing. Volunteers install a device
73 -that acts as a dedicated navigational aid and car performance monitor but 73 +that acts as a dedicated navigation aid and car performance monitor but
74 also continuously collects sensor data, utilizing the car's battery for 74 also continuously collects sensor data, utilizing the car's battery for
75 power, the car's driver for maintenance, and inexpensive machine-to-machine 75 power, the car's driver for maintenance, and inexpensive machine-to-machine
76 (M2M) data plans for telemetry. 76 (M2M) data plans for telemetry.
@@ -91,38 +91,3 @@ space that can potentially get quite large, and so it may provide a good @@ -91,38 +91,3 @@ space that can potentially get quite large, and so it may provide a good
91 chance to evaluate both our ability to perform pre-deployment simulations to 91 chance to evaluate both our ability to perform pre-deployment simulations to
92 reduce the state space and the success of post-deployment clustering 92 reduce the state space and the success of post-deployment clustering
93 techniques to identify salient user differences. 93 techniques to identify salient user differences.
94 -  
95 -\subsection{Android Platform Services}  
96 -  
97 -Earlier, we noted that that app developers should not use \texttt{maybe} to  
98 -make decisions that are best left to libraries and platform services. However,  
99 -those same  
100 -libraries and platform services can themselves use \texttt{maybe} to enable  
101 -post-deployment testing and adaptation. We are particularly interested in how  
102 -\texttt{maybe} can be used within the Android platform itself wherever  
103 -structured uncertainty must be expressed.  
104 -  
105 -One use case is determining whether to use Wifi or cellular network. While this is  
106 -a hot topic in current mobile systems research~\cite{shen2008cost}, the approaches  
107 -that are currently being tested may struggle to adapt to many of the  
108 -variable that the \texttt{maybe} system incorporates and arrive at an  
109 -effective per-user approach. A similar example is optimizing the state of  
110 -GPS. With three modes already present---``High accuracy'', ``Battery saving'', and  
111 -``Device only'', the choice may need to be adapted both to app usage and more  
112 -user- or device-specific factors. \texttt{maybe} allows post-deployment  
113 -testing of a variety of different approaches to make this runtime decision.  
114 -  
115 -\begin{comment}  
116 -  
117 -Stretching this idea further, what if the developer didn't have to think  
118 -about cache or object availability? The language itself could determine which  
119 -block to run based on the semantics of the \texttt{maybe} case definition.  
120 -For instance, in the \texttt{android.emoji.EmojiFactory} class, there is a  
121 -method to get an eomji via its Unicode PUA (Private Use Area). To do this,  
122 -the emoji is either grabbed from a platform-level cache or is created then  
123 -written to the cache then returned. With \texttt{maybe}, the developer could  
124 -have two blocks one for the cache being empty for the PUA and one where an  
125 -object exists. Now, the developer doesn't need to think about the  
126 -possibilities of cache-state, but instead can move on to other functionality.  
127 -  
128 -\end{comment}