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

My comment on “PHP is meant to die” by Software Gunslinger

Software Gunslinger – PHP is meant to die:

“No matter how good or clever your idea looked on paper, if you want to keep the processes running forever they will crash, and will do it really fast under load, because of known or unknown reasons. That’s nothing you can really control, it’s because PHP is meant to die. The basic implementation, the core feature of the language, is to be suicidal, no matter what.”

I dare to disagree. We’ve been running PHP daemons on our (many) customer’s production servers for more than 15 years now (yes, on PHP 3 back then) and it has served us well. (The guy who was crazy enough to start this was a PHP Group member, so he knew what he was doing.)

There have been bugs and pain points throughout the years (as with every other technology): We discovered and reported a couple of memory leaks. We got to know gc_collect_cycles() and pcntl_signal_dispatch(). We learned to live with memory_limit (which is actually a feature keeping the processes from making the server swap due to a memory leak) the same way we have to live with JVM memory settings in Java-based software (I’m looking at you, Solr). Currently we have to tell cron to restart certain PHP processes once a day to work around a 5.3 memory leak. We’re using Supervisord for process control. (We’re storing jobs in the database, and a number of PHP CLI worker daemons process them in parallel.)

Still, all things considered, we’ve been able to run rock solid systems on many servers for more than a decade on command line PHP daemons. We’ve got a clean common PHP code base, used by both command line and Web page code. There’s certainly other ways to achieve this, but for us it’s still a very good setup.

(Via Jake A. Smith.)

Mon, 29 Apr 2013 10:49:38 +0000

C. Lawrence Wenham: Signs that you're a good programmer

C. Lawrence Wenham – Signs that you're a good programmer:

“In fact, another way to become emotionally detached from code is to put your interest into the outcome instead. The outcome you should be thinking of is a lady who's going to get fired if she doesn't deliver the output of your program at 4:59pm sharp.”

Mon, 29 Apr 2013 20:15:19 +0000

Heath, Bizer: Linked Data: Evolving the Web into a Global Data Space

Tom Heath, Christian Bizer – Linked Data: Evolving the Web into a Global Data Space:

“This book gives an overview of the principles of Linked Data as well as the Web of Data that has emerged through the application of these principles. The book discusses patterns for publishing Linked Data, describes deployed Linked Data applications and examines their architecture.”

The Web page contains the whole book, for free. I still dislike RDF triples, but there’s heaps of useful information.

I especially like this one:

“Linked Data commits itself to a specific pattern of using the HTTP protocol. This agreement allows data sources to be accessed using generic data browsers and enables the complete data space to be crawled by search engines. In contrast, Web APIs are accessed using different proprietary interfaces.”

Each big corporation’s information silo uses their own API. That’s crazy. If you don’t want to be open to the public, prevent access by requiring authentication. But don’t force developers to reimplement simple data access (search, read). I’m currently in favor of HTML with semantic markup (probably RDFa)…

Mon, 29 Apr 2013 08:14:06 +0000

Short links (2013-04-29)

Mon, 29 Apr 2013 21:35:22 +0000

David Lieb: Cognitive Overhead, Or Why Your Product Isn’t As Simple As You Think

David Lieb – Cognitive Overhead, Or Why Your Product Isn’t As Simple As You Think:

“Put your user in the middle of your flow. Make them press an extra button, make them provide some inputs, let them be part of the service-providing, rather than a bystander to it. If they are part of the flow, they have a better vantage point to see what’s going on.

[…] If your user has to wonder, “So, did it work?” you’ve failed. Walk people through using your product like a magician leads the audience through an illusion.”

Thu, 25 Apr 2013 21:40:16 +0000

Derek Sivers: Seeking inspiration?

Derek Sivers – Seeking inspiration?:

“The inspiration is not the receiving of information. The inspiration is applying what you’ve received.

People think that if they keep reading articles, browsing books, listening to talks, or meeting people, that they’re going to suddenly get inspired.

[…] You have to pause the input, and focus on your output.”

Wed, 24 Apr 2013 13:53:21 +0000

Short links (2013-04-20)

Sat, 20 Apr 2013 21:31:31 +0000

Eric Smith: We are Principled: 6th Edition (on bugs)

Eric Smith – We are Principled: 6th Edition:

