Wednesday January 7, 2009

2009: Distributed Version Control

2009 will be interesting. In this series of posts, I publish some thoughts/wishes about technological improvements in 2009. Previous entries: Really Rich Internet Applications, Easy JavaScript for Everyone, Databases and Persistence.

Couple years back, I thought CVS was ok. Nowadays, I think it was crap and I am happy that I don’t have to use it anymore. Instead I use Subversion, which I thought SVN was ok. After watching Linus’ talk about DVCS and Git[2] and using it for SproutCore, I am sure that SVN days are counted, too. My bet is on Git, because it is already well established among open-source projects through github. Mercurial is nice, as is provides an SVN interface.

Note: I heard a couple times people telling that Git only works on Linux and Macs. Don’t believe that[3].

[1] Two DVCS contenders:Git, Mercurial
[2] Linus Torvalds on git
[3] GIT on Windows

Posted on Jan 7, 2009 at 06:00 (MET) | Permalink | 1 comment

Tuesday January 6, 2009

2009: Databases and Persistence

2009 will be interesting. In this series of posts, I publish some thoughts/wishes about technological improvements in 2009. Previous entries: Really Rich Internet Applications, Easy JavaScript for Everyone.

Before I go on, let me state: Relational Databases will continue to stay as the backbone of persistence.

BUT: Non-relational databases will become more popular this year. Examples include document oriented data stores[1] or as graphs databases[2]. Also, it will become more popular to split storage and search. This will allow more flexibility and search performance. E.g. store your data in different data stores, and keep a local index/copy for searching[3].

[1] Couch DB
[2] Neo DB
[3] Read this blog (and comments) for a very nice overview.

Posted on Jan 6, 2009 at 08:11 (MET) | Permalink | 1 comment

Monday January 5, 2009

2009: Easy JavaScript for Everyone

2009 will be interesting. In this series of posts, I publish some thoughts/wishes about technological improvements in 2009. Previous entry: 2009: Really Rich Internet Applications.

For classic websites, jQuery has made the JavaScript development somewhat easy. Especially, if things like accessibility, graceful degradation and progressive enhancement are high on your priority list (which they really should be!).

One key success factor for broader adoption will be, whether the jQuery development team integrates/consolidates the excellent community plugins[1] into the main releases[2]. This will make the handling of the plugins hopefully easier and will make jQuery look better in feature comparisons.

[1] Treeview, Menu, …
[2] jQuery, jQuery UI

Posted on Jan 5, 2009 at 09:01 (MET) | Permalink | 1 comment

Saturday January 3, 2009

Android vs. IPhone

Via mobile-facts.com I found this nice Mac/PC-style comic about Android and IPhone:

(Source: Joy Of Tech)

Posted on Jan 3, 2009 at 20:42 (MET) | Permalink | Add comment

Friday January 2, 2009

2009: Really Rich Internet Applications

2009 will be interesting. In this series of posts, I publish some thoughts/wishes about technological improvements in 2009.

The development of browser-based applications with HTML(5), JavaScript, CSS, which run on PCs, Netbooks, Gaming Consoles and Mobiles will become increasingly popular. Basis for this will be improved browser performance[1], better JavaScript libraries for desktop-like application development[2], and extended browsers, which allow access to OS functions (like local file system, background threads, location information, etc.)[3].

[1] Chrome, Firefox 3.1
[2] SproutCore, Cappuccino
[3] Google Gears, Phonegap, AIR

Posted on Jan 2, 2009 at 08:33 (MET) | Permalink | 2 comments

Thursday January 1, 2009

Welcome, 2009!

I wish everybody a Happy New Year!

Happy New Year!

(Photo by Michael Sutter)

2008 has been really great: I spent 6 weeks in Singapore (4 in Feburary + 2 in July) to help building a development team, got married with Petra, Emil was born. I can’t get much better! :)

At work, things became increasingly interesting, when I started working on HTML-based UI development. 10 years after I started my career in an internet agency hacking HTML and JavaScript for Netscape 3 and IE 3, things have improved a lot.

I am very excited about what 2009 has in store.

Posted on Jan 1, 2009 at 17:33 (MET) | Permalink | Add comment

Wednesday December 17, 2008

Confluence Resizable Navigation Tree

What bugged me about Confluence a long time, was the navigation in big wiki spaces. A huge step forward is provided by the page tree navigation, which displays a tree of pages on every page. However, I wasn’t satisfied by that: In deeply nested page structures or with long page titles, the page tree either eats up a lot of space, or the page title have line breaks, which makes the page tree losing its clearness.

Ideally, the area which displays the page tree, was resizable and would not break the page titles in multiple lines. As Confluence includes jQuery out-of-the box, and me being a jQuery fan, I used this for practicing my jQuery skill. :-)

This is a screenshot of the resizable navigation tree:

Resizable Page Tree Navigation

In case you want to try it out, follow the page tree navigation documentation provided by Atlassian. The only difference: In step 3, where you modify the page layout, paste my code:

