About Chris Morrell

I am a Philadelphia web designer and developer who focuses on PHP development and usable design. I am also the Director of IT for the International Association of Certified Home Inspectors.

I am currently not accepting any new clients.

Other Sites/Clients

Contact Me

If you need to get in touch with me, my name is Chris and my domain name is cmorrell.com. Think about it.

IDE Wishlist - HTML/CSS Auto-Complete/Magic Edition

Posted by Chris Morrell on June 24th, 2009 in Web Development (tagged , )

This list is clearly not comprehensive, but these are a few things I’ve been wishing for lately or thought of just now.

CSS IDE Wishlist

  1. Order auto-complete based on usage, not alphabet
    I’m sick of typing “d” and getting “direction” when I clearly have never used the CSS direction property in my entire life.  Clearly I mean display.  I use the display property all the $*(#ing time, and yet every time I hit “d” what do I get?
  2. Arrange properties alphabetically or by group
    I’m a little obsessive about organizing my style sheets, and as part of that I generally try to keep properties in the same general place for each rule.  For example, I try to keep positioning properties near the beginning of each declaration, presentational properties after that, and anything else last.  But of course the order gets messed up.  Wouldn’t it be really cool if you could just press a button and have your IDE reorder all your declarations so they follow some set of rules?  Maybe a little overboard, but it would be really useful.

HTML IDE Wishlist

  1. Pattern recognition
    OK, how many times have I populated a list with the following code:

    <li><a href="#">Something</a></li>
    <li><a href="#">Something Else</a></li>

    Wouldn’t it be really cool if on the third list item an auto-complete drop down popped up offering:

    <li><a href="#">|</a></li>

    Or something similar

  2. Lorem ipsum autocomplete
    I know some IDEs have a lorem ipsum generator built in, but wouldn’t it be cool if when you started typing lorem ips it would offer something like:
  • Lorem ipsum (1 paragraph)
  • Lorem ipsum (2+ paragraphs…) — would pop up a generator dialog
  • Lorem ipsum (list of 10 elements)
  • Lorem ipsum (list of elements…) — would pop up  a generator dialog

Even cooler would be if it adjusted the suggestions from context—so if you were in a list it would offer a list first, etc.

No Comments (Respond Now) »

Installing Zend Server & Zend Framework on OS X

Posted by Chris Morrell on May 3rd, 2009 in Web Development (tagged , , , )

This post is mostly a reminder to myself, but I thought I’d put it out there just in case other people wanted some help:

Installing Zend Server CE

If Zend Server is already installed, you need to remove it:

  • For older versions of Zend Server:
    1. Run /Applications/ZendServer/bin/zendctl.sh stop
    2. Remove /etc/zce.rc
    3. Double-check that no instances are running (you can use ps ax|grep -i zend)
  • For newer versions of Zend Server
    1. Run /usr/local/zend/bin/uninstall.sh

Now download the latest version of the Zend Server CE Installer and run the installer

Link the CLI binary so you can use PHP from the command line:

  • sudo ln -s /usr/local/zend/bin/php-cli /usr/bin/php
  • Please note that this step is optional

Installing the Zend Framework

Now download the latest version of the Zend Framework

Unzip and copy the following files:

  • library/Zend to /usr/local/zend/share/ZendFramework/library/Zend
  • extras/library/ZendX to /usr/local/zend/share/ZendFramework/library/ZendX
  • bin to /usr/local/zend/share/ZendFramework/bin
  • Please note that if you don’t need the zf command line tool, and the version of the Zend Framework that came with Zend Server is up-to-date, these steps are unnecessary

Finally, link the zf.sh file so you can access it easily:

  • sudo ln -s /usr/local/zend/share/ZendFramework/bin/zf.sh /usr/bin/zf

That’s it for now.  Hope that helps someone else out.

No Comments (Respond Now) »

Find oversized files in *nix

Posted by Chris Morrell on April 30th, 2009 in Misc

Every once in a while I run the following command on my servers to hunt out the largest files to make sure nothing’s taking up too much space.  For example, it’s been very useful in hunting down over sized log files or email accounts.  It searches everything over 20MB and outputs the list to bigfiles.txt ordered by size (in MB) descending.

find / -type f -size +20000k -exec ls -la {} \; | sort +4 -nr | awk '{ printf "%-20s %s\n", $5/1048576, $9 }' > bigfiles.txt &

You can exclude a path by adding a little more to the command. The following will do the same as above but exclude the /backup directory:

find / -path '/backup' -prune -o -type f -size +20000k -exec ls -la {} \; | sort +4 -nr | awk '{ printf "%-20s %s\n", $5/1048576, $9 }' > bigfiles.txt &

You can also change the 20000k to whatever you want the smallest files to be.

It’s a fantastic little command and I just thought I’d share it with the world.

No Comments (Respond Now) »

Puppy!

Posted by Chris Morrell on March 29th, 2009 in Personal

.

No Comments (Respond Now) »

Galahad MailChimp Synchronizer

Posted by Chris Morrell on March 26th, 2009 in Open Source, Web Development

I’ve been evaluating a number of e-mail marketing services over the past few months, and though I haven’t actually decided which one I’ll be using yet, I have worked with many of them extensively. Right now MailChimp [get a $30 credit when using that link] is one of the front runners, along with newsberry, AWeber and Campaign Monitor. I’ve been working with the MailChimp API some, and am really impressed with it. In fact, it was so easy to use that I was able to build a working mailing list synchronizer using it in less than a day.  Even if I don’t end up choosing MailChimp, I thought that this code might be helpful to others, so I’ve packaged it up and released it as the “Galahad MailChimp Synchronizer.”

Enjoy: Galahad MailChimp Synchronizer

2 Comments »

Galahad Payment Layer 0.1

Posted by Chris Morrell on March 10th, 2009 in Galahad Payment Layer


Warning: preg_match(): Compilation failed: unrecognized character after (?< at offset 3 in /home/inxil/public_html/wp-content/plugins/wp-syntax/geshi/geshi.php on line 2132

Warning: preg_match(): Compilation failed: unrecognized character after (?< at offset 3 in /home/inxil/public_html/wp-content/plugins/wp-syntax/geshi/geshi.php on line 2132

During the past two years I’ve constantly been frustrated with the Authorize.net API wrappers that exist, so when I started to rebuild NACHI.TV I decided I would write the one I always hoped for.  The code is just a two days old, so I’m sure there are all sorts of gaping holes in it, but I thought I’d release this first version to get some feedback from others who are as frustrated as I am.

Here’s a basic example of how you might use the wrapper:

$gateway = new Galahad_Gateway_AuthorizeNet($login, $tranKey);
$card = new Galahad_CreditCard('4222222222222', 4, 10);
$transaction = new Galahad_Gateway_Transaction(null, 2.00, $card, 'Description of $2 purchase');
$response = $gateway->capture($transaction, true);
if ($response->isApproved()) {
  echo '<h1>Approved</h1>';
} else {
  echo '<h1>Declined</h1>';
}

Continue Reading + Comments »

No Comments (Respond Now) »

Another SEPTA App

Posted by Chris Morrell on March 5th, 2009 in Philly

So I have a problem.  Most of the time I bike, but every once in a while I need to catch a bus or hop on the el to get where I’m going.  Inevitably, I get there just as the train is leaving, or I wait 10 minutes in the cold ’cause I left too early.  This is usually because I don’t want to waste my time finding a schedule when there’s a chance those 3 minutes will make me miss the bus.

So my idea was a single page that had the upcoming times for all the public transportation I use.  You’d enter the routes you take (in my case the 5 and 57 buses, southbound, and the Girard blue line stop, westbound), and the page will give you a quick list of when the next trains/busses will arrive.  I’ve also thought it’d be really cool if you could put in the approximate time it takes you to get to any given stop, so if it takes me 7 minutes to get to Girard station, it will only show me trains that will arrive in 7 minutes or later).

I wrote a schedule parser this afternoon and put a little bit of interface this evening.  The parser seems to work, but I’ve done VERY minimal testing.  I know the iSepta folks said that getting 80% of the parsing done is easy, and the 20% takes some work, so I don’t know if this is a project that will ever go further than running locally on my desktop, but if there’s enough interest I’ll try to clean it up and make it live somewhere.

Here’s a quick screenshot of what I have set up right now (click to see full-resolution):

transit

Feedback?  Is this something that other people would find useful?  Post in the comments or let me know via twitter.

3 Comments »

Advanced Tech Meetup

Posted by Chris Morrell on February 26th, 2009 in Philly

I’ve been thinking lately about starting an “Advanced Tech” Philly meetup. The idea is to do a quarterly meetup that discusses topics that are particularly advanced in various fields. The proposed topic for the first meetup:

Photoshop

I’ve been using Photoshop for over 12 years, and at least once a month I discover a new technique or tool buried somewhere in the software. Most people use such a small subset of the software that there are often whole classes of tools that they never use (adjustment layers is a good example). I think it’d be really interesting to get 5-10 people in a room, and each present a few concepts that it took them a long time to discover/master (20-40 minutes each).

Topics might include:

  • Non-destructive techniques (adjustment layers, smart objects, vectors, etc) — this could probably be the topic of an entire meetup
  • Masks (vector masks, layer masks, clipping masks, quick mask mode)
  • Layer effects
  • Blending modes
  • Channels
  • Layer comps
  • The brush engine
  • Filters (going beyond the lens flare!)
  • Layer locks & links
  • The list could go on forever…

So, two questions—1) would you be interested in attending? 2) would you be interested in presenting (and if so, what?).  If we can get at least 3-4 other people to present, I’ll start looking into a date and a venue.  You don’t have to present something from the above list, but it should fall somewhere under the umbrella of “advanced” (whatever that means to you).

