|
2 | 2 | \usepackage[utf8]{inputenc} |
3 | 3 | \usepackage[T1]{fontenc} |
4 | 4 | \usepackage{tikz} |
| 5 | +\usepackage{hyperref} |
5 | 6 |
|
6 | 7 | \usepackage{pgfpages} |
7 | 8 | \setbeameroption{show notes on second screen} |
8 | 9 | % \pgfpagesuselayout{2 on 1}[a4paper,border shrink=10mm] |
9 | 10 |
|
10 | 11 | \usetheme[darkmode, nofooterlogo]{pureminimalistic} |
11 | 12 | % \renewcommand{\pageword}{} |
12 | | -% \renewcommand{\logoheader}{\vspace{1.5em}} |
| 13 | +\renewcommand{\logotitle}{} |
| 14 | +\renewcommand{\logoheader}{} |
| 15 | +\renewcommand{\logofooter}{} |
13 | 16 | \usepackage[backend=biber, doi=false, maxbibnames=2, maxcitenames=2, style=numeric, sorting=none, url=false, eprint=false]{biblatex} |
14 | 17 | \addbibresource{bibliography.bib} |
15 | | -% this makes it possible to add backup slides, without counting them |
16 | 18 | \usepackage{appendixnumberbeamer} |
17 | 19 | \renewcommand{\appendixname}{\texorpdfstring{\translate{appendix}}{appendix}} |
18 | 20 |
|
19 | | -\title[Debugging RxJS-based Applications]{Getting rid of the \texttt{console.log}:\\Debugging RxJS-based Applications} |
20 | | -\author{Manuel Alabor} |
21 | | -\institute{Eastern Switzerland University of Applied Sciences} |
| 21 | +\title[Debugging of RxJS-based Applications]{Getting rid of the \texttt{console.log}:\\Debugging of RxJS-based Applications} |
| 22 | +\author{Manuel Alabor, Markus Stolze} |
| 23 | +\institute{OST in Rapperswil, Switzerland} |
22 | 24 | \date{\today} |
23 | 25 |
|
24 | | - |
25 | 26 | \begin{document} |
26 | 27 |
|
27 | 28 | \maketitle |
28 | 29 |
|
29 | | -\note[itemize]{ |
30 | | - \item Welcome |
31 | | - \item Debugging of RxJS-based Applications |
| 30 | +\note[itemize] { |
| 31 | + \item Welcome everyone |
| 32 | + \item I am Manuel |
| 33 | + \item Frontend Software Engineer |
| 34 | + \item Currently TypeScript, React, RxJS |
| 35 | + \item Master Student |
| 36 | + \item Research Topic: Debugging for Reactive Programming -> RxJS |
| 37 | + \item -> Going to tell why this topic |
32 | 38 | } |
33 | 39 |
|
| 40 | +\section{Introduction} |
34 | 41 |
|
35 | | -\section*{Introduction} |
36 | | - |
37 | | -\begin{frame}{Who Am I?} |
38 | | - \begin{vfilleditems} |
39 | | - \item Foobar\bigskip |
40 | | - \item Foobar\bigskip |
41 | | - \item Foobar\bigskip |
42 | | - \item Foobar\bigskip |
43 | | - \end{vfilleditems} |
| 42 | +\begin{frame}[fragile]{Reactive Programming for the Web} |
| 43 | + \centering |
| 44 | + \begin{figure} |
| 45 | + \centering |
| 46 | + \includegraphics[height=\textheight/2]{figures/rxjs-logo.png} |
| 47 | + \caption{RxJS \cite{rxjs}} |
| 48 | + \label{fig:rxjs} |
| 49 | + \end{figure} |
44 | 50 | \end{frame} |
45 | 51 |
|
46 | | -% \begin{frame}[focus] |
47 | | -% \includegraphics[width=\textwidth/3]{figures/rxjs-logo.png} |
48 | | -% \\ |
49 | | -% \vspace{0.5cm} |
50 | | -% \Huge{RxJS} |
51 | | -% \end{frame} |
52 | | - |
53 | 52 | \note[itemize] { |
54 | | - \item |
| 53 | + \item What is RxJS? |
| 54 | + \item One of the larger representatives |
| 55 | + \item RP with JavaScript |
| 56 | + \item You might heard of Angular \cite{angualrrxjs} backed by Google |
| 57 | + \item Angular is based on RxJS |
| 58 | + \item All the things we love about RP: Check |
| 59 | + \item All the things we... dont love about RP: Check |
55 | 60 | } |
56 | 61 |
|
57 | | -\section*{Introduction} |
| 62 | +\begin{frame}[fragile]{Debugging: First Intuition} |
| 63 | + \begin{figure}[H] |
| 64 | + \centering |
| 65 | + \includegraphics[height=\textheight/2]{figures/add-breakpoint.png} |
| 66 | + \caption{Add a Breakpoint} |
| 67 | + \end{figure} |
| 68 | +\end{frame} |
58 | 69 |
|
59 | | -\begin{frame}{} |
| 70 | +\note[itemize] { |
| 71 | + \item How to debug a problem? Well... |
| 72 | + \item Add a breakpoint |
| 73 | + \item Imperative programming debugging |
| 74 | + \item Helps sometimes (lambda functions, ...) |
| 75 | + \item Often useless (stack traces, program step controls...) |
| 76 | + \item What else? |
| 77 | +} |
60 | 78 |
|
| 79 | +\begin{frame}[fragile]{Debugging: The Reality} |
| 80 | + \begin{figure}[H] |
| 81 | + \centering |
| 82 | + \includegraphics[height=\textheight/2]{figures/consolelog.png} |
| 83 | + \caption{Add Trace Logs} |
| 84 | + \end{figure} |
61 | 85 | \end{frame} |
62 | 86 |
|
63 | 87 | \note[itemize] { |
64 | | - \item |
| 88 | + \item After some time with RxJS |
| 89 | + \item Stuff gets more complex |
| 90 | + \item Debugging === Trace Logs |
| 91 | + \item Sprinkle log statements throughout the program |
| 92 | + \item Hope to get the right hint |
| 93 | + \item Remove (hopefully) everything again |
65 | 94 | } |
66 | 95 |
|
| 96 | +\begin{frame}[fragile]{Debugging: Can this be it?} |
| 97 | + \begin{figure}[H] |
| 98 | + \centering |
| 99 | + \includegraphics[height=\textheight/2]{figures/person-shrugging_1f937.png} |
| 100 | + \caption{\tiny{Source: \url{https://emojipedia.org/person-shrugging/}}} |
| 101 | + \end{figure} |
| 102 | +\end{frame} |
67 | 103 |
|
68 | | -\begin{frame}{} |
| 104 | +\note[itemize] { |
| 105 | + \item Frustration -> Reason Research topic |
| 106 | + \item There are concepts and solutions for RP debugging |
| 107 | + \item Reactive Debugger, Scala \cite{10.1145/2884781.2884815} |
| 108 | + \item Improved logging tools rxjs-spy |
| 109 | + \item Visualizers rxviz, rxjs visualizer |
| 110 | + \item But why does nobody seem to use them? |
| 111 | + \item Why are they not popular? |
| 112 | + \item -> Research Questions |
| 113 | +} |
69 | 114 |
|
| 115 | +\begin{frame}[fragile]{Research Questions} |
| 116 | + \begin{enumerate} |
| 117 | + \vfill\item[RQ1] \textbf{What challenges} do software engineers face when debugging RxJS-based applications? |
| 118 | + \vfill\item[RQ2] How can the \textbf{experience} of software engineers during the debugging process of RxJS-based applications \textbf{be improved}? |
| 119 | + \vfill\item[\color{gray}{RQ3}] \color{gray}{What is the \textbf{impact of proposed solutions} on the debugging experience of software engineers?} |
| 120 | + \end{enumerate} |
70 | 121 | \end{frame} |
71 | 122 |
|
72 | 123 | \note[itemize] { |
73 | | - \item |
| 124 | + \item First: Collect and Validate information |
| 125 | + \item How do engineers debug RxJS? |
| 126 | + \item What do they like? Dislike? |
| 127 | + \item Validate this data in an observational study |
| 128 | + \item Second: Propose a solution to improve |
| 129 | + \item Third: Implement and validate solution |
| 130 | + \item Not part of this work |
| 131 | + \item Already started with in current iteration |
74 | 132 | } |
75 | 133 |
|
| 134 | + |
76 | 135 | \section{Interviews and War Stories} |
77 | 136 |
|
78 | | -\begin{frame}{Interviews} |
79 | 137 |
|
| 138 | + |
| 139 | +\begin{frame}[fragile]{Call for ``War Stories''} |
| 140 | + \begin{figure}[H] |
| 141 | + \centering |
| 142 | + \includegraphics[height=0.6\textheight]{figures/tweet-interview.png} |
| 143 | + \caption{\tiny{Source: \url{https://twitter.com/swissmanu/status/1242429409208029185}}} |
| 144 | + \end{figure} |
80 | 145 | \end{frame} |
81 | 146 |
|
82 | 147 | \note[itemize] { |
83 | | - \item |
| 148 | + \item First: Collect and Validate information |
| 149 | + \item How do engineers debug RxJS? |
| 150 | + \item What do they like? Dislike? |
| 151 | + \item Validate this data in an observational study |
| 152 | + \item Second: Propose a solution to improve |
| 153 | + \item Third: Implement and validate solution |
| 154 | + \item Not part of this work |
| 155 | + \item Already started with in current iteration |
84 | 156 | } |
85 | 157 |
|
| 158 | +\begin{frame}[fragile]{Getting Started with RQ1} |
| 159 | + \begin{vfilleditems} |
| 160 | + \item Talk to practitioners |
| 161 | + \item 1:1 Interviews |
| 162 | + \item Written ``War Story'' Reports |
| 163 | + \end{vfilleditems} |
| 164 | +\end{frame} |
86 | 165 |
|
87 | | -\begin{frame}{War Stories} |
88 | 166 |
|
| 167 | +\begin{frame}{Interviews} |
| 168 | + \begin{vfilleditems} |
| 169 | + \item Informal interviews with five participants |
| 170 | + \end{vfilleditems} |
89 | 171 | \end{frame} |
90 | 172 |
|
91 | | -\note[itemize] { |
92 | | - \item |
93 | | -} |
94 | | - |
| 173 | +\begin{frame}{War Stories} |
| 174 | + \begin{vfilleditems} |
| 175 | + \item Request via Twitter and direct emails |
| 176 | + \item Responses from five engineers, including one RxJS core team member |
| 177 | + \end{vfilleditems} |
| 178 | +\end{frame} |
95 | 179 |
|
96 | 180 | \begin{frame}{Results} |
97 | 181 |
|
98 | 182 | \end{frame} |
99 | 183 |
|
100 | | -\note[itemize] { |
101 | | - \item |
102 | | -} |
103 | 184 |
|
104 | 185 | \section{Observational Study} |
105 | 186 | \begin{frame}{Hypothesis} |
106 | | - |
| 187 | + If software engineers must solve an RxJS-based problem, then they \textbf{will instrument the code manually} in order to understand its behavior. |
107 | 188 | \end{frame} |
108 | 189 |
|
109 | | -\note[itemize] { |
110 | | - \item |
111 | | -} |
112 | | - |
113 | | - |
114 | | -\begin{frame}{Design} |
115 | | - |
| 190 | +\begin{frame}{Study Design} |
| 191 | + \begin{vfilleditems} |
| 192 | + \item Observational Study |
| 193 | + \item Two Problems |
| 194 | + \item 25 Minutes per Problem |
| 195 | + \item |
| 196 | + \end{vfilleditems} |
116 | 197 | \end{frame} |
117 | 198 |
|
118 | | -\note[itemize] { |
119 | | - \item |
120 | | -} |
121 | | - |
122 | | - |
123 | 199 | \begin{frame}{Problem Example} |
124 | 200 |
|
125 | 201 | \end{frame} |
126 | 202 |
|
127 | | -\note[itemize] { |
128 | | - \item |
129 | | -} |
130 | | - |
131 | | - |
132 | 203 | \begin{frame}{Results} |
133 | 204 |
|
134 | 205 | \end{frame} |
135 | 206 |
|
136 | | -\note[itemize] { |
137 | | - \item |
138 | | -} |
139 | | - |
140 | 207 | \section{Conclusion} |
141 | 208 | \begin{frame}{} |
142 | 209 |
|
143 | 210 | \end{frame} |
144 | 211 |
|
145 | | -\note[itemize] { |
146 | | - \item |
147 | | -} |
148 | | - |
149 | | - |
150 | | -\begin{frame}{Future Work} |
151 | | - |
| 212 | +\section{Future Work} |
| 213 | +\begin{frame}[fragile]{Future Work} |
| 214 | + \begin{vfilleditems} |
| 215 | + \item Manuel Alabor \cite{10.1145/2501654.2501666} |
| 216 | + \item Manuel Alabor |
| 217 | + \item Manuel Alabor |
| 218 | + \end{vfilleditems} |
152 | 219 | \end{frame} |
153 | 220 |
|
154 | | -\note[itemize] { |
155 | | - \item |
156 | | -} |
157 | | - |
158 | | - |
159 | | -\begin{frame} |
160 | | - Q \& A |
| 221 | +\begin{frame}[plain, noframenumbering] |
| 222 | + \centering |
| 223 | + \vfill |
| 224 | + {\fontsize{40}{50}\selectfont Q \& A} |
| 225 | + \vfill |
161 | 226 | \end{frame} |
162 | 227 |
|
163 | 228 | \appendix |
164 | 229 | \begin{frame}[allowframebreaks]{References} |
165 | | - \bibliographystyle{plain} |
166 | | - \bibliography{bibliography} |
| 230 | + \printbibliography |
167 | 231 | \end{frame} |
168 | 232 |
|
169 | 233 | \end{document} |
0 commit comments