Hi, I’m Owen, a passionate software engineer with a solid background of open-source contributions and technical writing. Previously, I completed a PhD in Computer Science at the Univeristy of Southampton and now my main tools day-to-day are Ruby and PostgreSQL.
Feel free to explore my work below, find me on GitHub, or email me at owen@owenstephens.co.uk.
You can jump to the Blog, Open Source or Research sections.
I very occasionally blog about technical things, take a look:
A list of open source contributions I’ve made; some are small, but it’s nice to remember them:
I fixed an N+1 query inside the Rails Postgres adapter for multi-column foreign_keys
and unique_constraints
.
I traced and fixed the cause of a tabular-layout breaking bug in the CSV toolkit xsv.
I extended the Range#cover? method in the MRI Ruby standard library
to accept other Range
objects to allow easy checking for
sub-ranges, as demonstrated in the BigBinary blog
that introduces new features coming in Ruby 2.6. Later, I fixed a bug
in the Rails implementation of the same feature.
I diagnosed and fixed a crash-causing bug in the pry Ruby REPL when encountering NULL bytes, which included some MRI source-diving.
I tracked down and proposed a fix for a segfault in the MRI Ruby interpreter when using forked processes and the default psuedo random number generator, as triggered by the Faker test data library.
I prevented duplicating of jobs and misleading warnings in the Que-web interface to the Que asynchronous job queue.
I fixed a bug to ensure table aliases were correctly taken account of when suggesting completions in the pgcli PostgreSQL CLI tool.
I added and improved several linters of the popular Rubocop code checking tool:
I fixed a bug, normalised multi-language implementations and improved test coverage of the Mailchecker project that rejects invalid/throwaway email addresses
I added support for nested constant definitions to the ripper-tags Ruby ctags generator and later gracefully handled unreadable directories.
I was a core member of the Darcs VCS team, contributing many patches
I improved certain error messages of the Cabal packaging tool
I added support for IPv6 extension headers to the dpkt library, the google code issue no longer exists, but the changelog (now on GitHub) bears my name
I added an instance to the Boolean algebra library Cond to recognise that Boolean algebras are closed under pairing
My research took place as part of a Masters and PhD in Computer Scence. The two main topics I studied were model checking of Petri Nets (specifically, compositional reachability checking) and functional programming languages (specifically, methods of implementing IO).
My PhD research focussed on compositionally checking reachability in systems modeled by Petri nets. My PhD thesis Compositional specification and reachability checking of net systems is available online, and includes the work from three papers I co-authored:
My Masters research project investigated methods of implementing input/output (I/O) in functional programming languages: report (PDF).