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
1 \documentclass{beamer} 1 \documentclass{beamer}
2 2
3 \usepackage[english]{babel} 3 \usepackage[english]{babel}
4 -\usepackage[latin1]{inputenc} 4 +\usepackage[utf8]{inputenc}
5 -\usepackage[orientation=portrait,size=a0,scale=2]{beamerposter} 5 +\usepackage[orientation=portrait,size=a4,scale=2]{beamerposter}
6 -\usepackage{textpos} 6 +\usepackage[absolute,overlay]{textpos}
7 -\usepackage{picins}
8 \usepackage{url} 7 \usepackage{url}
9 -\usepackage{fancyvrb}
10 -\usepackage{relsize}
11 8
12 \usepackage{tikz} 9 \usepackage{tikz}
13 -\usetikzlibrary{shapes.callouts}
14 10
15 \parindent=0pt 11 \parindent=0pt
16 \setbeamertemplate{navigation symbols}{} 12 \setbeamertemplate{navigation symbols}{}
17 13
18 -\def\smallskip{\vspace{5mm}} 14 +\setlength{\TPHorizModule}{1cm}
19 -\def\medskip{\vspace{10mm}} 15 +\setlength{\TPVertModule}{1cm}
20 -\def\bigskip{\vspace{20mm}}
21 16
22 -\colorlet{title}{black!10} 17 +\def\minor #1{{\small\color{gray}#1}}
23 -\colorlet{minor}{black!65} 18 +\def\remark #1{\minor{(#1)}}
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 19
52 \begin{document} 20 \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 21
308 -\bigskip 22 +\begin{frame}[t]{}
309 -\section{Isn't Python slow?}
310 23
311 -\> {\color{snakes}no} for handling nets {\small\color{minor}even large 24 + %%
312 - ones} 25 + %% drawing grid
313 -\> {\color{red!30!black}yes} for firing transitions 26 + %%
314 -\> \raise -.1ex\hbox{\includegraphics[height=.9em]{neco.pdf}} is fast
315 - at that! {;-)}
316 27
317 -%% 28 + \begin{textblock}{21}(0,0)
318 -%% 29 + \begin{tikzpicture}[yellow!70,yscale=-1]
319 -%% 30 + \draw[densely dotted] (0,0) grid (21,30);
31 + \foreach \x in {1,...,20} {
32 + \node at (\x,.5) {\x};
33 + }
34 + \foreach \y in {1,...,29} {
35 + \node at (.5,\y) {\y};
36 + }
37 + \end{tikzpicture}
38 + \end{textblock}
320 39
321 -\end{textblock} 40 + %%
41 + %% title & logos
42 + %%
322 43
323 -%%
324 -%% flush top
325 -%%
326 44
327 -\vspace*{150cm}
328 \end{frame} 45 \end{frame}
329 -\end{document}
...\ No newline at end of file ...\ No newline at end of file
46 +\end{document}
......