Creating Web Products: Do's and Don'ts

posted 07:02PM May 02, 2008 with tags productmanagement tips by Lars Trieloff

Normally I do not use my blog as a linkdump, I have http://del.icio.us/trieloff, http://twitter.com/trieloff, http://www.friendfeed.com/trieloff and Mento for this, but today I am making an exception and the whole point of my post is read this blog post: Seven Do’s And Three Don’ts For Creating New Web Products. These tips are some essential rules every entrepreneur and product manager should learn by heart. You have to create value and find a way of sharing the created value with your customers (making profit) if you fail either of those goals, find a better idea.

Content Modeling for JCR

posted 09:39PM Jan 25, 2008 with tags fmc jcr modeling softwaredevelopment tips by Lars Trieloff

If you are just reading this weblog, you might have been missing my post on Content Modeling for Java Content Repository (JCR) at dev.day.com.

http://weblogs.goshaky.com/weblogs/lars/resource/jcrmodeling2.png

In this entry I propose an alternative to content modeling with CND and ad-hoc notations based on combining aspects of UML and Fundamental Modeling Concepts.

| Comments[1]

Count Characters, Words and Pages with a simple bookmarket

posted 03:11PM Jan 07, 2008 with tags bookmarklet javascript tips by Lars Trieloff

If you are writing texts online, you may come across forms that require a specific minimum or maximum number of pages, words or characters in a text field or textarea. The Count Words bookmarklet is designed to help you with meeting this requirement. As with all bookmarks, all you have to do is pulling the bookmarklet into your bookmarks bar, when you need it, click the bookmarklet and it will display how many characters, words and pages you have written for each individual text field or textarea.

For the curious: I've used Dead Edward's Packer to compress the bookmarklet, the original source code looks like this:

function f() {
  var D=document,i,f,j,e;
  
  function S(e) {
    if(!e.N) {
      var x=D.createElement("span");
      var s=x.style;
      s.color="#333333";
      s.border="1px solid #aaaaaa";
      s.background="#cccccc";
      s.font="10pt sans-serif";
      s.verticalAlign="top";
      //s.float="left";
      //s.clear="left";
      e.parentNode.insertBefore(x,e.nextSibling);
      function u() {
        x.innerHTML=e.value.split(" ").length + " words, " + e.value.length + " 
characters, " + (Math.floor(e.value.length / (1800 / 2))/2) + " pages";
      }
      u();
      e.onchange=u;
      e.onkeyup=u;
      e.oninput=u;
      e.N=x;
    } else {
      e.parentNode.removeChild(e.N);
      e.N=0;
    }
  }
  
  for(i=0;f=D.forms[i];++i) {
    for(j=0;e=f[j];++j)
      if(e.type=="text"||e.type=="password"||e.tagName.toLowerCase()=="textarea"
)
        S(e);
  }
}

f();

Living in a Multilingual World - Internationalization for Web 2.0

posted 04:03PM Nov 08, 2007 with tags berlin internationalization mindquarry opensource presentation tips translation web20 web20expo by Lars Trieloff

To my suprise I found out that someone posted my presentation slides on slideshare.net before I actually held the presentation. I usually post my slides only after the presentation to update them to reflect questions that came up in the Q&A part of the session, but at the Web 2.0 Expo in Berlin things seem to work a little bit differently.

The presentation went very well and we had a very interesting discussion at the end, so I would guess the awareness of the importance of internationalization in Web 2.0 is rising. One of the most interesting aspects brought up was: Is providing textual translations of a web application enough?. My take on this question is that providing a multi-language user-interface is only the first step in true internationalization, afterwards you have to go for localized content, design and business processes that respects the culture of your audience.

Finally, my slides are available at slideshare.net and an online version can be seen here (If you see nothing, it might have been filtered by your feed reader, so open this page in your browser.):

If you are at my presentation, please make sure to give feedback at feedback.berlin.web20expo.com. Thank you.

Elements of Collaboration: 74 patterns for collaboration success

posted 10:58AM Aug 03, 2007 with tags bestpractices collaboration creativity patterns productivity tips by Lars Trieloff

Yesterday I finished my latest article "Elements of Collaboration" that is a collection of 74 patterns for collaboration of knowledge workers. I've gathered tools, methods, social software and social behavior patterns related to creative collaboration and presented them as an periodic table of elements.

