What is Drupal?


Here is my presentation “What is Drupal? An introduction for Programmers” that I gave at the 2012 Minnebar  this last weekend. What a great conference!

I’ll be presenting this again at Twin Cities DrupalCamp at the University of Minnesota on May 18-19th.

Use full view in SlideShare and you will get access to the links in the upper right corner of the slides which link out to the demonstration videos I have out on YouTube.





South Central College students attending 2012 Minnebar #7Ten of our students from South Central College were able to attend on Saturday. Here is a shot of some of us waiting for the fun to begin.


Install Drupal 7 In Five Minutes (or less)

I’m getting my presentation “What is Drupal?” all set up for the 2012 Minn*Bar Conference. Here’s a video I created showing how easy it is to install Drupal 7. I was able to do it in under five minutes.

If you are new to Drupal this will give you a quick overview on the installation process for Drupal.

This is just one part of my presentation. I’ll post the finished presentation as soon as it is ready.

Set up the PHPStorm 3.0 Debugging Environment

Debug using Localhost

PHPStorm allows you to dynamically debug your code using breakpoints, stepping, and many other features. The following steps document how I set up debugging on my MacBook Pro using Lion OSX version 10.7.3 and PHPStorm 3.0.

I am running localhost as part of the operating system instead of using MAMP but the overall strategy remain the same.

The term “remote” signifies debugging on a web server and your localhost server is just that, a ‘remote’ web server. This is different then debugging say, JavaScript, on a local web page, that doesn’t run on a web server like PHP.

I hope these notes are helpful in getting your debugging sessions set up as quickly as possible on your system.

Make sure php.ini is loaded

You can verify that your php.ini file is being read by creating a simple PHP file and save it in the root of your localhost web folder. You may want to name it test.php:

    <title>Testing PHP</title>
  <h1>Testing PHP</h1>
  <h2>Demo Code</h2>
     echo "This is a test";
     phpinfo( );

The key to this page is the phpinfo( ). This is an invaluable function to help you verify that PHP and all its support programs are up and running.

When you run this page using localhost you should get an information page that looks something like this:

view of the phpInfo( ) test page

Make sure there is a path in the Loaded Configuration File reference. This tells you that PHP
is using your php.ini file.

