Advice for Web Entrepreneurs

Standard

A collection of items that has been in my inbox for some time:

Stack Overflow Dev Days in Amsterdam

Standard

Last weekend there was ‘Stack Overflow Dev Days’ in Amsterdam. Stack Overflow is a question and answer site for programmers, brought to life by Joel Spolsky, from the blog Joel on Software. It has less over a year now and it is already pretty popular among programmers. The Dev Days was a one-day conference, around different world cities, covering different topics that are hot and trendy among programmers these days (Javascript, iPhone development, etc) and also bringing the site community together and listen to a bit of propaganda by Spolsky.

Joel opened this edition of the Dev Days with a talk on Elegance and Beauty on software development. I felt this talk had an important message underneath: more functionality doesn’t mean increased complexity for the user if the right abstractions are used. As an example, consider the Amazon 1-click shopping. While some people advocate that “less is more” is about implementing less features it can also be regarded as implementing the right abstractions, in a way that the user doesn’t perceive the complexity under the hood.

Jörn Zaefferer then delivered what seemed to be a sales pitch on jQuery, rather than showing what gets him excited about it. Nevertheless, he showed what jQuery is all about and some of the new functionality in the library.

Eero Bragge talked about Qt and the feeling I got was the only reason this talk went in was because of the sponsorship. Enough said.

Joel then presented Fogbugz and what a nice product he has there. He gave a very nice overview of the product and got me excited to try it. There is a free subscription for students and startups so you might want to check if you apply.

Simon Willison then talked about Python and created a heatmap in a matter of minutes. Overall very nice his presentation and brought the feeling I have to explore Python again.

Nick Johnson presented the Google App Engine and created a small answer/question site in the cloud, also in minutes. Unfortunately what he presented was more or less what you get when following the tutorials on the subject, so for me there wasn’t really too much added value with this talk.

Christian Heilmann talked about the Yahoo! Developer tools, namely YQL. For me it was the best presentation of the day and he completely nailed it. I won’t get into details about YQL because I don’t want to dumb it down but everyone should take a few minutes and check what it is all about.

http://developer.yahoo.com/yql/

Chris Heilmann on the Yahoo! Developer tools (mp3)

http://tinyurl.com/yfoh3cc

Sapo Codebits 2009 Talks

Standard

Codebits is a programmers/hackers conference that is going to be held in Lisbon during 3 days in the first week of December.

I’ve now talked with a couple of friends and colleagues and many seem not very excited about it and confessed they would most likely not attend. While there can be several explanations for this, I think one of the main reasons is due to the bad PR work the organization has been making. If you go into the main page of the conference you don’t get a clear picture of what will happen, what talks can one expect and what topics will be discussed. As an example of the proper thing see the StackOverflow DevDays page. That’s what you want, a page with speakers, date and topic. Not a blog with pictures of profiles rotating like if you were seeing a dating site.

Having said that I also wanted to say I think Codebits is a great fucking idea and you’d be silly not to attend. There are already some great talks for this year and many of the people there are the enthusiastic developers you probably don’t get to hang around in our daily job, and that can inspire you and renovate your enthusiasm.

Here are some of the talks already announced for this year’s edition*:

  • Web Application Development by Kai Seidler (Sun Microsystems).
  • Ruby 1.9 VM’s internals with DTrace by Lourens Naudé, independent consultant and a founding member of the Scrooge DB optimization layer.
  • MySQL High Availability Solutions by Lenz Grimmer, MySQL Community Relations Team at Sun Microsystems.
  • Distributed version control systems, also by Lenz Grimmer.

Some of the talks are summarized based on the full description of what was published in the Sapo Codebits 2009 web site.

http://codebits.eu/

http://stackoverflow.carsonified.com/

Cycle Ride to Höchst

Standard

Today was a day of adventure. We set with our bikes at 10.30h on the train to Dieburg and then cycled almost to Höchst im Odenwald. We did around 45-50km, so I’m completely wracked, and then took the train back. A very nice cycle ride all together. Should do it more often. As I was pedaling up the hills I thought about the other great adventure I have going on (I’ve quit my job and I’m starting a small company) and how climbing the hills can be compared to that. After each hill there’s always a downhill but there’s also, most likely, another hill. So enjoy the path.

P1160031

P1160054

Phil's iPhone

WordPress Media Buttons

Standard


If you know WordPress, you know it is a great publishing platform. For a particular plugin I wanted to build I started looking at how to add one of those little icons you have access while writing a post, e.g. ‘Add an Image’, etc.

I was looking at how other plugins do this and found this code:


function wp_myplugin_media_button() {
$context = __('Add media: %s');
$wp_myplugin_media_button_image = '/path/media_button.gif';
$wp_myplugin_media_button = '
".' %s';
return sprintf($context, $wp_myplugin_media_button);
}
add_filter('media_buttons_context', 'wp_myplugin_media_button');

But when I tried this in my plugin something weird happened. If both my plugin and the one from where I took this code were active, then only the button from the other plugin would appear. If I disabled the second one then it worked. Why, oh why? After struggling a bit I found the answer.

The way the function is receiving the context is not correct. Both functions are asking for the default “context” (this is the media buttons themselves) and then adding something to it. The correct way to receive the context is to have it as an argument of the function. In that way it can be updated without a problem. Example follows:


function wp_myplugin_media_button($context) {
$wp_myplugin_media_button_image = '/path/media_button.gif';
$wp_myplugin_media_button = '
".' %s';
return sprintf($context, $wp_myplugin_media_button);
}
add_filter('media_buttons_context', 'wp_myplugin_media_button');

Update: if you want to add the button to the end of the media button list just append the %s first, e.g.:


function wp_myplugin_media_button($context) {
$wp_myplugin_media_button_image = '/path/media_button.gif';
$wp_myplugin_media_button = ' %s' . '
";
return sprintf($context, $wp_myplugin_media_button);
}
add_filter('media_buttons_context', 'wp_myplugin_media_button');

Hope it helps someone. Cheers.