<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-2168156697500940456</atom:id><lastBuildDate>Fri, 07 Aug 2026 03:34:37 +0000</lastBuildDate><category>java</category><category>javascript</category><category>jquery</category><category>eclipse</category><category>floatheader</category><category>gwt</category><category>liero</category><category>4k</category><category>android</category><category>charity</category><category>rubik</category><category>game</category><category>linux</category><category>ubiquity</category><category>wordpress</category><category>3d</category><category>canvas</category><category>configuration</category><category>firefox</category><category>hosting</category><category>mask</category><category>maven</category><category>php</category><category>plugin</category><category>python</category><category>spotify</category><category>#spectrial</category><category>/tmp</category><category>1984</category><category>404</category><category>ACTA</category><category>BIRT</category><category>FRA</category><category>IPRED</category><category>VR</category><category>applet</category><category>bitbucket</category><category>code-pool</category><category>cube algorithms</category><category>demo</category><category>environment</category><category>exception</category><category>facebook</category><category>firebug</category><category>flattr</category><category>flowers</category><category>fractal</category><category>git</category><category>gitosis</category><category>haiku</category><category>hibernate</category><category>host</category><category>how-to</category><category>hudson</category><category>ie7</category><category>jboss</category><category>jfreechart</category><category>jsf</category><category>motivation</category><category>performance</category><category>permalink</category><category>physics</category><category>politics</category><category>quakelive</category><category>rekill</category><category>revision</category><category>stanford</category><category>steve jobs</category><category>tmpfs</category><category>truism</category><category>ubuntu</category><category>windows</category><category>working</category><category>youtube</category><title>slackers.se</title><description>Lazy by default</description><link>http://blog.slackers.se/</link><managingEditor>noreply@blogger.com (Erik)</managingEditor><generator>Blogger</generator><openSearch:totalResults>64</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-6718823545646883429</guid><pubDate>Sun, 25 Sep 2016 14:57:00 +0000</pubDate><atom:updated>2016-09-26T20:42:31.111+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">demo</category><category domain="http://www.blogger.com/atom/ns#">revision</category><category domain="http://www.blogger.com/atom/ns#">VR</category><title>Seascape - OpenVR adaptation of a 4k intro</title><description>At Revision this year I competed in the 4k intro competition with an intro called &#39;falling&#39;. Because I&#39;ve been doing a lot of VR related stuff lately I decided to convert the intro into an interactive VR experience(?).&lt;br /&gt;
&lt;br /&gt;
The original shader is a single raymarched scene which means that demo is very demanding on the GPU. But you can provide a scale factor for the framebuffers on the command line to get acceptable framerate.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfw2Tlq-Y1CY4rRqzHWlSvNvxGfjRVEXixD3_bie3E0USB88TTRdRkvKaZ0mx_brRR4WcU5QGbDh7e7LYRlWfWKoL7Zgq0hdRzlymWAQdW0E3BRf9iC0zgQ-9NYSjmVnUtE9nRYYuA37s/s1600/seascape.jpg&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfw2Tlq-Y1CY4rRqzHWlSvNvxGfjRVEXixD3_bie3E0USB88TTRdRkvKaZ0mx_brRR4WcU5QGbDh7e7LYRlWfWKoL7Zgq0hdRzlymWAQdW0E3BRf9iC0zgQ-9NYSjmVnUtE9nRYYuA37s/s320/seascape.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The binaries are compiled for Windows 10 and can be downloaded &lt;a href=&quot;https://goo.gl/CGKDNb&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I suggest putting on some nice background music like&amp;nbsp;&lt;a href=&quot;https://www.youtube.com/watch?v=9dq6Zp10tb4&quot;&gt;Röyksopp&lt;/a&gt;&amp;nbsp;for maximum effect.&lt;br /&gt;
&lt;br /&gt;
If you&#39;re not that into VR you can go over to Shadertoy and watch the intro instead,&amp;nbsp;&lt;a href=&quot;https://www.shadertoy.com/view/4dcSDN&quot;&gt;https://www.shadertoy.com/view/4dcSDN&lt;/a&gt;.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</description><link>http://blog.slackers.se/2016/09/seascape-openvr-adaptation-of-4k-intro.html</link><author>noreply@blogger.com (Erik)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfw2Tlq-Y1CY4rRqzHWlSvNvxGfjRVEXixD3_bie3E0USB88TTRdRkvKaZ0mx_brRR4WcU5QGbDh7e7LYRlWfWKoL7Zgq0hdRzlymWAQdW0E3BRf9iC0zgQ-9NYSjmVnUtE9nRYYuA37s/s72-c/seascape.jpg" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-3529615682421992214</guid><pubDate>Sun, 10 Mar 2013 11:15:00 +0000</pubDate><atom:updated>2013-03-10T12:24:33.377+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 2013 - Meltdown</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;http://java4k.com/index.php?action=games&amp;amp;method=view&amp;amp;gid=473&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhelVi5YSCL10130reeagcsAenahGDt45upFDpBMhFjkJtvJYavuKXRr5wQzFrfTv02rVrjuN4H8wOQgwYKY-0q2cX_aUAHr9Df-Su_WWNqQRF0I-d8TdFigiu4TTzUcugo27X_VDM6CRQ/s200/meltdown_500.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;i style=&quot;text-align: justify;&quot;&gt;In the wake of ‘Peak Oil’ in 2143, factions struggle to claim their share of the world&#39;s trickling reserve. But deep beneath the melting ice of Antarctica a new oil deposit has been discovered; the likes of which have never been seen. As private prospectors flock to the site like vultures to a corpse, you are the only thing standing between them and the fate of an entire world. Should you claim the oil and receive riches beyond your wildest dreams, or make sure it remains buried and maybe save a dying planet?&lt;/i&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Meltdown is my entry in this years Java 4k game competition. This year I teamed up with the game designer&amp;nbsp;Daniel Frostberg who created the actual concept while I focused on the code. The game is a 3d dogfight game with a little twist, you have to fight below the surface as well as above it. Or as the strategy guide put it:&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;i&gt;The Antarctic is an inhospitable place – especially with prospectors around, determined to eliminate all opposing competition. Luckily, your Black Gannet subcraft comes equipped with a fully automatic JLF3950 Chain Gun, an M1-R14M self-repairing hull and, of course, the ability to move through water as swiftly as through air.&lt;/i&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;i&gt;However, to fit such advanced technology into such a small craft, its manufacturer was forced to compromise in two key areas; engine cooling and oxygen supply. Effectively, this means that operating above the surface builds up heat which must be cooled down by entering the water. Reversely, operating below the surface uses up oxygen which in turn must be replenished by reemerging from the depths.&lt;/i&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;i&gt;This cycle can be used to your advantage, though, as enemies are bound to the same conditions and easily lose track of you when you switch elements. So check your gauges regularly and move between water and air to maximize your chance of survival.&lt;/i&gt;&lt;/blockquote&gt;
&lt;div&gt;
We&#39;re very happy with the result even though the game play might be a bit complicated for a 4k game. People in general tend to not read the instructions before playing a game, and when you don&#39;t have enough space for tutorials it can be a bit confusing.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The game can be found at &lt;a href=&quot;http://java4k.com/&quot;&gt;java4k.com&lt;/a&gt; or by going to:&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://java4k.com/index.php?action=games&amp;amp;method=view&amp;amp;gid=473&quot;&gt;http://java4k.com/index.php?action=games&amp;amp;method=view&amp;amp;gid=473&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Hurry up and play all the awesome games and cast your vote before the 15th of March!&lt;/div&gt;
</description><link>http://blog.slackers.se/2013/03/java-4k-2013-meltdown.html</link><author>noreply@blogger.com (Erik)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhelVi5YSCL10130reeagcsAenahGDt45upFDpBMhFjkJtvJYavuKXRr5wQzFrfTv02rVrjuN4H8wOQgwYKY-0q2cX_aUAHr9Df-Su_WWNqQRF0I-d8TdFigiu4TTzUcugo27X_VDM6CRQ/s72-c/meltdown_500.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-5539546495716731747</guid><pubDate>Sun, 19 Aug 2012 09:33:00 +0000</pubDate><atom:updated>2012-08-19T11:35:10.219+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">android</category><category domain="http://www.blogger.com/atom/ns#">charity</category><category domain="http://www.blogger.com/atom/ns#">rubik</category><title>Cubing for charity #4</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;The recent months I&#39;ve been neglecting my&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://blog.slackers.se/2011/01/cubing-for-charity.html&quot; style=&quot;text-align: left;&quot;&gt;Cubing for charity&lt;/a&gt;&amp;nbsp;project. But a&lt;span style=&quot;text-align: left;&quot;&gt;fter viewing a great&lt;/span&gt;&lt;span style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://www.ted.com/talks/lisa_kristine_glimpses_of_modern_day_slavery.html&quot; style=&quot;text-align: left;&quot;&gt;TED talk by Lisa Kristine&lt;/a&gt;&lt;span style=&quot;text-align: left;&quot;&gt;&amp;nbsp;about modern day slavery&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: left;&quot;&gt;I&#39;ve decided that the next&lt;/span&gt;&lt;span style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://blog.slackers.se/2011/01/cubing-for-charity.html&quot; style=&quot;text-align: left;&quot;&gt;Cubing for charity&lt;/a&gt;&lt;span style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: left;&quot;&gt;must go to&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://www.freetheslaves.net/&quot; style=&quot;text-align: left;&quot;&gt;Free the Slaves&lt;/a&gt;&lt;span style=&quot;text-align: left;&quot;&gt;.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsQ3GwfHOwIC0JXwX79dJoSl03uMpQ6SoVVijvIyze_3h-OxI5eoDfdEODEnUyfcZtDEjT8r6FwR_rhWF3afV7A1_X2xWJ_Sg4mBnEsyjFndCj7WZdwW01WcaTLNUlzz-8AqdgPVoJ94w/s1600/cubing4charity4.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;146&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsQ3GwfHOwIC0JXwX79dJoSl03uMpQ6SoVVijvIyze_3h-OxI5eoDfdEODEnUyfcZtDEjT8r6FwR_rhWF3afV7A1_X2xWJ_Sg4mBnEsyjFndCj7WZdwW01WcaTLNUlzz-8AqdgPVoJ94w/s400/cubing4charity4.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Thanks to all users &lt;a href=&quot;https://play.google.com/store/apps/details?id=se.slackers.cube&amp;amp;hl=en&quot;&gt;Rubik&#39;s Cube Algorithms&lt;/a&gt; who by their inherent nerdiness made this possible!&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
</description><link>http://blog.slackers.se/2012/08/cubing-for-charity-4.html</link><author>noreply@blogger.com (Erik)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsQ3GwfHOwIC0JXwX79dJoSl03uMpQ6SoVVijvIyze_3h-OxI5eoDfdEODEnUyfcZtDEjT8r6FwR_rhWF3afV7A1_X2xWJ_Sg4mBnEsyjFndCj7WZdwW01WcaTLNUlzz-8AqdgPVoJ94w/s72-c/cubing4charity4.jpg" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>Vickergatan 7, 118 61 Stockholm, Sweden</georss:featurename><georss:point>59.3074385082278 18.065299987792969</georss:point><georss:box>59.2750080082278 17.98633598779297 59.339869008227794 18.144263987792968</georss:box></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2168156697500940456.post-1681404641284217248</guid><pubDate>Mon, 12 Mar 2012 19:37:00 +0000</pubDate><atom:updated>2012-03-12T20:37:04.584+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>Java4k 2012 - PORT4K</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;a href=&quot;http://java4k.com/index.php?action=games&amp;amp;method=view&amp;amp;gid=394&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWr9AB458UTjdM_T7saE3lbbnfxUHR2I62E9N9BnZAs5wPSdcYlJK40eWIr4p_Vh67hnNzINeFl5ccoXDaoP1B12vzN5uTfKAQFyBcGPgIr5zaPb-eVbnCmi6St6qOEjblQ479yr_5O0s/s1600/P-screenshot.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
A couple of weeks ago the submission deadline for this year&#39;s java4k game compo was due. This year i was a close call, squeezed it down below 4k only a couple of days before deadline.&lt;br /&gt;
My mission was to make a game with music in it and it took a lot more time that anticipated. The game became a 2.5D demake of Portal which actually became quite fun to play but the simulation is bit buggy on some systems. &lt;br /&gt;
&lt;br /&gt;
The synth in the game is a 4-channel&amp;nbsp;beauty&amp;nbsp;with sine, square and noise oscillators. The only effect other than track volume is a delay loop for each channel. I recommend using headphones to hear the base frequencies.&amp;nbsp;All in all I&#39;m very&amp;nbsp;satisfied&amp;nbsp;with the end result. Both the music and the game is great.&lt;br /&gt;
&lt;br /&gt;
You can &lt;a href=&quot;http://java4k.com/index.php?action=games&amp;amp;method=view&amp;amp;gid=394&quot;&gt;play the game over at Java4k.com&lt;/a&gt;&amp;nbsp;and the tracker can be found at&amp;nbsp;&lt;a href=&quot;https://bitbucket.org/bysse/tinysynth&quot;&gt;https://bitbucket.org/bysse/tinysynth&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Don&#39;t forget to register a user and vote for your favorites!&lt;/div&gt;</description><link>http://blog.slackers.se/2012/03/java4k-2012-port4k.html</link><author>noreply@blogger.com (Erik)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWr9AB458UTjdM_T7saE3lbbnfxUHR2I62E9N9BnZAs5wPSdcYlJK40eWIr4p_Vh67hnNzINeFl5ccoXDaoP1B12vzN5uTfKAQFyBcGPgIr5zaPb-eVbnCmi6St6qOEjblQ479yr_5O0s/s72-c/P-screenshot.jpg" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>Stockholm, Sweden</georss:featurename><georss:point>59.32893 18.06491</georss:point><georss:box>59.199335 17.749053 59.458525 18.380767000000002</georss:box></item><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&#39;s Cube Algorithms v2.0</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
After almost 100h of spare time coding I&#39;m finished with the rewrite of Rubik&#39;s Cube Algorithms v2.0. I&#39;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=&quot;https://market.android.com/details?id=se.slackers.cube&quot;&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=&quot;text-align: left;&quot;&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=&quot;text-align: left;&quot;&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;</description><link>http://blog.slackers.se/2011/12/rubiks-cube-algorithms-v20.html</link><author>noreply@blogger.com (Erik)</author><thr:total>2</thr:total></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#">bitbucket</category><category domain="http://www.blogger.com/atom/ns#">fractal</category><category domain="http://www.blogger.com/atom/ns#">java</category><title>Multi Threaded Fractal Renderer in Swing</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
After seeing Jeff Pershing&#39;s post on a &lt;a href=&quot;http://preshing.com/20110926/high-resolution-mandelbrot-in-obfuscated-python&quot;&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&#39;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=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoQDq9CHwXPB_8bngfhOfGuLu_cXrzHrSGQqjzu8eLXxQ8nmaeOZz5S8YpZm0p6-uUJ42hB3NclkVz4Fj_EBE-3ccgOJ6UZ_Nem5o1GjXUcWziu7jr700jfMYHS9-4cMVTSDHJw0EWlDU/s1600/fractal-1.0.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; display: inline !important; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;232&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoQDq9CHwXPB_8bngfhOfGuLu_cXrzHrSGQqjzu8eLXxQ8nmaeOZz5S8YpZm0p6-uUJ42hB3NclkVz4Fj_EBE-3ccgOJ6UZ_Nem5o1GjXUcWziu7jr700jfMYHS9-4cMVTSDHJw0EWlDU/s320/fractal-1.0.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&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=&quot;https://bitbucket.org/bysse/misc/&quot;&gt;bitbucket&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;
</description><link>http://blog.slackers.se/2011/09/multi-threaded-fractal-renderer-in.html</link><author>noreply@blogger.com (Erik)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoQDq9CHwXPB_8bngfhOfGuLu_cXrzHrSGQqjzu8eLXxQ8nmaeOZz5S8YpZm0p6-uUJ42hB3NclkVz4Fj_EBE-3ccgOJ6UZ_Nem5o1GjXUcWziu7jr700jfMYHS9-4cMVTSDHJw0EWlDU/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></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#">BIRT</category><category domain="http://www.blogger.com/atom/ns#">java</category><title>BIRT Documentation</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Recently I&#39;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&#39;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&#39;ve been looking for! &lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://help.eclipse.org/indigo/index.jsp?nav=%2F8_0_0&quot;&gt;BIRT Javadoc&lt;/a&gt;&amp;nbsp;(hidden inside&amp;nbsp;&lt;a href=&quot;http://help.eclipse.org/&quot;&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&#39;ll need it...&lt;/div&gt;
&lt;/div&gt;
</description><link>http://blog.slackers.se/2011/09/birt-documentation.html</link><author>noreply@blogger.com (Erik)</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></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=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; color: #666666; font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;&quot;&gt;It&#39;s time for #3 in the series &#39;&lt;a href=&quot;http://blog.slackers.se/2011/01/cubing-for-charity.html&quot; style=&quot;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;&quot;&gt;Cubing for charity&lt;/a&gt;&#39;. Which is the concept that until the profit from ads in&amp;nbsp;&lt;a href=&quot;https://market.android.com/details?id=se.slackers.cube&quot; style=&quot;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;&quot;&gt;Rubik&#39;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=&quot;Apple-style-span&quot; style=&quot;background-color: white; color: #666666; font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;&quot;&gt;This time I&#39;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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE8Yja3xAOI4TqeoMxJKGBRVzsGirjz7u74rofyurRmV0yxmEANs_o-1jgUDOd9Kz4QZSfTKFMIS1RGj0w5cdGlnuQV7rLJddJFCo3fn9L2XUWZMSmApmgvORm4LhFO8kmW4USzZ6DN50/s1600/cubing+for+charity+%25233.jpg&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;115&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE8Yja3xAOI4TqeoMxJKGBRVzsGirjz7u74rofyurRmV0yxmEANs_o-1jgUDOd9Kz4QZSfTKFMIS1RGj0w5cdGlnuQV7rLJddJFCo3fn9L2XUWZMSmApmgvORm4LhFO8kmW4USzZ6DN50/s320/cubing+for+charity+%25233.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; color: #666666; font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;&quot;&gt;According to their site, your cubing,tapping and tracking has given around 35 people food for a month. Not much, but it&#39;s something.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
</description><link>http://blog.slackers.se/2011/08/cubing-for-charity-3.html</link><author>noreply@blogger.com (Erik)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE8Yja3xAOI4TqeoMxJKGBRVzsGirjz7u74rofyurRmV0yxmEANs_o-1jgUDOd9Kz4QZSfTKFMIS1RGj0w5cdGlnuQV7rLJddJFCo3fn9L2XUWZMSmApmgvORm4LhFO8kmW4USzZ6DN50/s72-c/cubing+for+charity+%25233.jpg" height="72" width="72"/><thr:total>0</thr:total></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#">android</category><category domain="http://www.blogger.com/atom/ns#">charity</category><category domain="http://www.blogger.com/atom/ns#">java</category><title>Simple Tracker</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Yesterday I released my third app which is called Simple Tracker. It&#39;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&#39;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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: left; margin-right: 1em; text-align: left;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLotn1slQKN1p_eEeYRbahfA8ow6u29nspL8dRCRxdQGgNucXihqfTNtYin273EF1MI5588IIi9KZnQ-q6oOC6sY-CyojTTcu89lnPt13Ybfl-eebrB0lNvu68DFiXGNVBmc28R6S1oDo/s1600/ss-320-1-0.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLotn1slQKN1p_eEeYRbahfA8ow6u29nspL8dRCRxdQGgNucXihqfTNtYin273EF1MI5588IIi9KZnQ-q6oOC6sY-CyojTTcu89lnPt13Ybfl-eebrB0lNvu68DFiXGNVBmc28R6S1oDo/s200/ss-320-1-0.jpg&quot; width=&quot;133&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Calendar overview&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: left; margin-right: 1em; text-align: left;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOf7fwJhXd7ZoHqDyNlK_bK_eikCOIf_JFYFNdXeCtnN_PAqRPJLscPYjI-Is-Jj_WUsxS2N-fI733vzSsc0768JAhA9l2UowLfgtrAsXsvVgqaTW6hzR23QxVLYbKIGQYttmy1rFnyH0/s1600/ss-320-2-0.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOf7fwJhXd7ZoHqDyNlK_bK_eikCOIf_JFYFNdXeCtnN_PAqRPJLscPYjI-Is-Jj_WUsxS2N-fI733vzSsc0768JAhA9l2UowLfgtrAsXsvVgqaTW6hzR23QxVLYbKIGQYttmy1rFnyH0/s200/ss-320-2-0.jpg&quot; width=&quot;133&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Viewing data&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
The app can be found on&amp;nbsp;&lt;a href=&quot;https://market.android.com/details?id=se.slackers.simpletracker&quot;&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=&quot;http://blog.slackers.se/2011/01/cubing-for-charity.html&quot;&gt;Cubing For Charity campain&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
</description><link>http://blog.slackers.se/2011/08/simple-tracker.html</link><author>noreply@blogger.com (Erik)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLotn1slQKN1p_eEeYRbahfA8ow6u29nspL8dRCRxdQGgNucXihqfTNtYin273EF1MI5588IIi9KZnQ-q6oOC6sY-CyojTTcu89lnPt13Ybfl-eebrB0lNvu68DFiXGNVBmc28R6S1oDo/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></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#">gwt</category><category domain="http://www.blogger.com/atom/ns#">javascript</category><title>Width of an element in javascript</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;When starting with the &lt;a href=&quot;http://code.google.com/p/gwt-floating-header&quot;&gt;gwt-floating-header&lt;/a&gt; project i ran into some problems with getting, what i call, the&quot; true width&quot; of an element in javascript. With &quot;true width&quot; i mean the width of the element excluding padding, border and margin. And because i&#39;m writing for GWT I don&#39;t have luxury of be able to use the &lt;a href=&quot;http://api.jquery.com/width/&quot;&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&#39;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=&quot;js&quot; name=&quot;code&quot;&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=&quot;http://code.google.com/p/gwt-floating-header/source/browse/src/main/java/se/slackers/floatingtableheader/client/DOMUtil.java&quot;&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&#39;t be in the calculation.&lt;/div&gt;</description><link>http://blog.slackers.se/2011/07/width-of-element-in-javascript.html</link><author>noreply@blogger.com (Erik)</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></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#">gwt</category><category domain="http://www.blogger.com/atom/ns#">java</category><title>Floating table headers for GWT</title><description>Today I&#39;ve created a Google code project for the GWT port of my&amp;nbsp;&lt;a href=&quot;http://blog.slackers.se/2009/07/jquery-floating-table-header-plugin.html&quot;&gt;jQuery floating header plugin&lt;/a&gt;. It&#39;s a very lightweight library that already supports both column and row headers. Since the code base is very young i haven&#39;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=&quot;http://code.google.com/p/gwt-floating-header/&quot;&gt;http://code.google.com/p/gwt-floating-header/&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;</description><link>http://blog.slackers.se/2011/07/floating-table-headers-for-gwt.html</link><author>noreply@blogger.com (Erik)</author><thr:total>0</thr:total></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&#39;s time for #2 in the series &#39;&lt;a href=&quot;http://blog.slackers.se/2011/01/cubing-for-charity.html&quot;&gt;Cubing for charity&lt;/a&gt;&#39;. Which is the concept that until the profit from ads in &lt;a href=&quot;https://market.android.com/details?id=se.slackers.cube&quot;&gt;Rubik&#39;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=&quot;http://www.letuscreatecambodia.org/&quot;&gt;Cambodia Children&#39;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=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZNu-b_nemB3er3HDotLnVrxj_9mbJF7-oD4xTEl-ewb1Pz0_QuUxZhUnQDjUdyZuicEwSRSf8r8Xw-Og7QTPG-SImPkL8dY9DKGhZlebOljCbT_iff-YRikGXAVU8-C5x6x8CveGZPBY/s1600/cubing+for+charity+2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;223&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZNu-b_nemB3er3HDotLnVrxj_9mbJF7-oD4xTEl-ewb1Pz0_QuUxZhUnQDjUdyZuicEwSRSf8r8Xw-Og7QTPG-SImPkL8dY9DKGhZlebOljCbT_iff-YRikGXAVU8-C5x6x8CveGZPBY/s320/cubing+for+charity+2.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</description><link>http://blog.slackers.se/2011/04/cubing-for-charity-2.html</link><author>noreply@blogger.com (Erik)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZNu-b_nemB3er3HDotLnVrxj_9mbJF7-oD4xTEl-ewb1Pz0_QuUxZhUnQDjUdyZuicEwSRSf8r8Xw-Og7QTPG-SImPkL8dY9DKGhZlebOljCbT_iff-YRikGXAVU8-C5x6x8CveGZPBY/s72-c/cubing+for+charity+2.jpg" height="72" width="72"/><thr:total>0</thr:total></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#">game</category><category domain="http://www.blogger.com/atom/ns#">java</category><title>I won the Java 4k Game Competition 2011</title><description>I&#39;m very proud to say that my game &#39;&lt;a href=&quot;http://goo.gl/ClU3F&quot;&gt;4Kube 3d&lt;/a&gt;&#39; 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=&quot;http://www.java4k.com/index.php?action=games&amp;method=grades&amp;cid=7&quot;&gt;judge&lt;/a&gt; and &lt;a href=&quot;http://www.java4k.com/index.php?action=games&amp;method=community&amp;cid=7&quot;&gt;community&lt;/a&gt; voting. &lt;br /&gt;
&lt;br /&gt;
The timing of the results was very good also for me. I&#39;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=&quot;http://www.java-gaming.org/&quot;&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 &#39;n Shrink service.&lt;br /&gt;
&lt;br /&gt;
Other posts about the competition:&lt;br /&gt;
* &lt;a href=&quot;http://www.indiegames.com/blog/2011/03/java4k_2011_competition_result.htm&quot;&gt;http://www.indiegames.com/blog/2011/03/java4k_2011_competition_result.html&lt;/a&gt;&lt;br /&gt;
* &lt;a href=&quot;http://www.rockpapershotgun.com/2011/03/29/impossigames-the-java4k-challenge/&quot;&gt;http://www.rockpapershotgun.com/2011/03/29/impossigames-the-java4k-challenge/&lt;/a&gt;</description><link>http://blog.slackers.se/2011/03/i-won-java-4k-game-competition-2011.html</link><author>noreply@blogger.com (Erik)</author><thr:total>0</thr:total></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>2012-08-19T12:44:09.889+02: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=&quot;http://www.java4k.com/&quot;&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&#39;s the catch? Well, it wouldn&#39;t be fun if there wasn&#39;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=&quot;http://goo.gl/ClU3F&quot;&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&#39;s excellent &lt;a href=&quot;http://www.indiespot.net/app/java-four-kay&quot;&gt;Compile &#39;n Shrink&lt;/a&gt; service seems to be down, probably due to the hacking of &lt;a href=&quot;http://:www.java-gaming.org/&quot;&gt;java-gaming.org&lt;/a&gt;, I&#39;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 class=&quot;brush:bash&quot;&gt;#!/bin/bash

