Mar 17

google-apps.gifSo what’s with this new-fangled Google Apps thing?

To me, it initially just seemed like a fancy version of Gmail. However, as I really started delving into it, I was thoroughly impressed.

Here’s the general description from Google:

Give your users Gmail, Google Calendar and Google Talk accounts that
use your own custom domain, helping them to stay connected and work
together more effectively.

Collaborate and publish…
Docs & Spreadsheets lets users share files and collaborate in
real-time. The Start Page is the first place your users will look to
preview their inboxes and calendars, access your essential content, and
search the web.

…and get on with business.
It’s all hosted by Google, so there’s no hardware or software to
install or download, and minimal setup and maintenance. You can get up
and running quickly, even if you don’t have technical resources.

To try it out for myself, I moved all the email accounts for my web development business to Google Apps Standard Edition. I have to admit, the changeover worked flawlessly. All I had to do was verify my domain by uploading a file to my server. Once verified, I was able to get the email moving to Google’s servers with a few simple MX record changes (and as far as I know didn’t miss one single email in the process). Soon after, I created some additional CNAME’s so I could access the calendar, document, and start page functionalities a little easier. Once those few things were done, I tinkered around with some of the admin controls in Google Apps, but for the most part, the process was complete. It all worked amazingly well.

I am totally sold on this system. I think this new offering will change the way many small, medium, and large businesses handle their communication infrastructures. The real advantages come with the Premier Edition of the service. The most important additions are as follows:

- 99.9% uptime guarantee for email
- 10 GB of space (and I suspect that will grow in the future)
- No ads in emails
- Conference room and resource scheduling
- A very poweful API system (including custom sign-on, authentication, user provisioning & management, and support for email gateways allowing backups of data).
- Email migration tools (in the works)
- 24/7 support via phone/email
- A variety of 3rd party applications and services to enhance the system
- Extremely low-cost ($50/user/year)

Yes, the amazing email client is incredible with it’s spam filtering, organizational ‘labeling’, and search functions, but the other tools included are the pieces that will create an evolution in how businesses operate (in my humble opinion):

- Imagine having the ability to have incredibly powerful calendar/scheduling tools without the hassle and complexity of expensive Exchange servers.

- Imagine being able to only allow certain groups of people (or individuals) to see certain calendars and events in real time, with just a few simple clicks.

- Imagine having a chat client integrated with your system that allows quick and effortless communications instead of picking up the phone or waiting on email responses. What if this client was embedded throughout the system and all communication could be archived and saved for security/legal purposes? What if that chat client also allowed voice calls to be made for free over the internet?

- Imagine being able to collaborate on documents or spreadsheets with teams of users all in real time over the web. What if you could publish these documents for only certain members of your organization to see? What if they could be saved in popular document and spreadsheet formats for desktop editing?

- What about a very powerful, yet simple & easy to use corporate start page that has important information customized for each particular employees’ job functions and can be easily branded?

- What if your users could access this data anywhere in the world with just a browser? No more need for VPN’s (to access email securely), Outlook clients, software updates, et cetera.

- What if the majority of these systems integrated with wireless/portable devices like BlackBerry phones with little-to-no effort?

- What if this entire system was simple to administrate for even the largest of companies? You would hardly need one employee (at most) to manage the system. No exchange server experts needed ever again (sorry guys)!

- What if this amazing system was hosted in some of the most secure and reliable data centers in the world (Google’s) and optimized for world-wide use? No more worrying about expensive hardware, licensing, storage, bandwidth, replication, or down-time concerns.

- What if there were a plethora of 3rd party and advanced packages allowing custom email gateway services, archiving, security, authentication, et cetera?

It’s all available right now!

So go and check out Google Apps Enterprise Edition… no matter what your company size, it has the potential to save your company time, effort, and vast quantities of money while increasing productivity and profit. Seems like a no-brainer to me.

Mar 08

http-pipeline.gifDefined here by, “HTTP pipelining is a technique in which multiple HTTP requests are written out to a single socket without waiting for the corresponding responses.

Mozilla talks a bit more about the topic: “Normally, HTTP requests are issued sequentially, with the next request being issued only after the response to the current request has been completely received. Depending on network latencies and bandwidth limitations, this can result in a significant delay before the next request is seen by the server.

