What it do, what it do

It's been a while since I posted so I thought I'd do a general update. At the start of November I started a new position as a front end developer for Eventful, a site which maintains a listing of various local events. Of course this means that I've had much less time to work on JCWS projects, but it also means I've been gaining a truckload of valuable experience with things I haven't done before.

The first of those many things is Perl. Eventful is built on a custom framework written in Perl, and while most of my job involves the front end (HTML, CSS, and JavaScript), I'm picking up some Perl as I go as well. It's interesting to go "backwards" in learning languages, in the sense that I'm now learning a language that came before and influenced the ones I already know. It makes it very easy to see where Perl's successors made improvements.

In addition, I've added Template Toolkit, a Perl-based templating language, to my repertoire. Template Toolkit actually has much nicer syntax than Perl. In fact, it's somewhat similar to Ruby because it abstracts many operations into a generic "dot" operator. You can write something like myobject.3.size and it will perform the necessary Perl in the background to operate on myobject regardless of what type it is.

The biggest value of working at Eventful so far has been the experience working in a collaborative environment. Though I've worked with other people at past jobs, most projects were handled more or less by one person and there wasn't a lot of interactivity when doing the actual development. Working with multiple people on the same project allows me to see how other developers deal with various situations and to learn from their methods.

Outside of Eventful, the project that has received the most of my attention is More Things Need To, a user submission-based quote archive, similar to bash.org and Texts From Last Night. MTNT is a joint project with my friend Michael Chadwick and is written, once again, in Ruby on Rails. Additional details will come when the site is ready to launch.

My projects have also been leading me into new knowledge on a variety of other subjects, including SSH, Subversion and Git workflows, unit testing, and issue tracking (for which I've recently installed Redmine, which I am loving so far.) Things are good on the web development front.

Jimmy Cuadra featured on HTML5 Gallery

This past Saturday, HTML5 Gallery featured the Jimmy Cuadra Web Services site. HTML5 Gallery states its purpose as being twofold:

  1. To showcase sites that use html5 for markup
  2. To help people learn about html5 and how it should be used and how to implement it

I'm proud to have the site included in the gallery to help support this emerging technology. If you're interested in HTML5, I encourage you to take a look at the HTML5 Gallery site, subscribe to its feed, or follow it on Twitter!

CSS3 transitions and animation: Presentation or behavior?

When I first heard about CSS 3 transitions and CSS 3 animations, I didn't really think it was a good idea. One of the main purposes of CSS has been to separate presentational information from structural markup and data. This seemed like a good set up: HTML for structure and data, CSS for presentation, and JavaScript for behavior. Adding behavioral elements to CSS that should be done in JavaScript seemed like it was blurring the lines in a bad way.

I think in order to see the value of CSS 3 transitions and animations, it's necessary to rethink what "presentation" and "behavior" really are. Developers have gotten used to thinking of presentation as the answer to simpler questions like, "what color is the text?" and "how much space should exist between menu items?" JavaScript has been used for almost everything involving dynamic and interactive styling on a page.

The key thing to realize is that a lot of the things JavaScript has been used for are presentational, and have been done to close the gaps where CSS features were lacking. Take rounded borders, for example. Until CSS 3, this was achieved through either images or JavaScript. But it's clear to everyone that this is strictly presentational and didn't really fit as a task for JavaScript. The CSS 3 border radius property finally offers a solution to this common problem without fudging it with JavaScript or images.

CSS 3 transitions and animations are really no different. The reason I thought they were out of place at first is that they involve the manipulation of elements on the page, making things move and change. That sure sounds like behavior. Well, in a way, it is, but it's also presentational behavior. Links that change color on hover are ubiquitous presentational behavior, so why wouldn't it be presentational to have the color visually transition from one to the other instead of switching instantly?

Instead of thinking of presentation as what things look like and behavior as what things do, we should think of presentation as anything that doesn't fundamentally alter the page, and behavior as anything that manipulates document structure or data, or that facilitates explicit user interaction.

1 10 12 14 17