Tuesday January 6, 2009
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 |
Monday January 5, 2009
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 |
Friday January 2, 2009
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 |
Thursday January 1, 2009
I wish everybody a 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 |
Wednesday December 17, 2008
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:

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 |
Monday December 15, 2008
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 |