Profile

Software developer with 7 years professional experience building & maintaining commercial Android applications. I love to work at the intersection of technical expertise and creativity.

Experience

div class="job">

Vet AI

Android Developer

March 2021 - Present

  • Responsible for developing and maintaining the Android application.
  • Designing and developing applications for the Android platform unit-testing code for robustness, including edge cases, usability, and general reliability, and bug fixing and improving application performance.
  • Ensuring that the application was optimized for the best user experience.
  • nvolved in every stage of the project, from planning to deployment to maintenance.

YBS Group

Frontend Developer (Android App)

March 2021 - Present

  • Negotiated with Business Analysts and UX designers to break down business stakeholder requirements into achievable tickets
  • Created modern, maintainable user journeys from UI mockups using Kotlin, MVVM architecture and Data Binding
  • Strengthened the app's test suite by making use of mocked backend calls
  • Rewrote the CircleCI YAML files (and dependent bash scripts) to split flaky tests into groups, speeding up test suite runs
  • Adapted Python code to create a REST API explorer, to facilitate the use of new endpoints from the backend team
  • Managed BAU work including (but not limited to) performing releases to Google Play, investigating bug reports from users
  • Worked with external parties during the absence of a tech lead, to investigate potential defects and provide concise reports for non-technical stakeholders within the business
  • Documented and evolved development practices in collaboration with other squad members, following agile principles

Interact

Android Developer

July - November 2020

  • Interpreted and negotiated the product team's feature requirements into a working design, reporting UI flow omissions and suggesting HIG-compliant solutions.
  • Built the feature to view comments on blog posts to Interact's existing Android app.
  • Rewrote legacy portions of the app; increased maintainability and reusability with minimal changes to existing work.
  • Documented core app internal APIs as their purpose was discovered, to reduce onboarding time for future new starters.
  • Wrote tests to verify integrity of JSON data received from ReST API.

Non-coding work:

  • Wrote onboarding documentation (including a glossary for Interact-specific terms and abbreviations) for new starters in Engineering.
  • Updated Android onboarding documentation to match current company practice.
  • Worked with the JIRA ticketing tool; participated in daily, weekly and fortnightly meetings to discuss development progress, collaboratively troubleshooting any problems as they arose, share working knowledge with other team members.
  • Guided non-technical team members through setting up their machine to run bleeding-edge builds of the Android app on an emulator.
  • Guided lay technical team members (ie non-Android developers) through setting up Interact's non-standard Gradle configuration to compile and run the Android app.

Elucid Mhealth

Software Engineer

July 2016 - February 2020

  • Developed Elucid's Android app from prototype to robust product. Rewrote legacy and prototype code to include null safety, fallback conditions and comprehensive logging.
  • Wrote the reference implementation for our product's driver as a standalone JVM library, allowing us to license the hardware product (without the app) to other companies. All our Bluetooth APIs on other platforms (iOS, desktop) were based on this design.
  • Collaboratively designed new ReSTful APIs with the software team for interopability across platforms (consistent binary-compatible data formats and structures across Android, iOS and web)
  • Wrote a fault-tolerant high-level network protocol to exchange data that our central server and app instances each generated. This design was reused on other platforms.
  • Proactively maintained Android app over time by migrating the codebase to newer technology stacks & APIs such as Kotlin, Job Scheduler and Room.
  • Wrote local regression tests using Mockito and JUnit, and end-to-end tests using the UI automation framework Espresso

Beyond Android app development, I also:

  • Soldered and built hardware prototypes
  • Gave live demonstrations of our product at networking events
  • Ran focus groups with members of the public
  • Negotiated with hardware consultancy firm over product designs and features
  • Wrote automated check-out scripts to set up development environments from scratch, improving onboarding time & end-to-end testing workflow
  • Created a versioning system for app builds, using Gradle and shortened Git commit IDs
  • Wrote a mock REST server in Kotlin to decouple app testing from server

Huddersfield University

Technical Consultant

May - November 2015

Contracted to upgrade and extend functionality of a Linux-based data analysis system (MIDAS) connected to the MEIS particle accelerator, based at the University of Huddersfield. This included BIOS updates, hard drive health testing & replacement (cloning), creating an automated back-up system for the data, and adding features to the analysis software in Tcl/Tk. This work was completed exclusively on the command line using GNU tools such as rsync and crontab. I kept a logbook and followed academic procedure in documenting my work.

Skills

Software Development

I have been programming for over 10 years -- in both static and dynamic languages, professionally and in my spare time. In that period I have worked in a breadth of different languages and styles (static and dynamic; imperative, object-oriented, event-driven and functional), in a variety of environments (native, web, JIT VMs, mobile).

Linux Systems

I have used Linux for most everyday computing tasks since 2008, and used various flavours (Debian, Ubuntu, Arch, CentOS) on a daily basis in that time. This has given me a great deal of knowledge and practical experience in many areas of computing and problem-solving, especially networking, the GNU standard toolchain and hard-drive maintenance. I've run my own Git, HTTP and CUPS servers, and have remotely managed game servers over SSH.

Open-Source

Since 2010 I have actively contributed to various projects, diving into unfamiliar codebases to contribute a feature or fix a bug. My DIY ethos means I believe in fixing a noticed problem whenever possible.

I was the first major contributor to the NewPipe app, a third-party YouTube viewer. I stewarded a scientific calculator app, updating its build system & codebase to work on modern devices.

Languages

Extensive Writing

  • Java
  • Kotlin
  • C#
  • Python
  • Shell Script

Moderate Writing

  • C
  • PHP
  • Groovy
  • JavaScript
  • TypeScript

Niche Languages

  • Tk/Tcl
  • Scheme
  • ActionScript 3
  • AutoHotkey
  • Windows Batch Script

Reading

  • C++
  • Lua
  • Swift

Other Skills

  • Linux Server Administration
  • Web Scraping
  • Android APIs
  • Git
  • Markdown
  • Gradle build system
  • GNU/*nix tools
  • Bash/Shell Scripting
  • Regular Expressions

Education

Lancaster University

2011-2015

BSc Computer Science (Hons)

References

available upon request