I have accepted the fact that HTTP pipelining is pretty much disabled in all modern browsers, but that doesn’t mean I have to like it!

I have a widget in Firefox that allow me to bypass this missing “feature” and it sure seems to speed up my browsing quite a bit. However, why can’t everyone get together and work this problem out so we don’t need extensions/widgets/hacks to get around the limitations?

I attempted to harass Microsoft about it and never received an answer (I didn’t really harass them per say). Firefox isn’t mum on the subject (here), but it seems to come down to compatibility issues with certain servers, routers, et cetera in some specific cases (even if the HTTP/1.1 spec allows it).

So what does a web developer do (programmatically)?

Do we just accept the fact and move on or is there something we can do about it? How can we speed up our page loads to a world that can’t use pipelining?

It turns out there is a relatively simple way to “fake HTTP pipelining”. When I read through the article “Optimizing Page Load Time“, I had a very revealing moment of self-inflicted-disrespect. The solution is so obvious, but it never dawned on me previously. Why not simply source content on the page from different locations? It doesn’t even have to be different servers, just different domains. Pretty simple right?

For example, we could do something like this for a single web page:

- Static Images:
- Javascript Includes:
- CSS:
- Static Content:
- Dynamic Content:

Now this is a pretty extreme example that I wouldn’t recommend for production (except in very specific cases), but let me explain what happens in simple terms. Instead of your browser making a request to one domain for all the content, data, files, and everything for a page; it splits up the requests amongst the various sub domains (of which could be hosted separately or together).

What does splitting up the content get us?

The advantage is that the browser isn’t sitting around waiting on previous requests to complete before moving on to the next item. It really only makes sense for larger pages. In fact there is a drawback, according to Aaron, “Beware that each additional hostname adds the overhead of an extra DNS lookup and an extra TCP three-way handshake. If your users have pipelining enabled or a given page loads fewer than around a dozen objects, they will see no benefit from the increased concurrency and the site may actually load more slowly. The benefits only become apparent on pages with larger numbers of objects. Be sure to measure the difference seen by your users if you implement this.”

Perhaps now you can consider playing around with this idea a bit on your own. Given plenty of tinkering time and careful examination, it could help decrease page load times noticeably.

If you’d like some more tips on this subject, check out Optimizing Page Load Time.

Mar 07

consumer-testing-labs.gifI realized the other day that I haven’t really talked about my employer, Consumer Testing Labs, all that much.

So, what is it that we do?

Let me quote from our web site so I get it correct: “Since 1952, we have been helping quality conscious retailers and manufacturers ensure the quality of the products they sell and by doing so protect their business and their most important asset–their customers’ continued patronage.”

Basically, we help out the consumer by ensuring quality products are on the shelves and the retailer by ensuring they don’t sell products that will be returned frequently or are hazardous to the health/safety of their customers. Not only that, but we do it faster, better, and cheaper than the competition!

With all that being said, let me explain why it’s a cool company. I have to openly admit that our testing laboratories are really hypnotic (interesting) places to visit.

We have a world-wide presence in three major categories of testing:

1) Food — essentially anything edible
2) Softlines — essentially anything you wear
3) Hardlines — everything else (yes, a massive category)

On my initial interview with the company, I received a first-class tour of the Food Labs located in Bentonville, Arkansas. I can truly say that the food testing process is awe-inspiring. The employees who test these food products are highly skilled and the testing procedures they go through are rigorous, complicated, and highly accurate. They use machinery and test equipment in the lab that I swear I’ve only seen in Star Trek episodes. But outside of the cool equipment, even the simple taste-testing area is neat.

Truthfully though, the Hardlines lab is my real favorite. Can you imagine how fun it is to test the break strength of steel cable? Or to see how many tons it takes to cause an industrial shelving unit to collapse? How bout checking the electrical bleed tendencies of high power air conditioners? You can imagine the fun when it comes time to test barbecue grills! It’s a really fascinating place that is always buzzing with activity, huge machines, and strange noises. Every time I go there, at least one test-in-progress captivates my attention for a lengthy time (usually only as long as I’m allowed to stand there gawking). I’m just skimming the top here, but I think you get the picture; it’s a cool place.

