<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-11557283</id><updated>2011-12-15T04:02:29.384+01:00</updated><title type='text'>No space like 0x20</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default?start-index=101&amp;max-results=100'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>117</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-11557283.post-2030489586672251557</id><published>2011-06-10T18:50:00.000+02:00</published><updated>2011-06-10T18:50:08.259+02:00</updated><title type='text'>Scan, OK = Betalt</title><content type='html'>Det slog mig den anden dag, da jeg var igang med at betale et indbetalingskort i min netbank at jeg da i den grad var træt af at indtaste alle de tal, der står i betalingslinien.&lt;br /&gt;&lt;br /&gt;Hvad om der på hvert indbetalingskort var printet en &lt;a href="http://da.wikipedia.org/wiki/QR_Code"&gt;QR-kode&lt;/a&gt;, man lige kunne aflæse med mobilen og igennem en mobil-app, få lagt indbetalingskortet ind i en indbakke i ens netbank. Så skal man bare vælge det, nu digitale kort, i netbanken og trykke på "betalt" og vupti... &amp;nbsp;betalt!!&lt;br /&gt;&lt;br /&gt;Ja SparNord, stjæl I bare ideen :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-2030489586672251557?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/2030489586672251557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=2030489586672251557' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/2030489586672251557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/2030489586672251557'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2011/06/scan-ok-betalt.html' title='Scan, OK = Betalt'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-3002690145421167700</id><published>2011-05-29T13:56:00.000+02:00</published><updated>2011-05-29T13:56:50.026+02:00</updated><title type='text'>Side Effects - part 1</title><content type='html'>In my last post I mentioned the concept of side effects as one of my "pet peeves".&lt;br /&gt;&lt;br /&gt;How othen have you implemented a method/function that does more than logically "task"?&lt;br /&gt;It might have been an update of a persistent entity which also, in same method, added an audit log entry to the audit log. Or perhaps the "create" method of the Order service, also sends an email to the customer.&lt;br /&gt;&lt;br /&gt;This is what I call side-effects, an effect of a task which has nothing really to do with the basic task at hand, in the above mentioned examples, update and creation of persistent entities.&lt;br /&gt;&lt;br /&gt;Its often quite easy to implement the logic in the same method as the task to which it is closely coupled but I think it is a rather bad design.&lt;br /&gt;In case of the Order service, how to differentiate creation of orders created by customers and e.g. system generated orders? Then you start to add booleans to method, signalling whether or not perform the side-effects and suddently you carry this information around from method to method.&lt;br /&gt;&lt;br /&gt;Side-effects has no place in base logic, and its ALL in the context...&lt;br /&gt;&lt;br /&gt;Part 2 : Side-effects and transactions&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-3002690145421167700?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/3002690145421167700/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=3002690145421167700' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/3002690145421167700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/3002690145421167700'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2011/05/side-effects-part-1.html' title='Side Effects - part 1'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-5150312340358520373</id><published>2011-05-19T09:47:00.000+02:00</published><updated>2011-05-19T09:47:52.819+02:00</updated><title type='text'>Classes er dead - long live interfaces</title><content type='html'>The above headline is a catchphrase used by &lt;a href="http://qi4j.org/"&gt;Qi4j&lt;/a&gt;. While classes are nowhere near dead, even in Qi4j, the Composite Oriented Programming paradigm Qi4j presents seems really promising.&lt;br /&gt;&lt;br /&gt;While I have only used Qi4j in my small "Hello World" kinda examples, I must say it just feels right - compositions of fragments, side-effects (a long time pet peeve of mine) and mixins IS the way of the future of programming and software design.&lt;br /&gt;&lt;br /&gt;Now I've been thinking about why Qi4j isn't very hyped or even mentioned in main-stream programming media's, and I think the fact that you have to more or less go "all-in" scares most. I mean, you can't mix Qi4j with a normal DAO kinda project, you HAVE to use their persistence framework and Unit-Of-Work setup. I feel the Composite part should have been separated from the UoW part, which would have given us a choice...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-5150312340358520373?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/5150312340358520373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=5150312340358520373' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/5150312340358520373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/5150312340358520373'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2011/05/classes-er-dead-long-live-interfaces.html' title='Classes er dead - long live interfaces'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-7158367453961763245</id><published>2011-04-09T23:28:00.000+02:00</published><updated>2011-04-09T23:28:52.994+02:00</updated><title type='text'>Ain't it the truth...</title><content type='html'>Programming is like sex, one mistake and you have to support it for the rest of your life ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-7158367453961763245?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/7158367453961763245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=7158367453961763245' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/7158367453961763245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/7158367453961763245'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2011/04/aint-it-truth.html' title='Ain&apos;t it the truth...'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-5982270664509536747</id><published>2011-03-24T13:24:00.000+01:00</published><updated>2011-03-24T13:24:03.746+01:00</updated><title type='text'>Gotta love it!</title><content type='html'>&lt;div&gt;Well - need I say anymore :-)&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; def __str__(self):&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return ', '.join(['%s=%s' % (key,value) for (key, value) in self.__dict__.items()])&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-5982270664509536747?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/5982270664509536747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=5982270664509536747' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/5982270664509536747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/5982270664509536747'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2011/03/gotta-love-it.html' title='Gotta love it!'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-2234549078711729433</id><published>2011-03-17T11:10:00.000+01:00</published><updated>2011-03-17T11:10:45.354+01:00</updated><title type='text'>Like forever</title><content type='html'>Wow - it's been like forever since I last wrote a blog entry.&lt;br /&gt;&lt;br /&gt;My life has taken a serious detour in the last couple of months and, well - I'm just recently getting back to &lt;a href="http://thinkexist.com/quotes/with/keyword/being_myself/"&gt;being myself&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Anyway - I've started on a new hobby project of mine, using Python, Google App Engine and GAE's Channel API - sometimes its like therapy if I manage to get into "the zone" :-) &lt;br /&gt;Hopefully it won't be to long before I have something to show about the above mentioned project.. till then..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-2234549078711729433?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/2234549078711729433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=2234549078711729433' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/2234549078711729433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/2234549078711729433'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2011/03/like-forever.html' title='Like forever'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-1742264465015679463</id><published>2010-07-19T19:12:00.000+02:00</published><updated>2010-07-19T19:12:22.308+02:00</updated><title type='text'>Torremolinos - well worth a visit</title><content type='html'>Hola,&lt;br /&gt;&lt;br /&gt;My family and I just returned from a 7 days trip to &lt;a href="http://www.andalucia.com/torremolinos/home.htm"&gt;Torremolinos&lt;/a&gt;, Costa del Sol in southern Spain. Danes used to flock to Costa del Sol in the sixties and seventies but not so much in the latest years.&lt;br /&gt;We stayed at a hotel called "&lt;a href="http://www.puentereal.com/"&gt;Puente Real&lt;/a&gt;" (Royal Bridge to the best of my limited spanish) which was very nice but you could tell it had seen the best years but still very clean and an excellent pool, well actually 3 pools including a childrens pool.&lt;br /&gt;&lt;br /&gt;The coast and especially the long beach promenade on which we strolled many times is clearly one of the best things about Torremolinos. It wasn't really crowded and many used it for exercising in the evenings (when the temperature fell a bit) by running or roller skating, we merely walked :-)&lt;br /&gt;&lt;br /&gt;One day we went to the centre of Torremolinos, to the pedestrian street called "&lt;a href="http://www.visitcostadelsol.com/content/view/379/213/"&gt;San Miguel&lt;/a&gt;" which is a must see, not only for shopping but also for the "vibe" of being in the old part of the town.&lt;br /&gt;&lt;br /&gt;Well, saturday and sunday many locals seemed to come to the beach and one thing that stroke me is how they park their cars.. In the curve in a round-about, up and down the streets though there were signs for no stopping and no parking. If both sides of the street were full of cars and there seemed to be enough space for other vehicles to pass they started to park besides the ones already parked in the outer lanes, leaving only one lane "open" for traffic. In Denmark they would all have been fined for illegal parking and perhaps even have their cars towed. Well, its a wonderfull world :-)&lt;br /&gt;&lt;br /&gt;Ohh yes - we visited "&lt;a href="http://www.thelittlegarden.net/"&gt;den lille have&lt;/a&gt;" (&lt;a href="http://www.thelittlegarden.net/"&gt;The little garden&lt;/a&gt; / &lt;a href="http://www.thelittlegarden.net/"&gt;El Pequeño Jardín&lt;/a&gt;) and I had the "Monster Burger" which I couldn't finish, this have never happened before and it really is "MONSTER" :-)&lt;br /&gt;&lt;br /&gt;I guess this is not the last time we visit Costa del Sol..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-1742264465015679463?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/1742264465015679463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=1742264465015679463' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/1742264465015679463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/1742264465015679463'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2010/07/torremolinos-well-worth-visit.html' title='Torremolinos - well worth a visit'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-7235353763845344805</id><published>2010-04-18T19:55:00.001+02:00</published><updated>2010-04-18T19:57:51.749+02:00</updated><title type='text'>Added english version</title><content type='html'>I finally got around to convert my newest project "&lt;a href="http://jeg-oensker-mig.appspot.com/"&gt;Jeg Ønsker Mig&lt;/a&gt;", an &lt;a href="http://my-wish.appspot.com/"&gt;online free wishlist&lt;/a&gt;, to english. Its called "&lt;a href="http://my-wish.appspot.com/"&gt;My Wish&lt;/a&gt;", primarily because someone ( dammit :-) ) had already taken my preferred name which was "I Wish", but what are you gonna do.&lt;br /&gt;&lt;br /&gt;Once again Stripes did the job as it has some pretty simple but darn workfull localization possibilities. I wrote a single "include" tag myself, which could include a whole file (HTML) based on the current locale, and a single function to also localize text in other tags e.g. &amp;nbsp;&amp;lt;my:jsptag title="function:message(request.locale, 'some.key')"&amp;gt;stuff&amp;lt;/my:jsptag&amp;gt; and such..&lt;br /&gt;&lt;br /&gt;Well - give it a spin if you please, and please report if you find a bug or request a feature.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-7235353763845344805?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/7235353763845344805/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=7235353763845344805' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/7235353763845344805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/7235353763845344805'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2010/04/added-english-version.html' title='Added english version'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-6871349502066527039</id><published>2010-04-06T10:41:00.000+02:00</published><updated>2010-04-06T10:41:21.326+02:00</updated><title type='text'>First release of "Jeg Ønsker Mig" on Google App Engine</title><content type='html'>Yesterday I finally deployed my first release, well BETA release, of "Jeg Ønsker Mig" on Google App Engine. It's a wishlist application in which you may add wishs, send unique links to recipients and such.&lt;br /&gt;&lt;br /&gt;Damn, it's easy to deploy new versions and to have more than one version of the application on GAE/j, so you may have a production version and a development version uploaded at the same time but accessible at different URL's.&lt;br /&gt;&lt;br /&gt;Please give it a try at : &lt;a href="http://jeg-oensker-mig.appspot.com/"&gt;http://jeg-oensker-mig.appspot.com/&lt;/a&gt; but bear in mind that its a beta release and content is subject to change at all times (including whatever wishlists you may have created).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-6871349502066527039?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/6871349502066527039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=6871349502066527039' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/6871349502066527039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/6871349502066527039'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2010/04/first-release-of-jeg-nsker-mig-on.html' title='First release of &quot;Jeg Ønsker Mig&quot; on Google App Engine'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-1625008826968094579</id><published>2010-03-27T20:02:00.000+01:00</published><updated>2010-03-27T20:02:01.366+01:00</updated><title type='text'>Extended errors tag for Stripes</title><content type='html'>If you ever need to have two or more event methods in a single Stripes ActionBean you can copy the ErrorsTag and add the following lines in the doStartTag method:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (getAction().equals(mainAction)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (getEvent() != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Configuration config = StripesFilter.getConfiguration();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ActionResolver resolver = config.getActionResolver();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String eventName = resolver.getEventName(mainBean.getClass(), mainBean.getContext());&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (getEvent().equals(eventName)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;errors = mainBean.getContext().getValidationErrors();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;errors = mainBean.getContext().getValidationErrors();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And add get/setEvent methods and add an attribute element to the TLD file and you're set to go.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ifn:errors action="path.to.actionbean" event="addObject"&gt;&lt;/ifn:errors&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;will ONLY display errors when action is "path.to.actionbean" AND event is "addObject". I've used this when having two forms on the same page associated with the same ActionBean (to avoid having to write an extra ActionBean bound to another action URI). It might be kinda anti-pattern but my two forms are close related but different data is validated using the @Validate( on="addObject" ) annotation etc. &amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;oohhh luv that Stripes :-)&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-1625008826968094579?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/1625008826968094579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=1625008826968094579' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/1625008826968094579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/1625008826968094579'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2010/03/extended-errors-tag-for-stripes.html' title='Extended errors tag for Stripes'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-156727066715687151</id><published>2010-03-21T20:07:00.000+01:00</published><updated>2010-03-21T20:07:21.351+01:00</updated><title type='text'>And the winner is Stripes</title><content type='html'>I've been working on a hobby project of mine and I needed an extremely light weight Java based web framework for the presentation part, and I chose Stripes (link: &lt;a href="http://www.stripesframework.org/"&gt;www.stripesframework.org&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;And boy am I glad I found Stripes. Stripes is darn simple, has an absolute minimal learning curve (I got started in about 15 mins) and I have yet to find a thing I dislike (other than the fact it is not a component based framework, but than again, this was one of the reasons why I chose Stripes in the first place).&lt;br /&gt;&lt;br /&gt;Let me give you an example - I hold an absolute minimal amount of data in the session (most is bound to the request as there is no knowing when a request will hit another cluster instance) but when a validation error occurs, Stripes will by default forward to the previous page. This is mighty fine if it wasnt for the fact than that page expected a specific object to be bound to that request, so most of my renderings failed. "Well - Stripes authors might have anticipated this" I thought and what do you know - they did - you can simply implement an interface (ValidationErrorHandler) and your ActionBean can do whatever before Stripes does the actual forward and I simply bound the necessary data (again) and vupti - page displayed correctly.&lt;br /&gt;&lt;br /&gt;AND there are no crappy XML configuration files - URL bindings are set using annotations and can include parameters (which will then be set as parameter on request) and much much more (I hope :-) )&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-156727066715687151?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/156727066715687151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=156727066715687151' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/156727066715687151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/156727066715687151'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2010/03/and-winner-is-stripes.html' title='And the winner is Stripes'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-8276592438674591919</id><published>2009-12-31T12:35:00.002+01:00</published><updated>2009-12-31T12:48:01.150+01:00</updated><title type='text'>Socialstaten</title><content type='html'>Jeg læste følgende på &lt;a href="http://www.180grader.dk/Politik/jeg-hader-den-socialdemokratiske-velfaerdsstat"&gt;180grader.dk&lt;/a&gt; idag.&lt;br /&gt;&lt;br /&gt;"Den nuværende stat er ikke en velfærdsstat men en socialstat. Forskellen er at i en velfærdsstat skabes der velfærd, mens der i en socialstat skabes sociale klienter."&lt;br /&gt;&lt;br /&gt;Kilde: &lt;a href="http://www.180grader.dk/Politik/jeg-hader-den-socialdemokratiske-velfaerdsstat#c6853"&gt;Afskaf skatten&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Jeg sidder faktisk selv lidt med samme følelse. Dels er jeg begyndt at gå mere op i politik som jeg er blevet ældre men også efter at jeg er blevet selvstændig.&lt;br /&gt;&lt;br /&gt;Jeg mener at levebrødspolitikeren burde afskaffes ved lov (vil aldrig ske, hvor hvem skal vedtage en sådan lov?? :-) ) og der burde være et loft på 10 år eller lign hvor man kan sidde i folketinget.. Ihvertfald bør der ske ET ELLER ANDET, for demokratiet virker ikke helt som det er nu. Se bare på det nyligt overstående kommune- og regionsvalg. Aldrig har det været lavet så mange rævekager, og jeg tror at mange stemmeberettigede har følt sig snydt efter valget, hvor politikere både skiftede parti og lavede aftaler med partier der ikke normalt ligger inden for samme politiske "område".&lt;br /&gt;&lt;br /&gt;Something is rotten in the state of Denmark (Shakespeare)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-8276592438674591919?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/8276592438674591919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=8276592438674591919' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/8276592438674591919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/8276592438674591919'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2009/12/socialstaten.html' title='Socialstaten'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-6468992595721378926</id><published>2009-12-28T20:28:00.002+01:00</published><updated>2009-12-28T20:37:46.594+01:00</updated><title type='text'>GWT</title><content type='html'>Well, as a holiday "project" I've been looking into GWT and the MVP (Model-View-Presenter) architecture. I didn't think much of GWT before I gave a try, but I have to admit I've become quite fond of it. I REALLY like the idea of writing (almost) standard Java even client-side. &lt;br /&gt;&lt;br /&gt;I had a bit of a problem in the beginning with the few panels and layouts and the horible HTML GWT generated, but the new 2.0 layouts and the fact that you can easily  write your own widgets and panels, it's somewhat simple to get it to generate standard and compliant (even beautiful) HTML.&lt;br /&gt;&lt;br /&gt;I already have a mini implementation of my &lt;a href="http://www.jeg-oensker-mig.dk/"&gt;wishlist&lt;/a&gt; (in Danish) in GWT... putting my expectations of a steep learning-curve to shame.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-6468992595721378926?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/6468992595721378926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=6468992595721378926' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/6468992595721378926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/6468992595721378926'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2009/12/gwt.html' title='GWT'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-3063821900657985910</id><published>2009-11-08T12:38:00.004+01:00</published><updated>2009-11-08T12:51:32.730+01:00</updated><title type='text'>Gachi - Query interface added</title><content type='html'>GAE/j has a built-in Query concept which I have extended into a Gachi Query interface through which all queries must be executed.&lt;br /&gt;&lt;br /&gt;At my very first test on the newly implemented interface I ran into a well known "feature" of GAE/j, the "can't operate on multiple entity groups in a single transaction" problem. This exception is thrown when you try to operate in more than one entity-group within a single transaction (as the text describes pretty well :-) ), but I simply just queried for all Wishlists (my example), which are all entity-roots, and then I did a DatastoreService.get(key) using the key returned from the query. "WTF!" I thought - "Can't I query multiple entity-roots? Then how will I list all Wishlists?".. This is infact quite tricky, but I've added a "keysOnly" switch to my Query interface, which will, if set, only work within a single entity-root, but if unset, you may Query mutiple entity-roots, but only see properties (as of now).. &lt;br /&gt;&lt;br /&gt;Next up - lazy load of ManyAssociation items (currently they are all instanciated when first accessed)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-3063821900657985910?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/3063821900657985910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=3063821900657985910' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/3063821900657985910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/3063821900657985910'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2009/11/gachi-query-interface-added.html' title='Gachi - Query interface added'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-7609806513709376878</id><published>2009-11-06T19:49:00.003+01:00</published><updated>2009-11-06T19:58:53.034+01:00</updated><title type='text'>Gachi - cascade deletes implemented</title><content type='html'>I've written a roadmap for Gachi and one of the biggest steps was to implement cascade deletes and it's DONE! (as in working :-) )&lt;br /&gt;&lt;br /&gt;Since Google App Engine's datastore is kinda hierarchical but then not really, you have to delete all child entities yourself, when you delete the "parent" entity. I'm really pleased with my implementation where I've introduced a meta-info concept where I, when deleting an entity, knows which child entities I must also delete.&lt;br /&gt;&lt;br /&gt;Next up - Query interface&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-7609806513709376878?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/7609806513709376878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=7609806513709376878' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/7609806513709376878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/7609806513709376878'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2009/11/gachi-cascade-deletes-implemented.html' title='Gachi - cascade deletes implemented'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-7137847106175434253</id><published>2009-11-01T09:10:00.002+01:00</published><updated>2009-11-01T09:26:23.283+01:00</updated><title type='text'>Gachi - first look</title><content type='html'>Well - as mentioned in previous blog entry I've written a tiny framework to make it easier to store (kinda) POJO's in Google App Engine for Java. This will try to explain what I've got running so far:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;@Test&lt;br /&gt;   public void testCreateWishlistAndAddRecipient() {&lt;br /&gt;       UnitOfWork uow = new GAEUnitOfWork();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;All work with entities are done in the scope of a unit of work (UnitOfWork) which is transactional and only for a single entity-group at a time, since GAE/J can only handle transactions within a single entity-group, its very important not to hide this fact from users.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;       Date created = new Date();&lt;br /&gt;&lt;br /&gt;       Wishlist wishlist = uow.newEntity(Wishlist.class);&lt;br /&gt;       wishlist.title().set("Wishlist for christmas 2009");&lt;br /&gt;       wishlist.comment().set("No soft presents");&lt;br /&gt;       wishlist.created().set(created);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;To create a new entity (in this case entity-group as there are no parents) you use "newEntity" which will return an instance of the class given as second argument. &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;       uow.complete();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;"uow.complete" will make all changes persistent using GAE low-level API.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;       uow = new GAEUnitOfWork();&lt;br /&gt;       wishlist = uow.get(wishlist.getEntityReference());&lt;br /&gt;       assertEquals("Wishlist for christmas 2009", wishlist.title().get());&lt;br /&gt;       assertEquals("No soft presents", wishlist.comment().get());&lt;br /&gt;       assertEquals(created, wishlist.created().get());&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Well - check to make sure all is persistent as expected...&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;       Recipient recipient1 = uow.newEntity(wishlist, Recipient.class);&lt;br /&gt;       recipient1.name().set("Test Person #1");&lt;br /&gt;       recipient1.email().set(new Email("testperson1@email.com"));&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In this example a Wishlist holds a ManyAssociation&lt;Recipient&gt; which is a collection of Recipient objects. The above creates a new Recipient, which will be stored as a child GAE Entity of the Wishlist Entity (not a Key reference) and therefore it's parent (wishlist) if given as argument in "newEntity(wishlist, Recipient.class) &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;       Recipient recipient2 = uow.newEntity(wishlist, Recipient.class);&lt;br /&gt;       recipient2.name().set("Test Person #2");&lt;br /&gt;       recipient2.email().set(new Email("testperson2@email.com"));&lt;br /&gt;&lt;br /&gt;       wishlist.recipients().add(recipient1);&lt;br /&gt;       wishlist.recipients().add(recipient2);&lt;br /&gt;&lt;br /&gt;       uow.complete();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Finally the newly created 2 Recipient objects are added to the "wishlist.recipients()" ManyAssociation (collection) and UnitOfWork is complete (all objects persistet)&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;       uow = new GAEUnitOfWork();&lt;br /&gt;       wishlist = uow.get(wishlist.getEntityReference());&lt;br /&gt;       ManyAssociation recipients = wishlist.recipients();&lt;br /&gt;       assertEquals(2, recipients.getCount());&lt;br /&gt;       assertEquals("Test Person #1", recipients.get(0).name().get());&lt;br /&gt;       assertEquals("testperson1@email.com", recipients.get(0).email().get().getEmail());&lt;br /&gt;       assertEquals("Test Person #2", recipients.get(1).name().get());&lt;br /&gt;       assertEquals("testperson2@email.com", recipients.get(1).email().get().getEmail());&lt;br /&gt;   }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;... and again tests to check all were persistet as expected.&lt;br /&gt;&lt;br /&gt;Next up - a  look under the hood where child objects are all lazy loaded.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-7137847106175434253?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/7137847106175434253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=7137847106175434253' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/7137847106175434253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/7137847106175434253'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2009/11/gachi-first-look.html' title='Gachi - first look'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-8405565254094392800</id><published>2009-10-31T17:51:00.002+01:00</published><updated>2009-10-31T18:01:17.669+01:00</updated><title type='text'>Gachi - "ORM" for Google App Engine</title><content type='html'>I've been working on a framework for Google App Engine, the Java version.&lt;br /&gt;&lt;br /&gt;Gachi as I've named it, is a tiny framework where I've taken some ideas from QI4J and hence domain driven development for storing entities (POJO's) in the Google App Engine Datastore using the low-level API.&lt;br /&gt;&lt;br /&gt;This is one of my testcases:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;   @Test&lt;br /&gt;   public void testCreateWishlistAndAddRecipient() {&lt;br /&gt;       UnitOfWork uow = new GAEUnitOfWork();&lt;br /&gt;&lt;br /&gt;       Date created = new Date();&lt;br /&gt;&lt;br /&gt;       Wishlist wishlist = uow.newEntity(Wishlist.class);&lt;br /&gt;       wishlist.title().set("Wishlist for christmas 2009");&lt;br /&gt;       wishlist.comment().set("No soft presents");&lt;br /&gt;       wishlist.created().set(created);&lt;br /&gt;&lt;br /&gt;       uow.complete();&lt;br /&gt;&lt;br /&gt;       uow = new GAEUnitOfWork();&lt;br /&gt;       wishlist = uow.get(wishlist.getEntityReference());&lt;br /&gt;       assertEquals("Wishlist for christmas 2009", wishlist.title().get());&lt;br /&gt;       assertEquals("No soft presents", wishlist.comment().get());&lt;br /&gt;       assertEquals(created, wishlist.created().get());&lt;br /&gt;&lt;br /&gt;       Recipient recipient1 = uow.newEntity(wishlist, Recipient.class);&lt;br /&gt;       recipient1.name().set("Test Person #1");&lt;br /&gt;       recipient1.email().set(new Email("testperson1@email.com"));&lt;br /&gt;&lt;br /&gt;       Recipient recipient2 = uow.newEntity(wishlist, Recipient.class);&lt;br /&gt;       recipient2.name().set("Test Person #2");&lt;br /&gt;       recipient2.email().set(new Email("testperson2@email.com"));&lt;br /&gt;&lt;br /&gt;       wishlist.recipients().add(recipient1);&lt;br /&gt;       wishlist.recipients().add(recipient2);&lt;br /&gt;&lt;br /&gt;       uow.complete();&lt;br /&gt;&lt;br /&gt;       uow = new GAEUnitOfWork();&lt;br /&gt;       wishlist = uow.get(wishlist.getEntityReference());&lt;br /&gt;       ManyAssociation&lt;recipient&gt; recipients = wishlist.recipients();&lt;br /&gt;       assertEquals(2, recipients.getCount());&lt;br /&gt;       assertEquals("Test Person #1", recipients.get(0).name().get());&lt;br /&gt;       assertEquals("testperson1@email.com", recipients.get(0).email().get().getEmail());&lt;br /&gt;       assertEquals("Test Person #2", recipients.get(1).name().get());&lt;br /&gt;       assertEquals("testperson2@email.com", recipients.get(1).email().get().getEmail());&lt;br /&gt;   }&lt;br /&gt;&lt;/recipient&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;... more to come&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-8405565254094392800?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/8405565254094392800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=8405565254094392800' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/8405565254094392800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/8405565254094392800'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2009/10/gachi-orm-for-google-app-engine.html' title='Gachi - &quot;ORM&quot; for Google App Engine'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-2798694740096320131</id><published>2009-05-29T21:16:00.004+02:00</published><updated>2009-05-29T21:32:17.809+02:00</updated><title type='text'>EU-politiks grimme ansigt</title><content type='html'>Det er ikke ofte jeg blogger om politik. Ikke fordi jeg ikke interesserer mig for politik, men jeg mener ikke at jeg nødvendigvis skal pådutte andre min mening i tide og utide, men idag vil jeg alligevel komme med et halvsurt opstød.&lt;br /&gt;&lt;br /&gt;I den tidlige TV-avis (mener jeg det var), var der et indslag omkring Europa-Parlementets "rejsecircus". Ifølge indslaget SKAL Europa-Parlamentet mødes 18 gange i Strassbourg og uendelige kasser med materiale og rigtigt mange mennesker skal flyttes disse 18 gange. Prisen? Ja - godt og vel 1,5 MILLIARDER kroner og lad os så slet ikke tænke på de miljømæssige omkostninger (hvor EU politikernes mange mange fly-rejser jo ikke just hjælper i forvejen)&lt;br /&gt;&lt;br /&gt;Hvorfor spørger du? Ja - tilsyneladende fordi det (på den ene eller anden måde) er lykkedes Frankrig at få dette skrevet ind i Lisabon traktaten.. Hva f... er nu det - hvordan i alverden kan det lykkedes Frankrig at få dette tilføjet EU's "grundlov" UDEN at de mange politikere man ellers hører i fjernsynet har brokket sig højlydt over dette?&lt;br /&gt;&lt;br /&gt;Husk at stemme søndag d. 7 juni - og lad os håbe at vi gøre bare en lille forskel (selv om en stemme kastet ned i dette EU maskineri ikke helt føles som at udøve sin demokratiske ret og pligt)&lt;br /&gt;&lt;br /&gt;jeg er rystet...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-2798694740096320131?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/2798694740096320131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=2798694740096320131' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/2798694740096320131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/2798694740096320131'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2009/05/eu-politiks-grimme-ansigt.html' title='EU-politiks grimme ansigt'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-7678784208068237552</id><published>2009-05-19T16:25:00.003+02:00</published><updated>2009-05-19T16:35:15.014+02:00</updated><title type='text'>Det digitale Danmark</title><content type='html'>Selv om der er sket meget i Danmark og rigtigt mange "services" fra det offentlige er blevet digitaliseret, så undrer det mig dog at indberetningen/udbetalingen af SP pengene fra ATP ikke kan foregå digital. Istedet sender ATP 2,9 millioner breve ud til folk, som så skal sende svar tilbage til ATP såfremt de ønsker at hæve deres SP penge i løbet af 2009. Dvs. i værste tilfælde (eller bedste for PostDanmark) skal der sendes 5,8 millioner breve af en pris på 5,50 Dkr hvilket er 31,9 millioner ALENE i forsendelsesomkostninger (worst case). Man kan allerede idag gå ind hos ATP og se ens SP opsparing - hvorfor ikke lave en knap "HÆV NU!" og sende pengene til personens nem-konto?  &lt;br /&gt;Ja det er en forunderlig verden vi lever i, men helt digital er den endnu ikke.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-7678784208068237552?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/7678784208068237552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=7678784208068237552' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/7678784208068237552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/7678784208068237552'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2009/05/det-digitale-danmark.html' title='Det digitale Danmark'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-1911856280685972563</id><published>2009-04-13T11:13:00.004+02:00</published><updated>2009-04-13T11:30:46.436+02:00</updated><title type='text'>Wicket on Google App Engine</title><content type='html'>Like many others I am using Wicket on Google App Engine re-writing one of my pet projects. Google App Engine does not allow for user applications to start new threads so in order to get Wicket working, you need to disable the ModificiationWatcher by setting the resource poll frequency to NULL. This has a huge disadvantage when you're in development mode, because you'd have to restart the servlet engine each and every time you make a change in one of your HTML or other resource files. &lt;br /&gt;Well - I dug into the Wicket internals and found out the ModificationWatcher was NOT meant to be plugable.. Yikes!.. Well I tried different approaches but found one that worked like a charm and it was dead simple:&lt;br /&gt;&lt;br /&gt;Create the "org.apache.wicket.util.watch" package in your project, add a Class called ModificationWatcher and make it a copy of the ModificationWatcher from the original Wicket sources. Remove all threading but keep the base logic in the "start(Duration pollFrequency)" method.&lt;br /&gt;&lt;br /&gt;Now override "newWebRequest" in your WebApplication class like this:&lt;br /&gt;&lt;br /&gt;    @Override&lt;br /&gt;    protected WebRequest newWebRequest(HttpServletRequest servletRequest) {&lt;br /&gt;        getResourceSettings().getResourceWatcher(true).start(getResourceSettings().getResourcePollFrequency());&lt;br /&gt;        return super.newWebRequest(servletRequest);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;and vupti you've got reload of resource files again, even on Google App Engine. Remember this is only for development, but I cant see any other ways of doing it. &lt;br /&gt;&lt;br /&gt;And to the wicket developers - please make the ModificationWathcer extendable someway.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-1911856280685972563?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/1911856280685972563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=1911856280685972563' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/1911856280685972563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/1911856280685972563'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2009/04/wicket-on-google-app-engine.html' title='Wicket on Google App Engine'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-1772862810222721133</id><published>2009-04-08T17:07:00.002+02:00</published><updated>2009-04-08T17:15:09.609+02:00</updated><title type='text'>Det har taget sin tid</title><content type='html'>... men jeg er kommet dertil hvor jeg næsten (også kun næsten) altid laver test-cases til mine klasser. Jeg laver dog meget sjældent test-first - jeg syntes ikke ens test-case skal være udslagsgiven for hvorledes jeg beslutter at implementere noget - jeg kan godt lide at have frihed til at udforske forskellige muligheder, og jeg vil derfor ofte skulle lave om i mine tests hvilket jeg syntes er unødvendigt.&lt;br /&gt;Det at implementere noget, lave en test og se at testen bliver "grøn" (jeg bruger JUnit fra Eclipse) er en stor fornøjelse.&lt;br /&gt;Jeg har ofte en test-case som f.eks. tester alle metoder i en klasse, og en integrationstest, der tester klassen sammenhænge med andre i kontekst så vidt det er muligt.&lt;br /&gt;Det næste jeg mangler er bare en "Continous Integration Test" server, hvor alle mine hyggeprojekter bliver bygget på.. "Mjaeh - måske senere :-)"&lt;br /&gt;&lt;br /&gt;Hygge&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-1772862810222721133?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/1772862810222721133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=1772862810222721133' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/1772862810222721133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/1772862810222721133'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2009/04/det-har-taget-sin-tid.html' title='Det har taget sin tid'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-1414783201250896009</id><published>2009-04-03T19:32:00.005+02:00</published><updated>2009-04-03T20:05:08.192+02:00</updated><title type='text'>Så har I mig tilbage ...</title><content type='html'>... som Kurt Thorsen sagde.&lt;br /&gt;&lt;br /&gt;Jeg er så småt begyndt at lege med &lt;a href="http://wicket.apache.org/"&gt;Wicket&lt;/a&gt; igen. Efter at have arbejdet med &lt;a href="http://tapestry.apache.org/"&gt;Tapestry&lt;/a&gt; for mange år siden, må jeg sige at jeg har fået en forkærlighed for komponentbaserede web frameworks.&lt;br /&gt;&lt;br /&gt;Jeg legede med JSF for et stykke tid siden, men jeg må sige at JSF på ingen måde føles så "rigtigt" som Wicket og Tapestry - dermed ikke sagt af JSF ikke har sine lyse punkter, f.eks. kan jeg godt lide tanken om "Render Kits" og det at man (måske mest i teorien) kan skifte præsentationen af JSF komponenterne ud, uden at skulle lave nogle eller mange kode-ændringer, men alligevel føltes JSF bare for "tungt". Det er faktisk svært at sætte ord på nøjagtigt hvorfor men igen, det at skrive sit eget komponent til JSF er bare væsentligt mere besværligt end at gøre det samme til Wicket (og Tapestry).&lt;br /&gt;&lt;br /&gt;Det der gør komponentbaseret web frameworks så interessante er netop det med at det er nemt at genbruge disse "komponenter". Med ren JSP eller andet template baseret præsentationslag, oplever man ofte at man implementerer det samme igen og igen - og så er der lige det med at hvis denne logik (om det så er i en JSP include, eller implementeret som JSP Tag), skal bruge noget data fra backenden, ja så skal den "Action" (for at bruge et Struts udtryk) som forwarder til præsentationssiden, vide dette på forhånd og sørge for at aggregere alt data, som alle Tags, ell. includes skal anvende, binde det i formen eller de rigtige request attributter, og SÅ give téten videre til siden. Med komponenter i en komponentbaseret verden, sørger de selv for evt. at hente data - man kan sige at man "uddelegerer" opgaven og komponenterne er selvstændige.&lt;br /&gt;&lt;br /&gt;Der er rigtigt mange årsager til at jeg går efter Wicket, men hvis man bli'r en smule varm om inderlårene når man tænker på Unit Tests, så bliver bekendtskabet med Wicket måske mere spændende end man havde håbet på - så knib nu benene sammen :-) :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: courier; font-size: 8px;"&gt;&lt;br /&gt;public class MyPageComponentsTest extends TestCase {&lt;br /&gt;&lt;br /&gt; private WicketTester tester;&lt;br /&gt;&lt;br /&gt; public void setUp() {&lt;br /&gt;   tester = new WicketTester();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void testMyPageComponents() {&lt;br /&gt;   WicketTester tester = new WicketTester();&lt;br /&gt;   tester.startPage(MyPage.class);&lt;br /&gt;&lt;br /&gt;   // assert rendered field components&lt;br /&gt;   tester.assertComponent("myForm:firstName", TextField.class);&lt;br /&gt;   tester.assertComponent("myForm:lastName", TextField.class);&lt;br /&gt;&lt;br /&gt;   // assert rendered label components&lt;br /&gt;   tester.assertLabel("myForm:firstNameLabel", "First Name");&lt;br /&gt;   tester.assertLabel("myForm:lastNameLabel", "Last Name");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void testOnClickAction() {&lt;br /&gt;   tester.startPage(MyPage.class);&lt;br /&gt;&lt;br /&gt;   // click link and render&lt;br /&gt;   tester.clickLink("nextPage");&lt;br /&gt;&lt;br /&gt;   tester.assertRenderedPage(NextPage.class);&lt;br /&gt;   tester.assertLabel("nextPageMessage", "Hello!");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ja - det er da nogle tests som IKKE er nemme at lave for JSP sider :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-1414783201250896009?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/1414783201250896009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=1414783201250896009' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/1414783201250896009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/1414783201250896009'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2009/04/sa-har-i-mig-tilbage.html' title='Så har I mig tilbage ...'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-3892735127152824230</id><published>2008-12-14T13:47:00.002+01:00</published><updated>2008-12-14T14:05:49.882+01:00</updated><title type='text'>I am sick and tired</title><content type='html'>... of both debian packages in different versions and Python installation crap issues.&lt;br /&gt;&lt;br /&gt;Please dont get the wrong idea - I've come to like Python and especially Django for minor web applications but I tried (with emphasis on TRIED) to install lxml in version 2 or above on my debian linux wmware image today but I had to give up after some hours of frustration. I LOVE apt and I do think its just plain simple and lovely, BUT when there is no pre-packaged .deb file for lxml in a version 2 or above for "Etch" I just dont know what to do.. I mean - I even installed GCC and wget'ed the source package but it wouldn't compile (can't remember the error). But I had to install GCC, libxml2-dev which is not too much, since I was trying to compile the lot, but why the hell did I have to compile it in the first place? I just wanted to use a simple python library for my project!&lt;br /&gt;And this lead me to my issues with python and the "site-packages" issues. When you move a python app from one location (server) to another - you actually have to move all installed libraries - and what happens if some app on the destination just happens to use another version (and needs another version) of the same library as you use?? Well - you probably have to either pack it with your app, but if it depends on some common c library you might find ourself in a tight spot, or you just have to hope if backwards compatible or you risk breaking an existing application.&lt;br /&gt;&lt;br /&gt;Argg - I might just be way too frustrated right now - bear with me...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-3892735127152824230?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/3892735127152824230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=3892735127152824230' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/3892735127152824230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/3892735127152824230'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2008/12/i-am-sick-and-tired.html' title='I am sick and tired'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-7064892492659982148</id><published>2008-12-11T18:38:00.002+01:00</published><updated>2008-12-11T18:47:23.909+01:00</updated><title type='text'>Hvad var det der fik Tornerose til at sove i 100 år?</title><content type='html'>Ja - man skulle tro at jeg nu vil komme ind på et godt gammeldags eventyr men ak, der er ikke meget eventyr over &lt;a href="http://www.fsf.org/blogs/community/5-reasons-to-avoid-iphone-3g"&gt;disse 5 årsager til at du bør undgå iPhone 3G&lt;/a&gt;!.&lt;br /&gt;&lt;br /&gt;Nu er det jo ikke engang noget jeg har skrevet, men noget som "Free Software Foundation" har skrevet men de fremhæver nøjagtigt de "problemer" jeg har med Apple og iPhone.&lt;br /&gt;&lt;br /&gt;Jeg kan godt lide den måde iPhone virker på og lige meget om man er for eller imod Apple så må man sige at de forstår sig på "design" og brugervenlighed som i grafisk brugervenlighed, men deres metoder og "vendor lockin" efterlader VIRKELIGT en del at ønske. &lt;br /&gt;&lt;br /&gt;Jeg venter stadigt med spænding på at G1 kommer til Danmark - eller Android Dev Phone 1 bliver muligt at købe her til landet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-7064892492659982148?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/7064892492659982148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=7064892492659982148' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/7064892492659982148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/7064892492659982148'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2008/12/hvad-var-det-der-fik-tornerose-til-at.html' title='Hvad var det der fik Tornerose til at sove i 100 år?'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-2413447136790130944</id><published>2008-11-02T18:54:00.003+01:00</published><updated>2008-11-02T19:00:47.521+01:00</updated><title type='text'>Online ønskeliste</title><content type='html'>Så er mit nye "pet project" endeligt kommet i luften i en version jeg selv syntes er ganske ok. Jeg har skrevet en online &lt;a href="http://www.jeg-oensker-mig.dk"&gt;ønskeliste&lt;/a&gt; der er, syntes jeg selv, lidt ud det sædvanlige.&lt;br /&gt;&lt;br /&gt;Man opretter en ønskelist, tilføjer de ønsker man har og tilknytter en eller flere modtagere. Disse modtagere vil modtage en email med et link til eens ønskeliste men hver modtager modtager deres eget unikke link, så man som indehaver af ønskeliste kan se hvem der har været inde og besøge ens &lt;a href="http://www.jeg-oensker-mig.dk"&gt;ønskeliste&lt;/a&gt;. Ikke nok med det, men man kan som modtager markere et ønske som "opfyldt" og vælge hvilke af de andre modtagere der må se ens markering - ved på den måde ikke bare at sende information til samtlige andre modtagere og muligvis opretteren/ejeren selv. Man kan selv bestemme hvem der må se hvad.  Naja, tag og prøv den : &lt;a href="http://jeg-oensker-mig.dk"&gt;Jeg ønsker mig&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-2413447136790130944?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/2413447136790130944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=2413447136790130944' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/2413447136790130944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/2413447136790130944'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2008/11/online-nskeliste.html' title='Online ønskeliste'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-3781032250640173153</id><published>2008-09-25T19:47:00.002+02:00</published><updated>2008-09-25T20:16:06.186+02:00</updated><title type='text'>Django er bare SÅ meget simplere</title><content type='html'>Som &lt;a href="http://lborupj.blogspot.com/2008/09/django-10-frigivet.html"&gt;tidligere nævnt&lt;/a&gt; så er &lt;a href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt; kommet i en version 1.0, men hvad er det der Django og hvorfor skulle man lige begynde at anvende det istedet for f.eks. PHP.&lt;br /&gt;&lt;br /&gt;Jo - det er egentligt ganske simpelt: Fordi det er et virkeligt godt web-framework udviklet i et sprog, der gør det nemt og behageligt at udvikle i.&lt;br /&gt;&lt;br /&gt;Der findes et hav af &lt;a href="http://www.djangobook.com/"&gt;tutorials&lt;/a&gt; og &lt;a href="http://docs.djangoproject.com/en/dev/"&gt;dokumentation&lt;/a&gt; om Django på nettet, men jeg vil lige ridse frameworket op i ganske kort form her, og håber at jeg får vakt din interesse for at se nærmere på det.&lt;br /&gt;&lt;br /&gt;Efter installation (ganske simpelt) af django er det behageligt nemt at få oprettet et projekt:&lt;br /&gt;&lt;br /&gt;&gt;&gt; django-admin.py startproject tutorial&lt;br /&gt;&lt;br /&gt;opretter et projekt efter en standard Django template indeholdende et management script (manage.py), projekt opsætning (settings.py), og en fil hvori man registrerer de URLs ens applikation udstiller (urls.py). Django har begreberne "Projekt" og "Applikation", hvor et projekt kan bestå af en eller flere applikationer.&lt;br /&gt;Ønsker man at oprette en applikation til ens projekt gør man følgende i projektet:&lt;br /&gt;&lt;br /&gt;&gt;&gt; ./manage.py startapp testapp&lt;br /&gt;&lt;br /&gt;og vupti har man en applikation i projektet indeholdende en fil til ens domæne model (models.py)  og ens controller (views.py).&lt;br /&gt;&lt;br /&gt;For at teste at det hele virker kan man lige starte den indbyggede mini-webserver:&lt;br /&gt;&lt;br /&gt;&gt;&gt; ./manage.py runserver 192.168.74.128:8000&lt;br /&gt;&lt;br /&gt;Ovenstående starter mini-webserveren til at lytte på IP addressen 192.168.74.128 på port 8000. Hvis man intet angiver startes serveren på localhost på port 8000.&lt;br /&gt;Ved at starte en browser og pege den på den ovenstående adresse bør man se noget ala&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;It worked!&lt;/h2&gt;   &lt;h2&gt;Congratulations on your first Django-powered page.&lt;/h2&gt;&lt;br /&gt;Og så er det ellers bare at gå igang med at udvikle ens applikation. &lt;br /&gt;&lt;br /&gt;TO BE CONTINUED...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-3781032250640173153?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/3781032250640173153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=3781032250640173153' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/3781032250640173153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/3781032250640173153'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2008/09/django-er-bare-s-meget-simplere.html' title='Django er bare SÅ meget simplere'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-6546188632646574809</id><published>2008-09-20T15:41:00.002+02:00</published><updated>2008-09-20T15:47:01.764+02:00</updated><title type='text'>Django 1.0 frigivet</title><content type='html'>Jeg har længe anvendt Django til mine forskellige "hygge" projekter, og nu (ja for lidt tid siden) kom Django i en officiel version 1.0.&lt;br /&gt;Der passer simpelthen som fod i hose, da jeg lige er gået igang med et nyt og spændende projekt, som jeg er lidt spændt på hvordan spinder an. Jeg har dog besluttet at "time-to-market" er vigtigere end "gold platet" funktionalitet osv. så jeg knokler når tiden er til det, bare på at få lavet en version 1, og få den online. Det er ikke noget ground-breaking nyt, men en bedre, syntes jeg selv, og simplere måde at gøre noget på som kunne gå hen og blive helt brugeligt - specielt her op mod jul :-)&lt;br /&gt;&lt;br /&gt;well - tilbage til "kodningen"..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-6546188632646574809?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/6546188632646574809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=6546188632646574809' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/6546188632646574809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/6546188632646574809'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2008/09/django-10-frigivet.html' title='Django 1.0 frigivet'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-7471650906906639328</id><published>2008-08-15T22:44:00.002+02:00</published><updated>2008-08-15T22:53:09.314+02:00</updated><title type='text'>RIB-IT</title><content type='html'>I forbindelse med "mogens kom forbi.." og TV2-Nords "julefest" til fordel for julemærkehjemmet i Hobro var familien og jeg en tur forbi Hobro havn iaftes.&lt;br /&gt;Vi havde egentligt planlagt at vi ville spise flæskesteg, kartofler og rødkål, altså en traditionel julemiddag midt på sommeren ;-),   på havnen men desværre var vi kun 4 blandt 1000 andre mennesker der havde fået den samme ide.&lt;br /&gt;Der var en helt usandsynligt laaaang kø, så vi fandt noget andet at spise.. Anyways, efter lidt mad, kom &lt;a href="http://www.rib-it.dk/"&gt;RIB både&lt;/a&gt; i vandet, og det var jeg SIMPELTHEN nødt til at prøve.. Hold da op for en fed tur. Det startede lidt stille, da vi lige skulle ud af havnen, men så skal jeg da også liige love for at der blev fyret op under de 2 x &lt;a href="http://www.suzukimarine.com/sr_07/df300/"&gt;300 HK Suzuki&lt;/a&gt; motorer og vi "fløj" afsted over vandet med over 100 km/t. Når "chaufføren" drejede båden lagde vi helt oppe på siden.. Kanon tur - kan KUN anbefales.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-7471650906906639328?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/7471650906906639328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=7471650906906639328' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/7471650906906639328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/7471650906906639328'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2008/08/rib-it.html' title='RIB-IT'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-1634739869581439413</id><published>2008-08-09T08:42:00.002+02:00</published><updated>2008-08-09T08:49:19.011+02:00</updated><title type='text'>Facebook min app</title><content type='html'>Ja - det måtte jo ske på et eller andet tidspunkt :-)&lt;br /&gt;&lt;br /&gt;Jeg har simpelthen skrevet min første Facebook applikation. Den er RET simpelt, stort set bare en lidt mere avanceret &lt;a href="http://en.wikipedia.org/wiki/Hello_world_program"&gt;"hello world"&lt;/a&gt;, der henter listen af venner (friends), og viser lidt af deres standard information. Jeg skrev den nu mest for at se hvor let/besværligt det egentligt kunne være, og for at få lidt en følelse af Facebook's API.&lt;br /&gt;&lt;br /&gt;Jeg har længe været en forkæmper for &lt;a href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt;, et godt lille web framework, og lur mig om ikke &lt;a href="http://code.google.com/p/pyfacebook/"&gt;pyfacebook&lt;/a&gt; faktisk har lavet nogle hooks til Django, så man kan skrive sine Facebook apps i Django, med alle de fordele Django giver - KÆMPE niftigt..&lt;br /&gt;&lt;br /&gt;Nu skal jeg så bare finde på noget fornuftigt at anvende denne nye viden til ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-1634739869581439413?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/1634739869581439413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=1634739869581439413' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/1634739869581439413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/1634739869581439413'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2008/08/facebook-min-app.html' title='Facebook min app'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-8220695435806284547</id><published>2008-07-30T22:01:00.002+02:00</published><updated>2008-07-30T22:10:26.848+02:00</updated><title type='text'>OpenDNS</title><content type='html'>Jeg skiftede min DNS resolver idag fra at være den default der kommer fra min ISP til &lt;a href="http://www.opendns.com/"&gt;OpenDNS&lt;/a&gt;. Hvorfor? Tjah - Jeg syntes vel i bund og grund egentligt bare godt om projektet OpenDNS, og så har de en røvfuld spændende features som jeg har leget lidt med, og det ser rigtigt godt ud indtil videre.&lt;br /&gt;Performance mæssigt syntes jeg også at jeg kan føle en lille forskel men jeg håber på at OpenDNS kan fange en del af den større mængde phishing attacks der er.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-8220695435806284547?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/8220695435806284547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=8220695435806284547' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/8220695435806284547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/8220695435806284547'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2008/07/opendns.html' title='OpenDNS'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-8094739786496825601</id><published>2008-07-17T15:34:00.003+02:00</published><updated>2008-07-17T15:38:51.407+02:00</updated><title type='text'>Bad Apple</title><content type='html'>&lt;a href="http://www.techcrunchit.com/2008/07/15/the-new-apple-walled-garden/"&gt;Endelig er der nogen der siger (læs: skriver) det som det er!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Jeg har længe gået med lignende tanker og ytret min skepsis over for Apple og deres produkter over for dem der gad lytte, men artiklen er virkelig "spot on" på min utryghed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-8094739786496825601?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/8094739786496825601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=8094739786496825601' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/8094739786496825601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/8094739786496825601'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2008/07/bad-apple.html' title='Bad Apple'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-4586686237637740681</id><published>2008-07-14T12:46:00.003+02:00</published><updated>2008-07-14T12:57:45.526+02:00</updated><title type='text'>ANTLR og BEA Portal</title><content type='html'>Efter at ha' brugt et custom tag i JSP filer til IF statements i BEA Portal er jeg endelig blevet så træt af BEA's manglende evne til at bære deres "expression language" helt til ende at jeg har skrevet mit eget.&lt;br /&gt;Kort sagt så kommer BEA Portal (8.1) med et sæt tags kaldet NETUI. Disse tags kan indeholde attributter skrevet ala &amp;lt;netui:label value="{actionForm.someGetMethod}" /&amp;gt; hvilket vil resultere i et kald til default formens metode "getSomeGetMethod()". Det er jo meget godt, men desværre er der ikke noget &amp;lt;netui:if test=""&amp;gt;...&amp;lt;/netui:if&amp;gt; tag.&lt;br /&gt;Selvfølgeligt kan man anvende JSTL men så skal man først binde BEA's expression "{actionForm.someGetMethod}" i en page attribute og SÅ kan man anvende JSTL's IF tag da disse bruger 2 forskellige scopes.&lt;br /&gt;&lt;br /&gt;Men her kommer ANTLR så ind i billedet for det er SÅ simpelt at lave sin egen lexer/parser, der kan parse et simpelt expression "sprog" så man kan gøre noget ala følgende:&lt;br /&gt;&lt;br /&gt;&amp;lt;tag:if test="{actionForm.someGetMethod} == 'asdf'"&amp;gt; .. &amp;lt;/if&amp;gt;&lt;br /&gt;&lt;br /&gt;... hvilket gør mit liv noget nemmere... TAK BEA! :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-4586686237637740681?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/4586686237637740681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=4586686237637740681' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/4586686237637740681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/4586686237637740681'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2008/07/antlr-og-bea-portal.html' title='ANTLR og BEA Portal'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-8036377709942456042</id><published>2008-07-01T07:58:00.002+02:00</published><updated>2008-07-01T08:04:48.751+02:00</updated><title type='text'>De gode gamle dage</title><content type='html'>Ahhh - de gode gamle dage. Jeg elsker at høre eller læse historier om de "gamle" dage. Med de gamle dage mener jeg de unge/spæde år af softwareindustrien. Efter at have læse &lt;a href="http://www.inc.com/magazine/20080701/how-hard-could-it-be-glory-days.html"&gt;denne klumme&lt;/a&gt; af &lt;a href="http://www.joelonsoftware.com/"&gt;Joel Spolsky&lt;/a&gt; får man alligevel en vis respekt for Bill Gates - jeg er måske ikke Microsoft mand, men man kan ikke lade være med at tænke at Microsoft (måske desværre) har gjort et eller andet fornuftigt siden de er hvor de nu engang er.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-8036377709942456042?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/8036377709942456042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=8036377709942456042' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/8036377709942456042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/8036377709942456042'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2008/07/de-gode-gamle-dage.html' title='De gode gamle dage'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-4155485045941745306</id><published>2008-06-23T13:26:00.003+02:00</published><updated>2008-06-23T13:29:39.534+02:00</updated><title type='text'>Wordle min tekst</title><content type='html'>Faldt lige over &lt;a href="http://wordle.net/"&gt;Wordle&lt;/a&gt; idag. Wordle er et fedt lille tool, der generere word clouds ud fra en brødtekst du selv copy-paster ind i Wordle.&lt;br /&gt;Ved du ikke hvad en word cloud er, er her et eksempel taget direkte fra Wordle.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_qlkvdmuzy6M/SF-I3i09ipI/AAAAAAAAAK4/peXguFdV7jY/s1600-h/del.icio.us.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp0.blogger.com/_qlkvdmuzy6M/SF-I3i09ipI/AAAAAAAAAK4/peXguFdV7jY/s400/del.icio.us.png" alt="" id="BLOGGER_PHOTO_ID_5215037381341448850" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-4155485045941745306?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/4155485045941745306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=4155485045941745306' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/4155485045941745306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/4155485045941745306'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2008/06/wordle-min-tekst.html' title='Wordle min tekst'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_qlkvdmuzy6M/SF-I3i09ipI/AAAAAAAAAK4/peXguFdV7jY/s72-c/del.icio.us.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-988315279856209219</id><published>2008-06-19T12:36:00.002+02:00</published><updated>2008-06-19T12:40:23.322+02:00</updated><title type='text'>Gravatar og dig</title><content type='html'>Web'en smelter sammen - det må være det web 2.0 som alle snakker om :-)&lt;br /&gt;&lt;br /&gt;Jeg faldt idag over &lt;a href="http://en.gravatar.com/"&gt;Gravatar&lt;/a&gt;, som er et ultra simpelt men fedt koncept. Kort fortalt linker du en &lt;a href="http://en.wikipedia.org/wiki/Avatar_%28computing%29"&gt;avatar&lt;/a&gt; sammen med din email adresse og alle gravatar enabled websites vil vise dit billede f.eks. i forbindelse med indlæg og kommentarer.&lt;br /&gt;&lt;br /&gt;Det skal vist lige undersøges lidt mere...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-988315279856209219?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/988315279856209219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=988315279856209219' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/988315279856209219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/988315279856209219'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2008/06/gravatar-og-dig.html' title='Gravatar og dig'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-1765584204660056314</id><published>2008-06-11T19:11:00.002+02:00</published><updated>2008-06-11T19:18:16.666+02:00</updated><title type='text'>iPhone 2</title><content type='html'>Man må sige at det er lykkedes Apple at gøre et eller andet rigtigt med deres iPhone. Mange har længe længtes efter at kunne købe en iPhone i Danmark og nu ser det ud som om det endeligt sker - men til hvilken pris?&lt;br /&gt;Jeg har hørt lidt rygter at selve prisen for iPhonen (altså selve devicet) bliver ganske fornuftigt MEN hvis man ser lidt på abonnements priserne for den nye iPhone i andre lande, så skal vi nok ikke glæde os for tidligt - det ser ud til at kunne blive et dyrt bekendtskab, og ja, selv om den er ganske fed så bukker jeg mig altså ikke ind over bordet for Apple's skyld ;-).&lt;br /&gt;Så hellere tage et kig på &lt;a href="http://www.htc.com/www/product.aspx?id=46278"&gt;HTC' TOUCH Diamond&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-1765584204660056314?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/1765584204660056314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=1765584204660056314' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/1765584204660056314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/1765584204660056314'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2008/06/iphone-2.html' title='iPhone 2'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-747180500104620411</id><published>2008-06-05T14:40:00.002+02:00</published><updated>2008-06-05T14:48:20.515+02:00</updated><title type='text'>ScoutJet</title><content type='html'>Jeg var ved at patche min Debian VPS og kiggede i den forbindelse i min Apache access.log fil og fandt nogle entries fra ScoutJet. "Hva sulen er nu det" tænkte jeg, og tog et kig på ScoutJet.com.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.scoutjet.com/"&gt;ScoutJet&lt;/a&gt; er en ny web crawler og det ser ud til at et startup firma kaldet Blekko er bag. Jeg faldt over den &lt;a href="http://www.techcrunch.com/2008/01/02/the-next-google-search-challenger-blekko/"&gt;her artikel&lt;/a&gt;, der beskriver lidt om manden bag Blekko og hvad de er ude på.&lt;br /&gt;&lt;br /&gt;Nu er det ikke så lang tid siden af manden bag Wikipedia forsøgte sig med at lave en "next Google" web search ting, men jeg har ikke hørt meget til den siden men det skal blive spændende at følge denne.. Vi kunne godt trænge til lidt "konkurrence" til Google, selv om jeg personligt er slemt glad for Google og de apps de stiller mere eller mindre gratis til rådighed for os nørder.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-747180500104620411?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/747180500104620411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=747180500104620411' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/747180500104620411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/747180500104620411'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2008/06/scoutjet.html' title='ScoutJet'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-6941759392626703902</id><published>2008-05-24T12:51:00.002+02:00</published><updated>2008-05-24T12:55:32.235+02:00</updated><title type='text'>Powered by Django</title><content type='html'>Så fik jeg endeligt taget mig sammen til at re-implementere min &lt;a href="http://www.it-arbejde.dk/"&gt;hjemmeside&lt;/a&gt; i &lt;a href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt;. Alt i alt har det taget mig omkring 8 timer, fra jeg hentede django fra dets subversion repository, og indtil at jeg var tilfreds med den nye version og klar til at installere den på min VPS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-6941759392626703902?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/6941759392626703902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=6941759392626703902' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/6941759392626703902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/6941759392626703902'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2008/05/powered-by-django.html' title='Powered by Django'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-9175941634714414128</id><published>2008-04-17T13:44:00.001+02:00</published><updated>2008-05-07T19:27:38.076+02:00</updated><title type='text'>Salgsfremmende eller bare skræmmende?</title><content type='html'>Jeg rodede lidt rundt i en webshop idag. Jeg lagde en 4-5 ting i den virtuelle indkøbsvogn/kurv men endte med at droppe købet pga. en forholdsvis dyr forsendelsespris.&lt;br /&gt;Efter at have lukket browseren slog det mig at - hvad nu hvis mit køb rent faktisk gav en positiv indtjening for butikken selv hvis de selv skulle betale for forsendelsen. Hvorfor så ikke sende mig et godt tilbud en uges tid senere ala:&lt;br /&gt;&lt;br /&gt;"Vi kunne se at du havde lagt varer x, y og z i kurven, men ikke afsluttet dit køb. Vi har et godt tilbud til dig her! Gratis forsendelsen!"&lt;br /&gt;&lt;br /&gt;eller&lt;br /&gt;&lt;br /&gt;"-15% på købet"&lt;br /&gt;&lt;br /&gt;Det eneste butikken skal gøre er at implementere persistente indkøbsvogne, og f.eks. løbe dem igennem efter 5 dage og beregne dækningsbidraget ved flere tilbudsscenarier.&lt;br /&gt;&lt;br /&gt;Go ide? Eller bare skræmmende pludselig at få en tilbudsmail fra webshop på et køb man har droppet?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-9175941634714414128?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/9175941634714414128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=9175941634714414128' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/9175941634714414128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/9175941634714414128'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2008/04/salgsfremmende-eller-bare-skrmmende.html' title='Salgsfremmende eller bare skræmmende?'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-5493761032922495673</id><published>2008-04-13T09:47:00.002+02:00</published><updated>2008-04-13T10:02:54.668+02:00</updated><title type='text'>is it just osCommerce?</title><content type='html'>... or are most PHP based sites implemented like we did in the 90'ties in JSP model 1?&lt;br /&gt;&lt;br /&gt;First, I'm not much of a PHP developer, but I've written a thing or two, but the last couple of days I've been playing with osCommerce (last downloadable version) and I must say - it's a big pile of spaghetti wiring.&lt;br /&gt;Second, I do appreciate the developers of osCommerce to volunteer their time and effort in developing an open source product like osCommerce but I'm glad I don't have to spend most of my time, extending osCommerce.&lt;br /&gt;&lt;br /&gt;So - whats wrong with it?&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Model 1 like "architecture" where a PHP page starts with a &lt;span style="font-weight: bold;"&gt;switch&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;case&lt;/span&gt; of a parameter typically called "action" which decides what action to take (and do), much like:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;switch ($action) {&lt;/li&gt;&lt;li&gt;    case 'create':&lt;/li&gt;&lt;li&gt;        .... do whatever to create, make SQL, call MySQL and such&lt;/li&gt;&lt;li&gt;    case 'update':&lt;/li&gt;&lt;li&gt;        .... do whatever to update, make SQL, call MySQL and such&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;                            I think you get the point!&lt;br /&gt;&lt;br /&gt;                default is ofcourse to write the HTML of the page, with submits back to self and a hidden parameter called "action"&lt;br /&gt;           &lt;br /&gt;As you might imagine, this leads to huge files, with a lot of code hidden behind if's and switches and not having you daily routine going thru osCommerce files, it's damn hard to figure out where goes where and why.. Well - for me anyway!&lt;br /&gt;&lt;br /&gt;A simple event system would be nice, because most extensions (I think) are based on integrating osCommerce with external systems and had an event system been included, it would be rather simple to, for instance, synchronize osCommerce customers with ERP systems whenever a customer was created or updated.. well - maybe i'll write one and stop bitching about it :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-5493761032922495673?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/5493761032922495673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=5493761032922495673' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/5493761032922495673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/5493761032922495673'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2008/04/is-it-just-oscommerce.html' title='is it just osCommerce?'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-5695811108943462235</id><published>2008-04-12T11:20:00.002+02:00</published><updated>2008-04-12T11:26:45.532+02:00</updated><title type='text'>WMWare rulez at localhost</title><content type='html'>WMWare rules at localhost!&lt;br /&gt;&lt;br /&gt;I'm doing some C and PHP programming, and I use a &lt;a href="http://www.vmware.com/products/player/"&gt;WMWare&lt;/a&gt; instance for each project (because they are rather intrusive). It is damn nice to simply start a debian instance in a WMWare player and have the whole system set up as wanted and needed.&lt;br /&gt;&lt;br /&gt;I've taken part in projects in the past which were virtualized on WMWare instances and I would not recommend running production system on WMWare (from my experience - not saying its at all bad)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-5695811108943462235?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/5695811108943462235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=5695811108943462235' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/5695811108943462235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/5695811108943462235'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2008/04/wmware-rulez-at-localhost.html' title='WMWare rulez at localhost'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-6484329487553877798</id><published>2008-04-02T18:36:00.002+02:00</published><updated>2008-04-02T18:55:42.249+02:00</updated><title type='text'>I really liked OpenID</title><content type='html'>...but not so much after reading &lt;a href="http://idcorner.org/2007/08/22/the-problems-with-openid/"&gt;this post&lt;/a&gt;. It states:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;... Beyond this, OpenID is pretty much useless. The reasons for this are many: OpenID is highly vulnerable to phishing and other attacks, creates insurmountable privacy problems, is not a trust system, suffers from usability problems, and makes it unappealing to become an OpenID “consumer.” Many smart people have already elaborated on these problems in various forums. In the rest of this post I will be quoting from and pointing to their critiques.&lt;br /&gt;&lt;/blockquote&gt;Quote &lt;a href="http://idcorner.org/author/idcorner/"&gt;Stefan Brands&lt;/a&gt;, author.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It's a damn shame &lt;a href="http://openid.net/"&gt;OpenID&lt;/a&gt; is so "open" to phishing and other kind of attacks. I actually still like the idea of a decentralized single sign on system, and I do feel like OpenID does have its place, but you have to be more than average awake when using OpenID and performing a login.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-6484329487553877798?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/6484329487553877798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=6484329487553877798' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/6484329487553877798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/6484329487553877798'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2008/04/i-really-liked-openid.html' title='I really liked OpenID'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-278508300964807368</id><published>2008-03-31T19:33:00.003+02:00</published><updated>2008-03-31T19:47:43.646+02:00</updated><title type='text'>WOW!</title><content type='html'>..it's been awhile. It is not because I've been swamped with work (well - not only), but I simply lost the will to blog.&lt;br /&gt;I'm currently working on a time log product, primarily for myself (and &lt;a href="http://www.it-arbejde.dk"&gt;my company&lt;/a&gt;) in which I can record time spend on different tasks and mileage (km) driven. I'm planning of writing an invoice system to fit the lot, so I avoid having to write my invoices by hand, which is quite cumbersome work at the end of each month.&lt;br /&gt;Anyway - I've decided to implement the system in &lt;a href="http://wicket.apache.org/"&gt;Wicket&lt;/a&gt; and so far I am rather pleased with my framework of choice.&lt;br /&gt;Since I spend most of my time using &lt;a href="http://edocs.bea.com/wlp/docs81/"&gt;BEA's portal product&lt;/a&gt; these days, &lt;a href="http://wicket.apache.org/"&gt;Wicket&lt;/a&gt; is like a breath of fresh air in a an otherwise diesel polluted &lt;a href="http://en.wikipedia.org/wiki/Smog"&gt;smog&lt;/a&gt; cloud :-)&lt;br /&gt;I can't really say I understand all of Wickets ways of working (or not) but I getting the hang of it (I've used &lt;a href="http://tapestry.apache.org/"&gt;Tapestry&lt;/a&gt; in the past which is also a component based framework).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-278508300964807368?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/278508300964807368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=278508300964807368' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/278508300964807368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/278508300964807368'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2008/03/wow.html' title='WOW!'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-4037792439572638938</id><published>2008-02-09T18:56:00.000+01:00</published><updated>2008-02-09T19:05:32.358+01:00</updated><title type='text'>Peeking tom</title><content type='html'>It's a funny thing - I've been writing software for about a decade and in my "younger" years I was pretty much satisfied if only I had an Emacs editor and project to work on. Code was squirted out faster than you can say "macro" and I was happy.&lt;br /&gt;But the more experienced I've gotten, I mostly get excited if I find a way to code less (but do more). One of the things I've discovered is, almost no matter what, I need an event system.&lt;br /&gt;How many of you have ever added a method call to some method, just to "trigger" another part of the system (raise your hands ;-) ). These "aspects" mostly gets hardcoded to the core of the system, but they should actually be triggered by an event, and only the "core" task at hand should be implemented "locally" in the source-code.&lt;br /&gt;&lt;br /&gt;more to come about this later...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-4037792439572638938?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/4037792439572638938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=4037792439572638938' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/4037792439572638938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/4037792439572638938'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2008/02/peeking-tom.html' title='Peeking tom'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-2429578379003745512</id><published>2008-01-15T21:38:00.000+01:00</published><updated>2008-01-15T21:48:57.925+01:00</updated><title type='text'>Humor: Forget about Iran - next will be...</title><content type='html'>Some time ago it looked like the next country the USA would invade/free (depends on point-of-view) would be Iran. I remember a little stir about some nuclear weapons and such, but the problem seems to be gone now, BUT...&lt;br /&gt;&lt;br /&gt;I predict the next country USA will invade will be Sweden. Why you might ask? Well, it's seems like MPAA are quite powerful in the US and their lobbying could drive the US to invade Sweden, just to shut down &lt;a href="http://thepiratebay.org/legal"&gt;ThePirateBay&lt;/a&gt; :-)&lt;br /&gt;&lt;br /&gt;just a thought...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-2429578379003745512?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/2429578379003745512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=2429578379003745512' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/2429578379003745512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/2429578379003745512'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2008/01/humor-forget-about-iran-next-wil-be.html' title='Humor: Forget about Iran - next will be...'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-6653058191639091202</id><published>2007-11-20T11:19:00.000+01:00</published><updated>2007-11-20T11:21:12.837+01:00</updated><title type='text'>Why is it slow - YSlow?</title><content type='html'>&lt;a href="http://developer.yahoo.com/yslow/"&gt;YSlow tool&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The page says:&lt;br /&gt;&lt;br /&gt;YSlow analyzes web pages and tells you why they're slow based on the &lt;a href="http://developer.yahoo.com/performance/index.html#rules"&gt;rules for high performance web sites&lt;/a&gt;. YSlow is a &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/5369"&gt;Firefox add-on&lt;/a&gt; integrated with the popular &lt;a href="http://www.getfirebug.com/" target="_blank"&gt;Firebug&lt;/a&gt; web development tool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-6653058191639091202?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/6653058191639091202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=6653058191639091202' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/6653058191639091202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/6653058191639091202'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2007/11/why-is-it-slow-yslow.html' title='Why is it slow - YSlow?'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-7380684527761850266</id><published>2007-11-13T09:14:00.000+01:00</published><updated>2007-11-13T09:19:47.926+01:00</updated><title type='text'>r2d2 Android</title><content type='html'>Googles release of the &lt;a href="http://code.google.com/android/index.html"&gt;Android SDK&lt;/a&gt; is probably the biggest things that has happened in the world of mobile devices this millenium. Apple's iPhone never really caught my interest (just another white gadget with the Apple icon) but this WILL get my attention. I can't wait until I can get my hands of a real device which supports the Android SDK.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-7380684527761850266?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/7380684527761850266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=7380684527761850266' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/7380684527761850266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/7380684527761850266'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2007/11/r2d2-andriod.html' title='r2d2 Android'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-7302769160065377496</id><published>2007-11-10T15:44:00.000+01:00</published><updated>2007-11-10T15:58:09.618+01:00</updated><title type='text'>Pass me the YAAMS</title><content type='html'>Thats right, I am writing Yet Another Apache Module and though it has been atleast 8-10 years since I last wrote a line of C code, I'm actually enjoying this little experience.&lt;br /&gt;I have absolutely no experience in writing Apache modules nor the apache server other than I have been an avid user for many, many years.&lt;br /&gt;&lt;br /&gt;I'm used to Java, a garbage collector and UNMUTABLE strings so my biggest problems so far is remembering the whole C'ism again. Remembering to allocate space in apache pools for strings, how to make substrings and such..&lt;br /&gt;&lt;br /&gt;Arg crap - yet a "segmentation fault"!  ohh well..  ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-7302769160065377496?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/7302769160065377496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=7302769160065377496' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/7302769160065377496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/7302769160065377496'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2007/11/pass-me-yaams.html' title='Pass me the YAAMS'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-4564875482810684185</id><published>2007-10-30T18:53:00.000+01:00</published><updated>2007-10-30T19:05:16.479+01:00</updated><title type='text'>I am wondering</title><content type='html'>... if anyone has actually ever used Axis 1(.4) and ws-security! Today we discovered yet another "feature" of Axis which render some client requests invalid though they are actually ok.&lt;br /&gt;&lt;br /&gt;It is the "extra feature" of checking the order of actions (given by "action" parameter to WSDoAllReceiver) which causes my headaches this time. If you have no control of the clients from which you receive requests, they may produce XML in which the signature and timestamp may be in "random" order, but axis expects them to come in the order as specified by the "action" parameter. There is not apparent reason why this extra check is done and it does not give any extra security.. &lt;br /&gt;&lt;br /&gt;Oh well - back to the editor...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-4564875482810684185?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/4564875482810684185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=4564875482810684185' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/4564875482810684185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/4564875482810684185'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2007/10/i-am-wondering.html' title='I am wondering'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-3675770603392695269</id><published>2007-10-25T08:59:00.001+02:00</published><updated>2007-10-25T09:02:59.701+02:00</updated><title type='text'>C my pointer?</title><content type='html'>It's been awhile since I last wrote a line of C but I find myself in need of writing an Apache(2) module, so I better dust of my "C for dummies" book and start programming.&lt;br /&gt;I just really dislike the whole "make" process ..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-3675770603392695269?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/3675770603392695269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=3675770603392695269' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/3675770603392695269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/3675770603392695269'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2007/10/c-my-pointer.html' title='C my pointer?'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-5475046045296054687</id><published>2007-10-06T12:16:00.000+02:00</published><updated>2007-10-06T12:29:01.379+02:00</updated><title type='text'>Axis</title><content type='html'>I've been using Axis 1.x for many years and I did a small test-run of Axis2 some months ago, but it doesn't seem to be any better than Axis1 (just different and a lot less "mature"). The Axis1 branch is way to complex for the problem it's solving. If you fix a bug or implement a feature you are likely to be introducing another couple of bugs, since the code-base is just a big mess.&lt;br /&gt;&lt;br /&gt;Well anyways, I just recently fixed a bug in Axis for a project, where the MessageContext's requestMessage was changed before the WSDoAllReceiver handler (for ws-security) had a chance to verify the xml causing a "Verification failed" error for 2 signature elements. The error was, ofcourse, Axis pretty printing. Some messages worked ok, other were changed and since the canonicalizer does not change the newline and blanks, I was unable to verify the messages.&lt;br /&gt;&lt;br /&gt;later...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-5475046045296054687?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/5475046045296054687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=5475046045296054687' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/5475046045296054687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/5475046045296054687'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2007/10/axis.html' title='Axis'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-7902109116897251516</id><published>2007-07-19T13:40:00.000+02:00</published><updated>2007-07-19T13:47:21.512+02:00</updated><title type='text'>Persist XMLBeans using Hibernate</title><content type='html'>I'm currently working on a project where we need to persist xmlbean objects using hibernate (well - we may choose to do so to avoid having to map from xmlbeans to POJO beans since they are both, ahem BEANS! ). This hibernate Interceptor will handle instanciation and mappings of XMLBeans&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family: courier new;"&gt;public class MyHibernateInterceptor &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        extends EmptyInterceptor&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        implements Interceptor&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    protected SessionFactory factory;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    public MyHibernateInterceptor(SessionFactory factory) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        this.factory = factory;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    public String getEntityName(Object object)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        Class[] interfaces = object.getClass().getInterfaces();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        for (int i=0;i&lt;interfaces.length;i++)&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            if (XmlObject.class.isAssignableFrom(interfaces[i])) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                return interfaces[i].getName();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        return super.getEntityName(object);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    public Object instantiate(String entityName, EntityMode entityMode, Serializable id)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        if (EntityMode.POJO.equals(entityMode)) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            // Only load POJO style&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            try {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                Class clazz = Class.forName(entityName);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                if (XmlObject.class.isAssignableFrom(clazz)) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                    Class factoryClazz = Class.forName(entityName+"$Factory");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                    Method newInstanceMethod = factoryClazz.getMethod("newInstance", null);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                    Object obj = newInstanceMethod.invoke(null, null);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                    setIdentity(entityName, obj, id, entityMode);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                    return obj;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            } catch (Exception e) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                // Nothing to do, but to let hibernate deal with it&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        return super.instantiate(entityName, entityMode, id);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    protected void setIdentity(String entityName, Object obj, Serializable id, EntityMode entityMode)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        ClassMetadata classMetaData = factory.getClassMetadata(entityName);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        classMetaData.setIdentifier(obj, id, entityMode);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And this is how I configure the lot&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;cfg = new Configuration().configure("hibernate.cfg.xml");&lt;br /&gt;cfg.setInterceptor(new MyHibernateInterceptor(cfg.buildSessionFactory()));&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;later...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-7902109116897251516?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/7902109116897251516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=7902109116897251516' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/7902109116897251516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/7902109116897251516'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2007/07/persist-xmlbeans-using-hibernate.html' title='Persist XMLBeans using Hibernate'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-4008179944550231319</id><published>2007-06-30T12:04:00.000+02:00</published><updated>2007-06-30T12:09:47.798+02:00</updated><title type='text'>Tim Lister - Freakin' way</title><content type='html'>&lt;a href="http://www.infoq.com/presentations/agile-leadership-tim-lister"&gt;This session "Introduction to Agile Leadership" with Tim Lister&lt;/a&gt; at an Agile Alliance conference should be mandatory sit-n-watch/hear for all leaders (which can be everybody according to Tim ;-) )&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.infoq.com/presentations/agile-leadership-tim-lister"&gt;MUST GO WATCH NOW&lt;/a&gt;!.. What are you waiting for?&lt;br /&gt;&lt;br /&gt;Best talk I've heard on the topic (which isn't alot - maybe theres a tabu about leadership (or lack of)).. I wish Tim would attend &lt;a href="http://jaoo.dk/conference/"&gt;JAOO&lt;/a&gt; this year.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-4008179944550231319?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/4008179944550231319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=4008179944550231319' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/4008179944550231319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/4008179944550231319'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2007/06/tim-lister-freakin-way.html' title='Tim Lister - Freakin&apos; way'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-5083198049343440338</id><published>2007-06-21T20:24:00.000+02:00</published><updated>2007-06-21T20:26:02.022+02:00</updated><title type='text'>Mushroom Management Development</title><content type='html'>&lt;strong&gt;Mushroom Management Development (MMD)&lt;/strong&gt; where the developers are fed lots of crap and kept mostly in the dark.  :-)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.scottberkun.com/blog/2007/asshole-driven-development/"&gt;See this link...&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-5083198049343440338?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/5083198049343440338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=5083198049343440338' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/5083198049343440338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/5083198049343440338'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2007/06/mushroom-management-development.html' title='Mushroom Management Development'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-2502986405068618076</id><published>2007-06-07T20:16:00.000+02:00</published><updated>2007-06-07T20:19:57.777+02:00</updated><title type='text'>Nerdy Gore</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_qlkvdmuzy6M/RmhL3rF1bYI/AAAAAAAAAAM/8KqBCwjhgR8/s1600-h/goredesk.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_qlkvdmuzy6M/RmhL3rF1bYI/AAAAAAAAAAM/8KqBCwjhgR8/s400/goredesk.jpg" alt="" id="BLOGGER_PHOTO_ID_5073388400064949634" border="0" /&gt;&lt;/a&gt;I so want the same monitor setup.. Badly...  gimme!&lt;br /&gt;Source: &lt;a href="http://www.lifehacker.com/software/workspace/al-gore-rocks-multiple-monitors-could-stand-an-inbox-262333.php"&gt;Lifehack&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-2502986405068618076?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/2502986405068618076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=2502986405068618076' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/2502986405068618076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/2502986405068618076'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2007/06/nerdy-gore.html' title='Nerdy Gore'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_qlkvdmuzy6M/RmhL3rF1bYI/AAAAAAAAAAM/8KqBCwjhgR8/s72-c/goredesk.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-4022890855919820127</id><published>2007-05-23T20:32:00.000+02:00</published><updated>2007-05-23T20:38:23.663+02:00</updated><title type='text'>Take this career and shove it</title><content type='html'>As catching as the above title is, I cannot take credit for it because its shamelessly stolen from &lt;a href="http://thecodist.com/fiche/thecodist/article/take-this-career-and-shove-it"&gt;this blog entry&lt;/a&gt;. I actually have had some of the same thoughts (a while ago :-) ) but in my humble opinion this guy have found something.... to think about.. and wonder about.&lt;br /&gt;&lt;br /&gt;&lt;quote&gt;&lt;br /&gt;... working in companies where the only real advancement is moving into management.&lt;br /&gt;&lt;/quote&gt;&lt;br /&gt;&lt;br /&gt;Doesn't this seems like a lousy deal to you??&lt;br /&gt;&lt;br /&gt;later&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-4022890855919820127?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/4022890855919820127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=4022890855919820127' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/4022890855919820127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/4022890855919820127'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2007/05/take-this-career-and-shove-it.html' title='Take this career and shove it'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-3892250147908704738</id><published>2007-05-07T10:52:00.000+02:00</published><updated>2007-05-07T10:57:08.221+02:00</updated><title type='text'>Hibernate on OS390</title><content type='html'>... is broken. Well not hibernate itself but the schema tool / dialect has a problem since you need to explicit create a unique index on the primary key column. "Now - how did you discover this" you might ask...  THE HARD WAY, thank you very much... ;-)&lt;br /&gt;&lt;br /&gt;Quote from IBM doc at &lt;a href="http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=/com.ibm.db29.doc.admin/bkndidxunq.htm"&gt;found here&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;"When you create a table that contains a primary key, you must create a unique index for that table on the primary key. DB2 marks the table as unavailable until the explicit creation of the required indexes."&lt;br /&gt;&lt;br /&gt;Bug: &lt;a href="http://opensource.atlassian.com/projects/hibernate/browse/HB-1028"&gt;http://opensource.atlassian.com/projects/hibernate/browse/HB-1028&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-3892250147908704738?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/3892250147908704738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=3892250147908704738' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/3892250147908704738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/3892250147908704738'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2007/05/hibernate-on-os390.html' title='Hibernate on OS390'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-4546013382397222872</id><published>2007-02-23T10:37:00.000+01:00</published><updated>2007-02-23T10:42:01.587+01:00</updated><title type='text'>bend over for SOAP</title><content type='html'>As my previous post might indicate I've been writing a lot of webservices lately and found &lt;a href="http://soapui.org/"&gt;the soapUI  tool&lt;/a&gt; to be absolutely essentials and nearly irreplaceable. I've used XMLSpy and other more or less useless tools in the past, but not anymore..... Great work, guys!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-4546013382397222872?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/4546013382397222872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=4546013382397222872' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/4546013382397222872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/4546013382397222872'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2007/02/bend-over-for-soap.html' title='bend over for SOAP'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-8920953641360841978</id><published>2007-02-20T18:58:00.000+01:00</published><updated>2007-02-20T19:07:09.124+01:00</updated><title type='text'>Beam me up, SOA</title><content type='html'>I am currently doing some work for a large Danish financial institution. I am exposing some &lt;a href="http://en.wikipedia.org/wiki/CICS"&gt;CICS&lt;/a&gt; based services as &lt;a href="http://en.wikipedia.org/wiki/Web_services"&gt;web services&lt;/a&gt; for their quite new and quite large &lt;a href="http://en.wikipedia.org/wiki/Service-oriented_architecture"&gt;SOA&lt;/a&gt; architecture. This is actually rather interesting and I've learned something new and got a few good ideas - I was due :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-8920953641360841978?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/8920953641360841978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=8920953641360841978' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/8920953641360841978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/8920953641360841978'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2007/02/beam-me-up-soa.html' title='Beam me up, SOA'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-5471562256410681688</id><published>2007-02-17T22:04:00.000+01:00</published><updated>2007-02-17T22:11:11.998+01:00</updated><title type='text'>Harold Bluetooth</title><content type='html'>Dammit it's easy to setup a bluetooth connection to your cell/mobile phone and send a couple of Good Old(tm) AT commands to it, for sending and receiving SMS (text) messages.&lt;br /&gt;I was merely giving it a shoot to see how hard it could be and it took me 8 minutes to setup, and send my first SMS from windows hyperterminal to my mobile phone over a bluetooth link. I think I'd make a small application from which I'm able to send text messages much faster than I am using the 0-9 keyboard style (I'm probably just too old for that shit :-) )&lt;br /&gt;&lt;br /&gt;Well - just for the fun of it..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-5471562256410681688?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/5471562256410681688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=5471562256410681688' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/5471562256410681688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/5471562256410681688'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2007/02/harold-bluetooth.html' title='Harold Bluetooth'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-117023637228870787</id><published>2007-01-31T10:25:00.000+01:00</published><updated>2007-01-31T10:39:32.303+01:00</updated><title type='text'>The Seven Day Weekend</title><content type='html'>I recently finished reading &lt;a href="http://www.amazon.com/Seven-Day-Weekend-Changing-Work-Works/dp/1591840260"&gt;this book&lt;/a&gt; by Richardo Semler, the CEO of Semco, a Brazil based company. Richardo tries to explain the reasons behinds Semco's success in the business world. It is actually a REALLY good read, and Richardo has some really good points and ideas, but I felt he should have included a couple of chapters written by his employees as he is the CEO and may NOT see how things are the floor level though he thinks he does.&lt;br /&gt;Anyways Semco does things differently. Employees hire their managers (which is an extremely pleasant though, dont you think so??). Another great thing I got from the book was the "rule" of three (3) why's - you have the right (or perhaps more the duty) to ask three why's to each statement given by your manager. This way you force him/her to to think things through..&lt;br /&gt;&lt;br /&gt;A good read - pick it up a make it a better corporate world...  Cheers!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-117023637228870787?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/117023637228870787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=117023637228870787' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/117023637228870787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/117023637228870787'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2007/01/seven-day-weekend.html' title='The Seven Day Weekend'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-116603497042456622</id><published>2006-12-13T19:30:00.000+01:00</published><updated>2006-12-13T19:36:10.433+01:00</updated><title type='text'>And I quote....</title><content type='html'>A company's &lt;i&gt;valuation&lt;/i&gt; is what someone is willing to pay for it, but a company's &lt;i&gt;value&lt;/i&gt; is measured by the benefits it delivers to its customers. Source: Cameron Purdy in &lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=36243#183254"&gt;this thread&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;think about it for a moment.. lets it "slip" in..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-116603497042456622?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/116603497042456622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=116603497042456622' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/116603497042456622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/116603497042456622'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2006/12/and-i-quote.html' title='And I quote....'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-116431085613791575</id><published>2006-11-23T20:36:00.000+01:00</published><updated>2006-11-23T20:40:56.146+01:00</updated><title type='text'>Does anyone have a SysTray?</title><content type='html'>I just finished my first "project" (well actually part of a) which utilizes the SysTray functionality in Java 5.. Damn it is nice and easy.&lt;br /&gt;Now I just need to get started learning JOGL which is also on my new-years resolutions list (again) ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-116431085613791575?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/116431085613791575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=116431085613791575' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/116431085613791575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/116431085613791575'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2006/11/does-anyone-have-systray.html' title='Does anyone have a SysTray?'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-116413449679544535</id><published>2006-11-21T19:31:00.000+01:00</published><updated>2006-11-21T19:41:36.806+01:00</updated><title type='text'>Wow - has it really been that long</title><content type='html'>... I've been swamped at work (not really development stuff but still..) to such a level that I have been too bombed to blog about all the new things I've come across...&lt;br /&gt;&lt;br /&gt;I've been a long time reader of the bile-blog, but never really seen any good photos of the bile man himself, so this was a somewhat huge surprise to me.. He looks nothing like I had imagined.. well thats life for you - I guess  (Man skal ikke skue hunden på hårene! *Danish*)&lt;br /&gt;Anyways I was actually &lt;a href="http://www.jroller.com/page/cpurdy"&gt;checkin' out Cameron Purdy's blog&lt;/a&gt;. I've been rather keen on their distributed cache for quite some time and even though I have a project in which Coherence will fit right in (perfectly) I have yet to convince my boss of the greatness of this product and to let me use it.. damn...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-116413449679544535?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/116413449679544535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=116413449679544535' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/116413449679544535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/116413449679544535'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2006/11/wow-has-it-really-been-that-long.html' title='Wow - has it really been that long'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-116292312458535813</id><published>2006-11-07T19:05:00.000+01:00</published><updated>2006-11-07T19:12:04.596+01:00</updated><title type='text'>Django based site up and running</title><content type='html'>I finally got a VPS server (debian linux thank you very much)... So &lt;a href="http://www.it-arbejde.dk"&gt;IT-ARBEJDE.DK&lt;/a&gt; is up and running. A django based site with somewhat limited functionality yet but I decided time-to-marked was more important than including ALL of the functionality on my road-map. Please bear in mind the site is still in alpha stage, meaning strange things might happen, things may look strange and such but I'm working on a final 1.0 release (and a re-design).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-116292312458535813?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/116292312458535813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=116292312458535813' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/116292312458535813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/116292312458535813'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2006/11/django-based-site-up-and-running.html' title='Django based site up and running'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-116090495220427319</id><published>2006-10-15T11:32:00.000+02:00</published><updated>2006-10-15T11:35:52.213+02:00</updated><title type='text'>Slap my silly and call me Django</title><content type='html'>If you are located in Denmark and you're working on a project or need some sort of info and/or knowledge about Django, please drop me an email!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-116090495220427319?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/116090495220427319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=116090495220427319' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/116090495220427319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/116090495220427319'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2006/10/slap-my-silly-and-call-me-django.html' title='Slap my silly and call me Django'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-116075822884583244</id><published>2006-10-13T18:40:00.000+02:00</published><updated>2006-10-13T18:50:28.896+02:00</updated><title type='text'>Perty MiNA</title><content type='html'>Wow, it has been awhile.. Nothing really to blog about... I have been writing a communications framework for a project of mine and when I finished the lot I was actually damn proud of it.. Fast, simple and extremely small yet powerful. Fully async with server to client callbacks and RPC features (RMI replacement)  atop of it all...  Anyways, the other day I was in the need of a Directory server and didn't want to install NDS or like so I looked at the Apache Directory but stumbled upon &lt;a href="http://directory.apache.org/subprojects/mina/index.html"&gt;MINA&lt;/a&gt;. A project by Apache which works pretty close to what I already had written. Now I have decided to put my fw to rest (R.I.P.)  and use MINA - damn shame I didn't find MINA earlier... oh well, thats what Alanis Morissette sing about in "Ironic" I guess ;-)&lt;br /&gt;&lt;br /&gt;Roger over...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-116075822884583244?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/116075822884583244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=116075822884583244' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/116075822884583244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/116075822884583244'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2006/10/perty-mina.html' title='Perty MiNA'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-115770218862379565</id><published>2006-09-08T09:51:00.000+02:00</published><updated>2006-09-08T09:56:28.633+02:00</updated><title type='text'>Extreme programming</title><content type='html'>I am one of the Dell customers who have a fire hazardous battery - Now thats what I call extreme programming :-) (though I'm expecting a replacement pack in just a couple of days)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-115770218862379565?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/115770218862379565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=115770218862379565' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/115770218862379565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/115770218862379565'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2006/09/extreme-programming.html' title='Extreme programming'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-115764522007451854</id><published>2006-09-07T17:57:00.000+02:00</published><updated>2006-09-07T18:07:00.086+02:00</updated><title type='text'>to DSA or not to DSA</title><content type='html'>..by DSA I mean "Domain Specific Application". In my experience it is often better (though not necessary faster) to build an application from the group-up (using as many libraries as possible ofcoz) than using some product e.g. a CMS or portal product. The reason I guess is instead of trying to fit your app into some specific box, you rather build our own box using building blocks - to put it in another way, you write the system to match the customer requirements rather than trying to match the platform requirements.. it's that simple.. (I think)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-115764522007451854?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/115764522007451854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=115764522007451854' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/115764522007451854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/115764522007451854'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2006/09/to-dsa-or-not-to-dsa.html' title='to DSA or not to DSA'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-115754115046554284</id><published>2006-09-06T13:11:00.000+02:00</published><updated>2006-09-06T13:12:30.476+02:00</updated><title type='text'>Ouch</title><content type='html'>&lt;a href="http://jroller.com/page/dogsandcoffee?entry=you_are_a_leaky_abstraction"&gt;Hit me one more time :-) &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-115754115046554284?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/115754115046554284/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=115754115046554284' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/115754115046554284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/115754115046554284'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2006/09/ouch.html' title='Ouch'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-115752722008956742</id><published>2006-09-06T09:10:00.000+02:00</published><updated>2006-09-06T09:20:20.096+02:00</updated><title type='text'>Support Open Source Software</title><content type='html'>I guess most developers and corporations which in some way utilizes the java platform have used open source software in some way or manner (not speaking of operating system software here). There's a huge amount of free (as in beer) libraries at your disposal when using the java platform (even more than you asked for :-) ), so why not give a bit (or two) back to OSS community and participate in the development of one or more projects.. Its the &lt;a href="http://blogs.sun.com/jonathan/entry/inevitability"&gt;participation age&lt;/a&gt; (so Schwartz says)..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-115752722008956742?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/115752722008956742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=115752722008956742' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/115752722008956742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/115752722008956742'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2006/09/support-open-source-software.html' title='Support Open Source Software'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-115627210105665867</id><published>2006-08-22T20:29:00.000+02:00</published><updated>2006-08-22T20:41:42.463+02:00</updated><title type='text'>(Gu)Estimates</title><content type='html'>This &lt;a href="http://jroller.com/page/cpurdy?entry=gestation"&gt;post&lt;/a&gt; trigged something in me. I like to estimate tasks and projects but in the world of software I think it is near (damn right) impossible to estimate "correctly". An estimate is ofcourse still a Good Thing(tm) as you have no other way of controlling the  (alleged)  progress, but it is important to remember an estimate is still - an estimate. As a follow-up on my previous post I'd like for managers to remember - we (developers, architects and code smurfs) estimate tasks as we are the best one's to do so based upon our experience (in this area) BUT this doesn't mean management doesn't have a part of the responsibility... Well - I digress&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-115627210105665867?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/115627210105665867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=115627210105665867' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/115627210105665867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/115627210105665867'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2006/08/guestimates.html' title='(Gu)Estimates'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-115609703954386474</id><published>2006-08-20T19:53:00.000+02:00</published><updated>2006-08-20T20:03:59.553+02:00</updated><title type='text'>JSR-170 and JSR-283</title><content type='html'>I once in a while browse the net to see if there are some news regarding the above two mentioned JSR's. I don't mean new as in updates for the specs but new implementations based upon the specs but there does not seem to be a lot.. I've started to write an implementation myself but it is still FAR from being finised and since I just became a dad for the second time just two months ago, I doubt if I'll ever finish off the project. I've come quite a long way with the basic blocks such as Session, Workspace, Node and Property but opposed to the other implementations I've found, my will be a client/server much like using JDBC except its JCR. Well - anyways I was just wondering why there only seems to be like three (read: 3) implementations available for now (atleast I know of):&lt;br /&gt;&lt;br /&gt;Jackrabbit&lt;br /&gt;Day's CRX (which I guess is build atop some Jackrabbit code (I might be wrong))&lt;br /&gt;Exo platforms (Damn - I tried to figure out if its a standalone, but couldn't)&lt;br /&gt;&lt;br /&gt;Why aren't the web scattered with implementations? I know, some says it is too little, too much but I find it rather interesting and good.. Hmm mayB it's just me...  (back to the dipers)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-115609703954386474?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/115609703954386474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=115609703954386474' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/115609703954386474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/115609703954386474'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2006/08/jsr-170-and-jsr-283.html' title='JSR-170 and JSR-283'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-115383648125817218</id><published>2006-07-25T16:01:00.000+02:00</published><updated>2006-07-25T16:10:06.903+02:00</updated><title type='text'>Django dhats fine...</title><content type='html'>I was looking for at framework to FAST build a small web-app as a proof of concept and found &lt;a href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt;.  My web-app was up'n'running in a, somewhat sparse but workable, version in about 4-6 hours of development - nice! This is the time I would have spend downloading new versions of Hibernate and Struts/Tapestry/Wicket or whatever java frameworks I had chosen to use and write an ANT build.xml file (roughly :-) ) Albeit I found some minor things annoying coming from the java world its really easy to pick-up and still very powerfull. Give it a try - I bet you'll like it (Do I sound a tad like a pusher there, huh :-) )..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-115383648125817218?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/115383648125817218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=115383648125817218' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/115383648125817218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/115383648125817218'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2006/07/django-dhats-fine.html' title='Django dhats fine...'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-115306874073666497</id><published>2006-07-16T18:41:00.000+02:00</published><updated>2006-07-16T18:52:20.756+02:00</updated><title type='text'>COO's should be replaced with CHO's</title><content type='html'>&lt;a href="http://positivesharing.com"&gt;Alexander Kjerulf&lt;/a&gt; really hits many management problems right on the nail - one thing I REALLY REALLY hate is bad management or the lack of committmend and taking (part of the) responsibility from middle management team.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-115306874073666497?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/115306874073666497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=115306874073666497' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/115306874073666497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/115306874073666497'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2006/07/coos-should-be-replaced-with-chos.html' title='COO&apos;s should be replaced with CHO&apos;s'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-115026785898067223</id><published>2006-06-14T08:41:00.000+02:00</published><updated>2006-06-14T08:50:58.993+02:00</updated><title type='text'>Is CAJO rabid?</title><content type='html'>Whilst in the work of writing my own remote method invocation framework (not RMI but more like CORBA) if stumpled upon &lt;a href="https://cajo.dev.java.net/"&gt;the cajo framework&lt;/a&gt;. I've done a little bit of investigation in its features and strengths - but my concerns are tied around the client callback possibilities which my own fw was aiming at. So far it seems like a great library and I might just park my own and perhaps make an efford at understanding cajo for the purpose of implementing concurrent callbacks and such (if not already included in the lib)... Well - its always great NOT to have to reinvent the wheel.. later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-115026785898067223?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/115026785898067223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=115026785898067223' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/115026785898067223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/115026785898067223'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2006/06/is-cajo-rabid.html' title='Is CAJO rabid?'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-114832014067054928</id><published>2006-05-22T19:45:00.000+02:00</published><updated>2006-05-22T19:49:12.636+02:00</updated><title type='text'>Buddhism one-on-o.. well all</title><content type='html'>&lt;h3&gt;&lt;a name="_Toc30761692"&gt;Basic Buddhist Teachings&lt;/a&gt;&lt;/h3&gt; &lt;p align="justify"&gt;Buddha's most basic teaching of Dharma is known as the "Four Noble Truths," the four facts seen as true by highly realized beings. He saw that everyone faces (1) true problems. Although there are many joys to be had, there is no denying that life is difficult. Sickness, old age and death in oneself and one's loved ones, frustrations in life, disappointments in one's relations with others and so on are difficult enough. But people make these situations even more painful because of their attitudes based on confusion.&lt;/p&gt;           &lt;p align="justify"&gt;(2) The true cause of problems is lack of awareness or ignorance of reality. For example, all people think that they are the center of the universe. When, as a small child, they close their eyes, it appears as though everyone else ceases to exist. Because of this deceptive appearance, they feel that they are the only one who is important and that they must always have their own way. As a result of such a self-centered, self-important attitude, they create arguments, fights and even wars. But if it were true that they were the center of the universe, then everyone should agree. No one, however, would agree, because everyone else feels that he or she is the center of the universe. They cannot all be right.&lt;/p&gt;           &lt;p align="justify"&gt;It is possible, however, to achieve (3) true stoppings of all problems so that one will never experience unhappiness again. This will happen if one adopts (4) a true pathway of mind with which one understands reality. In other words, if one gains full realization of the fact that everyone is interconnected and interdependent, and that no one is the center of the universe, then it will be possible for people to find the solutions to their problems so that they can live together in peace and harmony. The basic approach in Buddhism, then, is scientific and rational. To eliminate problems, one must identify and remove their causes. Everything follows the laws of cause and effect.&lt;br /&gt;&lt;/p&gt; &lt;p align="justify"&gt;&lt;span style="font-size:78%;"&gt;Originally          published as part of&lt;br /&gt;        Berzin, Alexander. &lt;i&gt;Buddhism and Its Impact on Asia&lt;/i&gt;. &lt;i&gt;Asian Monographs&lt;/i&gt;,          no. 8.&lt;br /&gt;        Cairo: Cairo University, Center for Asian Studies, June 1996.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-114832014067054928?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/114832014067054928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=114832014067054928' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/114832014067054928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/114832014067054928'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2006/05/buddhism-one-on-o-well-all.html' title='Buddhism one-on-o.. well all'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-114573563583957870</id><published>2006-04-22T21:34:00.000+02:00</published><updated>2006-04-22T21:53:55.850+02:00</updated><title type='text'>Hungarian - is that like getting it "french"?</title><content type='html'>In the past few years I have discovered many starting to use &lt;a href="http://en.wikipedia.org/wiki/Hungarian_notation"&gt;Hungarian notation&lt;/a&gt; like names in Java and just today I also saw some in &lt;a href="http://python.org/"&gt;Python&lt;/a&gt;. For instance the author of &lt;a href="http://jakarta.apache.org/tapestry/"&gt;Tapestry&lt;/a&gt;, a framework I just love, tend to use I as a prefix of all interfaces like IMyInterface. Is this a good idea? I haven't just yet decided for myself - normally I, myself, would not do that in java, as I find it is not neccessary and I do not want the end-user (if it is API code) to know the difference between my interfaces and actual implementing classes, but still - it doesnt really matter. I guess it's a matter of like.&lt;br /&gt;&lt;br /&gt;A tiny note about Python, now - I still learning so bare with me but its just doesnt seem easy to implement API's in Python (perhaps generally in dynamically types languages). I was playing around with &lt;a href="http://twistedmatrix.com/trac/"&gt;twisted&lt;/a&gt; today (great framework by the way) and wanted to extend the base Protocol class but I didn't know which methods to implement or override and the documentation is kinda hard for me to read coming from the Java world. In Java you DONT have this kinda problem (even as a novice Java programmer) as your IDE (or Java compiler) will TELL you what methods you have to override or implement. Well - I guess its just one of those things I'll have to get used to....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-114573563583957870?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/114573563583957870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=114573563583957870' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/114573563583957870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/114573563583957870'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2006/04/hungarian-is-that-like-getting-it.html' title='Hungarian - is that like getting it &quot;french&quot;?'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-114448594487273974</id><published>2006-04-08T10:38:00.000+02:00</published><updated>2006-04-08T10:45:44.873+02:00</updated><title type='text'>Please don't eat me dear Python</title><content type='html'>It seems like I'm going to implement a new system at work in Python - yes, Python.. I've written some tiny tools or alike in Python in the past, but I am no way near being a Python programmer, so I'm really excited to try something new. Don't get me wrong - I've been programming Java for the past 10 or so years, and I'm still a Java kinda-guy, but I sincerely believe its healty to "branch" out and try other technologies aswell. Anyways - this new system will include both server-sockets and SOAP calls to remote systems.... greeeeeat...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-114448594487273974?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/114448594487273974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=114448594487273974' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/114448594487273974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/114448594487273974'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2006/04/please-dont-eat-me-dear-python.html' title='Please don&apos;t eat me dear Python'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-114448542412484504</id><published>2006-04-08T10:26:00.000+02:00</published><updated>2006-04-08T10:37:04.136+02:00</updated><title type='text'>The Myth</title><content type='html'>I bought the book &lt;a href="http://en.wikipedia.org/wiki/The_Mythical_Man-Month"&gt;"The mythical man-month"&lt;/a&gt; today. Although I haven't actually read the book yet (still on route from Amazon), I am so excited about receiving my copy.&lt;br /&gt; I stumbled upon a quote from this book just a few weeks ago on the net, and I am quite the sucker for books (or alike) like this. I am currently reading "eXtreme Programming" by Kent Beck yet again and I'm still amazed how many things one "ought" to do - although I'm not a fanatic "eXtreemer" - so many aspects are "right on head" of software development. If only more companies follow the "eXtreme" way, more than writing on their website "we do it the eXtreme way.." :-)  Not many I know of actually do...  But as Kent stated in the beginning of the book- "It's just common sence"... Well - yes AND no....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-114448542412484504?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/114448542412484504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=114448542412484504' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/114448542412484504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/114448542412484504'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2006/04/myth.html' title='The Myth'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-114098265074782595</id><published>2006-02-26T20:03:00.000+01:00</published><updated>2006-02-26T20:37:30.763+01:00</updated><title type='text'>Hierarchical data structures in relational databases</title><content type='html'>It's all relative, as are the many possibly ways to express hierarchical structures in relational databases. I spend a few hours this weekend reading about the theory behind this subject and I found many interesting articles but they all seemed to boil down to the following:&lt;br /&gt;&lt;br /&gt;Adjacency list&lt;br /&gt;Nested sets (Nested Intervals)&lt;br /&gt;Materialized path&lt;br /&gt;&lt;br /&gt;The three above mentioned methods may not be the only ones, but I think most others are derived from one of the above.&lt;br /&gt;Anyways - I was looking for a method for blazingly fast reads and somewhat fast inserts. Especially fast inserts seems to rule out nested sets and fast reads on more than one level seems to rule out adjacency lists, but does it really.. I've come up with an approach albeit it might need some more space (hence data) its basically still an adjacency list but with link data.&lt;br /&gt;For each node I insert the path to the root in a link table (called hierarchy in the below example). I simply go from the node to the root and for each node along the way, I insert a link into the link table. Then I am able to query all nodes for the whole tree or just a sub-tree if I want. I still have a "parent_id" on each node, so a "gimme all nodes directly below this node" is still possibly as with any adjacency list design.. I just have a tad more book-keeping.. But querying is fast and simply and so is inserts and deletes (since its quite fast to find ALL descendants of any given node).. Moves are a hazzle, but who does this a lot?? I surely don't..&lt;br /&gt;&lt;br /&gt;There might be an "offical word" for this approach but I call it "Linked adjacency list".&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;br /&gt;Node (id, name, parent_id)&lt;br /&gt;--------------&lt;br /&gt;"1";"ROOT";""&lt;br /&gt;"2";"Node 1";"1"&lt;br /&gt;"3";"Node 2";"1"&lt;br /&gt;"4";"Node 3";"1"&lt;br /&gt;"5";"Node 1.1";"2"&lt;br /&gt;"6";"Node 2.1";"3"&lt;br /&gt;"7";"Node 3.1";"4"&lt;br /&gt;"8";"Node 1.1.1";"5"&lt;br /&gt;"9";"Node 1.1.2";"5"&lt;br /&gt;"10";"Node 1.1.1.1";"8"&lt;br /&gt;"11";"Node 3.1.1";"7"&lt;br /&gt;"12";"Node 3.1.1.1";"11"&lt;br /&gt;"13";"Node 3.1.1.1.1";"12"&lt;br /&gt;"14";"Node 3.1.1.1.2";"12"&lt;br /&gt;&lt;br /&gt;Hierarchy (node_id, ancestor_id)&lt;br /&gt;--------------&lt;br /&gt;"2";"1"&lt;br /&gt;"3";"1"&lt;br /&gt;"4";"1"&lt;br /&gt;"5";"1"&lt;br /&gt;"5";"2"&lt;br /&gt;"6";"1"&lt;br /&gt;"6";"3"&lt;br /&gt;"7";"1"&lt;br /&gt;"7";"4"&lt;br /&gt;"8";"1"&lt;br /&gt;"8";"2"&lt;br /&gt;"8";"5"&lt;br /&gt;"9";"5"&lt;br /&gt;"9";"2"&lt;br /&gt;"9";"1"&lt;br /&gt;"10";"8"&lt;br /&gt;"10";"5"&lt;br /&gt;"10";"2"&lt;br /&gt;"10";"1"&lt;br /&gt;"11";"7"&lt;br /&gt;"11";"4"&lt;br /&gt;"11";"1"&lt;br /&gt;"12";"11"&lt;br /&gt;"12";"7"&lt;br /&gt;"12";"4"&lt;br /&gt;"12";"1"&lt;br /&gt;"13";"12"&lt;br /&gt;"13";"11"&lt;br /&gt;"13";"7"&lt;br /&gt;"13";"4"&lt;br /&gt;"13";"1"&lt;br /&gt;"14";"12"&lt;br /&gt;"14";"11"&lt;br /&gt;"14";"7"&lt;br /&gt;"14";"4"&lt;br /&gt;"14";"1"&lt;br /&gt;&lt;br /&gt;This is a simple query of all data below node with id 1 (which is the root node, hence all data) wich select the name of the node and nodes depth in the tree:&lt;br /&gt;&lt;br /&gt;select n.name, count(h2.node_id) as depth&lt;br /&gt;from node n, hierarchy h, hierarchy h2&lt;br /&gt;where h.ancestor_id = 1&lt;br /&gt;and h2.node_id = h.node_id&lt;br /&gt;and n.id = h.node_id&lt;br /&gt;group by n.name&lt;br /&gt;&lt;br /&gt;Which gives the following result:&lt;br /&gt;&lt;br /&gt;Name;Depth&lt;br /&gt;--------------&lt;br /&gt;Node 3;1&lt;br /&gt;Node 1.1.2;3&lt;br /&gt;Node 2;1&lt;br /&gt;Node 3.1.1;3&lt;br /&gt;Node 2.1;2&lt;br /&gt;Node 1.1.1.1;4&lt;br /&gt;Node 3.1;2&lt;br /&gt;Node 1.1;2&lt;br /&gt;Node 1.1.1;3&lt;br /&gt;Node 3.1.1.1.1;5&lt;br /&gt;Node 1;1&lt;br /&gt;Node 3.1.1.1.2;5&lt;br /&gt;Node 3.1.1.1;4&lt;br /&gt;&lt;br /&gt;Quite messy, huh?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-114098265074782595?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/114098265074782595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=114098265074782595' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/114098265074782595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/114098265074782595'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2006/02/hierarchical-data-structures-in.html' title='Hierarchical data structures in relational databases'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-113974636032804271</id><published>2006-02-12T13:02:00.000+01:00</published><updated>2006-02-12T13:12:40.366+01:00</updated><title type='text'>Gimme my mail, James!</title><content type='html'>I am working on a project for which we needed a mail server of some sort. We had some pretty peculiar demands for the mail server and by looking at various servers, we decided to go with &lt;a href="http://james.apache.org"&gt;James&lt;/a&gt;. James is a mail and news server from Apache. I had to change ONE internal bit of James to make it accepts mails (as for local server) for all sub domains of a single top-level domain, so we could add multiple sub domains WITHOUT changing the config.xml file and restarting the server. The rest was simply a matter of creating a few Matchers and some Mailets... Great.. I really enjoyed working with James - its easy and logically as you would except and seems to be performant, as I can easily handle more mails than I expect will go thru the system.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-113974636032804271?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/113974636032804271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=113974636032804271' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/113974636032804271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/113974636032804271'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2006/02/gimme-my-mail-james.html' title='Gimme my mail, James!'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-113967612567414813</id><published>2006-02-11T17:30:00.000+01:00</published><updated>2006-02-11T17:42:05.686+01:00</updated><title type='text'>ME, myself and I</title><content type='html'>It's been awhile - things have been crazy here i Denmark (if you don't know WHY it has been crazy for the state of Denmark, I'm NOT gonna tell ya' - better to stay in oblivia)..&lt;br /&gt;&lt;br /&gt;Well - I finally got around to write some more J2ME code... Working on a rather interesting MIDlet... Anyways - I am stunned how easy it is to write simple apps in the MIDP environment.. Yes, you are somewhat limited and its not the BEST looking GUI you can produce just by using the standard Items, but still - its fairly easy to create a mockup/prototype, even with GPRS communication.. I wonder why you don't see more wireless apps?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-113967612567414813?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/113967612567414813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=113967612567414813' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/113967612567414813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/113967612567414813'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2006/02/me-myself-and-i.html' title='ME, myself and I'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-113602214833358910</id><published>2005-12-31T10:38:00.000+01:00</published><updated>2005-12-31T10:42:28.346+01:00</updated><title type='text'>Putting it right!</title><content type='html'>I could NOT have said it better. &lt;a href="http://jroller.com/page/trasukg?entry=mass_production_hand_cut_dovetails"&gt;READ ME&lt;/a&gt; - although there are many more reasons for people to kling-on to their language of choice.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-113602214833358910?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/113602214833358910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=113602214833358910' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/113602214833358910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/113602214833358910'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2005/12/putting-it-right.html' title='Putting it right!'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-113450057833911078</id><published>2005-12-13T19:53:00.000+01:00</published><updated>2005-12-16T14:52:29.053+01:00</updated><title type='text'>Grab a version and STICK with it</title><content type='html'>Aren't we REALLY in great need to resolve the version/revision issues in java. Ever tried to use e.g. Hibernate with another Open-Source product? Ever praised for the two products to have compatible dependent library versions? I have... And it SUCKS that I have to.. I think we really do need some way of versioning either the class files or the JAR library files, and ofcoz this has to extend to the classloading mechanism aswell. Ohh yes, I started out wanting to bile the commons-* "I-depend-on-just-about-all-other-commons-packages- but-I-thought-it-would-be-funny-NOT-to-pack-it-all-in-one-jar" dependency model, but decided not to - and WHY ohh god WHY are soooo many OS products using the commons-logging crap.. I mean - for the love of god - I can't imagine a single valid reason for using it..&lt;br /&gt;&lt;br /&gt;Update: Is it just me or do we also need an extra scope definition for e.g. methods? I mean - wouldn't it be nice if we had a "archive" scope which was much like the "package" scope, but for classes in same archive (JAR) .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-113450057833911078?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/113450057833911078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=113450057833911078' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/113450057833911078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/113450057833911078'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2005/12/grab-version-and-stick-with-it.html' title='Grab a version and STICK with it'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-113239750020939928</id><published>2005-11-19T11:44:00.000+01:00</published><updated>2005-11-19T11:51:40.220+01:00</updated><title type='text'>Oracle 10g express on debian 3.1</title><content type='html'>Yeah baby - I FINALLY got Oracle 10g express to work on my debian dist. I&lt;br /&gt;had to change quite a few lines in oracle-xe (mostly to do with missing chkconfig on my debian system and some paths) and creating a directory which is NOT std. debian (/etc/sysconfig) and using alien to create a .deb package and finally by using dpkg to install the lot.&lt;br /&gt;Well acutally I installed it twice before it worked, first I simply used alien to install the downloaded RPM package from Oracle.com, then making the above changes and repacking the RPM to .deb, and finally installing the .deb using dpkg.&lt;br /&gt;Then there were NO errors displayed and I am able to browse to http://localhost:8080/htmldb to see admin webapp... Ofcoz this is NOT for a production stable system, but still, it seems to work perfectly...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-113239750020939928?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/113239750020939928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=113239750020939928' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/113239750020939928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/113239750020939928'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2005/11/oracle-10g-express-on-debian-31.html' title='Oracle 10g express on debian 3.1'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-113129878500946015</id><published>2005-11-06T18:24:00.000+01:00</published><updated>2005-11-06T18:39:45.036+01:00</updated><title type='text'>Shall we shack now?</title><content type='html'>Well - Finally - I got really fed up by writing (or wiring) ANT build.xml files, so I started looking at writing a new build system for my various projects... First thought was to implement this in Ruby and along the path learn Ruby (to be fully buzzwork compliant you know :-) ), but then I looked at Groovy.. Now groovy has taken some serious beating in the past so I was kinda biased towards using it, but I decided to give it a fair chance and what do you know -I like it (so far).. Closures, some serious cool language features(add-ons)... So I decided, heck.. MayB Ruby if just the freakin' word of the month.. Groovy seems to be "java on 'roids"! So Im going forwards writing my "make" in groovy..  Groovy!&lt;br /&gt;Update: Its not going to be a (n)make or ANT clone.. I've got some "new" thoughts how this should be done.. hopefully it'll be cool!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-113129878500946015?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/113129878500946015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=113129878500946015' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/113129878500946015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/113129878500946015'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2005/11/shall-we-shack-now.html' title='Shall we shack now?'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-113060234777048947</id><published>2005-10-29T18:01:00.000+02:00</published><updated>2005-10-29T18:49:20.233+02:00</updated><title type='text'>The Zen of XEN</title><content type='html'>Yikes - It's been awhile.. Things have been crazy. I've changed job position since last entry, started working on a few new projects, well enuf' 'bout that.&lt;br /&gt;&lt;br /&gt;Today I sucessfully installed &lt;a href="http://www.cl.cam.ac.uk/Research/SRG/netos/xen/"&gt;Xen&lt;/a&gt; on an old (or elderly) PC of mine. Dom0 (host) running Ubunto Linux v5.04 and two virtual instances (guests), one running ttyLinux and one running a debootstrapped version of Debian. Smooth!! I am planning on a similar setup at work, where each project can be given an instance in a loopback filesystem. Instances can be booted when needed with a single instance running an Oracle DB (well actually Oracle might be hard to put on a virtual instance) and a PostgreSQL db which can be used by all instances when needed..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-113060234777048947?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/113060234777048947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=113060234777048947' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/113060234777048947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/113060234777048947'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2005/10/zen-of-xen.html' title='The Zen of XEN'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-112598916102652356</id><published>2005-09-06T08:38:00.000+02:00</published><updated>2005-09-06T08:46:01.033+02:00</updated><title type='text'>I'll be getting back real soon now</title><content type='html'>Yup - I'm getting wired up again this friday, so there will be no more excuses for me to not blog.&lt;br /&gt;&lt;br /&gt;My ADSL was disconnected, so I ordered some SHDSL instead (2300/2300).. Im pretty excided..  well - till then.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-112598916102652356?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/112598916102652356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=112598916102652356' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/112598916102652356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/112598916102652356'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2005/09/ill-be-getting-back-real-soon-now.html' title='I&apos;ll be getting back real soon now'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-112280981530979367</id><published>2005-07-31T13:24:00.000+02:00</published><updated>2005-07-31T13:36:55.313+02:00</updated><title type='text'>Quality's in the Eye of the Beholder</title><content type='html'>Well it's not quite the end of august yet, but I read a very interesting &lt;a href="http://blogs.sun.com/roller/page/jonathan?entry=defining_quality"&gt;article&lt;/a&gt; today (actually a blog entry) by Jonathan Schwartz, some C?O of Sun. &lt;br /&gt;Anyways - he's describing how Sun changed the way they measure quality, to a very simplistic model.&lt;br /&gt;&lt;br /&gt;Also this is extremely applicable to companies here in Denmark, from your 1-3 guys up to quite large organisations (hell, if Sun can, so can YOU! :-) )&lt;br /&gt;&lt;br /&gt;Basically, you should ask this question to your customers (current):&lt;br /&gt;&lt;br /&gt;Would you recommend "my company"? [ ] YES - [ ] NO (only those two possible answers)&lt;br /&gt;&lt;br /&gt;The same question could/should be asked your employees: Would you recommend "my company" - still only the two possible answers.. Ofcoz its wise to dig into the reasons why or why not, but basically that's it..&lt;br /&gt;&lt;br /&gt;Well.. later!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-112280981530979367?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/112280981530979367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=112280981530979367' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/112280981530979367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/112280981530979367'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2005/07/qualitys-in-eye-of-beholder.html' title='Quality&apos;s in the Eye of the Beholder'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-112222982512962194</id><published>2005-07-24T20:28:00.000+02:00</published><updated>2005-07-24T20:30:25.136+02:00</updated><title type='text'>Sorry..</title><content type='html'>..I'm still on holidays - therefore I will not post anything new just yet...please check back in the end of august&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-112222982512962194?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/112222982512962194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=112222982512962194' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/112222982512962194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/112222982512962194'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2005/07/sorry.html' title='Sorry..'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-111960515692847964</id><published>2005-06-24T11:23:00.000+02:00</published><updated>2005-06-24T11:25:56.933+02:00</updated><title type='text'>One holiday, please! Comin' right up!</title><content type='html'>Yeah yeah yeah .. We're going to Rumania!! yeah yeah yeahhhh&lt;br /&gt;&lt;br /&gt;Later!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-111960515692847964?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/111960515692847964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=111960515692847964' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/111960515692847964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/111960515692847964'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2005/06/one-holiday-please-comin-right-up.html' title='One holiday, please! Comin&apos; right up!'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-111894428622632035</id><published>2005-06-16T19:47:00.000+02:00</published><updated>2005-06-16T20:08:32.436+02:00</updated><title type='text'>C# type delegates in java</title><content type='html'>Well - if you like me ever wanted something much like the C# &lt;i&gt;delegate&lt;/i&gt; or a pointer to a method, in java - this might be for you. Its not &lt;b&gt;quite&lt;/b&gt; there, but this is as close as I could come... Written in notepad on a cloudy evening..&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid #000000; font-family: courier; font-size: 10px;"&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;import java.lang.reflect.*;&lt;br /&gt;&lt;br /&gt;public class Test&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; public void objectCallback(String parameter)&lt;br /&gt; {&lt;br /&gt;  System.out.println("objectCallback("+parameter+")");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void instanceCallback(String parameter)&lt;br /&gt; {&lt;br /&gt;  System.out.println("instanceCallback("+parameter+")");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void add(int val1, int val2, Delegate delegate)&lt;br /&gt; {&lt;br /&gt;  int result = val1 + val2;&lt;br /&gt;  try {&lt;br /&gt;   delegate.delegate(new Object[] { String.valueOf(result) });&lt;br /&gt;  } catch (Exception e) {&lt;br /&gt;   e.printStackTrace();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; public static void main(String[] args) {&lt;br /&gt;  System.out.println("Test start");&lt;br /&gt;  Test test = new Test();&lt;br /&gt;  test.add(3, 3, new Delegate(test, "objectCallback"));&lt;br /&gt;  test.add(3, 3, new Delegate(Test.class, "instanceCallback"));&lt;br /&gt;  System.out.println("Test end");&lt;br /&gt; }  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt; public static class Delegate&lt;br /&gt; {&lt;br /&gt;  private String methodName;&lt;br /&gt;  private Class clazz;&lt;br /&gt;  private Object object;&lt;br /&gt;  &lt;br /&gt;  public Delegate(Class clazz, String methodName)&lt;br /&gt;  {&lt;br /&gt;   this.clazz = clazz;&lt;br /&gt;   this.methodName = methodName;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public Delegate(Object obj, String methodName)&lt;br /&gt;  {&lt;br /&gt;   this.object = obj;&lt;br /&gt;   this.methodName = methodName;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void delegate(Object[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException&lt;br /&gt;  {&lt;br /&gt;   if (object != null) {&lt;br /&gt;    Class objClass = object.getClass();&lt;br /&gt;    Method method = objClass.getMethod(methodName, mapArgs(args));&lt;br /&gt;    method.invoke(object, args);&lt;br /&gt;   } else if (clazz != null) {&lt;br /&gt;    Method method = clazz.getDeclaredMethod(methodName, mapArgs(args));&lt;br /&gt;    if (Modifier.isStatic(method.getModifiers())) &lt;br /&gt;     method.invoke(null, args);&lt;br /&gt;    else&lt;br /&gt;     throw new NoSuchMethodException("Method "+method+" is not static on class "+clazz);&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  private final static Class[] mapArgs(Object[] args)&lt;br /&gt;  {&lt;br /&gt;   if (args != null) {&lt;br /&gt;    Class[] cArray = new Class[args.length];&lt;br /&gt;    for (int i=0;i&amp;lt;args.length;i++) {&lt;br /&gt;     if (args[i] !=  null)&lt;br /&gt;      cArray[i] = args[i].getClass();&lt;br /&gt;     else&lt;br /&gt;      cArray[i] = Object.class;&lt;br /&gt;    }&lt;br /&gt;    return cArray;&lt;br /&gt;   }&lt;br /&gt;   return null;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-111894428622632035?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/111894428622632035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=111894428622632035' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/111894428622632035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/111894428622632035'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2005/06/c-type-delegates-in-java.html' title='C# type delegates in java'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-111817248084686948</id><published>2005-06-07T20:53:00.000+02:00</published><updated>2005-06-07T21:28:00.850+02:00</updated><title type='text'>Agility for the numb</title><content type='html'>Where to start? well - having just read &lt;a href="http://www.agilealliance.org/articles/articles/TheAgileApproach.pdf"&gt;this&lt;/a&gt; I actually first wanted to copy-paste a few paragraphs to get you, the reader, to think about the concept behind an agile approach towards software development. Well I soon found myself out of space on this blog-entry, so I decided not to, but really - you ought be reading the above linked PDF.. Its "Good Stuff"(TM)! &lt;br /&gt;&lt;br /&gt;Anyways, looking back on my career and at the projects in which I have participated I can honestly say not many of them have been following an agile methodology. I have no doubt in my mind some would have been better of, if eg. FDD or ASD had been chosen. &lt;br /&gt;&lt;br /&gt;I think the single most important reason for projects to "fail" is not knowing when the project is successful. Not knowing when your project is successful is guaranteed to never get you there (whereever that might be) - so I say, if you beyond any doubt are able to define the criteria for success before you start the actual implementation, the rest is a matter of principles and choices (even of methodology). This also applies to the tasks currently at hand (which might be part of a larger project).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-111817248084686948?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/111817248084686948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=111817248084686948' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/111817248084686948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/111817248084686948'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2005/06/agility-for-numb.html' title='Agility for the numb'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-111773795829921332</id><published>2005-06-02T20:25:00.000+02:00</published><updated>2005-06-02T20:45:58.303+02:00</updated><title type='text'>Configuration management / Microkernel</title><content type='html'>Not so long ago I started using Commons Configuration for most my configuration needs. Even though I dislike some Commons (especially Commons Logging) packages I really do like the Commons Configuration package. Its neat and the XMLConfiguration is indeed useful. Well - anyways, I've been a strong believer in microkernels (or atleast the idea behind the microkernel pattern), but sometimes this leads to each "kernlet" having to configure itself and what about re-configurations of a running system? (perhaps simply by changing the value of a node in an XML config file) What if we had a microkernel capable of reading a "master" config file, describing which "kernlets" should be started and each kernlet was infact a javabean. Then by using the java.beans package and all its goodies, kernlets were able to be notified when-ever a property changed and they were able to veto a property-changed-event if such an event was not wanted at the time being. Hmmm.. throw in some JMX capabilities too and you might just have yourself a sweet kernel...(now dont scream JBO$$ kernel, please!!  *pfft*)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-111773795829921332?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/111773795829921332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=111773795829921332' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/111773795829921332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/111773795829921332'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2005/06/configuration-management-microkernel.html' title='Configuration management / Microkernel'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-111713201896779824</id><published>2005-05-26T20:22:00.000+02:00</published><updated>2005-05-26T20:26:58.970+02:00</updated><title type='text'>I am telling you...</title><content type='html'>I am telling you - the java.beans package is so under-estimated by most developers, that they ought to be ashamed...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-111713201896779824?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/111713201896779824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=111713201896779824' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/111713201896779824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/111713201896779824'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2005/05/i-am-telling-you.html' title='I am telling you...'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-111696370769175617</id><published>2005-05-24T21:33:00.000+02:00</published><updated>2005-05-24T21:41:47.696+02:00</updated><title type='text'>Axis Custom BeanSerializer</title><content type='html'>I've noticed many of this blogs visitors have searched google for axis bean serializer. I've had a chat with my boss regarding open-sourcing our custom axis bean serializer (see previous &lt;a href="http://lborupj.blogspot.com/2005/04/axis-custom-beanserializer.html"&gt;post&lt;/a&gt;), but this is yet to be determined. Anyways - I was thinking about implementing a much more generic one, but I want to know whether people are acutally interessed in such a serializer or if you guys are more interessed in knowing how the current implementation works (users guide)? Any thoughts?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-111696370769175617?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/111696370769175617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=111696370769175617' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/111696370769175617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/111696370769175617'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2005/05/axis-custom-beanserializer.html' title='Axis Custom BeanSerializer'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-111677114573424664</id><published>2005-05-22T15:38:00.000+02:00</published><updated>2005-05-22T16:12:25.740+02:00</updated><title type='text'>Tapestry update</title><content type='html'>Well - as previously mentioned I've startet developing a web application using Tapestry as framework. Tapestry has a clear seperation of concerns which is why I chose to look at it in the first place. &lt;br /&gt;&lt;br /&gt;Many JSP developers think that implementing and using custom tags is a clear seperation of concern from layout and logic but I party disagree. &lt;br /&gt;Whether you use a &lt;br /&gt;&lt;br /&gt;&amp;lt;c:foreach...&amp;gt; &lt;br /&gt;&lt;br /&gt;or a &lt;br /&gt;&lt;br /&gt;&amp;lt;% for(Iterator i in coll.iterator;i.hasNext();) %&amp;gt; &lt;br /&gt;&lt;br /&gt;is practically the same. You still have logic (looping) in your layout, but using the foreach tag is ofcoz to be preferred (the lesser evil).&lt;br /&gt;&lt;br /&gt;Tapestry on the other hand does things alot different which is a step in the right direction in my opinion.&lt;br /&gt;Let me show you an example using the above looping first in JSP, then the tapestry way:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;table border="0"&amp;gt;&lt;br /&gt;&amp;lt;c:forEach var="item" items="${myBean.items}"&amp;gt;&lt;br /&gt;  &amp;lt;tr&amp;gt;&lt;br /&gt;    &amp;lt;td&amp;gt; &amp;lt;c:out value="${item.returnString}"/&amp;gt; &amp;lt;td&amp;gt;&lt;br /&gt;  &amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;/c:forEach&amp;gt;&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Extremely simple JSP fragment iteration thru a collection of a context bound bean named "myBean". Each entry in the collection is bound in page-context by name "item" and referenced in the c:out part, where the method "returnString" is called on each item. Nothing fancy, just plain and simple... &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;table border="0"&amp;gt;&lt;br /&gt;  &amp;lt;tr jwcid="foreach"&amp;gt;&lt;br /&gt;    &amp;lt;td&amp;gt; &amp;lt;span jwcid="string"&amp;gt;Some text 1&amp;lt;/span&amp;gt;   &amp;lt;td&amp;gt;&lt;br /&gt;  &amp;lt;tr&amp;gt;&lt;br /&gt;  &amp;lt;tr jwcid="$remove$"&amp;gt;&lt;br /&gt;    &amp;lt;td&amp;gt; &amp;lt;span jwcid="string"&amp;gt;Some text 2&amp;lt;/span&amp;gt;  &amp;lt;td&amp;gt;&lt;br /&gt;  &amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The above is pretty much the same as the JSP example except its possible to edit this in a normal HTML editor and there is NO logic what-so-ever in the presentation layer. No saying which property of which bean we're looping thru and which property for each item should be presented in the TD section... All this is done in either the page or component specification (of tapestry).&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;component id="foreach" type="Foreach"&amp;gt;&lt;br /&gt;  &amp;lt;binding name="source" expression="myBean.collection"/&amp;gt;&lt;br /&gt;  &amp;lt;binding name="value" expression="value"/&amp;gt;&lt;br /&gt;&amp;lt;/component&amp;gt;&lt;br /&gt;    &lt;br /&gt;&amp;lt;component id="string" type="Insert"&amp;gt;&lt;br /&gt;  &amp;lt;binding name="value" expression="value.returnString"/&amp;gt;&lt;br /&gt;&amp;lt;/component&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Well - You'd probably have to have some knowledge of Tapestry to get the full picture here, but basically its saying:&lt;br /&gt;&lt;br /&gt;Theres a component called "foreach" (jwcid="foreach" in HTML) which is "substituted" by a real Foreach component, which will loop thru myBean.collection and each item is bound to a property called value.&lt;br /&gt;Then there's a component called "string" (jwcid="string" in HTML) which is "substituted" by a real Insert component (much like c:out) which will take the value from value.returnString and insert into HTML output. &lt;br /&gt;&lt;br /&gt;Damn simple and powerful.. &lt;br /&gt;&lt;br /&gt;Well - to finish this off I'll say that the above examples are made just-out-of-my-head and might not "compile", but should give a decent picture of the game. As for the jwcid="$remove$" part, look itup in the tapestry users manual.. You'll see why that is smart... :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-111677114573424664?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/111677114573424664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=111677114573424664' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/111677114573424664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/111677114573424664'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2005/05/tapestry-update.html' title='Tapestry update'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-111634757086971276</id><published>2005-05-17T18:19:00.000+02:00</published><updated>2005-05-17T18:45:14.080+02:00</updated><title type='text'>VW Golf II Vintage</title><content type='html'>Once again my somewhat vintage VW Golf II '90 has played me a trick. When I say vintage I actually mean old piece of crap thats just cost me enough money so I dont want to sell it... Remember theres a 180% TAX on cars in Denmark!! Yup - you read it right.. 180%..&lt;br /&gt;&lt;br /&gt;Well - anyways, I was in a traffic-jam, when the idle just felt ahemm different.. Well - I thought it might be the over-heating fan that just kicking in, but when I started to drive I knew just what had happened.. :-( My exhaust-pipe broke just before the muffler leaving me with a LOUD noisy car...   Theres a reason for people calling my Golf for a "tractor" :-)&lt;br /&gt;&lt;br /&gt;Well - just another one of THOSE days I guess.. I digress..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-111634757086971276?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/111634757086971276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=111634757086971276' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/111634757086971276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/111634757086971276'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2005/05/vw-golf-ii-vintage.html' title='VW Golf II Vintage'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11557283.post-111625320930005666</id><published>2005-05-16T16:12:00.000+02:00</published><updated>2005-05-16T16:20:09.306+02:00</updated><title type='text'>Tapestry</title><content type='html'>Today I installed &lt;a href="http://jakarta.apache.org/tapestry"&gt;Tapestry&lt;/a&gt; for the very first time. &lt;br /&gt;I've used Struts for a couple of projects but never really did like struts for anything other than a simple action-oriented application. I know you're able to emulate some sort of portal behaviour using Tiles and letting other action be included in the tiles-def, but still - its not what I want.&lt;br /&gt;&lt;br /&gt;Tapestry on the other hand seems totally different from the normal request/response kinda frameworks alltogether and I can't wait to get more acquainted with it..&lt;br /&gt;&lt;br /&gt; Will post a follow-up once I get the hang of it.. till then!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11557283-111625320930005666?l=lborupj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lborupj.blogspot.com/feeds/111625320930005666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11557283&amp;postID=111625320930005666' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/111625320930005666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11557283/posts/default/111625320930005666'/><link rel='alternate' type='text/html' href='http://lborupj.blogspot.com/2005/05/tapestry.html' title='Tapestry'/><author><name>lborupj</name><uri>http://www.blogger.com/profile/02921555657283185092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
