Bob Sawyer

web development and attention-deficit disorder – a winning combination

December 11, 2011
by Bob Sawyer
Comments Off

Black Bean and Bacon Soup

This recipe turned out so well that I thought I’d share it with everyone. No photo this time around but I mean, hey, it’s black bean soup. What’s to see?

Black Bean and Bacon Soup
Print
Recipe type: Entree
Author: Bob Sawyer
Prep time: 10 mins
Cook time: 20 mins
Total time: 30 mins
Serves: 8
A tasty and protein-packed soup. Great for frosty weather!
Ingredients
  • 1/2 red onion, chopped
  • 1/2 red bell pepper, diced
  • 2 slices bacon, cut into chunks
  • 2 cans black beans (or equivalent amount of dry beans), drained
  • 2 cups fresh spinach, chopped
  • 3 cups non-beef broth (chicken, turkey, vegetable)
  • 3 cups water
  • 4 tbsp olive oil
  • 3 tsp chili powder
  • 1 tbsp cumin
  • 1/2 tsp salt
  • 1 tsp black pepper
  • 1 tsp Worchestershire sauce
  • Dash of Tobasco sauce
Instructions
  1. Add olive oil to non-stick pan.
  2. Add bacon to hot pan and fry until 1/2 done.
  3. Add onions and peppers, stir until the onions are caramelized and bacon is done.
  4. Drink some water.*
  5. Drain onions, bacon, and peppers on a paper towel.
  6. Add spinach to hot pan and stir until just wilted.
  7. Add black beans, cumin, and chili powder to pan, cook until thickened.
  8. Drink some water.*
  9. Transfer onions, bacon, peppers, and bean/spinach mix to saucepan, along with broth.
  10. Add in salt, pepper, Worchestershire sauce, and Tobasco sauce.
  11. Bring ingredients to a boil, stirring occasionally.
  12. Drink some water.*
  13. Reduce heat to low and simmer for 20-30 minutes.
  14. Enjoy!
Notes

*We humans don’t drink enough water. Enjoy a few cups while you’re preparing this recipe.

June 1, 2011
by Bob Sawyer
Comments Off

Quick Hit: The 3 Things That Will Cause Me to Unfollow You on Twitter

I’m getting ready to clean out my Twitter followers list, and there are a few criteria that I’m looking for. If you meet these criteria, you will be removed.

  1. You only tweet links to other people’s work. Have an original thought once in a while.
  2. You retweet the same four messages over and over. I got it, OK? I saw them the first time, and if I haven’t acted on them yet, and this is all you have to say, we have no future together.
  3. Your tweets are nothing but marketing drivel. Look, Twitter is a great marketing tool, but don’t be a marketing tool yourself. If this is all you’re about, I’m not interested.

In other words, you’re either a robot (for real) or you are so significantly lacking in personality that you come across as one. Either way, it’s been nice knowing you. The rest of you, see you after the purge.

April 13, 2011
by Bob Sawyer
Comments Off

Quick Hit: Making Special Characters Work in CSS Generated Content

So I ran into this problem today while attempting to add a special HTML character code to a list item to denote it as the “current” menu item. Those of you who rule the roost in CSS-land probably know this already. Anyway, I assigned the <li> with a class of “current”:

<li class="current">Something Here</li>

I knew I wanted to use CSS’s ::before pseudo-element coupled with the content attribute. So I tried this:

li.current::before { content:'&raquo; '; }

Found out pretty quickly that CSS adds whatever is in the content declaration exactly as-is—so I ended up with:

&raquo;Something Here

Not exactly what I was shooting for.

A quick Google Search brought me to this post on Alan Hogan’s blog, where he explains that you must use an escaped hexadecimal code within the quotes for any special character you wish to use. Since I wanted to use a right double angle quote followed by a space, I added this to my css file:

li.current::before { content:'\BB\A0'; }

And that did the trick. You can find lists of hexadecimal character codes all over the place, but I used this one, for what it’s worth.

March 27, 2011
by Bob Sawyer
2 Comments

Not All Web Site Changes Are Improvements

