Tim’s Weblog Tim's Weblog
Tim Strehle’s links and thoughts on Web apps, managing software development and Digital Asset Management, since 2002.

Rich Armstrong: Dogfooding Until It Hurts

Rich Armstrong in the Fog Creek Blog – Dogfooding Until It Hurts:

“In this video from 2009, Joel [Spolsky] talks about dogfooding as being more than just using your own product. It’s about using your own product for everything you can imagine, even if that usage is a little uncomfortable.”

Wed, 27 Feb 2013 07:28:19 +0000

Non-breaking space accidentally typed in OS X kills PHP code? Use Karabiner

I finally found a solution to a problem that has bugged me for years:

When editing PHP source code on my Mac, the code would occasionally break completely with an error message like “PHP Fatal error: Cannot use [] for reading in … on line …”. The code on that line would look completely fine in the editor, say: “$a[] = 1;”

Only when I’d switch on “Show Invisibles” in TextWrangler, I’d see some funny bullet in front of the equals sign. What looked like a regular space character was actually a non-breaking space (Unicode U+00A0, officially called “No-Break Space”, “c2 a0” in a UTF-8 file’s hexdump).

It was inserted because I typed to fast (or too sloppily); I had been hitting the space bar while the Alt key was still pressed. (This wouldn’t happen on a standard US keyboard, but the German keyboard layout requires the Alt key for typing square [ ] and curly brackets { }.)

The superuser article How to disable the Option-Space key combination for non-breaking spaces? had the solution: Install the free Karabiner (formerly named KeyRemap4MacBook) (requires a reboot), search for “option+space” in its preferences and check the “Non-Breaking Space to Normal Space” option.

Update: KeyRemap4MacBook has been renamed to Karabiner. And here’s a PHP script to find non-breaking spaces in your source code.

Tue, 26 Feb 2013 09:59:58 +0000

UX Movement: Avoid the Pains of Pagination

UX Movement – Avoid the Pains of Pagination:

“Stop making your pages so short and allow users to scroll for more content instead of clicking.

[…] [Turn] your “next” and “previous” links into larger links or buttons. With a larger click target, users will be able to spot and hit it faster and easier.

[…] Some paginations have first and last links that allow users to skip to the first or last page. This is unnecessary and ususally confuses users.

[…] If your content opens on the same page, infinite scrolling can frustrate users. When the user clicks to go back, they’ll lose their place and progress in the content stream and will have to scroll from the top of the page again.”

Fri, 22 Feb 2013 12:13:07 +0000

Our kids and customers are here to teach us

Why have children, or – as a company – why have customers? (Assuming you’re lucky enough to have them.) You better treat your customers as grown-ups, but I think there’s some similarities. In both cases, it’s the natural thing to do: We have the former for more love in our lives, and the latter for money. Both our kids and our customers give us a purpose in life and work, respectively. But aside from the obvious, what else is in it for us?

First, our children and our customers help us learn and practice and grow in what we do. The kids bring new words, fashion, or questions home. They provide a different perspective, and keep reminding us that the world around us is changing. I’m experiencing the same when our customers ask us to support new technology or standards. We’re pushed to learn new things as their needs evolve. But we’re also forced to stick to doing things that aren’t new and shiny anymore, as long as they’re still important to them. Kids and customers are heavily influencing the rhythm of our life and work, they are agents of change and continuity.

If we listen to and care about their feedback, we will get to know ourselves better: How do they see us? Do we seem to live according to what we say our values are? (Kids are fast to point out when we’re inconsequential or injust. And they’ll copy our bad habits in an instant. Guess how they learned that most of the day should be spent staring at an iOS screen.) Also, as a parent and when serving customers, we learn that we’re making mistakes. That not everything is under our control, that we have to cope with others’ and our own weaknesses. That we don’t have the time and skills to do everything we should do. This is humbling, but the positive feedback is wonderful. And knowing my own limitations helps me treat others’ more graciously.

As a parent or a vendor, we’re investing in a long-term relationship. We’re (hopefully) learning to take responsibility, to communicate well, to build trust by being honest and reliable. Since we have power over our children and (in some ways) over our customers, since they depend on us, empathy and generosity are extra important. And freedom – “lock in” is poisonous. Even if they’re not walking away right now, they must know they have the freedom to leave.