But even the Softlines Lab has neat stuff going on. Fiber analysis, color accuracy testing, & children’s sleepwear flammability testing just barely touches on all the interesting testing that occurs there.

So yeah, basically, it’s a pretty unique place to work.

As a web developer, I don’t get to see all the testing that occurs every day, but my job is to enable the testers and the company itself to achieve goals more accurately, efficiently, and faster by leveraging existing technology and creating new technology where it fits.

The employees at Consumer Testing Labs have a lot of pride in their work and although I don’t get to blow stuff up on a daily basis, I really enjoy the fact that my efforts enable our employees’ hard work to pay off even more for themselves and the company as a whole.

If you have any interest in working for us, please check out our job openings (and tell em’ I sent ya). We always seem to have new jobs available as the company keeps growing and growing.

In the mean time, just remember that we might’ve tested that chain saw you use every weekend or that piece of cheese you ate last night; so feel free to silently thank us that neither one killed you!

Mar 02

web-worker-daily.gifCourtesy of Web Worker Daily, here are some really interesting jobs that seem to be a good fit for someone working in a Web 2.0 job.

Likely most interesting to someone with some extra time on their hands (outside of their regular job). Still, pretty interesting stuff.

1) New Media Producer
- Essentially video blogging and similar forms of media production.2) Clothing Label Crafter
- Basically creating t-shirts that say something like “Pedro For President”.

3) Micro Investor
- Offering loans person to person.. eliminating banks and lending companies.

4) Publisher
- A standard run-of-the-mill author (who prints on paper).

5) Community Curator
- Creating your own social network (like Facebook).

Go see the original article to learn more about the jobs themselves.

Feb 23

cakephp.gifAfter literally weeks of tenuous back and forth rhetoric with myself (internally) and my fellow co-workers, I have finally, humbly, and assuredly concluded that CakePHP is the best PHP Web Framework in the world!

I could argue the benefits of Cake vs. other Frameworks again, but I’ve already done that, twice (though I originally decided differently).

Instead I’m hoping to help the Cake community a bit today. I’m not a “Cake expert” yet, but I think I can contribute a few things that can possibly ease some of the few frustrations that might occur when getting started with Cake.

Dustin’s CakePHP Beginner’s Guide!

I’m gonna try and keep it simple (K.I.S.S.) for ya’ll and do my best to actually offer any Cake newbies out there some advice that can help get the ball rolling quicker.

After showing it off to my co-workers and going through the manual a few times, here’s my

reccommended approach to the learning process:

First, Some Installation Tips:

- Use Apache… it’s just easier than IIS and it’s time to make the switch if you haven’t yet. Make sure mod_rewrite is enabled; again to make things easier.
- If you must use IIS, check out my writeup to help you get the ball rolling.
- “Make sure that an .htaccess override is allowed in your
httpd.conf (Apache), you should have a section that defines a section for
each Directory on your server. Make sure the
AllowOverride is set to All for the
correct Directory.”
- Don’t mess with the production install of Cake yet; just do a development setup.

Second, do the basic blog tutorial:

- Prepare for the inner excitement that will soon come.
- I know it’s not the recommended order of learning, but I think it works better to give a real-world example right off the bat before anything else.

Third, save that blog code and start working your way through the manual:

- Start at the very beginning, don’t skip any sections, and read every word.
- When you get confused (which you probably won’t much), re-read!
- It’s not a big manual, you’ll be done in an hour or two.

Fourth, go watch a few of the screencasts:

- Especially: Building The Bakery & Admin Routing

Last, start your own basic project and see where you get.

Here’s a few more helpful tips:

- Explore the Bakery for cool stuff.
- Get the ‘Cakesheet‘, it can save some serious searching time.
- Use the Cake Google Group, en excellent option for help.
- Remember to search through the User Manual, API, the web (2.1 million results for Cakephp on Google), and the entire Google Group BEFORE asking a question. You’d be surprised how often I see thread’s on the group posted that look something like: “Cake N3wbie – How do I connect to a database”. I know it’s easy to just ask and be lazy, but trust me, there’s a really good chance it’s already been answered. Don’t wear out the Cake experts prematurely with the simple stuff.

Ok, now you have enough to get started, so why are you still here reading this?

By the way: Let me know how Cake works out for you!

Feb 20

