;; resume including open source, branched off hg bbe8e0a7967f (use sxml-transforms) (use doctype) (use sxml-tools) ;; sxpath (define *local-testing* #f) ;; resume.scm makes heavy use of sxpath. Unlike eggdoc, many elements ;; are taken out of order, strung together in odd ways ( / and - ) and ;; there are numerous attributes. Instead of letting the stylesheet ;; take care of elements as they occur in pre-order, we often ;; explicitly reach down and pull tags out in the current context ;; using sxpath, and patch all of them together in a single stylesheet ;; rule. This resembles very much the structure of the original ;; resume.xml / .xsl documents. (elt-value 'name) resembles ;; , and (elt 'desc) resembles ;; . ;; Procedure to grab contents of context node (not including attributes). (define elt-contents (sxpath '((*not* @)))) ;; Grab attribute text by name given context node. (define (att name context) ((sxpath `(@ ,name *text*)) context)) ;; Grab element by name given context node. (define-macro (elt name context) `((sxpath (list ,name)) ,context)) ;; Grab element by name with ELT, then strip off the element tag. ;; Returns '() if not found, same as ELT. (define (elt-value name context) (let ((e (elt name context))) (if (null? e) '() (cdar e)))) (define (unordered-list elts) `(ul ,(map (lambda (x) (list 'li x)) elts))) (define (style-href sheet-basename) `(href ,(string-append (if *local-testing* "" "/") "css/" sheet-basename ".css"))) (define ss `( (*PI* . ,(lambda (tag . args) '())) (*TOP* *macro* . ,(lambda (tag . args) `( (doctype) ,args))) (doctype . ,(lambda (tag) doctype:xhtml-1.0-strict)) (resume *macro* . ,(lambda (tag identity . sections) `( (html (head (title "Ursetto Consulting, Inc. - Resume for James F. Ursetto") (link (@ (rel "stylesheet") ,(style-href "simple"))) (link (@ (rel "stylesheet") (media "screen") ,(style-href "resume-os"))) (link (@ (rel "stylesheet") (media "print") ,(style-href "resume-os-print")))) (body (@ (class "resume")) ;; .xsl explicitly pulls out 'identity and 'section ;; tags, instead of letting them do their thing as encountered. ;; 'Sections as a whole are surrounded with a "main" div. ;; We can simulate this by calling pre-post-order recursively, probably. ;; Or, similar to eggdoc, we can require that one identity section be first, ;; and separate them out in the lambda arguments. That's what I currently do ,identity (div (@ (id "main")) ,sections)))))) ;; Handling attributes basically requires us to use sxpath (idea from apply-templates.scm). ;; However, since this is a simple rewrite, we could probably declare a local attribute ;; handler and transform "link" into "href". ;; syntax: (url (@ (link "http://abc.com") "optional-text") ;; if optional-text is omitted, link text is used. (url *macro* . ,(lambda elems (let ((link ((sxpath '(@ link *text*)) elems)) (contents ((sxpath '((*not* @))) elems))) ;; get all text and elts (non-@) `(a (@ (href ,link)) ,(if (null? contents) link contents))))) (cwiki *macro* . ,(lambda (tag name) `(a (@ (href ("http://chicken.wiki.br/" ,name))) (em ,name)))) ;; Similarly, this is trivial without using sxpath -- just transform the tag name. ;; Still, I'm experimenting. ;; (abbr (@ (title "T")) A) ;; => (acronym (@ (title "T")) A) (abbr *macro* . ,(lambda elems `(acronym (@ (title ,((sxpath '(@ title *text*)) elems))) ,(elt-contents elems)))) (section *macro* . ,(lambda elems `(div (@ (class "section") (id ,(att 'id elems))) (h3 (span (@ (class "separator")) "< ") ,(att 'name elems) (span (@ (class "separator")) " >")) ,(elt-contents elems)))) (skillset *macro* . ,(lambda (tag . skills) `(ul ,@skills))) (skill *macro* . ,(lambda (tag . contents) `(li ,@contents))) (name *macro* . ,(lambda (tag name) `(span (@ (class "name")) ,name ": "))) ;; Using "elt" alone will retain context tag, allowing pre-post-order ;; to rewrite it later. (identity *macro* . ,(lambda elems `( (div (@ (id "header")) ,(elt-value 'company elems) " / " ,(elt 'address elems) " / " ,(elt-value 'email elems)) (div (@ (id "who")) (h4 ,(elt-value 'name elems)))))) ;; I strip out the element tag (e.g. street) with elt-value so ;; it is not necessary to write an identity rule for all these elements. (address *macro* . ,(lambda elems `( ,(elt-value 'street elems) " / " ,(elt-value 'city elems) ", " ,(elt-value 'state elems) " " ,(elt-value 'zip elems)))) (job *macro* . ,(lambda elems `(div (@ (class "job")) (div (@ (class "empbar")) (div (@ (class "timespan")) ,(elt-value 'start elems) " - " ,(elt-value 'end elems)) (div (@ (class "employer")) ,(elt-value 'employer elems)) (div (@ (class "location")) ,(elt-value 'location elems))) ;; (div (@ (class "jobtitle")) ;; ,(elt-value 'title elems)) (div (@ (class "jobdesc")) ,(elt-value 'desc elems)) ))) ;; "project" tag is omitted here because it is not used in the resume; see ;; original stylesheet for details. ;; Remaining: tproject and derivatives. (tprojects *macro* . ,(lambda (tag . tproj) `(table (@ (class "tprojects")) ,@tproj))) (tproject *macro* . ,(lambda elems `(tr (th ,(elt-value 'type elems)) (td ,(elt-value 'desc elems))))) (categories *macro* . ,(lambda (tag . cats) `(table (@ (class "categories")) ,cats))) ;;; Instead of (br) it probably is better to use an unordered list here. (category *macro* . ,(lambda (tag cat . desc) `(tr (th ,cat) (td ; ,(intersperse desc '(br)) )))) ,(unordered-list desc))))) ,@universal-conversion-rules)) (define doc '(*TOP* (*PI* xml "version=\"1.0\" encoding=\"UTF-8\"") (*PI* xml-stylesheet "href=\"resume.xsl\" type=\"text/xsl\"") (resume (identity (name "James F. Ursetto") (company (url (@ (link "http://ursetto.com")) "Ursetto Consulting, Inc.")) (address (street "10 S Wille St. Suite 605") (city "Mount Prospect") (state "IL") (zip "60056")) (phone "847-590-0365") (email (url (@ (link "mailto:jim@ursetto.com")) "jim@ursetto.com"))) (section (@ (name "SKILLS") (id "skills")) (skillset (skill (name "Development") "large applications and small scripts in Perl, Python, C/C++ and Lisp.") (skill (name "UNIX") "deep knowledge of UNIX internals; years of experience solving production issues.") (skill (name "Performance analysis") "identification of bottlenecks in hardware, software, and the network.") (skill (name "Optimization") "acceleration of existing applications and workflows.") (skill (name "Bridging") ;; ;"expert facilitation between your hardware and software teams. ") "facilitating collaboration between system administrators and developers.") (skill (name "Documentation") "clear, easy to understand descriptions of complex technical concepts." ;(br) ;"Excellent communication and mentoring skills." ) ;; (skill (name "Linux") ;; "Red Hat AS/ES 3 and 4, RHN Satellite Server, and Intel and AMD hardware.") ;; (skill (name "HP-UX") ;; "HP hardware and software on HP-UX 10 and 11.") ;; (skill (name "Open source") ;; "Samba, Apache, and other enterprise-class products.") ;; (skill (name "Large sites") ;; "management of large environments with " ;; (abbr (@ (title "Network File System")) "NFS") ;; ", " ;; (abbr (@ (title "Network Information System")) "NIS") ;; ", " ;; (abbr (@ (title "Secure Shell")) "SSH") ;; ", " ;; (abbr (@ (title "Red Hat Package Manager")) "RPM") ;; ", " ;; (abbr (@ (title "Software Distributor UX")) "SD-UX") ;; ;", Ignite" ;; ", and MC/Serviceguard.") ;(skill (name "High availability") ; "complex MC/ServiceGuard clusters tailored to your environment.") ;(skill (name "GUI design") ; "Visual Basic, wxWindows, GTK, and Tcl/Tk.") ;(skill (name "Web design") ; (abbr (@ (title "HyperText Markup Language")) "HTML") ; " and XML, plus modern " ; (abbr (@ (title "Cascading Style Sheets")) "CSS") ; " for attractive, accessible websites.") )) (section (@ (name "PROFESSIONAL EXPERIENCE") (id "experience")) (job (start "9/2008") (end "12/2008") (employer "Chicago Mercantile Exchange") (location "Chicago, Illinois") (title "Consultant") (desc (p "Enhanced and extensively modified Perl CGI web application. " "Added progressive Javascript and AJAX with jQuery, improving interface and reducing CPU and network bandwidth. " "Implemented local database caching and DR failover to ensure high availability. " "Wrote a Java program which interfaces with UC4 job scheduler to automatically create UC4 folder objects. " "Wrote installer which deploys application to production, QA, DR and development systems with per-environment configuration. " "Supported application and responded to feature requests and user issues immediately. " ;; "Script is now an integral part of Production Control UC4 workflow. " ;; "Achieved cross-browser compatibility. " ))) (job (start "6/2008") (end "8/2008") (employer "Ursetto Consulting, Inc.") (location "Chicago, Illinois") (title "Consultant") (desc (p "Enhanced a forms-based, server-side web application with progressive AJAX." ;; "Full functionality is still available to browsers without Javascript capability." ))) (job (start "4/2008") (end "5/2008") (employer "Chicago Mercantile Exchange") (location "Chicago, Illinois") (title "Consultant") (desc (p "Built a Perl CGI web app which moves UC4 scheduler jobs between environments. It accepts change request information and multiple XML file uploads, performs XML transforms using standard modules, and emails the results. Users receive feedback on progress and errors, and are asked to confirm selected changes. Application interfaces with Oracle and LDAP."))) (job (start "7/2007") (end "3/2008") (employer "Ursetto Consulting, Inc.") (location "Chicago, Illinois") (title "Consultant") (desc (p "Ported 32-bit HP-UX business app to Linux and Mac OS X and added 64-bit support. Migrated authorization from UNIX/NIS to PAM, enabling use with LDAP. Used Valgrind to fix buffer overflows and memory leaks. Developed content management system for web-based collaborative editing.") )) (job (start "6/2006") (end "6/2007") (employer "Acxiom Corporation") (location "Chicago, Illinois") (title "Consultant") (desc1 ;; This section is unused. See next sexpr. (p "Rearchitected 10-year-old C-based login and load balancing app to allow multiple user sessions. Replaced homegrown databases with one SQL database; fixed buffer overflows, file locking. Rewrote Perl support tools. " "Diagrammed and fixed complex, undocumented workflow which used our logs. " ; "Documented extensively and trained users. " ; "Created a test environment for the app." ) (p "Upgraded Apache and custom modules from 1.3.9 on 10.20 to 1.3.37 on 11i. Legacy mod_perl install (Perl 5.5.3, 10.20) had to be retained and numerous Oracle issues resolved.") ) ; alternate view of acxiom epoch 5 stint, using categories (desc ; (p "test") (categories (category "Development" ("Rearchitected 10-year-old C and Perl-based login and load balancing app to allow multiple user sessions. " "Replaced adhoc databases with one SQL database. " ;; "Documented extensively and trained users. " ) ) (category "Architecture" "Conducted architecture review and audit of UNIX software and hardware in Internet and batch environments, producing reports for management. Audit included boot disks, firmware and drivers, system patches and applications, NFS, NIS and NTP." "Corrected systemic NTP sync issues by rearchitecting NTP environment. " ) (category "Optimization" "Reduced shell script runtime from 50 hours to 25 seconds. " ) (category "Web" ("Upgraded Apache and custom modules from 1.3.9 on 10.20 to 1.3.37 on 11i. " ;(br) "Legacy mod_perl install (Perl 5.5, 10.20) had to be retained and numerous Oracle issues resolved.") "Traced webserver lockups to CGI database lock issue. " ) (category "Documentation" "Introduced wiki as centralized documentation repository. " ("Diagrammed an undocumented batch workflow with " (url (@ (link "http://www.graphviz.org/")) "Graphviz") ".")) (category "Administrative" "Wrote Perl framework to audit Linux systems and publish results to intranet. " "Built and standardized Perl 5.8 environment and site modules." ;;"Averted NIS map corruption by commercial product. " ;; The following are Linux-sysadmin related. Comment out at will. ;; "Solved ext3fs corruption caused by EMC Powerpath on Linux. " ;; "Fixed AMD CPU tick loss on Red Hat Linux. " ;; "Implemented QLogic HBA failover and networked install of Red Hat Enterprise Linux AS4. " ;; "Researched Red Hat Satellite Server and implemented custom channels and profiles. " ;;"Upgraded firmware/drivers on IBM x366 servers and documented procedure. " ;;"Wrote tool to report PV serial number for SAN filesystems. " ) ) )) (job (start "5/2006") (end "5/2006") (employer "Information Resources, Inc.") (location "Chicago, Illinois") (title "Consultant") (desc (p "Migrated an undocumented in-house web application from Java 1.1 on HP-UX 10.20 to Java 1.4 on 11i. " ;;"Created a development environment and documented the process." ))) (job (start "11/2005") (end "5/2006") (employer "Ursetto Consulting, Inc.") (location "Chicago, Illinois") (title "Consultant") (desc (p "Developed an " "interface from Scheme to Objective C" " on Mac OS X. " "Created documentation tool for code and articles which transforms Scheme XML to HTML. " "Wrote tutorials and documentation (" (em (url (@ (link "http://ursetto.com/docs")))) "). " ;"Website design using PHP, FastCGI and LightTPD." ))) (job (start "8/2005") (end "10/2005") (employer "Acxiom Corporation") (location "Chicago, Illinois") (title "Consultant") (desc (p "Eliminated crashes and plugged resource leaks in legacy C app, a UNIX-to-mainframe job dispatcher. " "Repaired and standardized RPM environment on Red Hat Enterprise Linux servers. " "Rebuilt and packaged local Perl modules for upgrade to 5.6. " "Solved recurring production Java exception. " "Alleviated link saturation during backups."))) (job (start "7/2004") (end "7/2005") (employer "Information Resources, Inc.") (location "Chicago, Illinois") (title "Consultant") (desc ;; (p "Combined system and application development knowledge to facilitate interaction between UNIX team and developers.") (categories (category "Optimization" "Improved Perl CGI script response time from 60 seconds to 1 second. " "Lowered shell script runtime from 60 minutes to 5-10 minutes, alleviating client timeouts. " "Saved 60% disk space and 50% time in C++ application with algorithm and compilation changes. " "Tripled speed of ksh/C++ batch application, saving three weeks of processing." ) (category "Performance" "Wrote software to collect and graph gigabytes of performance data." ("Analyzed large NFS environment and identified bottleneck causing recurrent client timeouts. Recommended NFS filesystem reorganization and parallel servers, fixing the problem.") "In-depth analysis of several systems, including Oracle database servers." ) (category "System" "Mitigated outage risk after an NFS server crash, by injecting new HP-UX 11i code into closed-source 10.20 binary. " ;; "Required knowledge of UNIX application internals." "Wrote tools to map NFS locks to filenames and processes, utilizing UNIX kernel knowledge; fixed lock table overflow. " "Diagnosed out-of-memory condition in client application; enabled 2 extra quadrants to fix.") ;(category "Authentication" "PM; 2 niscontrol clones") (category "Networking" "Feasibility study and benchmarking of jumbo Gigabit Ethernet frames." ;; This could just as well go under performance. "Redesigned network architecture to improve system's backups from 36 hours to 9 hours. ") ;, and removed network saturation bottleneck.") (category "Web" "Tracked down internal server errors in Tomcat application; upgraded Java and Jakarta installs. " ;; "Fixed out-of-memory condition, implemented robust logging." ) (category "Architecture" "Performed feasibility study on systemic changes required to convert batch jobs to a just-in-time architecture.") ))) (job (start "10/2003") (end "2/2004") (employer "Information Resources, Inc.") (location "Chicago, Illinois") (title "Consultant") (desc (p "Identified a severe disk bottleneck in a C application; rewrote the algorithm and instituted kernel parameter changes to achieve a 300% speed improvement. " "Analyzed performance of applications running on HP-UX 11i, using PerfView, glance, sar, tusc and tcpdump to examine system and NFS behavior. " "Supported Platform JobScheduler and LSF on UNIX. " ;; "Created and optimized various Perl scripts." ))) (job (start "12/2002") (end "9/2003") (employer "Ursetto Consulting, Inc.") (location "Chicago, Illinois") (title "Consultant") (desc (p "Authored GUI apps in Perl and Python using " "wxWindows" " and " "GTK" ". " ;; "The Python app is cross-platform, running on Windows, Unix and OS X. " "Wrote C++ and assembly for Hitachi SH-4."))) (job (start "6/2002") (end "11/2002") (employer "Information Resources, Inc.") (location "Chicago, Illinois") (title "Consultant") (desc (p "Client was managing their NIS environment with a large collection of shell, Perl and C code built up over several years. Replaced with a thoroughly documented, modular Perl solution using industry standard components. Eliminated security holes and file corruption; added detailed logging capability. Transition to new system was seamless.") (p "Rearchitected Perl-based server application that was tied to NIS master, by splitting NIS functionality into a separate program. Reimplemented Visual Basic client from scratch to reflect changed server, overhauling the interface and network protocol. " ;; "Designed the system for gradual cutover and documented it carefully." ))) ;(job (start "3/2002") ; (end "present") ; (employer ; (url (@ (link "http://ursetto.com")) ; "Ursetto Consulting, Inc.")) ; (location "Mount Prospect, Illinois") ; (title "President") ; (desc (p "Founded Ursetto Consulting, Inc., which provides top-notch UNIX software and hardware solutions to the Chicago area and beyond. See " ; (url (@ (link "http://ursetto.com")) "ursetto.com") ; " for more information."))) (job (start "3/2000") (end "1/2002") (employer "ABN AMRO") (location "Rosemont, Illinois") (title "Senior UNIX Systems Administrator (Contract)") (desc (p "Supported large HP environment including D, K, N, and V class servers. " "Implemented critical MC/ServiceGuard cluster and highly customized scripts. " "Audited and tested existing clusters. " ;"Supported Connect:Direct on HP-UX, AIX and Solaris. " "Upgraded production server from 10.20 to 11.00 in minimal time, via cold install and data restore; documented procedure for team. " "Assessed impact of security vulnerabilities. " "Deployed SSH widely for secure administration and auditing; diagrammed SSH infrastructure."))) (job (start "1/1999") (end "2/2000") (employer "United Airlines") (location "Elk Grove Village, Illinois") (title "Senior UNIX Systems Architect (Contract)") (desc (p "Worked with a team of architects and administrators to design and manage one of the largest HP-UX environments in the Chicago area. " "Technical support contact for Operations Control Center, comprising 8 J-class servers and 100+ workstations. " ;; "Supported several Ks running Informix." ) (p "Technical implementation of Business Resumption Project, comprising 6 K-class servers, 85 B180 workstations and 200+ users. Worked with developers to port and test applications. Physical setup and OS configuration; CDE interface design; NFS/NIS implementation; and documentation. Site was activated successfully for one month during August 1999 fire. Upgraded site as requirements grew. Received award for outstanding performance.") ;; (p "Integral in evaluation, design and testing of load-balanced and redundant Internet firewall complex" ;; ;", using Radware Fireproofs and Secure Computing Sidewinders ;; ". Authored scripts to convert data from 7500-user " ;; (abbr (@ (title "Lightweight Directory Access Protocol")) ;; "LDAP") ;; " database to Sidewinder format. ;; Performed technical and security reviews of e-commerce and Internet ;; application proposals, and drafted network security policies for ;; developers.") )) ;; (job (start "5/1998") ;; (end "8/1998") ;; (employer ;; (url (@ (link "http://www.ual.com")) "United Airlines")) ;; (location "Elk Grove Village, Illinois") ;; (title "Internship") ;; (desc (p "Supported 6 HP-UX servers and 40 workstations. OS and patch installation; " ;; (abbr (@ (title "Network Time Protocol")) "NTP") ;; " and CDE config; Perl and Tcl/Tk scripting; SD-UX; MC/ServiceGuard installation."))) ;; (job (start "6/1997") ;; (end "8/1997") ;; (employer ;; (url (@ (link "http://www.ual.com")) "United Airlines")) ;; (location "Elk Grove Village, Illinois") ;; (title "Internship") ;; (desc (p "Replaced outdated application with new multithreaded Java applet using " ;; (abbr (@ (title "Java DataBase Connectivity")) "JDBC") ;; ". Optimized original " ;; (abbr (@ (title "Structured Query Language")) "SQL") ;; " code, resulting in 15x speedup."))) ) (section (@ (name "OPEN SOURCE") (id "related")) (tprojects (tproject (type "Chicken Scheme") (desc (ul (li (u "Authored extensions") ": " (cwiki "objc") " (Scheme to Objective C bridge for OS X), " (cwiki "eggdoc") " (transforms XML to HTML, wikitext and texinfo; adopted as Chicken documentation standard), " (cwiki "hostinfo") ", " (cwiki "args") ", " (cwiki "doctype") ", " (cwiki "idna") ". ") (li (u "Ported extensions") ": " (cwiki "sxml-transforms") " (XML stylesheets in Scheme), " (cwiki "sxml-tools") ", " (cwiki "html-parser") ", " (cwiki "vector-lib") ", " (cwiki "lazy-ssax") ", " (cwiki "testeez") ". ") (li (u "Tutorials") ": " (em (url (@ (link "http://3e8.org/zb/cocoa/manipulating-itunes-plist.html")) "Manipulating the iTunes property list file in Scheme")) ", using my " (em "objc") " extension. " (em (url (@ (link "http://3e8.org/zb/cocoa/creating-a-cocoa-app.html")) "Creating a Cocoa Application in Chicken")) ", a walkthrough implementing the Currency Converter application. ") (li (u "Applications") ": " (em "searches") ", HTTP log analyzer webapp; " "Currency Converter and Color View demo apps. " "Professional website written in Chicken.")) )) (tproject (type "Python") (desc (url (@ (link "http://3e8.org/hacks/ultima6")) (em "puce")) ", a world editor using wxWindows and OpenGL.")) ;; (tproject ;; (type "Perl") ;; (desc (url (@ (link "http://3e8.org/pub/ultima6")) "u6edit") ;; " (GTK-based)")) (tproject (type "Sega Dreamcast") (desc (url (@ (link "http://3e8.org/hacks/brkout")) (em "outbrk")) ", a breakout clone" "; " ;; (url (@ (link "http://3e8.org/hacks/")) "tuxnes-dc") "; " (url (@ (link "http://sourceforge.net/projects/cadcdev")) "KOS") " operating system contributor.")) (tproject (type "Other") (desc "Tseng Labs ET6000 video driver for the " (url (@ (link "http://www.ggi-project.org")) "GGI Project") ".")) ;; (tproject ;; (type "Web") ;; (desc "All HTML, CSS, XML, and XSLT for " ;; (url (@ (link "http://ursetto.com")) "ursetto.com"))) )) ;(section ; (@ (name "CERTIFICATIONS") (id "certs")) ; (certs (cert "Cisco Certified Network Associate (CCNA)."))) (section (@ (name "EDUCATION") (id "education")) (p "B.S., Mathematics and Computer Science; minor, East Asian Languages and Cultures; University of Illinois at Urbana-Champaign, January 1999. GPA: 3.86/4.0."))))) ;(with-output-to-file "/tmp/resume.html" ; (lambda () (SRV:send-reply (pre-post-order doc ss)) ;))