RescueTime knows how I spend my time

posted 11:06AM Jan 23, 2008 with tags cool macosx productivity rescuetime software by Lars Trieloff

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

As you might know, I am mildly obsessed about statistics, visualization and productivity. And this is exactly the mix that makes RescueTime so fascinating for me, RescueTime, marketed as "Time Management for Geeks" will analyze how much time you spend on your computer with what desktop or web applications and what websites. You can get a graph of the ten most used applications based on daily, weekly or monthly view. Additionally you are able to tag all applications and web sites in order to organize them into categories like work, personal, procrastination or according to activities like reading, writing, planning, etc. All in all a very helpful tool that tells me how I spend my time - and a website that has changed the way I work, even if I spend less then 7 minutes on most days on this website.

| Comments[4]

What is Sling?

posted 08:15PM Jan 08, 2008 with tags javascript jcr opensource osgi rest sling software by Lars Trieloff

I had a short e-mail exchange with Peter Svenson yesterday, who has some really interesting ideas on web development, Javascript and frameworks and wanted to introduce Sling to him. Unfortunately the Sling website is a bit terse on "big picture" introductions, so I though I share my introduction with my blog readers.
What is Sling? This is a fairly complex issue, because Sling combines many aspects. The main idea is that Sling is a web framework that uses a JCR container such as Apache Jackrabbit as repository. The interesting part here is JCR, which is a storage API that allows you to store nodes which can have child nodes and properties, so the best way is to imagine a JCR repository as a giant storage tree or as a file system on stereoids, as it supports typing, transactions, versioning, full-text-search, oberservation and so on. The main role of Sling is being a translator between the storage repository and the client application and this means representing the Nodes in the JCR tree (that have a path) as Resources (as in REST) that have a URI. ;:A resource can have different representations, for instance a blog can have the HTML representation (blog.html) and the Atom feed representation (blog.atom). Representations are not limited to the resource type, there could be another HTML representation, for example the archive page (blog.archive.html). Representations of a resource are generated on GET requests and there are two high-level ways to do it: Servlets (the classical, heavy-weight Java way) or Scripts and Templates. Among the script engines currently supported are Rhino (Javascript), Ruby, Velocity and Freemarker. Basically, there is a script file or servlet for each representation (in our example html.js, html.archive.js and atom.js could be imaginable). If you want to create a new resource type, e.g. blog entry, you just have to create a new folder and put the appropriately named scripts into this folder. Secondly, a resource can have different behaviors. Again, behaviours are implemented either via Servlets or Scripts. The default behavior is to create a node when posting content to a collection, replacing a node when sending a PUT to a resource and deleting a node when sending a DELETE request. You are, however able to override this default behavior by placing scripts into the right folder. These scripts could for instance validate comment contents before creating the node. This is basically where server side scripting comes into play.
Microjax is based on a clever default handling of certain requests. This means representing resources as JSON objects on GET request and processing JSON request entities for PUT and POST. Additionally, Sling and Microjax introduce two Javascript-based templating mechanisms. Sling comes with the built-in ESP, server-side templating mechanism that will allow you to mash up HTML with embedded Javascript that will be executed server-side, e.g.
<ul>
<% foreach (child in node.children) {
 %><a href="${child.path}"><%= child.properties.name %></a><%
} %>
</ul>
Microsling extends this pattern by introducing EST, which allows you to write the same script, which will then be transformed by the server into a proper Javascript with lots of document.write(...) expressions that can be executed on the client-side.

To sum it up: Take a look at Sling, it is an interesting way to build content-centric applications.

| Comments[3]

posted 01:46AM Feb 07, 2007 with tags cool docbook gnome inkscape macosx software techdoc by Lars Trieloff

Roller 3.0

posted 12:12AM Dec 04, 2006 with tags blogs roller software by Lars Trieloff

I've just updated weblogs.goshaky.com to Roller 3.0. Thanks to the new template system I had to revert to a more default stylesheet. Furthermore, the URLs have changed to a more convenient format, but this change should not be user-visible as everything is redirected.

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]

HPI Podcast Institute

posted 09:12PM Nov 06, 2006 with tags engineering hpi podcast software by Lars Trieloff

The HPI (Hasso Plattner Institute) where I studied until april of this year offers a cool news service to its students: The HPI Blog and Podcast. This podcasts allows students to follow the lecures offline by downloading lecure recordings to their iPods. Apparently this idea has been influenced by the Software Engineering Radio, Stanford on iTunes U and the SAP Network Podcasts.

This is not the first educational podcast from Germany (think of Prof. Oliver Vornberger's Algorithmen podcast), but definitely the first with lecures from high-profile speakers like Prof. Dr. Hasso Plattner.

| Comments[1]

Programming books and writing software

posted 09:27AM Jul 27, 2006 with tags development software softwarequality teamwork writing by Lars Trieloff

Signal vs. Noise, contains an interesting entry about the relation of Writing words vs. writing software. The basic idea of this post is that programming software is very similar to writing a book or a blog entry, because the most important aspect of writing is rewriting, constantly improving what you have done in order to achieve better quality. And also for software development, the ability to rewrite, or to refactor your code is most important for achieving great quality.

Of couse, there are more similarities: Writing and software development require a great deal of analysis of the problem, conceptionalization and abstraction. There are many different parties involved, the writer or developer, domain experts, editors, QA persons, testers and so on.

In order to achieve the best results, recognition of the importance of the teamplay of all involved parties is essential. After realizing the importance, proper means to optimize the teamplay are to be taken in order to make writing or software development an experience of productivity.

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.