There is a Japanese term—kaizen—that means “continuous improvement,” and while it’s safe to say that most web designers and developers engage in kaizen, it’s also fair to say that not all changes are improvements. Take, for example, the almost-weekly user interface changes that the developers at Facebook foist upon their users. Some have certainly been improvements over previous iterations (although I’m hard-pressed to think of any at this time), and some have not (a list too long for this post…). Nearly all of their iterations, good or bad, bring forth howls and shrieks of complaints from users who create new groups and pages on Facebook, allowing them to band together to complain about the offending changes.

Ultimately, the issue boils down to respecting the user1. Does that really cool new interface you’ve developed to replace the old familiar one really improve the user experience, or is it just an exercise in creating something cool? Does removing the “Submit” button from the Facebook post box improve the user experience, or does it just serve to frustrate the masses?

Addendum – 2011-03-30: What irks me most about Facebook’s decision to remove the Post button and make hitting the “Enter” key the default method for posting messages and status updates is that it’s counter-intuitive. As my biz partner Mark was saying today, having to use “control-enter” to create a new paragraph is counter-intuitive, and creates problems down the road, particularly for heavy FB users. Think about it: you get used to hitting “control-enter” on FB, and then start pulling your hair out the next time you type an email, a Word doc, etc.

A smarter, more intuitive option would have been to make “control-enter” post the message, leave “enter” for its intended purpose of creating new lines, and leaving the “Post” button in place for those who don’t consider themselves power users.

1. A phrase borrowed from my friend Neill Kipp.

March 13, 2010
by Bob Sawyer
Comments Off

A [Web Development] Parable

There was once a man who owned a book store, filled with all manner of books written in multiple languages. His customers would come to him because they knew he could help them find just the right book for them. And they understood that as the purveyor of fine books, he was the expert and they trusted his judgment. Or so they said.

Now, the book store owner was also an author, and he had written many books, some specifically for well-paying customers who wanted a book that no one else could own. A book just for them, because he was the expert and they trusted his judgment. Or so they said.

One day a new customer came into the book store and, after discussing their needs with the proprietor, found and selected just the right book for them. The only thing they requested was a different dust cover, one that was custom-created to match the decor of their personal library. So the proprietor labored long hours to create a new dust cover for the book, and the customer was happy with the results.

But soon after the customer returned. "We are not happy with Chapter 16. It does not fit well with our interpretation of the story. We want you to rewrite the chapter, and make it fit our purposes better."

So after much discussion, the book store owner agreed to rewrite the chapter. He was a clever man, and had a keen grasp of the language in which the book was written, but he was not familiar with the characters, plot, or storyline of the book, and while he knew the language, the author had written it in a somewhat peculiar dialect that was difficult to grasp at times.

After many hours of research and poring through the book to discover all the characters, their idiosyncrasies, their connection to one another, and the original chapter’s impact on the storyline and plot, the book store owner set out to rewrite the chapter to fit the customer’s needs. He quickly found that there were hidden subtexts, references to characters and themes from other novels by the same author, and connections to works by other authors with whom he was unfamiliar.

So he went to the customer and said, "While I certainly understand the language, and have written many books of my own, to rewrite this chapter will take quite a bit longer than originally thought, and cost you considerably more for my time and effort, as this extra work is out of scope." When the customer objected and wanted to know why, the proprietor did his best to explain to the customer that there were subtexts, and references, all of which were unfamiliar to him. But the customer said, "I still don’t understand. You are the expert! You talk about subtexts and references and hidden plot twists, but these are your terms. And besides, the last writer I employed was able to write an entire novel, much like the one I purchased from you, in a very short time!"

When the proprietor tried to explain that the other writer (whose work he had seen) had created his works extemporaneously, free of the constraints of existing plots, characters, themes, and the like, the customer was unmoved. "You say you are the expert, so I trust you to be an expert and write this chapter. But I shall not pay extra for it as it should have already existed in the form I wanted when I bought the book. And besides, there are other parts of the book that I want embellished that you have given me estimates on, and I don’t understand why those will be difficult, either. But, you are the expert…"

After several more rounds of this, the proprietor returned the book to the customer, thanked him for his business, and asked him never to darken his doorstep again.