What’s wonderful is that we get the chance to shape our world. Just picture a few families you know: Isn’t it amazing how different they are in their parentship, their family rituals, how they talk or travel or have fun together? A handful of people who trust and depend on each other have the freedom to define what their home, their shared personal space, looks and feels like. Yes, you have to compromise, but you still have a huge influence. In business it’s less intense, but the best vendor/customer relationships can also evolve into a partnership that both sides can shape to become something personal and trustful. (I’m grateful for our amazing customers, who often trust us for more than a decade and have taught me so many things already!)

Thu, 21 Feb 2013 23:05:51 +0000

Will Norris: No one cares about your URLs (so buy a domain)

Will Norris (who works at Google) – No one cares about your URLs (so buy a domain):

“The only way for you to ensure the integrity and longevity of your content is for you to take ownership of how it is accessed. Do yourself a favor and go buy a domain that you use for publishing your content.”

I don’t understand why even software celebrities like Kent Beck or Steve Yegge publish long-form, important stuff in foreign spaces with (usually) ugly URLs that will one day go away, i.e. Facebook, Google Plus or Wordpress.com.

This has been obvious for years if not decades. (And not only for Web sites, but for e-mail addresses as well.) I bought my own nice domain name in 1998, and it has outlived a large number of services already and will probably last longer than Facebook or Google Plus. Owning a small part of the World Wide Web was part of the Web fascination back in the day, and for me it still is. Let’s empower even less-technical people to break out of corporate information silos!

See also: Marco Arment – Own your identity.

Fri, 22 Feb 2013 09:06:43 +0000

Shanley Kane: What Your Culture Really Says

Shanley Kane – What Your Culture Really Says:

“Culture is not about the furniture in your office. It is not about how much time you have to spend on feel-good projects. It is not about catered food, expensive social outings, internal chat tools, your ability to travel all over the world, or your never-ending self-congratulation.

Culture is about power dynamics, unspoken priorities and beliefs, mythologies, conflicts, enforcement of social norms, creation of in/out groups and distribution of wealth and control inside companies. Culture is usually ugly.”

(Via Brian Rountree.)

Thu, 21 Feb 2013 08:42:21 +0000

Miles Kehoe: A paradigm shift in enterprise search

Miles Kehoe at Enterprise Search – A paradigm shift in enterprise search:

“Solr is the enterprise search market now. […] What's interesting is the number of commercial products based on Solr and it's underlying platform, Lucene.

Years ago, commercial search software was the 'safe choice'. Now I think things have changed: open source search is the safe choice for companies where search is mission.”

I fully agree. We bet on Solr’s success years ago (see the 2009 blog post) and it was absolutely the right choice.

See also the article from Business Insider, who moved from Google Search Appliance (GSA) to Solr.

Fri, 15 Feb 2013 08:04:27 +0000

Kent Beck: Focusing Talks: Three Questions

Kent Beck – Focusing Talks: Three Questions:

“The sad truth is that many talks don't affect anyone's life at all. Better to reach one person than zero. Once I am able to reach one person, others in the actual audience sitting there are likely to be able to "get it" too. Even people who don't get it right there may be interested in following up later. Impact starts with one.”

Thu, 14 Feb 2013 15:38:13 +0000

Ralph Windsor: Digital Asset Management Value Chain – Search

Ralph Windsor at Digital Asset Management News – Digital Asset Management Value Chain – Search:

“It is not sufficient to offer a search capability which is just simple to use, it needs to be able to cope with an ever widening range of users and also the increasing volume of assets being stored.

[…] When end users start to utilise these more sophisticated facilities to filter results for a real world task, they find they are inadequate or have some functional limitation that was not fully anticipated during the design phase. Many developers reading this will be familiar with scenarios where they build a feature, deploy it and then hear nothing until it eventually gets used (sometimes years later) when the real usability issues get reported.

[…] When users start out, they want simpler features that operate like the internet search engines they already know, use and understand. So they expect to type in a single keyword and get optimal results back which they manually assess […]. Later, they start to get more specialised and want to locate a more limited range of results.”

Sat, 09 Feb 2013 21:39:16 +0000

Why I prefer Topic Maps to RDF

I enjoy modeling data. As students, we were taught the relational data model (as used by SQL databases) and hierarchical database structures. But the real eye-opener was when our professor started modeling a supposedly simple example: an address book. Very soon, we ran into lots of questions with no easy answers: How are persons and addresses, companies, and other persons actually related? How about several persons sharing the same address? What about the temporal dimension, would you want to keep former addresses or employers? We learned what questions to ask, that there’s no silver bullet for the perfect data model, and how to choose a good compromise.