E-mail me (see left sidebar), comment below, or get in touch via twitter to discuss.

No Comments (Respond Now) »

Video Platform Roundup (follow up)

Posted by Chris Morrell on February 18th, 2009 in Business, Microblogging, Politics, Video, Web Development (tagged , , , , , , , , , , , , )

This post is a follow-up to my previous post about video platforms.  I didn’t get to check out all of the platforms on my list, but here’s what I did find.  We ended up choosing Ooyala for a number of reasons, which I’ll touch on below.

Continue Reading + Comments »

4 Comments »

“Learning” to Design

Posted by Chris Morrell on January 28th, 2009 in Graphic Design, Web Development (tagged , )

A while back, Randy, of ümlatte, posted some thoughts on becoming a full-stack developer, something that I take pride in being.  Though I think it may be impractical in many (mostly larger) situations, developing a Web application (or anything) from end-to-end can be remarkably fulfilling, not to mention extremely efficient (assuming you’re good at each part of the stack).  I think that as Web development has become more of a “real” profession, we see less and less people doing it all.

Anyway, that’s another post.  Randy’s a fantastic developer, and he’s hoping to become a fantastic designer as well.  In his blog entry, he says:

If anybody has any suggestions about how I can go about achieving my new goal, please feel free to speak up! I have a feeling this is going to be quite a bit more difficult than web development since design is so subjective.