elements of collaboration

I hope this collection of tools and methods is a help for orientation in the vast area of collaboration and productivity for information workers.

| Comments[1]

The Information Worker's Value Chain

posted 05:47PM Mar 22, 2007 with tags collaboration gtd information tips by Lars Trieloff

Top 10 Reasons to upgrade to Eclipse 3.3 M5 right now

posted 02:18PM Feb 11, 2007 with tags eclipse java softwaredevelopment tips by Lars Trieloff

Eclipse's last milestone for the 3.3 release is out for two days, and these are my top-10 reasons to upgrade:
  1. SWT libraries automatically found (since M4) - this eases deployment of SWT applications dramatically. No longer setting java.library.path, just one single dependency, easily expressed as a Maven 2 dependency
  2. System tray support added on Mac OS X (since M1, somehow workable since M4 - your starting class has to be in package org.eclipse.swt) - Now there is real cross-platform support for tray icons, notification area icons or menubar items
  3. Code clean up on save (since M3) - makes it easy to adhere to coding conventions without much manual formatting
  4. Text drag and drop in text editors (since M5) - very useful for manual reording of code
  5. Advanced tooltips (since M4) - tooltips can contain more than text
  6. New DateTime control (since M3) - date and time entry with improved usability
  7. Mozilla Everywhere (since M5) - when you need a controlled web browser control and cannot rely on the operating system's default
  8. Improved completion in annotations (since M2) - good for users of libraries like DAX that use annotations.
  9. Working sets for the Project Explorer (since M2) - working set support for non-Java projects
  10. Apply Patch offers full context patch preview (since M2)
There are numerous other improvements in these five milestones, but these are the features I like most and that convice me to upgrade to Eclipse 3.3M5 and use SWT 3.3M5 and JFace 3.3M5 for desktop GUI development.

Eclipse Corner uses DocBook

posted 12:06PM Feb 09, 2007 with tags docbook eclipse tips by Lars Trieloff

Wayne Beaton describes how he uses DocBook-XSL customization layers to generate HTML version of the articles at Eclipse Corner. One article already using the DocBook setup is Unleashing the Power of Refactoring and it looks quite good. Wayne resumes:
Thus, while I quite hate fiddling around with XSL documents, the power that keeping the content separate from the presentation provides is appealing.

My Methodolgy of writing Documentation with Wikis

posted 11:40AM Feb 07, 2007 with tags mindquarry techdoc tips wiki by Lars Trieloff

Wikis are a hot topic in technical documentation. Adrian Sutton has some interesting remarks why he thinks, Wikis and user-contributed documentation do not lead to high-quality documentation: Creating Great Documentation:
First and foremost, if you're thinking about improving a product's documentation, read Kathy Sierra's How to get users to RTFM. Make sure your documentation covers each of the five types required: Reference Guide, Tutorial, Learning/Understanding, Cookbook/Recipe, Start Here.
Adrian says that Wikis tend to create mostly reference documentation. Additionally Wikis are not versioned with your products source code.

I would add that Wikis often lead to topic-oriented authoring, Norman Walsh has some interesting takes on the consequences of topic-oriented authoring: Good for reference, bad for tutorial, learning and understanding, bad for start here documentation.

Scott Abel points me to Tom Johnson's Using Wikis as Project Documentation Tools. His main complaints are:

Wiki wysiwig’s are primitive (technical documentation can have some complicated styles, with several levels of lists).
Once all the info is in the wiki, how do I generate a manual or online help? I don’t want to maintain two separate files.
I would agree to this complaints because Wikis are not the best tools for technical writing, they are websites that are easily editable, nothing more and nothing less. But there are reasonable arguments for using Wikis and user-contributed feedback for documentation:
I’m saying, let the technical writer use a wiki as his or her documentation base,” says Johnson. “Make sure all project members are familiar with the wiki’s location and procedures for editing it. Then, encourage the project team to comment, review, add, edit, and otherwise adjust the documentation through the life of the project. The writer can shape, stylize, make consistent, and organize the content to make it usable. Most likely the writer will write 75% of the content anyway, but it will be more informed and accurate.
Wikis and user-contributed generation are a way of generating feedback and an additional source of information of the technical writer. Another example are the user-contributed comments of the PHP documentation Adrian points to.

