Doers vs. Managers

I think it's about having your hand directly on the rudder, feeling the power of the ship at your command. I think of Steve Jobs talking about his phone freaking excursion and how he was able to wrest control of billions of dollars of global technology through his and Steve Wozniak's ingenuity. Is that only a young man's pleasure? Don't we all wish to directly touch the world we want to help create?

Maybe that's one reason why my Mom makes so much. She, too, needs to reach her hand into the primordial goo of the world, whether it be clay or paint, and emerge with something of beauty, all the while getting her hands very dirty.

There's also having the same impact from a remove by directing people. Those skills are also valuable, but they also feel very localized. The truth is that I want to have my lines cast out into ponds more diverse and far bigger than my current company, but I feel the best way to get there is by honing my skills as a creator. In a way, even though we are salaried, our time seems that much more constrained. We are paid for the time with our peers, employees or bosses, in meetings, on calls or on email. Creators can make something that moves beyond them, that extends their reach, that reverberates past the act of creation. 

As a counterpoint, so can managers. But in the case of managers, it is their direct reports who magnify their influence. They multiply the force of the manager by extending the manager’s reach, making the manager more productive even when at rest. It’s like a flywheel that the manager sets in motion.

Life coaching, for real?



Today I met a life coach. I am not sure what it is about me that is naturally hesitant to consider consulting a life coach, but there it is. It's like my red flags start flying full tilt like they're trying to hail a rescue ship while I'm stranded at sea. The thing is, though, that I do feel a little trapped, a little lost, a little in need of some life coaching. I am tempted to reach out to her.

She came to the class I'm teaching today. First, it was awesome. Her presentation was amazing and about design thinking. We need so much more positivity at work, and this person brought it to my class. I just loved her outlook. I feel like I need to be around positive people like that. 

I am both both positive and sarcastic by nature. Basically, I believe in the inherent goodness of the world, but I also see its absurdity. I'm not sure if these are reconcilable, but that's where I think I rest.

Anyway, I might give her a shout and see what this life coaching is all about. After all, if life is a game, I want to play. Put me in, coach. tutorial uncovers HTML5 "required"

I was working through a tutorial, JavaScript for Web Designers by Joe Chellman:
JavaScript for Web Designers, Chap 3, Lesson 6

I was on chapter 3, lesson 6, when I started to have trouble with making a JavaScript validation task in the tutorial. There was a select list that was supposed to use an event listener to trigger an alert on submit if the select list had no value.

Instead of making an alert modal popup coming up when the submit button was clicked, however, I kept getting a pop-up right next to the select list field that said "Please select an item in the list."

Strangely, when I would try to use the web inspector to inspect the pop-up element, the element would disappear as soon as I clicked the inspect tool in the dev tools.

This pop-up did not follow the tutorial at all, so I thought that maybe some of the other JavaScript on the page was somehow causing this. I did a search for the text of the pop-up in the other js on the page: nothing. Then, I commented out the script calls to the other js: no change. The pop-up kept coming up.


Finally, I looked at the html. There it was:
<select id="s-state" required>

As soon as I removed that, the js alert started working. Of course, if I had just kept watching the tutorial, it turns out that Chellman had the user add the "required" to the select list in the the index.html file. In this case, though, the beginning code probably should not have included the "required." Nevertheless, I eventually figured it out and learned something about an HTML5 tag I did not know about.

RSS Feed into Drupal Site with SSL

Getting RSS on a Drupal page shouldn't be hard, should it?

We had a request to get a student newsletter that is sent out through MailChimp to appear on a webpage. There was already an RSS feed to the archives, so I just need to bring the content into the site.

Here was the issue, though:

Any Googling for RSS and Drupal brought up messages about importing through Aggregator. The problem with that was that the description in the RSS for MailChimp emails had a whole HTML page in it. It was not really a typical structured feed, but a title, a date and a description with the entire newsletter, including <head> and <body> tags. How was that going to work? I sure didn't know.

The Drupal Mailchimp module was not much better, as it seems to be suited more to managing lists and publishing campaigns, rather than importing old newsletters into the Drupal side.

So then it was off to the RSS widgets which populate the web to see what I could bring in from the feed and render on the page. This was more difficult than it seemed, as any RSS widgets that came up on a Google search only returned those without SSL. Unfortunately, our site has https everywhere, so the iframe kept throwing an error by the XSS auditor.