“There are many reasons to practice the demo but one of the biggest benefit is catching missed requirements. I couldn't list the number of times one team member would demonstrate a feature only to realize they had left something out or made a simple mistake, usually before the person they were demonstrating to could even catch it. The simple act of walking through the feature slowly proved immensely beneficial.

[…] Development, QA and management are all represented, and then somebody will ask QA: "So how come YOU didn't catch this bug?" It's said with an accusatory emphasis on YOU because after all it's QA's job to catch bugs and if they aren't catching them, then what are they doing? The poor QA lead fumbles around, mentions they'll add a test for it so it won't happen next time, and development goes on doing the same thing they've always done.

[…] If a mistake was made it's because development made it, not because QA didn't see it.”

(Via Rich Rogers.)

Thu, 18 Apr 2013 20:09:48 +0000

Shanley Kane: How the Productivity Myth is Killing Your Startup

Shanley Kane – How the Productivity Myth is Killing Your Startup:

“You have to admire the insipid, dogged and naive devotion people have to believing they are going to get this huge of list of things done.

[…] All 10 projects are delivered late and half-assed. This is most sad for project number 4, which was the most important project of them all, and could have been completed and damn well if everyone had just worked on that.

[…] You are going to get way fewer things done than you think you’re going to get done. And those things will take you much longer than you plan for. Much as you must talk to teens about drinking, you must talk to your team about productivity.

[…] Create a culture of truthfulness about productivity by continually comparing plans, roadmaps, and strategies to their actual results — often the number of things that were cut, late, or done poorly will shock and awe. What would you have done differently if you knew what was actually possible from the onset?”

Thu, 18 Apr 2013 20:27:26 +0000

Short links (2013-04-12)

Fri, 12 Apr 2013 13:20:54 +0000

Alex Pukinskis: 3 Ways to Inspect and Adapt at Scale

Alex Pukinskis – 3 Ways to Inspect and Adapt at Scale:

“We’re all familiar with top-down change initiatives. Senior leadership gets together, analyzes the problem, designs a solution, and announces it. Everyone else is left to react.

This approach leads to problems for two main reasons. First, people don’t know when change is going to happen, so they live in a constant state of low-level anxiety. Second, the leadership group never has all of the context.

[…] I talk to a handful of people 1-on-1. Sometimes I pair with another person on figuring out a process change. I write a clear, short explanation of what i’m proposing and what the underlying goal is I’m trying to achieve.

Then I ask for consent to move forward. […] I ask if people know specific ways the proposed change will harm the organization.”

He’s pointing to a technique called Holacracy, which sounds promising if a little secretive – I like this quote: “Managers are no longer needed, the leadership function is now distributed.”

Tue, 09 Apr 2013 08:18:49 +0000

Short links (2013-04-05)

Fri, 05 Apr 2013 13:53:55 +0000

My (honest) résumé

I’ve got a nice job and I’m not hunting for a new one. This allows me to have some fun writing an uncommon resume – honest and personal. Not the polished, impersonal copy you’d use in a real-world job application. (Please remind me to delete this blog post if I’m actually searching for a job someday…)

I usually describe myself as “a passionate Web developer working on Digital Asset Management (DAM) software.” (You’re not familiar with the “DAM” term? Think image databases and newspaper archives. More in my list of DAM resources.) I do have a passion for Web development, DAM and information management, software architecture, quality, user experience, honesty, communication, and customers. (Not in that order.)

If you want to hire me as a developer, note that I’m not a “real programmer” in the sense that I have no Computer Science degree. Yes, I’ve been working as a full-time programmer (“senior developer” and “software architect” if you’re into fancy titles) since 1997, but in German bureaucracy that’s not always sufficient. It also means that I don’t do advanced mathematics and I’m not passionate about algorithms. (If you want me to sketch a quick sort algorithm during the job interview, I’m out.)

Unlike you probably expect from a good developer, I also haven’t learned a host of programming languages. No C, C++, Java, Ruby or Python experience, I’m afraid. I’ve been intentionally sticking to PHP, SQL and JavaScript for more than a decade now – not because I wouldn’t be able to learn other languages, but because I find it not that interesting to solve the same problem in a new language just for the sake of it. (I prefer solving new problems, or improving existing solutions.) If you need me to work in another language, though, and can pair me with an expert I can learn from, that’s fine with me.

