Posted on

Your thoughts on embedded WMVs with progress bars

Let me reach out to the community for a moment. I’m trying to deliver a movie to be played in a web browser. The movie must play in Internet Explorer 6, 7 and 8, Firefox and Safari. The movie sits on a LAMP box. The movie is roughly 35MB windows media (WMV). jQuery is available. The challenge: Deliver the movie to the client without the client impatiently clicking the play button repeatedly (elevator syndrome), reloading the page, or giving up and leaving. This implies some sort of progress bar or loading spinner. I can’t seem to get a loader to work to save my life.

I’ve tried:

  • Various attributes on the object and embed tags
  • Using jQuery plugins like jQuery Media plugin and jMedia
  • Looked into other players and ruled out Flowplayer and SWFObject2
  • Tried getting Ajaxy but the document finishes before the movie completely downloads and the spinner quits too early.
  • I’m testing WVX streaming right now but it’s not looking good.
  • Some other stuff

The goal is simple: Take a large wmv movie and present a loading indicator until the movie is cached in the user’s browser. This one is giving me a real hard way to go.

Posted on

Week Long Programming Debacle

I’ve solved it! A week ago started a series of unfortunate events that program progress on my application to a screeching halt. My efforts and work did not quit but every fix seemed to reveal another bizarre issue. But surely a professional programmer could figure all this out in a day rather than a week? No. Problem solving isn’t always that simple. This was akin to hiring a contractor to add a room to the back of the house but in starting to dig his foundations he discovers an old septic tank buried behind the house and in trying to remove it he discovers a cave under that. My problem began with a test when I cleared all my cookies.

On problem set off another. The development server, long overdue for an upgrade, lost its mind but this wasn’t immediately evident to me so I did a line by line inspection of the code searching for the answer to some really whacked out behavior. Eventually I realized the server was shot and moved to another server. After fixing several issues either hidden and discovered in the line by line inspection or caused by experimentation in attempts to fixed the oddities caused by the flaked out server, I eventually discovered the source of the original issue. In short, jQuery’s .filter gets overridden by jQuery’s .listen plugin so it appears.

jQuery has a built-in traversing function called filter() but handlers for events get bound only on the initial rendering of the DOM. If the DOM is modified dynamically, for instance if content is added with AJAX, then the newly added event handlers will not be recognized by filter(). Fortunately, Ariel Flesler stepped up and created a plugin called listen() (use the 1.0.3 version!) which registers the handlers for the matching events and this works for new content added via AJAX or other DOM manipulation. It seems, unless I am misinterpreting something, that listen() overrides filter() so if you have both filter() and listen() on the same page, your filter() events will never fire.

Posted on

Code Buzz

Runners get a runner’s high. I’ve got a coder’s high. My head is buzzing as I’ve been hitting the keys hard. My current PHP application has dynamic content loaded via AJAX but when the user navigates with the browser’s forward or back buttons the state is lost, that is, all the dynamic content disappears. Also if the natural navigation of the application takes the user away from the dynamically generated content, when they return the content is lost and the user frustratingly has to drill down, dynamically loading more content, to get back to where they were. Using jQuery, some custom JavaScript, and some fandangled PHP, I have overcome this obstacle and created a state engine that remembers which content was loaded and re-presents it on the screen whenever the user navigates with the browser’s forward or back buttons or the applications natural navigation. I’ve just finished the behind the scenes mechanics of this code and now have to fix the presentation level (after a 10 minute break). Whew! This was fun!

Posted on

Securing Contacts and Jobs

I just put a resume out on this one. Sounds fun!

Duties and Responsibilities:
– Assist in composing web pages and in creating special sections as assigned by the Site coordinator
– Work hands-on in the development of web applications (AJAX/HTML/Javascript)
– Competence creating table-free layouts
– Prototype, develop, and maintain new features and enhancements
– Operates as a leader/lead worker among other staff, shares knowledge or training with subordinates and/or colleagues to benefit the entire department
– Participate in workflow design and analyze existing production and implementation processes in order to insure the overall quality of the sites
– Maintenance and support of existing templates and content production processes
– Perform web development, template writing, testing debugging, documentation, and installation tasks for on-line processes in accordance with industry best practices and specific internal procedures and standards
– Partner with Web-ops to ensure that interactive techniques and technologies translate through to shipping products and services
[Source]

One of the challenges of working for yourself is you have to shoot at a lot of barns to hit some work. The problem is barns move pretty quick! Sometimes it is just plain difficult to find a barn. Then the barn’s owner looks at you and may not even give you permission to shoot at the barn in the first place much less give you the barn.

Playing low budget developer and sales person at the same time can lead to missed deadlines or living with very little sleep. Finishing a project, then turning on sales mode can lead to dry spells where you wonder how you’ll eat. Ideally, you should be working with a sales person!

Posted on

All Things Web 2.0

View a list of the best and most popular web 2.0 applications. What is Web 2.0? It is being hailed the next generation of web applications. In reality, it is an old concept. The way the World Wide Web works is a client computer (your web browser) makes a protocol request (typically http) to a web server which then talks to other servers (ColdFusion, PHP, mail, news, etc.) and returns a document to your browser. We experience this as a screen refresh and the little icon in your browser spinning around like an abnoxious hourglass. Web 2.0 gives the illusion that the wait, the hourglass, has been eliminated. It uses JavaScript tricks to make the requests behind the scenes. You can witness this by adding something to your Google Calendar. Notice the word "Loading…"? That has replaced a total page refresh.

I have problem with Web 2.0 and that is accessibility. For years web developers have held back on certain capabilities in order to not limit their audience. I would ask my clients, "how successful would McDonald’s be if they turned away 80% of their customers?" In the early days relying on something like JavaScript could be just that limiting. As a business, you have to know who you are serving. If your customer base is primarily Mac users and your web developer says, "I don’t support Safari." then you need to decide if you are going to fire your web developer or your customers. Browsers have come a long way and for the most part are much more compliant and compatible and almost all support Javascript. So where is the accessibility problem? We have far more computer neophytes using computers today and playing on the Internet (primarily via the World Wide Web). Apply firewall settings too strictly or get overly aggressive on popup blocking and you may find that Javascript is disabled. Try disabling Javascript and use Google’s calendar. They can afford to turn people away. Can you?

Use Web 2.0! It is cool and what people will expect of your application. However, write it to degrade nicely. Detect that Javascript is disabled and, if so, present your site Web 1.0 style.

Posted on

Are you cleaning up with AJAX?

AJAX bugs me because a bunch of developers that used to say "we can’t do that because we would limit our market" jumped on a bandwagon that potentially limits their market (ie. browsers that don’t support javascript or have javascript disabled don’t support AJAX). Try using Google’s calendar with javascript disabled or change your user agent to an unknown browser.

Regardless, all developers worth their salt should do some dabbling in AJAX. Here is a nice list of 126 examples.