My methodology of creating technical documentation uses Wikis in two places:

  1. I plan and organize the documentation project using an issue tracking system and create tasks for every step in the documentation process
  2. I 'harvest' product development Wikis for information about the software I am documenting. This is the first use of Wikis - a source of information
  3. I create a content outline of the planned document in the Wiki and invite other team members to comment and correct the content outline. The Wiki here is a space for distributed brain-storming.
  4. I write the document using DocBook-XML, WYSIWYG-XML-editors and share the in-progress document and illustrations using a version control system. As I am using DocBook and Mindquarry's file sharing, concurrent editing of modular documents is easy.
  5. Reviewers and copy-editor use the issue tracking system to create comments and remarks to the documentation.
  6. After releasing the document, the issue tracking system is used to track comments and suggestions for improvements. As the Wiki keeps evolving I have a good starting point for a second revison of the document.

| Comments[3]

How to get Your Roller 3.0 Blogroll in OPML format

posted 09:44AM Dec 07, 2006 with tags blogs opml roller tips by Lars Trieloff

Roller always had the feature to output your blogroll as OPML. This list of bookmarks was helpful for migrating from Roller to another weblog service or to feed a feedreader that support OPML Reading Lists like Blogbridge or Straw. With these Reading Lists, the feed reader will automatically subscribe to all feeds listed in your blogroll.

Unfortunately, this fetaure is gone in Roller 3.0

Personally, I don't think we need OPML feeds in the URL structure. If somebody wants an OPML feed, he/she can add a page and generate OPML using models/macros.

Fortunately creating these macros is quite easy: In your Roller backend, go to Preferences >Templates, add a new page, called OPML and copy and paste following template code.

<?xml version="1.0" encoding="UTF-8"?>
<opml version="1.0">
<head>
    <title>Lars Trieloff's Bookmarks</title>
</head>
<body>
#set($rootFolder = $model.weblog.getBookmarkFolder("/"))
#foreach ($bookmark in $rootFolder.bookmarks)
   <outline 
     text="$bookmark.name" 
     type="rss" xmlUrl="$utils.escapeXML($bookmark.feedUrl)" 
    htmlUrl="$utils.escapeXML($bookmark.url)" />
#end
</body>
</opml>

After saving the template, the OPML file will be made available at the URL WeblogBaseURL/page/OPML.

Software Development Process Insights

posted 07:16PM Nov 30, 2006 with tags development software tips by Lars Trieloff

Having sensible planning, source control, and testing in your project is not enough to make a project an agile project, if you are an Agile Atheist.

Many source control systems offer a feature called "branching". It is actually a good idea to use this feature, because it allows you to have fine-grained source control for teams, workgroups and features. It is interesting to see that despite the obvious advantages of branching it is only seldomly used.

| Comments[2]

Creating a Block in Cocoon Trunk

posted 04:35PM Aug 29, 2006 with tags cocoon maven tips by Lars Trieloff

Maven 2 has a cool archetype system that allows you to get started fast by creating application skeletons with one single command, but in case of blocks for cocoon-2.2 (current development version) this command is hard to remember:
mvn archetype:create \
  -DarchetypeArtifactId=cocoon-22-archetype-block \
  -DartifactId=myartifact \
  -DgroupId=com.mycompany \
  -DarchetypeVersion=1.0.0-M4-SNAPSHOT \
  -DarchetypeGroupId=org.apache.cocoon

| Comments[1]

Who else wants to get rid of the default jEdit icons?

posted 09:26PM Aug 01, 2006 with tags gnome java jedit linux macosx tips by Lars Trieloff

