Site Contents

Current Topics

This article describes the current topics that Syger is actively investigating. They represent the type of consultancy and development work that Syger undertakes. This, and the other articles outlined here, are also available as a PDF document (about 1.3 MB).

Read more...

Grails – A First Look

GrailsAFirstLookImages/grails_logo.jpg
Grails is a very interesting modern framework for the Java platform. As its name implies, it has built on the Ruby on Rails philosophy, but with an interesting twist. It is based on a very stable and popular stack; the Spring framework, Hibernate,SiteMesh, and Quartz. On top of this, it offers Groovy to produce a clean and simple interface to the stack, whilst remaining completely compatible with the JEE environment – the entire web application can be packaged as a war file.

Read more...

Ruby on Rails 2.0 – A First Look

Ruby on Rails 2.0 is quite a change from the previous version 1.2. You may not like the “breaking” changes that were made, but at least it has the major advantage of not dragging all that backwards compatibility baggage with it.

Read more...

Groovy – a First Look

GroovyAFirstLookImages/groovy.png
Groovy is an agile dynamic language for the Java platform. I've been using it for a week or so now on a project. So far I'm pleasantly impressed with the results. In fact, I'm sufficiently impressed that I'm taking a little time to outline my findings so far. This article will be expanded as the project progresses.

Read more...

Firebug and Aptana Studio

The first developer's rule should be “Never stop looking for better tools”. I've just finished preparing some material for a programming course I'll be holding, and I needed to define the development environment for the familiar (X)HTML / CSS / JavaScript trio. I had originally planned on using a plain text editor, together with Firefox, and my previous favourite development add-ons; Chris Pederick's Web Developer, and Venkman.
Fortunately, I decided to spend a little time checking out if anything new had appeared recently on the horizon. Well, it has, in the form of Joe Hewitt's Firebug. I'll probably still keep Web Developer, but Firebug has plenty to offer, over and above the rest.

Read more...

REALbasic, Heir to Visual Basic 6?

REALBasicImages/realbasic-logo.jpg
REALbasic is an object oriented version of the BASIC programming language. It shares some similarity with Visual Basic 6, but also has differences. There is a slightly outdated whitepaper by Hank Marquis, which points out the most significant differences.
Most importantly, REALbasic as a language is probably closer in architecture to Visual Basic.Net and even C#, than it is to Visual Basic 6. The samples in this Code Project article comparing Visual Basic.Net and C#, shows the syntactical similarity of Visual Basic.Net and REALbasic.
Which means that REALbasic can, and should, be considered as a possible alternative to moving to, or using, .Net technology for a specific project.

Read more...

Java Web Application Frameworks

JavaWebApplicationFrameworksImages/java-logo.jpg
Since the advent of Java Servlets and JavaServer Pages, we have seen an explosion of web application frameworks for the Java platform. The last time I looked there were 54 open source web application frameworks listed on Java-Source.net. Where does one begin?
To avoid wasting other people's time, web application development and consequently choosing a web application framework, depends on a multitude of factors including, but not limited to, the size of the development team and the deployment environment. In this article I am targeting the small software house, say from a single developer to a five man team. Larger software houses will probably have enough resources to make their own decisions. I will also further limit the discussion by defining the deployment environment as targeting the lower end of the scale, 10 to 50 concurrent users, requiring lower memory size servers with lower bandwidth. I am also assuming that you can actually choose the web application framework, rather than being obliged (even contractually) to use a specific framework.

Read more...

Version Control and Unit Testing

In many software houses version control and unit testing are the poor relatives of software development. Everyone knows that a programmer needs a text editor and a compiler (or interpreter) to build an application. Modern IDEs have demonstrated that they can have a phenomenal impact on the development cycle, despite their high learning curves. But what are the advantages of learning about, and using version control or unit testing?
This article explains the advantages of using these development tools, and will, hopefully, convince you that they are quite as essential in the development process as the compiler is.

Read more...

Tutorials

../Pictures/smarties-jxs4.jpg
In parallel with the articles I write as current topics, I also do quite a lot of experimentation to improve my overall programming technique. This document is a compendium of the positive results of this experimentation. Most of the information is of a technical nature, so you should have at least some experience of programming, though the JavaScript tutorials were written with the beginner in mind. Where I discuss using some particular aspect of a programming language, framework or library, I'll do my best to explain the reasoning in an abstract manner, so that the motivation does not become too obfuscated by the necessary specific details. Some of this work is derived from the programming course I held in collaboration with the Linux User Group in Villafranca, Verona.
This, and the other articles outlined here, are also available as a PDF document (about 1.7 MB).

Read more...

Java Persistence API 1.0 Gotchas

../Pictures/apple-nails.jpg
I've been spending some time checking out the Java Persistence API (JPA) version 1.0 over the past couple of weeks. While the prospect of being able to pick and choose the underlying ORM is enticing, there are several grey areas still not covered by JPA. In fact, some of them can be a very dark grey indeed.

Read more...

Grails WebAlbum

After completing my programming course, which introduced the students to Ruby on Rails, and developing a simple photo album application called WebAlbum, I decided that it was time to explore one of the more interesting of the new web application frameworks in the Java arena – Grails.

Read more...

