Declare possible 'print' argument; unused now.
[www.jankratochvil.net.git] / resume / Resume-JanKratochvil.html.pl
1 #! /usr/bin/perl
2
3 # $Id$
4 # Resume page Perl template.
5 # Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
6
7 # This program is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; exactly version 2 of June 1991 is required
10
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU General Public License for more details.
15
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19
20
21 package resume::ResumeJanKratochvil;
22 require 5.6.0;  # at least 'use warnings;' but we need some 5.6.0+ modules anyway
23 use vars qw($VERSION $CVS_ID);
24 $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
25 $CVS_ID=q$Id$;
26 use strict;
27 use warnings;
28
29 BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
30 use My::Web;
31 require CGI;
32 require Crypt::Rot13;
33 Wrequire 'My::Project';
34
35
36 my $W=My::Web->init(
37                 "__PACKAGE__"=>__PACKAGE__,
38                 "title"=>"Resume",
39                 "section"=>"Resume",
40                 "heading"=>0,
41                 "footer"=>0,
42                 "head_css"=>"
43 td { vertical-align: top; }
44 table { border-collapse: collapse; border-style: solid; border-width: 1px; margin: 8px; }
45 A[href] { text-decoration: inherit; /* revoke underline */ }
46 A[href].project { text-decoration: underline; }
47 .platform { font-style: italic; white-space: nowrap; }
48 table.referees td.com { text-align: center; }
49 .techs { white-space: nowrap; }
50 ",
51                 "args_check"=>{
52                                 "referees"=>'', # Do not bother with '^(?:(?i)referees)?$'
53                                 "print"=>'^(?:print)?$',
54                                 },
55                 );
56 My::Web->heading();
57
58
59 my %item=( My::Project::item_hash_read() );
60 my @itemnames=sort {
61                 ($item{$b}{"priority"} <=> $item{$a}{"priority"})
62                 or (lc($item{$a}->{"name"}) cmp lc($item{$b}->{"name"}));
63                 } keys(%item);
64
65 my $projectref=sub
66 {
67 my($name)=@_;
68
69         return a_href "/project/$name/",$item{$name}{"name"},"attr"=>'class="project"';
70 };
71
72 my $project=sub
73 {
74 my($name,%args)=@_;
75
76         return &{$projectref}($name).($args{"bare"} ? '' : ': '.$item{$name}{"summary"});
77 };
78
79 my $free_projects=sub (@)
80 {
81 my(@platforms)=@_;
82
83         my $r="";
84         $r.=join ", ",map({ my $platform=$_;
85                 map({ ($item{$_}{"sponsorship"} || $item{$_}{"trivia"}
86                                 || $item{$_}{"platform"} ne $platform ? () : (&{$projectref}($_))); } @itemnames);
87                 } @platforms);
88         return $r;
89 };
90
91
92 my $reference=sub ($$)
93 {
94 my($mail,$fullname)=@_;
95
96         my $r="";
97         $r.='<td>';
98                 $r.=$fullname;
99                 if (lc($W->{"args"}{"referees"}) eq "referees") {
100                         my $rot13=Crypt::Rot13->new();
101                         $rot13->charge($mail);
102                         $mail=($rot13->rot13())[0];
103                         $r.=' &lt;'.a_href("mailto:$mail",$mail).'&gt;';
104                         }
105         $r.='</td>';
106         return $r;
107 };
108
109 sub techs ($)
110 {
111 my($arg)=@_;
112
113         return '<span class="techs">('.$arg.')</span>';
114 }
115
116
117 my $uClinux=a_href 'http://www.uclinux.com/','uClinux';
118 my $mailme=(map({ a_href("mailto:$_",$_); } 'job@jankratochvil.net'))[0];
119 my $now=(localtime())[5]+1900;
120
121 print <<"HERE";
122 <table width="100%" style="border-style: none;"><tr><td align="center"><table>
123 <tr><td rowspan="10" style="padding: 10px; vertical-align: middle;">
124                                 @{[ img "/resume/Resume-JanKratochvil","face" ]}</td>
125                 <td class="tab-head">Name    </td><td>Jan Kratochvil</td></tr>
126 <tr><td class="tab-head">English </td><td>technical: fluent, general: communicable</td></tr>
127 <tr><td class="tab-head">Born    </td><td>1979</td></tr>
128 <tr><td class="tab-head">Sex     </td><td>male</td></tr>
129 <tr><td class="tab-head">Status  </td><td>single</td></tr>
130 <tr><td class="tab-head">Licenses</td><td>motorcycle, car</td></tr>
131 <tr><td class="tab-head">eMail   </td><td>$mailme</td></tr>
132 <tr><td class="tab-head">WWW     </td><td>@{[ a_href('http://www.jankratochvil.net/') ]}</td></tr>
133 <tr><td class="tab-head">Resume  </td><td>@{[ a_href('http://www.jankratochvil.net/resume/') ]}<br />
134                                           [ @{[ a_href('/resume/Resume-JanKratochvil.txt','plain text') ]} ]</td></tr>
135 <tr><td class="tab-head">OpenPGP </td><td style="font-family: monospace;">@{[ a_href '/pgp-JanKratochvil.txt',''
136                 .'pub  1024D/44FC7632 2002-10-07 Jan Kratochvil &lt;pgp-44FC7632@jankratochvil.net&gt;<br />'
137                 .'sub  2048g/D9F5F44B 2002-10-07 [expires 2004-10-06]' ]}</span></td></tr>
138 </table></td></tr></table>
139
140 @{[ vskip "2ex" ]}
141
142 <table>
143 <tr><td class="tab-head">Platforms    </td><td>GNU/Linux/i386/UNIX/FreeBSD, W32 kernel, Amiga/680x0, MS-DOS,
144                                                ZX Spectrum, handheld PC-E500S</td></tr>
145 <tr><td class="tab-head">Major Areas  </td><td>mobile technologies, filesystems, embedded devices</td></tr>
146 <tr><td class="tab-head">Languages    </td><td>C (Gnome/GCC), Perl, bash/awk/sed...,
147                                                Java, C++, Pascal, Basic, REXX, S-Lang, Foxplus, Prolog</td></tr>
148 <tr><td class="tab-head">Tools/Metalanguages</td>
149                                            <td>autoconf, automake, libtool, m4, CVS, gettext, bison, flex, ld&nbsp;script,
150                                                gdb&nbsp;script, Maple&nbsp;V</td></tr>
151 <tr><td class="tab-head">Assemblers   </td><td>i386, Motorola 680x0, Zilog&nbsp;Z80, Intel 8051, MIPS R2/3000,
152                                                (Hitachi SH-8)</td></tr>
153 <tr><td class="tab-head">WWW-Related  </td><td>(X)HTML, CSS, PHP, SQL (PostgreSQL, MySQL), JavaScript, CGI</td></tr>
154 <tr><td class="tab-head">Documentation</td><td>plainTeX, LaTeX, DocBook, DocBook Lite, XML/NS/Schema, nroff, pod</td></tr>
155 <tr><td class="tab-head">Libraries    </td><td>Gnome/GTK+/GLib, POSIX/BSD/SysV/threads/sockets, X11, OpenGL, NCurses,
156                                                S-Lang, GnomeVFS, libxml, SVGALib, NIS, Qt,...</td></tr>
157 <tr><td class="tab-head">RPC          </td><td>CORBA/ORBit, SOAP, WSDL, Sun&nbsp;RPC</td></tr>
158 <tr><td class="tab-head">Protocols    </td><td>GSM SMS/PDU/Nokia&nbsp;Smart&nbsp;Messaging/EMS/MMS/SMIL/WAP/WSP/AMR/ETSI stds/3GPP stds,
159                                                IPv4, HTTP, SMTP/RFC822/MIME, FTP, SSH, DHCP, POP3, NFSv2, PPP/LCP/IPCP,...</td></tr>
160 <tr><td class="tab-head">Filesystems  </td><td>ext2, FAT, AmigaFFS, ISO-9660</td></tr>
161 <caption>Each technology involved in at least one of my past projects.</caption>
162 </table>
163
164 @{[ vskip "2ex" ]}
165
166 <table>
167 <tr><td>1984-1991</td><td class="platform">Platform:</td><td>Sinclair ZX Spectrum: Basic, Zilog Z80 machine code</td></tr>
168 <tr><td>1992-1997</td><td class="platform">Platform:</td><td>Amiga: Motorola 680x0 assembler, C, REXX</td></tr>
169 <tr><td>         </td><td class="platform">Projects:</td><td>@{[ &{$free_projects}("amiga") ]}</td></tr>
170 <tr><td>1993-1997</td><td class="platform">Platform:</td><td>PC/MS-DOS: i386 assembler, C, Pascal, OpenGL/Mesa, Foxplus</td></tr>
171 <tr><td>         </td><td class="platform">Unlisted Projects:</td><td>@{[ &{$free_projects}("dos") ]}</td></tr>
172 <tr><td>1993     </td><td class="com">@{[ a_href('http://www.japhila.cz/index_en.htm','Japhila') ]}</td>
173                 <td>StampMan: Database application @{[ techs 'MS-DOS: Pascal, plainTeX' ]}</td></tr>
174 <tr><td>1993-$now</td><td class="platform">Platform:</td><td>PC/GNU/Linux:
175                                                        C, Perl, bash/awk/sed..., Java, C++, ...</td></tr>
176 <tr><td>         </td><td class="platform">Unlisted Projects:</td><td>@{[ &{$free_projects}(qw(unixuser unixdevel web)) ]}</td></tr>
177 <tr><td>1993-1996</td><td class="com">Profes J&amp;K</td>
178                 <td>PC assembly and customer service</td></tr>
179 <tr><td>1998     </td><td class="com">@{[ a_href('http://www.elsa-online.org/',"European Law Students' Association") ]}</td>
180                 <td>@{[ &$project('step') ]} @{[ techs 'PHP, PostgreSQL' ]}<br />
181                     subtasks @{[ &$project('phphash',"bare"=>1) ]}, @{[ &$project('pgsqlsubstr',"bare"=>1) ]}</td></tr>
182 <tr><td>1998-1999</td><td class="com">@{[ a_href('http://www.geoinvest.cz/','Geoinvest') ]}</td>
183                 <td>@{[ a_href 'http://members.tripod.com/Stelios_Cellar/GSM/m1module.htm','Siemens M1' ]}
184                                                 GSM modem daemon, client/server, remote GSM terminals @{[ techs 'C, GSM, GPS, S-Lang' ]}<br />
185                                 GPLed subtask @{[ &$project('vblib') ]} @{[ techs 'C' ]}</td></tr>
186 <tr><td>1999     </td><td class="com">@{[ a_href('http://www.tencom.cz/','TENcom Trade') ]}</td>
187                 <td>@{[ a_href "/project/mdsms/","MobilDock SMS Tool","attr"=>'class="project"' ]} @{[ techs 'GSM/PDU' ]}</td></tr>
188 <tr><td>1999     </td><td class="com">@{[ a_href('http://www.geoinvest.cz/','Geoinvest') ]}</td>
189                 <td>@{[ &$project('332') ]} @{[ techs 'M680x0 asm, C' ]}<br />
190                                 subtask @{[ &$project('mot2as') ]}</td></tr>
191 <tr><td>1999     </td><td class="com">@{[ a_href('http://www.unicom-prague.cz/','Unicom') ]}</td>
192                 <td>Technical translations from English</td></tr>
193 <tr><td>1999-$now</td><td class="com">@{[ a_href('http://www.jklabs.cz/','JKLabs') ]}</td>
194                 <td>sysadmin GNU/Linux and FreeBSD, techsupport: GuestNET,
195                                 @{[ a_href 'http://www.2m.dk/web/html_version/eclipse/eclipse.html','Eclipse' ]},
196                                 @{[ a_href 'http://www.globaloop.com/','GlobaLoop' ]},
197                                 @{[ a_href 'http://www.antlimited.com/products/fresco.htm','Fresco' ]}</td></tr>
198 <tr><td>1999     </td><td class="com">@{[ a_href('http://www.jklabs.cz/','JKLabs') ]}</td>
199                 <td>IRQ redirector for legacy devices @{[ techs 'i386 asm' ]}</td></tr>
200 <tr><td>1999-2000</td><td class="com">@{[ a_href('http://www.suse.com/','SuSE') ]}</td>
201                 <td>@{[ &$project('surprise') ]} @{[ techs 'C, Gnome, m4' ]}<br />
202                                 subtask @{[ &$project('int13sniff') ]}<br />
203                                 subtask @{[ &$project('gladewsrc') ]}</td></tr>
204 <tr><td>2001     </td><td class="com">@{[ a_href('http://www.gtsgroup.cz/','GTS') ]}</td>
205                 <td>@{[ &$project('tac_plus') ]} @{[ techs 'C, Cisco TACACS+' ]}<br />
206                                 subtask @{[ &$project('mod_auth_tacacs') ]} @{[ techs 'C, Cisco TACACS+' ]}</td></tr>
207 <tr><td>2001     </td><td class="com">@{[ a_href('http://www.atspraha.cz/','Advanced Telecom Services') ]}</td>
208                 <td>@{[ &$project('mdsms') ]} - update for
209                                 @{[ a_href 'http://www.transportdata.de/html/produkte/siemens_m20t.php?lang=en',
210                                                 'Siemens M20' ]}
211                                 @{[ techs 'C, GSM PDU' ]}</td></tr>
212 <tr><td>2001     </td><td class="com">@{[ a_href('http://www.atspraha.cz/','Advanced Telecom Services') ]}</td>
213                 <td>@{[ a_href 'http://www.gnokii.org/','gnokii' ]}
214                                                 @{[ a_href 'http://www.jankratochvil.net/priv/gnokii/gnokii-lace-2001-11-17-01.tar.gz',
215                                                                 'driver for SMS gateway' ]}
216                                                 of GSM operator @{[ a_href('http://www.eurotel.cz/','EuroTel') ]}
217                                 (C, PostgreSQL)</td></tr>
218 <tr><td>2001     </td><td class="com">@{[ a_href('http://www.atspraha.cz/','Advanced Telecom Services') ]}</td>
219                 <td>@{[ &$project('gsmperl') ]} @{[ techs 'Perl, GSM EMS' ]}</td></tr>
220 <tr><td>2001     </td><td class="com">@{[ a_href('http://www.netcentrum.cz/','NetCentrum') ]}</td>
221                 <td>@{[ a_href 'http://www.gnokii.org/','gnokii' ]}
222                                 @{[ a_href 'http://www.jankratochvil.net/priv/gnokii/gnokii-0.4.0pre1_lace2001_11_14_01_netcentrum.diff',
223                                                 'driver for custom SMS gateway protocol' ]} @{[ techs 'C' ]}</td></tr>
224 <tr><td>2001     </td><td class="com">@{[ a_href('http://www.readynote.com/','ReadyNote') ]}</td>
225                 <td>@{[ &$project('mdsms') ]} port to embedded $uClinux
226                                 @{[ techs 'GSM, Nokia, uClinux' ]}</td></tr>
227 <tr><td>2002     </td><td class="com">@{[ a_href('http://www.readynote.com/','ReadyNote') ]}</td>
228                 <td>@{[ a_href 'http://www.mwiacek.com/gsm/gammu/gammu.html','mygnokii' ]}
229                                 @{[ a_href 'http://www.jankratochvil.net/priv/gnokii/mygnokii-0.3.3_pre8-gold_2002_03_10--uClinux2002_03_17_23_03/',
230                                                 'port to embedded' ]} $uClinux,
231                 @{[ a_href 'http://www.nokiausa.com/phones/5190/1,1162,,00.html','Nokia 5190' ]}
232                                 @{[ a_href 'http://www.jankratochvil.net/priv/gnokii/mygnokii-0.3.3_pre8-gold_2002_02_24-decodefile/',
233                                                 'sw-modem debugging' ]}
234                 @{[ techs 'GSM, Nokia, uClinux' ]}</td></tr>
235 <tr><td>2002     </td><td class="com">@{[ a_href('http://www.jklabs.cz/','JKLabs') ]}</td>
236                 <td>@{[ &$project('ssht') ]}</td></tr>
237 <tr><td>2002     </td><td class="com">@{[ a_href('http://www.jklabs.cz/','JKLabs') ]}</td>
238                 <td>@{[ &$project('middleman') ]}
239                                 for hotel system @{[ techs 'C, BSD, HTTP' ]}</td></tr>
240 <tr><td>2002     </td><td class="com">@{[ a_href('http://www.atspraha.cz/','Advanced Telecom Services') ]}</td>
241                 <td>MMS framework client via @{[ a_href('http://www.eurotel.cz/site/en/home/','EuroTel') ]} GSM operator
242                                                 (GSM MMS, Perl, XML, SOAP)<br />
243                                 subtasks @{[ a_href "/etmms/",'MMS center debugging',"attr"=>'class="project"' ]},
244                                                 @{[ &$project('etherealmmse',"bare"=>1) ]}, @{[ &$project('etherealwsp',"bare"=>1) ]}</td></tr>
245 <caption>Contractor Jobs</caption>
246 </table>
247
248 @{[ vskip "1ex" ]}
249
250 <table class="referees">
251 <tr><td class="com">@{[ a_href('http://www.japhila.cz/index_en.htm','Japhila') ]}</td>
252                 @{[ &{$reference}('wnavx(ng)wncuvyn.pbz','Bretislav Janik') ]}</tr>
253 <tr><td class="com">@{[ a_href('http://www.geoinvest.cz/','Geoinvest') ]}</td>
254                 @{[ &{$reference}('ohgna(ng)trbvairfg.pm','Lubor Otta') ]}</tr>
255 <tr><td class="com">@{[ a_href('http://www.tencom.cz/','TENcom Trade') ]}</td>
256                 @{[ &{$reference}('grfne(ng)grapbz.pm','Petr Tesar') ]}</tr>
257 <tr><td class="com">@{[ a_href('http://www.unicom-prague.cz/','Unicom') ]}</td>
258                 @{[ &{$reference}('erprcpr(ng)havpbz-centhr.pm','Valerie Bernardova') ]}</tr>
259 <tr><td class="com">@{[ a_href('http://www.jklabs.cz/','JKLabs') ]}</td>
260                 @{[ &{$reference}('wna.xbyne(ng)wxynof.pm','Jan Kolar') ]}</tr>
261 <tr><td class="com">@{[ a_href('http://www.gtsgroup.cz/','GTS') ]}</td>
262                 @{[ &{$reference}('Zvpunry.Znprx(ng)tgftebhc.pm','Michael Macek') ]}</tr>
263 <tr><td class="com">@{[ a_href('http://www.atspraha.cz/','Advanced Telecom Services') ]}</td>
264                 @{[ &{$reference}('zvpuny.ubenx(ng)ngfcenun.pm','Michal Horak') ]}</tr>
265 <tr><td class="com">@{[ a_href('http://www.readynote.com/','ReadyNote') ]}</td>
266                 @{[ &{$reference}('wcehrgg(ng)ernqlabgr.pbz','Jim Pruett') ]}</tr>
267 HERE
268
269 if (lc($W->{"args"}{"referees"}) ne "referees") {
270         print <<"HERE";
271                 <tr><td style="padding: 10px;" colspan="2">
272                         <hr />
273                         <form method="post" action="@{[ top_dir $W->{"resume_url"} ]}">
274                                 <p>Enter the word '<b>referees</b>' (without quotes) to disclose e-mail addresses:</p>
275                                 <input type="text" size="15" name="referees" value="@{[ CGI::escapeHTML($W->{"args"}{"referees"}) ]}" />
276                                 <input type="submit" value="Submit" />
277                                 <p>(spambot protection)</p>
278                         </form>
279                 </td></tr>
280 HERE
281         }
282
283 print <<"HERE";
284 <caption>Contractor Jobs Referees (chronologically)</caption>
285 </table>
286
287 @{[ vskip "2ex" ]}
288
289 <table>
290 <tr><td>1995</td><td>7th in the Central European Olympiad in Informatics</td></tr>
291 <tr><td>1996</td><td>4th in the International Competition in Programming</td></tr>
292 <tr><td>1997</td><td>1st in the International Competition in Programming</td></tr>
293 <tr><td>1997</td><td>2nd in an MO-P national contest - mathematics Olympiad, the programming category</td></tr>
294 <tr><td>1997</td><td>Bronze medal in the International Olympiad in Informatics, South Africa - Cape Town</td></tr>
295 </table>
296
297 @{[ vskip "3ex" ]}
298
299 <p style="font-size: larger;">Looking for a fulltime job. Relocation around the world expected.</p>
300 <p style="font-size: larger;">Contact: $mailme</p>
301 HERE
302
303
304 My::Web->footer();