Technology



Ruby

I've recently focused most of my new development efforts on Ruby and Rails.

Ruby is a dynamic, open source programming language with a focus on simplicity and productivity. Combined with Rails, it makes for an extremely efficient development environment. This allows me to deliver high-quality, maintainable solutions very quickly.

I recently converted a client's project from over 10,000 lines of Java code to about 1,000 lines of Ruby on Rails. Rails is extremely efficient compared to most other web frameworks. If you haven't considered it before, it's worth your time to investigate it.


Java

Java is a mature language with an extensive set of libraries and frameworks. With IDEs such as Intellij and Eclipse, it has the best tooling support of any open-source language.

The ubiquity of the JVM also makes it a great choice for non-webapp software, and integration with mobile platforms such as Android. I've been developing in Java since its debut over 10 years ago.


Wicket

Apache Wicket is a modern framework for building Web 2.0 applications. It builds on standard W3C-compliant HTML pages, which allows for rapid-prototyping. It's known for being very designer-friendly, which means you can have a high-performance application that looks great too.

Any serious web application will undergo many changes during its lifecycle. Wicket supports your changing needs with its type safety- refactoring can be done simply and safely. Its excellent support for unit and functional tests provides additional safety when changes are underway.


Google App Engine

Google App Engine is a great way to get an app running in the cloud with a minimum amount of system administration. However nothing comes for free, and GAE's cost generally comes in the form of its non-standard datastore API and somewhat restricted servlet environment.

I've been using GAE since the debut of its Java API, so I can help you navigate the many pitfalls of running an app on Google's cloud.


GWT

Google Web Toolkit is great for building applications that behave like traditional desktop apps, but run in the browser.

Writing apps in pure Javascript is tedious, error-prone, and it's difficult to make them work well on all browsers. GWT allows you to write your app in Java, with all of its extensive tooling support. Your code then gets compiled down to Javascript, perfectly optimized for all the major browsers.

GWT is appropriate if you have an "all-in-one-page" application in mind. If you need an app to run in a single page and have the feel of a desktop-app (think "Gmail"), GWT is a good solution.

Be aware that GWT is not generally suitable for sites needing SEO (it's very hard to get dynamic sites properly indexed by search engines).


Hibernate

Hibernate is a mature ORM that integrates well with Java generally, and Wicket in particular. It has a bit of a learning curve, but once mastered, it's a real time-saver.

Hibernate does come with its fair share of pitfalls, but a good test suite can guard against most of them. I create JUnit functional tests for all Hibernate model code as a standard practice.

I can also help you set up Hibernate to automatically generate your schema (or update it) directly from your Java model classes.


MySQL

While perhaps not as full-featured as PostgreSQL or Oracle, you can't beat MySQL on install-base and community support.


Github

Although I can use any source-control service you prefer, I highly recommend Github.

I create a private repository for each customer project, so you'll enjoy both privacy and easy access to your code as your project progresses.