<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-2168156697500940456</atom:id><lastBuildDate>Wed, 14 Dec 2011 20:38:02 +0000</lastBuildDate><category>permalink</category><category>spotify</category><category>javascript</category><category>jfreechart</category><category>3d</category><category>truism</category><category>firebug</category><category>mask</category><category>maven</category><category>gwt</category><category>hosting</category><category>flattr</category><category>environment</category><category>youtube</category><category>applet</category><category>cube algorithms</category><category>1984</category><category>motivation</category><category>firefox</category><category>fractal</category><category>configuration</category><category>git</category><category>python</category><category>plugin</category><category>charity</category><category>steve jobs</category><category>liero</category><category>floatheader</category><category>FRA</category><category>windows</category><category>performance</category><category>4k</category><category>stanford</category><category>physics</category><category>canvas</category><category>eclipse</category><category>404</category><category>IPRED</category><category>linux</category><category>facebook</category><category>hibernate</category><category>quakelive</category><category>jsf</category><category>host</category><category>java</category><category>#spectrial</category><category>php</category><category>rekill</category><category>politics</category><category>ubiquity</category><category>hudson</category><category>how-to</category><category>game</category><category>rubik</category><category>working</category><category>wordpress</category><category>bitbucket</category><category>jquery</category><category>code-pool</category><category>haiku</category><category>android</category><category>ACTA</category><category>/tmp</category><category>tmpfs</category><category>jboss</category><category>ie7</category><category>exception</category><category>flowers</category><category>ubuntu</category><category>BIRT</category><category>gitosis</category><title>slackers.se</title><description>Lazy by default</description><link>http://blog.slackers.se/</link><managingEditor>noreply@blogger.com (Erik Byström)</managingEditor><generator>Blogger</generator><openSearch:totalResults>60</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/devslackers" /><feedburner:info uri="devslackers" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-842436341656449423</guid><pubDate>Tue, 13 Dec 2011 20:20:00 +0000</pubDate><atom:updated>2011-12-14T21:38:02.146+01:00</atom:updated><title>Rubik's Cube Algorithms v2.0</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
After almost 100h of spare time coding I'm finished with the rewrite of Rubik's Cube Algorithms v2.0. I've basically rewritten every single line of code in the whole application. But if you ask me the result is great! And hopefully the users will appreciate it as well.&amp;nbsp;The app can be found at Android Market:&lt;br /&gt;
&lt;a href="https://market.android.com/details?id=se.slackers.cube"&gt;https://market.android.com/details?id=se.slackers.cube&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Features:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;F2L/PLL/OLL algorithms&lt;/li&gt;
&lt;li&gt;Algorithms rotation&lt;/li&gt;
&lt;li&gt;Trigger moves grouping&lt;/li&gt;
&lt;li&gt;Add / Edit custom algorithms&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;b&gt;Planned features:&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;Ad-free version&lt;/li&gt;
&lt;li&gt;4x4 and 5x5 renderers&lt;/li&gt;
&lt;li&gt;Better trigger detection for the left hand&lt;/li&gt;
&lt;li&gt;Nicer layout for tablets&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&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/2168156697500940456-842436341656449423?l=blog.slackers.se' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/85YBx35aCT-Ns4JSFlQBlm5loEE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/85YBx35aCT-Ns4JSFlQBlm5loEE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/85YBx35aCT-Ns4JSFlQBlm5loEE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/85YBx35aCT-Ns4JSFlQBlm5loEE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/devslackers/~4/n2jjcbX_Wts" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/devslackers/~3/n2jjcbX_Wts/rubiks-cube-algorithms-v20.html</link><author>noreply@blogger.com (Erik Byström)</author><thr:total>0</thr:total><feedburner:origLink>http://blog.slackers.se/2011/12/rubiks-cube-algorithms-v20.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-6224949637239169401</guid><pubDate>Wed, 28 Sep 2011 16:12:00 +0000</pubDate><atom:updated>2011-09-28T18:12:00.221+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">bitbucket</category><category domain="http://www.blogger.com/atom/ns#">fractal</category><title>Multi Threaded Fractal Renderer in Swing</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
After seeing Jeff Pershing's post on a &lt;a href="http://preshing.com/20110926/high-resolution-mandelbrot-in-obfuscated-python"&gt;obfuscated madelbrot renderer in python&lt;/a&gt;&amp;nbsp;I naturally had to try the python snippet provided. Sitting on a quad-core 3GHz machine I felt a bit disappointed when it took a long time to render the fractal and only one core was used.&amp;nbsp;Performance&amp;nbsp;was not a part of their initial goals so I will forgive them but I felt obliged to make a multi threaded version.&amp;nbsp;For science!&lt;br /&gt;
Said and done, it was surprisingly smooth coding and the end result is pretty decent. The palette was by far the most time consuming thing to implement, it's hard to find good colors.&amp;nbsp;Only basic controls for navigating the fractal&amp;nbsp;are implemented, mouse wheel to zoom and click to center.&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://4.bp.blogspot.com/-WzoOGSeFWYI/ToLWDJUdffI/AAAAAAAADB0/FaRWvz0SO3E/s1600/fractal-1.0.jpg" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="232" src="http://4.bp.blogspot.com/-WzoOGSeFWYI/ToLWDJUdffI/AAAAAAAADB0/FaRWvz0SO3E/s320/fractal-1.0.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;Screenshot from the application&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
The&amp;nbsp;code can be found at my repository on&amp;nbsp;&lt;a href="https://bitbucket.org/bysse/misc/"&gt;bitbucket&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2168156697500940456-6224949637239169401?l=blog.slackers.se' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/a488xNyERnuRHCzm-QLMWELpL9g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/a488xNyERnuRHCzm-QLMWELpL9g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/a488xNyERnuRHCzm-QLMWELpL9g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/a488xNyERnuRHCzm-QLMWELpL9g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/devslackers/~4/kFnlDVHedAg" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/devslackers/~3/kFnlDVHedAg/multi-threaded-fractal-renderer-in.html</link><author>noreply@blogger.com (Erik Byström)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-WzoOGSeFWYI/ToLWDJUdffI/AAAAAAAADB0/FaRWvz0SO3E/s72-c/fractal-1.0.jpg" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Stockholm urban area, Sweden</georss:featurename><georss:point>59.3327881 18.0644881</georss:point><georss:box>59.2032091 17.748631099999997 59.4623671 18.3803451</georss:box><feedburner:origLink>http://blog.slackers.se/2011/09/multi-threaded-fractal-renderer-in.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-8812748987998847095</guid><pubDate>Wed, 21 Sep 2011 08:49:00 +0000</pubDate><atom:updated>2011-09-21T10:49:12.879+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">BIRT</category><title>BIRT Documentation</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Recently I've had the &lt;strike&gt;pleasure&lt;/strike&gt; opportunity to work with BIRT for a reporting project. My conclusion is that it is by far, the most inaccessible open source project I've ever seen. This post is dedicated to my future self.&amp;nbsp;

