Career advice 4 - Knowledge management

It is my opinion, that knowledge management is very important in the tech sector. For companies it’s immediately clear why. But it also makes sense for developers. Being able to look up knowledge and also specific solutions in your personal repository will make you a faster and better developer. My knowledge management includes the following items: Solutions to problems I had. Somehow the same problems/challenges seem to pop up every now and then. Working code for common problems. Documentation, books, standard documents, research papers. My own descriptions of technologies (applying the old trick that you understand stuff better after describing it yourself). Description of applications I have worked with, including solutions to problems. Links. Any other knowledge I want to keep. This is not necessarily tech related. For example I follow a few countries more closely than others (Switzerland, Japan, Peru) and put news of those countries into my repository as well. And my diary is also in the same database. For most of my knowledge management I now use DEVONthink Pro. Before that I used a Wiki. And as far as I know Roger uses his blog as a knowledge repository. For managing my links I use del.icio.us. I also put mails into my knowledge database. Before using DEVONthink Pro I just put them into some special folders in my mail program. This mails include mainly good tips from mailing lists. If your company has some knowledge repository your want to participate in that as well. And if your company doesn't have anything like that yet, lobby for something. At namics it's a Notes database with articles filed under topics, at local.ch we have a Wiki. Both approaches work well. At first sight it may look like you don't profit from participating in that repository. It looks as if only the company takes value out of it even to the extent that you can be replaced a lot easier if you document your knowledge. Many people I know actually have that opinion. For a variety of reasons I disagree very strongly with that assessment. Most important is that you will never be able to put all your knowledge into that database no matter how hard you try. Most of your value comes from the experience anyway. So while you do spread knowledge and therefore make yourself a bit easier to replace, at the same time you show to your coworkers and bosses how much you really know. There are additional advantages which I will explain below. Say you document your knowledge about some obscure CSS implementation bug and put it into the database. You will get noticed as a CSS expert. So next time somebody has some CSS bug that needs debugging it's quite likely that he will contact you. We are talking job security here. Or say you have 300 articles about that content management system that your company uses extensively. Even that personal manager who knows nothing about technology will see that the company won't be able to replace you without problems. Again, it's about job security. A job is a lot easier to get if you have recommendations by coworkers who already work at the given company. I've also received mails by friends asking me about a person I knew from previous jobs or from school. Positive recommendations are easier to get if people know you from the knowledge repository. For example at namics I often got help requests from people at the German offices even though I didn't know them personally. Reason: they saw my name connected to that topic in the knowledge database. I'm sure that some of those people would put in a word for me should I try to get a job at their new work. Sometimes your articles may lead to a discussion where other people propose better solutions, other workarounds, other products or whatever. So you learn as well. And to me it happened often that when writing a short note I would research a point for a few additional minutes. And sometimes during that short research I learned a lot of additional things. The net result of contributing to the company knowledge repository is therefore that you make yourself seen and respected and that you learn more. And you help your colleagues which in itself is a good thing. Quick action for today: do yourself a favour and think a bit about how you want to manage your knowledge.

March 28, 2006 · Patrice Neff

Career advice 3 - Write & Publish

