Enabling Multiple Configurations with Zend Server

I beat my head against this for a day and a half. Despite relatively decent documentation of the Zend Framework, the folks over at Zend seem to have fallen down on the job when it comes to explaining the more complex issues involved with running the Zend Server. The information herein contained was gleaned from a few posts buried in the Zend Server support forums, trial and error, and by trying every other method I could imagine.

Prerequisites

First off, I'm going to assume that you've got the Zend Server up and running. Secondly, I'm going to assume that you've figured out how to run Virtual Hosts inside of Apache, and that they're set up and running as fine as you can get them to run without setting up multiple configurations.1

Assuming you're still with me, you're ready to roll.

(more…)

  1. You can't. That's why you're here. []
No Comments Read Post

Virtualizing Windows 8 CP with VMWare

On February 29, 2012, Microsoft released the Windows 8 Consumer Preview. I wasn't honestly all that aware of this development. As a web developer, the release of a new OS is about as exciting as finding out that "One Tree Hill" was being canceled1. But the other week a close friend of mine, Bruce Haynes, built a brand new gaming rig, and because he's a sys-admin in a Windows environment, and because he secretly hates himself, he used the Consumer Preview as his OS.

"You can't virtualize this." He told me.

"That sucks." I said.

Fast forward 3 weeks: I'm gearing up for the newest version of TimeTrax. And because I'm the kind of developer who thinks way ahead of the immediate issues2 I think, "I wonder if this will work in Windows 8."

Now I don't have a machine here that is both gathering dust and capable of running Windows 8. If I really want to test my code on a Windows 8 machine, I'm going to have to either bring it over to Bruce's and spend far too long there, or virtualize the unvirtualizable3.

(more…)

  1. Couldn't have cared less. Sorry, Mandy. []
  2. Like, "Database Design" or "UI/UX Concerns" []
  3. It wasn't a word until just now. []
Tags ▲ Categories ▲
No Comments Read Post

The Crazy Coupon Chick Wins a Webster!

I'm proud to announce that The Crazy Coupon Chick, a blog I redesigned and optimized earlier this year, has been awarded a Webster by The Hartford Courant, being named The Best Business Blog in the State of Connecticut by the Courant, and its readers.

While this award is a recognition of the diligence and hard work put in by Missie and Kc over at the The Crazy Coupon Chick, I can't imagine that my efforts to improve the UI experience hurt any. And so I'm more than willing to accept any misplaced credit.

Way to go, ladies!

Tags ▲ Categories ▲
No Comments Read Post

Web Designer v. Web Developer

This post is based off a rather lively discussion in the "End to End Web Developers" group over on LinkedIn, which I just spent far too long on. I'm giving my opinion here, rather than there, because the astute members have more or less covered my take on it, and I hate when people repeat things on message boards.

Blogs, however, are fair game. :-)

If you've been involved in the production on web sites, apps, or any of those Web 2.0 buzzwords that mean "website that does things" for more than twenty-seven seconds, you've been asked this question.

I get it all the time. I get it when I try to explain to a client what the difference between these two things are at the get go. I get it when I try to convince a client to hire a freelance web designer (who is normally cheaper) and then come back to me when they're finished.

The following is meant to (hopefully) keep me from having to constantly repeat myself to clients.1

The following isn't meant to deride anyone, or exclude anyone. I'm all in on frank and open discussion of these terms and their limitations. I don't want to argue because I excluded you from group A or B.

With that said, let's deal with a couple misconceptions.

(more…)

  1. I’ll still have to constantly repeat myself to friends of friends, folks at picnics, and the obnoxious drunk they always sit “single Adam” next to at weddings. []
No Comments Read Post

TheCrazyCouponChick.com Nominated for a Webster

A project I finished about a six weeks ago has been nominated for a "Webster" for being the best business blog in CT. Obviously, I had very little to actually do with this. Missie and Kc, the actual partners in the business were nominated for their superior content. Still, I'd like to see them win.

So head on over to The Hartford Courant's Webster Awards page and vote for "The Crazy Coupon Chick." They'll let you vote up to ten times a day, and the voting continues until Friday.

And to Kc & Missie—good luck, ladies!

Tags ▲ Categories ▲
No Comments Read Post

TimeTrax 2.3 ϐ Bug Report

As of approximately 11:00 EDT (15:00 GMT) on 20 March 2012, a bug was reported in TimeTrax 2.3 Beta.

Discovery

The bug was described by Mike S. and pertains to the software's behavior when attempting to create a new project, while another project is loaded.

Description

After having loaded a project (either by creating it new, or by using the dialog to load an existing project from a file) attempting to use the “Load Project” dialog from the main menu will cause a runtime error. This error will attempt to end the program, but gives the user the option to “ignore and continue.” After that, the Tasks menu will appear as it had in the previous project, but those tasks will not be imported into the new project.

Solution

At the moment, the only available solution is to be sure to unload TimeTrax prior to creating a new project. All other options after encountering this error may lead to undesirable (and unpredictable) results.

As of now, I don't think I'll be fixing this bug, given that it's taken almost a year for anyone to encounter it, and that it is being caused by an error in my code that is very deeply seated into the TimeTrax program. This bug will be avoided in the new TimeTrax, due out sometime this Summer.

No Comments Read

CSS Variable Proposal

I ❤ CSS

I would like to publicly state that CSS is the best thing to have ever happened in the world of web design. I've been around long enough to remember the other ways of doing things, and frankly, they sucked. Time was, when you wanted to make a site-wide change you either had to go through every single file, use a layout engine of some kind, or use a tool capable of making those changes across entire sites. (In my opinion, this is why Dreamweaver was such a big deal.)