&lt;br /&gt;
&lt;br /&gt;
Hey! Here are the links you've been looking for! &lt;br /&gt;
&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;a href="http://help.eclipse.org/indigo/index.jsp?nav=%2F8_0_0"&gt;BIRT Javadoc&lt;/a&gt;&amp;nbsp;(hidden inside&amp;nbsp;&lt;a href="http://help.eclipse.org/"&gt;http://help.eclipse.org&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;BIRT Source can be found at git://git.eclipse.org/gitroot/birt&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Good luck, you'll need it...&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/2168156697500940456-8812748987998847095?l=blog.slackers.se' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GtscrCGQ_p8wAZIo3eQcZQIuUy4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GtscrCGQ_p8wAZIo3eQcZQIuUy4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GtscrCGQ_p8wAZIo3eQcZQIuUy4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GtscrCGQ_p8wAZIo3eQcZQIuUy4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/devslackers/~4/3aC7nEZQtTQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/devslackers/~3/3aC7nEZQtTQ/birt-documentation.html</link><author>noreply@blogger.com (Erik Byström)</author><thr:total>0</thr:total><georss:featurename>Stockholm urban area, Sweden</georss:featurename><georss:point>59.3327881 18.0644881</georss:point><georss:box>59.2032091 17.748631099999997 59.4623671 18.3803451</georss:box><feedburner:origLink>http://blog.slackers.se/2011/09/birt-documentation.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-5265231858699859244</guid><pubDate>Fri, 12 Aug 2011 08:09:00 +0000</pubDate><atom:updated>2011-08-12T10:09:22.077+02:00</atom:updated><title>Cubing for charity #3</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;span class="Apple-style-span" style="background-color: white; color: #666666; font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;"&gt;It's time for #3 in the series '&lt;a href="http://blog.slackers.se/2011/01/cubing-for-charity.html" style="color: #30a2d6; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline;"&gt;Cubing for charity&lt;/a&gt;'. Which is the concept that until the profit from ads in&amp;nbsp;&lt;a href="https://market.android.com/details?id=se.slackers.cube" style="color: #30a2d6; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline;"&gt;Rubik's Cube Algorithms&lt;/a&gt;&amp;nbsp;(and other apps) reaches a substantial part of my income, it will be donated to charity.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white; color: #666666; font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;"&gt;This time I've chosen to give the $38 USD (250 SEK) to the Red Cross. The reason why I chose them is because of the&amp;nbsp;drought&amp;nbsp;in Africa. And the only way to get help there fast enough is to go through a large organization, ie the Red Cross.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-8WtaHQesPpI/TkTedff4b4I/AAAAAAAAC5w/89p4fCcDLro/s1600/cubing+for+charity+%25233.jpg" imageanchor="1"&gt;&lt;img border="0" height="115" src="http://2.bp.blogspot.com/-8WtaHQesPpI/TkTedff4b4I/AAAAAAAAC5w/89p4fCcDLro/s320/cubing+for+charity+%25233.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span class="Apple-style-span" style="background-color: white; color: #666666; font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;"&gt;According to their site, your cubing,tapping and tracking has given around 35 people food for a month. Not much, but it's something.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2168156697500940456-5265231858699859244?l=blog.slackers.se' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/i-E8fEwGxlml5HxUsvj7JsAfdO4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i-E8fEwGxlml5HxUsvj7JsAfdO4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/i-E8fEwGxlml5HxUsvj7JsAfdO4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i-E8fEwGxlml5HxUsvj7JsAfdO4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/devslackers/~4/nwy0V57we4k" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/devslackers/~3/nwy0V57we4k/cubing-for-charity-3.html</link><author>noreply@blogger.com (Erik Byström)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-8WtaHQesPpI/TkTedff4b4I/AAAAAAAAC5w/89p4fCcDLro/s72-c/cubing+for+charity+%25233.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.slackers.se/2011/08/cubing-for-charity-3.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-3767006808810387564</guid><pubDate>Tue, 09 Aug 2011 22:11:00 +0000</pubDate><atom:updated>2011-08-10T00:11:00.032+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">charity</category><category domain="http://www.blogger.com/atom/ns#">android</category><title>Simple Tracker</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Yesterday I released my third app which is called Simple Tracker. It's basically a calendar were you can enter data on different variables and then be able to plot the values over time.&lt;br /&gt;
Obviously there are far more advanced fitness / health applications out there, but in my opinion they are too advanced. I don't know how many grams of&amp;nbsp;cereals&amp;nbsp;I eat for breakfast or how much cheese are on my pizza. What I do know are which days I workout and the measurements I make. And that is what I use the application for.&amp;nbsp;ie. recording my weight a couple of times each week and annotate the days I workout with a color depending of the activity.&lt;br /&gt;
Below are some of the screenshots from market, please note that this is sample data :)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-pJgmv1K2H74/TkDnLHGIJbI/AAAAAAAAC5o/TSvk4G1vK58/s1600/ss-320-1-0.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-pJgmv1K2H74/TkDnLHGIJbI/AAAAAAAAC5o/TSvk4G1vK58/s200/ss-320-1-0.jpg" width="133" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Calendar overview&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-XgEdMFdikB8/TkDnLn82UEI/AAAAAAAAC5s/mUeNe0BcS7Q/s1600/ss-320-2-0.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-XgEdMFdikB8/TkDnLn82UEI/AAAAAAAAC5s/mUeNe0BcS7Q/s200/ss-320-2-0.jpg" width="133" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Viewing data&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&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;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
The app can be found on&amp;nbsp;&lt;a href="https://market.android.com/details?id=se.slackers.simpletracker"&gt;Android Market&lt;/a&gt;&amp;nbsp;and is currently in beta and free but ad-supported. It will of course be a part of my&amp;nbsp;&lt;a href="http://blog.slackers.se/2011/01/cubing-for-charity.html"&gt;Cubing For Charity campain&lt;/a&gt;.&amp;nbsp;&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/2168156697500940456-3767006808810387564?l=blog.slackers.se' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/aVG5Uu_Tg8lM4tJHWVv6VfHorxw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aVG5Uu_Tg8lM4tJHWVv6VfHorxw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/aVG5Uu_Tg8lM4tJHWVv6VfHorxw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aVG5Uu_Tg8lM4tJHWVv6VfHorxw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/devslackers/~4/CTqi3FXCQqY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/devslackers/~3/CTqi3FXCQqY/simple-tracker.html</link><author>noreply@blogger.com (Erik Byström)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-pJgmv1K2H74/TkDnLHGIJbI/AAAAAAAAC5o/TSvk4G1vK58/s72-c/ss-320-1-0.jpg" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Stockholm urban area, Sweden</georss:featurename><georss:point>59.3327881 18.0644881</georss:point><georss:box>59.2032091 17.748631099999997 59.4623671 18.3803451</georss:box><feedburner:origLink>http://blog.slackers.se/2011/08/simple-tracker.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-8667077122142732316</guid><pubDate>Wed, 20 Jul 2011 11:16:00 +0000</pubDate><atom:updated>2011-07-26T13:15:53.518+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">gwt</category><title>Width of an element in javascript</title><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;When starting with the &lt;a href="http://code.google.com/p/gwt-floating-header"&gt;gwt-floating-header&lt;/a&gt; project i ran into some problems with getting, what i call, the" true width" of an element in javascript. With "true width" i mean the width of the element excluding padding, border and margin. And because i'm writing for GWT I don't have luxury of be able to use the &lt;a href="http://api.jquery.com/width/"&gt;.width()&lt;/a&gt; function in jQuery.&lt;br /&gt;
It took me a while to get the script to this point and i'm not really sure if it works for all browsers but it might help someone to get started. &lt;br /&gt;
&lt;br /&gt;
&lt;pre class="js" name="code"&gt;function width(element) {
		var style = element.currentStyle	|| element.ownerDocument.defaultView.getComputedStyle(element, null);
		var safe = function(v) { return parseInt(v, 10) || 0; };
		return element.offsetWidth - safe(style.paddingLeft)
				- safe(style.paddingRight) - safe(style.borderLeftWidth)
				- safe(style.borderRightWidth);
}
&lt;/pre&gt;&lt;br /&gt;
GWT version of this snippet can be found &lt;a href="http://code.google.com/p/gwt-floating-header/source/browse/src/main/java/se/slackers/floatingtableheader/client/DOMUtil.java"&gt;here&lt;/a&gt;. Please let me know if you find any strangeness or incompatibilities in the code.&lt;br /&gt;
&lt;br /&gt;
EDIT: It seems that margin shouldn't be in the calculation.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2168156697500940456-8667077122142732316?l=blog.slackers.se' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/REVXLjtt9c4d57bj_XnJTfPYK0o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/REVXLjtt9c4d57bj_XnJTfPYK0o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/REVXLjtt9c4d57bj_XnJTfPYK0o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/REVXLjtt9c4d57bj_XnJTfPYK0o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/devslackers/~4/Nw2iekxDXSs" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/devslackers/~3/Nw2iekxDXSs/width-of-element-in-javascript.html</link><author>noreply@blogger.com (Erik Byström)</author><thr:total>0</thr:total><georss:featurename>Stockholm urban area, Sweden</georss:featurename><georss:point>59.3327881 18.0644881</georss:point><georss:box>59.2032091 17.748631099999997 59.4623671 18.3803451</georss:box><feedburner:origLink>http://blog.slackers.se/2011/07/width-of-element-in-javascript.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-8999618345777626236</guid><pubDate>Mon, 18 Jul 2011 15:27:00 +0000</pubDate><atom:updated>2011-07-18T17:27:51.617+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">gwt</category><title>Floating table headers for GWT</title><description>Today I've created a Google code project for the GWT port of my&amp;nbsp;&lt;a href="http://blog.slackers.se/2009/07/jquery-floating-table-header-plugin.html"&gt;jQuery floating header plugin&lt;/a&gt;. It's a very lightweight library that already supports both column and row headers. Since the code base is very young i haven't had the chance to try the compatibility with a lot of browsers but in time i might do this.&lt;br /&gt;
&lt;br /&gt;
The project is available at:&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;a href="http://code.google.com/p/gwt-floating-header/"&gt;http://code.google.com/p/gwt-floating-header/&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2168156697500940456-8999618345777626236?l=blog.slackers.se' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/E3vkFu3gadplgDzMsOKpx2vnpIc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E3vkFu3gadplgDzMsOKpx2vnpIc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/E3vkFu3gadplgDzMsOKpx2vnpIc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E3vkFu3gadplgDzMsOKpx2vnpIc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/devslackers/~4/CDgRZ7x39gA" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/devslackers/~3/CDgRZ7x39gA/floating-table-headers-for-gwt.html</link><author>noreply@blogger.com (Erik Byström)</author><thr:total>0</thr:total><feedburner:origLink>http://blog.slackers.se/2011/07/floating-table-headers-for-gwt.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-2109718451969193905</guid><pubDate>Mon, 11 Apr 2011 17:39:00 +0000</pubDate><atom:updated>2011-04-11T19:39:12.184+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">charity</category><category domain="http://www.blogger.com/atom/ns#">rubik</category><title>Cubing for charity #2</title><description>Finally it's time for #2 in the series '&lt;a href="http://blog.slackers.se/2011/01/cubing-for-charity.html"&gt;Cubing for charity&lt;/a&gt;'. Which is the concept that until the profit from ads in &lt;a href="https://market.android.com/details?id=se.slackers.cube"&gt;Rubik's Cube Algorithms&lt;/a&gt; (and other apps) reaches a substantial part of my income, it will be donated to charity. Also i tend to choose projects from the places a visited while i was traveling Asia.&lt;br /&gt;
 &lt;br /&gt;