If not, check the settings in your Apache .conf file. (Mine was located in
private/etc/apache2/httpd.conf. It includes this line of code:

PHPIniDir “/etc/php.ini”

Make certain to reset your server if you change either the .conf or the php.ini files. Apple
logo/System Preferences/Sharing/ Uncheck “Web Sharing” and then recheck it to turn the server
off and back on, rereading both of these initialization files.

Install xDebug

You can get a compiled version of  xDebug from the Komodo website. Select the “PHP Remote Debugging Client” for Mac (Universal).

Download and unzip this file and save the xdebug.so file in /usr/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so. The long folder name designates the version of xdebug which became important later on when I was installing the Google Chrome extension.

Add the following lines to the php.ini file. Make certain you are using the php.ini file that your PHP program is using. (Refer back to the path found when you ran test.php in the first step.)

  ;PKJ  http://files.zend.com/help/Zend-Server/zend_debugger_-_configuration_directives.htm
  ;PKJ  http://drupal.org/node/157609
  ;PKJ  http://stackoverflow.com/questions/1936792/where-can-i-download-xdebug-for-php-and-mac-os-x
  xdebug.remote_enable = 1
  xdebug.remote_host = localhost
  xdebug.remote_port= 9000
  xdebug.remote_log = /users/yourUserNameGoesHere/Desktop/xDebug.log

Notice I listed several web pages you can use as a reference. You can also comment out the xdebug.remote_log if you don’t need that. It should be a path pointing to the spot where you want to have the log created. I just put it on my desktop for quick debugging.

list settings for PHPStorm phpDebug
Run test.php again.

(Don’t forget to run it from localhost.) and you should see two references to xDebug.

Once under PHP Modules and again under Zend Modules. Use CTRL F in your browser to locate these references quickly on the phpInfo web page.


Set up PHPStorm

A nice, fast shortcut to access the Preferences Window in PHPStorm is CMD , (comma).

Inside the PHPStorm Preferences select PHP/Debug

phpInfo( ) output showing that xdebug is loaded properly Inside the PHPStorm Preferences select PHP/Debug.

— Set the port to 9000 (matching what you have in the php.ini)

— Check the box “Can accept external connections”

— The next three break options can be left check or unchecked depending on you own preferences.

Also go into PHP/Debug/XDebugProxy and set the following:

— IDE Key: PHPSTORM (This is used to connect the Google Chrome Extension with PHPStorm
— Host: localhost
— Port: 9000

Add Extension to Google Chrome

xDebug extension after installation in Google ChromeIcon showing the Google Chrome icon set to "active debugging"


Using Google Chrome Extensions do a search for Xdebug Helper and install it.

The option settings must match what you have in the PHPStorm Preference settings that you made in the previous step.

Use the Remote Debugger

To use the remote debugger, open up the test.php in a browser (using localhost) as well as in PHPStorm. A small grey bug icon will display in the right end of the URL.

turn on remote debugging and set a breakpoint

A session stopped at the breakpoint after refreshing the browser window






After you refresh the actual web page (CTRL R) you can control the flow of the program and view the variables by switching to PHPStorm and using the controls in the Debug Window.

NOTE: You have to run the debugging session from the browser by refreshing the page. That will trigger off the breakpoint set in the actual code.

Toggling back and forth between the browser and PHPStorm…

  • Step Over (F8) allows you to skip through a function.
  • Step Into (F7) allows you to step into a function.
  • Use the Red X (CMD F4) to stop a debugging session. (At first you might forget this and have several debug sessions all
    piled on top of each other.)


Designing Social Interfaces

Patterns for Improving the User Experience



Patterns. They are so useful because we design things to do similar tasks over and over. Like a login screen. This book is filled with best practices and patterns on how to create a great user interface.

I first heard about this book while listening to a podcast with Christian Crumlish, Erin Malone, and Jared Spool as they discussed UX (User Experience). They talked about use patterns and how these can be applied over and over for a better user experience as part of the User Interface Engineering podcast series.

Christian and Erin have written a very readable volume that is indispensable for anyone creating software, especially if it is a social-based web application.

Each pattern has colorful examples describing the what, when, how, why as well as accessibility issues to be aware of, related patterns, and a list of example web sites. There are lots and lots of excellent screen shots showing how the pattern is used out on the Web that flow in and out of the text just at the right times.

The authors also include several anti-patterns: things that don’t enhance the user’s experience. These are just as valuable as the useful patterns. As you read about each anti-pattern you’ll say “Yes, I find that so irritating when ‘they’ do that.”

Other experts have been invited to the party as well and each chapter is interspersed with short articles that go into greater depth.

This information could be SO dry, and it originally was, but Christian threw out the first two versions and wrote the finished book in a talkative, friendly, fun-to-read manner.

I’m enjoying the read and am already using this as a reference as I talk with people about their web sites and what they want to accomplish.


JavaScript – Using Variables

Learn about variables and how to convert from strings to numbers using JavaScript.

  • Discover the difference between declaring a variable and initializing it.
  • Uncover the different types of variables such as Strings and integers and floating numbers.
  • Meet NaN and find out what her name really means!
  • Learn how to convert a String to a number (so you can do calculations with it) as well as the "Octal Gotcha"
  • Unlock the mystery of the = = operator and how discover how computer scientists have "stolen" the equal sign and made it into another operator all together.
  • Meet some other smooth operators such as the ++ and the +=
  • Be introduced to W3Schools.com where you can find out even more about JavaScript.


This is part of the online course Programming Fundamentals offered by Computer Careers at South Central College, North Mankato, MN USA 56003.

Three Steps to Faster JavaScript Programming

There are three steps that you can follow that will help you learn how to write JavaScript faster, easier, and with a lot less frustration.

(1) Use the HTML Validator add-on for FireFox to make certain your HTML code is valid.

(2) Use the Console tab in FireBug to check for any JavaScript errors you may have in your code. This is a great way to check for misspelled variable and function names as well as missing quotes or concatenation operators "+".

(3) Finally, use the breakpoint and stepping tools in FireBug to step through your program.

This video is an in-class demonstration showing how to use the FireBug console to catch JavaScript errors as well as CSS errors. It is part of the Programming Fundamentals course (JavaScript) offered by Computer Careers at South Central College in North Mankato, Minnesota.


Google Website Optimizer

I’m reading an interesting (and very useful) book, Trust Agents by Chris Brogan and Julien Smith. The book shows how to use the Web to build influence, improve reputation, and earn trust and it filled with action items. One of the tidbits I found this morning is Google Website Optimizer.


Google Website Optimizer allows you to set up "experiments" by comparing two or more versions of a web page to see which one is most effective. This is a free service.

This video gives a great 2 minute overview right up to the last 10 seconds: "My credibility within the organization has risen and people think I know what I’m doing. (laffin)"

This is a great tool for you (and your web developer) to use to increase the effectiveness of your web sites.

Have you used this tool? Add a comment and let me know how you changed your web pages. What were your results?


Check Your Writing Before You Send It (PaperRater.com)

PaperRater.com in actionIn today’s online world you are very often judged on how well you write. In the pre-Web days of the 80’s we would always pass a letter or report around the office to at least three people, checking for typos, grammar, and spelling errors. (We also helped each other check for "attitude" in our writing.)

With PaperRater.com you can do this quickly yourself. This free service checks for spelling, grammar, word choice, style, and vocabulary words. It will even give you a letter grade based on all these factors.

Unlike Word and other grammar/spelling checkers, PaperRater.com seems to catch those subtle mistakes such as when to use "past" and when to use "passed".

(The only thing PaperRater.com doesn’t do is check for ‘attitude’. You’ll have to do that on your own.)

The site also includes a Vocabulary Builder. This is a great tool to use in the morning to get a "word for the day" and then see how many times you can use it throughout the day. At the end of the day you can review the word and write it down in a journal to show yourself how many new words you are adding to your vocabulary.

The creators at the site plan to offer premium services in the near future and are always open to donations. (They should include a PayPal account on their home page!) They say in the FAQ that they will always offer the basic service for free.

I’m going to run this article through the PaperRater to see how I’ve done. I’ll take a screen shot so you can see the before "picture". (Click on the image for a larger view.)

Report on this article by PaperRater

 Wow, look at that! I spelled "grammar" two different ways! Oops. (Also my vocabulary was low.)

Make a good impression. Let the world know how professional you are. (And improve your writing skills at the same time!)

Use PaperRater.com for all your business writing.


The Finger Dance

Computer KeyboardOn the keyboard? Stay on the keyboard. On the mouse? Stay on the mouse.

Every time you switch back and forth your brain has to remap itself to new processing areas. 

 For example, if you are editing web pages:
1. Start out in your text editor.
(Have FireFox already open and viewing the same file:  File/Open File)
(Using your pinky finger on the CTRL or ALT key so you can do these one-handed)
2. CTRL s
– Save
– switch to FireFox
4. ALT r 
   – Refresh the web page to see your changes
– switch back to your text editor  (Hit TAB multiple times to jump to other open applications.)
6. Edit the code in your editor.
7. CTRL s
– Save your changes and loop around again.

 Other very help hot keys (to keep your brain from switching tracks every few seconds)

CTRL a – Select all information (without having to scroll down)
copy the selection  or CTRL x  – cut the selection
– insert the selection (think of the v as a wedge inserting at the cursor position)

And my all time favorites:

CTRL z – undo  (walk backward through your changes)
– undo your undo

All of these work on all operating systems which makes them especially powerful.

Remember the mantra: On the keyboard? Stay on the keyboard. On the mouse? Stay on the mouse.

Minnebar – An (un)conference.

Minnebar LogoI’ve been waiting to attend my first (un)conference for over a year and a half, patiently watching my Google alerts each week to catch the next one. This weekend I was finally able to catch one.

An (un)conference is an informal conference designed to bring together programmers, designers, entrepreneurs, venture capitalists; anyone interested in technology.

(Un)conferences or barcamps happen all across the country. They are a great place to find local talent or make connections with other people dealing with technology.

This year’s minnebar (un)conference was held at the impressive Best Buy headquarters in Richfield, MN and consisted of seven sessions covering more than 42 topics. The sessions were grouped into tracks including design, development, start ups, social media, and other. In addition, there were several empty meeting rooms where people could talk about their own favorite topic. Over 1,000 people registered, making this the largest (un)conference in the country.

The price was free or you could pay $10 as a community supporter or $30 as an even more generous sponsor. Breakfast and lunch was provided as well as free beer and wine after conference. ip-House provided everyone with a really nice notebook (spiral bound with grid layout paper) and I am now the proud owner of a very colorful cyan t-shirt. (It is the one color I didn’t have in my t-shirt collection and looks really great with my SXSW 2009 baseball hat.)

I attended several Drupal related sessions and discovered that the Twin Cities has a very active Drupal group that meets several times a month.

Robert Stephens, founder of Geek Squad, along with Larry Jacobs from the Humphrey Institute and Rachel Smith, Director of Elections for Hennepin county, led a group discussion on electronic voting. Robert started the discussion out with "If I can order a pizza with my iPhone, why can’t I vote?" The discussion evolved from voting into different ways that technology could be used for more participatory and transparency in government. For example, at election time wouldn’t it be nice to have a mobile app that would give you a score card of an incumbent from the previous term? Or, to be able to fill out a form selecting the ideas and values that are important to you as a person and have these cross-matched with the platform of various candidates, giving you recommendations on which candidate meets your personal values and ideas?

In another session, Dr. Andrew Fleck, from Appleton, Wisconsin, talked about social networks based on Schumpter’s Hive. He described the theory behind innovative networks as well as giving working examples (the development of Linux). He wasn’t talking about FaceBook or Twitter, but collaborative, innovation networks and how innovators, learners, and interested people communicate and interact with each other.

If you are into technology, especially if you are a developer, designer, or web entrepreneur, don’t miss the next Minnebar!  You can register here for email notifications. And, if you have a topic you are passionate about, put your name in the hat and be a presenter at the next Minnebar.


Special thanks to Luke and all the people who continue to make Minnebar possible.