That got me thinking—can you learn design?  I’m not sure.  In fact, I have two completely conflicting views: one practical (a) and one philosophical (b):

A) COPY, COPY, COPY

I’d guess that my first HTML project was maybe 95% other people’s code, 5% mine.  Similarly, my next project was probably 90%, the third 80%, the fourth 70% and so on.  Now it’s rare that I copy other people’s code, but that pattern holds true for every new language I learn, and I’m guessing that’s true for most Web developers.  So why not for design?  In design we call it inspiration, but is it really that different?  The first two pages of my delicious bookmarks include an overwhelming number of design galleries, trends and tutorials.  Often when I start a design project, I’ll find myself browsing through some of my favorite galleries and design magazines looking for inspiration.  When I was first learning Photoshop, my designs were probably 95% tutorial, 5% my design.  Now it’s rare that I actually follow the tutorial instructions, but I still look at them for inspiration.

So, my practical advise would be: do the same thing you did learning HTML, learning CSS, learning Javascript, learning Ruby, learning PHP, etc, etc.  Copy.  Over time you may find that you need to copy less and less.

B) You Gotta Have It

But there’s more to it than that.  I don’t know what it is, but I know it exists.  There’s something that makes Jonathan Ive special; something a Web designer like Joshua Davis or a graphic designer like Fabio Sasso has that not everyone has.  We’ve all got a little bit of it, but while some folks have a tablespoon or maybe even a cup, others have a bucket.

That’s not to say that you shouldn’t try.  It doesn’t necessarily just bubble out of you like you might imagine it did for DaVinci.  Sometimes you don’t have the technical knowledge.  Sometimes you just haven’t given it a chance.  But I don’t think anyone can just pick up a Wacom tablet and design a site like Dave Shea or Dan Cederholm any more than they can pick up a paint brush and paint like Thomas Eakins.

So what do I actually think? I don’t know.  I think there are a lot of things you can learn, from color theory, to proper use of white space, to typography, to concepts like the Golden Ratio.  And I certainly know that I was a better graphic designer after taking some design classes in college than I was before.  But I think a lot of that comes from doing it, and either getting it or not.  Randy’s a pretty talented guy, so I wouldn’t be surprised if he gets it, but I’m not sure if he’ll learn it or just finally discover it was already there to begin with.

1 Comment »

Photoshop Layer Styles — Cheetos Text Tutorial Redux

Posted by Chris Morrell on January 5th, 2009 in Graphic Design (tagged , , )

One of my major forms of procrastination is looking at Photoshop tutorials, and I often find myself saying “if I were doing this, I’d…”  The most frustrating of these times is when people use bitmap techniques when vectors (Photoshop “shapes”) would be more appropriate, or when they create 4-5 layers when a few layer styles would do.  These problems particularly apply when the tutorial is focused on Web design or UI effects such as glossy interfaces or navigation items.

Well, this weekend I was browsing through some “top X tutorials” pages and came across a tutorial that had a great result, but went around it in, what I think is a really odd way.  The tutorial in question is the Cheetos text tutorial on Mick Moolhuijsen’s blog.  I’ve been meaning to do a tutorial on Photoshop’s layer styles, and this seemed like a good place to start.  So without further ado…