This time 54 USD goes to &lt;a href="http://www.letuscreatecambodia.org/"&gt;Cambodia Children's Painting Project&lt;/a&gt; in Sihanoukville Cambodia. The project is basically to let kids be kids. Unfortunately there are still a lot of kids selling bracelets on the beaches.&lt;br /&gt;
&lt;blockquote&gt;We now provide so much more to the kids, including access to painting, craft and sports activities, a small snack and lunch everyday, access to medical and dental assistance and the most important thing, an opportunity to receive a proper education.&lt;/blockquote&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-e8J6sUORitg/TaM7sJO2zuI/AAAAAAAACik/aIUEszNe7EQ/s1600/cubing%2Bfor%2Bcharity%2B2.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="223" width="320" src="http://4.bp.blogspot.com/-e8J6sUORitg/TaM7sJO2zuI/AAAAAAAACik/aIUEszNe7EQ/s320/cubing%2Bfor%2Bcharity%2B2.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2168156697500940456-2109718451969193905?l=blog.slackers.se' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jPyap4zhEfk-L9sE_GuBbNM_CMQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jPyap4zhEfk-L9sE_GuBbNM_CMQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jPyap4zhEfk-L9sE_GuBbNM_CMQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jPyap4zhEfk-L9sE_GuBbNM_CMQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/devslackers/~4/22GpK-w3sgY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/devslackers/~3/22GpK-w3sgY/cubing-for-charity-2.html</link><author>noreply@blogger.com (Erik Byström)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-e8J6sUORitg/TaM7sJO2zuI/AAAAAAAACik/aIUEszNe7EQ/s72-c/cubing%2Bfor%2Bcharity%2B2.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.slackers.se/2011/04/cubing-for-charity-2.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-8051163479430938007</guid><pubDate>Wed, 30 Mar 2011 18:43:00 +0000</pubDate><atom:updated>2011-03-30T20:43:08.497+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">game</category><title>I won the Java 4k Game Competition 2011</title><description>I'm very proud to say that my game '&lt;a href="http://goo.gl/ClU3F"&gt;4Kube 3d&lt;/a&gt;' won the java 4k game competition this year. And what is more surprising, for me at least, is that it came first in both the &lt;a href="http://www.java4k.com/index.php?action=games&amp;method=grades&amp;cid=7"&gt;judge&lt;/a&gt; and &lt;a href="http://www.java4k.com/index.php?action=games&amp;method=community&amp;cid=7"&gt;community&lt;/a&gt; voting. &lt;br /&gt;
&lt;br /&gt;
The timing of the results was very good also for me. I've just come back after seven months of backpacking in Asia and this will certainly relieve some of the inevitable post travel depression. &lt;br /&gt;
&lt;br /&gt;
Needless to say i got a lot of help from other people, so a big thanks to:&lt;br /&gt;
* Rasmus (RL. GREEN LABEL) for helping me with level design and testing.&lt;br /&gt;
* The guys at &lt;a href="http://www.java-gaming.org/"&gt;java-gaming.org forums&lt;/a&gt; for a lot of tips on how to improve the game. &lt;br /&gt;
* Riven for his most excellent Compile 'n Shrink service.&lt;br /&gt;
&lt;br /&gt;
Other posts about the competition:&lt;br /&gt;
* &lt;a href="http://www.indiegames.com/blog/2011/03/java4k_2011_competition_result.htm"&gt;http://www.indiegames.com/blog/2011/03/java4k_2011_competition_result.html&lt;/a&gt;&lt;br /&gt;
* &lt;a href="http://www.rockpapershotgun.com/2011/03/29/impossigames-the-java4k-challenge/"&gt;http://www.rockpapershotgun.com/2011/03/29/impossigames-the-java4k-challenge/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2168156697500940456-8051163479430938007?l=blog.slackers.se' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yShxTLW9T_fmBzcH8fAkkb_8hbE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yShxTLW9T_fmBzcH8fAkkb_8hbE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/yShxTLW9T_fmBzcH8fAkkb_8hbE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yShxTLW9T_fmBzcH8fAkkb_8hbE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/devslackers/~4/SgjrkUxunBA" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/devslackers/~3/SgjrkUxunBA/i-won-java-4k-game-competition-2011.html</link><author>noreply@blogger.com (Erik Byström)</author><thr:total>0</thr:total><feedburner:origLink>http://blog.slackers.se/2011/03/i-won-java-4k-game-competition-2011.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-6395372893736955641</guid><pubDate>Wed, 19 Jan 2011 08:41:00 +0000</pubDate><atom:updated>2011-01-19T09:41:06.975+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">4k</category><category domain="http://www.blogger.com/atom/ns#">java</category><title>Java 4k competition 2011</title><description>Finally the time a year when you are encouraged to write really dirty code, &lt;a href="http://www.java4k.com"&gt;Java 4k competition&lt;/a&gt;! Well, maybe not dirty but certainly ugly.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;The Java 4K competition is a game programmer competition. The goal of the competition is to create the best game possible in Java. But what's the catch? Well, it wouldn't be fun if there wasn't any catch! There are limitations, and these limitations are: The maximum allowed size of a game is only 4K&lt;/blockquote&gt;&lt;br /&gt;
This year i forgot to exclude the manifest before i started with the size optimizations. I felt like a child on christmas when i discovered it! Good times :) Anyway, my game is a classic puzzle game where you control a rolling cube. The objective is to clear all colored bricks on the playfield by rolling over the bricks with the a side of the cube which have the same color as the brick. The game can be found on the &lt;a href="http://goo.gl/ClU3F"&gt;Java 4k site&lt;/a&gt; and I encourage you to try  all submitted games, some of them are really good.&lt;br /&gt;
&lt;br /&gt;
Because Riven's excellent &lt;a href="http://www.indiespot.net/app/java-four-kay"&gt;Compile 'n Shrink&lt;/a&gt; service seems to be down, probably due to the hacking of &lt;a href="http://:www.java-gaming.org"&gt;java-gaming.org&lt;/a&gt;, I'll post my own compression scripts here. &lt;br /&gt;
&lt;br /&gt;
This is the script I use for this tedious task:&lt;br /&gt;
&lt;pre name="code" class="bash:collapse"&gt;#!/bin/bash