upward-trend.gifI promise I’m not not trying to brag, but I’ve recently noticed that my rankings in the ole’ search engines have been near the top for almost every topic I post (especially on Google).

Now, normally I haven’t had trouble showing up near the top for most topics, but lately (in the last six months) I’ve seen my rankings doing better than they ever have before (overall). I know it’s only a portion of the true reason, but I also just noticed my PageRank is now 5 and that seems to be a contributing factor.

After a little celebration, I checked out the PageRank Prediction Tool to see where I was headed. This thing, however inaccurate it’s predictions may be, is fun to play around with. It’s fun to see what the big domains are doing and I really like to check out the competition and see how they are “really doing”.

I’d recommend taking a second to play around with the Page Rank Prediction Tool if you get a chance.

Feb 16

nist-logo.gifCourtesy of The National Institute of Standards and Technology (NIST), I have discovered this incredible collection of algorithms, algorithmic techniques,
data structures, archetypal problems, and related definitions.

You might ask yourself: “What’s so special about a few algorithms”? Well, I don’t care who you are, if you are a programmer of ANY type, this stuff is good for you to know and use!

I actually enjoyed going back and looking at some of the problems I worked on back in college. Truthfully, these bad boys can make your job (as a programmer) a whole lot easier and your code a whole lot more efficient.

So come on, check out The Dictionary of Algorithms and Data Structures.

Note: The Byzantine Generals Problem is still my favorite.

Feb 09

cakephp.gifLately, I’ve been taking some serious time out of my schedule to sit down and really examine a few of the top PHP Web frameworks (CakePHP, Symfony, & Zend) even more than I had previously. After a bunch of reading, tinkering, and playing around, I can now officially declare: “I think CakePHP is the best”. There I said it, I hope I won’t regret it… heh.

In fact, after actually sitting down and expanding on the basic blog tutorial offered in the manual, I am tepidly excited about the prospects of implementing something cool and truly useful in Cake (I may even switch The Weber Report over to my new, fancy, Cake-Powered, conglomeration that I created during the learning process) and really start taking advantage of the MVC Design Pattern.

Now that I have read through the manual a few times, I can humbly offer some of my favorite parts of the Cake experience:

Powerful Associations Between Models

“One of the most powerful features of CakePHP is the relational
mapping provided by the model. In CakePHP, the links between tables are
handled through associations. Associations are the glue between related
logical units.

There are four types of associations in CakePHP:

- hasOne
- hasMany
- belongsTo
- hasAndBelongsToMany

When associations between models have been defined, Cake will
automagically fetch models related to the model you are working with.
For example, if a Post model is related to an Author model using a
hasMany association, making a call to $this->Post->findAll() in a
controller will fetch Post records, as well as all the Author records
they are related to.”
Powerfully Flexible Data Validation Features

“Validations are defined using Perl-compatibile regular expressions,
some of which are pre-defined in /libs/validators.php. These are:


But custom validation (outside of regular expressions) is also extremely easy. If you’d like to perform some custom validation apart from the
regex based Cake validation, you can use the invalidate() function of
your model to flag a field as erroneous. Imagine that you wanted to show
an error on a form when a user tries to create a username that already
exists in the system. Because you can’t just ask Cake to find that out
using regex, you’ll need to do your own validation, and flag the field
as invalid to invoke Cake’s normal form invalidation process.”

Stringent Security Component

“The Security component is used to secure your controller actions
against malicious or errant requests. It allows you to set up the
conditions under which an action can be requested, and optionally
specify how to deal with requests that don’t meet those requirements.

So if a request doesn’t meet the security requirements that we
define, what happens to it? By default, the request is black-holed,
which means that the client is sent a 404 header, and the application
immediately exits. However, the Security component has a
$blackHoleCallback property, which you can set to the name of a custom
callback function defined in your controller. Rather than simply give a 404 header and then nothing, this
property allows you to perform some additional checking on the request,
redirect the request to another location, or even log the IP address of
the offending client.

Every time the Security component is loaded, even if it is not
being used to protect an action, it does the following things: First, it
generates an authentication key using the core Security class. Then, it
writes this key to the session, along with an expiration date and some
additional information (the expiration date is determined by your configuration file).
Next, it sets the key in your controller, to be referenced later.

