Name: Hans Nowak
Current location: Archer, FL
Email: zephyrfalcon at gmail dot com
I am an experienced software developer, specialized in Python (and, to a lesser extent, Delphi), with extensive knowledge of modern database systems. I have developed and deployed several client-server applications, initiated numerous open source projects, and written a number of Python-related articles.
Over time, I've worked on several projects (both professional and personal) that deal with crawling the web and extracting data from web pages and other files, so this has become somewhat of a specialty of mine.
Skills and expertise
- Programming languages: Python (12 years experience), Delphi (9 yrs), Scheme, Ruby, Javascript, C, C++, Pascal (16 yrs), Lisp, OCaml, Haskell
- Databases: MS SQL Server 7 and 2000, Postgres, MySQL, MS Access
- Operating systems: Windows (95 through Vista), Mac OS X, Linux
- Web design/development: Pylons, Google App Engine, Django, Ruby on Rails, Javascript, jQuery, CSS, HTML, XHTML, XML, RSS
- Tools and applications: MS Word, Excel, Powerpoint, Adobe Photoshop, Macromedia Dreamweaver
- Python-related technologies and skills: Tkinter, wxPython, Wax, SQLAlchemy, Beautiful Soup, mechanize
- Other technologies: XML-RPC, SOAP, CVS, Subversion, Borland MIDAS, ADO, COM, SQLXML, XMLHTTP, unit testing
- Open source projects: Wax (GUI toolkit using wxPython), Firedrop (client-based content management system), Tarantulon (webcrawler), Kaa (weblogging tool), Charm (Python editor/IDE), Mygale (news-gathering webcrawler), MoxRuby (database/search engine for CCGs); smaller projects include a text-to-HTML conversion format, a Lisp interpreter and a testing framework. (Most of these are written in Python. More information here.)
- I was the mentor of a student participating in the Google Summer of Code (2005).
Work experience
7/2007 - 5/2009: iTrackr, Boca Raton, FL
Main developer of the back-end part of the iTrackr website. Tasks included:
- implementing and maintaining web crawlers in Python to fetch product and store availability data from retailer websites
- writing custom parsers to extract the desired information from the retrieved web pages
- implementing daemons and scripts to send notifications to users (email, SMS and web)
- maintaining and extending the XML-RPC server used to pass store/product data to the server
- database maintenance (first MySQL, later Postgres); this included adding/updating tables, triggers, indexes for performance tuning, etc.
- implementing queries using SQLAlchemy
- updating the website (Pylons, Javascript, jQuery, CSS)
- minor Linux administration tasks
1/2002 - 9/2007: Oasis Digital, St.Louis, MO
Main developer of the server side of a complex system for the management of "tickets" (text files containing certain work orders, coming in through email or FTP). This included:
- extracting information from the tickets (these are in plain text, but vary greatly in format)
- assigning them to employees, based on sets of rules that differ per call center ("routing")
- responding to the call center that sent the tickets, via telnet, FTP, email and XMLHTTP
- implementing and maintaining often-changing business logic rules
- automating database integrity checks
- implementing a "watchdog" system that warns if certain conditions are not met
- implementing a deployment mechanism usable by the customer
- performance: tickets must be handled in a timely manner (customer would get fines otherwise)
Developed in Python/SQL Server, with heavy use of unit testing. System originally used SQLXML; after a while we switched to ADO and custom object-relational mapping library. I also helped maintaining and updating the client, admin and reporting applications (all of these were written in Delphi).
1/2004 - 3/2004: Estuardo Solis, Guatemala
Created and compiled various Python extension modules, written in C/C++, using Cygwin gcc. (Some of these I wrote myself, others were auto-generated using SWIG.)
12/2002 - 2/2003: Positiontech, IL
As an independent contractor, I developed a multithreaded webcrawler in Python which takes links from a MySQL database and checks if they are valid.
5/2001 - 11/2001: CSS Software Development, Heerlen, the Netherlands
9/1998 - 5/2001: Info Vision Europe BV, Hoensbroek, the Netherlands
- Co-developer of a management system for safety tools, for a large chemical company. Developed interfaces to specialized hardware, like card printers, bar code scanners, and hand-held terminals. Written in Delphi/Oracle.
- Main developer of a sophisticated system for registration and management of credit limits, written as a three-tier application in Delphi/SQL Server (using Midas). This included a "decision support" form that helped users when granting new credit limits; also included an interface to a large online documenting system, and a flexible report generator. Developed an Intranet interface later, in ASP/VBScript. (letter of recommendation)
- Main developer of a system for the registration and statistical analysis of accidents, again for a large chemical company. Delphi/SQL Server.
- Main developer of a system for specialized allocation of costs, for a bus company. Delphi/Access.
- Maintained and updated stored procedures, imports and exports for an implementation of the Onyx platform. SQL Server.
1995 - 9/1998:
During this time, I had a few jobs unrelated to software development.
1993 - 1995: HVB Computerservices, Barneveld, the Netherlands
As an independent contractor, I sold around 60 DOS-based programs to this company. Most of these programs were written in Turbo Pascal and Turbo Basic. One important condition was that they should run on every PC (at that time), even very old ones with no sound and CGA graphics.
Education
- 1991 - 1997: HEAO BE (Bedrijfseconomie, Business Economics)
BA in Business Economics, at the HEAO in Sittard (Netherlands).
- 1985 - 1991: Gymnasium A (comparable to high school with honor roll).