I enjoy exploring related technologies and disciplines: I dived into XML, XSLT, Unicode, LDAP, Nagios, VMware, Solr, Topic Maps, Linked Data, Hypermedia APIs. Tried to figure out how to document software and projects. Managed and implemented customer projects from end to end. I love to communicate so I started using screencasts, Wikis, blogging and Twitter. I appreciate having had the freedom to discover and introduce a lot of these things to our company, and I expect similar freedom from my next job.

I regret not having spent more time working on open source projects. Aside from the occasional PHP bug report and a few small tools I published, I didn’t contribute although most of our software is built on open source.

I have the little-known degree of “Diplom-Dokumentar (FH)”, which is roughly equivalent to a bachelor in information science / information management. This profession is about structuring, researching and disseminating information; I love it. I could work as a newspaper archivist, build taxonomies and metadata guidelines, help researchers find scientific articles and facts, or organize your company library or large intranet. Unfortunately this job market is small in Germany and continues to shrink. (Update: See my blog post Where have all the librarians gone?) But programming was my hobby, so working as a developer to produce software for archivists was something I could identify with.

Being able to identify with the stuff I’m working on is very important to me. I’m sorry, but I won’t do browser games, software for the financial industry or work on ads. If I think your company is offering boring or pointless services or products, I’m not interested as I don’t consider myself primarily a software developer: Code is just a means to an end. My purpose is to help share information and/or creative works to delight or educate people.

What kind of person am I? First of all, you likely want to hire someone younger than me. Born in 1972, I’m quickly growing too old for the German job market. I’m an uncool non-hipster, not drinking, not partying, no sports. Just a family guy. A bit risk-averse and very loyal, so I’m likely to join you for the long term.

And I’m serious about spending time with my family: I want to travel as little as possible. I prefer office hours from 9 to 5, to be home in time to see the kids. Which doesn’t mean I’m not willing to work more: I’m known for working late, on weekends and even during vacation. My customers have got my mobile number and can call me anytime in case of emergency. But I’m doing extra time on my own terms, at home, when the kids are in bed. You let me go home in time and allow for the occasional “home office” day, and I’ll see that the work gets done (unless the work load gets unreasonably high). I’m also not into after-work activities and weekend retreats. (If you don’t value team building activities enough to do them during work hours, why should I?)

If I may say so, I think I’m a good communicator and can explain things well. I’m very empathic and a good listener; I care about people and harmonious relations. Working in a team – tackling huge tasks together, or playfully exploring and validating ideas – means a lot to me. But I’m also an introvert and sometimes like to focus on a single task all by myself. Then I put on the headphones and ignore everyone around me to get stuff done. (I hate working in a large room full of people, by the way…) You’re welcome to drag me out of my cave if you feel I need to spend more time with the team. I’m full of ideas, curious, and always learning. I love taking responsibility and having freedom, and I think I’m a good “manager of one” until you’re piling too much work on my desk.

I can be very patient with customers, and very impatient with pointless meetings and dumb policies. I hate lies. From you, I expect good, humble, transparent, team-driven management in some form of “agile” environment. See my blog for lots of quotes on what I consider good management.

I’ve never been a team leader, i.e. I have no “management experience”. But it’s something I would consider doing, and I often think about my hypothetical approach to leading a team.

How about you? Please send me a link if you dare to publish your own “honest resume”…


Wed, 03 Apr 2013 18:31:59 +0000

David Gewirtz: My infuriatingly unsuccessful quest for a good media asset management tool

A wonderful rant by David Gewirtz on ZDNet – My infuriatingly unsuccessful quest for a good media asset management tool:

“There is a category called "Digital Asset Management" out there as well. These are enterprise-level products, often Web-based. You can begin to tell they'll be trouble because there's no price for the product on the site. Almost all providers of DAM tools have a "let us have an expert call you" button.

[…] I'm also disappointed in the Web-based and enterprise-based solutions.

First, the barrier of entry is huge. There appears to be a disconnect between the needs of a professional designer with thousands of images and a large corporation buying an enterprise package.

Second, most of the Web gallery and enterprise solutions still use relatively primative upload dialogs and download buttons. There are very few solutions that will let you drag from a Web page into a desktop application, or to the desktop, and do it for a bunch of images, and those that do also seem to think the only type of image that exists is based on bitmaps.”

Tue, 02 Apr 2013 14:27:46 +0000