Fabulous IT

People, Process, Technology: in that order!
~ Tuesday, November 9 ~
Permalink

Agile in Higher Education IT: Myths and Methods

This is a presentation I gave at UNC Cause 2010. It focuses on the efforts of my team to understand and apply Agile in the higher education environment. It is available in PDF and Google Docs Format.

Tags: presentation agile highereducation softwaredevelopment process it teamwork
1 note
~ Thursday, October 7 ~
Permalink

Getting It All, With CSS (part 4)

This was one of three hands-on tutorial sessions I developed to help peers learn practical CSS skills. This session from 2004 focuses on making properly tagged (accessible) forms attractive without the need for table based layouts. (divided into 4 sections)

The Value of Styles

This six rule set style sheet is relatively simple because it only applies to a few tags. At the same time, it is a little complex because it completely changes the nature of several tags. Style sheets are powerful but this exercise begs the question, “Was all that work worth the effort to make an accessible form look exactly like the original? “

Read More

Tags: html form accessibility
Permalink

Getting It All, With CSS (part 3)

This was one of three hands-on tutorial sessions I developed to help peers learn practical CSS skills. This session from 2004 focuses on making properly tagged (accessible) forms attractive without the need for table based layouts. (divided into 4 sections)

Making The Form Accessible

In order for a form to be considered accessible, each input needs to be associated with some text. In the case of groups of radio buttons and check boxes, the group must also be formally tagged and represented by some text. The label tag can be used to associate text with a single form input and the legend tag can be used to associate text with a group wrapped by a fieldset tag. Out of the questions that already exist on the form, all of the text boxes and the select list are wrapped together with the associated question or text label with a “p” tag. Simply changing the paragraph (P) tag to a label tag makes those form inputs accessible.

Read More

Tags: html form accessibility
Permalink

Getting It All, With CSS (part 2)

This was one of three hands-on tutorial sessions I developed to help peers learn practical CSS skills. This session from 2004 focuses on making properly tagged (accessible) forms attractive without the need for table based layouts. (divided into 4 sections)

Step 2 - Change the Head

Change the title to, “An accessible form made attractive with CSS”.

  <head>
     <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     <title>An accessible form made attractive with CSS</title>
  </head>

Next add a style tag to the document. This will contain the CSS that formats and positions the form. It can go anywhere in the head, but after the title is a preferred location.

Read More

Tags: html form accessible
Permalink

Getting It All, With CSS

This was one of three hands-on tutorial sessions I developed to help peers learn practical CSS skills. This session from 2004 focuses on making properly tagged (accessible) forms attractive without the need for table based layouts. (divided into 4 sections)

In this three part series we will explore the potential of Cascading Style Sheets (CSS) to make life simpler. While it is true that CSS support is still not a guarantee among everyone in your web audience, the availability is high enough that most users that would benefit from it already have it, and those that do not have it may be better served by unstyled, but well structured content.

Part 1 : Format and Positioning with Forms

CSS is a large and very complex specification. This introduction uses form elements to illustrate the power of CSS. Styling content is a useful application, but under-representative of the possibilities. Using CSS for layout is a great way to show off what it can do, but is very involved. Using form elements as an example allows for a simple introduction to both the styling and positioning capabilities of CSS.

What You Will Need

  • A Text Editor; WYSIWYG HTML editors are fine, but all you really need is a text editor. Understanding CSS requires working with the tags.
  • A Browser; Mozilla Firefox, Opera 8, or Safari are recommended. Internet Explorer is always important to test in (since most people use it), but it is not very compliant with the specifications.
  • These Files

Read More

Tags: html form accessibility
Permalink

Accessibility In a Nutshell

These are notes that accompanied a presentation I gave in 2003, outlining the requirements set out by Section 508 for accessibility.

Section 508 Web Requirements Demystified

There are 16 items in Section 508 of the Rehabilitation Act Amendments of 1998 that specifically target Web Accessibility. Some of these items are very easy to understand, others are more complex. All of them can be understood and catered to within reason.

Read More

Tags: accessibility
~ Wednesday, October 6 ~
Permalink

Accessibility Tools for Specialized Content

This article was originally compiled to summarize a group presentation given at UNC Cause 2004. My component of the presentation focused on making Flash Animations accessible. Following the conference I presented on all of the topics covered to peer developers in the NCSU community.

Read More

Tags: accessibility
~ Wednesday, September 8 ~
Permalink

Philosophy on IT Accessibility

This article was originally published on the Wolfblogs edition of Fabulous IT, March 19 2009.

I was recently asked about my “philosophy for providing a campus IT infrastructure that is accessible”. Accessibility is a topic that I feel very passionately about. It is one of the great opportunities of our time, to improve our world for everyone by making it equatable for as many people as possible. My long standing belief is that the principles applied to design with accessibility in mind do not have benefit limited to only a few. It has the effect of both normalizing usability and also improving it.

Much to my chagrin, the timing of my response was rushed and reading back over it I was not entirely happy with it. I wanted to share a revised version with some effort to further the clarity and flow of my vision:

Statement of Commitment to Accessibility

Providing equal access to academic and administrative information is a challenge I encountered early in my career as an IT professional. The first accessibility solutions I implemented for the College of Engineering during the late 90’s as a student employee were unwieldy to maintain. We were working with static content, a poor understanding of accessibility requirements, and conflicting needs. The pages had to “look good”, but this was difficult if not impossible to accomplish in the years before cross browser CSS support.

Read More

Tags: accessibility
~ Tuesday, September 7 ~
Permalink

Putting Agile To Work

This article was originally published on the Wolfblogs edition of Fabulous IT, January 13 2009.

