Welcome

I'm Christian Cox, an Atlanta-based front-end web developer and occasional designer. Lately I'm focusing on web standards, mobile, and ActionScript development (if you can call that 'focus'). I get to work with PHP and some MySQL too, but not quite as often. Roll over the links below to get a description of the work I performed on each project, then click through to check them out.

Portfolio

Web Standards
Standard Press
Ventanas
Erica & Michael's Wedding
The Stacks
maybe.for.you.
ParkGrounds
Quickbooks Made Easy

Flash
Full Sail Pathfinder
Lifestream
Tronic Studio
FLASH Peril Map
FLASH Video Player
Capital Dateline Online
CDC Flu IQ Widget
Philips Van-Heusen Video Player
Philips Van-Heusen Map
Significant Federation Paparazzi Gallery
J&CO Creative
Firedog Jewelry Configurator
The Iron Spindle

 

Sponsored Links

Basecamp

Web Hosting By ICDSoft.com

Archive for September, 2008

MAX Schedule

Saturday, September 20th, 2008

Monday

  • 11:30 – Getting started with AS 3
  • 2:00 – Using Flex and AIR to automate CS workflows
  • 4:00 – Creating effects with Pixel Bender

Tuesday

  • 8:30 – Build your 1st RIA with Flex 3
  • 1:30 – AIR boot camp

Wednesday

  • 9:30 – Text component library for Flash Player
  • 11:00 – Build a DB-enabled AIR app with Dreamweaver, PHP and AJAX
  • 2:00 – AIR core concepts for developers who use Flash
  • 4:00 – Thermo hands-on

I’m actually really excited about this! Not only do I get to go to classes 8 hours a day, but I get to go to lots of  lab classes – at the end of the period they make you turn in all your practice work for a grade. No lie! Lowest scorers have to act out a new Microsoft commercial on stage at the closing ceremony. Lots of “believable” “successful” “creative” computer users proclaiming “I am a PC”?!!?! John Hodgman owns you and your weak sauce computing persona.

I’m also hoping to capitalize on the unreasonably high number of freebies I get that week. The company I work for is paying for flights, room and conference. And hopefully Adobe’s got swag coming out of their square-rim bespectacled eyeballs. Note to self: check the airline’s policy for extra carry-ons.

Taming the iPhone URL bar

Monday, September 15th, 2008

I get to do lots of different kinds of front-end development at maybe.for.you., and right now I’m cracking on a social networking site optimized for the iPhone. There’s a simple horizontal header at the top with a logo and a few global nav links. That header is consistent from page to page, and doesn’t require any animation. But for the main site content, I’m setting up clickable lists that scroll to reveal more detailed information. It’s basically a stripped-down version of the IUI, but built specifically for this interface using jQuery. There’s plenty of information out there about hiding the URL bar at the top of the screen – a simple javascript function can handle that:

<script language="javascript" type="text/javascript">
   addEventListener("load", function(event)
   {
	   setTimeout(function(){window.scrollTo(0, 1);}, 100);
   }, false);
</script>

Add that in your <head>tag to scroll the URL bar out of the way when the page loads. But with an AJAX-heavy interface, I found that the URL bar isn’t easy to keep out of the way. Links, animation, and scripting can all cause the URL bar to drop down, even if you’re not sending the user to a new HTML page. Eventually I was able to work out my problems, but only after wasting plenty of time with guess-and-check coding – and continuously uploading my updates to the web because I can’t test locally on my iPhone. Anyway here’s a checklist I came up with for troubleshooting the URL bar.

Prevent the default event. It’s not something I always think about, but it’s usually a good idea, and is usually the first thing I check when troubleshooting. If you’re using <a> links to trigger animations, be sure to catch and prevent that default event.  If you’re using jQuery to do your animations, this is simple:

$("a.list").click(function(event){
    event.preventDefault();
    // animation scripts go here
});

Consider the height of existing page content. Is there enough content visible on the screen to fill up the entire available vertical height? If not, the browser will scroll to the top of the page regardless of whether or not the URL is being manipulated. One solution – the CSS min-height property. Of course, it’s not universally supported but since we’re optimizing for iPhone/iPod touch we’re pretty well covered. So I create a class called “page” that includes a min-height of at least 400px – combined with the 80px of my header that should be plenty of vertical space to fill the screen.

/* CSS document */
.page
{
    min-height: 400px;
}

So I thought that would solve all my problems but during some of my page animations I was still seeing the URL bar drop down. I’m hiding a page element off the right edge of the browser, and setting its display property to “none”. When a link is clicked, I animate the original page off the left edge and animate the new page onto the screen. Even though I was using a time-delayed callback to hide the first page after the off-screen animation, since I had that line of code before the line displaying the second page the browser detected an insufficient amount of content on the page for a brief moment and scrolled to the top. Here’s the bad code:

$("#leftPage").animate({
   "left": "-100%"}, 700, "", function(){
      loadPage(event.target.rel);}
);
$("#rightPage").show();
$("#rightPage").animate({
   "left": "0%"}, 800, "", function(){
   $(".page:eq('0')").hide();}
);

And the corrected version:

$("#rightPage").show();
$("#leftPage").animate({
   "left": "-100%"}, 700, "", function(){
      loadPage(event.target.rel);}
);
$("#rightPage").animate({
   "left": "0%"}, 800, "", function(){
      $(".page:eq('0')").hide();}
);

So after a lot of trial and error I worked out most of the glitches with the URL bar. Next week I’m sure it’ll be something else.

OMGWTF?

Sunday, September 14th, 2008

Now with more Web 2.0! No seriously, it was time for a site revamp. If you visited the site before, you would’ve seen a big Flash interface that was more experiential than informative. It also had quite a bit of old work (some from school) that wasn’t really very relavent to anything I’m doing now. Unfortunately it was also created at a time before I realized the importance of SCALABILITY. Believe me, once I got a real jobby-job I learned quickly just how much I appreciate setting up a site so that it’s easy to update down the road. So what you’ll see here is less experiential and more content-driven. I’m even including a blog…for now.

You’ll also notice a shift in the types of work I’m showing. In the past there were quite a few examples of design, a lot of Flash pieces, and a limited number of web standards sites. Now you’ll see that I’m focusing more on development than design, and I’m also showing more of my web standards and mobile-based projects. Why? Cause I gets bored, that’s why! I like to be flexible at work, and that means being able to take on many different types of projects: AJAX, PHP, MySQL, iPhone optimized, and even email campaigns are all fair game and I couldn’t be happier. So I’m going to be showcasing work from all of these categories here, mostly just as a repository for myself so I can have a reference in the future.

So yeah, this is the obligatory first post on my new site. It had to be done. Now it’s time to get back to work.