Ruby on Rails WebAlbum

This tutorial discusses a few observations, and some improvements made to the WebAlbum application developed using Ruby on Rails 2.0.2 for a programming course I held between January and March, 2008. You'll need to install Ruby on Rails – version 2.0.2. The application also uses RMagick and SQLite. Installing RMagick is explained in this FAQ, this tutorial uses version 2.0.0. Installing SQLite is explained in this How-to, and the tutorial uses the Ruby SQLite3 wrapper version 1.2.1. The Ruby on Rails Wiki page also gives helpful information for SQLite.
Not all of the modifications were a total success, nonetheless I have documented those as well. I can't sell mistakes as a consultant, but I can at least learn from them.

Read more...

Using JavaScript

JavaScript is, as Douglas Crockford puts it, a very misunderstood programming language. These tutorials are designed to provide an overview, with examples, of the some of the power of this programming language. Since the advent of AJAX, and more recent developments such as Google Gears, the importance of being able to program well in JavaScript has grown enormously.
The tutorials are not just aimed at the developer who works on code for the browser or client side. I have made presentations to classic ASP developers, in an attempt to move them away from VBScript and towards JScript, for web application development. There are also many other implementations of JavaScript interpreters within web servers available, apart from IIS.

Read more...

JavaScript Introspection

This tutorial introduces you to JavaScript introspection. Being able to interrogate an object to discover its properties can be a great help when debugging. Additionally, given the great number of implementations of JavaScript (not all of which are compatible between themselves), the possibility of interrogating an object to find if it contains specific functions is essential in developing cross browser, and cross implementation code.

Read more...

JavaScript Inheritance

This tutorial discusses JavaScript inheritance. However, since JavaScript is a class free programming language, the mechanism used is prototypal, rather than classical.
For this tutorial, I want to add functions to the String object. In JavaScript, the String object is pretty lean, if you're an experienced programmer, you'll be surprised to find that it doesn't have trim(), startsWith() or endsWith().

Read more...

JavaScript Closures

This tutorial takes a look at JavaScript closures. In JavaScript, this means is that an inner function always has access to the variables and parameters of its outer function, even after the outer function has returned. This is an extremely powerful property of the language.
In Douglas Crockford's article entitled “Private Members in JavaScript”, he uses this technique to produce private members, and privileged methods in a JavaScript object. Rather than repeat that work, I'll look at a pragmatic problem that appears many times in web applications – correct link formation.

Read more...

JavaScript Library Design

This final tutorial explains the XML generator JavaScript library. Whether you like angle bracket tax or not, XML is used in web development for XHTML pages, RSS feeds, and AJAX, to name but a few.
This library is designed to produce XML (it has nothing to do with parsing XML). It was inspired by Sean M. Burke's digression in his article “Higher-Order JavaScript”, and by JSON, the JavaScript Object Notation.

Read more...

JavaScript Library Code

This second part of the final tutorial takes a look at the XML generator library code. This library also depends on code from the introspection tutorial. The intention is to discuss the problems encountered, and their solutions. Personally, although the specifications were quite simple, I am disappointed that so much code was required to implement it.
Nonetheless, it is all functional, and has been tested. Firstly, I will discuss the few helper functions, then we'll get down to the details of the converter function toXML().

Read more...

JavaScript Library Example

This final part of the final tutorial demonstrates the XML generator library code. We'll use the same information for our fictitious financial web site, from the closures tutorial, only this time we'll try to make the output a little more professional. This is not a lesson in using CSS, it is a simple exercise in using the XML generating library.

Read more...

Software Development Tools

A preliminary analysis of project management and development tools.
This document loosely discusses:
  • Project management software.
  • Subversion revision control.
  • Continuous build integration.
  • Documentation tools (Wiki).
  • Bug tracking.
  • Unit testing and code coverage.

Read more...

Alternative Programming Languages

This section discusses current mainstream programming language benefits, and compares them with a few outsiders.
The aim is not to define a unique 'best' programming language, but to highlight the strengths and weaknesses of these languages for any given task.
The mainstream languages are:
  • Visual Basic
  • VBScript
  • C/C++
  • Java
  • .Net (C# principally, but could also be VB.Net)

Read more...

The Colophon

Images/key-5b2.jpg
The Syger web site is made from a set of OpenOffice.org documents. These documents are stored in a master document, and a Ruby program converts them to a set of XHTML and CSS files.
This article explains how to use the Ruby program to convert your own OpenOffice.org documents, and also provides an overview of how I prepare documents for my clients.

Read more...

John Leach

Pictures/jhl.jpg
I'm a professional programmer, and Chief Technical Officer of a small software house in Verona, Italy, called Syger. The name came about from being influenced by a drawing by Roger Dean, of ferocious, intelligent badgers, which I transposed to the Siberian Tiger, my favourite animal from childhood, hence Syger.
Most of the work done by my company is consultancy and software development for other software houses.

Read more...

What's New

Pictures/time_dust.jpg
This section details the most important changes on the site since the last published version. New versions will become available when sufficient current articles are updated, or new articles are added.
This page will be updated when existing articles are updated, or new articles are added.

Read more...

Valid CSS

Valid XHTML 1.0

Valid Atom 1.0