2 # Resume page Perl template.
3 # Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; exactly version 2 of June 1991 is required
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 package resume::ResumeJanKratochvil;
20 require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
21 use vars qw($VERSION $CVS_ID);
22 $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
29 Wrequire 'project::Lib';
37 "Name" =>"Jan Kratochvil",
38 "English" =>"technical: fluent, general: communicable",
41 "Licenses"=>"motorcycle, car",
42 "eMail" =>(map({ a_href("mailto:$_",$_); } 'job@jankratochvil.net'))[0],
43 "Projects"=>a_href('http://www.jankratochvil.net/project/'),
44 "Resume" =>a_href('http://www.jankratochvil.net/resume/')."<br />"
45 ."[ ".a_href('/resume/ResumeJanKratochvil.pdf','PDF')
46 ."| ".a_href('/resume/ResumeJanKratochvil.txt','text')
48 "OpenPGP" =>a_href('/pgp-JanKratochvil.txt','')
49 .'pub 1024D/26A802B2 2004-01-17'."<br />"
50 .'sub 2048g/A74DF86D 2004-01-17 [expires: 2007-01-16]'
61 "css_push"=>"/resume/ResumeJanKratochvil.css",
63 "referees"=>'', # Do not bother with '^(?:(?i)referees)?$'
64 "print"=>'^(?:print)?$',
66 "http_safe"=>1, # For our anti-robot POST request.
68 $W->{"args"}{"Wabs"}=1;
72 my %item=project::Lib->name_to_hashref();
74 ($item{$b}{"priority"} <=> $item{$a}{"priority"})
75 or (lc($item{$a}->{"name"}) cmp lc($item{$b}->{"name"}));
82 return a_href "/project/$name/",$item{$name}{"name"},"attr"=>'class="project"';
89 my $r=&{$projectref}($name);
91 my $summary=$item{$name}{"summary"};
92 $summary=~s#(?:<a\s[^>]*>|</a>)##gi; # if $args{"unhref"};
93 if (!$args{"parenthesis"}) {
103 my $free_projects=sub (@)
108 $r.=join ", ",map({ my $platform=$_;
109 map({ ($item{$_}{"sponsorship"} || $item{$_}{"trivia"}
110 || $item{$_}{"platform"} ne $platform ? () : (&{$projectref}($_))); } @itemnames);
116 my $reference=sub ($$)
118 my($mail,$fullname)=@_;
123 if (lc($W->{"args"}{"referees"}) eq "referees") {
124 my $rot13=Crypt::Rot13->new();
125 $rot13->charge($mail);
126 $mail=($rot13->rot13())[0];
127 $r.=' <'.a_href("mailto:$mail",$mail).'>';
137 return '<span class="techs">('.$arg.')</span>';
141 my $uClinux=a_href 'http://www.uclinux.com/','uClinux';
142 my $now=(localtime())[5]+1900;
145 <table border="0" class="margin-center">
147 my @contact=__PACKAGE__->Contact();
149 my $key=shift @contact;
150 my $val=shift @contact;
153 <td class="tab-head">$key</td>
154 <td@{[ ($key ne "OpenPGP" ? '' : ' style="font-family: monospace; text-align: left;"') ]}>$val</td>
163 <table border="1" frame="border" rules="rows" class="jobs">
164 <caption>Fulltime Jobs</caption>
165 <tr><th>Date</th><th>Company</th>
166 <th>Description</th></tr>
167 <tr><td>2005/04-now</td><td class="com">@{[
168 a_href_cc {""=>'http://www.valinux.co.jp/en/',
169 "JP"=>'http://www.valinux.co.jp/'},'VA Linux Systems Japan' ]}</td>
170 <td>@{[ a_href 'http://www.kernel.org/','Linux kernel' ]}
171 based development</td></tr>
172 <tr><td>2004/01-11</td><td class="com">@{[ a_href 'http://www.sun.com/','Sun Microsystems' ]}</td>
173 <td>@{[ a_href 'http://www.sun.com/software/javaenterprisesystem/','Java Enterprise System' ]}
174 Quality Assurance (JES QA), technical lead<br />
175 JES components compatibility analysis, automation of QA tasks,
176 JES testing, QA frameworks pilot deployments,
177 architecture and lead of the team projects, team programming guidelines
183 <table border="1" frame="border" rules="rows" class="jobs">
184 <caption>Contractor Jobs</caption>
185 <tr><th>Date</th><th>Client</th>
186 <th>Description</th></tr>
187 <tr><td>2002-2003</td><td class="com">- (freelance project)</td>
188 <td>@{[ &$project('captive') ]}<br />
189 Featured @{[ a_href 'http://slashdot.org/article.pl?sid=03/12/02/1536227','on slashdot' ]}.<br />
190 Analysis of portions of 80MB+ i386 disassembly dumps of MS-Windows XP kernel and ntfs.sys
191 for the first binary compatible reimplementation of the undocumented XP kernel subsystems.<br />
192 Written @{[ &$project('TraceFS') ]}: MS-Windows Kernel API Tracer
193 as native W32 kernel hooking driver for run-time analysis of the NT Cache Manager
194 XP kernel subsystem.<br />
195 UNIX userland of Captive provides GnomeVFS interface to the MS-Windows kernel
196 based MS-Windows filesystem isolated by the CORBA/ORBit interface.
198 <tr><td>2001-2002</td><td class="com">@{[ a_href('http://www.atspraha.cz/','Advanced Telecom Services') ]}</td>
199 <td>Mobile technologies
201 <li>MMS framework client via EuroTel GSM operator
202 by technologies GSM MMS, Perl, XML, SOAP<br />
204 @{[ a_href "/etmms/",'pilot MMS Center debugging',"attr"=>'class="project"' ]} with
205 Ethereal (@{[ a_href 'http://www.ethereal.com','external link' ]}), fixes of Ethereal
206 (@{[ a_href '/project/etherealmmse/','1' ]}, @{[ a_href '/project/etherealwsp/','2' ]}).
208 <li>Multimedia EMS support implemented by @{[ &$project('gsmperl',"bare"=>1) ]}</li>
209 <li>Implementation of protocol BIP (based on Nokia CIMD2 protocol) for GSM SMS Center direct communication
210 by extending gnokii (@{[ a_href 'http://www.gnokii.org/','external link' ]})
211 for EuroTel GSM operator</li>
214 <tr><td>1999-2000</td><td class="com">@{[ a_href('http://www.suse.com/','SuSE') ]}</td>
215 <td>@{[ &$project('surprise') ]}<br />
216 Project was completed as a team work. The code is based on Gnome technologies.
217 As one of the subtasks to keep system bootability I implemented @{[ &$project('int13sniff',"bare"=>1) ]}
218 to ease Microsoft boot loaders disassembly across partition modifications.
220 <tr><td>2001-2002</td><td class="com">@{[ a_href('http://www.readynote.com/','ReadyNote') ]}</td>
221 <td>Mobile technologies for embedded devices
223 <li>Completed debugging of gnokii (@{[ a_href 'http://www.gnokii.org/','external link' ]}) GSM software modem
225 <li>Port of gnokii and my @{[ &$project('mdsms',"parenthesis"=>1) ]} to embedded
226 uClinux (@{[ a_href 'http://www.uclinux.org/','external link' ]})</li>
229 <tr><td>1999-2003</td><td class="com">@{[ a_href('http://www.jklabs.cz/','JKLabs') ]}</td>
230 <td>System administration of GNU/Linux and FreeBSD, techsupport: GuestNET,
231 @{[ a_href 'http://www.2m.dk/web/html_version/eclipse/eclipse.html','Eclipse' ]},
232 @{[ a_href 'http://www.globaloop.com/','GlobaLoop' ]},
233 @{[ a_href 'http://www.antlimited.com/products/fresco.htm','Fresco' ]}<br />
234 Ad hoc technical support challenges such as i386 IRQ redirector,
235 @{[ &$project('middleman',"parenthesis"=>1,"unhref"=>1) ]} or @{[ &$project('ssht',"parenthesis"=>1,"unhref"=>1) ]}.
237 <tr><td>2001 </td><td class="com">@{[ a_href('http://www.gtsgroup.cz/','GTS') ]}</td>
238 <td>@{[ &$project('tac_plus') ]}</td></tr>
239 <tr><td>1999 </td><td class="com">@{[ a_href('http://www.unicom-prague.cz/','Unicom') ]}</td>
240 <td>Technical translations from English</td></tr>
241 <tr><td>1998-1999</td><td class="com">@{[ a_href('http://www.geoinvest.cz/','Geoinvest') ]}</td>
242 <td>Mobile technologies, embedded devices
244 <li>@{[ &$project('332') ]}</li>
245 <li>Siemens M1 GSM modem daemon for GPS, client/server setup, remote GSM terminals</li>
248 <tr><td>1999 </td><td class="com">@{[ a_href('http://www.tencom.cz/','TENcom Trade') ]}</td>
249 <td>Mobile technologies
251 <li>@{[ a_href "/project/mdsms/","MobilDock SMS Tool","attr"=>'class="project"' ]}:
252 SMS communication software for Digital UNIX</li>
255 <tr><td>1998 </td><td class="com">@{[ a_href('http://www.elsa-online.org/',"European Law Students' Association") ]}</td>
256 <td>@{[ &$project('step') ]} incl. fixes of
257 @{[ a_href "/project/phphash/","PHP","attr"=>'class="project"' ]} and
258 @{[ a_href "/project/pgsqlsubstr/","PostgreSQL","attr"=>'class="project"' ]}</td></tr>
259 <tr><td>1993-1996</td><td class="com">Profes J&K</td>
260 <td>PC assembly and customer service</td></tr>
261 <tr><td>1993 </td><td class="com">@{[ a_href('http://www.japhila.cz/index_en.htm','Japhila') ]}</td>
262 <td>StampMan: Database application @{[ techs 'MS-DOS: Pascal, plainTeX' ]}</td></tr>
267 <table class="referees">
268 <caption>Contractor Jobs Referees (reversed chronological order)</caption>
269 <tr><td class="com">@{[ a_href('http://www.sun.com/','Sun Microsystems') ]}</td>
270 @{[ &{$reference}('xnery.mngybhxny(ng)fha.pbz','Karel Zatloukal') ]}</tr>
271 <tr><td class="com">@{[ a_href('http://www.atspraha.cz/','Advanced Telecom Services') ]}</td>
272 @{[ &{$reference}('zvpuny.ubenx(ng)ngfcenun.pm','Michal Horak') ]}</tr>
273 <tr><td class="com">@{[ a_href('http://www.readynote.com/','ReadyNote') ]}</td>
274 @{[ &{$reference}('wcehrgg(ng)ernqlabgr.pbz','Jim Pruett') ]}</tr>
275 <tr><td class="com">@{[ a_href('http://www.jklabs.cz/','JKLabs') ]}</td>
276 @{[ &{$reference}('wna.xbyne(ng)wxynof.pm','Jan Kolar') ]}</tr>
277 <tr><td class="com">@{[ a_href('http://www.gtsgroup.cz/','GTS') ]}</td>
278 @{[ &{$reference}('Zvpunry.Znprx(ng)tgftebhc.pm','Michael Macek') ]}</tr>
279 <tr><td class="com">@{[ a_href('http://www.unicom-prague.cz/','Unicom') ]}</td>
280 @{[ &{$reference}('erprcpr(ng)havpbz-centhr.pm','Valerie Bernardova') ]}</tr>
281 <tr><td class="com">@{[ a_href('http://www.geoinvest.cz/','Geoinvest') ]}</td>
282 @{[ &{$reference}('ohgna(ng)trbvairfg.pm','Lubor Otta') ]}</tr>
283 <tr><td class="com">@{[ a_href('http://www.tencom.cz/','TENcom Trade') ]}</td>
284 @{[ &{$reference}('grfne(ng)grapbz.pm','Petr Tesar') ]}</tr>
285 <tr><td class="com">@{[ a_href('http://www.japhila.cz/index_en.htm','Japhila') ]}</td>
286 @{[ &{$reference}('wnavx(ng)wncuvyn.pbz','Bretislav Janik') ]}</tr>
289 if (lc($W->{"args"}{"referees"}) ne "referees") {
291 <tr><td style="padding: 10px;" colspan="2">
293 <form action="@{[ uri_escaped(path_web $W->{"resume_url"}) ]}" @{[ form_method "post" ]}>
294 <p>Enter the word '<b>referees</b>' (without quotes) to disclose e-mail addresses:<br />
295 <input type="text" size="15" name="referees" value="@{[ escapeHTML($W->{"args"}{"referees"}) ]}" /><br />
296 <input type="submit" value="Submit" /><br />
297 (spambot protection)</p>
309 <caption>Awards</caption>
310 <tr><td>1997</td><td>Bronze medal in the International Olympiad in Informatics, South Africa - Cape Town</td></tr>
311 <tr><td>1997</td><td>2nd in an MO-P national contest - mathematics Olympiad, the programming category</td></tr>
312 <tr><td>1997</td><td>1st in the International Competition in Programming</td></tr>
313 <tr><td>1996</td><td>4th in the International Competition in Programming</td></tr>
314 <tr><td>1995</td><td>7th in the Central European Olympiad in Informatics</td></tr>
320 <caption>Experience Summary</caption>
321 <tr><td class="tab-head">Major Areas </td><td>mobile technologies, filesystems, embedded devices</td></tr>
322 <tr><td class="tab-head">Platforms </td><td>GNU/Linux/i386/UNIX/FreeBSD, W32 kernel, Amiga/680x0, MS-DOS,
323 ZX Spectrum, handheld PC-E500S</td></tr>
324 <tr><td class="tab-head">Languages </td><td>C (Gnome/GCC), Perl, bash/awk/sed...,
325 Java, C++, Pascal, Basic, REXX, S-Lang, Foxplus, Prolog</td></tr>
326 <tr><td class="tab-head">Tools/Metalanguages</td>
327 <td>autoconf, automake, libtool, m4, CVS, gettext, bison, flex, ld script,
328 gdb script, Maple V</td></tr>
329 <tr><td class="tab-head">Assemblers </td><td>i386/x86_64, Motorola 680x0, Zilog Z80, Intel 8051, MIPS R2/3000,
330 (Hitachi SH-8)</td></tr>
331 <tr><td class="tab-head">WWW-Related </td><td>HTML/XHTML, CSS, PHP, SQL (PostgreSQL, MySQL), JavaScript, CGI</td></tr>
332 <tr><td class="tab-head">Documentation</td><td>plainTeX, LaTeX, DocBook, DocBook Lite, XML/NS/Schema,
333 gtk-doc, nroff, pod</td></tr>
334 <tr><td class="tab-head">Libraries </td><td>Gnome/GTK+/GLib, POSIX/BSD/SysV/threads/sockets, X11, OpenGL, NCurses,
335 S-Lang, GnomeVFS, libxml, SVGALib, NIS, Qt,...</td></tr>
336 <tr><td class="tab-head">RPC </td><td>CORBA/ORBit, SOAP, WSDL, Sun RPC</td></tr>
337 <tr><td class="tab-head">Protocols </td><td>GSM SMS/PDU/Nokia Smart Messaging/EMS/WAP/WTP/WSP/MMSE/SMIL/WML/AMR/ETSI stds/3GPP stds,
338 IPv4, HTTP, SMTP/RFC822/MIME, FTP, SSH, DHCP, POP3, NFS v2/v3, PPP/LCP/IPCP,...</td></tr>
339 <tr><td class="tab-head">Filesystems </td><td>ext2, FAT, AmigaFFS, ISO-9660</td></tr>
344 <table border="1" frame="border" rules="groups">
345 <caption>My Own Free Projects</caption>
347 <tr><td colspan="2" style="font-size: larger;" align="center">
348 Detailed listing available at: @{[ a_href 'http://www.jankratochvil.net/projects/' ]}
352 <tr><th>Platform</th><th>Available Free Projects</th></tr>
354 my @platforms=@project::Lib::platforms;
356 my $platform_sym =shift @platforms;
357 my $platform_name=shift @platforms;
359 print '<td>'.a_href('/project/#'.$platform_sym,$platform_name).'</td>';
360 print '<td>'.&{$free_projects}($platform_sym).'</td>';