if [ $# -ne 1 ]
then
  echo "Usage: `basename $0` &lt;CLASS_NAME&gt;"
  exit 65
fi

function printSize() {
   SIZE=$(ls -l $1 | awk '//{print $5}')
   printf "+ %-15s %s bytes [%d]\\n" $1 ${SIZE} $((SIZE-4096))
}

BIN=bin
LOG=../size.log

PRO_FLAGS="-libraryjars &lt;java.home&gt;/lib/rt.jar -basedirectory ."

CLASS=$1.class
JAR=$1.jar
PACK=$1.pack.gz
PRO=$1.pro.jar
PRO_PACK=$1.pro.pack.gz
PRO_PACK_RAW=$1.pro.pack
PRO_PACK_7ZIP=$1.pro.pack.7.gz
PRO_PACK_K=$1.pro.pack.kzip
PRO_PACK_K_GZ=$1.pro.pack.k.gz

pushd .
cd $BIN

echo

#echo Generating manifest file
#echo -e Main-Class: $1\\n &gt; $1.manifest

echo Running jar on $CLASS
jar cfM $JAR $CLASS

echo Running Proguard on $JAR
proguard $PRO_FLAGS -injars $JAR -outjars $PRO -keep public class $1

echo Running pack200 on $JAR
pack200 -G $PACK $JAR

echo Running pack200 on $PRO
pack200 -G $PRO_PACK $PRO
pack200 --no-gzip $PRO_PACK_RAW $PRO

echo Compressing $PRO_PACK_RAW with 7zip
7z a -mx=9 -tgzip $PRO_PACK_7ZIP $PRO_PACK_RAW &gt; /dev/null

echo Compressing $PRO_PACK_RAW with Kzip
kzip /q /y /s0 /rn /b64 $PRO_PACK_K $PRO_PACK_RAW 
zip2gzip $PRO_PACK_K $PRO_PACK_K_GZ

echo
echo File size summary:
printSize $CLASS
printSize $JAR
printSize $PRO
printSize $PACK
printSize $PRO_PACK
printSize $PRO_PACK_7ZIP
printSize $PRO_PACK_K_GZ
echo

# Write to the log file
echo "----------------------------------" &gt;&gt; $LOG
date +"%Y-%m-%d %H:%M:%S" &gt;&gt; $LOG
echo "----------------------------------" &gt;&gt; $LOG
echo "File size summary:" &gt;&gt; $LOG
printSize $CLASS &gt;&gt; $LOG
printSize $JAR &gt;&gt; $LOG
printSize $PRO &gt;&gt; $LOG
printSize $PACK &gt;&gt; $LOG
printSize $PRO_PACK &gt;&gt; $LOG
printSize $PRO_PACK_7ZIP &gt;&gt; $LOG
printSize $PRO_PACK_K_GZ &gt;&gt; $LOG
echo &gt;&gt; $LOG

popd &gt;&gt; /dev/null
&lt;/pre&gt;For even smaller files, replace the kzip command with a script that runs kzip 10-100 times and takes the smallest resulting file. You will also need pjt33's Zip2Gzip converter to convert the KZip files to GZip:&lt;br /&gt;
&lt;pre name="code" class="java:collapse"&gt;import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.EOFException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

// Based on http://www.gzip.org/zlib/rfc-gzip.html
// and http://www.pkware.com/documents/casestudies/APPNOTE.TXT
public class Zip2Gzip {
 // Usage: java Zip2Gzip [file.zip [file.gzip]]
 public static void main(final String[] args) throws IOException {
  InputStream in = new FileInputStream(args[0]);
  in = new BufferedInputStream(in);
  OutputStream out = new FileOutputStream(args[1]);
  out = new BufferedOutputStream(out);

  // Start by writing a gzip header.
  // Magic.
  out.write(0x1f);
  out.write(0x8b);
  // Compression method: inflate.
  out.write(0x08);
  // Flags: we include no optional extras.
  out.write(0x00);
  // Timestamp: unavailable.
  out.write(0x00);
  out.write(0x00);
  out.write(0x00);
  out.write(0x00);
  // Extra flags: none.
  out.write(0x00);
  // OS: unknown.
  out.write(0xff);

  // The next block of output is the compressed data. We need to process
  // the zip file header to find it and know how long it is.
  // local file header signature 4 bytes (0x04034b50)
  // version needed to extract 2 bytes
  // general purpose bit flag 2 bytes
  // compression method 2 bytes
  // last mod file time 2 bytes
  // last mod file date 2 bytes
  // Total so far: 14 bytes
  for (int i = 0; i &lt; 14; i++) {
   in.read();
  }
  // crc-32 4 bytes
  final int crc1 = in.read();
  final int crc2 = in.read();
  final int crc3 = in.read();
  final int crc4 = in.read();
  // compressed size 4 bytes
  int cmpSz = (in.read() &amp; 0xff) + ((in.read() &amp; 0xff) &lt;&lt; 8) + ((in.read() &amp; 0xff) &lt;&lt; 16)
    + ((in.read() &amp; 0xff) &lt;&lt; 24);
  // uncompressed size 4 bytes
  final int ucmpSz1 = in.read();
  final int ucmpSz2 = in.read();
  final int ucmpSz3 = in.read();
  final int ucmpSz4 = in.read();
  // file name length 2 bytes
  final int nameLen = (in.read() &amp; 0xff) + ((in.read() &amp; 0xff) &lt;&lt; 8);
  // extra field length 2 bytes
  final int xfLen = (in.read() &amp; 0xff) + ((in.read() &amp; 0xff) &lt;&lt; 8);
  // file name (variable size)
  for (int i = 0; i &lt; nameLen; i++) {
   in.read();
  }
  // extra field (variable size)
  for (int i = 0; i &lt; xfLen; i++) {
   in.read();
  }

  // Data follows, so we can copy it to the output.
  final byte[] buf = new byte[4096];
  while (cmpSz &gt; 0) {
   final int desired = cmpSz &gt; buf.length ? buf.length : cmpSz;
   final int len = in.read(buf, 0, desired);
   if (len == 0) {
    throw new EOFException();
   }
   out.write(buf, 0, len);
   cmpSz -= len;
  }

  // The output still needs the CRC32 and the uncompressed size.
  out.write(crc1);
  out.write(crc2);
  out.write(crc3);
  out.write(crc4);
  out.write(ucmpSz1);
  out.write(ucmpSz2);
  out.write(ucmpSz3);
  out.write(ucmpSz4);

  // Done. Be tidy.
  out.close();
  in.close();
 }
}
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2168156697500940456-6395372893736955641?l=blog.slackers.se' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tOoyyKHIPjaoM9L2Ywa8Nav7syM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tOoyyKHIPjaoM9L2Ywa8Nav7syM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tOoyyKHIPjaoM9L2Ywa8Nav7syM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tOoyyKHIPjaoM9L2Ywa8Nav7syM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/devslackers/~4/WxVBfN9lLDc" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/devslackers/~3/WxVBfN9lLDc/java-4k-competition-2011.html</link><author>noreply@blogger.com (Erik Byström)</author><thr:total>1</thr:total><georss:featurename>Ban Tai, Ko Pha-ngan, Surat Thani 86000, Thailand</georss:featurename><georss:point>9.675299442387837 100.06339073181152</georss:point><georss:box>9.664723442387837 100.04879973181153 9.685875442387838 100.07798173181152</georss:box><feedburner:origLink>http://blog.slackers.se/2011/01/java-4k-competition-2011.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-9149632897592007235</guid><pubDate>Wed, 12 Jan 2011 02:53:00 +0000</pubDate><atom:updated>2011-06-05T12:44:06.187+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">charity</category><category domain="http://www.blogger.com/atom/ns#">rubik</category><title>Cubing for charity</title><description>The last couple of months I've been traveling in Asia and come face to face with the extreme poverty here. Of course I've heard the news, seen the pictures and read the facts but it's not the same as actually seeing it with your own eyes. I felt like I had to do something. So I've decided that until the profit from the ads in &lt;a href="http://code.google.com/p/rubiks-cube-algorithms/"&gt;Rubik's Cube Algorithms&lt;/a&gt; (and other apps) reaches a substantial part of my normal income, it will be donated to charity. I know this is kind of a feel-good-move on my part since the amount of money spent by me for the sole purpose of traveling is infinitely more than the profit from the ads. But at least it's something and I will continue with the donations on each payment from &lt;a href="http://www.admob.com"&gt;admob&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The first donation goes to &lt;a href="http://www.hihseed.org/"&gt;Hand in Hand&lt;/a&gt; whose objective is:&lt;br /&gt;
&lt;blockquote&gt;Our objective is to eliminate poverty by creating jobs. We do this through our unique holistic approach that tackles the areas that matter the most to poor communities – microfinance, education, health, information, and environment.&lt;/blockquote&gt;The amount donated is £17.00 GBP (&lt;a href="http://www.google.com/search?sourceid=chrome&amp;ie=UTF-8&amp;q=what+is+17+GBD+in+USD"&gt;$26 USD&lt;/a&gt;). It's not much, but according to &lt;a href="http://www.hihseed.org/"&gt;Hand in Hand&lt;/a&gt; it will at least &lt;a href="http://www.hihseed.org/what-we-do/what-it-costs/"&gt;"Provide one woman with entrepreneurial training to start her own business"&lt;/a&gt;.&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/_t87T7e9lZh4/TS0T_T1VdAI/AAAAAAAAB9Q/zBZg2xeWQq0/s1600/paypal-handinhand.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="160" width="320" src="http://2.bp.blogspot.com/_t87T7e9lZh4/TS0T_T1VdAI/AAAAAAAAB9Q/zBZg2xeWQq0/s320/paypal-handinhand.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2168156697500940456-9149632897592007235?l=blog.slackers.se' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OIoszFDRiFUGFMZD1FYk0ld8o9Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OIoszFDRiFUGFMZD1FYk0ld8o9Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OIoszFDRiFUGFMZD1FYk0ld8o9Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OIoszFDRiFUGFMZD1FYk0ld8o9Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/devslackers/~4/AjZk7lBFXfY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/devslackers/~3/AjZk7lBFXfY/cubing-for-charity.html</link><author>noreply@blogger.com (Erik Byström)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_t87T7e9lZh4/TS0T_T1VdAI/AAAAAAAAB9Q/zBZg2xeWQq0/s72-c/paypal-handinhand.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.slackers.se/2011/01/cubing-for-charity.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-5407460101656526534</guid><pubDate>Thu, 06 Jan 2011 11:37:00 +0000</pubDate><atom:updated>2011-01-06T12:37:59.902+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">floatheader</category><category domain="http://www.blogger.com/atom/ns#">jquery</category><title>Floating header plugin v1.4.0</title><description>Due to a very nice patch submitted by Jason Axley i've release a new version of the plugin. The changes are a lot of performance optimizations including lazy creation of the floating-clones.&lt;br /&gt;
Look at my &lt;a href="http://blog.slackers.se/2009/07/jquery-floating-table-header-plugin.html"&gt;old post&lt;/a&gt; or the &lt;a href="http://plugins.jquery.com/project/floatHeader"&gt;jQuery project page&lt;/a&gt; for more information about the plugin.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2168156697500940456-5407460101656526534?l=blog.slackers.se' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cpzIyJaddv596bAeprhH6lCZG8Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cpzIyJaddv596bAeprhH6lCZG8Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/cpzIyJaddv596bAeprhH6lCZG8Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cpzIyJaddv596bAeprhH6lCZG8Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/devslackers/~4/J8N_3MX4vvY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/devslackers/~3/J8N_3MX4vvY/floating-header-plugin-v140.html</link><author>noreply@blogger.com (Erik Byström)</author><thr:total>0</thr:total><georss:featurename>Ko Tao, Ko Pha-ngan, Surat Thani, Thailand</georss:featurename><georss:point>10.084811668889987 99.82658386230469</georss:point><georss:box>10.042559168889987 99.76821886230469 10.127064168889987 99.88494886230468</georss:box><feedburner:origLink>http://blog.slackers.se/2011/01/floating-header-plugin-v140.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-5251353354418962039</guid><pubDate>Wed, 01 Sep 2010 10:48:00 +0000</pubDate><atom:updated>2010-09-01T12:48:01.220+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cube algorithms</category><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">android</category><title>10k downloads for Cube Algorithms</title><description>A milestone has been reached for my first android app &lt;a href="http://www.appbrain.com/app/se.slackers.cube"&gt;Rubik's Cube Algorithms&lt;/a&gt;. It now has 10000 downloads and almost 2500 active installs. Considering the very small audience of this app there is a huge potential to reach users through the Android market.&lt;br /&gt;
&lt;br /&gt;
I've learned tons of stuff releasing this app, not so much about programming but of how to handle user comments, feature requests, bug corrections and just make to TEST before you release. &lt;br /&gt;
&lt;br /&gt;
Obviously you want a good rating of the app on Android market but it's surprisingly hard to not care when someone give it a bad rating. Even if the comment suggests that the user doesn't know what he's talking about:&lt;br /&gt;
&lt;blockquote&gt;I thought this was going to be like a vertual rubics cube little did i know its faaarr from it[,] this stuff is like triginomatry&lt;/blockquote&gt;This user gave the app a rating of one, even though he clearly didn't read the description of the app. Not everyone will like what you're doing, no matter how much effort you put into it.&lt;br /&gt;
&lt;br /&gt;
I've also seen a few users reporting bugs in app comments. Which is frustrating since i can't contact them through the comment system and i don't think they realize this. It would be really nice to have an issue tracker integrated into android market, to be able to communicate to the users what bugs that exists and what i'm working on.&lt;br /&gt;
&lt;br /&gt;
Anyway, i'm happy that some people appreciate the app because I've put a lot of hours into it. And hopefully i can iron out the few existing bugs in the coming releases. But right now I will continue my vacation over in Asia until spring.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2168156697500940456-5251353354418962039?l=blog.slackers.se' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yWrN5U9E-IXyESpd95bY-WLJLDo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yWrN5U9E-IXyESpd95bY-WLJLDo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/yWrN5U9E-IXyESpd95bY-WLJLDo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yWrN5U9E-IXyESpd95bY-WLJLDo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/devslackers/~4/YO27hPR__ps" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/devslackers/~3/YO27hPR__ps/10k-downloads-for-cube-algorithms.html</link><author>noreply@blogger.com (Erik Byström)</author><thr:total>0</thr:total><georss:featurename>Bergnäset, Luleå, Sverige</georss:featurename><georss:point>65.57578470115752 22.095394134521484</georss:point><georss:box>65.57134820115752 22.080803134521485 65.58022120115751 22.109985134521484</georss:box><feedburner:origLink>http://blog.slackers.se/2010/09/10k-downloads-for-cube-algorithms.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-1443455151101815308</guid><pubDate>Thu, 08 Jul 2010 08:48:00 +0000</pubDate><atom:updated>2010-07-08T10:48:58.950+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">floatheader</category><title>Floating header plugin v1.2.0</title><description>Finally I've taken the time to fix some bugs and released v1.2.0 of the floating header plugin. Take a look at my &lt;a href="http://blog.slackers.se/2009/07/jquery-floating-table-header-plugin.html"&gt;main post&lt;/a&gt; or the &lt;a href="http://plugins.jquery.com/project/floatHeader"&gt;jQuery project page&lt;/a&gt; for more information.&lt;br /&gt;
&lt;br /&gt;
There are still a strange bug that i can't really reproduce locally. It only appears on my demo page, the blinking and reposition of the header on fade in/out from the bottom. If anyone have any suggestions please send them to me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2168156697500940456-1443455151101815308?l=blog.slackers.se' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zfZ61a9OcOe8Nr52ISb-AJsaYpM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zfZ61a9OcOe8Nr52ISb-AJsaYpM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zfZ61a9OcOe8Nr52ISb-AJsaYpM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zfZ61a9OcOe8Nr52ISb-AJsaYpM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/devslackers/~4/ynhaj6ZsO-s" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/devslackers/~3/ynhaj6ZsO-s/floating-header-plugin-v120.html</link><author>noreply@blogger.com (Erik Byström)</author><thr:total>1</thr:total><feedburner:origLink>http://blog.slackers.se/2010/07/floating-header-plugin-v120.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-4579866510950104112</guid><pubDate>Thu, 24 Jun 2010 12:47:00 +0000</pubDate><atom:updated>2010-06-24T14:47:33.279+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">hibernate</category><category domain="http://www.blogger.com/atom/ns#">haiku</category><title>Hibernate error message haiku</title><description>A couple of weeks ago i got this error message from Hibernate. The only change i've done is to remove the word "an" from it.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;CriterionImpl&lt;br /&gt;
dimension references&lt;br /&gt;
(an) unknown entity&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2168156697500940456-4579866510950104112?l=blog.slackers.se' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/bPjqO-NZ4jKIQR-YIqF0cWFrqQg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bPjqO-NZ4jKIQR-YIqF0cWFrqQg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/bPjqO-NZ4jKIQR-YIqF0cWFrqQg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bPjqO-NZ4jKIQR-YIqF0cWFrqQg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/devslackers/~4/e7K5vYXZCoc" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/devslackers/~3/e7K5vYXZCoc/hibernate-error-message-haiku.html</link><author>noreply@blogger.com (Erik Byström)</author><thr:total>1</thr:total><feedburner:origLink>http://blog.slackers.se/2010/06/hibernate-error-message-haiku.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-7583727380240936513</guid><pubDate>Sun, 16 May 2010 20:48:00 +0000</pubDate><atom:updated>2010-05-16T22:50:06.918+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">flattr</category><category domain="http://www.blogger.com/atom/ns#">android</category><category domain="http://www.blogger.com/atom/ns#">rubik</category><title>Android cubing and flattr</title><description>Long time since I've posted anything so i think an update of what i've been up to is about time.I've been trying my wings on the android SDK with a very &lt;a href="http://android.slackers.se"&gt;simple application&lt;/a&gt; for showing all OLL/PLL algorithms (&lt;a href="http://cubefreak.net"&gt;cubefreak.net&lt;/a&gt; for more cube related stuff).&lt;br /&gt;
Also I've got my beta invite for &lt;a href="http://flattr.com"&gt;flattr&lt;/a&gt; yesterday and i really like the idea behind it. So I've added &lt;a href="http://flattr.com"&gt;flattr&lt;/a&gt; buttons on all my blog posts! Read more about flattr on &lt;a href="http://flattr.com"&gt;their homepage&lt;/a&gt; or at &lt;a href="http://en.wikipedia.org/wiki/Flattr"&gt;wikipedia&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2168156697500940456-7583727380240936513?l=blog.slackers.se' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/i0uHYOuaBFJwZXAIBlYrniJZYuc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i0uHYOuaBFJwZXAIBlYrniJZYuc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/i0uHYOuaBFJwZXAIBlYrniJZYuc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i0uHYOuaBFJwZXAIBlYrniJZYuc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/devslackers/~4/WMYaCsv0H-4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/devslackers/~3/WMYaCsv0H-4/android-cubing-and-flattr.html</link><author>noreply@blogger.com (Erik Byström)</author><thr:total>2</thr:total><feedburner:origLink>http://blog.slackers.se/2010/05/android-cubing-and-flattr.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-440251336895481169</guid><pubDate>Mon, 01 Mar 2010 06:59:00 +0000</pubDate><atom:updated>2010-03-01T07:59:39.688+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">4k</category><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">game</category><title>Java4k: Geometry wars clone</title><description>This year i didn't miss the deadline for the &lt;a href="http://java4k.com"&gt;java4k&lt;/a&gt; competition! I made a geometry wars clone and it can be found and played on &lt;a href="http://java4k.com/index.php?action=games&amp;method=view&amp;gid=294"&gt;their site&lt;/a&gt; and also on my new &lt;a href="http://porkangel.com/g/g4k/"&gt;game project site&lt;/a&gt;.&lt;br /&gt;
All my projects that are classified as 'games' have been put on &lt;a href="http://porkangel.com"&gt;porkangel.com&lt;/a&gt;, though it desperately needs the attention of a real designer :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2168156697500940456-440251336895481169?l=blog.slackers.se' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/04lYrZ6rsGaJoMSaBDQcV9313ZA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/04lYrZ6rsGaJoMSaBDQcV9313ZA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/04lYrZ6rsGaJoMSaBDQcV9313ZA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/04lYrZ6rsGaJoMSaBDQcV9313ZA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/devslackers/~4/oLISrTFQ3hY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/devslackers/~3/oLISrTFQ3hY/java4k-geometry-wars-clone.html</link><author>noreply@blogger.com (Erik Byström)</author><thr:total>2</thr:total><feedburner:origLink>http://blog.slackers.se/2010/03/java4k-geometry-wars-clone.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-7053057407221509019</guid><pubDate>Mon, 25 Jan 2010 08:53:00 +0000</pubDate><atom:updated>2010-02-02T10:30:29.126+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">gwt</category><category domain="http://www.blogger.com/atom/ns#">eclipse</category><category domain="http://www.blogger.com/atom/ns#">maven</category><title>No URL showing in GWT 2.0 Development mode</title><description>I've had some problems starting GWT 2.0 projects in Eclipse with the build-in Jetty server. The problem was that no URL was showing in the Development Mode tab, and the project didn't seem to start properly. This problem only occures when i generate project files with the maven-eclipse-plugin. Both in Linux and Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To fix the problem, add the project natures by hand to the maven-eclipse-plugin configuration. This is what my configuration looks like:&lt;br /&gt;
&lt;pre name="code" class="xml"&gt;&lt;!-- Eclipse Project Generation --&gt;
&lt;plugin&gt;
 &lt;artifactid&gt;maven-eclipse-plugin&lt;/artifactId&gt;
 &lt;configuration&gt;
  &lt;additionalprojectnatures&gt;
   &lt;projectnature&gt;com.google.gwt.eclipse.core.gwtNature&lt;/projectnature&gt;
   &lt;projectnature&gt;com.google.gdt.eclipse.core.webAppNature&lt;/projectnature&gt;
  &lt;/additionalProjectnatures&gt;
  &lt;additionalbuildcommands&gt;
   &lt;buildcommand&gt;com.google.gwt.eclipse.core.gwtProjectValidator&lt;/buildcommand&gt;
   &lt;buildcommand&gt;com.google.gdt.eclipse.core.webAppProjectValidator&lt;/buildcommand&gt;
  &lt;/additionalBuildcommands&gt;
  &lt;classpathcontainers&gt;
   &lt;classpathcontainer&gt;org.eclipse.jdt.launching.JRE_CONTAINER&lt;/classpathContainer&gt;
   &lt;classpathcontainer&gt;com.google.gwt.eclipse.core.GWT_CONTAINER&lt;/classpathContainer&gt;
  &lt;/classpathContainers&gt;
  &lt;excludes&gt;
   &lt;!-- Provided by the GWT container --&gt;
   &lt;exclude&gt;com.google.gwt:gwt-user&lt;/exclude&gt;
   &lt;exclude&gt;com.google.gwt:gwt-dev&lt;/exclude&gt;
  &lt;/excludes&gt;
 &lt;/configuration&gt;
&lt;/plugin&gt;
&lt;/pre&gt;&lt;br /&gt;
If you find something that isn't necessary please reply to this post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2168156697500940456-7053057407221509019?l=blog.slackers.se' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tCH2W88RxxlNwHzq2vGKoqCgwAg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tCH2W88RxxlNwHzq2vGKoqCgwAg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tCH2W88RxxlNwHzq2vGKoqCgwAg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tCH2W88RxxlNwHzq2vGKoqCgwAg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/devslackers/~4/brDg3vWInDw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/devslackers/~3/brDg3vWInDw/no-url-showing-in-gwt-20-development.html</link><author>noreply@blogger.com (Erik Byström)</author><thr:total>7</thr:total><feedburner:origLink>http://blog.slackers.se/2010/01/no-url-showing-in-gwt-20-development.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-6610499930191030313</guid><pubDate>Tue, 19 Jan 2010 10:28:00 +0000</pubDate><atom:updated>2010-01-19T11:37:44.312+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">quakelive</category><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">gwt</category><title>"Statistics" for QuakeLive</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;At work we're using GWT for a couple of projects now but we have never used the&amp;nbsp;&lt;a href="http://code.google.com/webtoolkit/doc/latest/tutorial/mvp-architecture.html"&gt;MVP pattern&lt;/a&gt;&amp;nbsp;recommended by Google. So to learn it i wrote a small application called Quake Statistics that uses the recomendations. The app pulls data from&amp;nbsp;&lt;a href="http://quakelive.com/"&gt;quakelive.com&lt;/a&gt;&amp;nbsp;each night and can plot the it along with some very basic analysis.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://1.bp.blogspot.com/_t87T7e9lZh4/S1V_WzlyeNI/AAAAAAAABGI/0jZRW8eAVu4/s1600/quakestats.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_t87T7e9lZh4/S1V_WzlyeNI/AAAAAAAABGI/0jZRW8eAVu4/s200/quakestats.jpg" /&gt;&lt;/a&gt;It's actually motivation to see if you're getting better at the game. Of course this was also an excuse to get to play quakelive more, to test the stats :)&lt;br /&gt;
The application can be accessed at&amp;nbsp;&lt;a href="http://quakestatistics.appspot.com/"&gt;http://quakestatistics.appspot.com&lt;/a&gt;&amp;nbsp;and if you want to play around with some example data you can try &lt;a href="http://quakestatistics.appspot.com/#ql;user=bryskel"&gt;my profile&lt;/a&gt;. Since i don't have that many users the page can be a bit slow because AppEngine have to restart after 1 min idle time.&lt;br /&gt;
&lt;br /&gt;
Yes, i know. The design desperately need some (a lot of)&amp;nbsp;improvements&amp;nbsp;but unfortunately i'm a programmer not a designer. Right now I am in the process of rewriting the app for GWT 2.0 so if you want to help with the design and/or&amp;nbsp;have some suggestions&amp;nbsp;don't hesitate to contact me.&lt;br /&gt;
&lt;br /&gt;
Application url:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://quakestatistics.appspot.com/"&gt;http://quakestatistics.appspot.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://quakestatistics.appspot.com/#ql;user=bryskel"&gt;http://quakestatistics.appspot.com/#ql;user=bryskel&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;Recommended&amp;nbsp;GWT MVP reading:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://blog.hivedevelopment.co.uk/2009/08/google-web-toolkit-gwt-mvp-example.html"&gt;MVP example at hive development&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://groups.google.com/group/gwt-presenter"&gt;gwt-presenter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://groups.google.com/group/gwt-dispatch"&gt;gwt-dispatch&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2168156697500940456-6610499930191030313?l=blog.slackers.se' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vK5d0b3BEYVqYA9BSL506fIeH7g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vK5d0b3BEYVqYA9BSL506fIeH7g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vK5d0b3BEYVqYA9BSL506fIeH7g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vK5d0b3BEYVqYA9BSL506fIeH7g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/devslackers/~4/dpiduxlEgUo" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/devslackers/~3/dpiduxlEgUo/statistics-for-quakelive.html</link><author>noreply@blogger.com (Erik Byström)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_t87T7e9lZh4/S1V_WzlyeNI/AAAAAAAABGI/0jZRW8eAVu4/s72-c/quakestats.jpg" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://blog.slackers.se/2010/01/statistics-for-quakelive.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-3858683535987764121</guid><pubDate>Sat, 26 Dec 2009 12:16:00 +0000</pubDate><atom:updated>2011-01-12T03:57:06.128+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">php</category><category domain="http://www.blogger.com/atom/ns#">environment</category><title>Environmentally friendly programming</title><description>When someone talks about CO2 emission, we usually think about big industries, cars and light switches. We don't think about code efficiency. But "bad" code is actually bad for the environment.&lt;br /&gt;
&lt;br /&gt;
A couple of days ago I read a &lt;a href="http://www.webtoolkit.eu/wt#/blog/2009/12/17/facebook__php__is_not_very_kopenhagen"&gt;post&lt;/a&gt; that made me think about programming and the environment. It's not a long post and i recommend all developers to read it. The conclusion of it was that:&lt;br /&gt;
&lt;blockquote&gt;If C++ would have been used instead of PHP [on facebook], then 22 500 servers could be powered down (assuming a conservative ratio of 10 for the efficiency of C++ versus PHP code), or a reduction of 49 000 ton [CO2].&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
In a small scale it doesn't matter much if you write inefficient code. But if you're working on applications/systems that will be run by a lot of people, especially in a server environment, the difference is huge. I'm not suggesting that we should super optimize our code, because code that is too optimized is often hard to maintain and might cause similar effects.&lt;br /&gt;
&lt;br /&gt;
I've boiled my thoughts down to these two "guidelines", which at least I will think more about when choosing the tools for the next project i'm involved in:&lt;br /&gt;
&lt;br /&gt;
1. Choose a language that is as efficient as possible without loosing too much of the ability to test and maintain the code. &lt;br /&gt;
&lt;br /&gt;
2. Try to use the JVM or .NET. Optimizations of the entire platform will affect all languages that uses it. There is also a change of more efficient languages on that platform.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2168156697500940456-3858683535987764121?l=blog.slackers.se' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/imTQ00by7RQpRORszBs1hDWfPWo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/imTQ00by7RQpRORszBs1hDWfPWo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/imTQ00by7RQpRORszBs1hDWfPWo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/imTQ00by7RQpRORszBs1hDWfPWo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/devslackers/~4/GDCHC-e0iec" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/devslackers/~3/GDCHC-e0iec/environmentally-friendly-programming.html</link><author>noreply@blogger.com (Erik Byström)</author><thr:total>0</thr:total><feedburner:origLink>http://blog.slackers.se/2009/12/environmentally-friendly-programming.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-1068772352356773569</guid><pubDate>Sat, 12 Dec 2009 15:19:00 +0000</pubDate><atom:updated>2009-12-12T16:19:54.571+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">floatheader</category><category domain="http://www.blogger.com/atom/ns#">jquery</category><title>jQuery Floating Header Plugin v1.1.1</title><description>New version out which fixes a lot of problems width CSS selectors.&lt;br /&gt;
&lt;br /&gt;
Check out the plugin on my &lt;a href="http://static.slackers.se/pages/javascript/jquery-floatheader/"&gt;old post&lt;/a&gt;, or on &lt;a href="http://plugins.jquery.com/project/floatHeader"&gt;jQuery.com&lt;/a&gt;, or at the new &lt;a href="http://code.google.com/p/slackers-se/wiki/FloatingHeader"&gt;google code project page&lt;/a&gt; for all my little projects.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2168156697500940456-1068772352356773569?l=blog.slackers.se' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JOBZJFULsV3Q9OkqDLMv28zs_Wo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JOBZJFULsV3Q9OkqDLMv28zs_Wo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JOBZJFULsV3Q9OkqDLMv28zs_Wo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JOBZJFULsV3Q9OkqDLMv28zs_Wo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/devslackers/~4/vuUsQ4Ok5wg" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/devslackers/~3/vuUsQ4Ok5wg/jquery-floating-header-plugin-v111.html</link><author>noreply@blogger.com (Erik Byström)</author><thr:total>7</thr:total><feedburner:origLink>http://blog.slackers.se/2009/12/jquery-floating-header-plugin-v111.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-5807189950248101139</guid><pubDate>Mon, 19 Oct 2009 08:58:00 +0000</pubDate><atom:updated>2009-10-19T10:59:10.329+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">floatheader</category><category domain="http://www.blogger.com/atom/ns#">jquery</category><title>jQuery Floating Header Plugin v1.1.0</title><description>After many bad versions and patches on the plugin i've managed to actually test it with a bunch of browsers and i must say that it's working pretty good. There are of course still some issues on IE6, but since everyone hates that browser i don't really care.&lt;br /&gt;
Check out the plugin on my &lt;a href="http://static.slackers.se/pages/javascript/jquery-floatheader/"&gt;old post&lt;/a&gt;, or on &lt;a href="http://plugins.jquery.com/project/floatHeader"&gt;jQuery.com&lt;/a&gt;, or at the new &lt;a href="http://code.google.com/p/slackers-se/wiki/FloatingHeader"&gt;google code project page&lt;/a&gt; for all my little projects.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2168156697500940456-5807189950248101139?l=blog.slackers.se' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DTnbBo_D743TjhDQGZXg8tLA2SM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DTnbBo_D743TjhDQGZXg8tLA2SM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DTnbBo_D743TjhDQGZXg8tLA2SM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DTnbBo_D743TjhDQGZXg8tLA2SM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/devslackers/~4/1V9VxcSk3TE" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/devslackers/~3/1V9VxcSk3TE/jquery-floating-header-plugin-v110.html</link><author>noreply@blogger.com (Erik Byström)</author><thr:total>2</thr:total><feedburner:origLink>http://blog.slackers.se/2009/10/jquery-floating-header-plugin-v110.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-457609167210058917</guid><pubDate>Wed, 07 Oct 2009 08:33:00 +0000</pubDate><atom:updated>2009-10-07T10:33:43.568+02:00</atom:updated><title>jQuery floating header plugin 1.0.6 released</title><description>Finally the plugin have some support for IE6 and 7. Read more on the current &lt;a href="http://blog.slackers.se/2009/07/jquery-floating-table-header-plugin.html"&gt;project page&lt;/a&gt;. I've also decided to gradually migrate the project to my &lt;a href="http://code.google.com/p/slackers-se/"&gt;Google Code project&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2168156697500940456-457609167210058917?l=blog.slackers.se' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fSmz-2K9j2dSYrxE4kt1RjQep2I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fSmz-2K9j2dSYrxE4kt1RjQep2I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fSmz-2K9j2dSYrxE4kt1RjQep2I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fSmz-2K9j2dSYrxE4kt1RjQep2I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/devslackers/~4/qQj9VmoPYv8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/devslackers/~3/qQj9VmoPYv8/jquery-floating-header-plugin-106.html</link><author>noreply@blogger.com (Erik Byström)</author><thr:total>0</thr:total><feedburner:origLink>http://blog.slackers.se/2009/10/jquery-floating-header-plugin-106.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-962263446439447783</guid><pubDate>Wed, 09 Sep 2009 10:40:00 +0000</pubDate><atom:updated>2009-09-09T12:40:56.532+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">eclipse</category><title>Eclipse Resource Filtering</title><description>Today i found a solution to the single most irritating thing with Eclipse. To not be able to filter away resources from the Open Resource dialog. This was of course  possible but I've never even thought about it until a coworker passed me this &lt;a href="http://www.blogger.com/post-create.g?blogID=2168156697500940456"&gt;link&lt;/a&gt;. I quote:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;The trick is to open the "Navigator" view, right click on the folder to be ignored, and check the "Derived" property. This option informs Eclipse that this folder consists of generated resources that should not be directly edited. Once this is done, the "Open Resource..." view will only show matches that would be relevant to the developer.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2168156697500940456-962263446439447783?l=blog.slackers.se' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Mzn20i4nGjKL-ts7YuOzUTl5p60/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Mzn20i4nGjKL-ts7YuOzUTl5p60/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Mzn20i4nGjKL-ts7YuOzUTl5p60/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Mzn20i4nGjKL-ts7YuOzUTl5p60/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/devslackers/~4/pvugprj1lj4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/devslackers/~3/pvugprj1lj4/eclipse-resource-filtering.html</link><author>noreply@blogger.com (Erik Byström)</author><thr:total>3</thr:total><feedburner:origLink>http://blog.slackers.se/2009/09/eclipse-resource-filtering.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-7568637718207047427</guid><pubDate>Tue, 08 Sep 2009 08:14:00 +0000</pubDate><atom:updated>2009-09-09T12:41:20.768+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">gwt</category><category domain="http://www.blogger.com/atom/ns#">jsf</category><title>Getting a FacesContext from a GWT service</title><description>I'm working on a project where we needed to integrate JSF and GWT. To be more specific, we needed to have access to JSF beans in the GWT services.&lt;br /&gt;
&lt;br /&gt;
Because I missed the methods getThreadLocalRequest() and getThreadLocalResponse() in RemoteServiceServlet, I had to search quite a bit before i found an answer to this problem. So to save others some time i post the class i came up with.&lt;br /&gt;
&lt;br /&gt;
Most of the code is taken from an article at &lt;a href="http://ocpsoft.com/java/jsf-java/please-tell-your-developers-to-call-facescontextrelease/"&gt;ocpsoft.com&lt;/a&gt; which also points out how important it is to release the context when you're done with it. The big difference are the lines,&lt;br /&gt;
&lt;pre name="code" class="java"&gt;UIViewRoot view = facesContext.getApplication().getViewHandler().createView(facesContext, "gwtViewID");
facesContext.setViewRoot(view);
&lt;/pre&gt;, which sets the view root. If no view root is set you can't use, for instance MessageBundles.&lt;br /&gt;
&lt;br /&gt;
The getBean methods are only convenience methods for retrieving beans by name.&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="java"&gt;/**
 * A substitute for RemoteServiceServlet that has access to the FacesContext.
  */
@SuppressWarnings("serial")
public class FacesContextAwareRemoteServiceServlet extends RemoteServiceServlet {
 protected &lt;t&gt; T getBean(final Class&lt;t&gt; type) {
  String name = type.getSimpleName();
  name = name.substring(0, 1).toLowerCase().concat(name.substring(1));
  return getBean(name, type);
 }

 @SuppressWarnings("unchecked")
 protected &lt;t&gt; T getBean(final String name, final Class&lt;t&gt; type) {
  ELContext el = getFacesContext().getELContext();
  return (T) el.getELResolver().getValue(el, null, name);
 }

 /**
  * Returns the current FacesContext.
  */
 protected FacesContext getFacesContext() {
  return getFacesContext(getThreadLocalRequest(), getThreadLocalResponse());
 }

 /**
  * Should be called when the FacesContext aren't needed any more.
  */
 protected void releaseFacesContext() {
  FacesContext facesContext = FacesContext.getCurrentInstance();
  if (facesContext != null) {
   facesContext.release();
   InnerFacesContext.setFacesContextAsCurrentInstance(null);
  }
 }

 private FacesContext getFacesContext(ServletRequest request, ServletResponse response) {
  FacesContext facesContext = FacesContext.getCurrentInstance();
  if (facesContext != null) {
   return facesContext;
  }

  FacesContextFactory contextFactory = (FacesContextFactory) FactoryFinder
    .getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);
  LifecycleFactory lifecycleFactory = (LifecycleFactory) FactoryFinder
    .getFactory(FactoryFinder.LIFECYCLE_FACTORY);
  Lifecycle lifecycle = lifecycleFactory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE);

  ServletContext servletContext = ((HttpServletRequest) request).getSession().getServletContext();
  facesContext = contextFactory.getFacesContext(servletContext, request, response, lifecycle);

  InnerFacesContext.setFacesContextAsCurrentInstance(facesContext);
  
  UIViewRoot view = facesContext.getApplication().getViewHandler().createView(facesContext, "gwtViewID");
  facesContext.setViewRoot(view);

  return facesContext;
 }

 private abstract static class InnerFacesContext extends FacesContext {
  protected static void setFacesContextAsCurrentInstance(final FacesContext facesContext) {
   FacesContext.setCurrentInstance(facesContext);
  }
 }

}
&lt;/pre&gt;&lt;a href="http://gist.github.com/182776"&gt;Get from github&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2168156697500940456-7568637718207047427?l=blog.slackers.se' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NPmyWhYQ0BR0BaP9J__8YDtQxmU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NPmyWhYQ0BR0BaP9J__8YDtQxmU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/NPmyWhYQ0BR0BaP9J__8YDtQxmU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NPmyWhYQ0BR0BaP9J__8YDtQxmU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/devslackers/~4/cj01jZ0Kxjo" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/devslackers/~3/cj01jZ0Kxjo/facescontext-from-gwt-service.html</link><author>noreply@blogger.com (Erik Byström)</author><thr:total>2</thr:total><feedburner:origLink>http://blog.slackers.se/2009/09/facescontext-from-gwt-service.html</feedburner:origLink></item></channel></rss>

