bom-selection-criteria
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.