CSS 3 has a bunch of neat stuff in it. They let me rotate things, and skew things, and animate things. And even if the browsers haven't caught up to much of it yet, I'm willing to wait. Because these things are just that cool.

CSS 3 is Missing Something

CSS 3, however, still isn't everything it could be–heck, everything it should be. CSS should have the ability to define variables in it. It's a basic change that has gone undone for too long. Worse yet, I can't seem to get the attention of anyone over at the CSS Working Group to tell them about it. Oh, sure, they've added all kinds of nifty new selectors, but as of right now they're missing the most obvious issue.

What the hell is it, Already?

Variables! CSS should have the ability to handle some very basic variable declarations. I'm not talking about complex stuff. We don't need objects or arrays. I just want simple scalars! I want to be able to assign particular keywords to various values, and have the browsers replace them when they go to render the page.

(more…)

One Comment Read Post

WordPress and HTML 5

This site took several weeks to complete. Part of that was because I spent most of my time doing client work, rather than work for my own site. But part of that was because of my vision, and the place my tools left me.

Don't get me wrong. I like WordPress. I think the UI is intuitive, and I use it all the time for building client sites. I can remember the web without your simple CMS systems. I can remember clients calling me up to adjust wording. They didn't like it (I don't work for free, you know) and I wasn't thrilled about being distracted by minor edits. WordPress is a significant improvement over the old way.

But WordPress doesn't have the kind of commitment I'd like to see when it comes to a functioning internet. WordPress itself produces insane code at times, often leaving theme developers in a lurch. Some of their theme functions allow you to substitute your own tags. Others don't.

When it comes to HTML 5 there are two major problems in WordPress 3.x that need fixing. The first is the WP's use of the dreaded "rel" attribute on categories. Evidently, the people who put WordPress together didn't see a need to let me not clutter my code with absolutely pointless attributes. That means that when you call a function like

the_categories();

You get a list of category names that look like this:

<li class="cat-item cat-item-1">
     <a href="http://wp.ajseidl.com/?cat=1" title="1 posts filed under Uncategorized" rel="category tag">Uncategorized</a>
</li>

The trouble with that is that in HTML 5, the rel attribute has a specific set of values that are valid for it–and neither "category" nor "tag" are one.

So, we have to remove the attribute. The way to do this as a theme developer is by attaching a function onto the categories filter in our functions.php file. That function should look like this:

function ajs_kill_rel($thelist){
     return preg_replace('/\srel=".*"/uU','',$thelist);
}

For those of you who aren't as regex literate, the above will take the rel attributes and their values out of the code WordPress produces when you call the_categories(); It will "replace" the instances of rel="whatever is in here" with nothing. That's why the function's called "ajs_kill_rel()."

To make this work, mind you, you still have to add the filter. To do that, you simply add this line to the main portion of the functions.php file:

add_filter('the_category','ajs_kill_rel');

That will work to take the rel off of anything, by the way, so if it's turning up elsewhere uglying up your code, just add it as a filter there as well.

The other major offense committed by WordPress against HTML 5 validity is the treatment of so-called "empty tags." For instance, the old XHTML image tag:

<img src="cool.jpg" alt="Cool" />

That slash there isn't valid anymore. (Well, not unless you're serving pages up as xml+html, in which case you've got more problems than this post can solve.)

The slash has to go. The function I arrived at looked like this:

function ajs_fix_xhtml($thecontent)
{
     return preg_replace('/\>/uU','>',$thecontent);
}

Again, for you non-regexperts, this function takes the content (of the page or post) and strips out the /> replacing it instead with >. So the above image goes in like this:

<img src="cool.jpg" alt="Cool" />

And comes out like this:

<img src="cool.jpg" alt="Cool" >

Worth a moments note here that this function will also do the same for line-breaks (<br/>) and horizontal rules (<hr/>) and all the other empty tags.

We're not quite done yet. When you add an image into a WordPress blog post or page, and you use the little GUI buttons to make it align to the left, right or center, WordPress adds a class to the image, as well as an align attribute.

Now, while the XHTML empty tag ending is excusable (after all, WordPress is built for XHTML,) the align attribute is absolutely not. The align attribute on things like images was deprecated in HTML 4.01! It wasn't valid in HTML 4.01 Strict, or XHTML 1.0 Strict, and it's certainly not valid in HTML 5.

So, it has to go. We can do this on the same function, because these elements will only show up in the content portions of our pages. We add a new line to the function, and now it looks like this:

function ajs_fix_xhtml($thecontent)
{
     $stripped_imgs = preg_replace('/\>/uU','>',$thecontent);
     return preg_replace('//Uu','',$stripped_imgs);
}

To make this work, we attach it as a filter to the the_content(); call.

add_filter('the_content','ajs_fix_xhtml');

And there you have it. That will get your standard WP output back up to snuff. Of course, this won't last long. The minute you try to install a plugin, you'll almost certainly break the validity of your code. But, that's a matter for a different post.

Tags ▲ Categories ▲
No Comments Read

Inaugural Post

Well, I finally found the time to get this site up and running. I've put together an HTML 5 WordPress theme, which I'm sure I'll be posting more about later. It took longer than I'd have liked, but it's up now.

Over the next few days I'll be trying to get some posts up that have actually been hanging around here for a while. I started creating blog content a few months ago under the hope that I might eventually have a long enough stretch of doing nothing in particular to get the blog up. That didn't actually happen, of course. But I did manage to work the project wedge into my schedule in blocks that were close enough for me not to lose my place, or become so sick of it that I trashed the thing.

I'm trying out Janrain Engage, a social media login product. That means that (for the moment at least) you can login using several popular third-party providers. If anyone has any trouble with it, please let me know. If it works well here, it may become something I suggest to clients in the future.

Categories ▲
One Comment Read