Cheetos Text Redux

Here’s a preview of the final image:

Finished

Continue Reading + Comments »

3 Comments »

Email Marketing Service Roundup

Posted by Chris Morrell on December 17th, 2008 in Business, Marketing (tagged , , , , , , , , , , , , , , , , , , , )

We are currently evaluating a number of e-mail marketing services for InterNACHI and NACHI.TV, and I thought I’d post the list here.  They are in no particular order.

I’ll be posting full reviews as we finish evaluating them.  Right now I’m most impressed with AWeber, Campaign Monitor, MailChimp and newsberry, but iContact and MagnetMail have been suggested to me by a few people, and I haven’t looked at demos of all of ‘em yet.  We’re also looking into a service called AuthSMTP which handles the delivery and lets you sort out the mailing system.  So far it’s been fantastic for our bulletin board and other systems that have mail integration.

5 Comments »

Video Platform Roundup

Posted by Chris Morrell on December 16th, 2008 in Business, Video, Web Development (tagged , , , , , , , , , , , , )

We’ve been evaluating a number of online video platforms at NACHI.TV, and I expect to post some reviews of our experiences once I’ve played with more of them.  But for the meantime, here’s a quick roundup of the video platforms that I’ve found most interesting (based mostly on their product demo videos or online reviews).  Please note, we’re evaluating end-to-end platforms, with transcoding, management, delivery, etc built in, so I’ve excluded a number of companies that don’t seem to offer these services.  We’re also in the small-to-medium sized company range, so some providers might not match that requirement.

In no particular order:

My initial thoughts are that Brightcove and Ooyala look like great matches for us.  I’ll post more comprehensive reviews later.

If there’s anyone I’m missing, please add it in the comments.

Continue Reading + Comments »

1 Comment »

“Get it right” = Procrastination

Posted by Chris Morrell on December 5th, 2008 in Business, Misc, Web Development (tagged )

“I’m not going to do [a] because I need to get [b] right first.”

I, like most people, am a master of procrastination.  I clean my desk, file my e-mail, make a few phone calls, write a blog entry, etc, just to avoid whatever it is I should be doing.  Recently I discovered a new*, and troubling form of procrastination: “getting it right.”

For the past few months I’ve been working on a major restructuring of one of InterNACHI’s core web systems.  Lately I’ve found myself not moving forward because I want to make sure the architecture is right, or I have some concerns about how certain decisions will affect search rankings, or I’m not sure if it will perform well, etc.  So instead of sitting down and finishing the project, I pull out a pad of paper and start outlining or graphing or whatever it is I convince myself I need to be doing.

Now that’s not to say that preparation isn’t important, but I’m starting to think that the agile guys got it right: build early and build often.  And I realize that this is nothing new.  Heck, nearly all of “web 2.0″ is built on the constant “beta” principal.  But I also know that as businesses grow, there’s a tendency to add unnecessary formality to otherwise simple things; at least I know that’s what we’ve done.  It’s almost like you get into this mentality of “this is how the big guys do it,” when it’s the little guys who are more compelling and innovative.

And on top of it all, “getting it right” is just a fiction.  There’s no such thing.  Today’s “right” is tomorrow’s “what was I thinking?”  I might as well get something “close” today, and “better” tomorrow.

So where is this post going?  I’m not really sure… I think I’m done, but I really don’t feel like getting back to work :)

So what do you guys think?  Am I the only one who procrastinates this way, or is this a common thing?

* By new, I mean newly identified.  I’ve been doing this for years.

2 Comments »

A little reminder of why I bought a Mac

Posted by Chris Morrell on November 26th, 2008 in OS X, Web Development (tagged , , , )

Arstechnica just posted their unboxing of the new 24″ Apple Cinema display, and one paragraph of the review really reminded me why I decided about 1½ years ago to switch to the Mac platform:

The real nicety of the display is that Mac OS X knows when you have attached the display to use its integrated devices. That is, when you’ve hooked it all up, it will use the iSight in the display instead of the notebook’s, and it will use the USB audio on the display and disable the output on the notebook. That is, until you plug a set of headphones into the port on the notebook, at which time the display’s speakers will disable and route the audio directly to your ears automatically.

Good design is invisible.  If you notice a design decision, it’s most likely because it got in your way.  Now, I’m not saying I don’t have frustrating moments with my Mac, but it “just works” a lot more often than any other piece of technology I’ve owned, and serves as a constant reminder of what I should strive for in my design.

No Comments (Respond Now) »

Nike+ Mini

Copyright © Chris Morrell, Powered by WordPress, Entry RSS Feed / Comment RSS Feed