d3
design : develop : deliver
A fusion of creativity, technology and groove culture. Tom Auger's online blog and portal to dimension :: T. [contact info]
What you'll find here: technology, used in creative ways to address business and human needs.




print web branding 3d modeling illustration
artistic business
projects languages process projects in progress
online mixes playlists / sets composition philosophy technique
user interface chat/forum security games database dynamic content physics client/server
Perl JavaScript Lingo ActionScript ASP SQL
lifecycle IA / usability creativity testing
proposal assessment brainstorm brief UI design
click a design category at right for samples
Design is about more than pretty graphics. Design is about researching, understanding and planning. It's about balance, form and message; environment, audience and impact. It's about conception and the implementation of those concepts.

In this section I have collected work I have designed and produced in various media.
I got into the print industry in 1990. Since then I've progressed from the 55 lpi b&w offset lithography of the Faculty of Arts newsletter. My work has involved layout design, logo design, large-format, stochastic/fm screening, specialty inks, glosses, varnishes, foil stamps, even die-cuts and scoring for package design. On the prepress side I've done film stripping, trapping, imposition, colour calibration and correction, drum and film scanning, and of course the obligatory 2 a.m. press aprovals! view print portfolio [slideshow OFF]
I love designing for the web for a host of reasons: it requires greater discipline than static page design and has to take the client's parameters and preferences into account; it offers the challenge of interactivity and dynamic content; there is an appealing public immediacy to publishing a website that the whole world could potentially see.

This portfolio collects my online work. For interactive new media projects, see the development section on this page.
view web design portfolio [slideshow OFF]
A brand is not a logo, a colour set or a font. It is a perception, an identity: a message. The audience is as much a part of it as the brand holder, the delivery as much as the content.

Here I have assembled various logos, corporate ID packages, styleguides and document templates that I have been asked to create.

Link to eClore branding case study Branding Case Study - eClore
view branding portfolio [slideshow OFF]
Who needs stock photography when you can create photorealistic objects yourself that can be placed, posed, lit, shot and close-cropped any way you like?

In this portfolio I have gathered some of the more interesting 3D models and animations that I have done over the years using a host of software and animation systems.
view 3D modeling & animation portfolio [slideshow OFF]
choose artistic or business illustration
Illustration. The visual idea. Whether for purely artistic reasons, or to communicate a complex business concept, creating an illustration that speaks to its audience and attracts the eye is always an enjoyable challenge. I use a combination of digital tools for my illustrations: 3D modeling, Photoshop, Fractal Design Painter and of course, Adobe Illustrator.

Click on "artistic" or "business" below (or in the hierarchical menu at right) to see those portfolios.

Art for art's sake.
It's about letting creativity make use of whatever tools and materials are at its disposal. Digital or traditional media, unorthodox methods, complex mathematical formulae. Whatever gets the job done.

Check out some of my favourite artistic pieces - some for clients, but many just for the sheer joy of creating.


An image is worth
a thousand bucks. A good illustration can inspire the client, create a "graphic bite" that they hold on to long after the presentation is over.

Here are just a few examples of business illustrations that were used in pitches, presentations and deliverables.

click a development category at right
I have been programming since I was 12, but I've learned that product and solution development is much more than stringing together a few hundred lines of spaghetti code.

An effective development cycle requires a solid understanding of the requirements, a solid architecture of the solution framework, a realistic plan for developing and deploying the project, a rigorous testing model and metrics that will drive future development forward.
Here you can explore the wide range of development projects I've been involved with, working with a number of environments and languages.
User Interface when you can create photorealistic objects yourself that can be placed, posed, lit, shot and close-cropped any way you like?

In this portfolio I have gathered some of the more interesting 3D models and animations that I have done over the years using a host of software and animation systems.
view user interface examples [slideshow OFF]
It's about community - people's undeniable need to communicate, to share ideas, to touch each other. To reach beyond and through the veil of virtuality and make contact.

I have created chat engines and user forums that have been used in games, distance education, online customer service and special interest groups. Most have involved Perl for the back-end and JavaScript for the user interface layer. I have only ever explored the stateless model, since one of my philosophies is to use ubiquitous technology grant users immediate accessibility without the need to download additional components or plugins.

click for a list of chat / forums installations
view chatpage and forum examples [slideshow OFF]
Security when you can create photorealistic objects yourself that can be placed, posed, lit, shot and close-cropped any way you like?