Then in your view files, any form tag you generate using
$html->formTag() will also contain a hidden input field with the
authentication key. That way, when the form is POSTed, the Security
component can compare that value to the value in the session on the
receiving end of the request. After that, the authentication key is
regenerated, and the session is updated for the next request.”

Cool Scaffolding (Similar to Rails)

“So cool that you’ll want to use it in production apps. Now, we
think its cool, too, but please realize that scaffolding is… well…
just scaffolding. It’s a bunch of stuff you throw up real quick during
the beginning of a project in order to get started. It isn’t meant to be
completely flexible. So, if you find yourself really wanting to
customize your logic and your views, its time to pull your scaffolding
down in order to write some code.

Scaffolding is a great way of getting the early parts of
developing a web application started. Early database schemas are
volatile and subject to change, which is perfectly normal in the early
part of the design process. This has a downside: a web developer hates
creating forms that never will see real use. To reduce the strain on the
developer, scaffolding has been included in Cake. Scaffolding analyzes
your database tables and creates standard lists with add, delete and
edit buttons, standard forms for editing and standard views for
inspecting a single item in the database.”

Remember, these are just some of the highlights. There is a LOT more in the manual to get you excited. In the near future, I’d really like to contribute a bit to the Bakery and really begin discovering the power of Cake in ways I can’t yet foresee.

You know you want to check Cake out, so stop wasting time… take the leap!

Jan 25

cakephp.gifOver the last few weeks, I have been attempting to learn two major PHP frameworks: Symfony & CakePHP.

Originally, I had decided (in a bit of short-sighted wisdom) that Symfony was the obvious champion. I think I may have been wrong. I spent nearly a week tinkering with Symfony off and on. I came to a simple conclusion: I’m confused.

The Symfony framework is so huge and poorly supported that it confused the heck out of me. Their basic “sandbox” tutorial doesn’t work in any way close to what the documentation states. And the documentation, oh the documentation; what could be the best part of this huge framework fails because of one fatal flaw: no one updates it for the new each new revision that (sarcastically) seems to come out every other day.

After seeing my co-worker struggle with the installation process for days and my own copy just barely functional (with hardly a thing to show from it), I called it quits. At least until I read this (from The Symfony Blog):

“You know that we spent the last months writing a complete guide for
symfony that will be released in bookshops on January 29th. We also
mentioned the fact that the content of this book would become the
official symfony online documentation and be published in HTML on the
same date.”

So, it looks like I’ll put Symfony off until this new-fangled documentation goes live, then I’ll give it another swing.

In the mean time, I’ve been working with CakePHP and genuinely lovin’ it. After tinkering around with it for a while, here are my thoughts about the two frameworks:

- CakePHP: Up to date, but not totally complete and somewhat difficult to search through. They also have an extremely helpful CakePHP Google Group that helped most problems I ran into quickly (almost instantaneously during normal business hours) and efficiently. You can’t beat live support that’s free.
- Symfony: Until the new release, not all that helpful because much of the content is dated. However, what is there is easily searchable and they have an active forum that seems to be full of knowleable (yet somewhat arrogant) people.

- CakePHP: Very easy to install. For the most part, just copy it into your web root and you are good to go (provided you have Apache and mod re-write previously enabled). Once it’s in there, all you really have to do is setup the DB connection and you can be off and running.

- Symfony: Ouch… this is my major sticking point here. I know people that would say, “If it’s not hard, it’s not worth doing”. I agree with that idea, but this is one tough cookie to crack. There are so many little tricks, files, variables, and directory permissions to set-up… it’s a wonder I even got to the point I did. Their basic tutorial, “my first project“, wouldn’t work by following the given instructions… no matter what I did. They also rely on Pear to deliver the goods, which is inherently fraught with little tricks to keep it all running smoothly.

Directory Structure
- CakePHP: It makes sense and it’s extremely logical for almost anyone. You don’t have to be the creator of the framework to understand what each directory is used for. The framework code is in a separate directory totally away from all of your own code. Props to these guys, it works well.

- Symfony: File and directory overload. We’re talking a huge amalgamation of directories buried within directories and files scattered all over the place. When I started really digging, it left me dazed. Truthfully, after spending countless hours working with Symfony, I still haven’t figured out what all the directories are there for (which could be because the framework kinda mixes it’s own libraries in with the programmer’s code).