Picture of a cat with legs folded under, looking tired, on a bookshelf. Inline caption reads, "Monorail kitty now stops at library"All the reading in the world won’t prepare you for real life. I keep telling myself that, but it never seems to sink in.

I have checked out book after book on Agile. While they all have great ideas, I find that applying what I have learned is a slow process. One reason for this is I already have over a decade of programming experience under my belt, mostly flying solo. Old habits die hard. I am getting better at breaking up work into units that can reasonably be finished and checked in the same day. I’m not quite as proficient with taking work to be done and dividing and estimating it, but that is something I am working on.

Read More

Tags: agile
~ Sunday, September 5 ~
Permalink

Javascript: The Good Parts That Reveal An Inconveneient Truth

This article was originally published on the Wolfblogs edition of Fabulous IT, January 10 2009.

I have had a feeling for quite some time now that something was wrong. For over two decades now I have been programming. Granted the types of programs I was writing in 1989 were quite trivial, mostly Commodore Basic. My first exposure to object oriented (OO) programming was PIL, an interpreted scripting language for the Pirch IRC client. It was around that time I also started tinkering with Javascript.

Read More

Tags: programming javascript objectorientaion
~ Thursday, August 19 ~
Permalink

Refactoring, One last push.

This article was originally published on the Wolfblogs edition of Fabulous IT, September 25 2008. As it turns out, I never did get back to finishing this code and gave the Sysnews Twitter account it was meant to power over to Jason Austin.

Picture of a cat resting at the bottom of a stair rail, legs dangling. Inline caption reads, "New monorail cat line encounters engineering difficulties."So, originally I had intended to blog about the whole process of refactoring the Twitter RDF feed tool. I also had intended to doing the whole project in a week, or even two at the most. This brings up two very important Agile concepts:

Read More

Tags: programming delayedsuccess refactoring agile
~ Tuesday, August 17 ~
Permalink

Pros and Cons of Development With Zend Framework

This article was originally published on the Wolfblogs edition of Fabulous IT, September 8 2008.

While the definition of “Framework” may not be understood or agreed upon in some programming circles, the Inversion of Control distinction can help clarify the difference between a “Library” and a “Framework”.

Generally speaking, a Library is a reusable collection of code that can be used by a controlling program.  The library implements specialized behavior, image libraries for example perform tasks to generate or manipulate images. The use of a library frees programmers from having to deal with some complexities, abstracting complex problems of a specific type. The programmer using a library writes the code that drives interaction, applying business logic to decide what to do. A library is essentially a service for such programs.

In contrast, a Framework is a system that takes programs implementing specialized behaviors, and uses them to drive interaction. The framework acts as a reusable shell which abstracts common needs of a type of program, such as accepting input and generating output. The framework delegates control to the code written by the programmer in predetermined ways, but it is the framework that is ultimately in charge. 

Read More

Tags: programming framework zendframework html form php
~ Sunday, August 15 ~
Permalink

Yahoo Developer Network’s “Best Practices for Speeding Up Your Web Site”

This article was originally published on the Wolfblogs edition of Fabulous IT, August 22 2008.

We’ve been batting around discussions between our two development groups for a while about ways to improve processes. It is no secret I am very interested in becoming more Agile, and some of my other co-workers are also looking into Agile methods. There has even been some inquiry into how we might achieve better documentation. In all, we are a pretty motivated group.

The co-worker across the hall that turned me on to PHPdoc mentioned “Yahoo best practices” today in passing, mentioning that he and someone else in his group had been looking at, so I asked him to send me the link. It looked good at first, but then when I clicked on the first link that caught my eye I was terribly disappointed.

From a User Experince stand point is always interesting to me to catch “initial impressions”, so this blog post is my initial impression of Yahoo!’s Exceptional Performance Team’s Best Practices:

Read More

Tags: webdesign http
~ Thursday, August 12 ~
Permalink

Chuck Code (unselect text in search field)

This was some Javascript that I cooked up thinking I might want to unselect text in a freshly selected field… then I decided I didn’t like the idea.

Rather than toss the effort, here is the code if it ever happens to be useful to someone else. Based on an example here. Worked in Chrome. The first line assumes jQuery, but a getElementById should work just fine…

var searchField = $('#search');
  if(searchField){
    searchField.focus();
    if(window.getSelection){
      var searchSelection = window.getSelection();
    if(searchSelection.collapseToStart){
      searchSelection.collapseToStart();
    }
  } else if(document.selection && document.selection.createRange) {
    var searchSelection = document.selection.createRange();
    if(searchSelection.expand && searchSelection.execCommand) {
      searchSelection.expand('word');
      searchSelection.execCommand('unselect');
    }
  }
}
Tags: code javascript
~ Tuesday, August 10 ~
Permalink

Refactoring, Declarative Coding

This article was originally published on the Wolfblogs edition of Fabulous IT, August 20 2008.

Tradition holds that a picture is worth a thousand words. A config file may well be worth a thousand lines of code (or easily more). Reconfigurable code can simplify maintenance, portability, reuse, and even development. 

When many novice programmers think of objects, they think of objects exhibiting behavior determined at compile time: hard coded, internal logic. To a large sense this is accurate, programs only do what they are written to do. Computer programs operate on functions, they take input and generate output. In a sense objects are little different since each is primarily a collection of functions, often with some internal state. The behavior of an object is based on the interplay between the functions (called methods) the input to those functions, and the object’s state (called properties).

An opportunity that is often underutilized is the ability to determine behavior at runtime. Object methods, including the methods that create and destroy the objects accept input. Often the input is limited to a small set of variables, making use of the object easier. For some objects this is highly appropriate. In other cases there is a missed opportunity. Take for example an object that has a list of items. In the first version of a program, the object only needs to sort the items in one way, so the sorting function might logically be a method of the object. 

Read More

Tags: programming