In my opinion a central point of improving the likelihood of getting a job is making yourself known. Show the world and thus also your future employers what you know. There are a few ways to do that. You can contribute in mailing lists, newsgroups or forums. For some time I was very active in some German Visual Basic newsgroups. And I actually got quite a few job offers (permanent and freelancing) in those days. But that was still during the apprenticeship so I didn’t accept them. There is probably some list for just about any topic you might be interested in. If for some reason there isn’t anything, yet, you can always create a mailing list yourself (or a forum though I have a strong dislike for forums). Having your own Web site also helps. This can be a list of articles you wrote, you can publish software there (more on that in a future article), put on your CV (though I personally have not published it because it contains private information) and also publish private information as well. Today a weblog is often the easiest and most logical solution for that. Personally, I use both. I have traditional Web site with long term stuff, such as software I published, and my weblog where I nowadays publish all of my stuff. It’s actually possible that one day my weblog will replace my Web site. On that Web site of yours write about your experience with technologies, report proudly when you found some bug that you were able to fix, publish learnings, recommend tech books you like, etc. There is endless content just waiting for you to write it. And if you decide to also write about other topics, that’s fine. On my weblog I write about a lot of other stuff as well (politics, Peru, Japan, Switzerland and sometimes a bit of private stuff). That Web site will serve you nicely when applying for a job. Put the Web site URL prominently into your CV and your future employer can find out a lot about how much you really know and who you are. It gives you a lot more credibility when the company can read details about actual problems you have solved in C++ than when you just write “have worked with C++ for two major projects” into your CV. Make sure that your Web site doesn’t come after you. For example there is at least on blogger in Switzerland to whom I’d be reluctant to give a job because of his weblog. He publishes a lot of things that lead me to conclude that his knowledge in the topic he writes about may actually be good, but that he is very arrogant about it. I don’t like to work with arrogant people and try to prevent it from showing up in my behaviour. And I’m sure people will also call me arrogant for writing this. Anyway, let me conclude with saying that only people who know you will consider giving you a job. And by making yourself known to a wide audience you may actually get job offers instead of having to run after a job yourself. And what’s better than that?

March 27, 2006 · Patrice Neff

Intranet Diego Thomson

The Diego Thomson now has its very own Intranet. Sort of.

March 27, 2006 · Patrice Neff

freeflux.net and the Swiss feed directory

Chregu follows Antonio’s lead (see monblog.ch and the Swiss feed directory) and now also provides an OPML feed with the active blogs on freeflux.net. This OPML feed is automatically imported to the blog list once a day. Thank you Chregu! In Chregu’s feed all blogs with 10 posts or more and at least one post in the past 30 days are included. My original call to arms still holds and I will cite it here: ...

March 25, 2006 · Patrice Neff

Translating Web applications for the Swiss market

When I create a new Web application I usually try to implement translation right from the start. For example as the Swiss blogosphere has four significant languages, I translated both the blog list and the Swiss weblog statistics. The list is available in English, German and French (thanks to Jérôme for the French translation!) and the Stats are available in German and English so far. I’d like both applications to be translated into more languages. And potentially other future applications as well. So I’m proposing a simple small “project”: a contact point for translators. I want to collect some addresses of people who are willing to provide translations for free - for free applications of course. This would be used only for projects in the Swiss blogosphere (blogug.ch for example or swissblogs.com once that rock starts rolling again). If you are willing and able to provide translations between German, English, Italian or French (pick two or more ;-) please contact me with a list of your languages and I’ll note you. I’ll just keep you in my personal address book, so your name and address won’t be made public. And I won’t spam you, honest! If you need a translation, also contact me and I will forward your project to everyone who has announced willingness to translate between the required languages. There is no commitment for the translators. So they can decide every time if they have time for that translation or not. That’s basically a braindump of an idea I just had. So what do you think? Is the idea sensible or complete rubbish?

March 25, 2006 · Patrice Neff

Blog list now allows entries without feed URL

Jan Zuppinger contacted me today about a problem they had with the Swiss weblog directory. For a weblog to be nominated for the Swiss Blog Awards it has to be listed in the blog directory. So we currently get many new additions to the list. Great! But one problem surfaced. There are weblogs that don’t have an XML feed (RSS or Atom). But the feed URL was obligatory in the list and I even actively deleted submissions without feed URLs. After all, the list is mainly for the aggregators. Or is it? I currently know of the following services consuming the provided OPML feed: ...

March 25, 2006 · Patrice Neff

Career advice 2 - Learn, read, learn, read, ...