jEdit is a great editor. It is free, runs on every platform, can be extended using plugins, can be scripted using macros, but the default set of icons is a shame. Java swing applications are known to look arkward and jEdit is no exception. But there are some simple steps of getting rid of the default look and feel.
  1. If you are using GNOME, you should download Java 1.6 Mustang beta, as it supports the new GTK Look and Feel which makes jEdit look more like a native GTK application. Windows users have no problems, Mac OS X users should follow the next instruction.
  2. If you are using Mac OS X: Start jEdit, open /Applications/jEdit/jEdit.app/Contents/Info.plist. This is an XML file, but you just need to find the line containing <string>org.gjt.sp.jedit.jEdit</string> and add following content below: <key>Properties</key> <dict> <key>com.apple.macos.useScreenMenuBar</key> <string>true</string> </dict>. Save the file and restart jEdit. Now the Menu bar will not be part of the main window any more, jEdit uses the Mac OS X menu bar like a proper Mac application.
  3. Download the icon set from this forum post and install it to the lib/ext folder of your Java runtime installation. For Mac OS X users, this is probably /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext/, Windows Users should look for C:\Program Files\Java and Linux users should ask their distribution where Java is installed.

The result is a jEdit that looks much more like the cool and powerful application it is.

| Comments[1]

The secret of optimzing your JRoller weblog for Google, del.icio.us and Firefox

posted 01:24PM Aug 01, 2006 with tags blogs delicious firefox google roller seo tips by Lars Trieloff

Roller is a great weblog software. This is the reason why JRoller and Goshaky Weblogs use this software and this is the reason why so many great bloggers are on JRoller. But the standard Roller templates get one thing wrong: They fail to set the correct title for individual weblog permalink pages.

Take for example the Bile Blog, which is one of the most popular blogs on JRoller. The title of the start page is "The Bile Blog", but if you turn to an individual entry's permalink page, you will see the title of this page, e.g. of Another googleturd is again "The Bile Blog". Why is this bad? The top-5 reasons are:

  1. Google cannot see the difference. The title of the page is important for Google's rankings and without a proper title, Google will not find out it is being bashed in Another googleturd, which means less visitors for the Bile Blog.
  2. Firefox cannot see the difference. Imagine you are opening three stories of the Bile Blog in tabs in your Firefox webbrowser. The title of all three tabs will be "The Bile Blog" and you have no chance to see the difference, e.g. if you would like to show your colleagues the latest Google-bashing
  3. del.icio.us bookmarks cannot see the difference: Many people are using the del.icio.us bookmarket to manage their bookmarklets. After clicking the bookmarklet and tagging the entry they are not reviewing the title, so their bookmark will be entitled "The Bile Blog", even if they are not bookmarking the whole blog, but a particular story. Take a search at del.icio.us for "The Bile Blog" and find out whether a link is pointing to the start page or an entry,
  4. It is not accessible. Most people do not care about making their site accessible, but most people with disabilities are actually using the internet. Setting the correct title helps them visting your weblog.
  5. You look like someone who is not able to customize the templates of his weblog system correctly, but with these instructions, it is no problem for nobody.

All you have to do is to login to your JRoller weblog. Click on Preferences, click on Theme, click on Customize (if you are not already using a customized theme), click on Templates and edit the Weblog or _decorator template. You need to find the text between <title> and </title> and paste following code:

#macro( showEntryTitle $entries)
  #foreach( $entry in $entries )
    #if ( $velocityCount == 1)
    $entry.title
    #end
    #if ( $velocityCount == 2)
    and more
    #end
  #end
#end

#if ($pageModel.weblogEntry)
  #set($entries = [$pageModel.weblogEntry])
  #showWebsiteTitle(): 
  #showEntryTitle( $entries )
#else
  #showWebsiteTitle()
#end

This will show the title of your current post on permalink pages and leave the start page unchanged. And, most important it will make Google, del.icio.us and Firefox users happy.

SVK, the SVN without the .svn

posted 09:00PM Jul 23, 2006 with tags keynote macosx opensource pages subversion svk tips by Lars Trieloff

