Languages and Skills

For live and up to date information on my current knowledge and experience you can visit my Trello board. This is how I track my existing knowledge.

Trello: Current Programming Skills and Knowledge.

Languages

Here are the languages I have used in the past and currently learning.

Java

I have a comprehensive understanding of the Java language. I can write clean code with straight forward lines of execution. This is my main working language and one in which I currently have the best understanding of. There are a few items that I have yet to cover including New IO, and Concurrency. I have forgone JDBC in favour of Hibernate.

JavaScript

I have recently acquired an in-depth understanding of Object-Oriented JavaScript. I can currently write trivial JavaScript programs. I am currently learning how to apply JavaScript to more advanced programs such as back-end scripting. I have yet to complete my study of MEAN stack development, and have yet to cover JavaScript TDD.

C/C++

Not used since university. I can probably relearn C with a little study. C++ may require more study time, particular with aspects of managing memory and correct use of pointers.

PHP

I have covered basic tutorials on PHP and have a good understanding of the basics of the language. However, I have yet to use the language in a comprehensive project.

Unit Testing

JUnit

I have written numerous unit tests for Java classes. I can test assertions, exceptions, and boundary cases. I can use a test fixture to create isolated tests.

Easy Mock

I have used Easy Mock to mock associations and dependencies. I can isolate test subjects and verify calls to mock object methods.

Logging

Log4j

I have used Log4j in the MoneyJar project to log at varying levels of granularity. I can output logging information to a console or to a log file.

Version Control

Git

I have covered the main aspects of version control with Git. From the command line, I can create and clone a repository. I can create and merge branches. I can fetch, merge, or pull branches from a remote repository. I can compare different versions of source. I can also add, index, and commit source files to the repository.

Although I have covered more complex operations with Git from the command line much of it has been forgotten as my main exposure to Git is now almost exclusively through the Eclipse plug-in – EGit.

Subversion

I have covered the basics of version control with Subversion. I can perform basic functions such as checking in and checking out. It has been some time since I last used it. It may require a little study time to recall how to use it productively.

Project Automation

Ant

I have a fairly good understanding of the Ant build tool. I can write a basic build-file that can, run unit tests, compile source code, create or remove required directories, create unit test reports, and compress build files into a compressed jar or war file.

Ivy

I can integrate Ivy with ant to manage dependencies. I can write and modify the ivy configuration file to download third party libraries from a maven repository and place them in a ‘lib’ directory for Ant to build.

Jenkins

I can install and configure Jenkins on a host server. I can configure to run automated Ant builds. I can configure Jenkins to trigger a build when the source repository detects changes to the source code.

Database Knowledge

Search Query Language (SQL)

I can perform basic CRUD commands from the command line. I can create a database, create tables, insert entries, perform queries, and filter results.

Hibernate

I am currently using Hibernate in the MoneyJar project. I can create a basic Hibernate configuration file and use annotations to configure persistence details. I can create a basic CRUD DAO class to manage CRUD operations and to decouple a class from the persistence interface.

Web Technologies

HTML

I have a long history of HTML experience. I can write a basic web page using HTML tags to create the structure. Then using CSS to add style.

CSS

I can use CSS selectors to select tags, tag classes, and tag ID’s. I can apply margins and padding to elements, add text decorations, and borders. I can construct basic layouts using CSS. I can use a browser debugging tool to inspect CSS styles applied to specific elements. I have not had the experience of writing a style sheet for an entire website. My experience is limited to modifying existing layouts when I need to.

JQuery

I can use JQuery style selectors. I can apply basic event handling.

Powered by WordPress. Designed by Woo Themes