I could go on for hours, but I think you get the picture. For the time being, I have revised my opinion on the matter of PHP web frameworks. In my somewhat humble opinion, I think CakePHP is the current champion. However, Symfony may present some good competition just as soon as their new release comes out on the January 27th, 2007. Only time will tell I suppose. Rest assured, I’ll be choosing one or the other.

UPDATE: My mind is made up – CakePHP wins! Please read this, and this.

Jan 18

symfony-logo.gifThanks to a great mentor (Greg) in my starting days of web development and a strong background in Computer Science from several excellent professors in college, I had a good start at web development a few years back. My original skills for PHP featured an Object oriented approach, secure validation & error reporting, some nice Pear DB functionality (with MYSQL), and the Smarty Templating Engine. My skills and knowledge regarding PHP have continued to grow each day (especially regarding efficiency and security).

Recently though, I began playing with the big new talk of the town: Ruby on Rails. I have to admit, the process hasn’t been as easy as I thought. Most of the slowdown revolves around the fact that I don’t know Ruby all that well. Combining a totally new realm of development (the Rails framework) with a new language makes the switchover difficult for me. Regardless of the difficulties, I certainly see the power of Rails and understand how it’s framework can make the development process amazingly more agile and efficient.

With that being said, at Consumer Testing Labs we’ve been talking extensively of doing some major changes to how we code. We thought it would be a great idea to implement a standard templating system (like Smarty) for everyone to use, develop some internal libraries that all the developers could agree on and use frequently, and even strong rules on everything from coding practices to directory structures to design patterns. I think we all sorta hit a no duh moment when considering how to implement all these ideas effectively: a PHP MVC framework!

The discussions at work piqued my interests enough to send me on a quest of nightly rituals over the last week or two discovering, testing, and playing around with the nearly fifty frameworks that currently exist for PHP. Ok, I didn’t try them all out, but I did try out the best of the best according to my reading (and the ones that seemed to fit into the MVC layout). After tinkering around with CakePHP, Zend Framework, and Symfony, I did a lot more reading on these types of agile development packages.

Here are my conclusions on things at this point in time (01-17-2007):

CakePHP: Had a great basic install and easy to implement first run of things. I really liked being told what to do from the Cake code itself. Sorta like a wizard. Getting into more advanced coding had me pulling my hair out though. Mostly, the documentation was at fault – but not that it was all lacking. I just thought it was sorta scattered and hard to follow. Some tutorials I found helped a bit, but I was still left confused much of the time.

Zend Framework: Where do I begin? I had an icky feeling from the get-go with this thing. First, I’ve been a little off put by Zend for trying to commercialize something that has for so long been open-source… at least for the most part (PHP). In my opinion, the problem with the Zend Framework is that it appears to be a half-hearted attempt at a framework. It seems like it’s more like a collection of libraries than a true framework. When I compare it to Cake and Symfony or even Ruby on Rails, it just doesn’t feel quite right. There are lot’s of specific reasons I feel this way, but anyone’s attempt to convince me otherwise would simply be futile, heh. I don’t think Zend would ever be the type of framework I would want to use on a daily basis (at least until they make some major revisions or enhance it a bit more).

Symfony: If you hadn’t guessed it yet, Symfony was the winner in my book. I saw a lot of true similarities here between it and my reference: Ruby on Rails. Now, don’t get me wrong; it isn’t a straight-up clone of Rails, but the good parts are all there. So what does this mean to me? It means I get to use all the power of the Rails framework (albeit a tad different) without having to learn an entire new language (Ruby). It’s the best of both worlds!

So, if you are out there looking for a well-rounded and properly executed PHP web framework, be sure to check out Symfony.

UPDATE: I have actually changed my mind! Please read this, this, and this.

Dec 26

google-gmail.gifAccording to Google Operating System:

“If you sign out of Gmail, you’ll notice that the storage doesn’t
increase. It used to increase with about 0.33 MB a day, but the Gmail
team forgot to add the code that manages the quota increase after 31st
December 2006.

On April 1st 2005, Gmail space increased from 1
GB to 2 GB and started to grow every day. They called this: “Infinity+1
storage plan”.