Thankfully, I found This allowed me to bring in the feed titles and dates and display them in a simple but tasteful way (instead of trying to iframe in the entire newsletter archive, which looked like a big old janky hack).

Here's the resulting page:

The good thing about feedity is that it had some simple configuration options that helped:

<script language="JavaScript" type="text/javascript">
// Customize the widget by editing the fields below
// All fields are required

// Your Feedity RSS feed URL
feedity_widget_feed = "";

// Number of items to display in the widget
feedity_widget_numberofitems = "5";

// Show feed item description (values: yes or no)
feedity_widget_showdescription = "no";

// Show feed item published date (values: yes or no)
feedity_widget_showdate = "no";

// Widget box width (in px, pt, em, or %)
feedity_widget_width = "250px";

// Widget box background color in hex or by name (eg: #ffffff or white)
feedity_widget_backcolor = "#ffffff";

// Widget text & link color in hex or by name (eg: #000000 or black)
feedity_widget_fontcolor = "#000000";
<script language="JavaScript" type="text/javascript" src=""></script>

Pretty simple. I set title and date to "yes" and description (which contained an entire newsletter) to "no."

I'm not entirely sure how it works, but the call to the feed and widget.js both use https, so the connection wasn't blocked and the content came across the transom. 


Barcamp Omaha 2016 Notes

Andrew Yolland on UX and Game Design

Barcamp 2016 was held at The Kaneko in downtown Omaha, organized by the tech and design community, largely AIGA, Flywheel and Agape Red. My friend, Ben Stevinson, seemed to be integrally involved in the coordination of the event. It was a great time to reconnect with some people and see new people who are interested in sharing their thoughts and experiences. Plus, it reminded me of how much I love living in Omaha, especially so close to the downtown. For $15, I was able to hang out with cool, smart people who are interested in making their communities and themselves better, have breakfast and lunch, good coffee and snacks, and get a t-shirt. Plus, it reaffirms just how varied and strong is the creative community here in Omaha.
The following are my sketchy notes on the event.

Dylan Baumann (@dylanbaumann) on CSS Grids, a new specification (video)

This is like a much better version of flexbox. It is not ready for implementation yet, but is an enhancement to web design that will make laying out pages much easier and logical.
I’ll definitely keep track of this now that I know it exists, but it’s not ready for production environments yet.

Will Riley (Split Infinities) on new web technologies (video)

Riley’s list included a lot of new ideas and terms that I need to follow up on.
Web Sockets
<picture> and <img srcset>  
    We use these on Drupal pages at work, but I don’t know exactly how to implement them
Shadow DOM, specifically for scoping CSS to specific elements
HTTP Live Streaming (HLS)
    Vimeo supports this
Mix Blend Modes and Filters
    Doling live image filters like instagram
    This one I’ve used
Type Features
    System Fonts
Functional CSS Design
    Bass CSS
Web Sockets
Cache API for URL
React and Choo.js
Sensor APIs
    To use light, accelerometer and force touch  
Web Audio
    Developed by Firefox
Developer Operations
    Deploy HQ
    Github reviews

Sandi K. Barr on Flux/Redux

Andrew Yolland on UX and Board Game design (@ayolland)

Bad Ideas with Beth Haubert

Beth introduced some of her bad ideas: amputated leg lamp or Fecesbook, but also challenged us to not neglect our own bad ideas.

Craig Hughes on the importance of objects

Craig is a design anthropologist who asked students who were in their first year of college if they could only take one thing with them to college, what would it be. The irreplaceable value we place on objects in which we have imbued with meaning or value through use.

Zach Leatherman on separating fact from fiction

With lots of examples from The Flat Earth Society, Zach showed how nonsense can take root and spread on the web and how people might avoid being taken in. As for convincing others? Yeah, good luck with that.
People I talked to:
Steve with the pi and i shirt
Ben Stevinson
Jeff Spiehs
Ben Leuders from Fruitful
Ben from Bench
Dave Burchell from Creighton
Justin Duster from UP
Zach Leatherman (who was also at Dylan Baumann’s talk about CSS Grid}

Making one view look like another one

To take one view and make it look like another can be pretty trivial. 

Let's call them "old style view" and "new style view". 