(Nur auf englisch damit du den letzten Tipp gleich umsetzen kannst). This advice should be pretty obvious. But I meet far too many people in this industry who don’t like to read. In my book (no pun intended) it’s pretty much impossible to survive in our business without the willingness to learn a lot. And there is no cheaper and better way to learn than reading. I’ve always loved reading and I’m a natural autodidact, so that was not a difficult lesson for me to learn. I actually prefer reading technologies from a good book to course lessons. One thing you really should learn is parsing a lot of text quickly for some keyword. Though I have that gift, I have no idea how you can learn that. You may want to buy one of the many speed-reading books or search the Web for some advice (look for speed reading). So, what might you want to read? There’s a lot of stuff out there that may help you. Of course, the obvious answer is reading books. I myself am a book addict. And when you want to learn a technology from the ground up a book is often the best way. Also when you have a problem at hand, O’Reilly Safari Bookshelf often comes in extremely handy (though more for big picture questions than specific error messages). Safari is also available as a site license for groups of five or more. You may want to lobby your boss about this. Unfortunately no pricing is published for the site license. Then there are application documentation, standards (I LOVE reading RFCs), weblogs, wikis, mailing lists and newsgroups. And of course there’s the Web as a whole. It includes many a gem that you really need just now for just your problem. Overcome your reluctance and start to love reading. It’s worth it.

March 24, 2006 · Patrice Neff

Be careful when cutting UTF-8 text

I just fixed a nasty problem on the two planets I run (one for namics and one for local.ch). The aggregator script would run forever without stopping. A bit of debugging showed, that the problem was about how UTF-8 character were handled (or rather weren’t handled). The script uses PHP’s DomDocument, more specifically it’s functions loadHTML and saveXML, to extract valid XML from the blog posts. That’s necessary because the posts are shortened and this shortening can lead to a completely invalid (X)HTML structure. Let alone all the rubbish content that many a software produces. Shortening the content was of course done with the PHP function substr. And that’s where the problem was. The relevant part of the text that caused problem was “steht nur auf Englisch zur Verfügung”. Translated to UTF-8 this becomes “steht nur auf Englisch zur Verf??gung”. To this string substr was applied and it produced “steht nur auf Englisch zur Verf?” - the second half of the UTF-8 character was cut off. If you know anything about UTF-8 you will go “ouch” here and smile about your knowledge and skip the following two paragraphs. If you don’t see the problem yet, let me enlighten you. UTF-8 is a Unicode encoding. So it can transport any of the characters defined in Unicode which is just about any character that you might ever want to use in today’s computing. It’s neat because for most of the content in European languages it requires just one byte per character (versus two bytes in UTF-16 for example). When a byte is in the ASCII range it’s displayed and all is well. But when the byte is outside of the ASCII range (which only knows about 128 characters and can be encoded in 7 bits per character as you probably know) this means that the following byte belongs to the same character. I’m sorry, I don’t really know how to explain that any better so let me just give you an example. The string Für becomes F??r in UTF-8. So the UTF-8 decoder would read the first byte, the letter F. That fits nicely into ASCII, so that byte is read and the decoder continues with the next character. It reads one byte which is ?. “Holy cow” you hear the decoder exclaim, “that’s not ASCII”. So the decoder has to read one additional byte and gets the ?. Reading those two characters, putting them together and calculating a bit, the decoder then knows that it has just read an ü. So do you already see the problem in the UTF-8 string “steht nur auf Englisch zur Verf?”? The decoder arrives at the last byte which is ?. It knows it has to read one more byte, but there are none. So somehow the PHP code in question decides to patiently wait until the string magically grows longer. The real problem though is of course the careless use of substr. You shouldn’t just cut UTF-8 characters in half. The problem can be solved with mb_substr, a substr function that is Unicode-aware. Just give it ‘utf-8’ as its fourth argument and the problem is solved. Update: It seems that the problem goes away automatically with newer libxml versions. On my server it’s 2.6.16, while Chregu uses 2.6.23 and can’t reproduce the problem. Thanks Chregu for digging into this.