#if ($action.isPrintableVersion() == false)
<script src="/includes/js/jquery/jquery.ui-1.5a/jquery.js"></script>
<script src="/includes/js/jquery/jquery.ui-1.5a/jquery.dimensions.js"></script>
<script src="/includes/js/jquery/jquery.ui-1.5a/ui.mouse.js"></script>
<script src="/includes/js/jquery/jquery.ui-1.5a/ui.resizable.js"></script>

<style>
.spacetree * ul{
  padding-left:0px;
  margin-left: 0px;
}
.spacetree * li{
  margin-left: 5px;
  margin-right: 5px;
  padding-left:5px;
}
div.spacetree {
  overflow: hidden;
}
.spacetree * li a {
  white-space:nowrap;
}
.spacetree * li {
  white-space:nowrap;
}
.ui-resizable-handle.ui-resizable-e {
  background-color: #DDDDDD !important;
  width: 2px !important;
}
div.resizable {
  overflow: hidden;
  min-height: 400px;
}
</style>

<script>
AJS.toInit(function () {
  var setNavHeight = function() {
    jQuery("div.resizable").height(jQuery("td.treenav").height()-10);
  };
  jQuery("div.resizable").resizable({
    handles: "e",
    resize: setNavHeight
  });
  setNavHeight();

  jQuery(".wiki-content img[title]").each(function(index, domElement) {
    jQuery(domElement).after("<br/><b>Figure: " + jQuery(domElement).attr("title") + "<b>");
  })
});
</script>

<table cellspacing="2">
<tr>
<td valign="top" align="left" bgcolor="#F9F9F9" class="noprint treenav">
<div class="resizable" style="padding: 5px;">
<div class="tabletitle">Table of Contents</div>
<div class="spacetree">
#includePage($helper.spaceKey "TreeNavigation")
</div>
</div>
</td>
<td valign="top" align="left" class="pagecontent" style="padding: 5px">
<div class="wiki-content">
$body
</div>
</td>
</tr>
</table>
#else
<div class="wiki-content">
    $body
</div>
#end

Remaining issue IMO is to store the size of the page tree in a cookie, so that the user doesn’t have resize the page tree on every page. Unfortunately, as Confluence does not provide the jQuery Cookie library, it needs to be installed manually, and i decided to leave this out for now.

Hope this helps.

Update: Make sure that the script tags at the beginning actually match the context root of your confluence installation. The code above assumes that Confluence is installed at ‘/’. If it is installed at ‘/confluence/’ the script tags have to be changed to:

<script src="/confluence/includes/js/jquery/jquery.ui-1.5a/jquery.js"></script>
<script src="/confluence/includes/js/jquery/jquery.ui-1.5a/jquery.dimensions.js"></script>
<script src="/confluence/includes/js/jquery/jquery.ui-1.5a/ui.mouse.js"></script>
<script src="/confluence/includes/js/jquery/jquery.ui-1.5a/ui.resizable.js"></script>

Posted on Dec 17, 2008 at 21:08 (MET) | Permalink | 15 comments

Monday December 15, 2008

Welcome to the wonderful world of JavaScript™

I have had a cold the last couple days (incl. the weekend), so I took the time to learn more about JavaScript. Via Mike Pence, I found out about a couple really good training videos by Douglas Crockford, who is JavaScript Architect at Yahoo! and is also known as inventor of JSON. If you ever plan to do serious JavaScript coding, be sure to check them out:

For the record: This blog’s title is a quoted from Charles Jolley (creator of SproutCore).

Posted on Dec 15, 2008 at 19:03 (MET) | Permalink | Add comment

Saturday October 18, 2008

Open Source (Business) Model

Greg has written a good write up about the recent misunderstanding of the open source model (Spring, ExtJS).

Quote:

But those of us who work in open source, must not forget that freedom is the at core of our model and that we must grant those freedoms on a non-discrimanatory basis.

+1

Posted on Oct 18, 2008 at 15:36 (MET) | Permalink | Add comment

Sunday October 12, 2008

Spring Good News and Spring 3.0 in SVN

After a lot of feedback from the community (including myself), SpringSource decided to tune their maintenance policy. Although we are not at the original status with the maintenance releases, I am satisfied that maintenance releases will be available for each major version until the next major version is out.

Also, Rod’s clear statement about Spring’s license makes me a little bit more confident about my engagement with the Spring community:

Let me take this opportunity once again to guarantee that Spring will remain open source for the community, under the current (Apache) license. Period.

Also, it seems that at least parts of Spring 3 are available in a public repository. According to Matt it is available here: https://src.springframework.org/svn/spring-framework/trunk/. I didn’t find much code there, but Jürgen pointed out that they are behind schedule. So let’s keep our fingers crossed.

Posted on Oct 12, 2008 at 14:38 (MET) | Permalink | 3 comments

Next Posts Previous Posts