In my case, most of the presentational work of both views was being done with custom text, which means that I was bringing the fields in earlier in the view, but excluding them from displaying. Then, I used the tokens created by the view of those excluded fields in a custom text field, wrapping them in tags and classes that made sense. 

<!-- vertical -->
<div class="event-item">
<div class="event-calendar-left">    
    <div class="event-calendar-box">
        <div class="box-top-month">
        <div class="box-bottom-day">
    </div><!-- END of .event-calendar-box -->
</div><!-- END of .event-calendar-left -->
    <div class="event-calendar-right">
        <div class="event-brief-desc">
        <div class="event-desc-top">
            <div class="event-name">
        <div class="event-date">
        <div class="event-time">

        </div><!-- .event-desc-top -->
        <div class="event-desc-bottom">
            <div class="event-summary">[body]</div>
            <div class="event-more-info"><a href="[field_imported_cal_link]">More Information</a>
        </div><!-- .event-desc-bottom -->
    </div><!-- .event-brief-desc -->
    </div><!-- .event-calendar-right -->
</div><!-- .event-item -->

Drupal Module Development with Jon Peck and the Paamayim Nekudotayim

We have all had that missing semicolon moment, when the entire app comes screeching to a halt because you hit return instead of semicolon and then return. The same thing happened today with “canvas”, which I spelled “convas” (not a word, apparently, and most certainly not one that Google Maps Drupal Plugin could use, when it was looking for canvas to be spelled correctly).

This led to an error with was really not right: “null is not an object.” Thanks, Javascript.

I swear I ran a diff on the PHP code I wrote and that of the exercise file but because of tabs and an extra return or two could not find the problem.

Instead, I grabbed the HTML output of my bad code from the browser and put it in TextWrangler. Then, I took the PHP from the exercise files and replaced my module PHP. Saved and lo! and behold, a map showed up. I grabbed the HTML output of that, compared the two front windows in TextWrangler and there it was: “convas” where “canvas” should be. (Update: later in the day, I had a very similar thing happen with a colon in place of a semicolon.)

“Where does he get all those wonderful toys?”

This is, of course, the best line in the 1989 Batman, said by Jack Nicholson’s Joker to his henchman. This is also what I’m wondering as I hear Jon Peck say that we need to use Drupal’s hook_block_info function. I can’t help but wonder how he knows that, because I know that I don’t know it, and I’m assuming he had to learn it. Did he do so by reviewing all of Drupal’s hook functions? That sounds crazy. Did he build a lot of sites and learn little bits of this stuff along the way? (Update: at the end of the tutorial he talks about how he spent time going through Drupal’s API, so I guess that’s not so crazy.)

Well, here’s a page about Drupal’s hooks, which I suppose is helpful, given that it was the top search result. It also contains links in the comments to the most used hooks, which is another bonus.


PHP Scope Resolution Operator (::) or Paamayim Nekudotayim

What I Learned

  • The name of ::
  • What other people call -> and =>

What I Knew

  • PHP (somewhat)
  • Drupal (somewhat)

As I was going through the tutorial, I couldn’t help but wonder why PHP uses the “->” to describe methods or properties of objects. In the process of looking around, I learned more about the Scope Resolution Operator or Paamayim Nekudotayim, which is used to describe the methods of classes, not objects. I had wondered why one was used sometimes and not the other.

Perhaps I don’t know the answer, but I know now that I’m not alone in wondering about these operators:


Making a Drupal site in Dreamhost

What I learned today

  • Copying files one directory up and removing them
  • Drush site-install

What I knew

  • Setting up sites with Dreamhost (domain, hosting, database hostname and creation)
  • Drush (somewhat)
  • Drupal

My steps

  1. Register domain (with Dreamhost)
  2. Host domain (with Dreamhost)
  3. Create hostname (with Dreamhost)
  4. Create database (with Dreamhost)
    1. Username
    2. Password
    3. Database name
  5. SSH to home directory
  6. Drush dl
  7. Copy files from drupal to the home directory (
  8. Remove the drupal subfolder
  9. drush site-install –db-url=mysql://{username}:{password}@{hostname}{database}
  10. Login with credentials on the new site


How can I copy the contents of a folder to another folder in a different directory using terminal?
site-install - Specifically the “Install using the specified DB params.”