Franck Pommereau

started new snakes poster

No preview for this file type
1 +\documentclass{beamer}
2 +
3 +\usepackage[english]{babel}
4 +\usepackage[latin1]{inputenc}
5 +\usepackage[orientation=portrait,size=a0,scale=2]{beamerposter}
6 +\usepackage{textpos}
7 +\usepackage{picins}
8 +\usepackage{url}
9 +\usepackage{fancyvrb}
10 +\usepackage{relsize}
11 +
12 +\usepackage{tikz}
13 +\usetikzlibrary{shapes.callouts}
14 +
15 +\parindent=0pt
16 +\setbeamertemplate{navigation symbols}{}
17 +
18 +\def\smallskip{\vspace{5mm}}
19 +\def\medskip{\vspace{10mm}}
20 +\def\bigskip{\vspace{20mm}}
21 +
22 +\colorlet{title}{black!10}
23 +\colorlet{minor}{black!65}
24 +\colorlet{snakes}{green!30!black}
25 +\colorlet{python}{blue!30!black}
26 +\definecolor{popup}{rgb}{.6,1,.5}
27 +
28 +\def\*{\raise-.65ex\hbox{$\smash{
29 + \includegraphics[height=1em]{snake-shadow.pdf}}$}}
30 +
31 +\def\section#1{\noindent\colorbox{title}{%
32 + \hbox to \textwidth{\bfseries #1\hfill\strut\*}}\smallskip}
33 +
34 +\def\endparitem{\endgraf\egroup}
35 +\def\>{\par\bgroup
36 + \let\par=\endparitem
37 + \leftskip=1.4em\parindent=-1.4em
38 + \indent\hbox to 1.4em{\hss
39 + $\smash{\includegraphics[width=1em]{cartoon-python.pdf}}$
40 + }\ignorespaces}
41 +\def\+{\par\bgroup
42 + \let\par=\endparitem
43 + \leftskip=2.8em\parindent=-1.4em
44 + \indent\hbox to 1.4em{\hss
45 + $\color{snakes}\smash{\bullet}$
46 + }\ignorespaces}
47 +
48 +\def\PYk #1{{\color{snakes}#1}}
49 +\def\PYn #1{{\color{python}#1}}
50 +\def\PYc #1{{\color{minor}#1}}
51 +
52 +\begin{document}
53 +\begin{frame}[fragile]{}
54 +
55 +%%
56 +%% title & logos
57 +%%
58 +
59 +\begin{textblock}{14.4}(.5,.5)
60 + \parpic{\includegraphics[height=13cm]{logo-snakes}\quad}
61 + {\Large\bfseries a high-level Petri nets library}\\[15pt]
62 + {\large Franck Pommereau}\\[30pt]
63 + \small
64 + IBISC/COSMO, university of vry/Paris-Saclay\\
65 + 23 boulevard de France, 91037 vry Cedex France\\[20pt]
66 + \url{franck.pommereau@ibisc.univ-evry.fr}\\
67 + \url{http://www.ibisc.univ-evry.fr/~fpommereau/SNAKES/}
68 +\end{textblock}
69 +
70 +\begin{textblock}{14.4}(.7,.5)
71 + \null\hfill
72 + \begin{tikzpicture}[xscale=4,yscale=4]
73 + \node at (-2,0) {\includegraphics[width=150mm, height=150mm,
74 + keepaspectratio=true]{logo-ibisc}};
75 + \node at (1,1) {\includegraphics[width=58mm, height=58mm,
76 + keepaspectratio=true]{logo-ueve}};
77 + \node at (1,-1) {\includegraphics[width=65mm, height=65mm,
78 + keepaspectratio=true]{logo-genopole}};
79 + \end{tikzpicture}
80 +\end{textblock}
81 +
82 +%%
83 +%% left column
84 +%%
85 +
86 +\begin{textblock}{9}(.5,2.85)
87 +\section{SNAKES in a nutshell}
88 +
89 +\tikzstyle{popup}=[draw,rectangle callout,rounded corners=15,
90 + text width=10cm,align=center,callout pointer width=7mm,
91 + callout absolute pointer={(70:.5)},fill=popup]
92 +
93 +\begin{center}
94 +\begin{tikzpicture}[scale=12]
95 + \node at (0,0) {\scalebox{-1}[1]{%
96 + \includegraphics[scale=3]{oroborus.pdf}}};
97 + \node[popup,callout relative pointer={(-70:2)}] at (90:1)
98 + {SNAKES is a Python library};
99 + \node[popup,callout relative pointer={(-150:2)}] at (40:1.4)
100 + {Define and manipulate Petri nets};
101 + \node[popup,callout relative pointer={(170:3)}] at (10:1.3)
102 + {Very generic Petri net definition};
103 + \node[popup,callout relative pointer={(150:4)}] at (-25:1.3)
104 + {Annotations are Python expressions};
105 + \node[popup,callout relative pointer={(80:4)}] at (-90:1)
106 + {Tokens are Python objects};
107 + \node[popup,cloud callout,cloud puffs=15,aspect=2.5,inner sep=-20pt,
108 + cloud puff arc=120,callout relative pointer={(170:3)},
109 + fill=blue!20,rounded corners=0] at (-45:1.7)
110 + {\small Even SNAKES'\\[-20pt] net objects};
111 + \node[popup,callout relative pointer={(50:4.5)}] at (-150:1.2)
112 + {Fully reflexive for maximal flexibility};
113 + \node[popup,cloud callout,cloud puffs=12,aspect=2.6,inner sep=-50pt,
114 + cloud puff arc=140,callout relative pointer={(50:2)},
115 + fill=blue!20,rounded corners=0] at (-130:1.5)
116 + {\small Inspired\\[-20pt] by Emacs};
117 + \node[popup,callout relative pointer={(10:3)}] at (170:1.2)
118 + {Extensible with plugins};
119 + \node at (0,0) {\includegraphics[scale=.5]{python-powered.pdf}};
120 +\end{tikzpicture}
121 +\end{center}
122 +
123 +%%
124 +%%
125 +%%
126 +
127 +\medskip
128 +\section{Plugins}
129 +
130 +\> {\color{snakes}\texttt{gv}}: draw Petri nets using GraphViz
131 +\> {\color{snakes}\texttt{ops}}: algebras of Petri nets compositions
132 + {\small\color{minor}(PBC, PNA, M-nets, \dots)}
133 +\> {\color{snakes}\texttt{pids}}: dynamic processes creation and
134 + destruction
135 +\> {\color{snakes}\texttt{labels}}: arbitrary objects annotations
136 +\> {\color{snakes}\texttt{let}}: variables assignation during computation
137 +\> \dots {\color{minor}(your plugin here: try, it's easy)}
138 +
139 +%%
140 +%%
141 +%%
142 +
143 +\bigskip
144 +\section{ABCD for friendly modelling}
145 +
146 +\> process algebra with friendly Python-like syntax
147 +\> embeds full Python
148 +\> compiler shipped with SNAKES library
149 +\> generates Petri nets objects
150 +\> export to pictures or PNML files
151 +\> simulation and reachability analysis
152 +
153 +\vbox to 0pt{\vss\null\hfill
154 + \includegraphics[width=18cm]{abcd-simul}
155 + \vspace*{.2\baselineskip}}
156 +\vspace*{-\baselineskip}
157 +
158 +%%
159 +%%
160 +%%
161 +
162 +\bigskip
163 +\section{Neco for fast analysis}
164 +
165 +\> \L ukasz Fronc's companion tool {\small\color{minor}(available
166 + separately at \url{https://code.google.com/p/neco-net-compiler/})}
167 +\> Neco compiles SNAKES Petri nets into fast native code
168 + \+ optimised marking structure
169 + \+ per-transition optimised firing
170 +\> reads PNML, ABCD, or net objects
171 +\> process-symmetries reductions
172 +\> state space exploration and LTL model-checking
173 + {\small\color{minor}(using SPOT)}
174 +\> awarded at the \emph{model-checking contest\/} 2013
175 + {\small\color{minor}(PETRI NETS conf.)}
176 +
177 +\vbox to 0pt{\vss\null\hfill
178 + \begin{tikzpicture}
179 + \node[inner sep=0pt] (neco) {\includegraphics[width=18cm]{neco.pdf}};
180 + \node[below=-6pt] at (neco.south) {\scalebox{2.1}[1]{net
181 + compiler\hskip 9pt\null}};
182 + \end{tikzpicture}\hspace*{-12mm}
183 + \vspace*{2.8\baselineskip}}
184 +
185 +%%
186 +%%
187 +%%
188 +
189 +\end{textblock}
190 +
191 +%%
192 +%% right column
193 +%%
194 +
195 +\def\section#1{\noindent{\bfseries #1}\smallskip}
196 +
197 +\begin{textblock}{5}(10,2.85)
198 + \begin{tikzpicture}
199 + \path[fill=title] (0,0) rectangle (40,100);
200 + \end{tikzpicture}
201 +\end{textblock}
202 +
203 +\begin{textblock}{5}(10.2,3)
204 +
205 +%%
206 +%%
207 +%%
208 +
209 +\section{About SNAKES}
210 +
211 +\> free \& open source {\small (GNU LGPL)}
212 +\> works out of the box
213 +\> 81.5k lines of portable Python
214 +\> maintained for 10\texttt{+} years
215 +\> one permanent developer/user
216 +\> online documentation has\qquad 300\texttt{+} visitors per month
217 +
218 +%%
219 +%%
220 +%%
221 +
222 +\bigskip
223 +\section{SNAKES vs GitHub's top 10 Python projects$^*$
224 + {\color{minor}\small(on Nov. 2013)}}
225 +
226 +\vskip -1ex
227 +\begin{tikzpicture}[xscale=3.4,yscale=-2.5]
228 +\tikzstyle{project}=[left,anchor=base east,inner sep=0pt]
229 +\tikzstyle{bar}=[draw=blue!50!black,fill=blue!50!white,
230 + anchor=base west,inner sep=0pt,name=bar]
231 +\tikzstyle{price}=[right,anchor=base west]
232 +\node[project] at (0,1) {\small django\;};
233 +\node[bar,text width=530] at (0,1) {\small\strut};
234 +\node[price,anchor=base east] at (bar.base east)
235 + {\raise -.1ex\hbox{\small\$5.3M (432)}};
236 +\node[project] at (0,2) {\small\color{snakes}snakes\;};
237 +\node[bar,text width=270] at (0,2) {\small\strut};
238 +\begin{scope}[color=snakes]
239 + \draw[clip] (bar.north west) rectangle (bar.south east)
240 + node at (bar.center) {\includegraphics[scale=.2]{python-skin}};
241 +\end{scope}
242 +\node[price] at (bar.base east) {\small\$2.7M (2)};
243 +\node[project] at (0,3) {\small sick-beard\;};
244 +\node[bar,text width=260] at (0,3) {\small\strut};
245 +\node[price] at (bar.base east) {\small\$2.6M (110)};
246 +\node[project] at (0,4) {\small ipython\;};
247 +\node[bar,text width=230] at (0,4) {\small\strut};
248 +\node[price] at (bar.base east) {\small\$2.3M (236)};
249 +\node[project] at (0,5) {\small boto\;};
250 +\node[bar,text width=210] at (0,5) {\small\strut};
251 +\node[price] at (bar.base east) {\small\$2.1M (314)};
252 +\node[project] at (0,6) {\small reddit\;};
253 +\node[bar,text width=150] at (0,6) {\small\strut};
254 +\node[price] at (bar.base east) {\small\$1.5M (87)};
255 +\node[project] at (0,7) {\small sentry\;};
256 +\node[bar,text width=130] at (0,7) {\small\strut};
257 +\node[price] at (bar.base east) {\small\$1.3M (166)};
258 +\node[project] at (0,8) {\small tornado\;};
259 +\node[bar,text width=60] at (0,8) {\small\strut};
260 +\node[price] at (bar.base east) {\small\$0.6M (120)};
261 +\node[project] at (0,9) {\small requests\;};
262 +\node[bar,text width=30] at (0,9) {\small\strut};
263 +\node[price] at (bar.base east) {\small\$0.3M (275)};
264 +\node[project] at (0,10) {\small flask\;};
265 +\node[bar,text width=20] at (0,10) {\small\strut};
266 +\node[price] at (bar.base east) {\small\$0.2M (159)};
267 +\node[project] at (0,11) {\small httpie\;};
268 +\node[bar,text width=10] at (0,11) {\small\strut};
269 +\node[price] at (bar.base east) {\small\$0.1M (22)};
270 +\end{tikzpicture}
271 +
272 +estimated cost to develop {\color{minor}\small(generated using David A.
273 + Wheeler's ``SLOCCount'')} and number of contributors
274 +
275 +\hbox to \textwidth{\null\hfill\color{minor}\small $^*$ 10 most forked
276 + or followed Python projects}
277 +
278 +%%
279 +%%
280 +%%
281 +
282 +\bigskip
283 +\section{Using SNAKES out of Python}
284 +
285 +\> write a binding in Cython
286 +
287 +\begin{Verbatim}[commandchars=\\\{\},fontsize=\small,xleftmargin=1.4em,
288 + numbers=left,numbersep=30pt]
289 +\PYc{# this is Cython code}
290 +\PYk{cdef} \PYk{public} \PYk{int} \PYn{foo} (...):
291 + \PYc{# Python with SNAKES here}
292 +\end{Verbatim}
293 +
294 +\> Cython compiles to C/C\texttt{++} \qquad with a \texttt{.h} file:
295 +
296 +\begin{Verbatim}[commandchars=\\\{\},fontsize=\small,xleftmargin=1.4em,
297 + numbers=left,numbersep=30pt]
298 +\PYc{// this is C/C++ code}
299 +\PYk{extern} \PYk{int} \PYn{foo}(...);
300 +\end{Verbatim}
301 +
302 +\> use this API in your project
303 +
304 +%%
305 +%%
306 +%%
307 +
308 +\bigskip
309 +\section{Isn't Python slow?}
310 +
311 +\> {\color{snakes}no} for handling nets {\small\color{minor}even large
312 + ones}
313 +\> {\color{red!30!black}yes} for firing transitions
314 +\> \raise -.1ex\hbox{\includegraphics[height=.9em]{neco.pdf}} is fast
315 + at that! {;-)}
316 +
317 +%%
318 +%%
319 +%%
320 +
321 +\end{textblock}
322 +
323 +%%
324 +%% flush top
325 +%%
326 +
327 +\vspace*{150cm}
328 +\end{frame}
329 +\end{document}
...\ No newline at end of file ...\ No newline at end of file
No preview for this file type
This diff is collapsed. Click to expand it.