In this portfolio I have gathered some of the more interesting 3D models and animations that I have done over the years using a host of software and animation systems.
view security programming examples [slideshow OFF]
The power of the internet to deliver high-value content these days leaves the door wide open to a huge gamut of online gaming possibilities.

Currently I have two working* games up and running on tomauger.com: Chess, and Shanghai. A number of other exciting projects are in the works, but if there's one thing I've learned: writing a good game by yourself takes time!

*with some small bugs and quirks!

Chess
is written entirely in Perl / JavaScript over flatfile and SQL databases, requiring absolutely no download from the client and making it perfectly easy for the end-user to get into the game fast.

Users can play each other in real-time, with a chatpage for communication, or they can play asynchronously, with email notification when their opponent has moved.

The game features point-and-click moving, illegal move and check detection and multiple board sizes (for different screen resolutions).

In the Lobby area, users can see who's playing and how they're doing, they can create new games or join existing ones.




I created Shanghai because I found myself constantly playing a shareware version of the game and it was ugly! I rendered each 3D tile using Strata StudioPro and programmed the game using Lingo in Macromedia Director.

I've never actually managed to beat my version, so I'm not sure if the victory condition is even working at all, but the hardest part was programming the tile set-up and randomization procedure.

The menu drag function is the offshoot of some physical simulation experiments I was working on at the time. Completely gratuitous, wacky fun.




Mercury is a game framework that's missing a concept. It started off a visual experiment - I was trying to simulate a basic "metablob" functionality - the effect of two drops of mercury as they approach each other. The effect was so cool I started building a Tetris-type game framework around it. The principle: place similarly-coloured blobs diagonally next to each other and they will "fuse".

But so what? Without the driving concept the game is just an excuse for cool graphics. Any suggestions? What should the game objectives be? How do you win or lose? What should future levels contain to make them more challenging? If you have ideas, contact me.



You almost always need a database to store, manage and serve up content, whether it's user-input, pre-seeded data or data captured from external sources.

I work in Oracle, MySQL, BerkelyDB, MS Access, or Pipe-delimited Flatfiles; whichever is most appropriate to the platform, delivery method, content and programming environment being used.

click for a list of projects and DB types

An excellent example of MySQL/Perl interaction
is VALEN's Tome - an informal exploration of over 4000 collectible Magic:The Gathering(tm) cards.

The data is seeded using a Perl capture routine that visits the Wizards of the Coast website, downloads and parses an HTML list of all their currently active cards, then visits their card image database and captures the URL of all their card images. All of this information is stored in a relational MySQL database. Users can then browse and query against this database using a complex, visual query form.




Another obvious example of MySQL serving XML-like content to a web service is the portfolio found on this very site.

All portfolio items, images and hit frequency data are stored in an ITEMS table with foreign keys to a HEADER table. All headers have foreign keys to a SECTION table which contains the major portfolio sections.

This data is then encoded on demand into an XML markup that is merged with a DOM-compliant HTML page template. Inline JavaScript on the resulting page handles everything from resizing the window to fit the content, to automating the slideshow to storing user preferences in session cookies.


Chat / Forum when you can create photorealistic objects yourself that can be placed, posed, lit, shot and close-cropped any way you like?

In this portfolio I have gathered some of the more interesting 3D models and animations that I have done over the years using a host of software and animation systems.
view chat / forum examples [slideshow OFF]
I'm no scientist, nor much of a mathematician, but I've come up with a few interesting effects using math and physics. Mostly eye-candy, some of these have practical applications in the real world, from video games to data modeling and visualisation to human-computer interaction and user interface design.


Particles

Viscosity simulates viscuous molecular motion. Parameters include momentum, inertia, initial force and drag.
Shower is a continuous explosive particle emitter. Basic trig stuff, really. Parameters include force, wobble, decay and gravity.
Repulsor demonstrates particle elasticity. Move the "repulsor brush" through the spring field. Parameters include speed, damping, brush force and brush radius.


* requires Shockwave Player to run. Free install [HERE]

3D Math

This 3D Projection of an XML dump from a database demonstrates how data polarized along three axes can be visualized in 3 dimensional space.
A simple rotating Starfield giving the illusion of rapid movement through space.


* requires Shockwave Player to run. Free install [HERE]

My only client-server project was a big one: open a Perl secure socket connection to a remote real-time stock server, send a coded request based on the user's search input, parse the binary data coming back against a predetermined API format, and then parcel the whole thing up and merge with some pseudo-HTML markup templates and a graphical user interface.