March 24, 2006 · Patrice Neff

Nominations for the Swiss Weblog Awards

So, now we can nominate for the Swiss Weblog Awards. My current nominations are as follows: The Best of Swiss Blogs «Zum Runden Leder» - Funniest blog in Switzerland. Pendlerblog - Interesting, funny. Beobachtungen zur Medienkonvergenz - Good coverage of Gadget news. Though the gadget stuff now goes to neuerdings.com which I don't nominate because it's too young. namics Weblog - Jürg does a great job of putting good technical content on that blog. Rookie-Award Switzerland World Cup Blog - Good coverage of Swiss world cup preparation. Promises to become the most-read Swiss weblog in a few months. Beobachtungen zur Medienkonvergenz (again) cake baker - Innovative content about a new Rails-like PHP framework (how many are there of those anyway, something like 200?) Best Multimedia-Blog Photos from Ernscht Though I don't know if this already qualifies as multimedia blog. I like it because of the one-photo-a-day-at-9'oclock-diary I have to admit, that most of these nominations are friends of mine (Konvergenz, namics, Cakebaker and Ernscht). Should I change my nominations, I'll update this article here.

March 23, 2006 · Patrice Neff

Karrieretipp 1 - Lerne Englisch

(This article is also available in English). Vor einigen Tagen schrieb ich über den Arbeitsmarkt in der Schweiz und versprach einige Tipps, wie du deine Chancen verbessern kannst. Diese Tipps sind vor allem für Leute gedacht, welche momentan in der Lehre, Fachhochschule oder Uni studieren. Es ist klar, dass ich mit meinen bescheidenen Erfahrungen nicht sehr viel darüber weiss. Aber ich habe einige Ideen, welche ich kommunizieren werde. Ich hatte auch schon einigen Kontakt mit Praktikanten und kann die guten von den schlechten unterscheiden. Oder anderes gesagt: jene, welche ich einstellen würde, von denen, welchen ich unter keinen Umständen einen Job geben würde. Und hier kommt mein erster Tipp: Lerne Englisch. Sehr viel technische Dokumentation steht nur auf Englisch zur Verfügung. Vor allem für neue Technologien. So gibt es zum Beispiel meines Wissens kein deutsches Ruby on Rails Buch. Bücher sind allgemein ein gutes Beispiel. Die meisten deutschen Bücher wurden aus dem Englisch übersetzt und Monate nach dem Original veröffentlicht. Und die meisten Bücher werden nie übersetzt. Lerne also, Englisch zu lesen. Falls du bei der Entwicklung einer Software oder Technologie mitmachen möchtest, wirst du wahrscheinlich eine Mailingliste oder Newsgroup abonnieren. Auch diese sind meistens in Englisch. Und wo es auch eine Deutsche Liste gibt, ist die Englische Liste meistens besser. Also solltest du auch lernen, Englisch zu schreiben. Und schliesslich musst du wahrscheinlich auch ab und zu per Telefon mit Ausländern kommunizieren oder möchtest an einer Konferenz teilnehmen. Die Caron Workshops sind zum Beispiel aus der Schweiz gut zu erreichen. Lerne also auch Englisch zu sprechen und verstehen. Wie kannst du konkret anfangen, Englisch zu lernen? Die meisten Schweizer in meinem Alter haben bereits an der Schule Englisch gelernt. Die Grundlagen sind also vorhanden. Um die Lesekenntnisse zu verbessern, fange einfach an zu lesen. Schnapp dir am besten ein Buch, welches du bereits auf Deutsch gelesen hast. Ich habe aus genau dem Grund vor einigen Jahren John Grishams Bücher zu lesen begonnen. Auch kannst du beginnen, verschiedene Englische Weblogs oder Mailinglisten zu lesen. Und um das Verständnis zu verbessern, abonnierst du am besten Englische Podcasts.

March 20, 2006 · Patrice Neff