Rich Bowen reports his problems with Keynote (Apple's presentation program) deleting his .svn directories (which are created and neccessary for the Subversion version control system and contained in all versioned directories to store metadata, repository information, temporary files and pristine copies of files). Keynote stores all documents as directories containing gzipped XML documents, thumbnails and so on, but it does not store or keep .svn directories. This problem is shared by the companion program Pages, which is an excellent word processor, but does not respect other people's .svn directories, too.

Because of this reason, and due to a certain degree of geekness that was not fulfilled by the more and more popular version control system Subversion (short SVN) which I use for all my project for more than two years, I switched to SVK, a distributed version control system built on top of SVN and written in Perl.

There are several nice things about SVK, e.g.

  • It allows to commit, even if you are offline
  • It has support for better branching and merging
  • it does not need .svn, .svk or any other meta-data directories
This last fact makes it the ideal choice for the geek who needs to share Keynote presentations or Pages documents using Subversion. It works by storing a directory-to-repository table in your home directory and a full or partial copy of the repository, which is an elegant, but unintuitive solution. Unfortunately there are some characteristics about SVK that make it not as easy to use as Subversion:
  • There are no graphical user interfaces available, so you should be familiar with the command line environment
  • Documentation in sparse and sometimes outdated
  • You have to sync your local repository ocassionally to the remote repository which means typing two additional commands
So Rich, if you would like to use your existing remote Subversion repository with Pages or Keynote, you should take a look at SVK.

Escape from Cubicle Nation

posted 09:55AM May 10, 2006 with tags business job tips by Lars Trieloff

After reading the article Open letter to CEOs, COOs, CIOs and CFOs across the corporate world, I've added Pamela Slim to my blogroll. Needless to note that this article is worth reading. (via Guy Kawasaki)
So now I want to help your employees leave and start their own business. Regain control of their life. Feel blood pumping in their veins and excitement in their chest as they wake up each day. I honestly wish that it were possible for them to feel that inside your company.
Big corporations have to adjust to a world where employees are no longer an asset, but contract partners with deals that require ongoing negotiation and maintanance.

Posting from del.icio.us to Roller

posted 10:05AM May 09, 2006 with tags blogs delicious tags tips by Lars Trieloff

I finally figured out how to configure del.icio.us, the social bookmarking service to post a daily batch of bookmarks to my Roller weblog:
  1. Create an account at del.icio.us
  2. Login to your account
  3. Click on 'settings'
  4. Click on 'Experimental'->'daily blog posting'
  5. Create a new job with any job name, use your Roller login name as 'out_name', your Roller password as 'out_pass', the XML-PRC-URL of your Roller installation as 'out_url', in case of weblogs.goshaky.com, the correct URL is http://weblogs.goshaky.com/weblogs/xmlrpc, enter the value '0' for 'out_cat_id' and 'out_time' (I've found no other values to work) and the ID of your weblog, e.g. 'lars' as 'out_blog_id'.
Now del.icio.us will post all links bookmarked at del.icio.us in the last 24 hours every day at midnight to your weblog. If you add some additional CSS to your weblog's template, you can customize the appearance of the blog posting.

Update, the URL has been changed from /xmlrpc to /roller-services/xmlrpc

| Comments[1]

Subversion for JEE Applications

posted 12:17PM May 05, 2006 with tags development java software subversion tips by Lars Trieloff

Swaminathan Radhakrishnan's article Configuration Management in Java EE Applications Using Subversion suggests to use Subversion and the JavaSVN API to create a versioned storage backend for Java Enterprise applications. One comment further suggests to use XStream in order to serialize Java objects to XML documents which would allow textual differencing. And with support of xmldiff4j, even XML differencing would be possible.

Tips for Startups

posted 03:27PM May 04, 2006 with tags business tips by Lars Trieloff

Two interesting readings for startup founders:
  • Paul Graham: The Hardest Lessons for Startups to Learn are Release Early, Keep Pumping out Features, Make Users Happy, Fear the Right Things, Commitment is a Self-Fulfilling Prophecy, There Is Always Room, Don't Get Your Hopes Up and Speed, not Money
  • Paul Kedrosky links to a presentation by Greg Gianforte. His eight rules for bootstrappers are: build your business on a legitimate, real-world value proposition, Initiate the critical sales learning process sooner, not later, Don't waste money; make it, Accelerate time-to-market and time-to-profitability, Be less likely to make big, fatal financial mistakes, Force yourself into unconventional thinking, Have more freedom and flexibility, Own much, if not all, of what you create

| Comments[1]

Tips for Wiki Implementors

posted 09:56AM Apr 20, 2006 with tags tips wiki by Lars Trieloff

The weblogs a little madness features a post: 10 Things I Hate About Wikis that discusses the shortcomings of most current Wiki software. Some points menitioned in this post are:
  • Wikis replacing documentation
  • Different Wiki syntax for different wikis
  • No semantic markup
  • Poor Navigation
  • Poor versioning support