TKDBMS Selection Criteria
=========================

Qualifications appropriate to duties
------------------------------------

I completed a Batchelor of Science in Applied Mathematics at RMIT in
2007, which covered software development and documentation for
scientific applications.

I have 9 years of professional software development experience in/for
enterprise, startups, and government, across the entire software
development and deployment lifecycle.  I have also made numerous
open-source contributions.

Python Experience
-----------------

I have been in the python community for 11 years.  At DELWP, I was
often tasked to the mapping team to help with their PostGIS and ESRI
installations, developing and maintaining services and making sure
they are reliable.  I designed custom ETL programs and tools for
manipulating and visualising data.

At NAFC, I developed services for the raspberry pi, as well as
internal python websites for tracking the status of the services and
performing operational changes.

I have operated the official #python IRC support channel on
freenode.net providing help and moderation for 10 years so I am well
known in that community.  I contribute to the pypy python runtime, and
have produced experimental backends and optimisations for it.  I
contribute to many packages, and maintain one of my own, a cffi-based
compiler wrapper.

Web Frameworks & Databases
--------------------------

I have built or maintained applications in a variety of web
frameworks.  I have built and deployed websites / webapps in Twisted Web,
Flask, WebApp2 (the Google App Engine default), and Django.  I follow
the modern practice of having static HTML rather than templating, with
javascript making calls to JSON REST services or interacting over a
websocket.

I am intimately familliar with several relational databases including
PostgreSQL (and PostGIS), MS SQL Server, and Sqlite3.  When using
them from python, I typically use the sqlalchemy.core API, though I
have used dbapi2 and the full sqlalchemy ORM.

UNIX/Linux
----------

I have run ``Debian GNU/Linux`` as my primary OS since 2006.  I do all of
my testing and deployment from a ``GNU bash`` command line.

My previous employer moved almost exclusively to ``Ubuntu LTS`` as
their server OS in 2012, and started maintaining these systems with
``opscode chef``.  We have used several cloud providers, including
``Amazon``, ``GCP``, and ``Telstra Private Cloud``, and I have built
these systems up from an ``SSH`` connection to continuous deployment
targets.

Software Lifecycle
------------------

Most of the teams I have worked in have followed ``TDD`` best
practices, with full coverage expected of unit tests as well as
automated style checking.  Many of the projects I have worked on have
also had integration testing, including some advanced ``selenium``
usage, mocking real web services, and database usage.  I added load
testing to one application where it was required.

I have used ``mercurial``, ``git``, ``svn`` and ``darcs`` for revision
control, and use branches for individual features, which I use for
code review and ``user acceptance testing``.  I have also used
branches with ``buildbot`` or ``jenkins`` to perform continuous
integration and deployment.

Communication Skills
--------------------

I have worked on distributed teams where phone and email communication
has been crucial to working effectively.  I have often had to do my
own business analysis, figuring out what the client is requesting, and
helping them to understand what I can provide.

I have produced technical documentation in a range of formats,
including ``LaTeX``, ``reStructuredText``, ``Markdown`` and ``HTML``.
My own blog is written in reStructuredText.

I have delivered presentations and talks in front of groups of
different sizes and tutored people on mathematics and programming.

Time Management
---------------

I have often worked on my own.  At DELWP, I was often the only person
with in-depth experience in a certain technology (such as python or
sql server reporting services), and would be tasked to produce
reports, track down various bugs, and develop features with little
supervision.

To keep track of outstanding work and deadlines, I have used issue
trackers such as JIRA and ServiceNow, and have used calendars,
reminders, org-mode lists, and kanban boards.

Social Justice Strategy
-----------------------

I value a workplace that sees the value in its employees and
contractors, that is committed to diversity.  It is essential that
everyone can be heard and that work is a comfortable place to be,
where every person is treated with respect.
