Rob Tuley's Code
Examples
Much of my work is based upon a lightweight set of common OO PHP5 components that I have written myself. Nicknamed Knotwerk, this code forms a full stack framework. Either browse the SVN repository or checkout a local copy:
svn checkout http://svn.knotwerk.com/trunk/ knotwerk
For examples of my design and markup, browse my publically accessible work.
My Tools
- PHP
- I work with OO PHP5 code, (usually!) covered by automated unit and integration tests. Using (but not abusing) common design patterns, my focus is to create intuitively coded applications that are easy to maintain.
- MySQL
- I am an experienced database designer (in fact, I teach database application design at Birkbeck College), usually working with MySQL5. Careful avoidance of race-conditions, and wise usage of indexing and constraints leads to high-performance robust schemas.
- Javascript
- I use unobtrusive javascript to enhance page behaviour, but that degrades gracefully. To abstract browser differences, most of my development has used the jQuery library.
- XHTML/CSS
- I layup sites using simple, accessible & clean semantic XHTML and CSS.
My Platform
I have recently been experimenting with scalable "cloud" architectures. Although I'm not a sys-admin wizard, I am curious and competent enough to run my own Ubuntu Amazon EC2 server, from which this site and various others is served. To maintain a professional level of uptime I use the Wormly server monitoring service.
My Ethos
If it isn't tested, it's probably broken!
- I don't quite feel safe anymore unless I'm working within Subversion and have decent unit test coverage.
- I build applications to perform at both small and large scales, being careful address scalability issues in both database and scripts.
- I try to maintain a strong separation between the view, business logic and controller elements of my code, conforming to a MVC paradigm.
- I always work in UTF-8: while this can be painful at times without native support in PHP5, it is the only way to fully support any user input.