About Kevin

The Chronicle of Kevin

Please wait until the following timeline is loaded.


Software Engineer (Scala) @ British Telecom (BT) Jul 2016 – Present
  • Working on data enrichment project and small ML project using Spark with BigData tech stack (Kafka, HDFS, HBase, Elasticsearch, Flume, etc.).
  • Built Spark and Yarn log collector tool using Scala
  • Built test result and test case mapping tool using Scala l Developed SBT plugins for CI
  • Maintaining BigData web app UI using Elm
  • Built Kibana plugin to help data analysts
Consultant (Scala Developer) @ Simp|e Machines Apr 2016 – Jul 2016
  • CMS Development
  • DevOps
Scala Developer @ Fairfax Dec 2014 – Mar 2016
  • Development of media web application and framework using Scala and Akka Framework
  • Writing test and documents for Scala application
  • Writing Akka Persistence Plugin for Redis
  • CI & CD: Automatic build and deployment to AWS
Software Engineer @ Pocketbook Jan 2014 – Nov 2014
  • Development of Java web application and web API
  • Refactoring and optimizing the existing code.
  • Improving performance and code quality using Lambda expressions and Stream API in Java 8
  • Development of iOS and Android Apps
  • Setting up Development Environment (including migration from SVN to Git)
Software Developer (Contractor) @ Red Unicorn Solutions Oct 2013 – Nov 2013
  • Development of Java web API platform and web applications:
    • Using Spring MVC, Hibernate, Morphia, MS SQL server, MongoDB, Ajax, etc.
Java Architect / Software Engineer @ Agin3 (Casual) Oct 2013 – Present
Java Architect / Software Engineer @ Agin3 Sep 2010 – Oct 2013
  • Developing the server-side Java web application.
  • Developing commonly used reusable Java libraries and frameworks.
  • Setting up software development environment including IDE, SCM, DB and Issue Tracking System and so on.
  • Administrating servers
Java Architect / Software Engineer @ Elixirian Feb 2010 – Oct 2013
  • Developing the server-side Java web application.
  • Developing commonly used reusable Java libraries and frameworks.
  • Setting up software development environment including IDE, SCM, DB and Issue Tracking System and so on.
  • Administrating servers
Java Web Application Developer @ UTS (Faculty of Engineering and IT) Mar 2007 – Oct 2009
  • Developing the server-side Java web application for the TeCTra, Team Contribution Tracking System, used by the students and teachers at UTS and other universities to aid in peer assessment in group work.
Tutor @ UTS (Faculty of Engineering and IT)
  • Java EE application development Aug 2009 – Nov 2012
  • Java web services development Mar 2010 – Nov 2012
  • General knowledge of Ajax for the Interface Design Subject May 2008 / May 2009
  • Software development (also lectured on Continuous Integration) Aug 2008 – Nov 2009


University of Technology, Sydney (UTS)

Bachelor of Science in Information Technology 2006 – 2007
  • Focus:
    • Software Design
    • Web Application and Web Service Development
  • Achievement:
    • Distinction (82) Average
    • Insearch Prize -
      to the most outstanding international student graduating in the Bachelor of Science in Information Technology.
    • Insearch Prize for General Proficiency in the Faculty of Information Technology -
      to the graduating student who did both Diploma of IT at UTS:Insearch and Bachelor of Science in IT at UTS has gained the highest weighted average mark of such students over all subjects studied.

UTS: Insearch

Diploma of Information Technology (Fast-Track) 2005
  • Focus:
    • Object-Oriented Programming and Design
    • Developing Information Systems
    • Developing Web Applications
  • Achievement:
    • High Distinction (85) Average
    • Merit Certificates in the 1st, 2nd and 3rd (final) semesters. -
      to the students the semester average of which is 80 or higher
    • The UTS Faculty of Information Technology Prize for General Proficiency in the Diploma of Information Technology -
      to the best graduating student in the Diploma of IT

IT Skills

1. Programming Languages:

  • Scala, Java, Haskell, Kotlin, XML, XHTML, HTML, DHTML, JavaScript (jQuery), CoffeeScript, PHP, C#, Swift, SQL, C, C++, UML, Visual Basic 6, VBScript

4. Other Software:

5. Operating System:

  • OS X
  • Linux (preferred)
    • I also have Linux server administration skills
      (shell scripts, web/application server management, Ansible, etc.)
  • Unix
  • MS Windows 2000 / XP / 7

About Kevin

My name is Kevin Lee. I am a co-founder, software architect / engineer / consultant, specialised in Java / Scala web application development, and a Linux server administrator at both Elixirian Pty Ltd and Agin3 Pty Ltd. I am also a casual tutor at University of Technology, Sydney (UTS) teaching Java web services development and JavaEE. Although the major part of my work is Java web application development, I am interested in not only web application development but also library and framework development. In fact, I'm having more fun with developing reusable libraries these days. You can see what I have developed and currently work on at my project page. Currently I'm most interested in Scala and Functional Programming.

My Thought on Software Development

My software development philosophy is

It's not useful unless it's beautiful.

by Kevin Lee
So it has to be beautiful whether it's UI or API. That's because, we are developing software for people, not for the computers, and when it comes to attracting people and giving them pleasure, it all boils down to beauty. Although making it beautiful is important, it becomes meaningful only if you get things done. Your client do not want to have a conversation with you like

     You: See this. I've put all these beautiful theories and principles into practice. 
          I've also implemented nice design patterns and used all these sophisticated frameworks and libraries.
  Client: Oh, sounds good. So does it work?
     You: No... Not yet.
This is not good. Getting things done is compulsory. Beauty doesn't count until it's done and working. After it's done, beauty becomes meaningful as it has a very close connection to maintenance. No software is perfect, and once it's released, it has to be maintained sooner or later. It's inevitable. After code is written, it's more read than re-written. Even if you re-write the code you wrote, you have to read it again first, and we often read already written code and use it (e.g. libraries, frameworks, etc.), so it's important to make the code easy and pleasure to read. That's why making it beautiful is also important. Whatever it is, if it's beautiful, you want to see it again and feel pleasure each time you see, so it can be easily maintained. Maintainability is superior to performance because if the programme is maintainable, it can easily be optimised later to have better performance. So, to wrap it up in a nutshell, make it beautiful to have high maintainability, but it has to work.

My Articles

You can read what I wrote before on my blog. http://blog.kevinlee.io

I have a plan to write about good API design. Here is the list of blog posts that I've already written and planned (it may change later):

I also keep some of my knowledge in my wiki, but it may contain out-dated or incorrect information. Thus, I am not responsible for any negative consequences caused by following it.

If you want to migrate a legacy application to the one using new technologies such as Spring framework, Hibernate, QueryDSL, etc. or Scala and Scala frameworks and libraries, please email me at .