‘Storage is an important part of email, but that
doesn’t mean you should have to worry about it. To celebrate our
one-year birthday, we’re giving everyone one more gigabyte. But why
stop the party there? Our plan is to continue growing your storage
beyond 2GBs by giving you more space as we are able.’”

Hmmm. I always love that little counter sitting there counting on into the the future no matter what. Sigh. I hope it makes it back.

Dec 02

My 'good buddy' Jim has been preaching to me about the benefits of Ruby on Rails for what seems like decades now. 

About a month ago, I finally broke down and really started plugging away with my “Agile Web Development With Rails” book (that I bought a few months ago).

I had skimmed through the book and created a few test projects prior to this, but this time I've been really trying to take time and attempt to understand Rails in-depth.

I can say this thus far: WOW!  It's pretty amazing and a bit of a change from my PHP experience thus far.  I especially like the powerfully tight integration of Ruby and AJAX

If you are interested in Rails, I'd pick up the book I mentioned earlier, it's worth it.  If you'd like to know a bit more about the tight integration and power of AJAX & Rails, check out this article I stumbled across earlier today.


The hype for Ajax, a technique for making Web pages more interactive,
is in overdrive. The Ruby on Rails framework is also flourishing,
partly on the strength of its excellent Ajax integration. Find out what
makes Ajax on Rails such a powerful combination. –> Link

Nov 06

This week at work I've been struggling with a relatively simple problem that is disturbingly difficult to solve (at least as a humble web developer like myself).

Basically, I need to generate a dynamic, database-driven, menu system that will allow me to make some highly complex (tree-like) decisions based on user decisions.  Ok, stated out like that, it may seem to be a complex problem.. but it's not, I promise.

In more simple terms, I need a drop-down menu system that will allow a user to “drill-down” to the proper final output without having to click on twelve submit buttons and having a lot of constraints on what they can pick depending on what was chosen in the last drop-down.   I'm attempting to mix some, AJAX, and a Pear tree (a PHP plugin which was last updated on 3/17/03 as a beta). 

Let me give a real world example of what I'm trying to do.  You can imagine my problem by thinking about how you would implement a car repair web site.  If you wanted information about your 2002 Ford Mustang's automatic transmission: you would first pick “2002″, which would then fade in a new drop-down with all the valid 2002 car models… so then you pick “Ford”… which would then fade in another new drop-down with all of the valid 2002 Ford models… now you pick Mustang… we get a new drop-down with the different 2002 Ford Mustang models… I think you get the idea.

The real problem is in doing this efficiently, elegantly, and enhancing the experience with a touch of Scriptaculous.  It's tougher than you might guess.  I'll let you know how it ends up!

A special note to Jim: Yes, I know this problem might be easier solved in Rails, but who says a challenge isn't fun?

Aug 18

My mouth hung open for a bit after I watched this video (courtesy of  I mean, it's so honkin' strange, that I was sorta caught off-guard.  It takes quite a bit to surprise me lately, but this thing did. 

The issue at hand is net neutrality: “Net neutrality is the principle that Internet users
should be in control of what content they view and what applications
they use on the Internet.” 

It has the potential to seriously disrupt how the Internet operates and change the way the world views the web.

So what's the purpose of the video?  You are the Internet.  So are your friends.  Show your support for Internet neutrality by passing along the link to this video here (or anywhere you see it).  The more exposure this issue get's, the better.  Remember, taking action can make a difference!  Plus, the video is oddly entertaining.

It's a serious issue, so if you have a second, check it out by Clicking Here.

Tagged: , , ,

Mar 21

Now for an interlude of a delicously depraved, possibly disturbed, and creative man named James Mceahly. is one product of this aspiring author.  Essentially, James has put a somewhat cute bunny up for ransom.  If he sells 100,000 copies of his book, Save Toby: Only you have the power to save toby, he will opt out of eating this cute bunny.   I told you he was a little disturbed.

Personally, I think it's a hilarious scheme despite the outrage by many.  My favorite part of the site is his Gallery and Recipes section placed precariously close to each other.  The Gallery section holds cute pictures of the rescued bunny while the Recipes section has pictures of the bunny in cookware and a few delicous rabbit recipes.

Keep an open mind and laugh, Click Here to see the site!