I did a lot of SQL database modeling, which was fun and powerful and easy to code against, but still relatively limited and complicated. (Think multi-valued fields and the need for separate tables for m:n relations.) So when I first read the Topic Maps specification (XTM 1.0 back in the day) and the TAO of Topic Maps article, I was thrilled. The data structures immediately made sense to me: Every thing can have names, types, properties, and identifiers. Then there’s relations between two or more things, where each thing can play a certain role. Metadata can have its own metadata, and scopes help qualify it. That’s all.

It took a few years before I could sneak a tiny Topic Map engine into our DAM software (see the blog posts). It still isn’t fully standard conformant but serves us very well: People started using it for simple lists of countries or keywords without even knowing anything about Topic Maps. (This works fine because almost every Topic Map feature is optional.) Some time later, they would notice how powerful and flexible it is: Whether hierarchical thesaurus structures, names in multiple languages, subsets of lists or custom metadata for a topic, it’s easy to think up and implement new stuff. And you don’t have to change database structures or throw away existing data.

When I learned about RDF, it totally didn’t “click” for me. Everything’s a triple? How is this better than “everything’s a row in a table”? Yes, I’m simplifying and probably not getting it – but I know that RDF doesn’t help me think. To me, it’s a low-level abstraction, too technical and too theoretical. There’s too many options for implementing basic use cases, which makes interoperability harder. Topic Maps provide me with a way to think about data structures that makes my work easier, that helps clarify my thinking and communicate it to others.

It’s a bit sad that Topic Maps have never been widely used or even known. In terms of adoption, RDF has certainly won (even though the Semantic Web is failing so far). And I love that RDFa allows embedding data structures into HTML: Now Web service APIs can be built in HTML, to be browsed by humans and still be machine readable (the ability to “view source” is a pillar of the Web). So I’ll go with keeping the data in a Topic Map, but will probably make it available through RDFa. (I hope these two can be made to play nicely together…)

Update: My experimental TopicBank engine runs this blog – see strehle.de now powered by Topic Maps.

Update: See my blog post Topic Maps (as a standard) are dead, I’m afraid.

Update: A must-read in this context is Steve Pepper’s 2002 article Ten Theses on Topic Maps and RDF. Sample: “[Topic maps] association roles also make it possible to go beyond binary relationships. In RDF, assertions are always binary.”

Update (2019-03-11): See Michel Biezunski: Topic Maps Now.

Fri, 08 Feb 2013 08:02:42 +0000

My favorite quotes from REWORK

I just finished reading the book “REWORK” by Jason Fried and David Heinemeier Hansson. To be honest, I enjoyed it slightly less than I had expected: It’s a great (and beautiful) book, but I have been following Signal vs. Noise and similar blogs for years now, so most ideas weren’t new to me. (And isn’t it mostly common sense? I keep wondering why managers have such a hard time doing the right thing. Seems like we need “education in the obvious”, so please go read the book, then pass it on to your boss.)

Here’s some quotes from REWORK that made me think:

“Sell your by-products: […] There’s probably something you haven’t thought about that you could sell too.”

“Interruption is not collaboration, it’s just interruption.”

“Pour yourself into your product and everything around your product too: how you sell it, how you support it, how you explain it, and how you deliver it. Competitors can never copy the you in your product.”

“Soon, the stack of things you’ve said yes to grows so tall you can’t even see the things you should really be doing. Start getting into the habit of saying no. […] Don’t be a jerk about saying no, though.”

“You’re the one who has to believe in [your product] most. That way, you can say, 'I think you’ll love it because I love it.'”

“Smart companies make […] something that’s at-home good. When you get the product home, you’re actually more impressed with it than you were at the store. You live with it and grow to like it more and more.”

“Build an audience. Speak, write, blog, tweet, make videos – whatever. Share information that’s valuable and you’ll slowly but surely build a loyal audience.”

“Give people a backstage pass and show them how your business works. […] People are curious about how things are made.”

“Don’t be afraid to show your flaws. Imperfections are real and people respond to real.”

“Own your bad news: […] When something bad happens, tell your customers (even if they never noticed in the first place).”

“The more people you have between your customer’s words and the people doing the work, the more likely is it that the message will get lost or distorted along the way. Everyone on your team should be connected to your customers.”

“Culture is the by-product of consistent behaviour. […] If you treat customers right, then treating customers right becomes your culture.”

“There’s a ton of untapped potential trapped under lame policies, poor direction, and stifling bureaucracies. Cut the crap and you’ll find that people are waiting to do great work.”

“Rockstar environments develop out of trust, autonomy, and responsibility. They’re a result of giving people the privacy, workspace, and tools they deserve.”


Sat, 02 Feb 2013 20:41:17 +0000