Creating the actual socket connection was the easy part, using Perl::MOD IO::Socket. The biggest stumbling block of the entire project was getting the data stream to read correctly. After days of hair-pulling, it turned out that the data was being sent in little-endian format and my Unix-based script was assuming big-endian (MSB-first) data.

click to see some code fragments

DJ Valentine in da house. Mixing it up for all you funky people out there in the world wide weird. Spinning deep house, lounge, techno, world and drum & bass. Laying down original tracks and kicking live percussion while the bass is pumping.


This site will not work
correctly using Mac IE 5.0

Download latest version?



The SNAPSDiary @ tomauger.com is an online visual blog featuring an assortment of photographs and text from the days and lives of Tom, Sophie, Jake, The Poupousses and the rest of the gang.

It's fun, it's visual, it loads fast and it features images from all around the world (well, Canada and Europe to be more precise.) Check it out and see what one guy and an Olympus E-10 Digital SLR can do!

Programmed using Perl and JavaScript. The image and text "database" is the directory structure itself.

With enough demand, I will implement a "multiple user" version which will allow you to create your own SNAPSDiary account so you can share your own images with the world.

Click on the link under your mouse to take you there!
theFORUM @ tomauger.com is the latest version of theFORUM software created by myself for a variety of clients on the web. The original intention was to create a simple way for users of a site to post messages - a basic online forum.

Since its early incarnations, the FORUM was distinguished by its extended format - messages were in one long scrolling list, 25 to 50 messages at a time, with most recent messages first. This reduces the interface clutter and focuses on continuity.

TheFORUM software has evolved considerably, to include an online dictionary and thesaurus, user-definable categories, user profiles, email alerts, simple markup tags, swearword parser (that was fun to write) and full search capabilities.

TheFORUM is based on Perl/BerkeleyDB and JavaScript.

Click on the link under your mouse and express yourself!
I love games and gaming, so it's natural that I try my hand at creating some games online. So far, the actual number of debugged and tested offerings are few, but there are a number of exciting projects in the make.

Currently you can try your hand at the classic Mah Jongg tiles-based solitaire game, or you can challenge another human opponent to a game of Chess in real-time or asynchronously.

Click the link under your mouse to go to the Games section of my portfolio. From there you can follow the links to the online games
Thanks for your interest in Tom Auger and d3.

Tom Auger can be reached at the coordinates below:



Why display my coordinates as graphics and not copy-and-pasteable text? A lot of web crawlers ("spiders"/"robots") traverse websites looking for text and tags that contain email addresses. They then store these email addresses in mass-mailing lists to be sold to third parties for spam marketing campaigns. I have been attacked many times this way and have decided to no longer show my email address in plain text or HTML on my site. I apologize for the slight inconvenience: luckily I've made my email address easy to remember!
Disney Consumer Products (Canada)Media Asset / News ManagementBerkeley DB
www.borgandvella.comMailing ListFlatfile
www.borgandvella.comEvent CalendarFlatfile
www.cal-look.comUser ForumBerkeley DB
www.linuxstocknews.comWeekly Newsletter & Mailing ListFlatfile & Berkeley DB
www.gate403.comMonthly Jazz LineupMySQL
CHESS @ tomauger.comUser and Games DatabasesBerkeley DB
The FORUM @ tomauger.comUser ForumBerkeley DB
VALEN's TomeQueryable Trading Card DatabaseMySQL
www.tomauger.comPortfolio Content Management ServerMySQL
SNAPSDiary @ tomauger.comPhoto ScrapbookHashed Files & Dirs
# This snippet is an exerpt of the API definition for the datastream
# This is basically a field definition: FieldName, FieldLength

@API13 = ( ['Type' , 1],['Error' , 1], ['MsgId' , 1], ['Base' , 13], ['Name' , 31]) # /snip/

# Later in the code, we parse and transform the data

if ($byte_length == 184) # Basic error checking
{
my $API13Ref = FillStruct (\@API13, $response); # turn datastream into a hash

DivideDailys ($API13Ref, qw (Open1 Open2 High Low PrevClose Last Bid Ask) ); # algorithmic transforms

$API13Ref->{'Tick'} = $Tick[$API13Ref->{'Tick'}]; # additional basic transforms

my %SnapQuote = %$API13Ref; # just to eliminate refs to refs

# now, load the pseudo-markup HTML template and
# load in the appropriate data fields where desired

open TEMPLATE, "$d_template_dir/$no_match_tpl";
while (