<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-19446453</id><updated>2008-12-18T01:20:17.168+01:00</updated><title type='text'>Bent Andre Solheim Blog</title><subtitle type='html'>This is the Blog of Bent André Solheim. Here I will blog about some of my thoughts and notes about work and programming related issues.
&lt;br/&gt;&lt;br/&gt;
&lt;a href="http://www.linkedin.com/in/bentandresolheim" &gt;&lt;img src="http://www.linkedin.com/img/webpromo/btn_myprofile_160x33.gif" width="160" height="33" border="0" alt="View Bent-André Solheim's profile on LinkedIn"&gt;&lt;/a&gt;
&lt;br/&gt;</subtitle><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default'/><link rel='alternate' type='text/html' href='http://solheimweb.com/klog/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default?start-index=26&amp;max-results=25'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://solheimweb.com/klog/atom.xml'/><author><name>Bent André Solheim</name><uri>http://www.blogger.com/profile/09972289210283225024</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>42</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-19446453.post-116427869345412678</id><published>2006-11-23T11:41:00.000+01:00</published><updated>2006-11-23T15:55:57.326+01:00</updated><title type='text'>Note to self: How to import a certificate in Java</title><content type='html'>Every time I need to import a certificate in Java to get access to some https resource I have to google for the command. Now I don't have to do that any more:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;%JAVA_HOME%\bin\keytool -keystore     %JAVA_HOME%/jre/lib/security/cacerts     -import -file c:/server.cert&lt;br /&gt;&lt;br /&gt;Enter keystore password:  changeit&lt;br /&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/116427869345412678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19446453&amp;postID=116427869345412678' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/116427869345412678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/116427869345412678'/><link rel='alternate' type='text/html' href='http://solheimweb.com/klog/2006/11/note-to-self-how-to-import-certificate.html' title='Note to self: How to import a certificate in Java'/><author><name>Bent André Solheim</name><uri>http://www.blogger.com/profile/09972289210283225024</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19446453.post-116368896946479625</id><published>2006-11-16T15:25:00.000+01:00</published><updated>2006-11-16T15:56:11.300+01:00</updated><title type='text'>The Apple iPhone Brand Mistake</title><content type='html'>There have been rumors about Apple working on a cellphone for years. To my knowledge Apple has never confirmed these rumors, but recently Hon Hai Precision Industry in Taiwan has confirmed that they have a contract with Apple to produce 12 million phones with integrated mp3 player. I have read several places that people consider this a confirmation from Apple that they are producing the iPhone.&lt;br /&gt;&lt;br /&gt;I could not disagree more, and I really hope that I am right. Ever since cellphones came with calendars, cameras, mp3 players, email, Java and what not, people are using their "phones" for more and more tasks unrelated to making phone calls. In my opinion, a regular cell phone to day is not so much a telephone as it is a multimedia device or a personal planner. There are really no reasons for this ubiquitous gadget to be called a phone or anything similar.&lt;br /&gt;&lt;br /&gt;My point is as follows; The iPod is a known brand loved through out the world. The devices Nokia, Sony Ericsson, Motorola and company call phones are in my opinion closer to the iPod in functionality than to a telephone. It would be a huge mistake by Apple to brand their communication capable device anything other than an iPod. They are in the position to rename, or rebrand, a device owned by most people beyond the age of 12 in a large portion of the world. Imagine the power; nobody calls their phones phones anymore. They are all pods, or something similar. And Apple will pretty much own this new name. Calling their new device iPhone, Apple will lose this opportunity.&lt;br /&gt;&lt;br /&gt;I realize I am not very good at coming up with good product names. My suggestions below are pretty pathetic. But I know a bad name when I hear one. At least I think I do... ;)&lt;br /&gt;&lt;br /&gt; * iPod Talk&lt;br /&gt; * iPod Connected&lt;br /&gt; * iPod Communicator</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/116368896946479625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19446453&amp;postID=116368896946479625' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/116368896946479625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/116368896946479625'/><link rel='alternate' type='text/html' href='http://solheimweb.com/klog/2006/11/apple-iphone-brand-mistake.html' title='The Apple iPhone Brand Mistake'/><author><name>Bent André Solheim</name><uri>http://www.blogger.com/profile/09972289210283225024</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19446453.post-116326651123835125</id><published>2006-11-11T18:02:00.000+01:00</published><updated>2006-11-11T18:35:11.296+01:00</updated><title type='text'>Embedding a Wiki</title><content type='html'>On one of the projects I'm currently involved with, we are building a web based Java application with a fairly complex problem domain. In addition to general user documentation, the customer also want the ability maintain their own documentation about the domain, and link to documents they already have in their document archives. To stay within budget, we could not spend much time implementing the feature.&lt;br /&gt;&lt;br /&gt;It immediately struck me that embedding a Java based wiki would solve the problem well. Wikis are tailored for this particular need, and I knew that there are several existing  free Java based wikis available. The required features of the wiki we needed was that it supported attachments, stored data on the file system and was easy to set up. As I have used XWiki in the past, I reviewed that implementation first. Although XWiki is highly configurable and flexible, it is too complex for the simple requirements we have. I then looked at JspWiki. JspWiki is not as feature rich as XWiki, and is simpler to set up, but I had trouble getting file attachments work out of the box, and the security set up was just too much.&lt;br /&gt;&lt;br /&gt;I was about to Google for another wiki implementation when I was made aware of &lt;a href="http://www.wikimatrix.org/"&gt;Wiki Matrix&lt;/a&gt;. Wiki Matrix is a web site that lets you compare wikis and help you find a wiki based on your requirements. Using the wizard, I found that &lt;a href="http://www.vqwiki.org/"&gt;VQWiki&lt;/a&gt; suited our needs best. Extremely easy to set up. I was up and running in a seconds. It is also feature rich; printer friendly versions of pages, free text search, history ... I can warm heartedly recommend VQWiki if you need to embed an easy to set up, feature rich wiki.&lt;br /&gt;&lt;br /&gt;Also, Wiki Matrix is really useful!</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/116326651123835125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19446453&amp;postID=116326651123835125' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/116326651123835125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/116326651123835125'/><link rel='alternate' type='text/html' href='http://solheimweb.com/klog/2006/11/embedding-wiki.html' title='Embedding a Wiki'/><author><name>Bent André Solheim</name><uri>http://www.blogger.com/profile/09972289210283225024</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19446453.post-116311525533555724</id><published>2006-11-10T00:33:00.000+01:00</published><updated>2006-11-16T16:15:25.260+01:00</updated><title type='text'>Guard Clauses and Composed Methods</title><content type='html'>As I have told you before, I have worked with several legacy systems  so far in my career. Most of these systems have had code that was hard to read and understand. When working with the code to increase readability, I find myself doing the same two refactorings over and over again. In fact, I find myself doing these refactorings pretty much all the time when writing new code aswell.&lt;br /&gt;&lt;br /&gt;The first one is &lt;a href="http://www.refactoring.com/catalog/replaceNestedConditionalWithGuardClauses.html"&gt;Replace Nested Conditionals with Guard Clauses&lt;/a&gt;. Nested Conditionals, also called the &lt;a href="http://c2.com/cgi/wiki?ArrowAntiPattern"&gt;the Arrow Anti-pattern&lt;/a&gt;, is when a method has conditional logic that makes it unclear what the normal path of execution is. Let me give you an example;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Result res;&lt;br /&gt;if (user.privileges.get("admin") != null) {&lt;br /&gt;   if (connectionPool != null) {&lt;br /&gt;       if (connectionPool.hasAvailableConnections()) {&lt;br /&gt;           if (webService != null) {&lt;br /&gt;               res = doSomethingWithDbAndWs(&lt;br /&gt;                   connectionPool.connection(), webService);    &lt;br /&gt;           } else {&lt;br /&gt;               res = null;&lt;br /&gt;           }&lt;br /&gt;       } else {&lt;br /&gt;           res = null;&lt;br /&gt;       }&lt;br /&gt;   } else {&lt;br /&gt;       res = null;&lt;br /&gt;   }&lt;br /&gt;} else {&lt;br /&gt;   res = null;&lt;br /&gt;}&lt;br /&gt;return res;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Although the essence of this method is not complex, the nested conditionals make it very hard to get a feeling of the logic. Refactoring to use guard clauses makes it much easier to read;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;if (user.privileges.get("admin") == null) return null;&lt;br /&gt;if (connectionPool == null) return null;&lt;br /&gt;if (!connectionPool.hasAvailableConnections()) return null;&lt;br /&gt;if (webService == null) return null;&lt;br /&gt;&lt;br /&gt;return doSomethingWithDbAndWs(connectionPool.connection(), webService);    &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Returning from the method as quickly as you possibly can will often improve readability and reduce its cyclomatic complexity. Cyclomatic complexity is a measure of how many distinct paths there are through code, and studies show a correlation between a program's cyclomatic complexity and its error frequency. You should use Guard Clauses whenever you can.&lt;br /&gt;&lt;br /&gt;The second refactoring I tend to come back to is &lt;a href="http://www.industriallogic.com/xp/refactoring/composeMethod.html"&gt;Compose Method&lt;/a&gt;. Compose Method is much harder to explain than Guard Clauses, because there are no defined steps to perform to complete the refactoring. In his book "Refactoring to Patterns", Joshua Kerievsky explains it as a "[transformation of] the logic into a small number of intention-revealing steps at the same level of detail". This will result in programs with many small methods, each a few lines long. Let me give you an example (I stole this from Refactoring to Patterns);&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public void add(Object element) {&lt;br /&gt;    if (!readOnly) {&lt;br /&gt;        int newSize = size + 1;&lt;br /&gt;        if (newSize &amp;gt; elements.length) {&lt;br /&gt;            Object[] newElements = new Object[elements.length + 10];&lt;br /&gt;            for (int i=0; i&amp;lt;size; i++) {&lt;br /&gt;                newElements[i] = elements[i];&lt;br /&gt;            }&lt;br /&gt;            elements = newElements;&lt;br /&gt;        }&lt;br /&gt;        elements[size++] = element;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I cannot rapidly see what this code does. I have to read through it thoroughly to understand the logic. Performing the Extract Method refactoring a couple of times makes for a whole different experience:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public void add(Object element) {&lt;br /&gt;    if (readOnly)&lt;br /&gt;        return;&lt;br /&gt;    if (atCapacity()) {&lt;br /&gt;       grow();&lt;br /&gt;    }&lt;br /&gt;    addElement(element);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;There are several reasons why the refactored version is earsier to read. It is much shorter, and it is now composed of method calls to well named methods that describe what operations are performed. In addition we converted the nested conditionals to guard clauses.&lt;br /&gt;&lt;br /&gt;If you consistently apply Composed Method, you will find that most of your code comments will be superfluous; your methods will be self documenting. In the long run, self documenting composed methods are easy to maintain.&lt;br /&gt;&lt;br /&gt;I find Guard Clauses and Composed Methods to be two extremely important techniques for writing maintainable code. If you do not have any experience with either, I would recommend you take steps to learn them both. It will pay off, guaranteed!</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/116311525533555724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19446453&amp;postID=116311525533555724' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/116311525533555724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/116311525533555724'/><link rel='alternate' type='text/html' href='http://solheimweb.com/klog/2006/11/guard-clauses-and-composed-methods_10.html' title='Guard Clauses and Composed Methods'/><author><name>Bent André Solheim</name><uri>http://www.blogger.com/profile/09972289210283225024</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19446453.post-116264076545616179</id><published>2006-11-04T12:06:00.000+01:00</published><updated>2006-11-04T15:52:37.413+01:00</updated><title type='text'>New Monitor</title><content type='html'>The last year my desktop has seen a lot of monitor setup changes. Early this year I had only my laptop. Getting an additional 17" was truely amazing. Especially when programming, screen real estate is very important. More information available at the same time, without having to scroll and switch views, is a major boost to productivity. The months following, in addition to my laptop, I had a 19", 20", and now, finally I have a 24".&lt;br /&gt;&lt;br /&gt;The 24" Dell monitor arrived yesterday. This panel is pretty close to what I call an optimal monitor size. Any bigger than this, and you have to tilt your head to see everything that is displayed. You don't have to do this with 24", but it is still huge! I love this monitor! With its 1920x1200 resolution, you can fit lots windows on it, and the twenty four inches make the physical sizes of the windows viewable aswell. My laptop resultion is also 1920x1200, but with only 17" everything is tiny.&lt;br /&gt;&lt;br /&gt;I was adviced by my colleagues that I should buy two of these monitors aslong as I was buying... I'm quite happy with only one, but is two 24" panels the optimal setup? I can imagine it is...</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/116264076545616179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19446453&amp;postID=116264076545616179' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/116264076545616179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/116264076545616179'/><link rel='alternate' type='text/html' href='http://solheimweb.com/klog/2006/11/new-monitor.html' title='New Monitor'/><author><name>Bent André Solheim</name><uri>http://www.blogger.com/profile/09972289210283225024</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19446453.post-116205820639263678</id><published>2006-10-28T19:45:00.001+02:00</published><updated>2006-10-28T19:56:46.393+02:00</updated><title type='text'>My shared clips from Google Reader</title><content type='html'>A couple of weeks ago, I switched from Opera to Google Reader as my primary RSS reader. So far I am very happy, and I have also created a public feed where I post entries from the feeds I subscribe to that I find particularily interesting.&lt;br /&gt;&lt;br /&gt;You can view the page in HTML form &lt;a href="http://www.google.com/reader/shared/09355473215456800507"&gt;here&lt;/a&gt;, or you can add &lt;a href="http://www.google.com/reader/public/atom/user/09355473215456800507/state/com.google/broadcast"&gt;&lt;br /&gt;this URL&lt;/a&gt; to your RSS reader.&lt;br /&gt;&lt;br /&gt;I find this a very quick and convenient way to share and tag the things like, and if you have a similar feed, slip me a note so I can see what you like.</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/116205820639263678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19446453&amp;postID=116205820639263678' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/116205820639263678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/116205820639263678'/><link rel='alternate' type='text/html' href='http://solheimweb.com/klog/2006/10/my-shared-clips-from-google-reader_28.html' title='My shared clips from Google Reader'/><author><name>Bent André Solheim</name><uri>http://www.blogger.com/profile/09972289210283225024</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19446453.post-116124335796930998</id><published>2006-10-19T09:29:00.000+02:00</published><updated>2006-10-19T10:51:16.263+02:00</updated><title type='text'>Clever One from butunclebob.com: Part 1</title><content type='html'>As it turns out, pretty much everything I write about can be considered a series of some sort. Here is the latest one: Clever one from butunclebob.com. It will cover blog entries from butunclebob.com that I find very good.&lt;br /&gt;&lt;br /&gt;The first entry is an article; The Craftsman 49: Brown Bag VI: Abstract Factory. It appears to be a discussion of the Abstract Factory pattern, but as it turns out in the end the message Robert Martin is conveying is something different. Read it, it's quite good!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.objectmentor.com/omReports/articles/Craftsman49BrownBagVI.pdf"&gt;Craftsman49BrownBagVI.pdf&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/116124335796930998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19446453&amp;postID=116124335796930998' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/116124335796930998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/116124335796930998'/><link rel='alternate' type='text/html' href='http://solheimweb.com/klog/2006/10/clever-one-from-butunclebobcom-part-1.html' title='Clever One from butunclebob.com: Part 1'/><author><name>Bent André Solheim</name><uri>http://www.blogger.com/profile/09972289210283225024</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19446453.post-116103384938270961</id><published>2006-10-16T22:49:00.000+02:00</published><updated>2006-10-16T23:24:09.463+02:00</updated><title type='text'>Usefull Eclipse plugins: Part 1</title><content type='html'>You regular readers out there may have noticed I just started a series I called Usefull Firefox plugins. Well, today I'm starting another series I'm calling Usefull Eclipse plugins. Unsurprisingly, I will cover Eclipse plugins I find usefull in my day to day work.&lt;br /&gt;&lt;br /&gt;The first plugin to hit the fan is the Simian UI. You can find it at &lt;a href="http://www.integility.com/simian_ui"&gt;http://www.integility.com/simian_ui&lt;/a&gt;. I'm actually starting at an odd end of my plugin list here. I don't find myself using Simian UI all the time, but when I need it it's certainly handy.&lt;br /&gt;&lt;br /&gt;So far in my career, I have been so fortunate to work on several legacy code bases. Legacy code bases provide a special kind of challenge as they often lack unit tests and documentation, and is littered with duplicated code, all of which make the code hard to work with. Simian UI help with the latter problem; identifying duplicated code. It integrates nicely with Eclipse and highlights areas of code that have been duplicated elsewhere. An invaluable tool for getting an overview and for refactoring.&lt;br /&gt;&lt;br /&gt;Thats all for now. Stay tuned for more Usefull Eclipse plugins. Part 2 will cover a plugin for synchronizing folders, and why on earth you would need such functionality.</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/116103384938270961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19446453&amp;postID=116103384938270961' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/116103384938270961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/116103384938270961'/><link rel='alternate' type='text/html' href='http://solheimweb.com/klog/2006/10/usefull-eclipse-plugins-part-1.html' title='Usefull Eclipse plugins: Part 1'/><author><name>Bent André Solheim</name><uri>http://www.blogger.com/profile/09972289210283225024</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19446453.post-116074680222083802</id><published>2006-10-13T15:11:00.001+02:00</published><updated>2006-10-13T15:42:00.320+02:00</updated><title type='text'>Usefull Firefox plugins: Part 1</title><content type='html'>Welcome to the first post in a series about plugins to Firefox I find useful in my day to day work. I have been using Firefox more and more recently, and I'm starting to explore the vast repository of plugins available.&lt;br /&gt;&lt;br /&gt;The first plugin I present is the ColorZilla plugin by Alex Sirota. It is a color chooser, that lets you pick any pixel on any webpage and see the hex and rgb codes for that pixel. Very simple, but very useful.&lt;br /&gt;&lt;br /&gt;You can find it at &lt;a href="https://addons.mozilla.org/firefox/271/"&gt;https://addons.mozilla.org/firefox/271/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Stay tuned for more on this topic! Also, don't hesitate to drop me a comment with tips for future posts!</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/116074680222083802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19446453&amp;postID=116074680222083802' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/116074680222083802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/116074680222083802'/><link rel='alternate' type='text/html' href='http://solheimweb.com/klog/2006/10/usefull-firefox-plugins-part-1_13.html' title='Usefull Firefox plugins: Part 1'/><author><name>Bent André Solheim</name><uri>http://www.blogger.com/profile/09972289210283225024</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19446453.post-115808677081841130</id><published>2006-09-12T20:41:00.000+02:00</published><updated>2006-09-12T20:46:10.843+02:00</updated><title type='text'>Sun hires JRuby developers</title><content type='html'>WEE!&lt;br /&gt;&lt;br /&gt;It is finally happening, and as I have hoped for a long time. Sun is now hiring the two main developers of JRuby. Read the story &lt;a href="http://www.ddj.com/blog/javablog/archives/2006/09/jruby_and_java.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;With Visual Basic, and now JRuby, this truely verifies Sun devotion to putting more languages on the VM. Makes me happy!</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/115808677081841130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19446453&amp;postID=115808677081841130' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/115808677081841130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/115808677081841130'/><link rel='alternate' type='text/html' href='http://solheimweb.com/klog/2006/09/sun-hires-jruby-developers.html' title='Sun hires JRuby developers'/><author><name>Bent André Solheim</name><uri>http://www.blogger.com/profile/09972289210283225024</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19446453.post-114711965271413469</id><published>2006-05-08T22:02:00.000+02:00</published><updated>2006-05-08T22:20:54.463+02:00</updated><title type='text'>When motivation for working on your current code base fades</title><content type='html'>Michael Feathers writes about how to stay motivated when working with the Lame Duck Code Base; a code base nobody really want to touch because it's not going to be used for some reason.&lt;br /&gt;&lt;br /&gt;If nobody else care about the code base, find some way to make it matter to you! If it is a messy legacy system, use it as way to gain experience handeling its intricacies. Find a way to learn something while working on the project.&lt;br /&gt;&lt;br /&gt;Anyways; Michael Feathers &lt;a href="http://www.butunclebob.com/ArticleS.MichaelFeathers.LameDuck"&gt;says it better&lt;/a&gt;. I really like the points he is making.</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/114711965271413469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19446453&amp;postID=114711965271413469' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/114711965271413469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/114711965271413469'/><link rel='alternate' type='text/html' href='http://solheimweb.com/klog/2006/05/when-motivation-for-working-on-your.html' title='When motivation for working on your current code base fades'/><author><name>Bent André Solheim</name><uri>http://www.blogger.com/profile/09972289210283225024</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19446453.post-114674174767662819</id><published>2006-05-04T13:07:00.000+02:00</published><updated>2006-05-04T13:22:27.693+02:00</updated><title type='text'>Finally an attractive desktop background.</title><content type='html'>I have never been a fan of desktop backgrounds. It has never really mattered to me what the desktop looked like. A few minutes ago I was made aware of this really, REALLY cool desktop background program that regularly updates the background with an image of the earth, with weather and daylight. It's even got city lights in the night areas! Finally a desktop background to my taste! :) &lt;a href="http://codefromthe70s.org/desktopearth_dl.asp"&gt;Check it out&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://codefromthe70s.org/images/desktopearth_sample.png"&gt;&lt;/img&gt;&lt;/center&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/114674174767662819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19446453&amp;postID=114674174767662819' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/114674174767662819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/114674174767662819'/><link rel='alternate' type='text/html' href='http://solheimweb.com/klog/2006/05/finally-attractive-desktop-background.html' title='Finally an attractive desktop background.'/><author><name>Bent André Solheim</name><uri>http://www.blogger.com/profile/09972289210283225024</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19446453.post-114599105585747808</id><published>2006-04-25T20:30:00.000+02:00</published><updated>2006-04-26T08:12:28.466+02:00</updated><title type='text'>World of Warcraft is fun - even for non players</title><content type='html'>I really don't know much about World of Warcraft. I have never played it. I do know, however, that as your character in the game gains experience, some of the challenges you face get so hard that you have to organize an entire crew, make strategies and retry several times untill you finally make it. Since you have to put so much effort into making these challenges, I can imagine the frustration when an attempt fails; especially if the failure is because of a deliberate sabotage by one of the guys in the crew. I must have watched &lt;a href="http://video.google.com/videoplay?docid=-6582317322132450178&amp;q=leroy+jenkins&amp;pl=true"&gt;this video&lt;/a&gt; ten times. Coffe came out my nose the first time I watched it.&lt;br /&gt;&lt;br /&gt;Okay, let's do this! LEROOOOY JEEEEENKIIINNNNSSS!!!&lt;br /&gt;&lt;br /&gt;A bit off topic post there, but I just had to let you know! ;)</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/114599105585747808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19446453&amp;postID=114599105585747808' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/114599105585747808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/114599105585747808'/><link rel='alternate' type='text/html' href='http://solheimweb.com/klog/2006/04/world-of-warcraft-is-fun-even-for-non.html' title='World of Warcraft is fun - even for non players'/><author><name>Bent André Solheim</name><uri>http://www.blogger.com/profile/09972289210283225024</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19446453.post-114199960161688685</id><published>2006-04-02T15:06:00.000+02:00</published><updated>2006-11-15T11:29:48.423+01:00</updated><title type='text'>Vmware Player for testing Linux</title><content type='html'>This post has been due for a couple of weeks now. Sorry about that.&lt;br /&gt;&lt;br /&gt;A few weekends ago, I downloaded and installed the &lt;a href="http://www.vmware.com/products/player/"&gt;VMware Player&lt;/a&gt;. Just to experiment a little and to see how it worked. I have to admit I was quite impressed.&lt;br /&gt;&lt;br /&gt;VMware Player is a free software solution for running virtual machines. You can use other commercial VMware software to create virtual machines, or you can download and use one of the many existing pre-build virtual machines &lt;a href="http://www.vmware.com/vmtn/appliances/"&gt;available&lt;/a&gt;. In my experiment, I used the &lt;a href="http://www.vmware.com/vmtn/appliances/ubuntu.html"&gt;Ubuntu Linux&lt;/a&gt; vm.&lt;br /&gt;&lt;br /&gt;If you want to experiment with Linux, I cannot imagine an easier way to get started. Just start the VMware Player and run the virtual machine you downloaded. After loading for a couple of seconds, Ubuntu Linux pops up on you screen. I didn't spend much time tinkering with Gnome - for instance, I don't know if it's possible to go beyond 1024x768 resolution - but I started FireFox and instantly found myself surfing the web. I downloaded and installed Java 5 and Tomcat 5.5.15. The really cool part here is that the virtual machine gets its own IP address, so I could actually access the Tomcat instance I installed in the virtual machine from the machine the vm ran on! How cool is that? I don't think other computers on the network can access the Tomcat instance, because the VM didn't show up on the client list of my DHCP server, but VMware has other software that lets you do just that.&lt;br /&gt;&lt;br /&gt;Overall, a really great experience. Now I just have to think of some way to start using this where I work. It would be really useful to have a virtual machine of our front end server to test if the software I developed on my Windows machine really runs on the server before actually going live.</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/114199960161688685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19446453&amp;postID=114199960161688685' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/114199960161688685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/114199960161688685'/><link rel='alternate' type='text/html' href='http://solheimweb.com/klog/2006/04/vmware-player-for-testing-linux.html' title='Vmware Player for testing Linux'/><author><name>Bent André Solheim</name><uri>http://www.blogger.com/profile/09972289210283225024</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19446453.post-114216917824290162</id><published>2006-03-12T13:51:00.000+01:00</published><updated>2006-03-12T14:24:43.603+01:00</updated><title type='text'>SUPER for Converting Between Video Formats</title><content type='html'>About a year ago, I started looking for a codec for viewing videos recorded in the 3gp format (Sony Ericsson phones). One would think that should be an easy task, but it wasn't. I spent quite a while searching before a found a codec-pack that played the videos. And as it turned out, they would only play in mplayer classic.&lt;br /&gt;&lt;br /&gt;Although the solution was suboptimal, I settled on it. But it didn't last long; I soon wanted to include my clips in some home-videos I edited for entertainment in a couple of my friends wedding. The search for a video converter uncovered &lt;a href="http://www.erightsoft.com/SUPER.html"&gt;SUPER&lt;/a&gt; (Simplified Universal Player Encoder &amp; Renderer). The user interface is very simple, and it can play and convert between pretty much any video formats I can name plus quite a few others.&lt;br /&gt;&lt;br /&gt;If you need to convert some video or open a video in a format not supported natively by Windows, chances are SUPER can help you out.&lt;br /&gt;&lt;br /&gt;And; almost forgot to mention... Its totally free! :)&lt;br /&gt;&lt;br /&gt;&lt;img src="http://solheimweb.com/klogimg/super.gif"&gt;&lt;/img&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/114216917824290162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19446453&amp;postID=114216917824290162' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/114216917824290162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/114216917824290162'/><link rel='alternate' type='text/html' href='http://solheimweb.com/klog/2006/03/super-for-converting-between-video.html' title='SUPER for Converting Between Video Formats'/><author><name>Bent André Solheim</name><uri>http://www.blogger.com/profile/09972289210283225024</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19446453.post-114175501492093297</id><published>2006-03-07T19:01:00.000+01:00</published><updated>2006-03-12T14:29:05.443+01:00</updated><title type='text'>MyEclipse to Port Matisse to Eclipse</title><content type='html'>I just had to drop a line about a news item I just picked up. For those of you that don't already know, &lt;a href="http://www.netbeans.org/kb/articles/matisse.html"&gt;Matisse&lt;/a&gt; is the new Swing GUI builder in the NetBeans IDE. It has received a very warm welcome, and by looking at the demos it looks quite amazing. Finally we are able to build GUIs in Java!&lt;br /&gt;&lt;br /&gt;Anyway... personally I have not tried it - simply because I am an Eclipse guy. I have thought about installing NetBeans for a while, but have not gotten around to it yet. Now it seems I might just not have to. Apparently, the MyEclipse team is &lt;a href="http://www.myeclipseide.com/ContentExpress-display-ceid-77.html"&gt;porting it to Eclipse&lt;/a&gt;, and will release it in the pro edition of MyEclipse 4.1 and 5.0. I can't wait to see how this turns out in practise! It's about time there is a decent GUI builder widely available for Java.</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/114175501492093297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19446453&amp;postID=114175501492093297' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/114175501492093297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/114175501492093297'/><link rel='alternate' type='text/html' href='http://solheimweb.com/klog/2006/03/myeclipse-to-port-matisse-to-eclipse.html' title='MyEclipse to Port Matisse to Eclipse'/><author><name>Bent André Solheim</name><uri>http://www.blogger.com/profile/09972289210283225024</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19446453.post-114120150820643376</id><published>2006-03-01T09:11:00.000+01:00</published><updated>2006-03-02T10:17:30.380+01:00</updated><title type='text'>Colibri - Launching Your Applications the Way They Should</title><content type='html'>One of the fun things about working with a computer all day long, is that once in a while a new tool or thingie surfaces that adds a new dimension to your work day. I had become accustomed to using the mouse and click on an icon to start my applications. I have been doing this since Windows 95. Using the Windows-key and navigating in the Start menu to find my application never felt right; which sane person wants to do a gazillion key strokes to start Opera or Eclipse?&lt;br /&gt;&lt;br /&gt;Apparently a similar application has been available for the Mac for a long time; QuickSilver. The Windows clone is called &lt;a href="http://colibri.leetspeak.org/"&gt;Colibri&lt;/a&gt;. You press a hot key to start Colibri (Windows+Space in my case), type some of the characters in the name of the application you want to start and hit enter. Viola.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://colibri.leetspeak.org/shot.png"&gt;&lt;/img&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/114120150820643376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19446453&amp;postID=114120150820643376' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/114120150820643376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/114120150820643376'/><link rel='alternate' type='text/html' href='http://solheimweb.com/klog/2006/03/colibri-launching-your-applications.html' title='Colibri - Launching Your Applications the Way They Should'/><author><name>Bent André Solheim</name><uri>http://www.blogger.com/profile/09972289210283225024</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19446453.post-114099596255787591</id><published>2006-02-27T00:15:00.000+01:00</published><updated>2006-10-03T21:43:09.823+02:00</updated><title type='text'>CSS Magic</title><content type='html'>My guess is that &lt;a href="http://www.cssplay.co.uk/layouts/frame.html"&gt;this&lt;/a&gt; demo of a css frame shows a layout many web pages could use. Check it out! The content and design is not particularily good, but the technique is really interesting.</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/114099596255787591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19446453&amp;postID=114099596255787591' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/114099596255787591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/114099596255787591'/><link rel='alternate' type='text/html' href='http://solheimweb.com/klog/2006/02/css-magic.html' title='CSS Magic'/><author><name>Bent André Solheim</name><uri>http://www.blogger.com/profile/09972289210283225024</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19446453.post-114096339695852186</id><published>2006-02-26T14:54:00.000+01:00</published><updated>2006-02-26T15:21:07.296+01:00</updated><title type='text'>JUnit 4.0 finally out</title><content type='html'>OK, I know it has been available a while already, but I have not been able to take it for a spin before recently.&lt;br /&gt;&lt;br /&gt;Some of the focus of the new release is to make testing even easier. To achieve that, JUnit leverages some of the new features of Java 5, like annotations. There has been a lot of flaming about this - that you have to use Java 5 to be able to use the new features - but personally I think it's great (and necessary; I think JUnit would have lost its large group of users to alternatives like TestNG if they hadn't done something). You no longer have to inherit from TestCase, which makes testing protected functions easier (just let the Test class inherit from the class under test), and using annotations for denoting tests lets you use your own naming convention for tests (don't know if that really is a good idea or not), and lets any class contain tests. There are also other annotations that can been used to declare setUp functions, and setUp functions on the class level (a new feature in JUnit 4).&lt;br /&gt;&lt;br /&gt;There are a couple of issues that may be a show stopper if you want to use JUnit 4. The first, as mentioned above, is that the new features requires Java 5 (although all 3.8.1 tests will still run). Now, keep in mind that Java 5 is only required for the runtime that runs the tests, so you can develop your production code for java 1.4 or 1.3 or whatever, and develop and run your tests on Java 5. The second issue is that Eclipse (and I'm sure other IDEs) does not have integrated support for running annotated tests as of 3.1.2. You have to go bleeding edge (&gt;3.2 M2) to get that.&lt;br /&gt;&lt;br /&gt;Dispite the discussion around the new JUnit, my conclusion so far is that an update is certainly worth it - if you can.</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/114096339695852186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19446453&amp;postID=114096339695852186' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/114096339695852186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/114096339695852186'/><link rel='alternate' type='text/html' href='http://solheimweb.com/klog/2006/02/junit-40-finally-out.html' title='JUnit 4.0 finally out'/><author><name>Bent André Solheim</name><uri>http://www.blogger.com/profile/09972289210283225024</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19446453.post-114069056437472023</id><published>2006-02-23T11:21:00.000+01:00</published><updated>2006-02-23T13:01:18.963+01:00</updated><title type='text'>Maven 2 - Profiles and Artifact Names - The Solution</title><content type='html'>As my mail on the maven-users list remained unanswered, I contacted the guys on the maven irc channel (irc.codehaus.org#maven) about the problem. Tryve Laugstøl was very helpful and answered my question quickly and accurately. His &lt;a href="http://blogs.codehaus.org/people/trygvis/archives/001296_building_for_different_environments_with_maven_2.html"&gt;Blog Entry&lt;/a&gt;, was right on;&lt;br /&gt;&lt;br /&gt;the trick is to use the classifier property of the maven-jar-plugin and maven-war-plugin:&lt;br /&gt;&lt;pre class="code" style="margin: 6px;"&gt;&lt;br /&gt;&amp;lt;plugin&gt;&lt;br /&gt;  &amp;lt;artifactId&gt;maven-jar-plugin&amp;lt;/artifactId&gt;&lt;br /&gt;  &amp;lt;executions&gt;&lt;br /&gt;    &amp;lt;execution&gt;&lt;br /&gt;      &amp;lt;phase&gt;package&amp;lt;/phase&gt;&lt;br /&gt;      &amp;lt;goals&gt;&lt;br /&gt;        &amp;lt;goal&gt;jar&amp;lt;/goal&gt;&lt;br /&gt;      &amp;lt;/goals&gt;&lt;br /&gt;      &amp;lt;configuration&gt;&lt;br /&gt;        &amp;lt;classifier&gt;test&amp;lt;/classifier&gt;&lt;br /&gt;      &amp;lt;/configuration&gt;&lt;br /&gt;    &amp;lt;/execution&gt;&lt;br /&gt;  &amp;lt;/executions&gt;&lt;br /&gt;&amp;lt;/plugin&gt;&lt;/pre&gt;&lt;br /&gt;(and similar for the war plugin)&lt;br /&gt;This will append the classifier value to the artifact file name. Just what I needed! :)&lt;br /&gt;&lt;br /&gt;Note; you will need the very latest war plugin build to get classifier support.</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/114069056437472023/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19446453&amp;postID=114069056437472023' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/114069056437472023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/114069056437472023'/><link rel='alternate' type='text/html' href='http://solheimweb.com/klog/2006/02/maven-2-profiles-and-artif_114069056437472023.html' title='Maven 2 - Profiles and Artifact Names - The Solution'/><author><name>Bent André Solheim</name><uri>http://www.blogger.com/profile/09972289210283225024</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19446453.post-114068283180786422</id><published>2006-02-23T09:11:00.002+01:00</published><updated>2006-02-23T09:20:31.806+01:00</updated><title type='text'>Maven 2 - Profiles and Artifact Names</title><content type='html'>We are using Maven2 big time on all our new projects now, and are in the process of converting our old projects from Maven1. For the most part this has gone pretty well - although we have had some issues with buggy plugins. However, lately I have had a requirement that I have not been able to find a solution to;&lt;br /&gt;&lt;br /&gt;I have a web app that I need to build for deployment on different tomcat instances (production and test). To achieve this I use profiles; I use different properties files depending on the profile that was used for building. This works great.&lt;br /&gt;&lt;br /&gt;Now, the problem I have is that in addition to deploying to a tomcat instance, I also would like to deploy the generated war file to our artifact repository;&lt;br /&gt;&lt;br /&gt;mvn -Pprod deploy&lt;br /&gt;&lt;br /&gt;This also works great, but a new requirement is that we want one artifact in the repository for the test environment and one for production. This is where the problem arises. Although I am able to use the &lt;finalName&gt; property in each profile to set the name of the war file that ends up in the target folder, this does not affect the name that is used on the artifact when it is deployed to the repository using "mvn -Pprod deploy". The effect is that we are not able to distinguish the artifacts in the repository that was built using the test profile from those built using the production profile.&lt;br /&gt;&lt;br /&gt;And now for a question to my dear readers; do you guys know if it is possible to alter the name of the artifact that ends up in the repository based on the profile that was used when deploying it? If not, does anybody have a tip to how I can go about achieving what we want in other ways? I thought about using different repositories for test and production, but this seems sub-optimal.&lt;br /&gt;&lt;br /&gt;Love to have a tip on this one! ;)</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/114068283180786422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19446453&amp;postID=114068283180786422' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/114068283180786422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/114068283180786422'/><link rel='alternate' type='text/html' href='http://solheimweb.com/klog/2006/02/maven-2-profiles-and-artif_114068283180786422.html' title='Maven 2 - Profiles and Artifact Names'/><author><name>Bent André Solheim</name><uri>http://www.blogger.com/profile/09972289210283225024</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19446453.post-114044734891858979</id><published>2006-02-20T15:28:00.000+01:00</published><updated>2006-02-26T15:26:59.496+01:00</updated><title type='text'>Web Developer Toolbar &amp; Menu for Opera</title><content type='html'>I recently found a toolbar for Opera for making web development easier. It's got a lot of features, but currently I've found myself using the "Open in IE", and "Open in FireFox" buttons the most.&lt;br /&gt;&lt;br /&gt;Anyway, check the toolbar out. It may be usefull to you aswell;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://nontroppo.org/wiki/WebDevToolbar"&gt;http://nontroppo.org/wiki/WebDevToolbar&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/114044734891858979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19446453&amp;postID=114044734891858979' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/114044734891858979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/114044734891858979'/><link rel='alternate' type='text/html' href='http://solheimweb.com/klog/2006/02/web-developer-toolbar-menu-for-opera.html' title='Web Developer Toolbar &amp; Menu for Opera'/><author><name>Bent André Solheim</name><uri>http://www.blogger.com/profile/09972289210283225024</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19446453.post-113975032039788517</id><published>2006-02-12T14:09:00.000+01:00</published><updated>2006-02-12T14:18:40.396+01:00</updated><title type='text'>Ruby on Rails hosting follow up</title><content type='html'>I'm still looking for a good Rails host. I have not rushed this decision - as you might have noticed. Got a nice tip on a comment of my &lt;a href="http://solheimweb.com/klog/2005/12/ruby-on-rails-hosting.html"&gt;previous post about this subject&lt;/a&gt;, but have not decided yet. It looks like there are many people in the same boat, so I will observe the community a bit longer.&lt;br /&gt;&lt;br /&gt;If you are like me, this post may be of interest; &lt;a href="http://jroller.com/page/yogi?entry=rails_web_host_recommendations_needed"&gt;Rails web host recommendations&lt;/a&gt;. A lot more comments on this post than on mine - please help me figure out why that is! ;)</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/113975032039788517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19446453&amp;postID=113975032039788517' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/113975032039788517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/113975032039788517'/><link rel='alternate' type='text/html' href='http://solheimweb.com/klog/2006/02/ruby-on-rails-hosting-follow-up.html' title='Ruby on Rails hosting follow up'/><author><name>Bent André Solheim</name><uri>http://www.blogger.com/profile/09972289210283225024</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19446453.post-113974942282133232</id><published>2006-02-12T13:56:00.000+01:00</published><updated>2006-02-13T08:01:52.796+01:00</updated><title type='text'>Maybe FireFox is the "right" browser afterall</title><content type='html'>I have been a die-hard Opera fan for quite a while now. I just love the browser experience; the integrated RSS reader, mouse gestures, tabs and super-fast rendering. But no matter how hard it aces in my heart, I have to admit that FireFox really looks powerful - especially for developers. Though I can't list most of the developer-centric add-ons I have seen in the past from the top of my head, I know they exist. And knowing that many future web applications will include tons of javascript coding and debugging, plugins that help this process will make developers of next generation web applications more productive.&lt;br /&gt;&lt;br /&gt;Okay, my point; check out &lt;a href="https://addons.mozilla.org/extensions/moreinfo.php?application=firefox&amp;id=1843"&gt;FireBug&lt;/a&gt;. I might just be what you are looking for. Javascript debugging made amazing.&lt;br /&gt;&lt;br /&gt;Looks like I just may have to go and install FireFox soon.</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/113974942282133232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19446453&amp;postID=113974942282133232' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/113974942282133232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/113974942282133232'/><link rel='alternate' type='text/html' href='http://solheimweb.com/klog/2006/02/maybe-firefox-is-right-browser.html' title='Maybe FireFox is the &quot;right&quot; browser afterall'/><author><name>Bent André Solheim</name><uri>http://www.blogger.com/profile/09972289210283225024</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19446453.post-113959281446412649</id><published>2006-02-10T18:31:00.000+01:00</published><updated>2006-02-10T18:33:34.466+01:00</updated><title type='text'>Moving my klog</title><content type='html'>I will be moving this klog to solheimweb.com. From now on, you can access it from &lt;a href="http://solheimweb.com/klog"&gt;http://solheimweb.com/klog&lt;/a&gt;. Hope to see you there!</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/113959281446412649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19446453&amp;postID=113959281446412649' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/113959281446412649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19446453/posts/default/113959281446412649'/><link rel='alternate' type='text/html' href='http://solheimweb.com/klog/2006/02/moving-my-klog.html' title='Moving my klog'/><author><name>Bent André Solheim</name><uri>http://www.blogger.com/profile/09972289210283225024</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>