<?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-9111187678523218809</id><updated>2012-01-23T11:27:38.789+01:00</updated><category term='feeds'/><category term='rcp'/><category term='android'/><category term='obfuscation'/><category term='live wallpaper'/><category term='obfuscate4e'/><category term='javascript'/><category term='java'/><category term='eidle'/><category term='plugin'/><category term='minesweeper'/><category term='market'/><category term='ActionBar'/><category term='mines'/><category term='eclipse'/><category term='screensaver'/><category term='proguard'/><category term='game'/><category term='pde'/><category term='greasemonkey'/><category term='eclipe'/><category term='Google'/><title type='text'>code adventures</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://devisnik.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://devisnik.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Volker</name><uri>http://www.blogger.com/profile/14389812660220268153</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>22</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9111187678523218809.post-1742853664093377552</id><published>2012-01-23T11:27:00.000+01:00</published><updated>2012-01-23T11:27:38.795+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='android'/><category scheme='http://www.blogger.com/atom/ns#' term='ActionBar'/><title type='text'>ActionBar support</title><content type='html'>With Ice Cream Sandwich being on the rise now there is really no excuse for not supporting the ActionBar UI pattern anymore, even if you don't support a tablet version of your app. There are quite a few projects out there to help you with that. &lt;br /&gt;&lt;br /&gt;Basic support is easily added thanks to the &lt;b&gt;ActionBarCompat&lt;/b&gt; sample project that comes with the SDK. You can just copy that over into your project and have a consistent action bar (although very limited) across all Android versions.&lt;br /&gt;It is also a nice example of how to abstract out platform-specific code. And consisting only of a couple of classes it is easy to understand and tweak. There is one little thing you should be aware of, though. The Home button is disabled in Ice Cream Sandwich by default, as described in this &lt;a href="http://stackoverflow.com/questions/8028197/actionbarcompat-app-icon-action-click-not-working-on-4-0-devices"&gt;stackoverflow question&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;For more complete action bar support have a look at &lt;a href="http://actionbarsherlock.com/"&gt;ActionBarSherlock&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9111187678523218809-1742853664093377552?l=devisnik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devisnik.blogspot.com/feeds/1742853664093377552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9111187678523218809&amp;postID=1742853664093377552' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/1742853664093377552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/1742853664093377552'/><link rel='alternate' type='text/html' href='http://devisnik.blogspot.com/2012/01/actionbar-support.html' title='ActionBar support'/><author><name>Volker</name><uri>http://www.blogger.com/profile/14389812660220268153</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9111187678523218809.post-6554926464774043130</id><published>2011-12-18T19:31:00.000+01:00</published><updated>2011-12-18T19:31:04.129+01:00</updated><title type='text'>Keep track of your App's Market data</title><content type='html'>If you maintain any Apps in the Android Market then you have probably come across questions like &lt;br /&gt;&lt;blockquote&gt;"How many downloads did the app have last week/month/year...?"&lt;br /&gt;&lt;/blockquote&gt;or &lt;br /&gt;&lt;blockquote&gt;"Did the ratings improve since the last update?"&lt;br /&gt;&lt;/blockquote&gt;It's not easy to answer those questions since the Android Market's Developer console only gives you the current data. (There is statistics for active installs though.) So you have to keep track of these data yourself. &lt;br /&gt;I found it quite tedious to do this by hand, so I built a little (Java) Selenium test that grabs the data and writes it to disk. Happily, it even runs headless, and can thus be easily put into the cloud. Lately, I fixed it up and put it on &lt;a href="https://github.com/devisnik/AndroidMarketArchiver"&gt;github&lt;/a&gt;. Hopefully this saves you some time, too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9111187678523218809-6554926464774043130?l=devisnik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devisnik.blogspot.com/feeds/6554926464774043130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9111187678523218809&amp;postID=6554926464774043130' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/6554926464774043130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/6554926464774043130'/><link rel='alternate' type='text/html' href='http://devisnik.blogspot.com/2011/12/keep-track-of-your-apps-market-data.html' title='Keep track of your App&apos;s Market data'/><author><name>Volker</name><uri>http://www.blogger.com/profile/14389812660220268153</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9111187678523218809.post-1889936033483867707</id><published>2011-02-25T10:38:00.000+01:00</published><updated>2011-02-25T10:38:11.047+01:00</updated><title type='text'>Wallpaper still does not open</title><content type='html'>Lately, my &lt;a href="https://market.android.com/details?id=de.devisnik.android.sliding"&gt;Slider Live Wallpaper&lt;/a&gt; was "awarded" with a one-star rating again. The comment stated &lt;br /&gt;&lt;blockquote&gt;"It wont even let me open it."&lt;/blockquote&gt;I've blogged about this problem&amp;nbsp;&lt;a href="http://devisnik.blogspot.com/2010/09/installing-wallpaper-should-be-easier.html"&gt;before&lt;/a&gt;&amp;nbsp;and now there is even an &lt;a href="http://code.google.com/p/android/issues/detail?id=11569"&gt;issue&lt;/a&gt; for it. As pointed out in the comments there you can work around this behavior by registering a special activity with the INFO category. This is what I'll do now.&amp;nbsp;&lt;a href="http://www.yougli.net/android/live-wallpaper-binding-an-activity-to-the-open-button-of-the-market/"&gt;Here&lt;/a&gt; is a good how-to. But, unfortunately, you can not trigger the wallpaper selection directly, so the best you can do is displaying the list of all the installed live wallpapers. This is still somewhat limited for my taste.&lt;br /&gt;&lt;br /&gt;So if anybody knows of a better way to handle this, please comment so that I can avoid above awards in the future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9111187678523218809-1889936033483867707?l=devisnik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devisnik.blogspot.com/feeds/1889936033483867707/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9111187678523218809&amp;postID=1889936033483867707' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/1889936033483867707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/1889936033483867707'/><link rel='alternate' type='text/html' href='http://devisnik.blogspot.com/2011/02/wallpaper-still-does-not-open.html' title='Wallpaper still does not open'/><author><name>Volker</name><uri>http://www.blogger.com/profile/14389812660220268153</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9111187678523218809.post-1843225928589024998</id><published>2010-09-29T12:10:00.000+02:00</published><updated>2010-09-29T12:10:00.682+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='live wallpaper'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Installing a wallpaper should be easier</title><content type='html'>Live wallpapers are great for showing off your Android phone, especially in an Android vs iPhone battle. Make sure to install "Show Off" from the market to be well-prepared.&lt;br /&gt;&lt;br /&gt;A while ago I've done my first own live wallpaper. It is called "Slider" and is basically a 15-puzzle-like tile animation of an image selectable from the phone's gallery. It hasn't gained much attention (downloads) though. I wonder if many people try out live wallpapers regularly. Guess not, probably stick with a good one after a while.&lt;br /&gt;&lt;br /&gt;Lately, I had a little email conversation with one (of the few) downloaders. It went like this:&lt;br /&gt;DL: "Does not work!"&lt;br /&gt;Me: "Could you explain..."&lt;br /&gt;DL: "Does not open!"&lt;br /&gt;Me: "Did you try HomeScreen&amp;gt;Menu&amp;gt;Wallpapers..."&lt;br /&gt;DL: "That's not the problem, can not open, only uninstall."&lt;br /&gt;Me: "Do any other live wallpapers work?"&lt;br /&gt;DL: "&gt;App will not open. no wallpapers at all. i do not know what do they look like. the app does not open..."&lt;br /&gt;Me: "Live wallpapers are not applications, so you can not open them. This is why the button "open" does not work.You start a wallpaper from the menu "wallpapers" of your homescreen..."&lt;br /&gt;&lt;br /&gt;This shows another problem with live wallpapers. Installing from the market is not as easy as it should be. I don't know why the "Open" button is just disabled, would be much better IMHO to at least let it open the list of installed wallpapers or the settings activity for the downloaded wallpaper. What do you think?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9111187678523218809-1843225928589024998?l=devisnik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devisnik.blogspot.com/feeds/1843225928589024998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9111187678523218809&amp;postID=1843225928589024998' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/1843225928589024998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/1843225928589024998'/><link rel='alternate' type='text/html' href='http://devisnik.blogspot.com/2010/09/installing-wallpaper-should-be-easier.html' title='Installing a wallpaper should be easier'/><author><name>Volker</name><uri>http://www.blogger.com/profile/14389812660220268153</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9111187678523218809.post-3216411361316070834</id><published>2010-09-13T10:31:00.001+02:00</published><updated>2010-09-13T10:48:51.460+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='minesweeper'/><category scheme='http://www.blogger.com/atom/ns#' term='mines'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android Market stats improvement suggestions</title><content type='html'>Lately, my minesweeper clone (called &lt;i&gt;Mines&lt;/i&gt;) passed 50 000 downloads in the Android market. I uploaded the first version of the game in August 2009, so it took quite a while to get there. My users seem to be quite happy with the game though, at least I don't get too many ratings like "Rubbish" or "Uninstalled" ;-) and the rating average is still above 4. Also, the active installs are still above 40 percent.&lt;br /&gt;Thinking of these numbers I came to realize that there are a couple of things I would like to know about the downloads/active installs but that is not provided by the market developer console.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I would like to have statistics over time.&lt;/li&gt;&lt;li&gt;I would like to filter over languages, would be great for comments/ratings also.&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;I would like to know how the game was found in the market.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;The developer console has evolved over the last year, at least you get error stack traces, comments, and ratings numbers now. But there is still a lot of room for improvement.&lt;/div&gt;&lt;div&gt;For now I built a Selenium Test that runs once a day to grab the current download/rating numbers. That should at least allow for some basic statistics on these numbers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9111187678523218809-3216411361316070834?l=devisnik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devisnik.blogspot.com/feeds/3216411361316070834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9111187678523218809&amp;postID=3216411361316070834' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/3216411361316070834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/3216411361316070834'/><link rel='alternate' type='text/html' href='http://devisnik.blogspot.com/2010/09/lately-my-minesweeper-clone-called.html' title='Android Market stats improvement suggestions'/><author><name>Volker</name><uri>http://www.blogger.com/profile/14389812660220268153</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9111187678523218809.post-2262695317758803340</id><published>2010-04-23T15:45:00.008+02:00</published><updated>2010-04-23T16:45:24.870+02:00</updated><title type='text'>Keep track of your android app stats</title><content type='html'>Lately, I fiddled around with the google gadget api again. One of the things I like to see on my igoogle page is the current stats of my android apps. &lt;a href="http://www.cyrket.com/"&gt;Cyrket&lt;/a&gt; provides all the relevant data, but their page is to big to fit into a gadget. So I wrote a little gadget that extracts the basic data (rating average, number of ratings, number of comments) and shows just that.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Here it is.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;script src="http://www.gmodules.com/ig/ifr?url=http://www.devisnik.de/gadgets/cyrketparser/gadget.xml&amp;amp;synd=open&amp;amp;w=320&amp;amp;h=200&amp;amp;title=Cyrket+Mines&amp;amp;border=http%3A%2F%2Fwww.gmodules.com%2Fig%2Fimages%2F&amp;amp;output=js"&gt;&lt;/script&gt;&lt;br /&gt;&lt;/div&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/9111187678523218809-2262695317758803340?l=devisnik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devisnik.blogspot.com/feeds/2262695317758803340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9111187678523218809&amp;postID=2262695317758803340' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/2262695317758803340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/2262695317758803340'/><link rel='alternate' type='text/html' href='http://devisnik.blogspot.com/2010/04/kepp-track-of-your-android-app-stats.html' title='Keep track of your android app stats'/><author><name>Volker</name><uri>http://www.blogger.com/profile/14389812660220268153</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9111187678523218809.post-3267217841683396049</id><published>2010-02-05T16:39:00.004+01:00</published><updated>2010-02-14T12:15:47.479+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='minesweeper'/><category scheme='http://www.blogger.com/atom/ns#' term='mines'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Mines - six months in the market</title><content type='html'>Mines, my little Minesweeper game, has been in the Android Market for six months now. And I am quite happy with its performance. It still rates above 4 out of 5 points and has been downloaded more than 20000 times. Most amazing to me is the number of active installs, which still is close to 50 percent. So more than 10000 copies are running somewhere in Android land.&lt;div&gt;&lt;br /&gt;&lt;div&gt;The game has been rated by more than 200 people. Unfortunately, Google's Market developer site does not give access to the ratings and comments. And the Market application on the phone just shows the comments for the phone's selected language. But there are solutions to this limitation, like &lt;a href="http://www.androlib.com/"&gt;AndroLib.com&lt;/a&gt; or &lt;a href="http://www.cyrket.com/"&gt;Cyrket.com&lt;/a&gt;, which allow you to access (hopefully) all comments. Cyrket just came back after having been offline for quite a while, and I was pleased to find out about my first polish comment, which did not show up on AndroLib.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I am still regularly working on the game in my sparetime, which is fun, especially with so many active users. So thanks to all the Mines users out there!&lt;/div&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/9111187678523218809-3267217841683396049?l=devisnik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devisnik.blogspot.com/feeds/3267217841683396049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9111187678523218809&amp;postID=3267217841683396049' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/3267217841683396049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/3267217841683396049'/><link rel='alternate' type='text/html' href='http://devisnik.blogspot.com/2010/02/mines-six-months-in-market.html' title='Mines - six months in the market'/><author><name>Volker</name><uri>http://www.blogger.com/profile/14389812660220268153</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9111187678523218809.post-8406898243667293059</id><published>2009-11-12T16:36:00.003+01:00</published><updated>2010-02-14T12:17:04.635+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Developer Pride</title><content type='html'>Visit this post at blogger to see the fancy animation at the top. Nice promo. ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9111187678523218809-8406898243667293059?l=devisnik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devisnik.blogspot.com/feeds/8406898243667293059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9111187678523218809&amp;postID=8406898243667293059' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/8406898243667293059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/8406898243667293059'/><link rel='alternate' type='text/html' href='http://devisnik.blogspot.com/2009/11/developer-pride.html' title='Developer Pride'/><author><name>Volker</name><uri>http://www.blogger.com/profile/14389812660220268153</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9111187678523218809.post-1913323638614650064</id><published>2009-08-05T08:24:00.004+02:00</published><updated>2009-08-05T08:47:03.270+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='minesweeper'/><category scheme='http://www.blogger.com/atom/ns#' term='market'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>Mines is in the Market</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_YcJwPxbtnvY/SnknkXnOlSI/AAAAAAAABc8/wTe68xMUiHY/s1600-h/android_mines_market_search2.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 214px; height: 320px;" src="http://3.bp.blogspot.com/_YcJwPxbtnvY/SnknkXnOlSI/AAAAAAAABc8/wTe68xMUiHY/s320/android_mines_market_search2.png" alt="" id="BLOGGER_PHOTO_ID_5366363936755979554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Mines, my &lt;a href="http://en.wikipedia.org/wiki/Minesweeper_%28computer_game%29"&gt;minesweeper&lt;/a&gt; clone for the &lt;a href="http://www.android.com/"&gt;Android&lt;/a&gt; platform finally made it into the &lt;a href="http://www.android.com/market/"&gt;Android market&lt;/a&gt;. It was a lot of work but mostly fun. I am not quite satisfied with the art works yet (though I tried my best), so if you want to help improve let me know.&lt;br /&gt;&lt;br /&gt;(Download count at the time of this writing: 839)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9111187678523218809-1913323638614650064?l=devisnik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devisnik.blogspot.com/feeds/1913323638614650064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9111187678523218809&amp;postID=1913323638614650064' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/1913323638614650064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/1913323638614650064'/><link rel='alternate' type='text/html' href='http://devisnik.blogspot.com/2009/08/mines-is-in-market.html' title='Mines is in the Market'/><author><name>Volker</name><uri>http://www.blogger.com/profile/14389812660220268153</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_YcJwPxbtnvY/SnknkXnOlSI/AAAAAAAABc8/wTe68xMUiHY/s72-c/android_mines_market_search2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9111187678523218809.post-9078654004365269056</id><published>2009-05-11T09:15:00.002+02:00</published><updated>2009-05-11T09:20:24.863+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><category scheme='http://www.blogger.com/atom/ns#' term='plugin'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='obfuscation'/><title type='text'>obfuscate4e 0.7.0 released</title><content type='html'>Just want to let you know that &lt;a href="http://obfuscate4e.partmaster.de/"&gt;obfuscate4e 0.7.0&lt;/a&gt; is now available to help you obfuscate your eclipse plugins. The hightlight of this release is automatic detection of classes referenced in extensions. This makes setting up your project for obfuscation a lot easier. So check it out!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9111187678523218809-9078654004365269056?l=devisnik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devisnik.blogspot.com/feeds/9078654004365269056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9111187678523218809&amp;postID=9078654004365269056' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/9078654004365269056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/9078654004365269056'/><link rel='alternate' type='text/html' href='http://devisnik.blogspot.com/2009/05/obfuscate4e-070-released.html' title='obfuscate4e 0.7.0 released'/><author><name>Volker</name><uri>http://www.blogger.com/profile/14389812660220268153</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9111187678523218809.post-4767125522059592047</id><published>2009-03-13T16:09:00.006+01:00</published><updated>2009-03-24T16:22:45.604+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='minesweeper'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android Minesweeper: Yes we can!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_YcJwPxbtnvY/Sbp9Wg4tM8I/AAAAAAAABZ0/zAWVVVtIizQ/s1600-h/android_mines_2.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 214px; height: 320px;" src="http://4.bp.blogspot.com/_YcJwPxbtnvY/Sbp9Wg4tM8I/AAAAAAAABZ0/zAWVVVtIizQ/s320/android_mines_2.png" alt="" id="BLOGGER_PHOTO_ID_5312696536175293378" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Thanks to my folks from &lt;a href="http://www.partmaster.de/"&gt;PartMaster&lt;/a&gt; I own a &lt;a href="http://android.brightstarcorp.com/"&gt;Android Dev Phone 1&lt;/a&gt; for a couple of weeks now. I am quite impressed by the Android platform, although the G1 is not quite as slick as the IPhone. But this definitely has a huge potential. Especially the extensiblity and openess are amazing.&lt;br /&gt;&lt;br /&gt;Coding for &lt;a href="http://www.android.com/"&gt;Android&lt;/a&gt; is no different from regular java, but it takes a while  to get to know the framework concepts and classes.  I chose to port the minesweeper code which I already use in &lt;a href="http://code.google.com/p/eidle/"&gt;eidle&lt;/a&gt;. Since I could reuse the model code as is, I had the basic game running within an hour and could then focus on the UI widgets, menus, preferences and lifecycle issues etc. This was really fun and ideal to get used to android. The application is not finished yet, but it is working smoothly already.&lt;br /&gt;&lt;br /&gt;Stay tuned for updates.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9111187678523218809-4767125522059592047?l=devisnik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devisnik.blogspot.com/feeds/4767125522059592047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9111187678523218809&amp;postID=4767125522059592047' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/4767125522059592047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/4767125522059592047'/><link rel='alternate' type='text/html' href='http://devisnik.blogspot.com/2009/03/android-minesweeper-yes-we-can.html' title='Android Minesweeper: Yes we can!'/><author><name>Volker</name><uri>http://www.blogger.com/profile/14389812660220268153</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_YcJwPxbtnvY/Sbp9Wg4tM8I/AAAAAAAABZ0/zAWVVVtIizQ/s72-c/android_mines_2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9111187678523218809.post-6356592543898701911</id><published>2009-01-24T13:40:00.004+01:00</published><updated>2009-01-26T13:17:16.907+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='eidle'/><category scheme='http://www.blogger.com/atom/ns#' term='feeds'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>A Feed Reader for Eidle</title><content type='html'>One of the things I have on my ToDo list for quite a while is integrating feed reading into one of my little fun projects, the &lt;a href="http://code.google.com/p/eidle/"&gt;Eidle screensaver framework&lt;/a&gt;. As I stumbled on &lt;a href="http://code.google.com/intl/de-DE/apis/ajaxfeeds/"&gt;Google's feed API&lt;/a&gt; yesterday I realized how easy that would be. I saved the sample they provide &lt;a href="http://www.google.com/uds/solutions/dynamicfeed/reference.html"&gt;here&lt;/a&gt; to my hard disk, fiddled around with the css styling to make it look more appealing for a screen saver, and set eidle's browser screen properties to use it.&lt;br /&gt;I am quite happy with the outcome, with just an hour of work. In general, with integrating a browser into eidle the possibilities are manyfold, the sky being the limit. Currently, you can only have one browser screen in eidle, but I think of a less static use of the eidle screens for a while already. So stay tuned for news! In the meantime check out &lt;a href="http://code.google.com/p/eidle/downloads/list"&gt;eidle&lt;/a&gt; and build your own browser based screens. I'm looking forward to hearing about your ideas.&lt;br /&gt;&lt;br /&gt;P.S. You can even &lt;a href="http://www.google.com/uds/solutions/wizards/dynamicfeed.html"&gt;let Google generate the code&lt;/a&gt; for you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9111187678523218809-6356592543898701911?l=devisnik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devisnik.blogspot.com/feeds/6356592543898701911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9111187678523218809&amp;postID=6356592543898701911' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/6356592543898701911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/6356592543898701911'/><link rel='alternate' type='text/html' href='http://devisnik.blogspot.com/2009/01/feed-reader-for-eidle.html' title='A Feed Reader for Eidle'/><author><name>Volker</name><uri>http://www.blogger.com/profile/14389812660220268153</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9111187678523218809.post-6360133385971623111</id><published>2009-01-09T18:53:00.003+01:00</published><updated>2009-01-09T19:29:00.141+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='greasemonkey'/><title type='text'>Monkey bidden</title><content type='html'>Lately I have installed &lt;a href="http://www.greasespot.net/"&gt;GreaseMonkey&lt;/a&gt; and &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/8352"&gt;GreaseFire&lt;/a&gt;. This really lubes up Firefox. Lot's of cool scripts that enhance many popular sites. But the real fun started when I decided to build a script myself.&lt;br /&gt;Here is the problem it solves: I often visit a &lt;a href="http://www.hekticket.de/hekticket/.bin/index.cgi?genre=18&amp;amp;&amp;amp;"&gt;page&lt;/a&gt; to find out about upcoming events. If something is interesting I add an entry to my Google calendar. All the data I need for this entry is there on the event info page. So lots of copy/paste here. My script now adds a button next to each event and when I click it generates the calender entry for me in a new tab. All I have to do then is press another button (save) and close the tab. Very handy, and I have a lot of events in my calender now. ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9111187678523218809-6360133385971623111?l=devisnik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devisnik.blogspot.com/feeds/6360133385971623111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9111187678523218809&amp;postID=6360133385971623111' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/6360133385971623111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/6360133385971623111'/><link rel='alternate' type='text/html' href='http://devisnik.blogspot.com/2009/01/monkey-bidden.html' title='Monkey bidden'/><author><name>Volker</name><uri>http://www.blogger.com/profile/14389812660220268153</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9111187678523218809.post-1877810178141643847</id><published>2008-08-29T16:12:00.002+02:00</published><updated>2008-08-29T16:15:33.771+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><category scheme='http://www.blogger.com/atom/ns#' term='eidle'/><category scheme='http://www.blogger.com/atom/ns#' term='screensaver'/><title type='text'>eidle 0.2 final finally</title><content type='html'>The new version 0.2 of &lt;a href="http://code.google.com/p/eidle"&gt;Eidle&lt;/a&gt; is available! Get it NOW!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9111187678523218809-1877810178141643847?l=devisnik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devisnik.blogspot.com/feeds/1877810178141643847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9111187678523218809&amp;postID=1877810178141643847' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/1877810178141643847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/1877810178141643847'/><link rel='alternate' type='text/html' href='http://devisnik.blogspot.com/2008/08/eidle-02-final-finally.html' title='eidle 0.2 final finally'/><author><name>Volker</name><uri>http://www.blogger.com/profile/14389812660220268153</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9111187678523218809.post-5054274592797086131</id><published>2008-08-15T14:23:00.000+02:00</published><updated>2008-08-15T14:36:16.883+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipe'/><category scheme='http://www.blogger.com/atom/ns#' term='eidle'/><category scheme='http://www.blogger.com/atom/ns#' term='screensaver'/><title type='text'>Eidle 0.2 Release Canditate 2</title><content type='html'>The &lt;a href="http://code.google.com/p/eidle/downloads/list"&gt;second candidate&lt;/a&gt; of the version 0.2 of &lt;a href="http://code.google.com/p/eidle"&gt;Eidle&lt;/a&gt; is available. It includes all the functionality &lt;a href="http://code.google.com/p/eidle/wiki/Release_0_2"&gt;planned for 0.2&lt;/a&gt;. Since candidate 1, I added (basic) support for multi-monitor systems and further evolved the auto minesweeper.&lt;br /&gt;The final release isn't far away and will probably not be too different from this candidate. So give it a try, and tell me what you think.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9111187678523218809-5054274592797086131?l=devisnik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devisnik.blogspot.com/feeds/5054274592797086131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9111187678523218809&amp;postID=5054274592797086131' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/5054274592797086131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/5054274592797086131'/><link rel='alternate' type='text/html' href='http://devisnik.blogspot.com/2008/08/eidle-02-release-canditate-2.html' title='Eidle 0.2 Release Canditate 2'/><author><name>Volker</name><uri>http://www.blogger.com/profile/14389812660220268153</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9111187678523218809.post-2825420799359000106</id><published>2008-05-16T18:54:00.000+02:00</published><updated>2008-08-15T14:38:06.921+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipe'/><category scheme='http://www.blogger.com/atom/ns#' term='eidle'/><category scheme='http://www.blogger.com/atom/ns#' term='screensaver'/><title type='text'>Eidle 0.2 Release Canditate 1</title><content type='html'>I've just uploaded the first &lt;a href="http://code.google.com/p/eidle/downloads/list"&gt;candidate&lt;/a&gt; for the upcoming Eidle release. So let me tell you what Eidle is all about.&lt;br /&gt;&lt;a href="http://code.google.com/p/eidle/"&gt;Eidle&lt;/a&gt; is a screensaver framework based on EclipseRCP. As such it can easily be extended by your own animations. Currently, it comes with a 15-puzzle-like animation, a flashlight animation, an integrated browser, a picture presenter and a minesweeper autoplayer.&lt;br /&gt;Eidle currently focuses on the integration into Windows, for which an installer is provided. I've also made some experiments on integrating it into EclipseRCP-based applications like the EclipseIDE or Lotus Notes8, but this probably won't make it into the next release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9111187678523218809-2825420799359000106?l=devisnik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devisnik.blogspot.com/feeds/2825420799359000106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9111187678523218809&amp;postID=2825420799359000106' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/2825420799359000106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/2825420799359000106'/><link rel='alternate' type='text/html' href='http://devisnik.blogspot.com/2008/05/eidle-02-release-canditate-1.html' title='Eidle 0.2 Release Canditate 1'/><author><name>Volker</name><uri>http://www.blogger.com/profile/14389812660220268153</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9111187678523218809.post-3757811803864253041</id><published>2008-05-14T14:12:00.000+02:00</published><updated>2008-05-14T14:15:49.663+02:00</updated><title type='text'>Misleading names</title><content type='html'>My favorite misleading name these days: CM Synergy. If you were forced to use it you'll certainly know what I mean.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9111187678523218809-3757811803864253041?l=devisnik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devisnik.blogspot.com/feeds/3757811803864253041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9111187678523218809&amp;postID=3757811803864253041' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/3757811803864253041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/3757811803864253041'/><link rel='alternate' type='text/html' href='http://devisnik.blogspot.com/2008/05/misleading-names.html' title='Misleading names'/><author><name>Volker</name><uri>http://www.blogger.com/profile/14389812660220268153</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9111187678523218809.post-3215936865557863871</id><published>2008-05-09T08:54:00.000+02:00</published><updated>2008-05-09T10:08:13.291+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='proguard'/><category scheme='http://www.blogger.com/atom/ns#' term='pde'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='obfuscation'/><category scheme='http://www.blogger.com/atom/ns#' term='obfuscate4e'/><title type='text'>Plugin obfuscation with obfuscate4e</title><content type='html'>A new version of &lt;a href="http://obfuscate4e.partmaster.de"&gt;obfuscate4e&lt;/a&gt; is out the door. So let me tell you what it's all about.&lt;br /&gt;&lt;br /&gt;Obfuscate4e helps you obfuscating your &lt;a href="http://www.eclipse.org"&gt;eclipse&lt;/a&gt;-plugins. It integrates &lt;a href="http://proguard.sourceforge.net/"&gt;ProGuard&lt;/a&gt; into the &lt;a href="http://www.eclipse.org"&gt;EclipseIDE&lt;/a&gt; and provides some functionality to ease the integration into the &lt;a href="http://www.eclipse.org/pde"&gt;PDE&lt;/a&gt; build process. That means whenever you build your plugin (using plugin export, feature build or product build) it is obfuscated automatically.&lt;br /&gt;&lt;br /&gt;There are quite a few reasons to &lt;a href="http://en.wikipedia.org/wiki/Obfuscator"&gt;obfuscate&lt;/a&gt; your plugins: smaller bundles and  faster downloads, removing unused classes, hiding implementation details, ...&lt;br /&gt;&lt;br /&gt;Even if you don't develop plugins, obfuscate4e has something to offer: it registers a proguard &lt;a href="http://ant.apache.org/"&gt;ant&lt;/a&gt; task you can use in your build scripts. But to leverage its full strength, consider converting your java project into a plugin project, even if you don't plan to use it in an OSGi environment.&lt;br /&gt;&lt;br /&gt;Obfuscate4e comes currently in version 0.6, so it is not quite rock solid. And some knowledge of the &lt;a href="http://proguard.sourceforge.net/manual/examples.html"&gt;ProGuard syntax&lt;/a&gt; is needed. But don't be afraid, it is not that tricky. So check it out, use it, and give us some &lt;a href="http://obfuscate4e.partmaster.de/contact"&gt;feedback&lt;/a&gt; on how to improve it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9111187678523218809-3215936865557863871?l=devisnik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devisnik.blogspot.com/feeds/3215936865557863871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9111187678523218809&amp;postID=3215936865557863871' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/3215936865557863871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/3215936865557863871'/><link rel='alternate' type='text/html' href='http://devisnik.blogspot.com/2008/05/plugin-obfuscation-with-obfuscate4e.html' title='Plugin obfuscation with obfuscate4e'/><author><name>Volker</name><uri>http://www.blogger.com/profile/14389812660220268153</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9111187678523218809.post-4307252780060188696</id><published>2007-09-26T16:32:00.000+02:00</published><updated>2007-09-26T17:03:49.455+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipe'/><title type='text'>Switching between languages at runtime</title><content type='html'>One of the requirements we have in our project is to support switching  between different languages at runtime. To make this work in the RCP runtime, we decided to close the workbench window and open a new one when the language changes. This works quite well, especially since we have put all state data of the gui in separate models.&lt;br /&gt;Another thing was how to handle data lazily loaded by the platform. For example, a view tab may be visible before the view is actually instanciated.  The platform then uses the data (name) given in the extension definition of the view. But this is static, so it won't change if the language changes. We solved this by providing what we call &lt;span style="font-style: italic;"&gt;ViewLocalizations&lt;/span&gt; via a custom extension point. The ViewLocalization resides in the same bundle as the view it belongs to and knows how to translate the view name. Our Presentation then uses the view localization to determine the right name for the view.  Of course,  a bundle should not be activated only because one of its ViewLocalizations is needed. Therefore, we put all the ViewLocalizations of a bundle in a separate package which we excluded from the lazyStart-mechanism.&lt;br /&gt;This solution works quite well, but generates a considerable overhead. Especially since beside views, also perspectives, actions, etc. have to be handled this way.  So if you have any ideas for improvements, please let me know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9111187678523218809-4307252780060188696?l=devisnik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devisnik.blogspot.com/feeds/4307252780060188696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9111187678523218809&amp;postID=4307252780060188696' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/4307252780060188696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/4307252780060188696'/><link rel='alternate' type='text/html' href='http://devisnik.blogspot.com/2007/09/switching-between-languages-at-runtime.html' title='Switching between languages at runtime'/><author><name>Volker</name><uri>http://www.blogger.com/profile/14389812660220268153</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9111187678523218809.post-2504427282975720681</id><published>2007-07-23T17:49:00.000+02:00</published><updated>2007-07-23T18:08:52.676+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>An extension is not an extension point</title><content type='html'>I'm currently working for a customer in an RCP project. There is a lot of work to be done and we are around a dozen of programmers actively contributing. A couple of weeks ago we had a strange problem.&lt;br /&gt;One of the core plugins of the app defines an extension point which is actively used by other components. At some point these extensions were not loaded anymore. After quite some time of guessing we found that there was a new plugin using the extension point. But instead of defining an extension the developer (not really familiar with the Eclipse extension mechanism) had defined an extension point. He named it exactly as the existing one and used the original schema file by  referencing it from the original core plugin. I was somewhat surprised that the framework did not complain about this duplication, but the main lesson to learn is certainly that there is some basic RCP mechanisms every developer should be familiar with before contributing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9111187678523218809-2504427282975720681?l=devisnik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devisnik.blogspot.com/feeds/2504427282975720681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9111187678523218809&amp;postID=2504427282975720681' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/2504427282975720681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/2504427282975720681'/><link rel='alternate' type='text/html' href='http://devisnik.blogspot.com/2007/07/extension-is-not-extension-point.html' title='An extension is not an extension point'/><author><name>Volker</name><uri>http://www.blogger.com/profile/14389812660220268153</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9111187678523218809.post-7540403785287554657</id><published>2007-07-22T21:32:00.000+02:00</published><updated>2007-07-23T11:49:35.202+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Actions with text in EclipseRCP</title><content type='html'>I'm using EclipseRCP for more than three years now, and I must say they've come a long way. I still really enjoy it, and with all the upcoming projects there's always new things to discover.&lt;br /&gt;Standard functionality (like hooking buttons into the GUI)  is next to trivial (as it should be) but sometimes things get a little bit more complicated when you want your application to look different than the Eclipse IDE.&lt;br /&gt;A simple example, I like toolbar buttons to have a text next to the image. A little read shows that you can achieve this by setting the toolbar style in your actionbar advisor, and then defining your (global) actions there. Things get a bit more involved when you start using editors, and you want your editor actions (contributed via the IEditorActionBarContributor interface) to look the same as the global ones.  You can still set the ActionContributionItem.MODE_FORCE_TEXT mode on your toolbar item, but there is no way to change the text alignment (I like the text to be below the image). Digging into the eclipse code I found that the toolbar used for the editor actions is created using the IActionBarPresentationFactory interface. A default one is used if you don't define your own presentation factory (extending AbstractPresentationFactory) which implements IActionBarPresentationFactory. So I created my own presentation (basically delegating to WorkbenchPresentationFactory) and let it extend IActionBarPresentationFactory.&lt;br /&gt;It works, but uses internal API. So if anybody knows a better way to do that, drop me a line.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9111187678523218809-7540403785287554657?l=devisnik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devisnik.blogspot.com/feeds/7540403785287554657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9111187678523218809&amp;postID=7540403785287554657' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/7540403785287554657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/7540403785287554657'/><link rel='alternate' type='text/html' href='http://devisnik.blogspot.com/2007/07/actions-with-text-in-eclipsercp.html' title='Actions with text in EclipseRCP'/><author><name>Volker</name><uri>http://www.blogger.com/profile/14389812660220268153</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9111187678523218809.post-2227803798779080981</id><published>2007-07-20T12:04:00.000+02:00</published><updated>2007-07-20T12:12:19.445+02:00</updated><title type='text'>Ten minutes time</title><content type='html'>It really only takes ten minutes to hook up a blog. Don't know why it took me so long to get here.&lt;br /&gt;Anyway, I finally made it. I'll start blogging about my daily coding experiences here, probably more or less for myself. But, hey, might be something in it for you too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9111187678523218809-2227803798779080981?l=devisnik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devisnik.blogspot.com/feeds/2227803798779080981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9111187678523218809&amp;postID=2227803798779080981' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/2227803798779080981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9111187678523218809/posts/default/2227803798779080981'/><link rel='alternate' type='text/html' href='http://devisnik.blogspot.com/2007/07/ten-minutes-time.html' title='Ten minutes time'/><author><name>Volker</name><uri>http://www.blogger.com/profile/14389812660220268153</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