if [ $# -ne 1 ]
then
  echo &quot;Usage: `basename $0` &lt;class_name&gt;&quot;
  exit 65
fi

function printSize() {
   SIZE=$(ls -l $1 | awk &#39;//{print $5}&#39;)
   printf &quot;+ %-15s %s bytes [%d]\\n&quot; $1 ${SIZE} $((SIZE-4096))
}

BIN=bin
LOG=../size.log

PRO_FLAGS=&quot;-libraryjars &lt;java .home=&quot;.home&quot;&gt;/lib/rt.jar -basedirectory .&quot;

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 &amp;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 &amp;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 &quot;----------------------------------&quot; &amp;gt;&amp;gt; $LOG
date +&quot;%Y-%m-%d %H:%M:%S&quot; &amp;gt;&amp;gt; $LOG
echo &quot;----------------------------------&quot; &amp;gt;&amp;gt; $LOG
echo &quot;File size summary:&quot; &amp;gt;&amp;gt; $LOG
printSize $CLASS &amp;gt;&amp;gt; $LOG
printSize $JAR &amp;gt;&amp;gt; $LOG
printSize $PRO &amp;gt;&amp;gt; $LOG
printSize $PACK &amp;gt;&amp;gt; $LOG
printSize $PRO_PACK &amp;gt;&amp;gt; $LOG
printSize $PRO_PACK_7ZIP &amp;gt;&amp;gt; $LOG
printSize $PRO_PACK_K_GZ &amp;gt;&amp;gt; $LOG
echo &amp;gt;&amp;gt; $LOG

popd &amp;gt;&amp;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&#39;s Zip2Gzip converter to convert the KZip files to GZip:&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&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 &amp;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;amp; 0xff) + ((in.read() &amp;amp; 0xff) &amp;lt;&amp;lt; 8) + ((in.read() &amp;amp; 0xff) &amp;lt;&amp;lt; 16)
    + ((in.read() &amp;amp; 0xff) &amp;lt;&amp;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;amp; 0xff) + ((in.read() &amp;amp; 0xff) &amp;lt;&amp;lt; 8);
  // extra field length 2 bytes
  final int xfLen = (in.read() &amp;amp; 0xff) + ((in.read() &amp;amp; 0xff) &amp;lt;&amp;lt; 8);
  // file name (variable size)
  for (int i = 0; i &amp;lt; nameLen; i++) {
   in.read();
  }
  // extra field (variable size)
  for (int i = 0; i &amp;lt; xfLen; i++) {
   in.read();
  }

  // Data follows, so we can copy it to the output.
  final byte[] buf = new byte[4096];
  while (cmpSz &amp;gt; 0) {
   final int desired = cmpSz &amp;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;
</description><link>http://blog.slackers.se/2011/01/java-4k-competition-2011.html</link><author>noreply@blogger.com (Erik)</author><thr:total>1</thr:total><georss:featurename>Ban Tai, Ko Pha-ngan, Surat Thani 86000, Thailand</georss:featurename><georss:point>9.6752994423878373 100.06339073181152</georss:point><georss:box>9.664723442387837 100.04879973181153 9.6858754423878377 100.07798173181152</georss:box></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&#39;ve been traveling in Asia and come face to face with the extreme poverty here. Of course I&#39;ve heard the news, seen the pictures and read the facts but it&#39;s not the same as actually seeing it with your own eyes. I felt like I had to do something. So I&#39;ve decided that until the profit from the ads in &lt;a href=&quot;http://code.google.com/p/rubiks-cube-algorithms/&quot;&gt;Rubik&#39;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&#39;s something and I will continue with the donations on each payment from &lt;a href=&quot;http://www.admob.com&quot;&gt;admob&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The first donation goes to &lt;a href=&quot;http://www.hihseed.org/&quot;&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=&quot;http://www.google.com/search?sourceid=chrome&amp;ie=UTF-8&amp;q=what+is+17+GBD+in+USD&quot;&gt;$26 USD&lt;/a&gt;). It&#39;s not much, but according to &lt;a href=&quot;http://www.hihseed.org/&quot;&gt;Hand in Hand&lt;/a&gt; it will at least &lt;a href=&quot;http://www.hihseed.org/what-we-do/what-it-costs/&quot;&gt;&quot;Provide one woman with entrepreneurial training to start her own business&quot;&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyc3E8A1Nw8sdzM3AoYSTaBzxp6N5BWn39ni7tzBVoroUo5ibdYSlsYPOSFfDwl3aTfae8v1hmH_HqUiqtjJwOk3AvaxHsi-qatgbIugb5uziJkMKHsk3OQOCXz3up5jvdmLh-vFXU4ps/s1600/paypal-handinhand.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;160&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyc3E8A1Nw8sdzM3AoYSTaBzxp6N5BWn39ni7tzBVoroUo5ibdYSlsYPOSFfDwl3aTfae8v1hmH_HqUiqtjJwOk3AvaxHsi-qatgbIugb5uziJkMKHsk3OQOCXz3up5jvdmLh-vFXU4ps/s320/paypal-handinhand.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</description><link>http://blog.slackers.se/2011/01/cubing-for-charity.html</link><author>noreply@blogger.com (Erik)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyc3E8A1Nw8sdzM3AoYSTaBzxp6N5BWn39ni7tzBVoroUo5ibdYSlsYPOSFfDwl3aTfae8v1hmH_HqUiqtjJwOk3AvaxHsi-qatgbIugb5uziJkMKHsk3OQOCXz3up5jvdmLh-vFXU4ps/s72-c/paypal-handinhand.jpg" height="72" width="72"/><thr:total>0</thr:total></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#">floatheader</category><category domain="http://www.blogger.com/atom/ns#">javascript</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&#39;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=&quot;http://blog.slackers.se/2009/07/jquery-floating-table-header-plugin.html&quot;&gt;old post&lt;/a&gt; or the &lt;a href=&quot;http://plugins.jquery.com/project/floatHeader&quot;&gt;jQuery project page&lt;/a&gt; for more information about the plugin.</description><link>http://blog.slackers.se/2011/01/floating-header-plugin-v140.html</link><author>noreply@blogger.com (Erik)</author><thr:total>0</thr:total><georss:featurename>Ko Tao, Ko Pha-ngan, Surat Thani, Thailand</georss:featurename><georss:point>10.084811668889987 99.826583862304688</georss:point><georss:box>10.042559168889987 99.768218862304693 10.127064168889987 99.884948862304682</georss:box></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#">android</category><category domain="http://www.blogger.com/atom/ns#">cube algorithms</category><category domain="http://www.blogger.com/atom/ns#">java</category><title>10k downloads for Cube Algorithms</title><description>A milestone has been reached for my first android app &lt;a href=&quot;http://www.appbrain.com/app/se.slackers.cube&quot;&gt;Rubik&#39;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&#39;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&#39;s surprisingly hard to not care when someone give it a bad rating. Even if the comment suggests that the user doesn&#39;t know what he&#39;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&#39;t read the description of the app. Not everyone will like what you&#39;re doing, no matter how much effort you put into it.&lt;br /&gt;
&lt;br /&gt;
I&#39;ve also seen a few users reporting bugs in app comments. Which is frustrating since i can&#39;t contact them through the comment system and i don&#39;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&#39;m working on.&lt;br /&gt;
&lt;br /&gt;
Anyway, i&#39;m happy that some people appreciate the app because I&#39;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.</description><link>http://blog.slackers.se/2010/09/10k-downloads-for-cube-algorithms.html</link><author>noreply@blogger.com (Erik)</author><thr:total>0</thr:total><georss:featurename>Bergnäset, Luleå, Sverige</georss:featurename><georss:point>65.575784701157517 22.095394134521484</georss:point><georss:box>65.571348201157519 22.080803134521485 65.580221201157514 22.109985134521484</georss:box></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#">floatheader</category><category domain="http://www.blogger.com/atom/ns#">javascript</category><title>Floating header plugin v1.2.0</title><description>Finally I&#39;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=&quot;http://blog.slackers.se/2009/07/jquery-floating-table-header-plugin.html&quot;&gt;main post&lt;/a&gt; or the &lt;a href=&quot;http://plugins.jquery.com/project/floatHeader&quot;&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&#39;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.</description><link>http://blog.slackers.se/2010/07/floating-header-plugin-v120.html</link><author>noreply@blogger.com (Erik)</author><thr:total>1</thr:total></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#">haiku</category><category domain="http://www.blogger.com/atom/ns#">hibernate</category><category domain="http://www.blogger.com/atom/ns#">java</category><title>Hibernate error message haiku</title><description>A couple of weeks ago i got this error message from Hibernate. The only change i&#39;ve done is to remove the word &quot;an&quot; 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;</description><link>http://blog.slackers.se/2010/06/hibernate-error-message-haiku.html</link><author>noreply@blogger.com (Erik)</author><thr:total>1</thr:total></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#">android</category><category domain="http://www.blogger.com/atom/ns#">flattr</category><category domain="http://www.blogger.com/atom/ns#">rubik</category><title>Android cubing and flattr</title><description>Long time since I&#39;ve posted anything so i think an update of what i&#39;ve been up to is about time.I&#39;ve been trying my wings on the android SDK with a very &lt;a href=&quot;http://android.slackers.se&quot;&gt;simple application&lt;/a&gt; for showing all OLL/PLL algorithms (&lt;a href=&quot;http://cubefreak.net&quot;&gt;cubefreak.net&lt;/a&gt; for more cube related stuff).&lt;br /&gt;
Also I&#39;ve got my beta invite for &lt;a href=&quot;http://flattr.com&quot;&gt;flattr&lt;/a&gt; yesterday and i really like the idea behind it. So I&#39;ve added &lt;a href=&quot;http://flattr.com&quot;&gt;flattr&lt;/a&gt; buttons on all my blog posts! Read more about flattr on &lt;a href=&quot;http://flattr.com&quot;&gt;their homepage&lt;/a&gt; or at &lt;a href=&quot;http://en.wikipedia.org/wiki/Flattr&quot;&gt;wikipedia&lt;/a&gt;.</description><link>http://blog.slackers.se/2010/05/android-cubing-and-flattr.html</link><author>noreply@blogger.com (Erik)</author><thr:total>1</thr:total></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#">game</category><category domain="http://www.blogger.com/atom/ns#">java</category><title>Java4k: Geometry wars clone</title><description>This year i didn&#39;t miss the deadline for the &lt;a href=&quot;http://java4k.com&quot;&gt;java4k&lt;/a&gt; competition! I made a geometry wars clone and it can be found and played on &lt;a href=&quot;http://java4k.com/index.php?action=games&amp;method=view&amp;gid=294&quot;&gt;their site&lt;/a&gt; and also on my new &lt;a href=&quot;http://porkangel.com/g/g4k/&quot;&gt;game project site&lt;/a&gt;.&lt;br /&gt;
All my projects that are classified as &#39;games&#39; have been put on &lt;a href=&quot;http://porkangel.com&quot;&gt;porkangel.com&lt;/a&gt;, though it desperately needs the attention of a real designer :)</description><link>http://blog.slackers.se/2010/03/java4k-geometry-wars-clone.html</link><author>noreply@blogger.com (Erik)</author><thr:total>0</thr:total></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#">eclipse</category><category domain="http://www.blogger.com/atom/ns#">gwt</category><category domain="http://www.blogger.com/atom/ns#">maven</category><title>No URL showing in GWT 2.0 Development mode</title><description>I&#39;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&#39;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=&quot;code&quot; class=&quot;xml&quot;&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&#39;t necessary please reply to this post.</description><link>http://blog.slackers.se/2010/01/no-url-showing-in-gwt-20-development.html</link><author>noreply@blogger.com (Erik)</author><thr:total>7</thr:total></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#">gwt</category><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">quakelive</category><title>&quot;Statistics&quot; for QuakeLive</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;At work we&#39;re using GWT for a couple of projects now but we have never used the&amp;nbsp;&lt;a href=&quot;http://code.google.com/webtoolkit/doc/latest/tutorial/mvp-architecture.html&quot;&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=&quot;http://quakelive.com/&quot;&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=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFHuV78DS6ZTSvCjC11mfuZg68Ii6jHJUHwaxz6_OCeoZqMV8Yake0wYvOjKCsLBLQ406eRmXvT4okZW9GCnu1iqQ4GflE0bwL8LDoNRGEWZrJP0pO9mmi1mOjpH3resuZ0PrNBGwzl8I/s1600/quakestats.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFHuV78DS6ZTSvCjC11mfuZg68Ii6jHJUHwaxz6_OCeoZqMV8Yake0wYvOjKCsLBLQ406eRmXvT4okZW9GCnu1iqQ4GflE0bwL8LDoNRGEWZrJP0pO9mmi1mOjpH3resuZ0PrNBGwzl8I/s200/quakestats.jpg&quot; /&gt;&lt;/a&gt;It&#39;s actually motivation to see if you&#39;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=&quot;http://quakestatistics.appspot.com/&quot;&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=&quot;http://quakestatistics.appspot.com/#ql;user=bryskel&quot;&gt;my profile&lt;/a&gt;. Since i don&#39;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&#39;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&#39;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=&quot;http://quakestatistics.appspot.com/&quot;&gt;http://quakestatistics.appspot.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://quakestatistics.appspot.com/#ql;user=bryskel&quot;&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=&quot;http://blog.hivedevelopment.co.uk/2009/08/google-web-toolkit-gwt-mvp-example.html&quot;&gt;MVP example at hive development&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://groups.google.com/group/gwt-presenter&quot;&gt;gwt-presenter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://groups.google.com/group/gwt-dispatch&quot;&gt;gwt-dispatch&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;</description><link>http://blog.slackers.se/2010/01/statistics-for-quakelive.html</link><author>noreply@blogger.com (Erik)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFHuV78DS6ZTSvCjC11mfuZg68Ii6jHJUHwaxz6_OCeoZqMV8Yake0wYvOjKCsLBLQ406eRmXvT4okZW9GCnu1iqQ4GflE0bwL8LDoNRGEWZrJP0pO9mmi1mOjpH3resuZ0PrNBGwzl8I/s72-c/quakestats.jpg" height="72" width="72"/><thr:total>2</thr:total></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#">environment</category><category domain="http://www.blogger.com/atom/ns#">php</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&#39;t think about code efficiency. But &quot;bad&quot; code is actually bad for the environment.&lt;br /&gt;
&lt;br /&gt;
A couple of days ago I read a &lt;a href=&quot;http://www.webtoolkit.eu/wt#/blog/2009/12/17/facebook__php__is_not_very_kopenhagen&quot;&gt;post&lt;/a&gt; that made me think about programming and the environment. It&#39;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&#39;t matter much if you write inefficient code. But if you&#39;re working on applications/systems that will be run by a lot of people, especially in a server environment, the difference is huge. I&#39;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&#39;ve boiled my thoughts down to these two &quot;guidelines&quot;, which at least I will think more about when choosing the tools for the next project i&#39;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.</description><link>http://blog.slackers.se/2009/12/environmentally-friendly-programming.html</link><author>noreply@blogger.com (Erik)</author><thr:total>0</thr:total></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#">floatheader</category><category domain="http://www.blogger.com/atom/ns#">javascript</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=&quot;http://static.slackers.se/pages/javascript/jquery-floatheader/&quot;&gt;old post&lt;/a&gt;, or on &lt;a href=&quot;http://plugins.jquery.com/project/floatHeader&quot;&gt;jQuery.com&lt;/a&gt;, or at the new &lt;a href=&quot;http://code.google.com/p/slackers-se/wiki/FloatingHeader&quot;&gt;google code project page&lt;/a&gt; for all my little projects.</description><link>http://blog.slackers.se/2009/12/jquery-floating-header-plugin-v111.html</link><author>noreply@blogger.com (Erik)</author><thr:total>4</thr:total></item></channel></rss>