<?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-7396059659723667740</id><updated>2011-10-06T18:54:55.660+02:00</updated><category term='Microlog'/><category term='Book Review'/><category term='Development Problems'/><category term='Blu-ray'/><category term='microlog4android'/><category term='Voxtr'/><category term='Software Development'/><category term='Review'/><category term='Java ME'/><category term='Microproperties'/><category term='Öredev'/><category term='Log4j'/><category term='Best Practices'/><category term='Reflections'/><category term='Open Source'/><category term='Embedded'/><category term='Microsuite'/><category term='iPhone'/><category term='Other'/><category term='Maven'/><category term='Scrum'/><category term='Hardware'/><category term='Ubuntu'/><category term='Microinstall'/><category term='Agile Development'/><category term='Android'/><category term='Tips and Tricks'/><category term='News'/><title type='text'>My Open Source Software Development Blog</title><subtitle type='html'>This is my blog about Open Source Software Development and related things.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>91</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-3004107954433910651</id><published>2010-11-17T21:15:00.000+01:00</published><updated>2010-11-17T21:15:10.997+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Öredev'/><category scheme='http://www.blogger.com/atom/ns#' term='Reflections'/><title type='text'>Öredev 2010 - Some Thoughts</title><content type='html'>Öredev 2010 is over and it is time for me write some words about the conference. What I like about the conference is that has an interesting mix of tracks; Java, .NET, Agile, Web Development etc. It is always nice to broaden your views. New this year was the Xtra(ck). The Xtra(ck) contained sessions that had nothing to with software development, or at least very far from it. For example there was a session called "Understand Hypnosis". These session was definitely a way to broaden your mind. I liked the "Photographic Composition and Creativity" and the photo walk both with Amy Archer. Thanks for the tips during the photo walk!&lt;br /&gt;&lt;br /&gt;Also new for this year was the Öredev puzzle application. The application was designed around the concept of being social. Each participant got a puzzle code within the application. By sharing your code you got a piece of the puzzle. As a bonus you got the contact information for the person whose code you entered. Each person to finish the puzzle got an Öredev t-shirt and was participating to win some great prizes. The application was available for Blackberry, Android, Windows Phone 7 and iPhone. The application also contained the schedule and speaker bios. A real nice application. Next year I hope to see an improved version. For example, integrating your own schedule would be great. &lt;br /&gt;&lt;br /&gt;And here are some photos from the conference. Enjoy!&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_w7OU_FVnMiE/TOGT1-9btrI/AAAAAAAAA7I/04cJCyFafik/s1600/rede.jpg" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="180" src="http://1.bp.blogspot.com/_w7OU_FVnMiE/TOGT1-9btrI/AAAAAAAAA7I/04cJCyFafik/s320/rede.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Öredev 2010 - Get Real&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img border="0" height="214" src="http://1.bp.blogspot.com/_w7OU_FVnMiE/TOGT5OTF9AI/AAAAAAAAA7M/xwSuR9i4N6A/s320/SpeakerDinnerAtCityHall.jpg" style="margin-left: auto; margin-right: auto;" width="320" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Speaker Dinner at Malmö City Hall&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_w7OU_FVnMiE/TOGT1-9btrI/AAAAAAAAA7I/04cJCyFafik/s1600/rede.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt; &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_w7OU_FVnMiE/TOGThjdkcHI/AAAAAAAAA6o/ROOnVbbSC54/s1600/competition.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/_w7OU_FVnMiE/TOGThjdkcHI/AAAAAAAAA6o/ROOnVbbSC54/s320/competition.jpg" width="214" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Developers Competing&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_w7OU_FVnMiE/TOGTkDuWTEI/AAAAAAAAA6s/cq_0XWKDrm8/s1600/directions.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/_w7OU_FVnMiE/TOGTkDuWTEI/AAAAAAAAA6s/cq_0XWKDrm8/s320/directions.jpg" width="214" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Hard to Choose the Righr Track?&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_w7OU_FVnMiE/TOGTm7N_bvI/AAAAAAAAA6w/cjX9ozhL91k/s1600/Evan+Doll.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="214" src="http://2.bp.blogspot.com/_w7OU_FVnMiE/TOGTm7N_bvI/AAAAAAAAA6w/cjX9ozhL91k/s320/Evan+Doll.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Even Doll showing of Some Nice Xcode Tricks&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_w7OU_FVnMiE/TOGTfrhoWAI/AAAAAAAAA6k/gfGmZjUTtjo/s1600/coffe+lounge.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="214" src="http://3.bp.blogspot.com/_w7OU_FVnMiE/TOGTfrhoWAI/AAAAAAAAA6k/gfGmZjUTtjo/s320/coffe+lounge.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Coffe Lounge&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_w7OU_FVnMiE/TOGTpEtZQtI/AAAAAAAAA60/EZllTA4zRVQ/s1600/Jack+Nutting.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="214" src="http://1.bp.blogspot.com/_w7OU_FVnMiE/TOGTpEtZQtI/AAAAAAAAA60/EZllTA4zRVQ/s320/Jack+Nutting.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Jack Nutting about Making Money in Appstore&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_w7OU_FVnMiE/TOGTs0C0Z5I/AAAAAAAAA64/MiWEacxDLDU/s1600/JohnSeddon.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="214" src="http://3.bp.blogspot.com/_w7OU_FVnMiE/TOGTs0C0Z5I/AAAAAAAAA64/MiWEacxDLDU/s320/JohnSeddon.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;John Seddon&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_w7OU_FVnMiE/TOGTvAdLH3I/AAAAAAAAA68/2TbnvsQbEhs/s1600/MalmoLibraryAtNightEdit1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_w7OU_FVnMiE/TOGTx9YRLdI/AAAAAAAAA7A/gT0RTDEvSmY/s1600/MarcusZarra.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="239" src="http://4.bp.blogspot.com/_w7OU_FVnMiE/TOGTx9YRLdI/AAAAAAAAA7A/gT0RTDEvSmY/s320/MarcusZarra.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Marcus Zarra on Core Graphics&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_w7OU_FVnMiE/TOGTzhQB8cI/AAAAAAAAA7E/OuKPw72Oh6U/s1600/participants.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/_w7OU_FVnMiE/TOGTzhQB8cI/AAAAAAAAA7E/OuKPw72Oh6U/s320/participants.jpg" width="214" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;The Audience&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_w7OU_FVnMiE/TOGT1-9btrI/AAAAAAAAA7I/04cJCyFafik/s1600/rede.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_w7OU_FVnMiE/TOGT5OTF9AI/AAAAAAAAA7M/xwSuR9i4N6A/s1600/SpeakerDinnerAtCityHall.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_w7OU_FVnMiE/TOGTvAdLH3I/AAAAAAAAA68/2TbnvsQbEhs/s1600/MalmoLibraryAtNightEdit1.jpg" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="170" src="http://4.bp.blogspot.com/_w7OU_FVnMiE/TOGTvAdLH3I/AAAAAAAAA68/2TbnvsQbEhs/s320/MalmoLibraryAtNightEdit1.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Library by Night&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;And that is the wrap. See you next year!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-3004107954433910651?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/3004107954433910651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=3004107954433910651' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3004107954433910651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3004107954433910651'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2010/11/oredev-2010-some-thoughts.html' title='Öredev 2010 - Some Thoughts'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_w7OU_FVnMiE/TOGT1-9btrI/AAAAAAAAA7I/04cJCyFafik/s72-c/rede.jpg' height='72' width='72'/><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-3829132509067281356</id><published>2010-10-25T22:24:00.000+02:00</published><updated>2010-10-25T22:24:52.767+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='Best Practices'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='Java ME'/><title type='text'>Network Programming Tips for Mobile Developers (iPhone, Android, Java ME etc)</title><content type='html'>Among the most important things to master for a mobile application developer is network programming. Every mobile application I have developed has involved some kind of network communication. During the year I have learned a thing or two. Read on to get some tips &amp;amp; trick from me.&lt;br /&gt;&lt;br /&gt;Quite often the server is developed alongside the client. This means that you as a client developer have to wait for those awfully slow server programmers. Not every server programmer is slow, but most likely you have to wait for some server functionality. In situations like these, it is handy to roll your own server. But as a client developer, you do not want to spend an massive amount of time to setup a server. In fact, if it takes longer than a couple of minutes most client developers give up. What you need is a server that is very quick and easy to setup. Also it needs to be simple, yet powerful. Many server programmers would recommend you setting up a Tomcat server. The advantage of using a Tomcat server is that it is very versatile. But I do not really like &lt;a href="http://tomcat.apache.org/"&gt;Tomcat&lt;/a&gt;. It is to advanced for me. Another solution is to use a &lt;a href="http://jetty.codehaus.org/jetty/"&gt;Jetty&lt;/a&gt; server. This is simpler to setup than Tomcat, but yet rather powerful. It could be executed from &lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt;. As such is is convenient to use for automated tests. Maven takes cares most of the work, including starting and stopping your Jetty server. But there is a new and rising star, the &lt;a href="http://www.sinatrarb.com/"&gt;Sinatra&lt;/a&gt; server. The Sinatra server is actually a &lt;a href="http://www.ruby-lang.org/"&gt;Ruby&lt;/a&gt; library. You use Ruby to program the behavior of your server.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;A simple “Hello World” implementation for Sinatra looks like the one below (from the &lt;a href="http://sinatra-book.gittr.com/"&gt;Sinatra Book&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;require 'rubygems'&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;require 'sinatra'&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;get '/' do&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; "Hello world, it's #{Time.now} at the server!"&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The file is saved as a file with &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;.rb&lt;/span&gt; extension, in our example we save it as “&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;hello.rb&lt;/span&gt;”. Then you start your server as simple as this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ruby hello.rb&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You get a nice line saying that Sinatra has taken the stage and that your server uses port 4567. This could of course be changed, if you want to mimic another server without changing your code. It is very easy to extend your server functionality. Ruby is easy to learn and powerful for making your own server without any big hazzle. Take a look at the &lt;a href="http://sinatra-book.gittr.com/"&gt;“Sinatra Book”&lt;/a&gt; if you want to master Sinatra.&lt;br /&gt;&lt;br /&gt;Another common scenario is that you need to figure out what happens when you make a certain URL request, for example if you do a REST request. Before even writing a single of code, you could use the &lt;a href="http://curl.haxx.se/"&gt;cURL&lt;/a&gt; command line tool. Its available on most platforms, like Unix, Linux, Mac OS, Windows etc. For a matter of discussion, let us assume that you want to check that you programmed your Sinatra web server correctly. Then you the following command:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;curl http://127.0.0.1:4567/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The response should look like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Hello world, it's Mon Oct 25 20:44:19 +0200 2010 at the server!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So now you know how to implement your own simple server, as well as how to debug your server request using curl. But wait, there is even more tricks I want to share with you. I hope that you feel like reading a little bit more.&lt;br /&gt;&lt;br /&gt;I think that XML is a rather misused technologies around. It is used for many things, ranging from describing your builds (Ant, Maven, etc) to describing serialized objects traveling through cyberspace (SOAP, REST etc). When SOAP was introduced, one main argument for XML is that it human readable. What? Have you ever seen a SOAP request that is human readable? If you are about to send and/or receive objects there are much more suitable technologies than XML. Especially when making a mobile client, where XML parsing could take to much time and memory, it is important to understand that there are good alternatives. One good old technology is &lt;a href="http://en.wikipedia.org/wiki/Information_Object_Class_%28ASN.1%29"&gt;ASN.1&lt;/a&gt;, that is hugely underestimated. It was designed for communicating data between different architectures and CPUs. It is fast even on a 8-bit CPU. The biggest drawback is that it is not widely supported and it requires an ASN.1 compiler. However you could implement your own ASN.1 encoder/decoder quite easy. Another solution that is easier to use, but building on the same principles as ASN.1 is the Hessian protocol. It is a binary web service protocol. The specification is originally designed by Caucho, who did the Resin web server. The specification is open and implemented in many languages, including .NET, Flash, Ruby, Python, Objective-C etc. I have primarily used it for Java ME, where only a subset is implemented. If you use it in Java ME, I would recommend considering using it to store object data in the record store. But now it is more relevant for me to use it on Android or iPhone. The Objective-C variant for iPhone is called &lt;a href="http://hessiankit.sourceforge.net/"&gt;HessianKit&lt;/a&gt;. It is open source and released under Apache 2.0 license. Thus it is not a viral open source license, which I think is great. I will not describe how to use it, since there already is a good article on the subject “HessianKit Released”. I hope that you will consider using Hessian if you are in the position to decide what web service protocol to use. If you feel the urge to use XML for your web services, you could use &lt;a href="http://hessian.caucho.com/doc/burlap-notes.xtp"&gt;Burlap&lt;/a&gt; which is the XML version of Hessian. The communication is as simple as it could get using XML.&lt;br /&gt;&lt;br /&gt;Another useful tool is a network analyzer. This is good for finding out what happens between the client and server. For example, if you want to take a look at the headers are many times auto generated. I have used &lt;a href="http://www.wireshark.org/"&gt;Wireshark&lt;/a&gt; with great success. It would not say it is easy to use, but when you need to use it is priceless.&lt;br /&gt;&lt;br /&gt;These are the tools that I think I use the most for network programming. What are your best tools when doing network programming?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-3829132509067281356?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/3829132509067281356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=3829132509067281356' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3829132509067281356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3829132509067281356'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2010/10/network-programming-tips-for-mobile.html' title='Network Programming Tips for Mobile Developers (iPhone, Android, Java ME etc)'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-8403418069626581688</id><published>2010-10-08T22:12:00.000+02:00</published><updated>2010-10-08T22:12:13.039+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Synchronizing iPhone 4 with Google without iTunes</title><content type='html'>Today I received a brand new iPhone 4. Life was joyful. However it gave me some frustrating moments before I could use it for real. Here is the true story what happened when I got my iPhone 4.&lt;br /&gt;&lt;br /&gt;I had prepared the migration by backing up my contacts from my HTC Hero. The HTC had no way to export contacts to a SIM card, but only to SD card. Strangely enough it was possible to import contacts from a SIM card. Anyway I did not consider this to be a big problem, since exporting to the SD card should work fine.The contacts was saved as a &lt;a href="http://en.wikipedia.org/wiki/VCard"&gt;VCF file&lt;/a&gt;. This was easily imported by double-clicking on the file. When this was done, all the google contacts was on my Mac Book. After I started and initialized the iPhone, it was connected via a USB cable to the Mac Book. Consequently iTunes was started with a wizard. One of the steps was the sync setup. By default all contacts was to be synced. Perfect! This was exactly what I wanted. A couple of more steps and I pressed the “Sync”-button.&lt;br /&gt;&lt;br /&gt;After a short while something really odd happened. A warning message saying that no synchronization of contacts was not possible, since the phone was not connected. What! The phone was connected. Not good! I discovered a button labeled “Restore”. The help text explained that this should be used when in trouble. I felt like being in trouble and hit the restore button. The process was really fast, but enough time to get some tea. Then the same procedure once more. Still the same problem. Next try; search the Internet. I found out that I was not alone with &lt;a href="http://forums.macrumors.com/showthread.php?t=451783"&gt;this problem&lt;/a&gt;. I tried out all of the different solutions explained in the forum. Do not know how many times I cleared the sync settings, restarted the phone, re-booted the computer and all other kinds of tricks. The Apple support pages did not contain any other suggestions than found in the forum. Now I was really frustrated. I should not be that complicated to get your contacts into your new phone. Time to get a break. Get your brain to think in a different way. Reset the brain. Get some food.&lt;br /&gt;&lt;br /&gt;Several hours later it was time to try a new approach. I googled “Sync iPhone Google”. I found an article called “&lt;a href="http://www.google.com/support/mobile/bin/answer.py?answer=138740&amp;amp;topic=14252"&gt;Google Sync: Set Up Your Apple Device for Google Sync&lt;/a&gt;“. It seemed to be exactly what I was looking for. The article explained how to use add an account in the iPhone to synchronize mail, contacts and calendar. In fact it was a Microsoft Exchange account. It took me less than 5 minutes to have mail, contacts and the calendar in sync.&lt;br /&gt;&lt;br /&gt;The final solution was much simpler than copying contacts via the computer. The intent was to only transfer the contacts and then set up a mail account on the phone. Now I get an all-in-one solution,&amp;nbsp; with mail, contacts and calendar synchronization. Now my life is joyful again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-8403418069626581688?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/8403418069626581688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=8403418069626581688' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/8403418069626581688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/8403418069626581688'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2010/10/synchronizing-iphone-4-with-google.html' title='Synchronizing iPhone 4 with Google without iTunes'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-502651140879466555</id><published>2010-10-04T20:35:00.000+02:00</published><updated>2010-10-04T20:35:26.499+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Öredev'/><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>The Öredev Developer Conference 2010</title><content type='html'>Each year since its inception, I have attended the Öredev developer conference. What makes it special is that it is a combined conference, with not only Java. This year it is especially important for me, since I can learn about both Android and iPhone development.&lt;br /&gt;&lt;br /&gt;I will attend this year. Will you? &lt;br /&gt;&lt;br /&gt;Do not forget to register at the &lt;a href="http://www.oredev.org/2010"&gt;Öredev site&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-502651140879466555?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/502651140879466555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=502651140879466555' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/502651140879466555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/502651140879466555'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2010/10/oredev-developer-conference-2010.html' title='The Öredev Developer Conference 2010'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-200496178843141298</id><published>2010-09-26T15:31:00.000+02:00</published><updated>2010-09-26T15:31:56.231+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><category scheme='http://www.blogger.com/atom/ns#' term='microlog4android'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Microlog4Android V1.0 Released</title><content type='html'>Finally! After many months of struggling with &lt;a href="http://code.google.com/p/microlog4android/"&gt;Microlog4Android&lt;/a&gt;, the first official release is here. The core is the original &lt;a href="http://microlog.sourceforge.net/"&gt;Microlog&lt;/a&gt; code, but it is re-written to take full use Java SE features. For example, no Vectors are used. This means that the logging is faster than it was in Java ME. One important addition is the support for &lt;a href="http://www.slf4j.org/"&gt;SLF4J&lt;/a&gt;. This should make it easy to migrate if necessary. This might also be an addition to future versions of Microlog. This way it should be easy to share code between Java ME and Android. The most important appenders are there as well.&lt;br /&gt;&lt;br /&gt;Please download it from &lt;a href="http://code.google.com/p/microlog4android/downloads/list"&gt;here&lt;/a&gt;. As always, any feedback and comments are welcome.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-200496178843141298?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/200496178843141298/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=200496178843141298' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/200496178843141298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/200496178843141298'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2010/09/microlog4android-v10-released.html' title='Microlog4Android V1.0 Released'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-3958389875892057898</id><published>2010-09-24T19:58:00.001+02:00</published><updated>2010-09-24T19:58:00.286+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reflections'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>My World is Changing; Android &amp; iPhone Development</title><content type='html'>I have been working with Android development for quite a while now. So I decided to do something quite different; iPhone development.&lt;br /&gt;&lt;br /&gt;It is like groping in the dark. After many years with Java and garbage collection, it feels a little awkward to manage your memory by yourself. The first encounter with garbage collection in Java was really awesome. After a couple of years as a Java developer, you realized that the garbage collector is not the answer to all of your memory problems. But still, you are not forced to think about memory management on a daily basis. All of a sudden you need to think about memory management on a more regular basis.&lt;br /&gt;&lt;br /&gt;Eclipse has been the main tool in my Java toolbox for many years now. One might argue that IntelliJ or NetBeans is a better tool, but I have used Eclipse. Switching from Eclipse to Xcode is not easy. I miss the fabulous re-factoring support in Eclipse. There are many other small issues, but I am slowly and constantly learning new keyboard shortcuts in Xcode. I guess that I could be a better Xcoder in a while. The interface builder in Xcode is an invaluable tool. It is very easy to get nice looking iPhone UIs. It is very nice not having to worry about getting your XML files right. Making a good looking UI on Android can be frustrating and cumbersome. Of course you can get nice UIs on Android, but I find it easier to create one on iPhone.&lt;br /&gt;&lt;br /&gt;Last but not least, the markets are a little bit different. Android market is open. Appstore is a little bit more closed. There is no quality control when submitting to Android market. As a consequence there is a lot of really bad Android applications. It is hard to find what you are searching for on Android market. The search seems to be case sensitive. Not good. Usually I install applications that is recommended somewhere. In most cases, there is a QR code available that I scan with the Android barcode reader. Really nifty application that makes installation on Android simple. The applications in Appstore is controlled by Apple and it seems that they are of better quality than Android applications. It must be pointed out that there are many high quality Android applications, but they are harder to find. As a developer in Sweden it is not possible to get paid for your Android applications, but you can get paid for your iPhone apps. When will this problem be solved?&lt;br /&gt;&lt;br /&gt;Another thing that seems to be missing in the iPhone world is open source projects. The Java and Android world is full of open source. However there seems to be good hope for the iPhone world. I found this &lt;a href="http://www.webresourcesdepot.com/20-open-source-iphone-applications-to-learn-from/"&gt;this&lt;/a&gt; list of open source applications for iPhone. &lt;br /&gt;&lt;br /&gt;Of course there are many more differences. These are the most apparent differences from my perspective. At the end of the day I am a mobile software developer. Switching to iPhone gives me a new perspective of my world. I think that is a good thing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-3958389875892057898?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/3958389875892057898/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=3958389875892057898' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3958389875892057898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3958389875892057898'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2010/09/my-world-is-changing-android-iphone.html' title='My World is Changing; Android &amp; iPhone Development'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-2964116437070349460</id><published>2010-05-18T20:41:00.000+02:00</published><updated>2010-05-18T20:41:02.687+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><category scheme='http://www.blogger.com/atom/ns#' term='microlog4android'/><title type='text'>Microlog, Microlog4Android, SLF4J and Other Stuff</title><content type='html'>Right now a lot of interesting stuff are happening with both &lt;a href="http://microlog.microsuite.org/"&gt;Microlog&lt;/a&gt; and &lt;a href="http://code.google.com/p/microlog4android/"&gt;Microlog4Android&lt;/a&gt;. I have been working with Microlog, while &lt;a href="http://hansjar.blogspot.com/"&gt;Jarle&lt;/a&gt; has been working on Microlog4Android (M4A). Let me start with Microlog.&lt;br /&gt;&lt;br /&gt;I have started the work on Microlog V3.0. To start with I have been able to make the structure a little bit easier. For example I have removed some abstract classes, like the &lt;code&gt;AbstractFileAppender&lt;/code&gt;. This was created for one purpose only, to be able to re-use parts of the file logging functionality between Microlog and M4A. A nice side effect of this construction is that we save some memory, both in terms of the memory footprint and run-time memory. Some bugs are fixed and there are some minor improvements.&lt;br /&gt;&lt;br /&gt;Even though Microlog is my long time sweetheart, the most exciting things are happening within the M4A project. When moving the code from the Microlog to M4A, we skipped a lot of code. It was the core and only a few appenders that was moved. Working with the Android platform is quite different and the needs are a little bit different. For example, there is not really a need to log to the console. Instead we have replaced the &lt;code&gt;ConsoleAppender&lt;/code&gt; with the &lt;code&gt;LogCatAppender&lt;/code&gt;. This works as the built in log classes.&amp;nbsp; The reason for moving Microlog to the Android platform was to give Android developers more opportunities than the built in logging facilities. It is possible to use the logcat tool to log to file, but in that case you do not get the normal logcat logging in Eclipse. I have never heard of any way of logging to a file on the SD card or on the device, using the Android logging classes. With M4A it is possible to log to a file on the SD card. Just use the modified &lt;code&gt;FileAppender&lt;/code&gt; to use M4A to log to file. &lt;br /&gt;&lt;br /&gt;Another unique feature in Microlog is the ability to log to a remote server. This far we have the &lt;code&gt;HTTPAppender&lt;/code&gt; which logs to a HTTP server. This is definitely something that is not possible with the standard Android logging facility. The HTTP logging is ideal for field test or similar, where the developers need to collect logs in a central place. No need to transfer log file manually. Note that during the development it might be more natural for individual developers to log to a file.&lt;br /&gt;&lt;br /&gt;But that is not all! The most prominent addition is the &lt;a href="http://www.slf4j.org/"&gt;SLF4J&lt;/a&gt; implementation. This gives you as a developer freedom to change the logging implementation whenever you feel like it. For example you want to use M4A during development for file logging, but want to remove the logging at deployment time. Just replace the M4A jar with the NOP implementation. If you want to revert back to good old Android LogCat logging (only), use the SLF4J implementation.&lt;br /&gt;&lt;br /&gt;Last but not least, we have changed the &lt;code&gt;PropertyConfigurator&lt;/code&gt; to read configuration files from an Android resource directory. The &lt;code&gt;microlog.properties&lt;/code&gt; file could either be stored in the &lt;code&gt;/res/raw&lt;/code&gt; or the &lt;code&gt;/assets&lt;/code&gt; directory.&lt;br /&gt;&lt;br /&gt;For those of you that want to try it out, it is available for download at: &lt;a href="http://code.google.com/p/microlog4android/downloads/list"&gt;http://code.google.com/p/microlog4android/downloads/list&lt;/a&gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;Please note that the latest release (V0.5) is rather experimental, but please try it out and give us feedback.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-2964116437070349460?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/2964116437070349460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=2964116437070349460' title='27 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/2964116437070349460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/2964116437070349460'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2010/05/microlog-microlog4android-slf4j-and.html' title='Microlog, Microlog4Android, SLF4J and Other Stuff'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>27</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-6647547176864146603</id><published>2010-04-21T06:33:00.001+02:00</published><updated>2010-04-21T10:19:58.421+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Review'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Printing Stuff from an Android Phone with PrinterShare</title><content type='html'>I am always on the quest to find nice applications for my &lt;a href="http://www.android.com/"&gt;Android&lt;/a&gt;. There are many not so good applications on &lt;a href="http://www.android.com/market/"&gt;Android Market&lt;/a&gt;. Many applications are fun for a couple of minutes, but not so useful. Today I found one that I liked. I do not know if I am going to use it a lot, but the concept is simple and yet powerful. I am talking about the &lt;a href="http://www.printershare.com/"&gt;PrinterShare&lt;/a&gt; application.&lt;br /&gt;&lt;br /&gt;The PrinterShare application is used for printing from your Android application. You could print pictures, web pages, contacts, messages, e-mail etc. The PrinterShare is also added to the share menu. You have two ways of printing your stuff; either using a nearby printer or a remote printer. A nearby printer is found using a Wifi access point. To use a remote printer you need to install an application on your computer and register yourself at the PrinterShare site. Let us see when I tried out the PrinterShare application.&lt;br /&gt;&lt;br /&gt;Finding a nearby printer was very easy. My printer is connected to my &lt;a href="http://www.synology.com/enu/products/DS110j/index.php"&gt;Synology DS110j&lt;/a&gt;, which has support for the&lt;a href="http://en.wikipedia.org/wiki/Bonjour_%28software%29"&gt; Bonjour&lt;/a&gt; protocol. Since the PrinterShare application also has support for Bonjour they found each other without any problems. But I was a little bit disappointed when I only could print a test page. To print using a nearby printer you need to buy the pro version of the PrinterShare application. The real bad thing here is that paid applications are not available here in Sweden. But luckily enough it seems to be possible to buy a key using PayPal. The price is a modest $4.95.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_w7OU_FVnMiE/S84LDwY_f7I/AAAAAAAAAS4/CizSp9PxOfA/s1600/DSC_0002.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="267" src="http://3.bp.blogspot.com/_w7OU_FVnMiE/S84LDwY_f7I/AAAAAAAAAS4/CizSp9PxOfA/s400/DSC_0002.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&amp;nbsp;&lt;i&gt;Finding my nearby printer.&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;Since I was curious to try the application out, I registered myself at the site. The registration was simple.&amp;nbsp; I entered my e-mail address, in return I got an e-mail with an auto generated user id and password. A couple of minutes later I had managed to print a picture that I found in my phone. Nice and easy.&lt;br /&gt;&lt;br /&gt;Beside the setback with using the local printer solution, I was impressed how simple it was to get everything to work. It is applications like this that is nice to have installed on your Android phone. I am not sure if this is an application that I am going to use very often, but it is rather cool. If I am going to use it extensively, I think it would be worth paying $4.95.&lt;br /&gt;&lt;br /&gt;What is your favorite Android application? Is there any Android application that you could not live without?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-6647547176864146603?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/6647547176864146603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=6647547176864146603' title='22 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/6647547176864146603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/6647547176864146603'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2010/04/printing-stuff-from-android-phone-with.html' title='Printing Stuff from an Android Phone with PrinterShare'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_w7OU_FVnMiE/S84LDwY_f7I/AAAAAAAAAS4/CizSp9PxOfA/s72-c/DSC_0002.JPG' height='72' width='72'/><thr:total>22</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-7170723290711746614</id><published>2010-04-05T13:33:00.000+02:00</published><updated>2010-04-05T13:33:00.429+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reflections'/><category scheme='http://www.blogger.com/atom/ns#' term='Other'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Back at Home :)</title><content type='html'>I am finally back from my vacation. Last week I was in Egypt with my family. They had an Internet café in the reception of the hotel, but it did only work one time when I was there. But I guess it was a good thing to be offline for some time. At least my family appreciated it. Prior to that I was in Istanbul. Turkey. This was a trip together with my colleges. I learned a lot of new things about the Android platform. The most interesting thing was to try out &lt;a href="http://www.robotium.org/"&gt;Robotium&lt;/a&gt;, a testing framework for Android. It is built around the existing testing framework found in Android, but it is much simpler. If you want to know more, please read &lt;a href="http://blog.jayway.com/2010/01/28/the-easy-way-to-test-android-applications-2/"&gt;this excellent article&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;That is all for now. Nice to be back at home with a working Internet connection.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-7170723290711746614?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/7170723290711746614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=7170723290711746614' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/7170723290711746614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/7170723290711746614'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2010/04/back-at-home.html' title='Back at Home :)'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-9133078249911677107</id><published>2010-03-31T13:05:00.009+02:00</published><updated>2010-03-31T13:05:00.282+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Other'/><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>Using Amazon S3 to Backup a Synology DS110j</title><content type='html'>One of the most important features of the &lt;a href="http://www.synology.com/enu/products/DS110j/index.php"&gt;Synology DS110j NAS&lt;/a&gt; is the ability to let it backup itself. This is actually a new feature in V2.3 of the DiskStation firmware. Here are my first impressions.&lt;br /&gt;&lt;br /&gt;There is one thing that bothers me; I could not re-use the old &lt;a href="http://en.wikipedia.org/wiki/Amazon_S3"&gt;bucket&lt;/a&gt; which I created when using &lt;a href="http://www.jungledisk.com/"&gt;Jungle Disk&lt;/a&gt;, at least what I could tell. When selecting the existing bucket, the DiskStation does not accept it because of its long name. The Jungle disk also create strange directory layout with something that looks like a tree map. This is in normal cases hidden for the user; Jungle fixes to mount a network drive. The network drive looks like a normal directory. If I remember correctly this is something that I choose when creating the original bucket. Anyway I tested and created a new bucket. I then started a backup of a small amount of files to test how it worked. The DiskStation solution is much simpler than Jungle Disk. One must consider that the Amazon backup is a new feature of the DiskStation software, while Jungle Disk has been around for some time. For example, you could not encrypt the content. You only use an encrypted transfer, that is you are using HTTPS for transfer. Another thing that I miss is a progress bar or similar. As it is today, you only see the status like this:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_w7OU_FVnMiE/S6i0GB_9RSI/AAAAAAAAASg/e8ZyPd9xTy0/s1600-h/DiskStationAssistantBackingUpAmazonS3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="334" src="http://4.bp.blogspot.com/_w7OU_FVnMiE/S6i0GB_9RSI/AAAAAAAAASg/e8ZyPd9xTy0/s640/DiskStationAssistantBackingUpAmazonS3.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;You only see that the backup is going on. I think I need to file a feature request for this. Notice that the backup type is a little bit misleading. As I wrote earlier, it is only the transfer that is encrypted.&lt;br /&gt;&lt;br /&gt;The Jungle Disk desktop software discovered the new bucket I created for the DiskStation server. It informed that the bucket was compatible with Jungle Disk. I was then a little bit surprised when I could not discover any contents there. I decided to get another Amazon S3 browser. I found the &lt;a href="http://cyberduck.ch/"&gt;CyberDuck&lt;/a&gt; browser. It has the capability to browse an Amazon S3 account, as well as a multitude of other servers like FTP, Samba etc. The FTP browser could come in handy when connecting to the FTP server in the DiskStation. (I have actually tested it and it worked without any problems.)&lt;br /&gt;&lt;br /&gt;The CyberDuck browser works like a charm with all my buckets, see the picture below.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_w7OU_FVnMiE/S6i3c67ilRI/AAAAAAAAASw/jfeBNLdPDfI/s1600-h/CyberDuckInActionBrowsingAmazonS3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="368" src="http://4.bp.blogspot.com/_w7OU_FVnMiE/S6i3c67ilRI/AAAAAAAAASw/jfeBNLdPDfI/s640/CyberDuckInActionBrowsingAmazonS3.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;This shows the directory layout for the DiskStation and the Jungle Disk buckets. Notice that I have decided to do no incremental backup for the DiskStation. This is because I want to be able to restore my data, even if my DiskStation crashes. I could for example use CyberDuck to download all the contents. I think that I have configured the Jungle Disk to do incremental backup, which is like comparing apples and oranges. Anyway I am a little bit wiser than I was when I configured Jungle Disk from the beginning. The drawback is of course that is uses a lot of more space on the server. My opinion is that it is worth the extra money to be on the safe side. It is going to take some days to backup the pictures once more, but the DiskStation could work 24/7 without affecting my daily work. Meantime I could test other DiskStation features. There seems not to be any performance problems using other services while doing the backup. But this is only a problem during the first backup. When the initial backup has been performed, I have scheduled the backup to run at night every.&lt;br /&gt;&lt;br /&gt;All in all I think that this solution is much better than the old one. All of our media files are now stored on the DiskStation and the backup is done as described. On my Mac I run TimeMachine to backup my laptop automatically. I will be able to go to sleep each night being sure that the things that I have added are safely transferred to my Amazon S3 account.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-9133078249911677107?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/9133078249911677107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=9133078249911677107' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/9133078249911677107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/9133078249911677107'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2010/03/using-amazon-s3-to-backup-synology.html' title='Using Amazon S3 to Backup a Synology DS110j'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_w7OU_FVnMiE/S6i0GB_9RSI/AAAAAAAAASg/e8ZyPd9xTy0/s72-c/DiskStationAssistantBackingUpAmazonS3.jpg' height='72' width='72'/><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-7093029420770282101</id><published>2010-03-26T07:04:00.001+01:00</published><updated>2010-03-26T07:04:00.130+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Other'/><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>Configuring and Installing my Synology DS110j NAS</title><content type='html'>It is now time to configure and install my brand new &lt;a href="http://www.synology.com/enu/products/DS110j/index.php"&gt;Synology DS110j NAS&lt;/a&gt;. It comes with a CD containing V2.2 of the firmware and the desktop application. However I want to use V2.3, since it has support for backing up to a remote Amazon S3 account. I had downloaded and installed V2.3 of the desktop application. The desktop applications are the Synology Assistant and DownloadRedirector. The Assistant is used to find all the Synology servers on your network. When it does, you could use it to configure it and do basic setup. It also contains a resource monitor and a photo uploader. The DownloadRedirector is used for setting up downloads that downloads files directly to the DiskStation. Thus it is time to start the Synology Assistant.&lt;br /&gt;&lt;br /&gt;When starting the Assistant you see a list of servers. In my case there was only one. The status of it was "not configured". By double clicking on it, I started a configuration wizard. I used the standard settings on every page. However at the last page I was given the choice to select which firmware version. Good! I selected the downloaded zip file. It complained that it was not the correct file extension. It should a .pat file, that is a firmware patch file. OK, I double clicked on the zip file to extract it. No .pat file inside it. I downloaded another version to figure out if it contained a .pat file. But no success. I decided to go with the supplied version while I was to figure out what the problem was. Some people have complained about the long configuration time, especially the formatting have been causing problems for a lot of people. When I started the configuration I was told it could take about 10 minutes. It looked like this:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_w7OU_FVnMiE/S6hi6IEokJI/AAAAAAAAARw/ot7wUk0B7AQ/s1600-h/InstallingNAS1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="417" src="http://3.bp.blogspot.com/_w7OU_FVnMiE/S6hi6IEokJI/AAAAAAAAARw/ot7wUk0B7AQ/s640/InstallingNAS1.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Meanwhile I was trying to figure out what the problem with my downloaded firmware was. Could not figure it out. Time to test the support. I filled in a rather basic issue report on-line. After that I continued to find the problem. Unzipped the original zip file once more. What? I saw the status information flashing by "Unzipping .pat file" or something. Does it really contain a .pat file? Strange! Is it a hidden file. No, it would not be possible to select the file by default then. Maybe it was the archive utility that is causing me all the trouble? I decided to use the command line zip. An there it was. The zip contained a .pat file. However the .pat file seems to be a zipped file as well. When it is discovered by the archive utility, it unzips this as well. In normal cases this is a good thing. If you extract a .tar.gz file, this is what you want.&lt;br /&gt;&lt;br /&gt;For those of you that encounter the same problem, let me explain in more detail. You start the Terminal. You find it in the Utilities folder in the Application folder. The type the following (assuming that you downloaded it to the Downloads folder)&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd Downloads&lt;br /&gt;&lt;br /&gt;unzip synology_88f6281_110j_1141.zip&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;As a result you have a file called synology_88f6281_110j_1141.pat in your Downloads folder. Very easy if you know how to do it. &lt;br /&gt;&lt;br /&gt;Now let me continue with the story. The next thing I decided to do was to setup the printer. The printer has always been connected to my wife's computer. The reason for this is that she simply print more documents than me and my laptop is not always at home. However I find it annoying to start her computer to print a single document. This day I for once really needed to print a document.&lt;br /&gt;&lt;br /&gt;When the device was configured, I connected to it. This was done by double clicking it or select it and select connect. A web page was prompting me to login.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_w7OU_FVnMiE/S6hnFCTzo6I/AAAAAAAAASA/kuDjADNxcTg/s1600-h/NASLogin.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="315" src="http://2.bp.blogspot.com/_w7OU_FVnMiE/S6hnFCTzo6I/AAAAAAAAASA/kuDjADNxcTg/s640/NASLogin.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;After login I found the "USB Printer" in the folder "External Devices".&amp;nbsp; I plugged in the printer and it was automatically discovered. This is how it looked like:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_w7OU_FVnMiE/S6hpXMPoT7I/AAAAAAAAASQ/k3Dqe7D9UAc/s1600-h/PrinterSetup.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="292" src="http://3.bp.blogspot.com/_w7OU_FVnMiE/S6hpXMPoT7I/AAAAAAAAASQ/k3Dqe7D9UAc/s640/PrinterSetup.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I Googled the Internet and found the same description on the Synology wiki. However it contained more information for newer Mac OS versions. I started the configuration, but halted when I was prompted to enter an IP address. Not good! I should enter a name and the IP should be resolved automatically. After a little bit of research I found something called &lt;a href="http://en.wikipedia.org/wiki/Bonjour_%28software%29"&gt;Bonjour&lt;/a&gt;. It is a service discovery protocol. Actually it is Apple's implementation of &lt;a href="http://en.wikipedia.org/wiki/Zeroconf"&gt;Zeroconf&lt;/a&gt;. I found the configuration for this in Home-&amp;gt;File Sharing-&amp;gt;Win/Mac OS. I enabled the Bonjour broadcast as seen here below. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_w7OU_FVnMiE/S6h4ZcfjakI/AAAAAAAAASY/JUWJYpyt068/s1600-h/BonjourSettings.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="291" src="http://3.bp.blogspot.com/_w7OU_FVnMiE/S6h4ZcfjakI/AAAAAAAAASY/JUWJYpyt068/s640/BonjourSettings.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;From now on it was simple. Just opened the "System Preferences", clicked the "Print &amp;amp; Fax" button.&amp;nbsp; Pressed the + button below the printer list. The printer was automatically discovered. Very easy setup.&lt;br /&gt;&lt;br /&gt;This is all for now. Look out for my adventures with my DiskStation.&lt;br /&gt;&lt;span id="goog_1269324240278"&gt;&lt;/span&gt;&lt;span id="goog_1269324240279"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-7093029420770282101?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/7093029420770282101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=7093029420770282101' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/7093029420770282101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/7093029420770282101'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2010/03/configuring-and-installing-my-synology.html' title='Configuring and Installing my Synology DS110j NAS'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_w7OU_FVnMiE/S6hi6IEokJI/AAAAAAAAARw/ot7wUk0B7AQ/s72-c/InstallingNAS1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-1386320097340550486</id><published>2010-03-22T23:48:00.000+01:00</published><updated>2010-03-22T23:48:23.644+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Other'/><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>Unboxing Synology DS110j NAS</title><content type='html'>Yesterday I came home from Istanbul, Turkey. My &lt;a href="http://en.wikipedia.org/wiki/Network_access_server"&gt;NAS&lt;/a&gt; that I ordered a couple of weeks arrived at the DHL pickup place the day I left for Turkey. As you might have guessed I have been eagerly awaiting to pick it up. Today I got some spare time to pick it up. I have always loved to unbox new technical stuff. This time I thought it was a good idea to do an unboxing article. Please enjoy!&lt;br /&gt;&lt;br /&gt;The first look at the stuff I received: &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_w7OU_FVnMiE/S6de7H4JOMI/AAAAAAAAAP4/o84gfjiC1N8/s1600-h/DSC_0002_1396.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="266" src="http://3.bp.blogspot.com/_w7OU_FVnMiE/S6de7H4JOMI/AAAAAAAAAP4/o84gfjiC1N8/s400/DSC_0002_1396.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;To the right you see the Synology DS110j NAS. There is no harddrive included, so you must install one yourself. To the left you see the harddrive that I ordered. It is a Western Digital Green 640 MB. All Synology products are energy conscious. Thus I hope that I get a solution the is environmental friendly and does not give me big electrical bills. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_w7OU_FVnMiE/S6dhr6kRSlI/AAAAAAAAAQA/0ud31w4Y-FA/s1600-h/DSC_0008_1401.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="267" src="http://2.bp.blogspot.com/_w7OU_FVnMiE/S6dhr6kRSlI/AAAAAAAAAQA/0ud31w4Y-FA/s400/DSC_0008_1401.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Here you see the label on the side listing the main features of the DS110j. The specifications are there as well. For more information please download &lt;a href="http://download.synology.com/download/ds/DS110j/DataSheet/Synology_DS110j_Data_Sheet_enu.pdf"&gt;this&lt;/a&gt; document. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_w7OU_FVnMiE/S6dizFGWAYI/AAAAAAAAAQI/sQyB5pNt0Yg/s1600-h/DSC_0011_1404.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="267" src="http://4.bp.blogspot.com/_w7OU_FVnMiE/S6dizFGWAYI/AAAAAAAAAQI/sQyB5pNt0Yg/s400/DSC_0011_1404.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;The box contains two smaller boxes and the power cord. The box to the left contains the NAS device and the box to the right some additional cables and the power supply. Let us take a look a closer look at the box to the left.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_w7OU_FVnMiE/S6doq-6r05I/AAAAAAAAAQQ/p2XnAr7L-cI/s1600-h/DSC_0016_1409.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/_w7OU_FVnMiE/S6doq-6r05I/AAAAAAAAAQQ/p2XnAr7L-cI/s400/DSC_0016_1409.JPG" width="267" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Now we are getting somewhere.&amp;nbsp; The NAS is about the be unveiled. But there seems that I need to read something first. Synology have saved some trees by printing a very small booklet. It references to the documentation stored on the enclosed CD. So you need a computer to set things up, but that should be no surprise since it is intended to be used with your computer.&lt;br /&gt;&lt;br /&gt;This is how the front looks like &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_w7OU_FVnMiE/S6dpmcXMRfI/AAAAAAAAAQY/e2YXHLzn-14/s1600-h/DSC_0023_1416.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_w7OU_FVnMiE/S6dpmcXMRfI/AAAAAAAAAQY/e2YXHLzn-14/s320/DSC_0023_1416.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;A fairly regular set of LEDs and buttons. From top to bottom, the LEDs are; STATUS, LAN, DISK. Below the DISK LED there is an unnamed LED. Maybe a LED showing the USB status. Me do not know. Then comes a USB connector. Here you could connect a harddrive or a printer. If you connect a harddrive or a memory stick here it is possible use the USBCopy functionality. By pressing the button below it, the content is copied to the diskstation. At the very bottom you find the On/Off button and the corresponding LED. This turns into blue when the device is on. It blinks when the device is starting up.&lt;br /&gt;&lt;br /&gt;The back looks like this &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&amp;nbsp;&lt;a href="http://3.bp.blogspot.com/_w7OU_FVnMiE/S6dpyR3sxsI/AAAAAAAAAQg/Pkrmwxag0Y8/s1600-h/DSC_0026_1419.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_w7OU_FVnMiE/S6dpyR3sxsI/AAAAAAAAAQg/Pkrmwxag0Y8/s320/DSC_0026_1419.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;At the top you see the fan. Below it is two USB connections. These could be used the same way as the front connection. Next up is the Ethernet connection. There is also a reset button and a power connector. To the right you have a keylock hole.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Now it is time to take a look inside. Just put it on the table and push the lid forward. Very easy. I still remember those old PC cases where it very long time to get open the case. &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp;&lt;a href="http://2.bp.blogspot.com/_w7OU_FVnMiE/S6fdwlwisXI/AAAAAAAAARQ/s1yP6HqqZFU/s1600-h/DSC_0030_1423.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_w7OU_FVnMiE/S6fdwlwisXI/AAAAAAAAARQ/s1yP6HqqZFU/s320/DSC_0030_1423.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;To install the harddrive you just push the it into the slide. When it is in place, you use the screws that are included to fasten the harddrive. &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp;&lt;a href="http://2.bp.blogspot.com/_w7OU_FVnMiE/S6fh4vCOeiI/AAAAAAAAARY/Qy2DqrWIJlw/s1600-h/DSC_0033_1426.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_w7OU_FVnMiE/S6fh4vCOeiI/AAAAAAAAARY/Qy2DqrWIJlw/s320/DSC_0033_1426.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp;&lt;a href="http://2.bp.blogspot.com/_w7OU_FVnMiE/S6fiTs-WmyI/AAAAAAAAARg/kvYjfP0dpR4/s1600-h/DSC_0038_1431.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_w7OU_FVnMiE/S6fiTs-WmyI/AAAAAAAAARg/kvYjfP0dpR4/s320/DSC_0038_1431.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp;On with the lid again. Two more screws to fasten the lid and the NAS is ready to use. Connect the power supply and the network cable to the switch. It only took me a couple of minutes to install the harddrive and connect the NAS. I think that even a non-technical person could fix this very fast.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Now everything is in place. The NAS is situated near the office switch. The switch is a D-link Green DGS-1005D, which also is environmental friendly. It switches of the power when a connection is idle for a long time and adjust itself to the length of the connected cables. The supplied network cable was to long, so I replaced it with the shorter one (0,5m). &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/_w7OU_FVnMiE/S6fjyZ3LlMI/AAAAAAAAARo/OPqAGiZW9Eg/s1600-h/DSC_0043_1436.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_w7OU_FVnMiE/S6fjyZ3LlMI/AAAAAAAAARo/OPqAGiZW9Eg/s320/DSC_0043_1436.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Now it is ready to be used, nearly anyway. It needs to be configured. But that is another story. The unboxing took me less than 20 minutes, although I did it very slowly and spent some time taking photos. As mentioned it is easy to install your own harddrive and easy to get started. So far so good anyway.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-1386320097340550486?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/1386320097340550486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=1386320097340550486' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/1386320097340550486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/1386320097340550486'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2010/03/unboxing-synology-ds110j-nas.html' title='Unboxing Synology DS110j NAS'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_w7OU_FVnMiE/S6de7H4JOMI/AAAAAAAAAP4/o84gfjiC1N8/s72-c/DSC_0002_1396.JPG' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-2238876429574978359</id><published>2010-03-09T18:30:00.000+01:00</published><updated>2010-03-09T18:30:45.914+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Other'/><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><title type='text'>My NAS Research (D-link, Netgear and Synology)</title><content type='html'>Last week I decided to buy a NAS. Every time I buy some new geek stuff, I spend many hours on research to select the optimal model. I usually start out with a price comparison site like pricerunner or prisjakt (in Swedish only). Of course I set up some requirements as well. My initial requirements was:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Support for Windows &amp;amp; Mac OS (Samba or an equivalent solution)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Secure FTP server&lt;/li&gt;&lt;li&gt;Reasonable amount of harddisk space &lt;/li&gt;&lt;/ol&gt;Nothing special, but at least I need to know what I am looking for. After a couple of hours of hard research I had these alternatives left:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Netgear Stora Home Network Storage MS2110&lt;/li&gt;&lt;li&gt;D-Link DNS-313 or D-Link DNS-323&lt;/li&gt;&lt;li&gt;Synology Diskstation DS110J or DS210J NAS server&lt;/li&gt;&lt;/ol&gt;Of course there are a lot of other brands, but these are the ones that I feelt was right for me. Both Netgear and D-Link are brands that I knew before, but I have never heard of Synology. The Netgear model is the most affordable. It comes with a pre-installed harddisk which is 1 TB big. It also has the option of adding an additional harddisk. The D-Link and Synology NAS servers requires you to install one or two harddisks yourself. I prefer to select the harddisk myself. The Netgear looks a little bit bulky.&amp;nbsp; The D-Link and both have support for Samba and FTP.&amp;nbsp; The feature that sticks out on the Synology NAS is the Amazon S3 support. Today I make backup using an S3 account. It would be even more convenient if the NAS could do that for me. Then I could schedule backups when I am not at home and have my computer with me. Last but not least, Synology have forums with many active users. &lt;br /&gt;&lt;br /&gt;When I receive the NAS I want to change the network a little bit as well. This is how it looks today:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_w7OU_FVnMiE/S5Vnib3fJWI/AAAAAAAAAPo/6e8Ii7Hwjco/s1600-h/NetworkBefore.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_w7OU_FVnMiE/S5Vnib3fJWI/AAAAAAAAAPo/6e8Ii7Hwjco/s320/NetworkBefore.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Our family photos are saved on either of the external harddisks. I sync these harddisks with the excellent Beyond Compare tool. When in sync, I use Jungle Disk to do the backup. Even though Beyond Compare is my favorite tool, I find it a little bit boring to synchronize these harddisks.&amp;nbsp; This is where the new solution should be a little bit smoother.&lt;br /&gt;&lt;br /&gt;This is how it should look like after the upgrade.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_w7OU_FVnMiE/S5VnqIY8dhI/AAAAAAAAAPw/PRjyfNnqvlE/s1600-h/NetworkAfter.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_w7OU_FVnMiE/S5VnqIY8dhI/AAAAAAAAAPw/PRjyfNnqvlE/s320/NetworkAfter.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Now we could store all of our photos on the Synology NAS server. The NAS server do backup at scheduled times. No need to synchronize the harddisk anymore. Each the computers should backup other valuable content as well, to the NAS. There is still room for improvement. For example, I plan to have wired connections to all computers in the household. The "old" switch that is used for the home entertainment should be replaced by a faster one.&lt;br /&gt;&lt;br /&gt;But what model did I choose? You might have guessed it; I ordered the Synology DS110J together with a Western Digital Green 640 GB harddisk. This way I have an environmental friendly solution. All Synology products are designed to be environmental friendly. Notice that I use a D-Link Green DGS-1005D switch in the new network solution.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;That is all for now. I am really eager to get started with my new NAS. The original ETA was tomorrow, but the time seems to have slipped. I hope that it will arrive before the weekend.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-2238876429574978359?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/2238876429574978359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=2238876429574978359' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/2238876429574978359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/2238876429574978359'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2010/03/my-nas-research-d-link-netgear-and.html' title='My NAS Research (D-link, Netgear and Synology)'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_w7OU_FVnMiE/S5Vnib3fJWI/AAAAAAAAAPo/6e8Ii7Hwjco/s72-c/NetworkBefore.JPG' height='72' width='72'/><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-8816872000182490360</id><published>2010-02-23T20:03:00.000+01:00</published><updated>2010-02-23T20:03:40.711+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reflections'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><category scheme='http://www.blogger.com/atom/ns#' term='microlog4android'/><title type='text'>Starting the 3.0 development of Microlog?</title><content type='html'>What should it take to upgrade Microlog to 3.0? A while ago I release V2.3.4 of Microlog. There was only one "small" change, the Microlog instrument and instrument example modules were activated once more. They had not been part of any previous 2.X release. But was it a good decision to make only a patch release for such change? I must admit that I think this was an incorrect decision. The change was big enough to make a minor release or even a major release. What should I do to solve the situation right now?&lt;br /&gt;&lt;br /&gt;I think the best solution would be to make a major release, that is that I should make a Microlog V3.0. This makes it possible to make some other changes that I wants to do. The changes that first comes to mind are these:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Add the logging level NONE.&lt;/li&gt;&lt;li&gt;Remove the Android module &lt;/li&gt;&lt;li&gt;Remove the Amozon S3 module&lt;/li&gt;&lt;li&gt;Cleanup the PropertyConfigurator&lt;/li&gt;&lt;li&gt;? &lt;/li&gt;&lt;/ul&gt;Some explanation might be in place. Adding the Level NONE gives the possibility to stop the logging without removing the logging from the code. This is sometimes used for production builds, with the possibility to enable logging after distribution. The feature has been asked for many times. To be honest I do not remember why this has not been implemented before.&lt;br /&gt;&lt;br /&gt;Removing the Android module is for obvious reasons, since we have forked the Android parts this is no longer necessary to keep in the Microlog project. But is might not be obvious why to remove the Amazon S3 module. For me this was an experiment, but not something that turned out well. It is big and clumsy. A 3rd party library is used for the SOAP communication which also adds to the size. Fortunately it is kept in a separate jar. Thus only developers using the Amazon S3 modules are affected by this. Another drawback is that we need to maintain this module. I feel that I rather spend time on maintaining the core and other modules that are more important. But this is something that certainly is worth discussing. What do you think?&lt;br /&gt;&lt;br /&gt;Cleaning up the PropertyConfigurator is something that I have wanted for a while now. When adding the hierarchical logging support in V2, I kept the original configuration possibilities. This is not wrong. However there are parts in the code that could be shared between the Microlog classic configuration and the new configuration. The parsing of attributes could be replaced by a separate StringTokenizer. All in all I think that the size of the configuration classes could be slimlined.&lt;br /&gt;&lt;br /&gt;I guess that there are some more parts that could be improved and/or added to the list for Microlog V3. This was all that I could think of right now. Do you have any suggestions?&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-8816872000182490360?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/8816872000182490360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=8816872000182490360' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/8816872000182490360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/8816872000182490360'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2010/02/starting-30-development-of-microlog.html' title='Starting the 3.0 development of Microlog?'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-8324083984832836434</id><published>2010-02-21T08:17:00.000+01:00</published><updated>2010-02-21T08:17:23.756+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microproperties'/><category scheme='http://www.blogger.com/atom/ns#' term='microlog4android'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Reading Properties Files on Android (Investigation for microlog4android)</title><content type='html'>Today I have investigated the possibilities to read properties files on &lt;a href="http://www.android.com/"&gt;Android&lt;/a&gt;. In &lt;a href="http://code.google.com/p/microlog4android/"&gt;microlog4android&lt;/a&gt; there is no configuration possibilities via file as it is today. The microlog4android development team feels that we need to re-write the configuration from scratch. There are many reasons for this decision, for example there is the Properties class available on Android while in Java ME we use &lt;a href="http://sourceforge.net/projects/microproperties/"&gt;microproperties&lt;/a&gt;. These are my findings about properties files on Android.&lt;br /&gt;&lt;br /&gt;My first thought was to use the&lt;a href="http://developer.android.com/reference/android/content/SharedPreferences.html"&gt; SharedPreferences&lt;/a&gt; class. My brain picked up this idea while using the SharedPreferences in another project. The SharedPreferences is used to read/write preferences for an Android application. The preferences are stored in an xml file that is put in the private directory structure of an application. You could edit the file by pulling it from the device or emulator using &lt;code&gt;adb pull&lt;/code&gt;. After editing it you push it back using the &lt;code&gt;adb push&lt;/code&gt; command. If you are using the Android Eclipse plugin you could use the file browser to do the same trick. But this is cumbersome to pull/edit/push the file and I do not really like to use XML for storing properties.&lt;br /&gt;&lt;br /&gt;But how do we do it in microlog? The properties are stored in a properties file that is put in the JAR or by setting properties in the JAD file. Both are easily edited in Eclipse without no need to pull/push the file. The same goes for NetBeans. The properties file is bundled with the jar. Why not do the same on Android? Time to Google again! I found out that there was primarily two ways of doing this:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Using the AssetManager&lt;/li&gt;&lt;li&gt;Reading a raw resource&lt;/li&gt;&lt;/ol&gt;To test this I created a simple Android project in Eclipse and copied two microlog properties files. One was put in the &lt;code&gt;/assets&lt;/code&gt; directory while the other was put in the &lt;code&gt;/res/raw&lt;/code&gt; directory. The first thing that happened was that Eclipse complained about the naming of &lt;code&gt;micrologV2.properties&lt;/code&gt; that was put in the &lt;code&gt;/res/raw&lt;/code&gt; directory. It was kind enough to inform me that only [0..9][a..z] was allowed. Changing the capital V to a lower case v was simple. Now time to do some coding. The code for reading using the AssetManager looked like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;Resources resources = this.getResources();&lt;br /&gt;AssetManager assetManager = resources.getAssets();&lt;br /&gt;&lt;br /&gt;// Read from the /assets directory&lt;br /&gt;try {&lt;br /&gt;    InputStream inputStream = assetManager.open("microlog.properties");&lt;br /&gt;    Properties properties = new Properties();&lt;br /&gt;    properties.load(inputStream);&lt;br /&gt;    System.out.println("The properties are now loaded");&lt;br /&gt;    System.out.println("properties: " + properties);&lt;br /&gt;} catch (IOException e) {&lt;br /&gt;    System.err.println("Failed to open microlog property file");&lt;br /&gt;    e.printStackTrace();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The code is dead simple and thank God for the Properties class, although microproperties would do the trick. The second way to do it is as simple as the first approach. The code looks like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;// Read from the /res/raw directory&lt;br /&gt;try {&lt;br /&gt;    InputStream rawResource = resources.openRawResource(R.raw.micrologv2);&lt;br /&gt;    Properties properties = new Properties();&lt;br /&gt;    properties.load(rawResource);&lt;br /&gt;    System.out.println("The properties are now loaded");&lt;br /&gt;    System.out.println("properties: " + properties);&lt;br /&gt;} catch (NotFoundException e) {&lt;br /&gt;    System.err.println("Did not find raw resource: "+e);&lt;br /&gt;} catch (IOException e) {&lt;br /&gt;    System.err.println("Failed to open microlog property file");&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Notice that I omitted the code for getting the resources, since this was part of the first example. Both ways seems to be good. But what to choose? Using approach 1) has the following advantages from a microlog4android perspective:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;You are not limited to name your file with lower case letters only.&lt;/li&gt;&lt;li&gt;It is possible to use a default file name if the user does not specify one.&lt;/li&gt;&lt;/ol&gt;But I probably will implement both solutions, since this gives the user a freedom to choose where to put the file. What do you think? Is there any other solutions that I have missed out?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-8324083984832836434?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/8324083984832836434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=8324083984832836434' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/8324083984832836434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/8324083984832836434'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2010/02/reading-properties-files-on-android.html' title='Reading Properties Files on Android (Investigation for microlog4android)'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-4241511251271672987</id><published>2010-02-14T16:11:00.000+01:00</published><updated>2010-02-14T16:11:42.287+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Other'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><title type='text'>Ego Surfing - Microlog4Eclipse</title><content type='html'>Sometime I do some ego-surfing. I check if there is anything written about Microlog or any other open source projects that I am involved in. One funny thing is that I found the podcast that I and Darius Katz was part of as a &lt;a href="http://www.bomb-mp3.com/index.php?search=johan+karlsson+and+darius+katz+on+microlog"&gt;ringtone&lt;/a&gt;. Maybe it is a bestseller? :) But I just found a more serious project, namely the &lt;a href="http://code.google.com/p/microlog4eclipse/"&gt;microlog4eclipse&lt;/a&gt; project. It is an Eclipse plugin to simplify the usage of Microlog. Or as it say on the project page "Plugin for j2me microlog logger based on android adt plugin". I wonder if they are using the Android part of the Microlog library. There is no download available at the moment. I will investigate this further. Curious to check it out. It is interesting that someone is actually writing a dedicates Eclipse plugin for Microlog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-4241511251271672987?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/4241511251271672987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=4241511251271672987' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/4241511251271672987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/4241511251271672987'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2010/02/ego-surfing-microlog4eclipse.html' title='Ego Surfing - Microlog4Eclipse'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-3689577080672286998</id><published>2010-02-13T19:59:00.000+01:00</published><updated>2010-02-13T19:59:02.183+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>Some Words about Microlog and Some Maven Stuff</title><content type='html'>As you faithful readers know, I am a believer in &lt;a href="http://en.wikipedia.org/wiki/Release_early,_release_often"&gt;“Release early, release often”&lt;/a&gt;. Therefore I have tried to streamline the release procedure as much as possible. It must not feel like a burden to do a release. In fact it should be as fun as watching a comedy film, almost at least. But this time it was not very fun.&lt;br /&gt;&lt;br /&gt;About two weeks ago, one of my fellow &lt;a href="http://microlog.microsuite.org/"&gt;Microlog&lt;/a&gt; developers committed some changes. It was time to make a new release! I always start out with the deployment of &lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt; artifacts to the &lt;a href="http://oss.sonatype.org/"&gt;Sonatype repository&lt;/a&gt;. Ever since I changed from using the website at &lt;a href="http://sourceforge.net/"&gt;SourceForge&lt;/a&gt; as a repository, to the Sonatype repository this is a process that works like a charm. It usually takes a little more than two minutes to do this. After that point the artifacts are available on a &lt;a href="http://nexus.sonatype.org/"&gt;Nexus&lt;/a&gt; staging repository. If something is wrong, you can drop the release. If&amp;nbsp; the release seems to be ok, you have to close and promote the artifacts. When you close the staging release, a validation takes place. It checks if everything is ok.&lt;br /&gt;&lt;br /&gt;The validation process has always worked for me since I first got it right. But not this time! It was complaining about missing information in all the module, information that is available in the parent module. As a coincidence, or not, a discussion about this was started on the Sonatype forums. As it turned out, this was a bug in a new validation scheme. There was a workaround, but I did not feel that it was worth it. From my experiences I could conclude that the folks at Sonatype usually fix this in a day or two. This time it took some days more.&lt;br /&gt;&lt;br /&gt;When the validation bug was fixed it was time to give it a try again. This time the validation was complaining about a file not being signed (site.xml). A file that should not be signed, at least not according to me. This was part of the parent module. To get rid of this problem I decided to make a new sub-module for the site generation and try if I could sign the file this way. After a while I was able to sign the file. However now the site was not generated correctly. Not good! I moved the site.xml file back to the parent module, but kept the module since I thought the site generation was good anyway. The site generation worked again, but the file was not signed. Time to google. Now I found a solution that should work; disable the deployment of artifacts from the parent module. It worked, almost anyway. Now none of the artifacts was deployed. More googling. Aha, it is possible to disable the inheritance of some build plugins. Now it worked the way I wanted. Nice! The process of finding out how this should be done took me “only” about 4 hours. But there was one bonus; I could now disable artifacts modules that was not very useful to deploy. For those who wonders how to disable artifacts deployment, take a look at this helpful &lt;a href="http://prystash.blogspot.com/2009/06/maven-excluding-module-from-deploy.html"&gt;article&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Finally I managed to make the release and deploy the artifacts to the Sonatype repository. The artifacts are there in Maven central as well. For those of you who are interested, the version is now 2.3.5. Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-3689577080672286998?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/3689577080672286998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=3689577080672286998' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3689577080672286998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3689577080672286998'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2010/02/some-words-about-microlog-and-some.html' title='Some Words about Microlog and Some Maven Stuff'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-412620349915914878</id><published>2010-02-04T20:51:00.000+01:00</published><updated>2010-02-04T20:51:16.677+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Reflections'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><category scheme='http://www.blogger.com/atom/ns#' term='microlog4android'/><title type='text'>R.I.P. Kenai - Microlog4Android has been Moved</title><content type='html'>I admit it. I was wrong. It is not business as usual for &lt;a href="http://code.google.com/p/microlog4android/"&gt;microlog4android&lt;/a&gt;. Yesterday I got an e-mail explaining that &lt;a href="http://kenai.com/"&gt;Kenai&lt;/a&gt; will be shutdown. But fortunately there are other hosting options. I wanted to move the project as fast as possible and have a simple solution. I was recommended by my esteemed colleague Hugo about using &lt;a href="http://code.google.com/"&gt;Google Code&lt;/a&gt; together with &lt;a href="http://github.com/"&gt;GitHub&lt;/a&gt;. Google Code allows a project to use other service, such as GitHub, when Google Code&amp;nbsp; is not sufficient enough. Moving the source code was rather simple. The part that took time was to generate a new SSH key for my new computer. The nice thing with git is that all the history is preserved.&lt;br /&gt;&lt;br /&gt;To move the source code from the Kenai git repository I did the following:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;git pull git://kenai.com/microlog4android~source-code-repository&lt;br /&gt;&lt;br /&gt;git remote add git@github.com:johanlkarlsson/microlog4android.git&lt;br /&gt;&lt;br /&gt;git push origin master&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It was as simple as that. The first line was needed to pull the source code out from Kenai, since I had no backup copy on my new computer. So for a user with the code on his computer, it would be even simpler.&lt;br /&gt;&lt;br /&gt;Right now it is time for me to relax a little. I know I have a lot of things to do tomorrow at work. Please stay tuned for more updates about microlog4android.&lt;br /&gt;&lt;br /&gt;The project: &lt;br /&gt;&lt;a href="http://code.google.com/p/microlog4android/"&gt;http://code.google.com/p/microlog4android/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The source code:&lt;br /&gt;&lt;a href="http://github.com/johanlkarlsson/microlog4android"&gt;http://github.com/johanlkarlsson/microlog4android&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-412620349915914878?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/412620349915914878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=412620349915914878' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/412620349915914878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/412620349915914878'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2010/02/rip-kenai-microlog4android-has-been.html' title='R.I.P. Kenai - Microlog4Android has been Moved'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-2741086637401709884</id><published>2010-01-28T18:22:00.000+01:00</published><updated>2010-01-28T18:22:17.093+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reflections'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><category scheme='http://www.blogger.com/atom/ns#' term='microlog4android'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>The Future of Kenai?</title><content type='html'>As I wrote in an &lt;a href="http://myossdevblog.blogspot.com/2009/12/newsflash-microlog-for-android.html"&gt;earlier article&lt;/a&gt;, the Android part of &lt;a href="http://microlog.sourceforge.net/"&gt;Microlog&lt;/a&gt; has been forked into a new project. The project is hosted on &lt;a href="http://kenai.com/"&gt;Project Kenai beta&lt;/a&gt;. This is Suns offering for open source project. With &lt;a href="http://www.oracle.com/"&gt;Oracle&lt;/a&gt;s acquisition of Sun this project seems to be endangered.&amp;nbsp; But I am not sure how it will be affected. If it is going to be changed, I sure hope that the projects will get support for the migration if any. For more information, read &lt;a href="http://blogs.sun.com/projectkenai/entry/the_future_of_kenai_com"&gt;the article&lt;/a&gt; about the subject on Kenai's blog.&lt;br /&gt;&lt;br /&gt;I guess we have to continue with business as usual for &lt;a href="http://kenai.com/projects/microlog4android"&gt;microlog4android&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-2741086637401709884?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/2741086637401709884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=2741086637401709884' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/2741086637401709884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/2741086637401709884'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2010/01/future-of-kenai.html' title='The Future of Kenai?'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-3956730822443006053</id><published>2010-01-17T14:37:00.002+01:00</published><updated>2010-01-18T21:01:27.896+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reflections'/><category scheme='http://www.blogger.com/atom/ns#' term='Other'/><title type='text'>The Beauty and the Beast - Apple MacBook and Dell XPS M1710</title><content type='html'>A couple of years ago I bought a Dell XPS M1710. At the time this was one of the fastest laptop computers around. It is primarily designed as a gaming/multimedia laptop. The design is made to appeal gamers (see picture). As a developer I need a high performance computer. So this was a perfect choice for me, at least this was what I thought. As it turned out it, it has not been as good as one could imagine. There have been many problems with it during the years. The biggest problem are the fans. When running Windows Vista they are quiet at first. The first time you use Maven, or similar, the fans are up to full speed within seconds. I have tried several fan control applications but these did not solve the problem. The problem only manifested itself in other ways. I also tried to use Linux. With Linux things are much better. Linux does not seem to strain the CPU so much as Windows Vista. Fortunately Dell support gave me two new fans. Another problem is the battery. At full capacity they last for about 2 hours during normal work. after about 18 months a needed to buy a new one. This is not really acceptable. Speaking of power; I had to replace the power supply as well. As with the fans this was replaced by Dell. Thank God I had paid extra to get full support. Or I should thank my colleague Darius who convinced me to pay some extra bucks to get the full support.&lt;br /&gt;&lt;br /&gt;Before Christmas it was time to buy a new laptop. I was a little tired of the bad quality of my Dell computers, so I decided to try something new. I decided to buy me an Apple MacBook Pro instead.&amp;nbsp; By selecting a 15” screen I was able to fit in a Solid State Drive (SSD) within budget. Although not so big, it is only 128 Gb. But since I use an external hard-disk for data, this is not so much a problem.&lt;br /&gt;&lt;br /&gt;Now here I am sitting by my brand new MacBook and writing this article. I have about 7-8 hours battery capacity. According to the specification I have only 7 hours capacity, but I think the SSD gives me some extra time. The SSD is supposed to use less power than a normal drive. Of course this would degrade over time, but it is in par with my Asus netbook computer. So for I am very satisfied with my new computer. It was not so hard to get used to as I initially anticipated. Many people have told me about their frustration when switching to an Apple computer. I am familiar with Unix and Linux and many things could be achieved in a bash shell. In my daily work I use VirtualBox to run Ubuntu Linux. My fear was that the performance would be to bad and get annoyingly slow. But so far I am not frustrated by slow speed. In fact I was surprised. I have been using VirtualBox on my old XPS, but it was to slow to be really joyful. What more is there there to say? The MacBook works like a charm and is really fun to use. It is fun to compute! ;-)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_w7OU_FVnMiE/S1MQ0P1zYsI/AAAAAAAAAOs/v9g6xls0Yzs/s1600-h/DSC00956.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_w7OU_FVnMiE/S1MQ0P1zYsI/AAAAAAAAAOs/v9g6xls0Yzs/s320/DSC00956.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;The Beauty &lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&amp;nbsp;&lt;a href="http://3.bp.blogspot.com/_w7OU_FVnMiE/S1MQ8kQb15I/AAAAAAAAAO0/tGxP_nHPzRA/s1600-h/DSC00957.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_w7OU_FVnMiE/S1MQ8kQb15I/AAAAAAAAAO0/tGxP_nHPzRA/s320/DSC00957.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;The Beast &lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_w7OU_FVnMiE/S1MRBxd91yI/AAAAAAAAAO8/JK5qDCImMaI/s1600-h/DSC00961.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_w7OU_FVnMiE/S1MRBxd91yI/AAAAAAAAAO8/JK5qDCImMaI/s320/DSC00961.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;The Beauty and the beast&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/7396059659723667740-3956730822443006053?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/3956730822443006053/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=3956730822443006053' title='19 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3956730822443006053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3956730822443006053'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2010/01/beauty-and-beast-apple-macbook-and-dell.html' title='The Beauty and the Beast - Apple MacBook and Dell XPS M1710'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_w7OU_FVnMiE/S1MQ0P1zYsI/AAAAAAAAAOs/v9g6xls0Yzs/s72-c/DSC00956.JPG' height='72' width='72'/><thr:total>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-1859812949168129026</id><published>2009-12-01T19:38:00.014+01:00</published><updated>2009-12-01T22:17:39.925+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='Log4j'/><title type='text'>Newsflash! Microlog for Android - microlog4android</title><content type='html'>As you might know, &lt;a href="http://microlog.microsuite.org/"&gt;Microlog&lt;/a&gt; has support for logging on the &lt;a href="http://www.android.com/"&gt;Android&lt;/a&gt; platform. However it has been living a rather discrete life in the shadow of the rest of Microlog. The other day I chatted with one of the other Microlog developers (&lt;a href="http://hansjar.blogspot.com/"&gt;Jarle&lt;/a&gt;) and we decided that it was suitable to create a new project for Microlog support on Android. We aim to re-use the Microlog core, but to optimize and such for the Android platform.&lt;br /&gt;&lt;br /&gt;But why should I care? Android already has built in logging support that works rather well. I think that there are a couple of reasons for using Microlog on Android:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://logging.apache.org/log4j/"&gt;Log4j&lt;/a&gt; API&lt;/li&gt;&lt;li&gt;Resource effective&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Remote logging&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Many people are used to the Log4j API when it comes to logging and prefer it over the Java logging API (which is used on Android). I have spoken to several users of Microlog and they have praised that it uses the Log4j API.&lt;br /&gt;&lt;br /&gt;The Microlog has been built from scratch. It has been designed to be used on devices with a small amount of memory and with reduced processor capacity. Log4j on the other hand contains a lot of legacy code and has been used on computer with many times the capacity of an embedded device. For example Log4j contains a lot of classes that are there for being backward compatible with older releases.&lt;br /&gt;&lt;br /&gt;The Microlog library has support for logging to remote servers and devices. This is not something that is built into the logging API found on Android. Remote logging is something that is very appreciated in Microlog. My guess is that it would be nice for Android developers as well.&lt;br /&gt;&lt;br /&gt;As mentioned before, the project was registered a couple of days ago. Notice that we are in the startup phase and no release is available yet. We decided to use &lt;a href="http://logging.apache.org/log4j/"&gt;Kenai.com&lt;/a&gt;, since SourceForge does not meet our expectations. The project is called &lt;a href="http://kenai.com/projects/microlog4android"&gt;microlog4android&lt;/a&gt;. As always; any contributions are very welcome. Please contact me if you are interested in the project.&lt;br /&gt;&lt;br /&gt;It would be interesting to know what you think of this idea. Is this something that is missing on the Android platform? Or is the built in logging enough for you?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-1859812949168129026?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/1859812949168129026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=1859812949168129026' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/1859812949168129026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/1859812949168129026'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/12/newsflash-microlog-for-android.html' title='Newsflash! Microlog for Android - microlog4android'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-3384154180796764286</id><published>2009-11-29T14:47:00.006+01:00</published><updated>2009-11-29T16:46:03.841+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Reflections'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='Java ME'/><category scheme='http://www.blogger.com/atom/ns#' term='Embedded'/><title type='text'>Some Thoughts about Android</title><content type='html'>As a embedded developer working with mobile phones, there is a new interesting kid on the block; the &lt;a href="http://www.android.com/"&gt;Android platform&lt;/a&gt;. If you are a mobile developer you most certainly had heard of it.&lt;br /&gt;&lt;br /&gt;The interesting thing from a Java developer point of view is that all the APIs are in fact in standard Java APIs. But the developers of the Android platform has selected a subset of the Java SE APIs. Thus the implementation is not a fully compliant Java implementation. Further on the code is not executed as bytecode. The source code is first compiled to bytecode. In the second step the bytecode is converted to &lt;a href="http://http://en.wikipedia.org/wiki/Dalvik_virtual_machine"&gt;Dalvik bytecode&lt;/a&gt;. The Dalvik bytecode is then executed on a Dalvik Virtual Machine. The Dalvik is optimized for devices with limited power. According to the people behind the &lt;a href="http://en.wikipedia.org/wiki/Dalvik_virtual_machine"&gt;Dalvik VM&lt;/a&gt;, it should consume less power than a normal JVM.&lt;br /&gt;&lt;br /&gt;I have bought a &lt;a href="http://www.htc.com/europe/product/hero/overview.html"&gt;HTC Hero&lt;/a&gt; to have the opportunity to use an Android phone and to develop applications for the Android platform. It is possible to execute a Android application on an emulator, but still I think there is a need to be able to execute on a real device. The emulator is real good and I think that it is very close to the reality. My experience tells me that in the end it is always better to run on an actual device.&lt;br /&gt;&lt;br /&gt;As of now I have not developed an real Android application from scratch, although I have attended an Android course. I am really looking forward to making an Android application. If its gets good it would be interesting to put it on &lt;a href="http://www.android.com/market/"&gt;Android Market&lt;/a&gt;, aka Google Market.&lt;br /&gt;&lt;br /&gt;But what will happen to Java ME? I think that Java ME will live long and prosperous, although some programmers that are tired of Java ME will move to Android. The devices that are out on the market today are primarily high end phones. Java ME is found on many low end and mid end phones. What do you think? Will Java ME survive now that Android has arrived?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-3384154180796764286?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/3384154180796764286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=3384154180796764286' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3384154180796764286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3384154180796764286'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/11/some-thoughts-about-android.html' title='Some Thoughts about Android'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-9175208895161439948</id><published>2009-11-23T08:34:00.006+01:00</published><updated>2009-11-29T14:47:31.389+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><title type='text'>Microlog Mentioned Again</title><content type='html'>Maybe a little bit of old news, but I thought I would share it anyway. Microlog was mentioned in this article:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://weblogs.java.net/blog/editor/archive/2009/11/10/microlog-220-provides-reliable-small-footprint-j2me-and-android-loggi"&gt;http://weblogs.java.net/blog/editor/archive/2009/11/10/microlog-220-provides-reliable-small-footprint-j2me-and-android-loggi&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-9175208895161439948?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/9175208895161439948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=9175208895161439948' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/9175208895161439948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/9175208895161439948'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/11/microlog-mention-again.html' title='Microlog Mentioned Again'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-6094931389358138125</id><published>2009-11-08T11:40:00.003+01:00</published><updated>2009-11-08T11:40:17.340+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Öredev'/><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Reflections'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Öredev Reflections</title><content type='html'>I have just finished 3 intense day at the &lt;a href="http://www.oredev.org/"&gt;Öredev&lt;/a&gt; conference here in &lt;a href="http://en.wikipedia.org/wiki/Malm%C3%B6"&gt;Malmö&lt;/a&gt;. As always I have a lot of thoughts, ideas and inspiration after attending a conference. These are my reflections from the conference:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I was missing a sessions about &lt;a href="http://www.android.com/"&gt;Android&lt;/a&gt;. Everybody is talking about the Android platform, but I wonder how many developers are actually developing for Android. It would be interesting to hear about some real Android projects. But maybe next year we will have some Android sessions?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I was surprised by the session "Design to Development- Collaborating and Communicating Interaction Design". I have never heard of &lt;a href="http://theresaneil.wordpress.com/"&gt;Theresa Neil&lt;/a&gt; before. She has some really good ideas. It was about communication between developers and interaction designers. This is something that I could relate to.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;My friend and colleague Davor had an interesting presentation called "Snow white  and the seven dwarfs".  It is a true about Davor (Snow White) and his team of developers (the dwarfs). He introduces the concept of Developers Exploratory Testing (DET), which is a way to do continuous testing in an agile project. The James Bach really liked the way how Davor has taken some ideas by &lt;a href="http://www.satisfice.com/blog/"&gt;James Bach&lt;/a&gt; and evolved them even further. Note: I am one of the dwarfs.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sonatype.com/people/2009/04/jason-van-zyl-on-the-future-of-maven-maven-3/"&gt;Maven 3.x&lt;/a&gt; has some genuinely interesting news. The thing that I would like to try out the most is the new Maven console. I hope that it will help me to do faster builds.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The keynote by &lt;a href="http://www.hanselman.com/blog/"&gt;Scott Hanselman&lt;/a&gt; was interesting. He gave some nice hands on tip for improving your efficiency as a developer.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I have been registered as a &lt;a href="http://twitter.com/"&gt;Twitter&lt;/a&gt; user for some time now. Never used it much for anything other than &lt;a href="http://www.hanselman.com/blog/"&gt;Microlog&lt;/a&gt; news. During the conference I twittered a lot. I used the "&lt;a href="http://www.brighthub.com/mobile/google-android/reviews/34173.aspx"&gt;I Tweet&lt;/a&gt;" Android client. Now it feels like I am hooked on Twitter. The Tweets was displayed on large screens all over the place, so it became very popular for many attendees.  In fact tweets about #oredev was on the top list for Scandinavia.&lt;/li&gt;&lt;li&gt;I attended a session by &lt;a href="http://www.nealford.com/"&gt;Neil Ford&lt;/a&gt; that was interesting. He is the author of "The Productive Programmer", a book that I recently read. As the name implies it is all about productivity for programmers.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Some interesting stuff going around with the &lt;a href="http://store.java.com/"&gt;Java app store&lt;/a&gt;. I have always wondered why Java desktop applications are so underrated. I hope that Java desktop apps will get more popular.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.zefrank.com/"&gt;Ze Frank&lt;/a&gt; is very funny. He has a lot of very interesting social experiments going on and some unusual games.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I liked the sauna and dinner on Monday. Did meet some interesting people there like &lt;a href="http://www.zbaassociates.com/"&gt;Marc Lesser&lt;/a&gt; and &lt;a href="http://www.spazout.com/"&gt;Chris Hughes&lt;/a&gt;. The Swedish pickled herring on a toast was superb. The main course was Swedish fish, not candy kind, but a codfish.&lt;/li&gt;&lt;li&gt;In general a very good conference. Of course I am a little bit biased since my company is one of the founders of Öredev.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;That is all that I could remember right now. I guess that I have missed something out. Here are some pictures from the conference:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_w7OU_FVnMiE/SvXCgK71BQI/AAAAAAAAANU/WlPUsOMouYQ/s1600-h/DSC09808.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_w7OU_FVnMiE/SvXCgK71BQI/AAAAAAAAANU/WlPUsOMouYQ/s400/DSC09808.JPG" alt="" id="BLOGGER_PHOTO_ID_5401437186047673602" border="0" /&gt;&lt;/a&gt; Marc Lesser about "Doing Less"&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_w7OU_FVnMiE/SvXDKiqtrkI/AAAAAAAAANc/s6mKYbg3I8s/s1600-h/DSC09819.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_w7OU_FVnMiE/SvXDKiqtrkI/AAAAAAAAANc/s6mKYbg3I8s/s400/DSC09819.JPG" alt="" id="BLOGGER_PHOTO_ID_5401437913972846146" border="0" /&gt;&lt;/a&gt;&lt;a href="http://terrencebarr.wordpress.com/"&gt;Terrence Barr&lt;/a&gt; about Java and Open Source&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_w7OU_FVnMiE/SvXUgmibrZI/AAAAAAAAANk/dBp8ODt5arw/s1600-h/DSC09838.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_w7OU_FVnMiE/SvXUgmibrZI/AAAAAAAAANk/dBp8ODt5arw/s400/DSC09838.JPG" alt="" id="BLOGGER_PHOTO_ID_5401456984666647954" border="0" /&gt;&lt;/a&gt;Theresa Neil about Interaction Designers and their interaction with software developers and vice versa.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_w7OU_FVnMiE/SvXZ9joKdPI/AAAAAAAAANs/QgNIWuSeErc/s1600-h/DSC09859.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_w7OU_FVnMiE/SvXZ9joKdPI/AAAAAAAAANs/QgNIWuSeErc/s400/DSC09859.JPG" alt="" id="BLOGGER_PHOTO_ID_5401462979659724018" border="0" /&gt;&lt;/a&gt;Davor speaking about "Snow white and the seven dwarfs".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_w7OU_FVnMiE/SvXaPqE_gJI/AAAAAAAAAN0/L8FKh_Ci3G0/s1600-h/DSC09871.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_w7OU_FVnMiE/SvXaPqE_gJI/AAAAAAAAAN0/L8FKh_Ci3G0/s400/DSC09871.JPG" alt="" id="BLOGGER_PHOTO_ID_5401463290628898962" border="0" /&gt;&lt;/a&gt;The Öredev Twitter feed. Notice the comments about Davor's presentation.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_w7OU_FVnMiE/SvXapWoZqoI/AAAAAAAAAN8/Kj2oKjTnldM/s1600-h/DSC09902.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_w7OU_FVnMiE/SvXapWoZqoI/AAAAAAAAAN8/Kj2oKjTnldM/s400/DSC09902.JPG" alt="" id="BLOGGER_PHOTO_ID_5401463732085303938" border="0" /&gt;&lt;/a&gt;The No SQL presentation. To the left Emil Eifrem, Adam Skogman to the right. Notice their new definition of NO SQL.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_w7OU_FVnMiE/SvXbJsekWTI/AAAAAAAAAOE/6Tu_Lmg4ODg/s1600-h/DSC09936.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_w7OU_FVnMiE/SvXbJsekWTI/AAAAAAAAAOE/6Tu_Lmg4ODg/s400/DSC09936.JPG" alt="" id="BLOGGER_PHOTO_ID_5401464287705454898" border="0" /&gt;&lt;/a&gt;The multi talented Ze Frank was very funny.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_w7OU_FVnMiE/SvXbcY-pFMI/AAAAAAAAAOM/1iuREsFaJqk/s1600-h/DSC09939.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_w7OU_FVnMiE/SvXbcY-pFMI/AAAAAAAAAOM/1iuREsFaJqk/s400/DSC09939.JPG" alt="" id="BLOGGER_PHOTO_ID_5401464608888788162" border="0" /&gt;&lt;/a&gt;An air safety instruction. Notice the wizard to the right.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_w7OU_FVnMiE/SvXbwXOUPdI/AAAAAAAAAOU/8e8F_hehrU4/s1600-h/DSC00001.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_w7OU_FVnMiE/SvXbwXOUPdI/AAAAAAAAAOU/8e8F_hehrU4/s400/DSC00001.JPG" alt="" id="BLOGGER_PHOTO_ID_5401464952015044050" border="0" /&gt;&lt;/a&gt;Chris Hughes about the secrets of the iPhone. Chris is a very cool geek, just the way a geek should be according to me.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_w7OU_FVnMiE/SvXcr2t1TcI/AAAAAAAAAOc/hC2NakfyPf0/s1600-h/DSC00019.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_w7OU_FVnMiE/SvXcr2t1TcI/AAAAAAAAAOc/hC2NakfyPf0/s400/DSC00019.JPG" alt="" id="BLOGGER_PHOTO_ID_5401465974081015234" border="0" /&gt;&lt;/a&gt;Looking for some bugs?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_w7OU_FVnMiE/SvXc6-fikwI/AAAAAAAAAOk/DjorzrCYFmE/s1600-h/DSC09977.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_w7OU_FVnMiE/SvXc6-fikwI/AAAAAAAAAOk/DjorzrCYFmE/s400/DSC09977.JPG" alt="" id="BLOGGER_PHOTO_ID_5401466233866588930" border="0" /&gt;&lt;/a&gt;Scott Hanselman and his keynote.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-6094931389358138125?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/6094931389358138125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=6094931389358138125' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/6094931389358138125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/6094931389358138125'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/11/oredev-reflections.html' title='Öredev Reflections'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_w7OU_FVnMiE/SvXCgK71BQI/AAAAAAAAANU/WlPUsOMouYQ/s72-c/DSC09808.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-4918543380699133885</id><published>2009-10-30T17:19:00.002+01:00</published><updated>2009-10-30T17:24:11.404+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>Powerful Logging in Java ME</title><content type='html'>The last couple of weeks has involved very much work. First of all I have been preparing the Microlog V2 release. Second I have been writing an introductory article to Microlog. It is now published over at Sun Developer Network. Please read the article and rate it.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://java.sun.com/developer/technicalArticles/javame/javame-logging/"&gt;http://java.sun.com/developer/technicalArticles/javame/javame-logging/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As always, feedback is very welcome. What do you think about the latest Microlog (V2) release? What do you think about the article?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-4918543380699133885?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/4918543380699133885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=4918543380699133885' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/4918543380699133885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/4918543380699133885'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/10/powerful-logging-in-java-me.html' title='Powerful Logging in Java ME'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-3599242053003533798</id><published>2009-10-15T21:10:00.022+02:00</published><updated>2009-10-22T21:26:55.168+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><title type='text'>Using Microlog from Maven</title><content type='html'>Microlog V2 is available from the Maven central repository, which was not the case for Microlog V1. Thus you need to add the Microlog Maven repository to your Maven project file when using Microlog V1. This is not the case with Microlog V2, since the Maven central repository is automatically searched if no repository is specified. Just add this simple snippet into your pom.xml file:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt; &amp;lt;groupId&amp;gt;net.sf.microlog&amp;lt;/groupId&amp;gt;&lt;br /&gt; &amp;lt;artifactId&amp;gt;microlog-logger-core&amp;lt;/artifactId&amp;gt;&lt;br /&gt; &amp;lt;version&amp;gt;2.0.5&amp;lt;/version&amp;gt;&lt;br /&gt; &amp;lt;scope&amp;gt;compile&amp;lt;/scope&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&lt;code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This will let you use the core part of Microlog. If you wish to have access to the MIDP part of Microlog, add this snippet:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt; &amp;lt;groupId&amp;gt;net.sf.microlog&amp;lt;/groupId&amp;gt;&lt;br /&gt; &amp;lt;artifactId&amp;gt;microlog-logger-midp&amp;lt;/artifactId&amp;gt;&lt;br /&gt; &amp;lt;version&amp;gt;2.0.5&amp;lt;/version&amp;gt;&lt;br /&gt; &amp;lt;scope&amp;gt;compile&amp;lt;/scope&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Notice that the version is 2.0.5 which is the latest stable release as of today. For those who want to be on the cutting edge, there is also a snapshot version available. Just replace 2.0.5 with 2.1.0-SNAPSHOT in the examples above.&lt;br /&gt;&lt;br /&gt;And that is it! You could now compile your Java ME code that uses Microlog within a a couple of minutes. A lot of projects are using Maven and I hope that you will find this tip useful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-3599242053003533798?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/3599242053003533798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=3599242053003533798' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3599242053003533798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3599242053003533798'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/10/using-microlog-from-maven.html' title='Using Microlog from Maven'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-5552278333474271750</id><published>2009-10-14T20:59:00.003+02:00</published><updated>2009-10-14T20:59:00.521+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microproperties'/><category scheme='http://www.blogger.com/atom/ns#' term='Reflections'/><category scheme='http://www.blogger.com/atom/ns#' term='Other'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><category scheme='http://www.blogger.com/atom/ns#' term='Microinstall'/><category scheme='http://www.blogger.com/atom/ns#' term='Voxtr'/><title type='text'>Microlog Development $$$</title><content type='html'>I have often wondered how many hours I have spent on Microlog. It is countless hours of fun and sometimes frustration. But it is definitely worth it. I guess my wife beg to differ :) Anyway; there is a site called ohloh. This site collects data from the Internet about open source projects. It analyzes the code for a lot of things. For example it checks how well documented the code is. Another interesting metrics is the calculated development cost. Here is a list of the projects that I am involved in:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Microlog - $               &lt;span id="cocomo_value"&gt;435,348&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Microproperties - $               &lt;span id="cocomo_value"&gt;2,955&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Microinstall - $               &lt;span id="cocomo_value"&gt;12,018&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Voxtr - $               &lt;span id="cocomo_value"&gt;29,963&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Interesting reading. Please notice these figures are not only due to my work, but due to other peoples hard work as well. But is these values realistic or not? What do you think?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-5552278333474271750?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/5552278333474271750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=5552278333474271750' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/5552278333474271750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/5552278333474271750'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/10/microlog-development.html' title='Microlog Development $$$'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-8049773032673695150</id><published>2009-10-12T19:52:00.006+02:00</published><updated>2009-10-12T20:15:23.100+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><title type='text'>Microlog Maven Repository</title><content type='html'>Right now I am deploying a signed version of Microlog V1.1.1.  The reason for this is that the Microlog &lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt; artifacts are going to be moved to the &lt;a href="http://www.sonatype.com/"&gt;Sonatype&lt;/a&gt; Maven repository. The next step is to upload the latest Microlog V2 to the same repository. By the way; I am going to use &lt;a href="https://docs.sonatype.com/display/NX/OSS+Repository+Hosting"&gt;Sonatype OSS Repository Hosting&lt;/a&gt;. The reasons for putting the Maven artifacts there are many. First of all, using the SourceForge web hosting as a Maven repository is real bad. The primary problem is that I get all sorts of timeouts or other problems when deploying artifacts. For example, I have tried 5 times now to deploy but has not succeeded yet :( The other reason being that I want Maven to be a natural part of the Maven universe. The Sonatype repository is synched with the Maven central repository. When this is done, it is you as a user (developer) that benefits from that. You only need to specify the Maven dependency, without adding any new repositories. When the artifacts have been moved, I will write an article to explain exactly how this is done.&lt;br /&gt;&lt;br /&gt;Now I will go back and try to deploy the artifacts once more. It seems that it failed for me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-8049773032673695150?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/8049773032673695150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=8049773032673695150' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/8049773032673695150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/8049773032673695150'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/10/microlog-maven-repository.html' title='Microlog Maven Repository'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-3195411812567893238</id><published>2009-10-11T11:14:00.002+02:00</published><updated>2009-10-11T11:18:17.877+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><title type='text'>Microlog V2.0.0 Finallly Available for Download</title><content type='html'>Today I have finally made the V2.0.0 release of Microlog. Please download and try it out. Feedback is very welcome!&lt;br /&gt;&lt;br /&gt;Download it from here: https://sourceforge.net/projects/microlog/files/&lt;br /&gt;&lt;br /&gt;The official release news:&lt;br /&gt;&lt;br /&gt;"We have finally released the long awaited Microlog V2.0.0. The core has been reworked and very much improved. It is meaner and leaner than ever.&lt;br /&gt;&lt;br /&gt;Noteworthy new features:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;New improved configuration&lt;/li&gt;&lt;li&gt;Hierarchical  logging&lt;/li&gt;&lt;li&gt;HttpAppender with a sample servlet that you could do your logging to.&lt;/li&gt;&lt;li&gt;More Maven friendly with small modules. This let you use only the part that you are interested in.&lt;/li&gt;&lt;/ul&gt;Microlog is a small, yet powerful logging library for mobile devices based on the Log4j API. Supports Java ME (J2ME) and Android. Logs to device, to PC or to servers online. Used in all phases from development on emulator/device to outdoor field-testing.&lt;br /&gt;&lt;br /&gt;Microlog is licensed under The Apache Software License, Version 2.0 so it is possible to link and distribute commercial software with this library."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-3195411812567893238?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/3195411812567893238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=3195411812567893238' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3195411812567893238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3195411812567893238'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/10/microlog-v200-finallly-available-for.html' title='Microlog V2.0.0 Finallly Available for Download'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-437658882900538758</id><published>2009-10-01T17:09:00.004+02:00</published><updated>2009-10-01T17:50:43.630+02:00</updated><title type='text'>Mobile and Embedded Community Star Award</title><content type='html'>During the years I have been involved in several developer forums. Lately I have spent many hours in the Mobile and Embedded Forums at SDN. I have tried to help people with their Java ME questions as much as I can. Someone recognized this fact...&lt;br /&gt;&lt;br /&gt;The official news can be found &lt;a href="http://terrencebarr.wordpress.com/2009/10/01/welcome-our-new-community-star-johan-karlsson/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Read more about the "&lt;a href="https://mobileandembedded.dev.java.net/champion_index.html"&gt;Community Star Award&lt;/a&gt;".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-437658882900538758?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/437658882900538758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=437658882900538758' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/437658882900538758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/437658882900538758'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/10/mobile-and-embedded-community-star.html' title='Mobile and Embedded Community Star Award'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-4595633369616070598</id><published>2009-09-27T13:42:00.013+02:00</published><updated>2009-09-27T14:03:34.347+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>Microlog Re-started</title><content type='html'>Finally! I have now re-started my work with &lt;a href="http://microlog.sourceforge.net/"&gt;Microlog&lt;/a&gt;. The re-start took longer than expected; &lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt; was giving me a hard time. To start with it did not manage to create a jar archive, but a &lt;code&gt;NullPointerException&lt;/code&gt;. Since the compilation worked I find it strange that Maven did not manage to create a jar archive. Very strange! I use Maven 2.0.9 since some other project that I am involved in require that version. Anyway I decided to upgrade Maven to the latest stable version. Voila! Problem solved! Now another problem occurred; the pre-verification failed. Some libraries was included several time, which caused &lt;a href="http://proguard.sourceforge.net/"&gt;ProGuard&lt;/a&gt; to emit a lot of warnings. After a couple of minor changes the build managed to finish without any errors. All in all this took an hour or so. Time that I much rather spend on development, than on fixing Maven related problems.&lt;br /&gt;&lt;br /&gt;I finally got around to make what I really wanted to do; implement something that I call aliases. Please let me explain what I mean. A lot of users has complained about being forced to know the name of the &lt;code&gt;Appender&lt;/code&gt; and &lt;code&gt;Formatter&lt;/code&gt; classes when creating their configuration files, aka properties files. The solution was quite simple. I put an alias in a &lt;code&gt;Hashtable&lt;/code&gt; together with the real classname. Let us see how it looked like before my changes:&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;pre&gt;&lt;br /&gt;microlog.appender=net.sf.microlog.core.appender.ConsoleAppender;net.sf.microlog.midp.appender.RecordStoreAppender&lt;br /&gt;microlog.appender.RecordStoreAppender.recordStoreName=MyRMSName&lt;br /&gt;microlog.appender.RecordStoreAppender.maxLogEntries=40&lt;br /&gt;microlog.formatter=net.sf.microlog.common.format.PatternFormatter&lt;br /&gt;microlog.formatter.PatternFormatter.pattern=%c [%P] %m %T&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;With aliases it looks like this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;pre&gt;microlog.appender=ConsoleAppender;RecordStoreAppender&lt;br /&gt;microlog.appender.RecordStoreAppender.recordStoreName=MyRMSName&lt;br /&gt;microlog.appender.RecordStoreAppender.maxLogEntries=40&lt;br /&gt;microlog.formatter=PatternFormatter&lt;br /&gt;microlog.formatter.PatternFormatter.pattern=%c [%P] %m %T&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You could now use the appenders and formatters without knowing their full classname. This goes for all the built-in appenders and formatters. I think this feature is rather handy. What do you think?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-4595633369616070598?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/4595633369616070598/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=4595633369616070598' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/4595633369616070598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/4595633369616070598'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/09/microlog-re-started.html' title='Microlog Re-started'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-3864300633485917601</id><published>2009-08-27T19:50:00.001+02:00</published><updated>2009-08-27T19:50:00.257+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blu-ray'/><category scheme='http://www.blogger.com/atom/ns#' term='Java ME'/><category scheme='http://www.blogger.com/atom/ns#' term='Embedded'/><title type='text'>Blu-ray, BD-J, BD Live etc</title><content type='html'>As you might know I am a cineast and a home theater junkie. I have tried to assemble a decent home theater. From time to time I upgrade it to achieve the ultimate movie experience. For several years now, I have been longing for a &lt;a href="http://www.blu-raydisc.com"&gt;Blu-ray&lt;/a&gt; player. However I do not like to be a early adopter, at least when it comes to hardware. The primary reason is that it is to expensive, the secondary is that the technology needs to be mature enough for me to buy it. In this case it was in fact Java that stopped me. Why? Let me explain.&lt;br /&gt;&lt;br /&gt;A Blu-ray player manufactured today is required to include a Java implementation to adhere to the Blu-ray specification. This is called &lt;a href="http://en.wikipedia.org/wiki/BD-J"&gt;BD-J&lt;/a&gt;. The intention with this is to be able to include more advanced menus, games and interactive contents. A Blu-ray disc can contain one or several &lt;a href="http://en.wikipedia.org/wiki/Xlet"&gt;Xlet&lt;/a&gt; applications. For a more comprehensive article on the subject, please download and read my article &lt;a href="http://www.jayway.se/download/18.22f90280115a3439d1a80001597/jayview14.pdf"&gt;"Blu-ray and Java"&lt;/a&gt;. When the MIDlet specification was released, it took several years before there was a decent implementation available. As it seems, it is the same with Xlet implementation on Blu-ray players. Many independent Blu-ray player reviews shows that Blu-ray discs with Java content have longer loading time. For example, it is reported that loading time up to several minutes is not unusual.&lt;br /&gt;&lt;br /&gt;The July issue of the Swedish magazine "&lt;a href="http://www.hemmabiotidningen.se/"&gt;HemmaBio&lt;/a&gt;" contained a big review of several Blu-ray players. The LG BD370 was dubbed "Best Buy" and at a reasonable price. I searched the Internet and found several positive reviews, like &lt;a href="http://www.trustedreviews.com/home-cinema/review/2009/02/28/LG-BD370-Blu-ray-Player/p1"&gt;this one&lt;/a&gt;. Besides the price, it seemed to have very good Java performance. In fact it is par with the performance of a &lt;a href="http://en.wikipedia.org/wiki/PlayStation_3"&gt;Playstation 3&lt;/a&gt; when it comes to loading times for Blu-discs. It adheres to the latest BD-J version and also has support for &lt;a href="http://www.sonypictures.com/homevideo/bluray/bdlive.html"&gt;BD live&lt;/a&gt;. The BD live feature is used to bring live content to your Blu-ray player, such as trailers. For example, the &lt;a href="http://www.imdb.com/title/tt0418279/"&gt;"Transformer"&lt;/a&gt; movie let you connect to the Internet and download the trailer for the following "Transformer" movie. Another nice feature is the &lt;a href="http://www.youtube.com/"&gt;YouTube&lt;/a&gt; viewer. As you might have understood by now, I bought the LG player.&lt;br /&gt;&lt;br /&gt;To try the player I bought two Blu-ray discs. I decided one disc while I let my son decide the other one. My choice was the &lt;a href="http://www.imdb.com/title/tt0325980/"&gt;"Pirate of Caribbean: the curse of the black pearl"&lt;/a&gt;. This is by many considered as a reference Blu-ray disc. Both the picture and sound are great, but it also contains BD-J content. The BD-J content is used for testing the performance on Blu-ray players, since it is rather big. As mentioned before, it could several minutes to load the content. My son choose the movie &lt;a href="http://www.imdb.com/title/tt0397892/"&gt;"Bolt"&lt;/a&gt;, just because it contained a game. It was a special edition that also contained the DVD version. So this was perfect to test a Java game and to compare the quality difference between the DVD version and the Blu-ray version. Both the picture and sound is considerable better.&lt;br /&gt;&lt;br /&gt;I think it is interesting to see Java on yet another platform. It shows how Java is usable in many different environment. Java is finally used in an environment similar to the environment it was originally designed for, that is set-top boxes.&lt;br /&gt;&lt;br /&gt;Here are some pictures from me using the new Blu-ray player.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_w7OU_FVnMiE/So2bsCgRukI/AAAAAAAAAMk/OtzJ9QLs6Lg/s1600-h/BluRayHomeMenu.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 260px;" src="http://1.bp.blogspot.com/_w7OU_FVnMiE/So2bsCgRukI/AAAAAAAAAMk/OtzJ9QLs6Lg/s400/BluRayHomeMenu.JPG" alt="" id="BLOGGER_PHOTO_ID_5372121111411669570" border="0" /&gt;&lt;/a&gt;The main menu when starting the Blu-ray player.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_w7OU_FVnMiE/So2b_2IfaOI/AAAAAAAAAMs/WXSmk8WXfHA/s1600-h/YouTubeFeatured.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 251px;" src="http://2.bp.blogspot.com/_w7OU_FVnMiE/So2b_2IfaOI/AAAAAAAAAMs/WXSmk8WXfHA/s400/YouTubeFeatured.JPG" alt="" id="BLOGGER_PHOTO_ID_5372121451688061154" border="0" /&gt;&lt;/a&gt;The featured videos on YouTube.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_w7OU_FVnMiE/So2cSYeuYPI/AAAAAAAAAM0/FfGl1rgRhSw/s1600-h/YouTubeJaywaySearch.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 274px;" src="http://3.bp.blogspot.com/_w7OU_FVnMiE/So2cSYeuYPI/AAAAAAAAAM0/FfGl1rgRhSw/s400/YouTubeJaywaySearch.JPG" alt="" id="BLOGGER_PHOTO_ID_5372121770145767666" border="0" /&gt;&lt;/a&gt;The search screen, while searching for the Jayway video.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_w7OU_FVnMiE/So2c_BiuSvI/AAAAAAAAAM8/sqxKk4IowHw/s1600-h/YouTubeJaywayVideo.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 248px;" src="http://2.bp.blogspot.com/_w7OU_FVnMiE/So2c_BiuSvI/AAAAAAAAAM8/sqxKk4IowHw/s400/YouTubeJaywayVideo.JPG" alt="" id="BLOGGER_PHOTO_ID_5372122537082637042" border="0" /&gt;&lt;/a&gt;The Jayway video in normal screen mode.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_w7OU_FVnMiE/So2dKH3fWiI/AAAAAAAAANE/cVXFrwv6ifY/s1600-h/YouTubeFullScreen.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 257px;" src="http://3.bp.blogspot.com/_w7OU_FVnMiE/So2dKH3fWiI/AAAAAAAAANE/cVXFrwv6ifY/s400/YouTubeFullScreen.JPG" alt="" id="BLOGGER_PHOTO_ID_5372122727758912034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The Jayway video in full screen mode.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_w7OU_FVnMiE/So2dXKfvPGI/AAAAAAAAANM/tG1A6HGHWSE/s1600-h/BoltBluRayGame.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 248px;" src="http://3.bp.blogspot.com/_w7OU_FVnMiE/So2dXKfvPGI/AAAAAAAAANM/tG1A6HGHWSE/s400/BoltBluRayGame.JPG" alt="" id="BLOGGER_PHOTO_ID_5372122951802895458" border="0" /&gt;&lt;/a&gt;The Bolt game. Notice the localized version. I have not seen this on many computer games today. In the beginning of the game, the instructions are narrated. This is good for kids that could not read.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-3864300633485917601?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/3864300633485917601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=3864300633485917601' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3864300633485917601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3864300633485917601'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/08/blu-ray-bd-j-bd-live-etc.html' title='Blu-ray, BD-J, BD Live etc'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_w7OU_FVnMiE/So2bsCgRukI/AAAAAAAAAMk/OtzJ9QLs6Lg/s72-c/BluRayHomeMenu.JPG' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-1676563372208880786</id><published>2009-08-25T19:21:00.007+02:00</published><updated>2009-08-26T07:57:28.422+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Java ME'/><title type='text'>Appending to a File in Java ME ( J2ME )</title><content type='html'>Yesterday I was asked how to append to a file in &lt;a href="http://en.wikipedia.org/wiki/Java_Platform,_Micro_Edition"&gt;Java ME&lt;/a&gt;. I have never done this before, so I could not give an answer. After some research we found a working solution. This article will go through the different ways to solve it.&lt;br /&gt;&lt;br /&gt;I first looked into the &lt;a href="http://jcp.org/en/jsr/detail?id=75"&gt;JSR-75&lt;/a&gt; documentation, but I did not find any solution there. When searching the Internet, the first solution I found was this:&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;pre&gt;&lt;br /&gt;public void appendToFile() {&lt;br /&gt;try {&lt;br /&gt; FileConnection fileConnection = (FileConnection) Connector.open(&lt;br /&gt;         "file:///c:/other/textfile.txt;append=true",&lt;br /&gt;         Connector.WRITE);&lt;br /&gt; OutputStream outputStream = fileConnection.openOutputStream();&lt;br /&gt; PrintStream printStream = new PrintStream(outputStream);&lt;br /&gt; printStream.println("Some text to append");&lt;br /&gt;} catch (IOException e) {&lt;br /&gt; e.printStackTrace();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;At first it looks promising. The &lt;code&gt;Connector&lt;/code&gt; class specifies that you could add parameters when opening a connection. However the parameters for JSR-75 are not standardized. This solution was mentioned in the Nokia developer forums, so I guess that it works on Nokia phone. The platform that we uses did not support it. Thus this solution is not portable across different Java ME devices. I recommend that you DO NOT use a solution like this.&lt;br /&gt;&lt;br /&gt;The next solution I found looked like this:&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;pre&gt;&lt;br /&gt;public void appendToFileFileSize() {&lt;br /&gt;&lt;br /&gt;try {&lt;br /&gt;   FileConnection fileConnection = (FileConnection) Connector.open(&lt;br /&gt;           "file:///c:/other/textfile.txt", Connector.WRITE);&lt;br /&gt;   OutputStream outputStream = fileConnection.openOutputStream();&lt;br /&gt;   outputStream.flush();&lt;br /&gt;   long fileSize = fileConnection.fileSize();&lt;br /&gt;   String textToAppend = "Some text to append";&lt;br /&gt;   outputStream.write(textToAppend.getBytes(), (int)fileSize, textToAppend.length());&lt;br /&gt;} catch (IOException e) {&lt;br /&gt;   e.printStackTrace();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This works but is rather clumsy and does not look clean. Note that you need to call &lt;code&gt;flush()&lt;/code&gt; before you make a call to &lt;code&gt;fileSize()&lt;/code&gt;, otherwise the size is not guaranteed to be correct. But wait, there is another solution.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;br /&gt;public void appendToFileMaxLong(){&lt;br /&gt;try {&lt;br /&gt; FileConnection fileConnection = (FileConnection) Connector.open(&lt;br /&gt;   "file:///c:/other/textfile.txt", Connector.WRITE);&lt;br /&gt; OutputStream outputStream = fileConnection.openOutputStream(Long.MAX_VALUE);&lt;br /&gt; PrintStream printStream = new PrintStream(outputStream);&lt;br /&gt; printStream.println("Some text to append");&lt;br /&gt;} catch (IOException e) {&lt;br /&gt; e.printStackTrace();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The method openOutputStream(long bytesOffset) open an OutputStream and moves the position the specified offset. When the offset is greater than the file size, the position is moved to the end of the file. This is an clean and portable solution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-1676563372208880786?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/1676563372208880786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=1676563372208880786' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/1676563372208880786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/1676563372208880786'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/08/appending-to-file-in-java-me-j2me.html' title='Appending to a File in Java ME ( J2ME )'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-361084731470805326</id><published>2009-07-22T22:42:00.024+02:00</published><updated>2009-07-23T10:36:13.973+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Best Practices'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>My Top-10 Favorite Development Tools</title><content type='html'>The other day I got a question about which are my favorite tools, i.e. what is in my Java developer toolbox. I was asked to list my top-10 favorites. This gave me the inspiration to write a blog article on the subject. So here goes my top-10 list of favorite tools.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt;&lt;br /&gt;The basic tool in any Java developers toolbox. The IDE to use.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.scootersoftware.com/"&gt;Beyond Compare&lt;/a&gt;&lt;br /&gt;This is the best comparison tool that I have ever used. There are some open source comparison tools, but they do not match up against Beyond Compare. I think that Beyond Compare is worth every penny.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://findbugs.sourceforge.net/"&gt;FindBugs&lt;/a&gt;&lt;br /&gt;FindBugs is used for finding bugs or potential bugs in your Java code. I use the plug-in version in Eclipse and use it from Maven as well.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microemu.org/"&gt;Microemulator&lt;/a&gt;&lt;br /&gt;An Open Source Java ME emulator. Lets you test your Java ME applications. The drawback is that some JSRs are not implemented yet. Most notably is JSR-205 and JSR-211.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.virtualbox.org/"&gt;Virtual Box&lt;/a&gt;&lt;br /&gt;This lets me run Ubuntu Linux inside Windows Vista. No more dual boot configurations.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://subclipse.tigris.org/"&gt;Subclipse&lt;/a&gt;&lt;br /&gt;Lets you use Subversion inside Eclipse. The Subversive plug-in is a better tool, but the Subclipse tool works better with the Maven plug-in-&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://tortoisesvn.tigris.org/"&gt;Tortoise SVN&lt;/a&gt;&lt;br /&gt;Whenver you are in the Windows file explorer it is nice to have access to Subversion. I have set it to use Beyond Compare when doing file comparison.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt;&lt;br /&gt;I did not really like Maven from the beginning. At the time I was a big fan of Ant.  Maven contains some functionality that is not available in Ant, such site generation. I&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://m2eclipse.sonatype.org/"&gt;Eclipse Maven plug-in&lt;/a&gt;&lt;br /&gt;The name speaks for itself, it gives the ability to run Maven from Eclipse. There is also the pom and Doxia editors that are really good.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/dsdp/mtj/"&gt;Eclipse MTJ plug-in&lt;/a&gt;&lt;br /&gt;The Mobile Tools for Java lets you perform the necessary Java ME tasks.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;This it is. Do you think that I have missed some tool? Is something on the list that in your opinion that should not be there? Looking forward to her&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-361084731470805326?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/361084731470805326/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=361084731470805326' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/361084731470805326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/361084731470805326'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/07/my-top-10-favorite-development-tools.html' title='My Top-10 Favorite Development Tools'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-5270987173114633452</id><published>2009-07-06T22:26:00.001+02:00</published><updated>2009-07-06T22:26:03.233+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reflections'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>Using Your Own Stuff Is Good</title><content type='html'>Using your own stuff is good! Nothing remarkable about that, almost every developer would agree on that. In fact this is how Microlog once was created. It was created out of a real need and I used it extensively from the beginning. As years has gone by, a lot of contributions has been made. The philosophy behind Microlog is that there should many different logging destinations, each suitable in its on special situations. Which logging destination you choose is a matter of taste and the technical circumstances. As a consequence I tend to use a small portion of Microlog, beside the core classes.&lt;br /&gt;&lt;br /&gt;The project I am currently involved in has been running for several months before I joined. The initial team has been wise enough to choose Microlog. When I joined the project, Microlog V1.1.1 was used. Yesterday I was given the assignment of logging some low level details, that potentially could create a lot of logging output. To be able to control the logging with fine granularity, I needed the newest and hottest version of Microlog. Its support for hierarchical loggers, makes it possible to set different logging levels on different classes. In my case I wanted to use TRACE for one class, but DEBUG for the rest of the classes. In my own projects, I usually only import the classes that I really need and leave the rest out. In some cases I have used the binary version of Microlog and ProGuard to keep the packaged Microlog classes to a minimum. The current project is different, Maven is used for building. As such it uses a repository for its jar files.&lt;br /&gt;&lt;br /&gt;I added Maven code to use the latest version of Microlog snapshot. When I used it on my own computer this worked like a charm, but one of my colleagues complained that he could not perform a build. It was missing a jar file from the Microlog repository. As it turned out, this jar was missing. It was available for Microlog V1.1.1, but not for the latest snapshot build. It was very easy to solve, just copy a directory and the repository was working the way it should.&lt;br /&gt;&lt;br /&gt;Other problems emerged when configuring Microlog. The original idea was that the new &lt;code&gt;PropertyConfigurator&lt;/code&gt; should be backward compatible, in order to make it easy to upgrade from Microlog 1.x.x to Microlog V2.0. I found one bug; a property name had changed. This was also easy to fix. Another deploy and the repository contained the fix. The other problem is that I have re-structured the packages, which means that all the appenders and formatters properties have changed. The re-structuring is very important, so I plan to keep the new package names. Although they break the backward compatibility. But since I have changed the major version number, I am not obliged to be 100% backward compatible. When writing this, a new idea has popped up in my head. Maybe I should implement a converter that converts from the old property format to the new property format. Is this a good idea? What do you think?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-5270987173114633452?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/5270987173114633452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=5270987173114633452' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/5270987173114633452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/5270987173114633452'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/07/using-your-own-stuff-is-good.html' title='Using Your Own Stuff Is Good'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-5877789510345676329</id><published>2009-06-22T20:55:00.000+02:00</published><updated>2009-06-22T20:57:58.199+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>Using ProGuard to Shrink Microlog</title><content type='html'>There have been many users that are skeptical to use &lt;a href="http://microlog.sourceforge.net/"&gt;Microlog&lt;/a&gt; due to its size. The current snapshot is around 150 kb, while the latest final release is 127 kb. If you are doing a small MIDlet, this adds considerable overhead to your MIDlet. In normal cases you only use a fraction of all the classes. For example, you only use one or two appenders. The jar contains a lot of different appenders. But there is a solution. The solution is called &lt;a href="http://proguard.sourceforge.net/"&gt;ProGuard&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;ProGuard is an application shrinker/optimizer/obfuscator for Java applications. It can be used from the command line or from your favorite IDE, such as Eclipse or NetBeans. ProGuard is an important tool in your MIDlet development toolbox.&lt;br /&gt;&lt;br /&gt;The recipe for obfuscating your MIDlet and Microlog is as follows:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Select Window -&gt; Preferences&lt;/li&gt;&lt;li&gt;Select the Java ME -&gt; Packaging -&gt; Obfuscation&lt;/li&gt;&lt;li&gt;Press the "Browse" button and select the directory where you installed ProGuard.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_w7OU_FVnMiE/Sj_O_AQUfuI/AAAAAAAAAMc/5y8eTJM-mbI/s1600-h/ProGuardComnfiguration.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 348px;" src="http://2.bp.blogspot.com/_w7OU_FVnMiE/Sj_O_AQUfuI/AAAAAAAAAMc/5y8eTJM-mbI/s400/ProGuardComnfiguration.JPG" alt="" id="BLOGGER_PHOTO_ID_5350222464134971106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Select Project -&gt; Properties&lt;/li&gt;&lt;li&gt;Set the dialog to the value according to this screenshot:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_w7OU_FVnMiE/Sjf37WVUVUI/AAAAAAAAAME/n62ZFoHGi2k/s1600-h/ProGuardProjectProperties.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 266px;" src="http://3.bp.blogspot.com/_w7OU_FVnMiE/Sjf37WVUVUI/AAAAAAAAAME/n62ZFoHGi2k/s400/ProGuardProjectProperties.JPG" alt="" id="BLOGGER_PHOTO_ID_5348015681505088834" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Select "Java Build Path"&lt;/li&gt;&lt;li&gt;Select the "Order &amp;amp; Export" tab. Check the Microlog jar like this&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_w7OU_FVnMiE/Sj_OXCDjUeI/AAAAAAAAAMM/l0Cwl74Q5iY/s1600-h/ProGuardMicrologJarExport.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 302px;" src="http://1.bp.blogspot.com/_w7OU_FVnMiE/Sj_OXCDjUeI/AAAAAAAAAMM/l0Cwl74Q5iY/s400/ProGuardMicrologJarExport.JPG" alt="" id="BLOGGER_PHOTO_ID_5350221777423520226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Select your project. Bring up the context menu (in Windows it is done by a right click). Select "Mobile Tools for Java" -&gt; "Create Obfuscated Package". You should now have an obfuscated jar in the /deployed directory. If you run the project as a "Emulated Java ME JAD", you automatically use the obfuscated jar file.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;For those of you that are not using Eclipse, you could use the following configuration when running ProGuard from the command line.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;-overloadaggressively&lt;br /&gt;-defaultpackage ''&lt;br /&gt;-allowaccessmodification&lt;br /&gt;-dontusemixedcaseclassnames&lt;br /&gt;-keep class net.sf.microlog.appender.MemoryBufferAppender&lt;br /&gt;-keep class net.sf.microlog.appender.ConsoleAppender&lt;br /&gt;-keep class net.sf.microlog.format.PatternFormatter&lt;br /&gt;-injars microlog.jar&lt;br /&gt;-injars yourmidlet.jar&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Copy the content and save it to a file, for example proguard.conf. Then you start ProGuard like this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;java -jar proguard.jar @proguard.conf.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;By using ProGuard you reduce the size of your MIDlet jar. Unnecessary classes are removed, the code is optimized and obfuscated. And using Microlog does not mean lare overhead to your MIDlet. There are other alternatives to ProGuard, but ProGuard is the most widely and de-facot in the lovely world of Java ME.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-5877789510345676329?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/5877789510345676329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=5877789510345676329' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/5877789510345676329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/5877789510345676329'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/06/using-proguard-to-shrink-microlog.html' title='Using ProGuard to Shrink Microlog'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_w7OU_FVnMiE/Sj_O_AQUfuI/AAAAAAAAAMc/5y8eTJM-mbI/s72-c/ProGuardComnfiguration.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-8011740140976740032</id><published>2009-06-21T22:55:00.001+02:00</published><updated>2009-06-21T22:55:00.990+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Microlog is Still Alive!</title><content type='html'>It was a while since I wrote about what is happening to Microlog. I myself have not been working very much on Microlog the last couple of weeks. But fortunately there are more developers working on Microlog. At the end of last week, the Microlog project was joined by Jarle Hansen. He has been improving the Bluetooth logging in Microlog, to work better on Ubuntu Linux. He has also written an excellent article on the subject &lt;a href="http://hansjar.blogspot.com/2009/06/using-microlog-over-bluetooth-with.html"&gt;"Using MicroLog over Bluetooth with Ubuntu and Eclipse"&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Therefore I have released a new snapshot of Microlog. The snapshot version includes the changes made by Jarle Hansen, as well as some minor changes made by me. The snapshot version is also available in the Microlog Maven repository as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-8011740140976740032?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/8011740140976740032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=8011740140976740032' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/8011740140976740032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/8011740140976740032'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/06/microlog-is-still-alive.html' title='Microlog is Still Alive!'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-3831081924459220795</id><published>2009-06-03T20:55:00.001+02:00</published><updated>2009-06-03T20:55:00.864+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><title type='text'>Report from Presentation at JavaForum in Malmö and Gothenburg</title><content type='html'>Last week I did present &lt;a href="http://microlog.microsuite.org/"&gt;Microlog&lt;/a&gt; at &lt;a href="http://www.javaforum.se/"&gt;JavaForum&lt;/a&gt; both in &lt;a href="http://www.malmo.se/"&gt;Malmö&lt;/a&gt; and &lt;a href="http://www.goteborg.se/"&gt;Gothenburg&lt;/a&gt;. JavaForum is the Swedish JUG. It was a great honor to be invited to both these places. These are my reflections and thoughts about my presentation.&lt;br /&gt;&lt;br /&gt;At the first presentation in Malmö there was around 50-60 people. I knew many of the people beforehand, which made me less nervous. The presentation went smoothly and I got some questions, that hinted me what to improve in the presentation. Unfortunately I did not had time to stay afterwards to get some more feedback.&lt;br /&gt;&lt;br /&gt;Driving to the destination in Gothenburg at rush hours was not an easy task. My GPS device was out of battery, so I used &lt;a href="http://maps.google.com/"&gt;Google Maps&lt;/a&gt; to find my directions. When no GPS device is attached, it uses GSM cells to figure out where you are. The accuracy is about 600 m in a city like Gothenburg. That is maybe enough when walking in a city to find out where to go, but by car that is not enough. What a shame I was not in a &lt;a href="http://www.hollywood.com/"&gt;Hollywood&lt;/a&gt; movie, where the accuracy seems to much better than that. Anyway I found the place to be and was there on time.&lt;br /&gt;&lt;br /&gt;Afterwards I had the opportunity to speak to some people in the audience. First of all I got a question about what Maven help I wanted. It is mainly about getting Maven to generate better packages for the releases. For more details see &lt;a href="http://sourceforge.net/forum/forum.php?thread_id=3260687&amp;amp;forum_id=464718"&gt;this discussion&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;One other question I got, was "What is the reason for not being able to do &lt;code&gt;printStackTrace()&lt;/code&gt; and re-direct it to a log? Or do you have any idea how to solve it?". The thing is that I have not found a way to re-direct to another destination within Java ME. The reasons are:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The System.err is final in the System class found in Java ME (CLDC). I do not know why this is, but it hinders you as a developer from setting these to something like a &lt;code&gt;FileOutputStream&lt;/code&gt; or similar.&lt;/li&gt;&lt;li&gt;The method &lt;code&gt;printStackTrace()&lt;/code&gt; comes in different flavors in Java SE. For example, the &lt;code&gt;public void printStackTrace(PrintStream s)&lt;/code&gt; is useful to direct the stack trace to another destination than the default one. This is not available in Java &lt;/li&gt;&lt;/ol&gt;One workaround that works under some condition is to re-direct the output from your Java MIDlet outside the JVM found in your phone. On the &lt;a href="http://www.symbian.org/"&gt;Symbian&lt;/a&gt; platform there are such applications available. If the problem is reproducible in the WTK, you could run it look you normally do. By using the &lt;code&gt;ConsoleAppender&lt;/code&gt; you get both the normal exception message along with the stack trace. BTW do you know any other workaround? If yes, please enlighten me.&lt;br /&gt;That is all for now. Thanks to Björn Granvik and &lt;a href="http://thulin.pp.se/rikard/"&gt;Rickard Thulin&lt;/a&gt; for inviting me to JavaForum.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-3831081924459220795?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/3831081924459220795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=3831081924459220795' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3831081924459220795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3831081924459220795'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/06/report-from-presentation-at-javaforum.html' title='Report from Presentation at JavaForum in Malmö and Gothenburg'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-5792713381173742460</id><published>2009-05-29T21:57:00.036+02:00</published><updated>2009-06-01T22:32:26.736+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reflections'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><category scheme='http://www.blogger.com/atom/ns#' term='Log4j'/><title type='text'>"What is Soo Special About Microlog?"</title><content type='html'>&lt;div class="cssButtonOuter"&gt;&lt;div class="cssButtonMiddle"&gt;&lt;div class="cssButtonInner"&gt;&lt;a&gt;"What is So Special About &lt;/a&gt;&lt;a href="http://microlog.microsuite.org/"&gt;Microlog&lt;/a&gt;?", this was the first question I got this morning when arriving to work. This was asked by one of the &lt;a href="http://java.sun.com/javaee/"&gt;Java Enterprise&lt;/a&gt; specialists at my work. Hmmm... let me think. I was a bit paralyzed by the question, although I should not be. This is not the first time I get this question, I get this question a lot (from people not working with &lt;a href="http://en.wikipedia.org/wiki/Java_ME"&gt;Java ME&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;My first answer was "size!". The &lt;a href="http://logging.apache.org/log4j/"&gt;Log4j&lt;/a&gt; jar is 389kB, but Microlog is about 110 kB. But the actual jar size is not what is interesting, but the overhead that Microlog add to the jar. In normal cases it is somewhere between 30-40 kB, depending on what you decide to use. I consider this to be little overhead considering that you get two appenders with two formatters and the configuration framework  with the ability to configure via properties files and/or JAD settings files. Plus you get the ability to setup your loggers in a logging hierarchy. All in all, the small size of Microlog is one of its benefits.&lt;br /&gt;&lt;br /&gt;My second answer was "remote logging". Log4j contains some remote logging destinations, like &lt;a href="http://en.wikipedia.org/wiki/Syslog"&gt;syslog&lt;/a&gt; daemons and &lt;a href="http://en.wikipedia.org/wiki/JDBC"&gt;JDBC&lt;/a&gt;. Microlog has also support for logging to syslog daemons.  This is one of my personal favorites. It is easy to setup a syslog daemon and you get the logs on the server directly. I choose not to implement JDBC support in Microlog. First of all, it makes me sick to think about setting up a JDBC server. Secondly there is not many JDBC drivers available for Java ME with &lt;a href="http://en.wikipedia.org/wiki/CLDC"&gt;CLDC&lt;/a&gt;. Instead I implemented support for logging to Amazon S3. It is easy to setup and you have access to very much storage for a cheap price. Right now you can upload 1 GB for $0.03. Compare this to the price of setting up a JDBC server. You cannot work for many seconds before you have used up your $0.03! It is also very pratical to log to &lt;a href="http://aws.amazon.com/s3/"&gt;Amazon S3&lt;/a&gt;. For example you log to a file, when the file gets to big or when you log above a certain level, the file is copied to the server. As far as I know this is a unique feature, this is not implemented in Log4j and I do no know any other logging library which has suport for Amazon S3. And that is not all; Microlog has support for sending an SMS/MMS or e-mail as well. Log4j has support for e-mail which is based on a simple SMTP client. Micrologs implementation is a little bit smaller and smarter. It uses the &lt;a href="http://www.jcp.org/en/jsr/detail?id=205"&gt;Wireless Messaging API (JSR-205)&lt;/a&gt; to send an e-mail. The actual assembling of the e-mail and the sending code is less than 30 lines of code. Quite impressive if you ask me, but I am a little bit biased. What do you think? These are the most important remote loggers, but there are more. Please take a look at the Microlog documentation to find out more.&lt;br /&gt;&lt;br /&gt;The second  question was "how do people do logging if they do not have Microlog?". My answer was "I am not sure, but I guess that they log to the record store or to a file". But if you choose to log to the record store, they also need to implement some kind of log viewer. The data is stored as a byte[] in the record store, which is hard to read right away.&lt;br /&gt;&lt;br /&gt;After some further discussion with my collegue, he ask me "...then people must be very happy when the find out about Microlog?". Yes in fact they they are. At least the people that I have spooken to. Of course, sometimes people have some issues with Microlog that they do not like or like to improve. But I always try to listen to the feedback I get and improve Microlog accordingly. In fact most of the important changes are based on feedback. So please continue giving me more feedback about Microlog.&lt;br /&gt;&lt;br /&gt;&lt;/div&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/7396059659723667740-5792713381173742460?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/5792713381173742460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=5792713381173742460' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/5792713381173742460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/5792713381173742460'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/05/what-is-soo-special-about-microlog.html' title='&quot;What is Soo Special About Microlog?&quot;'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-4291806340035528623</id><published>2009-05-14T16:23:00.001+02:00</published><updated>2009-05-14T16:24:42.198+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Other'/><title type='text'>Available on Twitter</title><content type='html'>I am now available on &lt;a href="http://twitter.com/"&gt;Twitter&lt;/a&gt;. Use the link to the left if you want to follow me on Twitter. This is kind of a experiment for me. I am not sure whether I like Twitter or not. But at least it is worth a try.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-4291806340035528623?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/4291806340035528623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=4291806340035528623' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/4291806340035528623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/4291806340035528623'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/05/available-on-twitter.html' title='Available on Twitter'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-3570006635862367118</id><published>2009-05-14T07:49:00.005+02:00</published><updated>2009-05-14T12:38:37.626+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><title type='text'>SourceForge Community Choice Awards, Please Vote for Microlog</title><content type='html'>Every year SourceForge honors the most popular projects in the Community Choice Awards. The first nomination period for this years awards has started. Read more about in this &lt;a href="http://www.linkedin.com/redirect?url=http%3A%2F%2Fir%2Ecorp%2Esourceforge%2Ecom%2Fphoenix%2Ezhtml%3Fc%3D82629%26p%3Dirol-newsArticle%26ID%3D1285349&amp;amp;urlhash=H0zk&amp;amp;_t=disc_detail_link" target="_blank"&gt;press release&lt;/a&gt;. If you find Microlog useful, please nominate it by going to the &lt;a href="http://www.linkedin.com/redirect?url=http%3A%2F%2Fsourceforge%2Enet%2Fprojects%2Fmicrolog&amp;amp;urlhash=2Taj&amp;amp;_t=disc_detail_link" target="_blank"&gt;SourceForge project page&lt;/a&gt; and press the nominate button.&lt;br /&gt;&lt;br /&gt;Edit: For your convenience, I have provided &lt;a href="http://bit.ly/3wuKoD"&gt;this link&lt;/a&gt; to get to the right place directly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-3570006635862367118?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/3570006635862367118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=3570006635862367118' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3570006635862367118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3570006635862367118'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/05/sourceforge-community-choice-awards.html' title='SourceForge Community Choice Awards, Please Vote for Microlog'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-5004831735544944341</id><published>2009-05-13T22:00:00.005+02:00</published><updated>2009-05-13T22:28:34.508+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><title type='text'>Preparations for a Microlog Presentation @JavaForum in Sweden</title><content type='html'>It is now official; I will be talking about &lt;a href="http://microlog.microsuite.org/"&gt;Microlog&lt;/a&gt; at the next &lt;a href="http://www.javaforum.se/jf/index.jsp?meeting=44"&gt;JavaForum meeting&lt;/a&gt; in Gothenburg. &lt;a href="http://www.javaforum.se/"&gt;JavaForum&lt;/a&gt; is the official Swedish JUG, with 3 different branches in Stockholm, Gothenburg and Malmö. The talk will be held in Gothenburg.&lt;br /&gt;&lt;br /&gt;I am really looking forward to it. Tonight I have been preparing myself. Most of the time I have been  coding. I want to improve the V2.0 branch. The goal is to stabilize the API before the presentation. My hope is that I get many downloads after the presentation. But I have also started to do a first draft of the actual presentation. I only have a 30 minute slot, so I need to carefully select the pieces that I want to be included. This is a nice little challenge. Me like it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-5004831735544944341?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/5004831735544944341/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=5004831735544944341' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/5004831735544944341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/5004831735544944341'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/05/preparations-for-microlog-presentation.html' title='Preparations for a Microlog Presentation @JavaForum in Sweden'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-1557221520509265564</id><published>2009-05-08T09:28:00.033+02:00</published><updated>2009-05-10T20:35:39.635+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reflections'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android, Android, Android and Some More Android</title><content type='html'>&lt;a href="http://www.android.com/"&gt;Android&lt;/a&gt; is getting a lot of attention right now, both from me and a lot of other people. Recently I attended a breakfast seminar about business opportunities with Android. The author of the book &lt;a href="http://commonsware.com/Android/"&gt;"The Busy Coder's Guide to Android Development"&lt;/a&gt;, &lt;a href="http://www.bignerdranch.com/instructors/murphy.shtml"&gt;Mark Murphy&lt;/a&gt;, gave an interesting presentation on the subject.  After a brief technical introduction, Mark spoke about the business opportunities. As I gathered, he mostly used the classical open source business opportunities, more or less. Nevertheless the presentation was good. The most interesting part of the breakfast seminar was actually the fact that it was really crowded. I would guess that there was around 200-300 people there, which is very much for a breakfast seminar i &lt;a href="http://en.wikipedia.org/wiki/Malm%C3%B6"&gt;Malmö&lt;/a&gt;. I meet a lot of old colleagues and all was very positive about Android.&lt;br /&gt;&lt;br /&gt;I have just attended the "Advanced Android" course by &lt;a href="http://www.wayeducation.se/"&gt;WayEducation&lt;/a&gt;. It was really good and gave insight into the inner workings of the Android platform. I am looking forward to start programming Android for real, in a real project. But that is just around the corner, since it is part of our product backlog.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_w7OU_FVnMiE/SgcdTIXZhhI/AAAAAAAAAL0/f4torXrGO2w/s1600-h/DSC06475.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_w7OU_FVnMiE/SgcdTIXZhhI/AAAAAAAAAL0/f4torXrGO2w/s400/DSC06475.JPG" alt="" id="BLOGGER_PHOTO_ID_5334264498143987218" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Last but not least I have ported some parts of &lt;a href="http://microlog.microsuite.org/"&gt;Microlog&lt;/a&gt; to work on Android. The core is the same for Java ME and Android, but opening a file or a network connection is different. On the other hand writing the actual data is done the same way, e.g. to an &lt;code&gt;OutputStream&lt;/code&gt;. This shows that even though Android not officially is Java, we could re-use Java code.&lt;br /&gt;&lt;br /&gt;It will be interesting to follow what happens with Android, the platform, the community and the phones. Only time will tell.&lt;br /&gt;&lt;br /&gt;What are you opinions/experiences with Android?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-1557221520509265564?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/1557221520509265564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=1557221520509265564' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/1557221520509265564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/1557221520509265564'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/05/android-android-android-and-some-more.html' title='Android, Android, Android and Some More Android'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_w7OU_FVnMiE/SgcdTIXZhhI/AAAAAAAAAL0/f4torXrGO2w/s72-c/DSC06475.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-5438861649645240417</id><published>2009-05-07T10:29:00.009+02:00</published><updated>2009-05-07T10:47:14.257+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Java ME'/><title type='text'>Detecting Flight Mode (Kind of) in Java ME on a Nokia Mobile</title><content type='html'>The other day I wrote an article about &lt;a href="http://myossdevblog.blogspot.com/2009/05/detect-airplaineflight-mode-on-motorola.html"&gt;how to detect flight mode&lt;/a&gt;. But it did not cover how to solve it on a Nokia phone. On a Nokia phone, like a Sony Ericsson phone, there is no system property to detect flight mode. On the other hand, if we asume that what we really are interested in checking if the network is available or not, we have a solution on a Nokia phone. If we check this, we can make the MIDlet smart, e.g. setting it in off-line or on-line mode.&lt;br /&gt;&lt;br /&gt;The solution is very simple:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;String networkAvailable = System.getProperty("com.nokia.mid.networkavailability");&lt;br /&gt;&lt;br /&gt;if(networkAvailable.equals("available")){&lt;br /&gt;   // Warn the user that the network is not available and off-line mode is used&lt;br /&gt;}else{&lt;br /&gt;   // Network available =&gt; we could work as normal.&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;The trick here works on the Nokia S60 platform FP3, or later. I have not found out a solution on a Nokia S40 phone. Does anyone know?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-5438861649645240417?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/5438861649645240417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=5438861649645240417' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/5438861649645240417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/5438861649645240417'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/05/detecting-flight-mode-kind-of-in-java.html' title='Detecting Flight Mode (Kind of) in Java ME on a Nokia Mobile'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-3064269963534242042</id><published>2009-05-06T22:00:00.001+02:00</published><updated>2009-05-06T22:03:42.999+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Java ME'/><title type='text'>Detect Airplaine/Flight Mode on Motorola and Sony Ericsson Mobile Phones in  Java</title><content type='html'>Many MIDlets communicate with a server and/or connects to the Internet. If the user enables airplane/flight mode, the MIDlet should be aware of this. This way it is possible to set the MIDlet in off-line mode automatically and inform the user when trying to access the net. It is much nicer to get a dialog saying "Sorry you are in flight mode, you cannot this and that", instead of "Failed to connect to server". This article describe how to do this in Java ME (on some platforms).&lt;br /&gt;&lt;br /&gt;There is no API that enable a Java ME developer to access the flight mode. The key here is to get a system property via the right key, no pun intended :) This is done via a call to &lt;code&gt;System.getProperty("key")&lt;/code&gt;. The key differs from platform to platform.&lt;br /&gt;&lt;br /&gt;On a Motorola mobile phone, with Motorola OS, this is done like this:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;String airplaneMode = System.getProperty("com.mot.network.airplanemode");&lt;br /&gt;&lt;br /&gt;if(airplaneMode.equals("true")){&lt;br /&gt;   // We are in flight mode&lt;br /&gt;}else{&lt;br /&gt;   // We are not in flight mode&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;On a Sony Ericsson mobile phone it is a little bit different, since there is no system property to detect if we are in flight mode or not. The trick here is to use a key that detects the Radio Access Technology (RAT) used at the moment. This returns null if the radio is turned of, which it always is when in flight mode. The code looks like this:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;String flightMode = System.getProperty("com.sonyericsson.net.rat");&lt;br /&gt;&lt;br /&gt;if(flightMode == null){&lt;br /&gt;   // We are in flight mode&lt;br /&gt;}else{&lt;br /&gt;   // We are not in flight mode&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And that is it! Pretty simple, but still powerful. I hope this trick is useful for you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-3064269963534242042?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/3064269963534242042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=3064269963534242042' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3064269963534242042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3064269963534242042'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/05/detect-airplaineflight-mode-on-motorola.html' title='Detect Airplaine/Flight Mode on Motorola and Sony Ericsson Mobile Phones in  Java'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-4777869394634253425</id><published>2009-05-04T09:10:00.007+02:00</published><updated>2009-05-04T09:21:03.359+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><title type='text'>Microlog Maven Help Wanted</title><content type='html'>As you might know I am working with the new Microlog V2.0 release. From the beginning I knew that I needed to do some re-factoring of the code and add some new functionality.  The re-factoring was fairly easy, but the logging hierarchy and the new configuration has taken more time than expected. What is bothering me right now is the fact that there is a lot of other work to do. The most work is Maven related. I am not very fluent in speaking Maven, so it is a huge step for me. But coming to think about it, I have found out that I could use the power of open source development; getting help from others. I have therefore posted a "Maven Help Wanted" in the Microlog forums. But I might ask you, the blog readers, about help as well. If you are interested, please contact me and be a part of the Microlog project. For your convenience I have pasted the original post here. Please join the discussion in the Microlog forums; &lt;a href="https://sourceforge.net/forum/forum.php?thread_id=3260687&amp;amp;forum_id=464718"&gt;https://sourceforge.net/forum/forum.php?thread_id=3260687&amp;amp;forum_id=464718&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Hi,&lt;br /&gt;&lt;br /&gt;I am working hard on the Microlog V2.0 release. But I have found out that I need help with some Maven related tasks.&lt;br /&gt;Could you PLEASE help me out?&lt;br /&gt;&lt;br /&gt;I feel that I need to focus on the coding work and I am not very good with Maven.&lt;br /&gt;If you are good at Maven it should be easy to do the tasks that I suggests.&lt;br /&gt;So help is really, really very much appreciated!&lt;br /&gt;&lt;br /&gt;Here comes a description of the tasks that I feel that we need to perform.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;===== Maven Tasks =====&lt;br /&gt;&lt;br /&gt;* Two distributables; one binary and one source code distribution.&lt;br /&gt;* Get the deploy task to work. The Maven repository is not up-to-date.&lt;br /&gt;* Enable the Eclipse Maven plug-in.&lt;br /&gt;* Write a "Developer Getting Started Guide". How to check out, install Maven, use Maven to create Eclipse projects, etc.&lt;br /&gt;* Include the Android project in the Maven build.&lt;br /&gt;* Get the testing and code coverage to work.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A more detailed description of the task "Two Distributables":&lt;br /&gt;&lt;br /&gt;* There binary distribution needs to the broken down to small jars. I suggest the following jars:&lt;br /&gt;- microlog-core.jar&lt;br /&gt;- microlog-common.jar&lt;br /&gt;- microlog-midp.jar&lt;br /&gt;- microlog-spot.jar&lt;br /&gt;- microlog-android.jar&lt;br /&gt;&lt;br /&gt;Note: these correspond to the new sub-packages found in Microlog V2.0&lt;br /&gt;&lt;br /&gt;* The binary distribution should have a directory structure like this:&lt;br /&gt;&lt;br /&gt;/jars - all the jars&lt;br /&gt;/bin - all the servers as binary jars or even better as .exe files.&lt;br /&gt;/docs - all the docs&lt;br /&gt;/docs/javadocs - all the javadocs&lt;br /&gt;&lt;br /&gt;* The source code distribution should have all the projects packaged in their own directory, like this&lt;br /&gt;&lt;br /&gt;/micrlog-core&lt;br /&gt;/microlog-servers&lt;br /&gt;/microlog-instrumentor&lt;br /&gt;... etc&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I could have missed out on something, please comment on my suggestion. If you want to perform a task, please inform the rest of us.&lt;br /&gt;I will create tasks in the SourceForge task list, so we can keep track on the progress of our work.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Any takers?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-4777869394634253425?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/4777869394634253425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=4777869394634253425' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/4777869394634253425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/4777869394634253425'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/05/microlog-maven-help-wanted.html' title='Microlog Maven Help Wanted'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-3040391248744154095</id><published>2009-04-23T07:49:00.006+02:00</published><updated>2009-04-24T08:31:47.049+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Java ME'/><title type='text'>Setting the Locale in the WTK Emulator</title><content type='html'>Sometimes it is useful to how your MIDlet works with different &lt;a href="http://en.wikipedia.org/wiki/Locale"&gt;locale&lt;/a&gt; settings. One solution is to install the MIDlet on a phone and change its locale. This should be easy to do on most phones. However it is useful to do this on the emulator as well. This article teach youo how to do it.&lt;br /&gt;&lt;br /&gt;You have basically two ways to do this:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Change the locale of your operating system&lt;/li&gt;&lt;li&gt;Change the locale manually in your wireless toolkit.&lt;/li&gt;&lt;/ol&gt;I have Windows Vista and I have not get the first way to work. There is a dialog called "Regional and Language Options". All the settings are set to Sweden/Swedish, but still the emulator does not change its locale. I have not found out what I am doing wrong. Fortunately the second option is fairly easy to perform.&lt;br /&gt;&lt;br /&gt;First you have to find the emulator.properties file. In &lt;a href="http://java.sun.com/products/sjwtoolkit/"&gt;Sun's Wireless Toolkit&lt;/a&gt; this is found in &lt;code&gt;C:\WTK2.5.2\j2mewtk_template\wtklib&lt;/code&gt; and in &lt;a href="http://developer.sonyericsson.com/site/global/docstools/java/p_java.jsp"&gt;Sony Ericsson SDK&lt;/a&gt; it is found in &lt;code&gt;C:\SonyEricsson\JavaME_SDK_CLDC\WTK2\wtklib&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Then you should search for this property:&lt;br /&gt;&lt;code&gt;microedition.locale&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;In my installation it locked like this:&lt;br /&gt;&lt;code&gt;microedition.locale: en-US&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The code consists of two parts; the language code and the country code. These are separated by a dash ('-'). Notice that this is not as in Java SE, where it is separated by and underscore ('_'). The language codes are defined in &lt;a href="http://en.wikipedia.org/wiki/ISO_639"&gt;ISO-639&lt;/a&gt; and the country codes in &lt;a href="http://en.wikipedia.org/wiki/ISO_3166"&gt;ISO-3166&lt;/a&gt;. In my case I changed it to:&lt;br /&gt;&lt;code&gt;microedition.locale: sv-SE&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;All you have to do now is to save the file and restart the emulator. Notice that this does not change the locale of the emulator, it only changes what is returned by &lt;code&gt;System.getProperty("microedition.locale");&lt;/code&gt; In my current project we use this to load the correct resources. Thus we need to test how the different strings are looking in different languages and screen resolutions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-3040391248744154095?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/3040391248744154095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=3040391248744154095' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3040391248744154095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3040391248744154095'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/04/setting-locale-in-wtk-emulator.html' title='Setting the Locale in the WTK Emulator'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-8844376807296473985</id><published>2009-04-16T20:39:00.001+02:00</published><updated>2009-04-17T08:41:36.569+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microproperties'/><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><title type='text'>Microlog Recent Updates</title><content type='html'>It feels like I have spent ages on re-factoring the Microlog code. When I look in the rear mirror I see two things that has caused the slow progress. First of all there has been a lot of hard decisions that has been made. For example, how should the setup of the logging hierarchy work like? Should I use the same approach that is used in Log4j or should I invent a new and clever way? The answer is that I used the Log4j way, but adopted it to Microlog. The second problem has been the lack development time. Not much to say about that, Microlog is a project that I do on my spare time. Last but not least, everythings seems to take more time than originally planned.&lt;br /&gt;&lt;br /&gt;But what has happened? The biggest change must be the new configuration. The configuration has been centralized and I use dependency injection to inject my properties into Microlog. The properties are fetched using Microproperties. This is in fact the first project where I have used Microproperties. This is good since I managed to improve the Microproperties source code along the way. I have spent many hours writing tests for the logging hierarchy and improving the code along the way. As always, I have commited the source code very often. As such the code in the source repository is very much in flux. Do not expect the API to be stable for yet a couple of weeks.&lt;br /&gt;&lt;br /&gt;The coming days I plan to adopt all the Appender classes to comply to the new configuration. A nice side effect is that the code will be smaller. Also I will test out the HttpAppender. It is implemented as it is now, but not tested against a server. This is a much awaited feature. I am really looking forward to make this code available for all Microlog lovers.&lt;br /&gt;&lt;br /&gt;Please be patient! I am certain that the new version of Microlog will be worth waiting for.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-8844376807296473985?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/8844376807296473985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=8844376807296473985' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/8844376807296473985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/8844376807296473985'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/04/microlog-recent-updates.html' title='Microlog Recent Updates'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-6931794725606396707</id><published>2009-04-05T10:41:00.004+02:00</published><updated>2009-04-05T10:44:55.501+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><title type='text'>Manifesto for Software Craftmanship</title><content type='html'>This week I signed the &lt;a href="http://manifesto.softwarecraftsmanship.org/"&gt;Manifesto for Software Craftsmanship&lt;/a&gt;. When I read the book &lt;a href="http://www.amazon.com/Software-Craftsmanship-Imperative-Pete-McBreen/dp/0201733862/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1238920791&amp;amp;sr=1-1"&gt;"Software Craftsmanship: The New Imperative"&lt;/a&gt;, it kind of rocked my world. The book dissects most of the accepted software engineering principles and offers an alternative view. Since I was fostered in the software engineering school, the book questioned all that I believed in. But I really liked the book and its pragmatic view of software development. The manifesto is built on the ideas in the book.&lt;br /&gt;&lt;br /&gt;The Manifesto for Software Craftsmanships looks like this:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Not only working software,&lt;br /&gt;but also well-crafted software&lt;/li&gt;&lt;li&gt;Not only responding to change,&lt;br /&gt;but also steadily adding value&lt;/li&gt;&lt;li&gt;Not only individuals and interactions,&lt;br /&gt;but also a community of professionals&lt;/li&gt;&lt;li&gt;Not only customer collaboration,&lt;br /&gt;but also productive partnerships&lt;/li&gt;&lt;/ul&gt;If you wish to sign the manifest, just visit the &lt;a href="http://manifesto.softwarecraftsmanship.org/"&gt;homepage&lt;/a&gt;. There is also a &lt;a href="http://www.linkedin.com/groups?gid=1845268"&gt;Software Craftsmanship group at LinkedIn&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;What do you think of the manifesto?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-6931794725606396707?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/6931794725606396707/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=6931794725606396707' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/6931794725606396707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/6931794725606396707'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/04/manifesto-for-software-craftmanship.html' title='Manifesto for Software Craftmanship'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-5098905998091321027</id><published>2009-03-23T23:50:00.032+01:00</published><updated>2009-03-27T10:34:14.432+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><category scheme='http://www.blogger.com/atom/ns#' term='Best Practices'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Scrum'/><title type='text'>Premature Generalization is the Root of All Evil</title><content type='html'>Finally! I have now finished the first reincarnation of the new logger hierarchy for &lt;a href="http://microlog.sourceforge.net/"&gt;Microlog&lt;/a&gt;. It is a very simple tree structure that keeps track of all the created Logger objects. I choose to do a specialized tree implementation for the purpose, not a general tree implementation. Since there is no tree implementation in Java ME, it could be tempting to do a tree implementation for Java ME. When finished this could be re-used in a lot of other Java ME projects. This got me thinking about those good old days when I was a junior programmer, just fresh out of school.&lt;br /&gt;&lt;br /&gt;I was involved in a research project with the purpose of showing the opportunities with an embedded device with an &lt;a href="http://en.wikipedia.org/wiki/Ethernet"&gt;ethernet&lt;/a&gt; connection. The embedded device contained a simple web server that was equipped with simple &lt;a href="http://en.wikipedia.org/wiki/Common_Gateway_Interface"&gt;CGI&lt;/a&gt; support. My assignment was to create a web pageswith  a &lt;a href="http://en.wikipedia.org/wiki/Java_applet"&gt;Java applet&lt;/a&gt; for administration of the embedded device. This was actually a proof of concept study. If we managed to convince our product managers about our genius invention, we would of course re-use the code for the real product. So far, so good.&lt;br /&gt;&lt;br /&gt;I made a very ambitious design before even starting to do some coding. I can tell you, my manager was really nervous when I did not start code immediately. "No worries, good design is important for fast and good implementation. You need to be prepared really good before starting your implementation!". This was how I was taught.  Anyway I managed to do a real fancy design, with many really nice-to-have-classes. I ruled the world of design and my way to fame and glory was laid out for me! As part of the design I did a very general  API for the communication.  General design is good, I reasoned. This was a &lt;span style="font-weight: bold;"&gt;BIG&lt;/span&gt; mistake!&lt;br /&gt;&lt;br /&gt;When we were closing in on delivery date for the demonstration, I had made the general network communication. However I was not finished with real implementation, the parts that was vital for the demonstration. Anyway I was finished about 30 minutes before my project manager was going to leave for the airport, to meet the people who was sponsoring our research. I was tired since I have worked all night and my project manager was not happy. For me it was embarrassing that I was not able to deliver something that I was proud of and I was to close to the deadline. My project manager did manage to do a successful demonstration. Finally the management decided to make our prototype into a real product.&lt;br /&gt;&lt;br /&gt;After a couple of weeks it was decided that we was going to use another low level protocol for the communication. It turned out that my general design was useless, since I did not anticipate all the aspect  of the problem. But what did I learn from this rather embarrassing moment of my life as developer?&lt;br /&gt;&lt;br /&gt;First of all I realized that I do not have the powers, like &lt;a href="http://en.wikipedia.org/wiki/Nostradamus"&gt;Nostradamus&lt;/a&gt;, to see into the future. I also came to the conclusion that you have to know the domain, before making any generalization. You have to do your first implementation in that domain, before you should make any general design. When you continue to evolve your product, you can figure out what parts of the code that is reasonable to generalize.&lt;br /&gt;&lt;br /&gt;So I invented a rule that is "&lt;span style="font-weight: bold;"&gt;Premature generalization is the root of all evil design&lt;/span&gt;". It is of course inspired by "Premature optimization is the root of all evil". Nonetheless I think it is a good rule. This is why I choose to do a specialized tree structure for Microlog, instead of making a more general tree implementation. I have seen the phenomena of "premature generalization" in many projects since. For some reason it tends to be junior developers who fancies these general designs. Today many more people learns design patterns, than when I finished school. There is a big risk that  you use to many &lt;a href="http://en.wikipedia.org/wiki/Design_pattern"&gt;design patterns&lt;/a&gt;, without really understanding the consequences. I prefer to get the code working and to deliver it in time for the demonstration. When adopting my golden rule stated above, this is not a problem. Thanks to &lt;a href="http://en.wikipedia.org/wiki/Agile_software_development"&gt;agile methods&lt;/a&gt;, like &lt;a href="http://en.wikipedia.org/wiki/Scrum_%28development%29"&gt;Scrum&lt;/a&gt;, you are forced to make your application ready for demonstration early on. But that is another story.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-5098905998091321027?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/5098905998091321027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=5098905998091321027' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/5098905998091321027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/5098905998091321027'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/03/premature-generalization-is-root-of-all.html' title='Premature Generalization is the Root of All Evil'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-3220651495006545267</id><published>2009-03-22T20:05:00.001+01:00</published><updated>2009-03-23T08:25:38.302+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><title type='text'>Microlog Group @ LinkedIn</title><content type='html'>One networking forum that I really like is &lt;a href="http://www.linkedin.com/"&gt;LinkedIn&lt;/a&gt;. It is a proffesional networking forum, not focusing on the social aspect like &lt;a href="http://www.facebook.com"&gt;Facebook&lt;/a&gt;. I have learnt to know a lot of people through LinkedIn. Many of my present and former collegues and friends are there as well. There are many interesting groups at LinkedIn, like the &lt;a href="http://www.linkedin.com/groups?gid=77237"&gt;FOSS Proffesionals Group&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I have had the idea of creating a Microlog group lingering around in my head for some time. During the weekend I finally decided to create a Microlog grup. When the decision was made, the registration was simple. I used the new project description and added a group description. Unfortunately the existing Microlog icon did not comply to the required criteria, but I settled with the LinkedIn default icon.&lt;br /&gt;&lt;br /&gt;Please join the &lt;a href="http://www.linkedin.com/groups?gid=1856072"&gt;Microlog group at LinkedIn&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-3220651495006545267?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/3220651495006545267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=3220651495006545267' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3220651495006545267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3220651495006545267'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/03/microlog-group-linkedin.html' title='Microlog Group @ LinkedIn'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-1765851958872789919</id><published>2009-03-10T21:15:00.000+01:00</published><updated>2009-03-10T22:36:29.998+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>How to do Logging</title><content type='html'>I tend to get into a lot of discussions about logging. It could have something to do with my Microlog development. Sometimes I find it hard to argue what is good practices when it comes to logging. So I searched the Internet and found these good articles on the subject:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.codemonkeyism.com/archives/2008/12/16/7-good-rules-to-log-exceptions/"&gt;7 Good Rules to Log Exceptions&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codemonkeyism.com/archives/2009/02/23/7-more-good-tips-on-logging/"&gt;7 More Good Tips on Logging&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;I hope that you read them thoroughly, because the are definitely worth reading. But until then you are maybe interesting on my comments about them?&lt;br /&gt;&lt;br /&gt;Starting with the first article, I must say that all of the tips are really good. From my point of view, the last rule "&lt;b&gt;7. Do not log with &lt;code&gt;System.out&lt;/code&gt; or &lt;code&gt;System.err&lt;/code&gt;&lt;/b&gt;" is especially important. The first sentence says it all "Always use a log framework, it can handle logging better than you." Of course I want you to use a logging framework. If you are working with Java ME or &lt;a href="http://www.android.com/"&gt;Android&lt;/a&gt; development, please try out &lt;a href="http://microlog.microsuite.org/"&gt;Microlog&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;The second article is a little more general. The first advice is a little bit tricky; "No debugging logs in production". Microlog has no built-in feature to solve this, so I usually recommend to use the pre-processor found in &lt;a href="http://www.eclipse.org/dsdp/mtj/"&gt;MTJ&lt;/a&gt;. If you are running in other environments, like vi, you could use the &lt;a href="http://proguard.sourceforge.net/"&gt;ProGuard&lt;/a&gt; pre-processor. The second advice "Look through your logs" is easy to do with Microlog, if you log to a server. Microlog has the capability to log to several types of servers. The easiest would be to log to a &lt;a href="http://en.wikipedia.org/wiki/Syslog"&gt;syslog daemon&lt;/a&gt; or to &lt;a href="http://aws.amazon.com/s3/"&gt;Amazon S3&lt;/a&gt;. Most syslog daemons have some sort of filtering feature and export functions. This should make it easy for you to filter out the interesting stuff.  The 3rd rule; "Never log locally" is as you now understand fairly easy with Microlog.&lt;br /&gt;&lt;br /&gt;I hope that these articles will give you some good advice that you will be able to use.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-1765851958872789919?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/1765851958872789919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=1765851958872789919' title='31 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/1765851958872789919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/1765851958872789919'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/03/how-to-do-logging.html' title='How to do Logging'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>31</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-6897303291811466865</id><published>2009-03-08T21:30:00.001+01:00</published><updated>2009-03-08T21:30:00.826+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microproperties'/><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Microlog &amp; Microproperties Updates</title><content type='html'>This weekend I decided to start the replacement of the old &lt;a href="http://microlog.microsuite.org/"&gt;Microlog&lt;/a&gt; configuration with the new one; &lt;a href="http://microproperties.microsuite.org/"&gt;Microproperties&lt;/a&gt;. Ironically this work was to copy the file reading part from Microlog to Microproperties. When this was done and tested, I decided to do a new Microproperties release. This is the new V0.2.0 release. When this was done I added Microproperties V0.2.0 to Microlog.&lt;br /&gt;&lt;br /&gt;However this weekend is approaching its end and I decided to do the first snapshot release of V2.0.0, before continuing my work. The Android extension is included in this release. My hope is that developers who prefer the Log4j API will find Microlog for &lt;a href="http://www.android.com/"&gt;Android&lt;/a&gt; an interesting alternative. Please download and try it out!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-6897303291811466865?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/6897303291811466865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=6897303291811466865' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/6897303291811466865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/6897303291811466865'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/03/microlog-microproperties-updates.html' title='Microlog &amp; Microproperties Updates'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-8888897173604501931</id><published>2009-03-05T11:05:00.020+01:00</published><updated>2009-03-07T14:35:49.535+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Using Microlog for File Logging on Android and Viewing Files on Android Emulator</title><content type='html'>My goal yesterday was to re-factor the &lt;code&gt;FileConnectionAppender&lt;/code&gt; in &lt;a href="http://microlog.microsuite.org/"&gt;Microlog&lt;/a&gt;. I wanted to separate the logging part from the actual file writing. The logging should be in an abstract super class, while the file writing should be in the the concrete class. The purpose of this exercise would of course to be to support file logging on both &lt;a href="http://java.sun.com/javame/index.jsp"&gt;Java ME&lt;/a&gt; and &lt;a href="http://www.android.com/"&gt;Android&lt;/a&gt; platform.&lt;br /&gt;&lt;br /&gt;It took some time to create a good structure in the new &lt;code&gt;AbstractFileAppender&lt;/code&gt; and the &lt;code&gt;FileConnectionAppender&lt;/code&gt;. When this was done, it was a piece of cake to create the &lt;code&gt;FileAppender&lt;/code&gt; (for Android). I used the Eclipse class wizard to create a sub-class to &lt;code&gt;AbstractFileAppender&lt;/code&gt;. Most of the time was spent browsing the Internet and looking in the Android documentation. Then it was a matter of implementing a handful of methods. I had never tested to create and write to a file on Android before, but I was curious and executed the code directly when most of the methods was finished. This excluded the &lt;code&gt;flush()&lt;/code&gt; method for example. The diagram below shows the new class structure.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_w7OU_FVnMiE/SbJ3q5KYi4I/AAAAAAAAALM/Sa9PRK54eww/s1600-h/FileAppenderHierarchy.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 193px;" src="http://4.bp.blogspot.com/_w7OU_FVnMiE/SbJ3q5KYi4I/AAAAAAAAALM/Sa9PRK54eww/s400/FileAppenderHierarchy.png" alt="" id="BLOGGER_PHOTO_ID_5310438489405819778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The next step was to figure where to find the log file. It was not long time before I found a file with a &lt;code&gt;.img&lt;/code&gt; extension. From some documents found on the Internet, I could gather that this was a disk image. But how do I read the data found in the disk image? As it turns out there is several ways to do this:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Use the command line tool called &lt;code&gt;adb&lt;/code&gt;&lt;/li&gt;&lt;li&gt;Use the file browser found in Android &lt;a href="http://code.google.com/android/reference/ddms.html"&gt;DDMS&lt;/a&gt; (Dalvik Debug Monitor System)&lt;/li&gt;&lt;li&gt;Use the file browser that is part of the Android plug-in for Eclipse.&lt;/li&gt;&lt;/ol&gt;I will show the 2nd way. If you manage this, you will almost certain be able to the 3rd way. All those shell lovers will have to take a look at the documentation for adb.&lt;br /&gt;&lt;br /&gt;You start by typing &lt;code&gt;ddms&lt;/code&gt; in your shell window or command prompt, depending on your operating system. This will bring up the DDMS tool. Select the device and use the Device-&gt;File Explorer... menu to access the file explorer, see picture below. You could now browse the file system in your Android emulator. In our case we browse to &lt;code&gt;/data/data/net.sf.microlog.android.example/files&lt;/code&gt;. This is where you will find the file &lt;code&gt;microlog.txt&lt;/code&gt;. If you wish to see the content of the file, which I gather that you do, you press the button marked yellow below. This will &lt;span style="font-style: italic;"&gt;pull&lt;/span&gt; the file out of the Android file system to your file system. You get the chance to select where you want to save. Pick up your favorite text editor to view the marvelous content of your log file.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_w7OU_FVnMiE/SbGd8K_qH4I/AAAAAAAAALE/Pt11FG-VRZs/s1600-h/DDMS_FileExplorer2_withHighlight.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 346px; height: 400px;" src="http://2.bp.blogspot.com/_w7OU_FVnMiE/SbGd8K_qH4I/AAAAAAAAALE/Pt11FG-VRZs/s400/DDMS_FileExplorer2_withHighlight.JPG" alt="" id="BLOGGER_PHOTO_ID_5310199092715593602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It is as easy as this to view a file on the Android file system. I hope you found this tip helpful.&lt;insert a="" class="" diagram="" here=""&gt;&lt;br /&gt;&lt;insert a="" snapshot="" of="" the="" ddms="" filebrowser=""&gt;&lt;br /&gt;&lt;/insert&gt;&lt;/insert&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-8888897173604501931?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/8888897173604501931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=8888897173604501931' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/8888897173604501931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/8888897173604501931'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/03/using-microlog-for-file-logging-on.html' title='Using Microlog for File Logging on Android and Viewing Files on Android Emulator'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_w7OU_FVnMiE/SbJ3q5KYi4I/AAAAAAAAALM/Sa9PRK54eww/s72-c/FileAppenderHierarchy.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-8850644052573430782</id><published>2009-03-02T21:41:00.010+01:00</published><updated>2009-03-03T18:46:12.687+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Microlog4Android</title><content type='html'>I have continued with the re-factoring of &lt;a href="http://microlog.microsuite.org/"&gt;Microlog&lt;/a&gt;. Tonight my plan was to re-arrange the package structure to separate the Microlog core from the rest of the code. One reason for this was to make it easier to make different flavors of Microlog. The Microlog core should be possible to execute on CLDC. The plan was to move the MIDP specific classes to its own package structure. One new flavor that I had in mind was the &lt;a href="http://code.google.com/android/"&gt;Android&lt;/a&gt; flavor of Microlog. Many people have asked me about Microlog on Android. My answer has always been something like "It should work on Android, at least the core.".&lt;br /&gt;&lt;br /&gt;After the re-factoring it was time to prove my point, that it is possible to execute Microlog on Android. And it did! The setup was simple, it was Microlog with a &lt;code&gt;ConsoleAppender&lt;/code&gt; and a &lt;code&gt;SimpleFormatter&lt;/code&gt;. Not so very much at the moment, but I think it is a good starting point.&lt;br /&gt;&lt;br /&gt;During the process I learnt that it was in fact possible to see the &lt;code&gt;System.out.println()&lt;/code&gt; statements. Many people claim that it is not possible to see the &lt;code&gt;System.out.println()&lt;/code&gt; in the Console. That is true, but it is possible to get hold of the prints. The trick is to show the "LogCat" view. This is activated this way:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Select "Window-&gt;Show View-&gt;Other..."&lt;/li&gt;&lt;li&gt;Open up the Android category and select "LogCat"&lt;/li&gt;&lt;/ol&gt;You can now see the output from &lt;code&gt;System.out.println()&lt;/code&gt; and &lt;code&gt;System.err.println()&lt;/code&gt;. A nice side effect is that you now can see your Microlog statements as well!&lt;br /&gt;&lt;br /&gt;One might ask why should I use Microlog on Android, since there already is a logging API available. This is a perfectly legitimate question. The reason would be that Microlog brings a Log4j like API to the Android platform, but the supplied API is the java.util.logging package. I have always preferred the Log4j API, which was the reason why I choose it for Microlog in the first place. But I guess that you could use Log4j on Android, but Microlog is designed for constrained devices, which Log4j was not.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-8850644052573430782?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/8850644052573430782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=8850644052573430782' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/8850644052573430782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/8850644052573430782'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/03/microlog4android.html' title='Microlog4Android'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-5810524894167332038</id><published>2009-03-02T19:17:00.013+01:00</published><updated>2009-03-02T21:40:55.776+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><title type='text'>Microlog Work During the Weekend</title><content type='html'>During this weekend I finally started my work on the new &lt;a href="http://microlog.microsuite.org/"&gt;Microlog&lt;/a&gt; V2.0.0. The first thing I did was to implement support for client identification. I did it by adding a property to the Logger that is called &lt;code&gt;clientID&lt;/code&gt;. The &lt;code&gt;clientID&lt;/code&gt; must be set manually. Since I plan to change the configuration classes, I did not put any effort in adding support for this in existing configuration classes. This will be implemented when I change to to &lt;a href="http://microproperties.microsuite.org/"&gt;Microproperties&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I have added support for showing the &lt;code&gt;clientID&lt;/code&gt;. The &lt;code&gt;SimpleFormatter&lt;/code&gt; and &lt;code&gt;ConfigurableFormatter&lt;/code&gt; always prints the client ID, if not &lt;code&gt;null&lt;/code&gt;. It is possible to use the &lt;code&gt;PatternFormatter&lt;/code&gt; as well. You use the &lt;code&gt;%i&lt;/code&gt; to print the &lt;code&gt;clientID&lt;/code&gt;. It is as simple as that.&lt;br /&gt;&lt;br /&gt;The developer have the option of setting the &lt;code&gt;clientID&lt;/code&gt; manually or letting Microlog create a unique &lt;code&gt;clientID&lt;/code&gt;. I still need to figure out an automatic way of creating a unique &lt;code&gt;clientID&lt;/code&gt;. I will have to get back on that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-5810524894167332038?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/5810524894167332038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=5810524894167332038' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/5810524894167332038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/5810524894167332038'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/03/microlog-work-during-weekend.html' title='Microlog Work During the Weekend'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-35656211816901893</id><published>2009-02-28T08:23:00.002+01:00</published><updated>2009-02-28T08:25:47.884+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microproperties'/><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><title type='text'>Microlog the Next Generation</title><content type='html'>Developing &lt;a href="http://microlog.microsuite.org/"&gt;Microlog&lt;/a&gt; for the last couple of weeks has been like working with a strait jacket. A lot of the requested features would break the compatibility. Thus I had to postpone these requests and only implement simple features with low priority. On the other hand I wanted the V1.1.0 release to be really stable. This has been very frustrating. Yesterday I decided to release V1.1.0 in order to start my work on Microlog the next generation (V2.0).&lt;br /&gt;&lt;br /&gt;The most important new features for Microlog V2.0 are&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Client identification&lt;/li&gt;&lt;li&gt;New configuration&lt;/li&gt;&lt;li&gt;Re-send functionality&lt;/li&gt;&lt;li&gt;Improved packaging&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The client identification is needed when you have several mobile client logging to the same server. To analyze the logs it is important to be able to identify each client with an unique id. I have not yet decided how the id will be generated. Perhaps the &lt;a href="http://en.wikipedia.org/wiki/International_Mobile_Equipment_Identity"&gt;IMEI&lt;/a&gt; number? I will have to think about this a little bit more before deciding.&lt;br /&gt;&lt;br /&gt;The configuration of Microlog is kind of old fashioned as it is today. Each appender and formatter is responsible for pulling its properties from the properties classes. A much more modern way ought to be dependency injection. Another problem today is that you have a dependency to the MIDlet class. One must remember that Microlog is possible to run in any &lt;a href="http://java.sun.com/products/cldc/"&gt;CLDC&lt;/a&gt; environment, not just with the &lt;a href="http://en.wikipedia.org/wiki/Mobile_Information_Device_Profile"&gt;MIDP&lt;/a&gt; profile. In such situations it not possible use the properties classes that is used today, but you have to do the setup programatically. I plan to use the &lt;a href="http://microproperties.microsuite.org/"&gt;Microproperties&lt;/a&gt; classes as the default configuration option. However it should be possible to use any dependency injection framework like &lt;a href="https://fallme.dev.java.net/"&gt;fallme&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;All appenders that log to a server has no recovery function. Let us assume that a MIDlet logs and then crashes. When the MIDlet starts again it should try to re-send the log to the server. Another scenario is that the connection to the server is lost. The logging should continue and try to re-send when the connection is established again. It is all about making remote logging more robust.&lt;br /&gt;&lt;br /&gt;Improved packaging is actually not a new feature, but I think it is an important thing to implement. The packaging of Microlog is a little bit confusing. There are many sub projects within Microlog, each with its own deliverable. My guess is that this could confuse any new user of Microlog.&lt;br /&gt;&lt;br /&gt;Of course this list is subject to changes, but these are the main ideas as of today. This will give you some idea what is in store for you. Stay tuned for more information about the development of Microlog the next generation. Meantime you could &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=138008"&gt;download&lt;/a&gt; the all new fresh version of Microlog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-35656211816901893?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/35656211816901893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=35656211816901893' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/35656211816901893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/35656211816901893'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/02/microlog-next-generation.html' title='Microlog the Next Generation'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-712272441937084995</id><published>2009-02-27T23:20:00.006+01:00</published><updated>2009-02-27T23:30:57.327+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><title type='text'>Microlog Feature on the Mobile &amp; Embedded Community and SourceForge</title><content type='html'>The news that we have released V1.1.1 of Microlog has not gone by without notice. First of all, the Microlog news submission at SourceForge was selected to be &lt;a href="http://sourceforge.net/news/"&gt;headline news&lt;/a&gt; on the SourceForge site. This is nice since only a fraction of all project news gets selected for the front page. Secondly Microlog got a &lt;a href="http://community.java.net/mobileandembedded/"&gt;project spotlight&lt;/a&gt; at the Mobile &amp;amp; Embedded community.&lt;br /&gt;&lt;br /&gt;I am honored that we got selected at both these places. Let us hope that this will make the Microlog community even bigger, since this will benefit all users of Microlog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-712272441937084995?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/712272441937084995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=712272441937084995' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/712272441937084995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/712272441937084995'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/02/microlog-feature-on-mobile-embedded.html' title='Microlog Feature on the Mobile &amp; Embedded Community and SourceForge'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-2667504632484926794</id><published>2009-02-22T13:33:00.014+01:00</published><updated>2009-02-22T21:05:21.322+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><title type='text'>Microlog with Global Log Levels</title><content type='html'>This is the first day in ages that I have been able to work with &lt;a href="http://microlog.microsuite.org/"&gt;Microlog&lt;/a&gt;. It is very nice to be back again and do some development.&lt;br /&gt;&lt;br /&gt;There has been several users that have asked for a global log level in Microlog. My initial thought was that this is hard to do, if we should not implement a logging hierarchy. I would like to avoid logging hierarchies, since I think that this would make the Microlog core to complicated and big. Anyway I found a solution to add a global log level to the existing Microlog version, without implementing a logger hierarchy.&lt;br /&gt;&lt;br /&gt;The solution is rather simple. You have a method called &lt;code&gt;setGlobalLogLevel()&lt;/code&gt; in the &lt;code&gt;Logger&lt;/code&gt; class. This is used for all &lt;code&gt;Logger&lt;/code&gt; instances, except for those who override it. We have added the method &lt;code&gt;getEffectiveLevel()&lt;/code&gt; to check the effective level for each &lt;code&gt;Logger&lt;/code&gt;. This method is also found in &lt;a href="http://logging.apache.org/log4j/"&gt;Log4j&lt;/a&gt;, but in that case is has another semantic meaning. In Microlog we have a global level and an individual level, whereas in Log4j it is the hierarchy of &lt;code&gt;Logger&lt;/code&gt; objects that decide the effective level.&lt;br /&gt;&lt;br /&gt;The setup in the properties file looks like this:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;microlog.level=DEBUG&lt;br /&gt;microlog.level.net.sf.microlog.example.PropertiesConfigMidlet=TRACE&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;The first line is used for setting the global log level. This is similar to how it was before. The new ability is used on the 2nd line, where the log level is set for a particular class.&lt;br /&gt;&lt;br /&gt;I hope that this solution would suffice for most users. The next step is probably to introduce a hierachy of loggers. Since this will break the compability, this will be introduced in Microlog 2.0. But we have not still decided whether or not we will introduce a Logger hierarchy. What do you think?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-2667504632484926794?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/2667504632484926794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=2667504632484926794' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/2667504632484926794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/2667504632484926794'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/02/microlog-with-global-log-levels.html' title='Microlog with Global Log Levels'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-6840674842553296091</id><published>2009-02-14T11:54:00.001+01:00</published><updated>2009-02-15T08:57:17.180+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>Formatting Your Log in Microlog</title><content type='html'>When adding logging to your application, it is important that you log the right information. Otherwise you have no use of your log when examining it afterwards. In &lt;a href="http://microlog.microsuite.org/"&gt;Microlog&lt;/a&gt; you have the possibility to format the logging output. The formatting is not formatting the log message, but rather you add information like the time when the logging was done.&lt;br /&gt;&lt;br /&gt;The formatting in Microlog is done using a an instance of a &lt;code&gt;Formatter&lt;/code&gt;. There are three formatters available out-of-the-box when downloading Microlog:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;SimpleFormatter&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;ConfigurableFormatter&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;PatternFormatter&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;The &lt;code&gt;SimpleFormatter&lt;/code&gt; is the default formatter for Microlog. Is is the smallest and fastest formatter. It prints the time, the level, the message and the &lt;code&gt;Throwable&lt;/code&gt; object if there is one available. This is always a good starting point when using Microlog for the first time. You could set the formatter in code like this:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;ConsoleAppender appender = new ConsoleAppender();&lt;br /&gt;SimpleFormatter formatter = new SimpleFormatter();&lt;br /&gt;appender.setFormatter(formatter);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;The final string looks like this:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;494:[INFO]-Starting app&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The &lt;code&gt;ConfigurableFormatter&lt;/code&gt; gives you a little bit more control of the formatting. The order is pre-defined, but you get to choose what to log. You get to choose if you want to log the level, message and the name of the logger. You could set the time format and specify which delimiter that is used between each printed field. If you choose to print the time as date it looks like this:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;2009-02-10 19:38:00.188:[INFO]:Starting app&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;The available properties are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;PrintName - Set to true if you wish to print the name of the Logger instance.&lt;/li&gt;&lt;li&gt;PrintLevel - Set to true if you wish to print the current Level.&lt;/li&gt;&lt;li&gt;TimeFormat - Specifies which time format to use. The possible values are: &lt;code&gt;NO_TIME&lt;/code&gt;, &lt;code&gt;DATE_TO_STRING&lt;/code&gt; and &lt;code&gt;TIME_IN_MILLIS&lt;/code&gt;. The &lt;code&gt;DATE_TO_STRING&lt;/code&gt; uses the &lt;code&gt;toString()&lt;/code&gt; of the current &lt;code&gt;Date&lt;/code&gt; object (now). The &lt;code&gt;TIME_IN_MILLIS&lt;/code&gt; writes the time in milliseconds.&lt;/li&gt;&lt;li&gt;PrintMessage - Set to true if you wish to print the logged message.&lt;/li&gt;&lt;li&gt;Delimiter - Set the delimiter to separate each printed part. Use a &lt;code&gt;String&lt;/code&gt; of your choice.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The &lt;code&gt;PatternFormatter&lt;/code&gt; is the Formatter with the most opportunities. It works by defining your own formatting pattern. The pattern could be set in your code or by a property in a properties file. For example it could look like this in your property file:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;microlog.formatter=net.sf.microlog.format.PatternFormatter&lt;br /&gt;microlog.formatter.PatternFormatter.pattern=%d [%P] %m %T&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;The formatted string look like this:&lt;br /&gt;&lt;code&gt;15:38:49,199 [INFO] Starting app&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The available formatting options are:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;%c  - prints the name of the Logger&lt;/li&gt;&lt;li&gt;%d  - prints the date (absolute time)&lt;/li&gt;&lt;li&gt;%m  - prints the logged message&lt;/li&gt;&lt;li&gt;%P   -prints the priority, i.e. Level of the message.&lt;/li&gt;&lt;li&gt;%r   - prints the relative time of the logging. (The first logging is done at time 0.)&lt;/li&gt;&lt;li&gt;%t  - prints the thread name.&lt;/li&gt;&lt;li&gt;%T  - prints the Throwable object.&lt;/li&gt;&lt;li&gt;%%  - prints the '%' sign.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;If you are not satisfied with the supplied Formatter implementations, you could create your own Formatter. This is done by creating a class that implements the Formatter interface. The interface looks like this:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;public interface Formatter {&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Format the given message and the Throwable object.&lt;br /&gt;*&lt;br /&gt;* @param name&lt;br /&gt;*            the name of the logger.&lt;br /&gt;* @param time&lt;br /&gt;*            the time since the first logging has done (in milliseconds).&lt;br /&gt;* @param level&lt;br /&gt;*            the logging level&lt;br /&gt;* @param message&lt;br /&gt;*            the message&lt;br /&gt;* @param t&lt;br /&gt;*            the exception.&lt;br /&gt;* @return a String that is not null.&lt;br /&gt;*/&lt;br /&gt;String format(String name, long time, Level level, Object message,&lt;br /&gt;Throwable t);&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Configure the appender.&lt;br /&gt;*&lt;br /&gt;* @param properties&lt;br /&gt;*            Properties to configure with&lt;br /&gt;*/&lt;br /&gt;void configure(PropertiesGetter properties);&lt;br /&gt;}&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;/pre&gt;The &lt;code&gt;format()&lt;/code&gt; method is where the actual formatting is done. It creates a &lt;code&gt;String&lt;/code&gt; object that is the actual &lt;code&gt;String&lt;/code&gt; that is logged. Nothing more, nothing less. The &lt;code&gt;configure()&lt;/code&gt; method is used for configuration of the Formatter. The &lt;code&gt;PropertiesGetter&lt;/code&gt; object is used for fetching the properties that the Formatter is interested in. Thus you could define your own properties that you use for your Formatter implementation.&lt;br /&gt;&lt;br /&gt;I hope that you have learned how to master the art of formatting in Microlog by reading this. If you still have any questions about this, please use the official Microlog forums to find your answers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-6840674842553296091?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/6840674842553296091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=6840674842553296091' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/6840674842553296091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/6840674842553296091'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/02/formatting-your-log-in-microlog.html' title='Formatting Your Log in Microlog'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-6136556401208686548</id><published>2009-02-10T19:47:00.012+01:00</published><updated>2009-02-10T22:22:55.074+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Development Problems'/><title type='text'>Netbeans is Getting Better</title><content type='html'>I am currently writing an article about how to do formatting with &lt;a href="http://microlog.microsuite.org/"&gt;Microlog&lt;/a&gt;. When doing this I felt that I needed some examples of how the formatting really looks like. Since there are a bunch of example MIDlets in Microlog, it should be as simple as executing them. But that is not the case! As described in an earlier article, it seems that &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt; is not always fit for fight, it does not manage to start the wireless toolkit.&lt;br /&gt;&lt;br /&gt;I tested &lt;a href="http://www.netbeans.org/"&gt;NetBeans&lt;/a&gt; back in 2005 when learning Java ME, although I was an Eclipse fan. For some time I actually used both, I used Eclipse for the development and NetBeans when executing the MIDlets. The reason for this was that &lt;a href="http://eclipseme.org/"&gt;EclipseME&lt;/a&gt; plug-in was not as good as the NetBeans counterpart. But gradually I started to use Eclipse exclusively. One reason for this was that Eclipse ME matured. When the EclipseME was migrated into &lt;a href="http://www.eclipse.org/dsdp/mtj/"&gt;Mobile Tools for Java&lt;/a&gt;, I have not felt that I was missing NetBeans. But at times when Eclipse fail, I am missing NetBeans. It is a real shame that after all these years, Eclipse still have problems when it comes to Java ME development.&lt;br /&gt;&lt;br /&gt;I could spend hours on getting Eclipse to work, while downloading and installing NetBeans should be easy. Said and done! I downloaded NetBeans. Unfortunately my Windows Vista decided to download updates as well, so it took quite some time to download it. I wish I had a faster Internet. Downloading using a 512kbit/s ADSL modem is not the best solution for downloading 211 MB of NetBeans, while at the same time downloading Windows updates.&lt;br /&gt;&lt;br /&gt;When writing this article, NetBeans has been installed in the background and everything seems to be working as it should. My first impression is that NetBeans has matured since the last time I used it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-6136556401208686548?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/6136556401208686548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=6136556401208686548' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/6136556401208686548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/6136556401208686548'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/02/netbeans-is-getting-better.html' title='Netbeans is Getting Better'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-8825565390022813846</id><published>2009-02-08T09:04:00.007+01:00</published><updated>2009-02-08T10:06:14.310+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><title type='text'>New Microlog Snapshot Version Available</title><content type='html'>This week I did a new snapshot release of &lt;a href="http://microlog.microsuite.org/"&gt;Microlog&lt;/a&gt;. The most important addition is the &lt;code&gt;MemoryBufferAppender&lt;/code&gt;. This appender logs to the memory. This could either be a cyclic buffer or a buffer with a fixed size. When the fixed buffer is filled, the logging stops. You get the log by calling the method &lt;code&gt;getLogBuffer()&lt;/code&gt;. The method returns a Vector of the logged String objects. It is then up to you to show the log in some useful way, for example showing it as a list in your MIDlet. I hope that the &lt;code&gt;MemoryBufferAppender&lt;/code&gt; is something that you feel is useful.&lt;br /&gt;&lt;br /&gt;The snapshot release could be found &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=138008&amp;amp;package_id=292008&amp;amp;release_id=658907"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-8825565390022813846?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/8825565390022813846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=8825565390022813846' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/8825565390022813846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/8825565390022813846'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/02/new-microlog-snapshot-version-available.html' title='New Microlog Snapshot Version Available'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-6377103441468729025</id><published>2009-02-03T21:45:00.004+01:00</published><updated>2009-02-03T22:16:47.672+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><title type='text'>Working on a Microlog Presentation</title><content type='html'>Today I have spent the entire evening preparing a presentation of Microlog. I am going to do this presentation on Friday for some of my colleagues. When it was decided that I was going to do this presentation, I had a clear vision about what to include. But now I am a little bit without inspiration. I think I will have to have some rest and give it another try tomorrow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-6377103441468729025?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/6377103441468729025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=6377103441468729025' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/6377103441468729025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/6377103441468729025'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/02/working-on-microlog-presentation.html' title='Working on a Microlog Presentation'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-2741943582913811804</id><published>2009-02-02T20:56:00.009+01:00</published><updated>2009-02-02T22:15:16.335+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><title type='text'>Memory Logging Available for Microlog with MemoryBufferAppender</title><content type='html'>Ever since the holidays I have been busy doing other things than working on my open source projects. Fortunately there are other that have been working hard.&lt;br /&gt;&lt;br /&gt;The most important improvement is the new MemoryBufferAppender. It is used when you want to log into memory. I think that this is good in scenarios where you want to log, but has very little performance impact. Logging to file or the RMS could be slow on some platform, whereas memory logging should be the fastest solution on all platforms. You could choose if you want to log into a cyclic buffer or to a fixed buffer. When the fixed buffer is full, the logging stops.&lt;br /&gt;&lt;br /&gt;The code is only available from the repository. If you already have the latest snapshot of Microlog available, it would be enough to only download the MemoryBufferAppender. I will be doing a snapshot release within a few day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-2741943582913811804?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/2741943582913811804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=2741943582913811804' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/2741943582913811804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/2741943582913811804'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/02/memory-logging-available-for-microlog.html' title='Memory Logging Available for Microlog with MemoryBufferAppender'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-5594123187443304682</id><published>2009-01-27T19:59:00.005+01:00</published><updated>2009-01-28T08:21:41.830+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Development Problems'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><title type='text'>Maven Problem Solved</title><content type='html'>The &lt;a href="http://myossdevblog.blogspot.com/2009/01/maven-problems.html"&gt;Maven problem&lt;/a&gt; that I had the other day has been solved. It was simple a matter of configuration for &lt;a href="http://proguard.sourceforge.net/"&gt;ProGuard&lt;/a&gt;. The problem is described in more detail &lt;a href="http://groups.google.com/group/pyx4me-users/browse_thread/thread/3b4b8244cfcc5a05#"&gt;here&lt;/a&gt;. Thanks Karsten for helping me out with this problem.&lt;br /&gt;&lt;br /&gt;This brings me to the next topic; there is a new snapshot release of Microlog available. The changes are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Added the ability to print the absolute time with the PatternFormatter. The %d is used for this purpose, to be compatible with Log4j. The date format specifiers are also available; ABSOLUTE, DATE, ISO8601.&lt;/li&gt;&lt;li&gt;The ByteArrayOutputStream that is used for creating log data in the RecordStoreAppender was closed, which is not necessary. This has now been changed.&lt;/li&gt;&lt;li&gt;Added some useful printouts for the RecordStoreAppender and the RecordStoreLogViewer.&lt;/li&gt;&lt;/ul&gt;I think that the first item is the most interesting one. The PatternFormatter is almost as capable as its &lt;a href="http://logging.apache.org/log4j/"&gt;Log4j&lt;/a&gt; counterpart. I am looking forward hearing from developers out there, giving feedback about this release.&lt;br /&gt;&lt;br /&gt;Please download.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-5594123187443304682?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/5594123187443304682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=5594123187443304682' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/5594123187443304682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/5594123187443304682'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/01/maven-problem-solved.html' title='Maven Problem Solved'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-4147720214828482160</id><published>2009-01-22T21:33:00.004+01:00</published><updated>2009-01-22T21:45:48.509+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Development Problems'/><title type='text'>Maven Problems</title><content type='html'>I still have not found a solution to the &lt;code&gt;&lt;a href="http://myossdevblog.blogspot.com/2009/01/noclassdeffounderror-in-eclipse-mtj.html"&gt;NoClassDefFoundError-problem&lt;/a&gt;&lt;/code&gt;, but a workaround. The workaround is to execute the code in &lt;a href="http://www.netbeans.org/"&gt;NetBeans&lt;/a&gt;, or another IDE than Eclipse. When doing a release, I encountered yet another problem. This time it was &lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt; that issued a build error. The output from Maven looks like this:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;....&lt;br /&gt;[proguard] Warning: library class cldcunit.runner.ReflectionTestCaseHelper exte&lt;br /&gt;nds or implements program class cldcunit.runner.BaseTestCaseHelper&lt;br /&gt;[proguard] Warning: library class cldcunit.runner.ReflectionTestCaseHelper depe&lt;br /&gt;nds on program class junit.framework.TestMethod&lt;br /&gt;[proguard] Warning: library class cldcunit.runner.ReflectionTestCaseHelper depe&lt;br /&gt;nds on program class junit.framework.TestMethod&lt;br /&gt;[proguard] Warning: library class cldcunit.runner.ReflectionTestCaseHelper depe&lt;br /&gt;nds on program class junit.framework.TestMethod&lt;br /&gt;[proguard] Warning: library class cldcunit.runner.ReflectionTestCaseHelper depe&lt;br /&gt;nds on program class junit.framework.Test&lt;br /&gt;[proguard] Warning: there were 5 instances of library classes depending on prog&lt;br /&gt;ram classes.&lt;br /&gt;[proguard]          You must avoid such dependencies, since the program classes&lt;br /&gt;will&lt;br /&gt;[proguard]          be processed, while the library classes will remain unchang&lt;br /&gt;ed.&lt;br /&gt;[proguard] Error: Please correct the above warnings first.&lt;br /&gt;[INFO] ------------------------------------------------------------------------&lt;br /&gt;[ERROR] BUILD ERROR&lt;br /&gt;[INFO] ------------------------------------------------------------------------&lt;br /&gt;[INFO] Obfuscation failed (result=1)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;What does this mean? To me it seems like &lt;a href="http://proguard.sourceforge.net/"&gt;ProGuard&lt;/a&gt; has found a problem with &lt;a href="http://snapshot.pyx4me.com/pyx4me-cldcunit/"&gt;CLDCUnit&lt;/a&gt;. So this leaves me with still another issues that delays my release of a new Microlog version. Not good!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-4147720214828482160?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/4147720214828482160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=4147720214828482160' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/4147720214828482160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/4147720214828482160'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/01/maven-problems.html' title='Maven Problems'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-8671172798269122616</id><published>2009-01-20T22:12:00.010+01:00</published><updated>2009-01-20T22:37:37.284+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Development Problems'/><title type='text'>NoClassDefFoundError in Eclipse MTJ</title><content type='html'>Yesterday I started to implement a new feature in the &lt;a href="http://microlog.sourceforge.net/snapshot/microlog-logger/apidocs/net/sf/microlog/format/PatternFormatter.html"&gt;PatternFormatter&lt;/a&gt; for &lt;a href="http://microlog.sourceforge.net/"&gt;Microlog&lt;/a&gt;. A user wanted the ability to print the absolute time. The first implementation was pretty rudimentary, the only available format was the default format used in Log4j's &lt;a href="http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html"&gt;PatternLayout&lt;/a&gt;. It worked but today I wanted to improve it. I had planned a snapshot release after that. But I ran into unforeseen troubles. When trying to execute the example MIDlet to try it out, I get the following message in the console window;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;java.lang.NoClassDefFoundError: net/sf/microlog/Appender&lt;br /&gt;at com.sun.midp.midlet.MIDletState.createMIDlet(+29)&lt;br /&gt;at com.sun.midp.midlet.Scheduler.schedule(+52)&lt;br /&gt;at com.sun.midp.main.Main.runLocalClass(+28)&lt;br /&gt;at com.sun.midp.main.Main.main(+80)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Notice that this is not a classic &lt;code&gt;ClassNotFoundException&lt;/code&gt; problem. A &lt;code&gt;ClassNotFoundException&lt;/code&gt; is always quite easy to fix. You have to check that you have your classpaths in order. This is something that a every Java developer has to learn to fix, otherwise you do not survive as a Java developer for long. But to fix the &lt;code&gt;NoClassDefFoundError&lt;/code&gt; is harder. It basically means that your environment has found the class, but there is something fishy with the &lt;a href="http://en.wikipedia.org/wiki/Bytecode"&gt;bytecode&lt;/a&gt;. In this case I have no clue. Is this a compiler problem? Is it a problem with the preverifier? I have done Googling on it, but did not find any relevant answers. Is a problem with &lt;a href="http://www.eclipse.org/dsdp/mtj/"&gt;Eclipse MTJ&lt;/a&gt;? Do you have any clue?&lt;br /&gt;&lt;br /&gt;So bear with me, there is a new Microlog snapshot release on its way. I will have to fix the above problem before releasing the code. For the impatient developer, the code is available in the &lt;a href="http://sourceforge.net/svn/?group_id=138008"&gt;Microlog source repository&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-8671172798269122616?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/8671172798269122616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=8671172798269122616' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/8671172798269122616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/8671172798269122616'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/01/noclassdeffounderror-in-eclipse-mtj.html' title='NoClassDefFoundError in Eclipse MTJ'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-853668462919482354</id><published>2009-01-17T23:45:00.003+01:00</published><updated>2009-01-18T19:35:00.491+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><title type='text'>The Microlog Modules</title><content type='html'>The Microlog project started out its life as a small set of classes. Since then Microlog has grown and transformed into several modules. The reason is of course to make it easier for the developers using Microlog and to keep the core small. The downside is that a new user of Microlog might get confused. If you feel that you fall into that category, please read on. For those of you that already are hooked on Microlog, I hope that this will give you the overview that you been longing for.&lt;br /&gt;&lt;br /&gt;The Microlog project consists of these modules:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Microlog Java ME library&lt;/li&gt;&lt;li&gt;Microlog Instrument&lt;/li&gt;&lt;li&gt;Microlog Instrumentor Example&lt;/li&gt;&lt;li&gt;Microlog Java ME library Examples&lt;/li&gt;&lt;li&gt;Microlog Servers&lt;/li&gt;&lt;/ul&gt;The Microlog Java ME library is where all the goodies are. Here you will find the logging classes. If you choose to only download one module, this should be the one. The Microlog ME library examples module contains example MIDlets that demonstrate how to use and setup Microlog.&lt;br /&gt;&lt;br /&gt;Some users complained about the inability to log the name of the method and the line number where the actual logging took place. The reason for this is that Java ME with the CLDC configuration does not support reflection. Our workaround is to instrument the bytecode before you create your JAR file. The Microlog Instrument module contains a tool for inserting the relevant information. If you wonder how to use it, you could download the Microlog Instrumentor Example module. If you are content with only logging the name of the class, you could use the Logger.getLogger(Class clazz) method to create your Logger instance. This way you get a named logger that has the same name as your class, that is the fully qualified classname. This could be used in conjunction with the Microlog instrumentor, since they are not mutually exclusive. It should be noted that the size of the classes grows when instrumenting them. It is a matter of taste and need that decides when to instrument your classes. One solution could be that you instrument your classes during development, but skip the instrumentation when creating the final jar. This adheres to the Microlog philosophy, we bring you the tools and you select the parts you like.&lt;br /&gt;&lt;br /&gt;Last but not least, there is the Microlog Servers module. This contains example code of several servers. I prefer to write examples since the servers are rather simple, although I believe that they are just enough for most people. The output is printed to the standard output. If you start the server from the command line, the output is shown in the command shell. Today there are two servers available; the Bluetooth server and the socket server. The socket server could be used for normal sockets, as well as SSL sockets. Both are intended to be executed on a PC. If you need to execute a Bluetooth server on a phone, there is also a MIDlet version available in the Microlog Java ME library module.&lt;br /&gt;&lt;br /&gt;I hope that this guide gave you a good insight into Microlog. Feedback is very welcome.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-853668462919482354?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/853668462919482354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=853668462919482354' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/853668462919482354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/853668462919482354'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2008/01/microlog-modules.html' title='The Microlog Modules'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-8557769631394765534</id><published>2009-01-13T21:48:00.045+01:00</published><updated>2009-01-14T15:03:33.928+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><title type='text'>A Little Bit Off Topic - Nintendo Wii etc</title><content type='html'>Yesterday I was back in business after the holidays. Before the holidays I was convinced that I would have time to do a lot of work on my open source projects. You could guess how wrong I was!&lt;br /&gt;&lt;br /&gt;My son wished for a &lt;a href="http://wii.com/"&gt;Nintendo Wii console&lt;/a&gt; from Santa. Since he has been a good boy, at least from time to time, he got one. Have you heard about the Wii? The concept is as genius as simple, an accelerometer included in each remote. The accelerometer is used to control the movements on the screen. For example, you could use it as a racket in a game of tennis. For my son that is 6 years old, this is much simpler than using an ordinary remote control. We have one older platform, but that is not used very much. If it used by my son, he uses the buzz buttons. A matter of fact, it makes it easy for the rest of family as well. No need to remember some odd key combination to do a punch. Just do a punch in the air to do a boxing punch on the screen. The funny thing is that by the end of the holidays, the whole family was really hooked on Wii.&lt;br /&gt;&lt;br /&gt;For the most part we played the supplied Wii sports, but some other games was played as well. My son spent several hours discovering the Star Wars world in "&lt;a href="http://starwars.lego.com/"&gt;LEGO Star Wars The Video Game&lt;/a&gt;". The "&lt;a href="http://legobatmangame.com/"&gt;LEGO Batman: The Video game&lt;/a&gt;" was also played a lot. If you have a kid around the age of 6-10, I could really recommend these games. To be honest, I also liked these games and spent countless hours playing them with my son. When I was alone I played "&lt;a href="http://en.wikipedia.org/wiki/Battalion_Wars_2"&gt;Battalion Wars II&lt;/a&gt;". This is similar to the &lt;a href="http://www.battlefield.com/"&gt;Battlefield&lt;/a&gt; games, but without one drop of blood. The graphics is a little bit cartoon like and with a twist of humor, which I appreciate. At first a was a little bit skeptical about the game controls, you use the built-in IR pointer to point at target on the screen. It takes some practice to get used to the IR pointer, but once you get it, it is easy to use. To help you in this game, you have a locking button. When this is pressed, the target is locked. If you are not dead on target, the aim point snaps to the target. I have only played the first couple of parts in the campaign, but so far I like this game.&lt;br /&gt;&lt;br /&gt;That is all for now. I hope to be up to speed within a couple of days with my blog, the open source projects etc. If not, I suppose that I will be playing some Wii.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-8557769631394765534?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/8557769631394765534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=8557769631394765534' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/8557769631394765534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/8557769631394765534'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2009/01/little-bit-off-topic-nintendo-wii-etc.html' title='A Little Bit Off Topic - Nintendo Wii etc'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-9041807432997683086</id><published>2008-12-25T23:03:00.004+01:00</published><updated>2008-12-25T23:14:46.101+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><title type='text'>Microlog Snapshot Release</title><content type='html'>As a X-mas present for you, I have released a new snapshot version of Microlog. The most important update is the updated RecordStoreLogviewer. The default settings was not the same as the RecordStoreAppender. This made it hard to read the log from the record store, although it was possible. The was also some problems with NullPointerExceptions, which is now removed.&lt;br /&gt;&lt;br /&gt;Please download the latest &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=138008&amp;amp;package_id=292008&amp;amp;release_id=648737"&gt;snapshot release&lt;/a&gt; and try it out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-9041807432997683086?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/9041807432997683086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=9041807432997683086' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/9041807432997683086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/9041807432997683086'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2008/12/microlog-snapshot-release.html' title='Microlog Snapshot Release'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-4485510135135984506</id><published>2008-12-21T15:34:00.001+01:00</published><updated>2008-12-21T18:34:37.971+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Book Review'/><title type='text'>Yet Another Review: The Book "Producing Open Source Software"</title><content type='html'>Running an open source project is not at all what I expected. I started out with one small open source project, &lt;a href="http://microlog.microsuite.org/"&gt;Microlog&lt;/a&gt;. I have now founded several other projects and the Microlog project has grown. As the time has passed a lot of decisions has to be made, ranging from pure development issues to questions about how to handle project members. Finally I started to think along these lines; "There must be someone who has been running an open source project and written a book about it". Most book that I found was related to license issues. However I found one book that seemed to fit my purposes which is &lt;a href="http://producingoss.com/"&gt;"Producing Open Source Software"&lt;/a&gt; by &lt;a href="http://www.red-bean.com/kfogel/"&gt;Karl Fogel&lt;/a&gt;. I have finished reading the book and I would like to tell you my opinions and thoughts about this book.&lt;br /&gt;&lt;br /&gt;The book starts with guidelines how to start an open source project when you have some code that you want to share. Although I have started several projects, the book gave me insight into several issues that I have not been aware of or neglected. The author goes through all the documentation that is needed to get started. The list is comprehensive and contains some documentation that I have missed out, for example developer guidelines. Fortunately most of the documentation seems to be in place for my own projects, even though there are some subjects missing. Consequently I think that I will spend some time on improving the documentation. I will keep the book nearby to get everything in place. The next part is " Technical Infrastructure". As the name implies, this goes through how to setup things like mailing lists, forums etc. The books briefly mention canned hosting, such as &lt;a href="http://www.sf.net/"&gt;SourceForge&lt;/a&gt;, but I would like to get more information on the subject. This is one the weak spots of the book. There are millions people out there running a project on SourceForge, or a similar site. The "Social and Political Infrastructure" is by far the most interesting part of the book. The expression "Benevolent Dictator" is explained, which is the final decision-making authority within the project. Since I am more or less the benevolent dictator in the Microlog project, I really enjoyed reading this part. I found myself laughing and people on the bus looking like a was from Mars or something. The next subject in line was "Money". This was totally new for me since none of the projects that I am involved are sponsored by a company, but they are only spare time projects. The author on the other hand is one of the founders of the Subversion project, which is sponsored by a company. This part is well written and it seems that the author does know what he is speaking about. What I am missing is a part on how to fund a project that started out as a spare time project. This is one of the questions that I was looking for an answer to. So I guess that I will have to find the answer elsewhere. The "Communications" part describe how you should handle the communication within the project, including how to handle rude people or people that are creating to much noise in the forums. Not one of the most interesting subjects in the book, but still worth reading. The part about "Packaging, Releasing and Daily Development" was rather familiar to me. In the era of Agile development, this is of great significance. If the "daily development"-part is not working correctly, the project runs a big risk loosing developers. The users may abandon the project if the release process is not working the way it should. Imagine if your project has an unclear release strategy, or the version numbering is dodgy. Managing volunteers is not always as easy at it would seem. To learn this, you should read the chapter with the same name. The last part of the book covers a subject that in itself could fill a whole book; "Licenses, Copyrights and Patents". This is the motivation for keeping the chapter short, the author only included a short introduction to the subject. If you wish to deep diver into this subject, choose a book on the subject.&lt;br /&gt;&lt;br /&gt;For those of you who have not started an open project, I think that this book is a very good "getting started guide". For people like me that is already running a project, the book gives invaluable tips. Even people that are participating in open source project could get something out of this book, even though this is not the primary audience. One last thing to mention, the book is under &lt;a href="http://producingoss.com/en/copyright.html"&gt;open copyright&lt;/a&gt;. In other words you could download it and distribute is as you like. Nice!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-4485510135135984506?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/4485510135135984506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=4485510135135984506' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/4485510135135984506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/4485510135135984506'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2008/12/yet-another-review-book-producing-open.html' title='Yet Another Review: The Book &quot;Producing Open Source Software&quot;'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-4142187926935203842</id><published>2008-12-18T18:07:00.011+01:00</published><updated>2008-12-19T08:31:20.298+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>The Microlog Project is Growing</title><content type='html'>The &lt;a href="http://microlog.microsuite.org/"&gt;Microlog projects&lt;/a&gt; is growing! My colleague &lt;a href="http://blog.jayway.com/author/henriklarne/"&gt;Henrik Larne&lt;/a&gt; told me the other day that he has started to use Microlog. He especially liked the BluetoothSerialAppender, which is used for logging to a Bluetooth server on your PC or on another phone. Before I had time to say welcome, he contributed  with a better version of the BluetoothSerialAppender. The developer has the opportunity set the server URL, in those cases where the automatic find function does not work. Very handy I would say. I suggested that he would join the project, which he did. All in all we are now four developers. Since we soon will start working on Microlog V2.0, this is very good timing. But that is not all; Henrik wrote an excellent &lt;a href="http://blog.jayway.com/2008/12/17/java-me-logging-over-bluetooth-using-microlog/"&gt;article&lt;/a&gt; about how to get started with Bluetooth logging. If you are going to start logging using Bluetooth this article is a good starting point.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-4142187926935203842?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/4142187926935203842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=4142187926935203842' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/4142187926935203842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/4142187926935203842'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2008/12/microlog-project-is-growing.html' title='The Microlog Project is Growing'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-5777500394316578295</id><published>2008-12-07T12:26:00.020+01:00</published><updated>2008-12-07T17:31:27.372+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><title type='text'>Useful Microlog Feedback</title><content type='html'>During this week I received some really useful and tangible feedback for &lt;a href="http://microlog.microsuite.org/"&gt;Microlog&lt;/a&gt;. First I received feedback regarding file logging, i.e. logging with the &lt;code&gt;FileAppender&lt;/code&gt;. Later this week I got feedback regarding the reading of logs from the &lt;code&gt;RecordStore&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;The feedback for the &lt;code&gt;FileAppender&lt;/code&gt; was from the beginning rather straightforward. The developer had found that the JavaDoc and the code were not in sync. The documentation stated that there should be a &lt;code&gt;setDirectory()&lt;/code&gt; method available. As it turned out there was no such method. The &lt;code&gt;setFilename()&lt;/code&gt; &amp;amp; &lt;code&gt;getFilename()&lt;/code&gt; had the same documentation. In other words a ordinary copy-and-paste mistake. The missing &lt;code&gt;setDirecotory()&lt;/code&gt; method was not so serious, but yet annoying.  I implemented the &lt;code&gt;setDirectory()&lt;/code&gt; method within a couple of minutes. I did not really consider the implications of this solution.&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt; What the developer really wanted was a method to set the filename, with or without the full path. He did not want to make a separation between the filename and the directory. The final solution was rather elegant. If the user sets a filename with a full path, this is used. Otherwise the user defined filename is used, but the first root directory is used. A feature request for some kind of rotating file logging was also included. The feature request for a rotating log created two featuture requests at the end, a &lt;code&gt;RollingFileAppender&lt;/code&gt; and a &lt;code&gt;RotatingFileAppender&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;What started out as a discussion about an &lt;code&gt;HTTPAppender&lt;/code&gt; in Microlog, lead to a discussion about how to load a log from the &lt;code&gt;RecordStore&lt;/code&gt;. One developer wanted som examples on how to read the log content. The code was really spread out in the &lt;code&gt;RecordStoreLogViewer&lt;/code&gt; class. This is a MIDlet that is used for reading the log content. The idea is that you switch to this MIDlet when you want to read the log from another MIDlet. What I did was simple. I extracted the load logging parts from the &lt;code&gt;RecordStoreLogViewer&lt;/code&gt; into a new class called &lt;code&gt;RecordStoreLogLoader&lt;/code&gt;. This was a good thing. The log reading functionality has no right to exists within the &lt;code&gt;RecordStoreLogViewer&lt;/code&gt; MIDlet. The is a matter of separation of concerns, as some object orientation guru might have put it.&lt;br /&gt;&lt;br /&gt;I try to handle the requests with the same tactics I use for my wife; I try to be as responsive as possible. The initial code changes are in place, as well as a &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=138008&amp;amp;package_id=292008&amp;amp;release_id=645380"&gt;snapshot release&lt;/a&gt;. These changes will probably lead to a continued discussion. This shows the real power of open source development. With about 3-4 iterations I had a solution that satisfied the developers need, and it took 3-4 days to solve. What a joy it is to be part of an Open Source project (like Microlog)!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-5777500394316578295?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/5777500394316578295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=5777500394316578295' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/5777500394316578295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/5777500394316578295'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2008/12/useful-microlog-feedback.html' title='Useful Microlog Feedback'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-6662571513971675623</id><published>2008-12-04T21:39:00.007+01:00</published><updated>2008-12-05T07:59:17.530+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><title type='text'>Software Development for Mobile Applications</title><content type='html'>&lt;a href="http://microlog.microsuite.org/"&gt;Microlog&lt;/a&gt; was today presented at a German conference called &lt;a href="http://softwareforen.de/Fachkonferenz/softwareentwicklung-fuer-mobile-anwendungen.html"&gt;"Softwareentwicklung für mobile Anwendungen"&lt;/a&gt;. Translated to English it is "Software development for mobile applications". The presentation was done by Karsten Ohme, a Microlog team member. Many thanks Karsten for promoting Microlog!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-6662571513971675623?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/6662571513971675623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=6662571513971675623' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/6662571513971675623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/6662571513971675623'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2008/12/software-development-for-mobile.html' title='Software Development for Mobile Applications'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-2088131143356245398</id><published>2008-12-03T21:17:00.009+01:00</published><updated>2008-12-03T21:32:41.430+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><title type='text'>Newsflash: Microlog Featured on the Mobile &amp; Embedded Podcast</title><content type='html'>During the &lt;a href="http://www.oredev.org/"&gt;Öredev conference&lt;/a&gt;, yours truly and Darius Katz was interviewed by &lt;a href="http://weblogs.java.net/blog/terrencebarr/"&gt;Terrence Barr&lt;/a&gt;, Sun Senior Technologist and Ambassador for the &lt;a href="http://community.java.net/mobileandembedded/"&gt;Mobile &amp;amp; Embedded Community&lt;/a&gt;. The interview should give you a little more insight into the &lt;a href="http://microlog.microsuite.org/"&gt;Microlog&lt;/a&gt; project.&lt;br /&gt;&lt;br /&gt;Please download and listen to the podcast:&lt;br /&gt;&lt;a href="http://today.java.net/pub/a/today/2008/12/03/javamobility-podcast62.html"&gt;http://today.java.net/pub/a/today/2008/12/03/javamobility-podcast62.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-2088131143356245398?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/2088131143356245398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=2088131143356245398' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/2088131143356245398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/2088131143356245398'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2008/12/newsflash-microlog-featured-on-mobile.html' title='Newsflash: Microlog Featured on the Mobile &amp; Embedded Podcast'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-1894157541124929706</id><published>2008-11-30T13:53:00.001+01:00</published><updated>2008-11-30T13:53:58.439+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Book Review'/><title type='text'>Short Review of "The Productive Programmer"</title><content type='html'>I have just finished reading the book &lt;a href="http://oreilly.com/catalog/9780596519780/"&gt;"The Productive Programmer"&lt;/a&gt; by &lt;a href="http://www.oreillynet.com/pub/au/2632"&gt;Neal Ford&lt;/a&gt;. For those it may concern; this is a short review of this book.&lt;br /&gt;&lt;br /&gt;The first thing that struck me is that the book was not very thick. In my eyes this is a good thing. I have seen to many bloated books, that does have a problem to focus on the subject at hand. It appears that the book is inspired by the excellent book "&lt;a href="http://www.pragprog.com/the-pragmatic-programmer"&gt;The Pragmatic Programmer"&lt;/a&gt; by &lt;a href="http://en.wikipedia.org/wiki/Andy_Hunt_%28author%29"&gt;Andy Hunt&lt;/a&gt; &amp;amp; &lt;a href="http://en.wikipedia.org/wiki/Dave_Thomas_%28programmer%29"&gt;Dave Thomas&lt;/a&gt;. In fact it is recommended by Neal Ford.&lt;br /&gt;&lt;br /&gt;The book consists of two parts; "Mechanics" &amp;amp; "Practice". The "Mechanics" part is about the tools you should use, and some tips &amp;amp; tricks on how to use them. For example, there are examples on how you could use &lt;a href="http://ant.apache.org/"&gt;Ant&lt;/a&gt; for more than building your software. The section "Focus" is the most interesting section. This is where you learn how to kill distractions, something along the lines of &lt;a href="http://en.wikipedia.org/wiki/Getting_Things_Done"&gt;"Gettings Things Done"&lt;/a&gt; by &lt;a href="http://en.wikipedia.org/wiki/David_Allen_%28author%29"&gt;David Allen&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The "Practice" part contains some best practices that Neal consider important to know, like Test Driven Design. I really like the YAGNI section, where YAGNI stands for "You Ain't Going To Need It". This part is all about a problem that many developers has encountered, namely speculative programming. For example, a class that contains "good to have"-methods, that is there to be future proof. The leason is; do not add anything that you do not need because "You Ain't Going To Need It". This is not something new, but it is still a common problem. Another section of the "Practice" part is the "Ancient Philosopheres". Neal uses ancient knowledge and adopts it software development. This is an unusual approach that I really liked.&lt;br /&gt;&lt;br /&gt;If you want to be a more productive programmer, this is a good start. The book is short and easy to read. &lt;a href="http://www.nofluffjuststuff.com/"&gt;No fluff, just stuff &lt;/a&gt;kind of book.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-1894157541124929706?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/1894157541124929706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=1894157541124929706' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/1894157541124929706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/1894157541124929706'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2008/11/short-review-of-productive-programmer.html' title='Short Review of &quot;The Productive Programmer&quot;'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-810184961084198938</id><published>2008-11-21T20:48:00.022+01:00</published><updated>2008-11-22T14:53:57.126+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Öredev 2008: Android, Blackberry &amp; Clean Code</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_w7OU_FVnMiE/SScleabzMhI/AAAAAAAAAKA/2RA3un8D3SU/s1600-h/DSC04737.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_w7OU_FVnMiE/SScleabzMhI/AAAAAAAAAKA/2RA3un8D3SU/s400/DSC04737.JPG" alt="" id="BLOGGER_PHOTO_ID_5271223093282681362" border="0" /&gt;&lt;/a&gt;The last day of Öredev 2008 started with a keynote by &lt;a href="http://www.objectmentor.com/omTeam/martin_r.html"&gt;Robert C Martin&lt;/a&gt; (the picture above). It feels hard for me to reproduce the content of the keynote. His session about "&lt;a href="http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882"&gt;Clean Code&lt;/a&gt;" was a little bit more tangible. He showed an example on how to simplify a method, and decompose into several small methods. The final example was very, very simple. The session gave me a new perspective on how to write good code. Maybe it is time to clean up some of my code?&lt;br /&gt;&lt;br /&gt;I have never tried to develop for a &lt;a href="http://www.blackberry.com/"&gt;BlackBerry&lt;/a&gt; device. The primary reason is that BlackBerry devices are not very common here in Sweden.  Anyhow I thought it would be interesting to know a little bit more about the BlackBerry development. One thing that impressed me was that how Java friendly the device is. Every "native" application is written in Java. As a consequence all the APIs are written in Java. If you were to develop a Java application for a Symbian device you would be limited when writing your application in Java ME, since not all the APIs are reachable from Java. On many mobile devices the Java applications are hidden somewhere deep inside some strange folder. This means that your Java ME applications are some kind of "second class citizen". On a BlackBerry on the other hand, the Java ME applications that you write is as important as the pre-loaded applications. Really nice! If there is a new feature, like GPS, it is immediately available for you as a developer. That is not the case when developing for a lot of other mobile devices. The development environment seems to be pretty mature, including such stuff as memory statistics and a profiler.&lt;br /&gt;&lt;br /&gt;A new kid on the block in Java world is the &lt;a href="http://code.google.com/p/android/"&gt;Android Open Source platform&lt;/a&gt;. For those of you that have not heard of it; it is a new mobile platform. It is developed by the &lt;a href="http://www.openhandsetalliance.com/"&gt;Open Handset Alliance&lt;/a&gt;, which consists of many mobile operators, mobile manufacturers and software companies.  The most famous company of this bunch is probably &lt;a href="http://www.google.com/corporate/"&gt;Google Inc&lt;/a&gt;. As mentioned it is Open Source, which gives a lot of new possibilities. For example, it could be possible to port it to any kind of embedded device. The Android platform is based on a &lt;a href="http://www.linux.org/"&gt;Linux&lt;/a&gt; kernel. On top of that we have a Dalvik VM. You develop your application in Java and compiles to a Dalvik executable. Although it is not considered as Java by definition, you as a Java developer hardly notice any difference. The API is based in Java v1.5, with some unwanted APIs removed. As of today there are not many Android devices available, but inevitably there will be some more devices real soon. The Androiod platform seems to be targeted at the smartphone segment.&lt;br /&gt;&lt;br /&gt;Before the last session it was time to attend a lottery draw. To be a part of the lottery you would have to solve a developer scrabble, which I did. Believe it or not, I won a brand new &lt;a href="http://eeepc.asus.com/se/901.htm"&gt;Eee PC 901&lt;/a&gt;. A real nice piece of equipment, although I have not tried it extensively. I guess it is nice to have when you are on the road.&lt;br /&gt;&lt;br /&gt;Here are the rest of the photos from day 3 at Öredev 2008:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_w7OU_FVnMiE/SSclfqSMH_I/AAAAAAAAAKY/6ogsl0OSS4Y/s1600-h/DSC04757.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_w7OU_FVnMiE/SSclfqSMH_I/AAAAAAAAAKY/6ogsl0OSS4Y/s400/DSC04757.JPG" alt="" id="BLOGGER_PHOTO_ID_5271223114717208562" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;The Android session was pretty cool.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_w7OU_FVnMiE/SSclfQPljlI/AAAAAAAAAKQ/VMdha-6Dfxs/s1600-h/DSC04748.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_w7OU_FVnMiE/SSclfQPljlI/AAAAAAAAAKQ/VMdha-6Dfxs/s400/DSC04748.JPG" alt="" id="BLOGGER_PHOTO_ID_5271223107726970450" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;This shows how wrong it can get when a critical application fails. From the presentation by Kevlin Henney.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_w7OU_FVnMiE/SScle-FbS5I/AAAAAAAAAKI/GwakInvp3fE/s1600-h/DSC04746.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_w7OU_FVnMiE/SScle-FbS5I/AAAAAAAAAKI/GwakInvp3fE/s400/DSC04746.JPG" alt="" id="BLOGGER_PHOTO_ID_5271223102852516754" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Kevlin Henney in action.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&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/7396059659723667740-810184961084198938?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/810184961084198938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=810184961084198938' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/810184961084198938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/810184961084198938'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2008/11/redev-2008-android-blackberry-clean.html' title='Öredev 2008: Android, Blackberry &amp; Clean Code'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_w7OU_FVnMiE/SScleabzMhI/AAAAAAAAAKA/2RA3un8D3SU/s72-c/DSC04737.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-3192138156134511742</id><published>2008-11-20T23:17:00.002+01:00</published><updated>2008-11-22T10:40:14.825+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile Development'/><title type='text'>Öredev 2008: Agile, Scrum &amp; Boom Chicago</title><content type='html'>&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_w7OU_FVnMiE/SSb_agAVEJI/AAAAAAAAAJg/jzaOIiMWL78/s1600-h/DSC04663.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5271181244616741010" style="margin: 0px auto 10px; display: block; width: 400px; cursor: pointer; height: 300px; text-align: center;" alt="" src="http://4.bp.blogspot.com/_w7OU_FVnMiE/SSb_agAVEJI/AAAAAAAAAJg/jzaOIiMWL78/s400/DSC04663.JPG" border="0" /&gt;&lt;/a&gt;The 2nd day of Öredev was very long and thrilling. As a change I attended a lot of non-technical sessions. The first session was called "Scrum @ Yahoo" held by &lt;a href="http://www.scrumalliance.org/profiles/46-gabrielle-p-benefield"&gt;Gabrielle Benefield&lt;/a&gt;. She presented her own story about the introduction of Scrum within Yahoo. The story was presented in a funny and intense way. One thing that struck me was that the managers was afraid to loose their jobs when introducing Scrum. As she pointed out correctly; Scrum is very developer centric. For some reason I have never done this reflection. The same concern was also raised by &lt;a href="http://www.allankelly.net/"&gt;Allan Kelly&lt;/a&gt;. But they seemed to have the same opinion; the managers should not be afraid of loosing their jobs. The most funny slide from Gabrielles session was the one above. This tells a lot about the power of Scrum.&lt;br /&gt;&lt;br /&gt;During the day I had the privilege to meet up with &lt;a href="http://weblogs.java.net/blog/terrencebarr/"&gt;Terrence Barr&lt;/a&gt; in person. He is a Sun Evangelist and Ambassador for &lt;a href="http://community.java.net/mobileandembedded/"&gt;the Mobile and Embedded Community&lt;/a&gt;. We had some interesting discussions about &lt;a href="http://microlog.microsuite.org/"&gt;Microlog&lt;/a&gt;,&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt; the Mobile and Embedded Community and about the Java ME Open Source community in general.&lt;br /&gt;&lt;br /&gt;We ended of the evening with some refreshing drinks and snacks. The improvisation group &lt;a href="http://www.boomchicago.nl/en/"&gt;Boom Chicago&lt;/a&gt; entertained us with an funny interactive show. After the show I was pretty tired and got home rather early.&lt;br /&gt;&lt;br /&gt;Here are the rest of the photos from day 2 at Öredev 2008:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_w7OU_FVnMiE/SSb_a27wvtI/AAAAAAAAAJo/WcUCJRvStPw/s1600-h/DSC04687.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5271181250771599058" style="margin: 0px auto 10px; display: block; width: 400px; cursor: pointer; height: 300px; text-align: center;" alt="" src="http://4.bp.blogspot.com/_w7OU_FVnMiE/SSb_a27wvtI/AAAAAAAAAJo/WcUCJRvStPw/s400/DSC04687.JPG" border="0" /&gt;&lt;/a&gt;&lt;em&gt;Terrence Barr and me at the Öredev entrance.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_w7OU_FVnMiE/SSb_aQQKMLI/AAAAAAAAAJY/J7-zG238LBc/s1600-h/DSC04655.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5271181240388169906" style="margin: 0px auto 10px; display: block; width: 400px; cursor: pointer; height: 300px; text-align: center;" alt="" src="http://4.bp.blogspot.com/_w7OU_FVnMiE/SSb_aQQKMLI/AAAAAAAAAJY/J7-zG238LBc/s400/DSC04655.JPG" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Learn the Scrum way from Gabrielle Benefields presentation. Note; this is not the way Scrum should be introduced.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_w7OU_FVnMiE/SSb_Z_BpZTI/AAAAAAAAAJI/EbPec4pegQA/s1600-h/DSC04640.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5271181235763897650" style="margin: 0px auto 10px; display: block; width: 400px; cursor: pointer; height: 300px; text-align: center;" alt="" src="http://1.bp.blogspot.com/_w7OU_FVnMiE/SSb_Z_BpZTI/AAAAAAAAAJI/EbPec4pegQA/s400/DSC04640.JPG" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;The keynote speaker of the 2nd day; &lt;a href="http://www.satisfice.com/blog/"&gt;James Bach&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_w7OU_FVnMiE/SSb_aA9J73I/AAAAAAAAAJQ/Z0f_CUcRkn8/s1600-h/DSC04642.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5271181236281929586" style="margin: 0px auto 10px; display: block; width: 400px; cursor: pointer; height: 300px; text-align: center;" alt="" src="http://2.bp.blogspot.com/_w7OU_FVnMiE/SSb_aA9J73I/AAAAAAAAAJQ/Z0f_CUcRkn8/s400/DSC04642.JPG" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;James Bach showing a photo of where his laptop last was seen, namely the the central station in Stockholm, Sweden.&lt;/span&gt;&lt;span style="font-style: italic;"&gt; He was a little bit disappointed that there was no swedish polices at the station on a Sunday afternoon.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_w7OU_FVnMiE/SScZwIwZSOI/AAAAAAAAAJw/5IF78094ilo/s1600-h/DSC04704.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_w7OU_FVnMiE/SScZwIwZSOI/AAAAAAAAAJw/5IF78094ilo/s400/DSC04704.JPG" alt="" id="BLOGGER_PHOTO_ID_5271210203635337442" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;The Boom Chicago group entertaining us.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_w7OU_FVnMiE/SScZwdPmGqI/AAAAAAAAAJ4/QTZRzLKnnVs/s1600-h/DSC04732.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_w7OU_FVnMiE/SScZwdPmGqI/AAAAAAAAAJ4/QTZRzLKnnVs/s400/DSC04732.JPG" alt="" id="BLOGGER_PHOTO_ID_5271210209134910114" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;"Mick Jagger" and "Amy Winehouse".&lt;/span&gt;&lt;br /&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/7396059659723667740-3192138156134511742?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/3192138156134511742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=3192138156134511742' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3192138156134511742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3192138156134511742'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2008/11/redev-2008-agile-scrum-boom-chicago.html' title='Öredev 2008: Agile, Scrum &amp; Boom Chicago'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_w7OU_FVnMiE/SSb_agAVEJI/AAAAAAAAAJg/jzaOIiMWL78/s72-c/DSC04663.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-302487295571763318</id><published>2008-11-19T21:31:00.009+01:00</published><updated>2008-11-20T06:09:51.986+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Java ME'/><title type='text'>Öredev 2008: Sun SPOT, Buglabs, Sun Java ME SDK , Benefits of Open Source Development etc</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_w7OU_FVnMiE/SSRm8ydsjHI/AAAAAAAAAII/YrGud_osnWk/s1600-h/DSC04627.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_w7OU_FVnMiE/SSRm8ydsjHI/AAAAAAAAAII/YrGud_osnWk/s400/DSC04627.JPG" alt="" id="BLOGGER_PHOTO_ID_5270450658454834290" border="0" /&gt;&lt;/a&gt;The first day of &lt;a href="http://www.oredev.org/"&gt;Öredev 2008&lt;/a&gt; is over. It has been an interesting day, with many new impressions. There are a lot of exciting things happening within the Java ME community right now. The Java ME platform is becoming available on a numerous platforms and in different flavors. I really liked the &lt;a href="http://www.sunspotworld.com/"&gt;Sun SPOT device&lt;/a&gt; when it was announced at &lt;a href="http://java.sun.com/javaone/"&gt;JavaOne&lt;/a&gt; 2006, and the &lt;a href="http://buglabs.net/"&gt;BUG&lt;/a&gt; demonstration today was impressive. Both these devices triggers a real "must have now" feeling. If you ever had the opportunity to try out the Sun SPOT, you know what I mean.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_w7OU_FVnMiE/SSRxBPCK5YI/AAAAAAAAAIY/vvj8H2ZOgtI/s1600-h/DSC04620.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_w7OU_FVnMiE/SSRxBPCK5YI/AAAAAAAAAIY/vvj8H2ZOgtI/s400/DSC04620.JPG" alt="" id="BLOGGER_PHOTO_ID_5270461729959765378" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Sun SPOT in action at the &lt;a href="http://www.waygroup.se/"&gt;Waygroup&lt;/a&gt; stand. The robot is about to knock down the &lt;a href="http://www.jayway.com/"&gt;Jayway&lt;/a&gt; mug.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I must remind you all that &lt;a href="http://microlog.microsuite.org/"&gt;Microlog&lt;/a&gt; works on Sun SPOT out-of-the-box, and has some special classes for Sun SPOT development. These classes are merged from the &lt;a href="http://wsnwiki.csse.uwa.edu.au/index.php/Software:SunSPOTTools"&gt;Microlog4SPOT&lt;/a&gt; project.&lt;br /&gt;&lt;br /&gt;Another new attention-grabbing technology is the &lt;a href="http://www.javafx.com/"&gt;JavaFX&lt;/a&gt; framework. Before the presentation I did not have deep knowledge of what it was, but now I think that I have grasped the vital parts of JavaFX. It could be seen as a new Java platform that is put on top of the existing Java platform. It is kind of write once, run everywhere but with a new twist. Looking forward to try it out.&lt;br /&gt;&lt;br /&gt;A tool I would like to try out is the new &lt;a href="http://java.sun.com/javame/downloads/sdk30ea.jsp"&gt;Sun Java ME SDK&lt;/a&gt;. It is available as an early access release today. According to the people from Sun the 1.0 release should be available in the beginning of 2009. The new Java ME SDK is a combination of the Sun Wireless Toolkit and the CDC Toolkit. It has been re-worked and uses the Netbeans framework as its foundation. The aim is to have a tool that is useful for all Java ME development. As such it has support for Blu-ray development.&lt;br /&gt;&lt;br /&gt;There was also a session about &lt;a href="https://lwuit.dev.java.net/"&gt;LWUIT&lt;/a&gt;, the new UI Toolkit from Sun. It could be used as a better version of the &lt;a href="http://en.wikipedia.org/wiki/Mobile_Information_Device_Profile"&gt;LCDUI&lt;/a&gt;. It is inspired by the &lt;a href="http://en.wikipedia.org/wiki/Swing_%28Java%29"&gt;Swing toolkit&lt;/a&gt;, but for Java ME. Please take a look at my article about the &lt;a href="http://myossdevblog.blogspot.com/2008/11/lwuit-makeover-demo.html"&gt;LWUIT Makeover demo&lt;/a&gt;. I believe there will be reasons to watch out for LWUIT.&lt;br /&gt;&lt;br /&gt;Here are some additional pictures from Öredev 2008:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_w7OU_FVnMiE/SSRzNZpzgrI/AAAAAAAAAIg/hd6Eo3V5Gco/s1600-h/DSC04593.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_w7OU_FVnMiE/SSRzNZpzgrI/AAAAAAAAAIg/hd6Eo3V5Gco/s400/DSC04593.JPG" alt="" id="BLOGGER_PHOTO_ID_5270464137992045234" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;A couple of minutes before the first keynote speech with &lt;/span&gt;&lt;a style="font-style: italic;" href="http://blogs.tedneward.com/"&gt;Ted Neward&lt;/a&gt;&lt;span style="font-style: italic;"&gt; from &lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.thoughtworks.com/"&gt;ThoughtWorks&lt;/a&gt;&lt;span style="font-style: italic;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_w7OU_FVnMiE/SSRxA9HE5DI/AAAAAAAAAIQ/_AuW6dynglc/s1600-h/DSC04606.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 300px; height: 400px;" src="http://2.bp.blogspot.com/_w7OU_FVnMiE/SSRxA9HE5DI/AAAAAAAAAIQ/_AuW6dynglc/s400/DSC04606.JPG" alt="" id="BLOGGER_PHOTO_ID_5270461725148505138" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;The official Microlog t-shirt. This is a limited edition only used by a couple of developers in the world.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_w7OU_FVnMiE/SSR04ncU_FI/AAAAAAAAAIo/t57a1sPVNmA/s1600-h/DSC04615.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_w7OU_FVnMiE/SSR04ncU_FI/AAAAAAAAAIo/t57a1sPVNmA/s400/DSC04615.JPG" alt="" id="BLOGGER_PHOTO_ID_5270465979939617874" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;All the mugs knocked out. Again we see the Sun SPOT in action.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_w7OU_FVnMiE/SSR2tVz9AsI/AAAAAAAAAIw/a70LC7mlNjs/s1600-h/DSC04621.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_w7OU_FVnMiE/SSR2tVz9AsI/AAAAAAAAAIw/a70LC7mlNjs/s400/DSC04621.JPG" alt="" id="BLOGGER_PHOTO_ID_5270467985251566274" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;A &lt;a href="http://mindstorms.lego.com/Press/2057/LEGO%20MINDSTORMS%20NXT%20Key%20Product%20Features.aspx"&gt;LEGO Mindstorm NXT&lt;/a&gt; waiting for some action.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_w7OU_FVnMiE/SSR2t_L6n_I/AAAAAAAAAJA/F2QjsBvlhGQ/s1600-h/DSC04624.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_w7OU_FVnMiE/SSR2t_L6n_I/AAAAAAAAAJA/F2QjsBvlhGQ/s400/DSC04624.JPG" alt="" id="BLOGGER_PHOTO_ID_5270467996357926898" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Some advantages of Open Source Software in development.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_w7OU_FVnMiE/SSR2thSw4rI/AAAAAAAAAI4/4D1BZC-Jwfw/s1600-h/DSC04623.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_w7OU_FVnMiE/SSR2thSw4rI/AAAAAAAAAI4/4D1BZC-Jwfw/s400/DSC04623.JPG" alt="" id="BLOGGER_PHOTO_ID_5270467988333585074" border="0" /&gt;&lt;/a&gt; &lt;span style="font-style: italic;"&gt;Some more advantages of Open Source Software in development.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-302487295571763318?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/302487295571763318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=302487295571763318' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/302487295571763318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/302487295571763318'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2008/11/redev-2008-sun-spot-buglabs-sun-java-me.html' title='Öredev 2008: Sun SPOT, Buglabs, Sun Java ME SDK , Benefits of Open Source Development etc'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_w7OU_FVnMiE/SSRm8ydsjHI/AAAAAAAAAII/YrGud_osnWk/s72-c/DSC04627.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-6857533582852154294</id><published>2008-11-16T12:45:00.010+01:00</published><updated>2008-11-16T12:56:06.191+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>Improving your Java Source Code with Open Source Code Analysis Tools; FindBugs, Lint4j &amp; CheckStyle</title><content type='html'>&lt;span style="font-size:100%;"&gt;One of the best way to improve your own code is by looking at other peoples code. Another way to be a world class programmer is to use a source code analysis tool, like &lt;a href="http://findbugs.sourceforge.net/"&gt;FindBugs&lt;/a&gt;, &lt;a href="http://www.jutils.com/eclipse/"&gt;Lint4j, &lt;/a&gt;&lt;a href="http://checkstyle.sourceforge.net/"&gt;CheckStyle&lt;/a&gt;. Here is a short &amp;amp; compendious summary of these tools.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;FindBugs&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;This is my favorite source code analyzer, simply because it tends to find the most horribly, awful bugs. FindBugs is based on the concept of &lt;span style="font-style: italic;"&gt;bug patterns&lt;/span&gt;. A bug pattern is a pattern in your code that implies a bug. The FindBugs tool is initially developed &lt;/span&gt;&lt;span style="font-size:100%;"&gt;at &lt;a href="http://www.umd.edu/"&gt;The University of Maryland&lt;/a&gt;. According to Professor William Pugh, &lt;/span&gt;&lt;span style="font-size:100%;"&gt;"Students are good bug generators". As such many of the students mistakes has generated a new bu&lt;/span&gt;&lt;span style="font-size:100%;"&gt;g detector implementation. One might think that these are mistakes only made by beginners, but as it turns out many of these problems are also part of production code. For example, the FindBugs tool was used on the Sun JDK and it found some serious bugs.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;The FindBugs tool is available as a stand-alone GUI, Ant, Eclipse and Maven plugins. During development I prefer to use a plugin in my IDE, which in my case is Eclipse. The source code analyzer should also be a part of the build process.&lt;br /&gt;&lt;br /&gt;For all the newcomers to Eclipse, this is how you install the FindBugs plugin from the update site:&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Select menu "Help" -&gt; "Software Updates" -&gt; "Find and Install..."&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Select "Search for new features to install" and press the "Next" button.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Press the "New Remote Site..." button.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Enter your name for the update site, for example "FindBugs Update Site", and enter the following into the URL field: &lt;a href="http://findbugs.cs.umd.edu/eclipse"&gt;http://findbugs.cs.umd.edu/eclipse&lt;/a&gt;&lt;br /&gt;Press the "OK" button&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Press the "Finish" button. Eclipse will now contact the update site and check for the latest version.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;After a while you will get a list with the features that are available to you. Press the "Next" button until you get to the "Install" page. Press the "Finish" button.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;When you get to the "Verification" page, press the "Install" button.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Eclipse will now run the "Update Manager" and download the plugin.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;When everything is finished, you will be prompted to restart Eclipse. Please press "Yes" and Eclipse will be restarted.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:100%;"&gt;When you have installed it, you will have an extra context menu like this;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_w7OU_FVnMiE/SSAKDD33n7I/AAAAAAAAAHk/p5314tiDTtg/s1600-h/FindBugsEclipseMenu.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 102px;" src="http://2.bp.blogspot.com/_w7OU_FVnMiE/SSAKDD33n7I/AAAAAAAAAHk/p5314tiDTtg/s400/FindBugsEclipseMenu.jpg" alt="" id="BLOGGER_PHOTO_ID_5269222611719004082" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;Select this menu and within seconds you will have a list of potential problems in your code. These are all gathered together with the compiler warnings. When you click on a warning, your code will be displayed with a bug:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_w7OU_FVnMiE/SSAKDLSLoJI/AAAAAAAAAHs/TApiyRhcNjA/s1600-h/FindBugsInTheCode.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 97px;" src="http://2.bp.blogspot.com/_w7OU_FVnMiE/SSAKDLSLoJI/AAAAAAAAAHs/TApiyRhcNjA/s400/FindBugsInTheCode.jpg" alt="" id="BLOGGER_PHOTO_ID_5269222613708415122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;Double-click on the bug and you get an explanation on what the warning really means:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_w7OU_FVnMiE/SSAKDt6sUII/AAAAAAAAAH0/SN8s3MQFEGA/s1600-h/FindBusgExplanation.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 125px;" src="http://1.bp.blogspot.com/_w7OU_FVnMiE/SSAKDt6sUII/AAAAAAAAAH0/SN8s3MQFEGA/s400/FindBusgExplanation.jpg" alt="" id="BLOGGER_PHOTO_ID_5269222623005134978" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;Now you could start figuring out what to do with the warnings. Hopefully FindBugs has found some bugs for you.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;Here is where you find more information about FindBu&lt;/span&gt;&lt;span style="font-size:100%;"&gt;gs:&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://findbugs.sourceforge.net/"&gt;FindBugs homepage&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://findbugs.cs.umd.edu/eclipse"&gt;The FindBugs Eclipse update site&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://findbugs.blogspot.com/"&gt;FindBugs Blog&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;CheckStyle&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As the name implies, CheckStyle check the style of code. For example, it can check if you follow the Sun Java Code Convention. But CheckStyle can  find more than this. It contains a multitude of rules that are considered bad programming practices. Some are very common, and others are a little bit more doubtful. In other words CheckStyle is not really in the same category as FindBugs, but I find it a tool that is worth having in your Java programmer toolbox. Installation of the CheckStyle Eclipse plugin is made the same way as with FindBugs, but you use another link (found below).&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;Here is where you find more information about CheckStyle:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://checkstyle.sourceforge.net/"&gt;CheckStyle homepage&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://eclipse-cs.sourceforge.net/"&gt;The Eclipse CheckStyle plugin&lt;/a&gt; (that I use)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Lint4j&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Lint4j tool is a tool that is similar to the famous &lt;a href="http://en.wikipedia.org/wiki/Lint_programming_tool"&gt;lint tool&lt;/a&gt; for the C programming language. I have not used it very much, but it have found some code that smelled badly. When I have used it for a while I will communicate my opinions to you.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;Here is where you find more information about Lint4j:&lt;br /&gt;&lt;/span&gt; &lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://www.jutils.com/eclipse/"&gt;Lint4j&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; &lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Some Final Words&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here are some final words of advice&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Use it from the start of your project. Otherwise you could be overwhelmed by the enormous pile of things that you should correct.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Do not use full checking from the beginning, start by using the default settings. When you have checked your code you could add the checks that you find useful.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Do not check in your code without running your source code analyzer.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Add code checking as part of your continuous build process. Your build should not fail when it detects some problem(s). The reports could be used to ensure that nobody check in code that is bad.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Use common sense, you should not obey the tool relentlessly without questioning. The FindBugs tools is the most effective, but sometime it indicates things that are not really a bug. Use the filtering capabilities found in the tools to filter out what is not relevant. This let you focus on the real bugs.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;A source code analysis tool should not replace other good practices like unit testing and code reviews. These are all complementary tools to make your code close to perfect, and avoid those nasty bugs.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;I hope these tips will help you to improve your code, and will make you a better programmer.&lt;br /&gt;&lt;br /&gt;Happy bug hunting!&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-6857533582852154294?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/6857533582852154294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=6857533582852154294' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/6857533582852154294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/6857533582852154294'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2008/11/improving-your-java-source-code-with.html' title='Improving your Java Source Code with Open Source Code Analysis Tools; FindBugs, Lint4j &amp; CheckStyle'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_w7OU_FVnMiE/SSAKDD33n7I/AAAAAAAAAHk/p5314tiDTtg/s72-c/FindBugsEclipseMenu.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-3510975997418759700</id><published>2008-11-11T18:08:00.007+01:00</published><updated>2008-11-11T18:20:26.461+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><title type='text'>Yet Another Microlog 1.1.0 Snapshot is Available for Download</title><content type='html'>I have released yet another 1.1.0 snapshot release of Microlog. It contains very few, but important changes. To ease you from the pain of using the source repository, I prefer to make snapshot releases as often as possible.&lt;br /&gt;&lt;br /&gt;Important changes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Performance improvements: the Microlog core has been optimized for speed.&lt;/li&gt;&lt;li&gt;The level checking code was not working correct. This is now corrected.&lt;/li&gt;&lt;/ul&gt;Please &lt;a href="https://sourceforge.net/project/showfiles.php?group_id=138008&amp;amp;package_id=292008&amp;amp;release_id=639769"&gt;download the snapshot release&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-3510975997418759700?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/3510975997418759700/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=3510975997418759700' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3510975997418759700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/3510975997418759700'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2008/11/new-snapshot-version-of-microlog-is.html' title='Yet Another Microlog 1.1.0 Snapshot is Available for Download'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-5170692626193149365</id><published>2008-11-09T12:38:00.006+01:00</published><updated>2008-11-11T12:16:23.470+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Java ME'/><title type='text'>Using Eclipse MTJ for Java ME (J2ME) Development</title><content type='html'>A while ago I was experiencing pre-verification problems with &lt;a href="http://www.eclipseme.org/"&gt;EclipseME&lt;/a&gt;. Rather annoying I must say. I spent several useless hours before getting it right. This is when I decided to upgrade to &lt;a href="http://www.eclipse.org/dsdp/mtj/"&gt;Eclipse Mobile Tools for Java (MTJ)&lt;/a&gt;, even though it has not reached v1.0.&lt;br /&gt;&lt;br /&gt;Eclipse MTJ is the official &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt; plugin for Java ME (J2ME) development. I was started several years ago, but did for some unknown reason never took off. On the other hand, EclipseME, developed by Craig Setera, was actively developed. I must say that I am impressed by the work Craig has done with EclipseME. Fortunately foundation did something about the situation with Eclipse MTJ; they started "from scratch" with the source code. They imported the EclipseME code into the Eclipse MTJ project, which replaced the old code.&lt;br /&gt;&lt;br /&gt;You might wonder what are the reasons for using the Eclipse MTJ. First of all I have not had any problems with the pre-verification since I upgraded, which save me a lot of time. There are numerous bugs that has been removed, and the environment feels more stable. Another reason is that all of the Java ME specific menus is easier to access. For example; the Java ME project wizard is accessible at the same level a standard Java project. I believe that it is important to support great open source project like this. One of the best way to do so, is by using it and providing feedback.&lt;br /&gt;&lt;br /&gt;For those of you that already have EclipseME installed I recommend the article &lt;a href="http://eclipseme.org/blog/2008/10/19/converting-from-eclipseme-to-mobile-tools-for-java/"&gt;"Converting to Eclipse Mobile Tools for Java"&lt;/a&gt;.  The rest of the bunch could use the same article, but skip the migration part.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-5170692626193149365?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/5170692626193149365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=5170692626193149365' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/5170692626193149365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/5170692626193149365'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2008/11/using-eclipse-mt-for-java-me-j2me.html' title='Using Eclipse MTJ for Java ME (J2ME) Development'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-1229672588958313173</id><published>2008-11-08T20:40:00.006+01:00</published><updated>2008-11-08T21:30:09.874+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microproperties'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsuite'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><category scheme='http://www.blogger.com/atom/ns#' term='Microinstall'/><title type='text'>How I Created the Microsuite Website with Google Sites</title><content type='html'>I have been thinking about creating the &lt;a href="http://www.microsuite.org/"&gt;Microsuite website&lt;/a&gt; for a long time. In fact it was several months ago that I registered the domain &lt;a href="http://microsuite.org/"&gt;microsuite.org&lt;/a&gt;. The thing is that it does not amuse me very much to create websites. The latest couple of months has been filled with a lot of more interesting stuff. It has been very hard for me to prioritize between all the projects that I am involved in. There are still a lot of work with &lt;a href="http://microlog.microsuite.org/"&gt;Microlog&lt;/a&gt;, there are many ideas that I want to try out for &lt;a href="http://microinstall.microsuite.org/"&gt;Microinstall&lt;/a&gt;, and I also want to be an active part of the &lt;a href="http://code.google.com/p/voxtr/"&gt;Voxtr&lt;/a&gt; project. So on, and so fourth.&lt;br /&gt;&lt;br /&gt;Just the other day I ran across &lt;a href="http://sites.google.com/"&gt;Google Sites&lt;/a&gt;. It is a service that is built on top of a wiki software, formerly known as &lt;a href="http://www.jot.com/wiki/wiki-overview.php"&gt;JotSpot&lt;/a&gt;. But you do not need to know any HTML at all :) At least that is what they claim on the Google site information pages. So this seemed like a perfect choice for me. I already knew what information I wanted to put on the site, so it was merely some hard work that was ahead of me. My experience it that computer related stuff does not always takes the time you wish it would do. Most of the time it takes much longer than expected, at least when you try something new. To my surprise this was an exception. I spent only one evening creating the first version. Rather nice!&lt;br /&gt;&lt;br /&gt;For those of you that has not visited the Microsuite website, I can tell you a little bit about what it is. The Microsuite is a collection of the Micro projects that I am involved in. To this date they are; Microlog, Microinstall &amp;amp; Microproperties. Microlog is a logging tool for Java ME developers. Microinstall consists of some small classes that makes it easy to distribute your MIDlet(s). The Microproperties project has not yet delivered any code, but the intention is to create a good properties framework for Java ME. The plan is to create the code from scratch, with some inspiration from the properties classes found in Microlog. Please visit the &lt;a href="http://www.microsuite.org/"&gt;Microsuite website&lt;/a&gt; to find out more about the different projects that are part of Microsuite.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-1229672588958313173?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/1229672588958313173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=1229672588958313173' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/1229672588958313173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/1229672588958313173'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2008/11/how-i-created-microsuite-website-with.html' title='How I Created the Microsuite Website with Google Sites'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-5913648912643603981</id><published>2008-11-05T17:11:00.006+01:00</published><updated>2008-11-09T12:31:34.356+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Java ME'/><title type='text'>Blog Post on Mobile &amp; Embedded Community</title><content type='html'>I am proud and happy to announce that  my blog post "&lt;a href="http://myossdevblog.blogspot.com/2008/11/upgrading-voxtr-with-microlog.html"&gt;Upgrading Voxtr with Microlog&lt;/a&gt;" has been featured on the &lt;a href="http://community.java.net/mobileandembedded/"&gt;Mobile and Embedded Community&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://community.java.net/mobileandembedded/"&gt;Mobile and Embedded Community&lt;/a&gt; is a Java ME community for us developers. It consists of &lt;a href="http://forums.java.net/jive/index.jspa?categoryID=55"&gt;forums&lt;/a&gt;, &lt;a href="http://community.java.net/mobileandembedded/blogs.csp"&gt;blogs&lt;/a&gt;, some interesting &lt;a href="http://today.java.net/pub/ct/mobileandembedded"&gt;podcasts&lt;/a&gt; etc. There is also a lot of open source &lt;a href="https://mobileandembedded.dev.java.net/"&gt;projects&lt;/a&gt;. I regularly visit the forums and the blogs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-5913648912643603981?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/5913648912643603981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=5913648912643603981' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/5913648912643603981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/5913648912643603981'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2008/11/blog-post-on-mobile-embedded-community.html' title='Blog Post on Mobile &amp; Embedded Community'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-8141286032086764106</id><published>2008-11-03T21:38:00.007+01:00</published><updated>2008-11-04T08:57:55.243+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java ME'/><title type='text'>LWUIT Makeover demo</title><content type='html'>Ever since I heard about &lt;a href="https://lwuit.dev.java.net/"&gt;LWUIT&lt;/a&gt; for the first time, I have been following its progress. The LWUIT toolkit is an alternative to &lt;a href="http://en.wikipedia.org/wiki/Mobile_Information_Device_Profile"&gt;LCDUI&lt;/a&gt;. It is inspired by &lt;a href="http://en.wikipedia.org/wiki/Java_Swing"&gt;Swing&lt;/a&gt;, but is not a port of Swing. If you are looking for a port of Swing, take a look at &lt;a href="http://jcp.org/en/jsr/detail?id=209"&gt;JSR-209 "Advanced Graphics and User Interface Optional Package for J2ME Platform"&lt;/a&gt;. I have not heard of any phone that implements JSR-209, but the &lt;a href="http://en.wikipedia.org/wiki/SavaJe"&gt;SavaJE phone&lt;/a&gt;, which is not in production. But LWUIT is reality today. Since I consider myself as a fluent writer in Swing-lish, it was easy for me to get started with LWUIT. But I must admit that I have not done any real projects with LWUIT yet, but I have tried it out. It looks rather promising. Today I noticed a new &lt;a href="http://lwuit.blogspot.com/2008/10/makeover-demo-on-actual-device.html"&gt;LWUIT demo&lt;/a&gt; that was rather impressive.&lt;br /&gt;&lt;br /&gt;What do you think about LWUIT?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-8141286032086764106?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/8141286032086764106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=8141286032086764106' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/8141286032086764106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/8141286032086764106'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2008/11/lwuit-makeover-demo.html' title='LWUIT Makeover demo'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-6725470535648881193</id><published>2008-11-01T09:48:00.009+01:00</published><updated>2008-11-03T10:22:48.593+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Java ME'/><category scheme='http://www.blogger.com/atom/ns#' term='Voxtr'/><title type='text'>Upgrading Voxtr with Microlog</title><content type='html'>What a sin! I am involved in the &lt;a href="http://code.google.com/p/voxtr/"&gt;Voxtr&lt;/a&gt; open source project. The initial code was not made by me, so I found those awful &lt;code&gt;System.out.println()&lt;/code&gt; statements. But fear no more; The Voxtr has been upgraded with &lt;a href="http://microlog.sourceforge.net/"&gt;Microlog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I would like to take the opportunity to describe how simple it is to use Microlog. First of all you must &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=138008&amp;amp;package_id=277155"&gt;download Microlog&lt;/a&gt;. Next up is to unzip the file that you downloaded. The included &lt;code&gt;microlog.jar&lt;/code&gt; must be copied to your project and added to your buildpath. How this is done, depends on your development enviroment.&lt;br /&gt;&lt;br /&gt;The second step is to setup Microlog. I prefer to use a properties file. The biggest advantage is that you do not need to change any code when you want to change your Microlog settings.  Use the supplied file that is called &lt;code&gt;microlog.properties&lt;/code&gt;. Copy this to the source root of your project or to your resource folder if you have one. To configure Microlog using the properties file you add the following code to your main class, which in most cases is the MIDlet class. The setup code looks like this:&lt;br /&gt;&lt;pre&gt;Properties properties = new Properties();&lt;br /&gt;log.configure(properties);&lt;br /&gt;&lt;/pre&gt;Microlog is now configured according to the settings in your microlog.properties file. In each class that you like to do some logging, you add the following code:&lt;br /&gt;&lt;pre&gt;private final static Logger log = Logger.getLogger();&lt;br /&gt;&lt;br /&gt;public void someMethod(){&lt;br /&gt;// Do the actual logging&lt;br /&gt;log.debug("MicroLog is working!");&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-family:monospace;"&gt; &lt;/span&gt;That is it! Insert logging statements where you would normally put &lt;code&gt;System.out.println()&lt;/code&gt; statements.&lt;br /&gt;&lt;br /&gt;What good is all the logging if you do not know how to view the log? In this example, the logging is done in two destinations. The &lt;code&gt;ConsoleAppender&lt;/code&gt; outputs to the same place all your &lt;code&gt;System.out.println()&lt;/code&gt; would go. If you run your MIDlet in the emulator, the output is shown in some kind of console. In Eclipse, this is the "Console" view. The second output destination is the recordstore. To view it you use the &lt;code&gt;RecordStoreLogViewer&lt;/code&gt;. Add the &lt;code&gt;RecordStoreLogViewer&lt;/code&gt; MIDlet to the JAD file. When you have executed your main MIDlet, it is just a matter of switching to the &lt;code&gt;RecordStoreLogViewer&lt;/code&gt; MIDlet. Select the "Load" item in the menu and the log is loaded on the screen. The image below shows the &lt;code&gt;RecordStoreLogViewer&lt;/code&gt; with Voxtr log data.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_w7OU_FVnMiE/SQwRg1fgCuI/AAAAAAAAAGo/pZNJsjOoe7g/s1600-h/VoxtrLogView1.JPG"&gt;&lt;img style="cursor: pointer; width: 240px; height: 320px;" src="http://2.bp.blogspot.com/_w7OU_FVnMiE/SQwRg1fgCuI/AAAAAAAAAGo/pZNJsjOoe7g/s320/VoxtrLogView1.JPG" alt="" id="BLOGGER_PHOTO_ID_5263601320301955810" border="0" /&gt;&lt;/a&gt;&lt;/pre&gt;&lt;br /&gt;What I have shown here is the setup that I recommend that you start with. The &lt;code&gt;ConsoleAppender&lt;/code&gt; is good when using the emulator, and the &lt;code&gt;RecordStoreAppender&lt;/code&gt; is good when executing on the target device. This is the default settings in the supplied &lt;code&gt;microlog.properties&lt;/code&gt; file. When it is time to do field test, or similar, it is recommended that you start using one of the off-device appenders, for example the &lt;code&gt;MMSAppender&lt;/code&gt;. The &lt;code&gt;MMSAppender&lt;/code&gt; could be used to send MMS and/or e-mails to the addresses of your choice. Other choices are the Amazon S3 appenders which I have blogged about &lt;a href="http://myossdevblog.blogspot.com/2008/10/using-amazon-s3-in-different-way.html"&gt;earlier&lt;/a&gt;. I will not go into more details about the off-device appenders right now, I will save it for later. Stay tuned!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-6725470535648881193?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/6725470535648881193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=6725470535648881193' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/6725470535648881193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/6725470535648881193'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2008/11/upgrading-voxtr-with-microlog.html' title='Upgrading Voxtr with Microlog'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_w7OU_FVnMiE/SQwRg1fgCuI/AAAAAAAAAGo/pZNJsjOoe7g/s72-c/VoxtrLogView1.JPG' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-2364234155286675870</id><published>2008-10-30T22:06:00.006+01:00</published><updated>2008-11-11T18:21:05.296+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><title type='text'>New Snapshot Version of Microlog is Available</title><content type='html'>The &lt;a href="http://microlog.sourceforge.net/"&gt;Microlog&lt;/a&gt; project is as vivid as ever. A lot of things are improving at the moment. It is time for you to try it out.&lt;br /&gt;&lt;br /&gt;Important updates:&lt;br /&gt;* CLDC 1.0 compliant, except for the PatternFormatter class. Use the source code version to use Microlog with CLDC 1.0. The binary variant of Microlog is compiled with CLDC 1.1&lt;br /&gt;* MIDP 1.0 compliant.&lt;br /&gt;* Performance improvements.&lt;br /&gt;* Microlog4SPOT code is now merged. It is now possible to use Microlog for Sun SPOT devices.&lt;br /&gt;* The Microlog instrumentation tool is now available. This let you log things like the line number in your code.&lt;br /&gt;&lt;br /&gt;Please download and provide us feedback!&lt;br /&gt;&lt;br /&gt;Download &lt;a href="https://sourceforge.net/project/showfiles.php?group_id=138008&amp;amp;package_id=292008&amp;amp;release_id=637082"&gt;Microlog snapshot&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-2364234155286675870?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/2364234155286675870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=2364234155286675870' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/2364234155286675870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/2364234155286675870'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2008/10/new-snapshot-version-of-microlog-is.html' title='New Snapshot Version of Microlog is Available'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-8920453657321658494</id><published>2008-10-30T18:59:00.003+01:00</published><updated>2008-10-30T19:03:24.694+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Java ME'/><title type='text'>Using Amazon S3 in a Different Way</title><content type='html'>You might have heard about &lt;a href="http://aws.amazon.com/s3/"&gt;Amazon S3&lt;/a&gt;, which stands for Amazon Simple Storage Service. Most people use it for backup. I will tell you a story about how I found a different way to use Amazon S3.&lt;br /&gt;&lt;br /&gt;During the summer I felt a deep urge to implement a &lt;a href="http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/jdbc/JDBCAppender.html"&gt;JDBCAppender&lt;/a&gt; for &lt;a href="http://microlog.sourceforge.net/"&gt;Microlog&lt;/a&gt;, like the JDBCAppender found in &lt;a href="http://logging.apache.org/log4j/1.2/index.html"&gt;Log4j&lt;/a&gt;. In situations when the on-device logging is insufficient, this would give the developer a chance to log into a database. When searching the Internet I found less than a handful of &lt;a href="http://en.wikipedia.org/wiki/Java_Database_Connectivity"&gt;JDBC&lt;/a&gt; implementations for Java ME with CLDC. Most implementation for Java ME devices was CDC compliant. Another problem was that I was to lazy to setup a database. Last but not least, my knowledge of JDBC was a little bit weak since I had not done any JDBC programming for many years. Soo my initial urge was gone like the wind.&lt;br /&gt;&lt;br /&gt;But still I felt that there was a need for off-device logging in Microlog. How about Amazon S3? Could it work? Since Amazon S3 could be accessed with &lt;a href="http://en.wikipedia.org/wiki/Representational_State_Transfer"&gt;REST&lt;/a&gt; and/or &lt;a href="http://en.wikipedia.org/wiki/SOAP_%28protocol%29"&gt;SOAP&lt;/a&gt;, it should be possible to access it from Java ME. The developer resources for Amazon S3 are rather good, and it came as no suprise to find a &lt;a href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=816"&gt;J2ME Toolkit for Amazon S3&lt;/a&gt;. This was perfect for me since it was open source, and is using the Apache License 2.0. This is the same as we use for Microlog.&lt;br /&gt;&lt;br /&gt;I coded two appenders for Amazon S3; the S3FileAppender and the S3BufferAppender. The S3FileAppender logs to file. When the file reaches a certain size and/or you log at a specified level, the file is copied to your S3 account. The S3BufferAppender logs to memory instead of a file. This is useful for applications that do not have access to &lt;a href="http://jcp.org/en/jsr/detail?id=75"&gt;JSR-75&lt;/a&gt;, i.e. file access.&lt;br /&gt;&lt;br /&gt;But how do you use the S3 logging capabilities of Microlog? It is dead simple. The code look like this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public S3FileLogMidlet() {&lt;br /&gt;   S3FileAppender appender = new S3FileAppender();&lt;br /&gt;   // You must set the accessKeyID &amp;amp; secretAccessKey in order for this to work.&lt;br /&gt;   // For more information, see your Amazon account.&lt;br /&gt;   appender.setAccesKeyID("accessKeyID");&lt;br /&gt;   appender.setSecretAccessKey("secretAccessKey");&lt;br /&gt;   log.addAppender(appender);&lt;br /&gt;   log.setLogLevel(Level.DEBUG);&lt;br /&gt;   log.info("Setup of log finished");&lt;br /&gt;&lt;br /&gt;   log.error("This error message shall trigger file =&gt; S3.");&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;As you can see, you need to insert an access key id and a secret access key. These are obtained from the &lt;a href="http://aws.amazon.com/"&gt;Amazon AWS&lt;/a&gt; pages. If you have ever bought something on Amazon, you already have an account. The only thing that you have to do is to active the AWS service. When you do this you could access these auto-generated codes. Copy and paste them into your code. A word of caution. Be aware that if you somehow loose your mobile device or your account details, you have to change your codes at Amazon AWS. Another solution would be that you enter these codes when starting your MIDlet or that you store them encrypted in a file. But do not say I did not warn you!&lt;br /&gt;&lt;br /&gt;The rest of the code is simpe. The appender is added to the logger and the log level is set to DEBUG. The S3FileAppender is by default set to send the file to the S3 server when an ERROR or FATAL message is logged, or when the file is to big. But if you like to send the file only when the file is big this is possible as well. It should be noted that this setup could also be done in a properties file. Please take a look at the Microlog documentation for more details on the different setup options that are available.&lt;br /&gt;&lt;br /&gt;When you have compiled and transferred your MIDlet to your device, the logs will be saved on your Amazon account. I use the &lt;a href="http://www.jungledisk.com/"&gt;Jungle Disk&lt;/a&gt; application to mount a virtual drive. The logging file will be accessible in your Microlog folder. It is as simple as that. The Jungle Disk application is available for $20 for the version that I use. There are nearly a zillion &lt;a href="http://aws.amazon.com/solutions/aws-solutions/"&gt;solutions for Amazon S3&lt;/a&gt;, and one of those will fit your purposes.&lt;br /&gt;&lt;br /&gt;The benefits of using Amazon S3 for Microlog are many;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;No need to spend time on setup and maintenance of a database. This will save many $ for you.&lt;/li&gt;&lt;li&gt;It is cheap to store the logs at Amazon S3. Even if you log huge amount of Microlog data, it will be very cheap. For example; let's say you store 1 GB of Microlog data. That would cost you $0.20 for the transfer and $ 0.15 if you save it on the server for a month.  I believe that under normal circumstances you do not store it for that long.&lt;/li&gt;&lt;li&gt;No need for JDBC knowledge. You only need to learn how to use Microlog.&lt;/li&gt;&lt;li&gt;Focus on the development.&lt;/li&gt;&lt;/ul&gt;The only drawback is that the security could be an issue. However as explained, there are workarounds for this problem.&lt;br /&gt;&lt;br /&gt;I would like so say some words about the future of S3 logging in Microlog. There is room for improvements. For example, I think it would be useful to log several users log files. As it is now, the S3 appenders are only for a single user. Of course there are other improvements, some of which I am unaware of. Maybe YOU are the one that could help me improve Microlog? Please use the &lt;a href="http://sourceforge.net/forum/?group_id=138008"&gt;Microlog forums&lt;/a&gt; if you have any suggestions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-8920453657321658494?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/8920453657321658494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=8920453657321658494' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/8920453657321658494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/8920453657321658494'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2008/10/using-amazon-s3-in-different-way.html' title='Using Amazon S3 in a Different Way'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-5924970744423883183</id><published>2008-10-30T17:00:00.000+01:00</published><updated>2008-10-30T14:58:48.086+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Java ME'/><title type='text'>Install MIDlet on a Motorola C380</title><content type='html'>Yesterday I had some problems when installing a MIDlet on a &lt;a href="http://developer.motorola.com/products/handsets/archive/c380/"&gt;Motorola C380&lt;/a&gt;. Before doing this I believed that this was something I could do fast and easy. As it turned out, this was not the case. Here is the story.&lt;br /&gt;&lt;br /&gt;As in all good cooking programs I had prepared myself. The document "Java ME Developer Guide for Motorola OS" seemed to be the right one. It describe the following ways of downloading a MIDlet to your mobile device;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;OTA (Over The Air)&lt;/li&gt;&lt;li&gt;Bluetooth&lt;/li&gt;&lt;li&gt;IrDA&lt;/li&gt;&lt;li&gt;USB Cable&lt;/li&gt;&lt;/ol&gt;These are all standard ways of downloading a MIDlet. Using OTA for downloading from my laptop would imply to much works, so one of the other ways should be used in this case. Hmmm... Bluetooth should do the trick. Looking through all the menus, but no Bluetooth settings. The specification for the C380 confirmed this. IrDA was not possible either, since my laptop does not have an IrDA port. Lets try to use the USB cable then. Nice that Motorola devices uses a standard USB mini cable. My desktop is full of different brand specific USB cables. I wish that all manufacturers would use standard USB cables, which could simplify things for me.&lt;br /&gt;&lt;br /&gt;I used the brute force method for USB connections. Attach the mobile device through USB to your computer, and see if Windows figures out which drivers to install. My Windows Vista installation did not. But I was a little bit surprised when Windows Vista suggested that I should download the &lt;a href="http://developer.motorola.com/docstools/USB_Drivers/Handset_USB_Driver/"&gt;Motorola Device Drivers&lt;/a&gt;. The link worked and within minutes the device drivers where downloaded.The documentation described a tool called MIDway which could be used for downloading MIDlets to your mobile. This was possible if you could find the "Java App Loader" in the Java menu on your mobile device. It was written that the "Java App Loader" is NOT available on devices that you buy  from a standard consumer outlet. You should use the MWay tool found in &lt;a href="http://developer.motorola.com/docstools/motodevstudio/javame/"&gt;Motorola MOTODev Studio for Java ME V2 &lt;/a&gt; instead. No problem, it was only a "small" download about the size of 112 MB. Estimated download time; 1 h 30 min. This gave me time to be a little bit social with my family. What a bummer :)&lt;br /&gt;&lt;br /&gt;I installed the device drivers and Motorola MOTODev Studio. This worked like a charm. I attached my mobile device through USB and now it worked. The device manager showed that a Motorola US modem was installed, as well as some other devices. Now it was time to start MOTODev Studio. Surprise! The MOTODev Studio is &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt; in disguise. Me like a lot! I found a document about &lt;a href="http://developer.motorola.com/docstools/technicalarticles/Motorolas_MWay_Tool/"&gt;Motorolas MWay Tool v1.0&lt;/a&gt;, which was the tool that I was supposed to use.  The first step was to find the configuration tool, the second was to activate the "Java App Loader" menu. But wait... the other document stated that this was not available on mobile phone purchased in the consumer market. Appearently it was possible. After restarting the phone the menu was finally available. Connected the phone once more and used the deployment tool to install the MIDlet. Rather easy once you figured it out. But it took quite some time; I started right after the dinner at five and finished about eleven.&lt;br /&gt;&lt;br /&gt;I now comes the short version, the version that you could use and save yourself a lot of time.&lt;br /&gt;&lt;br /&gt;Prerequisites&lt;br /&gt;Some kind of Windows environment. Windows Vista worked for me.&lt;br /&gt;&lt;br /&gt;Preparations&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download the Motorola device drivers&lt;/li&gt;&lt;li&gt;Download the MOTODev Studio. &lt;/li&gt;&lt;li&gt;Optional; if you have a slow Internet connection you could take a long coffee break, watch a movie or something.&lt;/li&gt;&lt;/ol&gt;The real stuff&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Install the device drivers&lt;/li&gt;&lt;li&gt;Install MOTODev Studio.&lt;/li&gt;&lt;li&gt;Connect your Motorola mobile phone. Wait for Windows to do the installation of the drivers.&lt;/li&gt;&lt;li&gt;Start MOTODev studio.&lt;/li&gt;&lt;li&gt;Open the "JavaME" view and select the "Tools" tab.&lt;/li&gt;&lt;li&gt;Select the "Config tool".&lt;/li&gt;&lt;li&gt;Refresh the "Config Tool" and you it should now show some information such as IMEI number etc.&lt;/li&gt;&lt;li&gt;Select the "JAL" option (short for "Java App Loader").&lt;/li&gt;&lt;li&gt;Disconnect your mobile device and restart it.&lt;/li&gt;&lt;li&gt;Choose the "Java Settings" menu found in the settings menu. Select the "Java App Loader". You are now prompted to connect your mobile device. The mobile device should confirm that your JAL link is active.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Select the "Deployment Tool". This is also found under the "Tools" tab.&lt;/li&gt;&lt;li&gt;Select the JAD file that you want to transfer. The JAR file shall be in the same directory.&lt;/li&gt;&lt;li&gt;Select the COM port for your Motorola USB modem. This is found Windows device manager.&lt;/li&gt;&lt;li&gt;Press the "Deploy" icon found in the upper right corner of the "Deployment Tool" view.&lt;/li&gt;&lt;li&gt;Accept the download on your mobile device. Follow the instructions on the mobile device.&lt;/li&gt;&lt;/ol&gt;You should now be executing your own MIDlet on your mobile device. I tried it on the Motorola C380, but this should be applicable on other Motorola devices as well. Good luck!&lt;br /&gt;&lt;br /&gt;I hope that you could save an hour or two when using this guide. Unfortunately you have to download a couple of megabytes, but hopefully you have a faster Internet connection than I have. If you have any problems, you could still use the &lt;a href="http://developer.motorola.com/docstools/technicalarticles/Motorolas_MWay_Tool/"&gt;Motorolas MWay Tool v1.0&lt;/a&gt; document to figure out how to do it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-5924970744423883183?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/5924970744423883183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=5924970744423883183' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/5924970744423883183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/5924970744423883183'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2008/10/install-midlet-on-motorola-c380.html' title='Install MIDlet on a Motorola C380'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-1989100786718800091</id><published>2008-10-24T16:46:00.000+02:00</published><updated>2008-10-28T19:22:37.893+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microlog'/><category scheme='http://www.blogger.com/atom/ns#' term='Microinstall'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Java ME'/><category scheme='http://www.blogger.com/atom/ns#' term='Voxtr'/><title type='text'>Open Source Software Development; Microlog, Microinstall &amp; Voxtr</title><content type='html'>A couple of years ago I started my first Open Source project; &lt;a href="http://microlog.sourceforge.net/"&gt;Microlog&lt;/a&gt;. This was an attempt to make something similar to &lt;a href="http://logging.apache.org/log4j/"&gt;Log4j&lt;/a&gt;. At that time I was new to Java ME programming. What I wanted was a really simple, but yet powerful logging tool. I started from scratch and within a couple of hours I did have something that I liked. For some reason it just felt right; I wanted to release it as Open Source. Said and done! I also showed it to some of my colleagues and got some feedback. My colleague Darius suggested that I would make the setup of Microlog very simple. Before I knew it, he had contributed with some code for the setup. After that he joined the project. Since I believe in &lt;a href="http://www.catb.org/%7Eesr/writings/cathedral-bazaar/cathedral-bazaar/ar01s04.html"&gt;"Release early, release often."&lt;/a&gt; I released a couple of small releases rather quickly.&lt;br /&gt;&lt;br /&gt;During the years that have gone since then, I have from time to time taken a look at the &lt;a href="http://sourceforge.net/projects/microlog/"&gt;Microlog project site&lt;/a&gt;. The statistics showed that there was a fair amount of downloads. But there was no activity in the forums. Nada, zero, null! :( Since I was not involved in any Java ME development project, there was no natural reason to use Microlog, nor updating the code.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But then there came an e-mail from a developer who wanted to contribute with some code. Wow! Somebody thinks that Microlog has some potential. A couple of days later another person wanted to contribute, and join the project. This was Karsten who now is our Maven specialist in the Microlog team. During the spring and the summer I and the rest of the team has been working very hard to get out the first "real release", i.e. V1.0. We also replaced our old static homepage with an autogenerated site by Maven. During this period we finally got some action in the forums :) Thank you all for the great feedback I have received, this is really motivating me to continue with Microlog.&lt;br /&gt;&lt;br /&gt;I have heard many people complain about long URLs that you have to enter to download a MIDlet. Of course you can download the MIDlet to your computer, and then transfer it to your device. Both ways are rather tedious ways of doing the installation of a MIDlet. Therefore I started to think about different ways to distribute MIDlets. My experiments are now available for you to take a look at. Please visit the &lt;a href="http://sourceforge.net/projects/microinstall/"&gt;Microinstall project page&lt;/a&gt; site for more information.&lt;br /&gt;&lt;br /&gt;I am the co-founder of the &lt;a href="http://code.google.com/p/voxtr/"&gt;Voxtr&lt;/a&gt; project. This is a simple voice recorder MIDlet. Since I have a hard time to remember things, it is very practical for me to take "voice notes". No need to find a pen and paper or use that hard-to-use-notepad-application that is bundled on your mobile phone.&lt;br /&gt;&lt;br /&gt;That is all for now folks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7396059659723667740-1989100786718800091?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/1989100786718800091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=1989100786718800091' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/1989100786718800091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/1989100786718800091'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2008/10/open-source-software-development.html' title='Open Source Software Development; Microlog, Microinstall &amp; Voxtr'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7396059659723667740.post-6289204041656863901</id><published>2008-10-23T19:45:00.002+02:00</published><updated>2008-10-28T22:05:04.152+01:00</updated><title type='text'>My First Blogpost :)</title><content type='html'>This is my first ever blogpost in the history of cyberspace. My wife has been nagging me for not blogging, since she has been a frequent blogger for nearly 2 years now. But as they say; better late than never.&lt;br /&gt;&lt;br /&gt;To motivate me I have decided what to blog about. Something that really interests me, that inspires me to write regularly about. I have found a couple of things that I plan to blog about. These are (in no particular order):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Interesting Open Source Projects, e.g. tools that I use.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The Open Source projects that I am involved in. News and stuff.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Experiences from my life as an (Open Source) developer.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Of course there will be other subjects to write about, but this is at least the things that I feel I have something to write about. I hope that I will have time to write regularly and that somebody will find my blogging of somewhat interesting.&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/7396059659723667740-6289204041656863901?l=myossdevblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myossdevblog.blogspot.com/feeds/6289204041656863901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7396059659723667740&amp;postID=6289204041656863901' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/6289204041656863901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7396059659723667740/posts/default/6289204041656863901'/><link rel='alternate' type='text/html' href='http://myossdevblog.blogspot.com/2008/10/my-first-blogpost.html' title='My First Blogpost :)'/><author><name>My Open Source Software Development Blog</name><uri>http://www.blogger.com/profile/03159373258525179787</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://4.bp.blogspot.com/_w7OU_FVnMiE/SQQ41x7WNyI/AAAAAAAAAF8/6mQ0QWFpvFg/S220/DSCN2278.JPG'/></author><thr:total>1</thr:total></entry></feed>
