<?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: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-6462132765458801485</atom:id><lastBuildDate>Sun, 06 May 2012 20:58:01 +0000</lastBuildDate><category>mobile</category><category>flash</category><category>rtsp</category><category>generic connection framework</category><category>javascript</category><category>java</category><category>multiplayer</category><category>maths</category><category>mode 7</category><category>director</category><category>graphics</category><category>jsr-82</category><category>opposite lock</category><category>open source</category><category>gcf</category><category>game</category><category>mmapi</category><category>fixed point</category><category>gpl</category><category>bluetooth</category><category>renderer</category><category>j2me</category><category>streaming audio</category><category>joystick</category><category>mode7</category><category>recursive synthesis</category><category>rtp</category><category>floorcasting</category><category>rtsp server</category><category>jsr 197</category><category>midp</category><title>Code Snippets</title><description></description><link>http://blog.numfum.com/</link><managingEditor>noreply@blogger.com (Carl Woffenden)</managingEditor><generator>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6462132765458801485.post-1585402092810957221</guid><pubDate>Tue, 22 Jun 2010 08:55:00 +0000</pubDate><atom:updated>2010-06-22T05:10:29.521-07:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>javascript</category><category domain='http://www.blogger.com/atom/ns#'>joystick</category><category domain='http://www.blogger.com/atom/ns#'>flash</category><title>Accessing Joysticks from JavaScript</title><description>Many years ago I wrote a simple browser plug-in to access game controllers from JavaScript. It was Windows only, worked in IE and Netscape 4, and it was used by quite a few JavaScript games at the time (with thousands downloads per day at its peak in 2001, mostly thanks to &lt;a href="http://www.smashcat.org/personal/html/games_arcade.html"&gt;Scott Porter's JavaScript games&lt;/a&gt;). Years passed and it remained largely forgotten, with a few folks still finding it useful for robotics and other specialised cases, but no longer for games. Last year I found myself interested in the project again and decided to update the code, developing versions for Firefox on Windows and Safari on OS X, with the source to all now available under an LGPL license on &lt;a href="http://code.google.com/p/javascript-joystick/"&gt;Google Code&lt;/a&gt; (along with prebuilt &lt;a href="http://code.google.com/p/javascript-joystick/downloads/list"&gt;installers&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Examples of using it from &lt;a href="http://javascript-joystick.googlecode.com/svn/trunk/examples/javascript/simple.html"&gt;JavaScript&lt;/a&gt;, &lt;a href="http://javascript-joystick.googlecode.com/svn/trunk/examples/flash/simple.html"&gt;Flash&lt;/a&gt; and &lt;a href="http://javascript-joystick.googlecode.com/svn/trunk/examples/applet/out/simple.html"&gt;Java&lt;/a&gt; can be found in the project's &lt;a href="http://code.google.com/p/javascript-joystick/source/browse/trunk/examples/"&gt;examples folder&lt;/a&gt;; they're quite simple and documented, but in brief, to use it from JavaScript add &lt;a href="http://code.google.com/p/javascript-joystick/source/browse/trunk/examples/javascript/joystick.js"&gt;joystick.js&lt;/a&gt; to your page:&lt;br /&gt;&lt;br /&gt;&lt;tt&gt;&amp;lt;script type="text/javascript" src="joystick.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;Then create a new Joystick instance, which takes care of inserting the correct type of plug-in into the browser (ActiveX control for IE, NPAPI plug-in for everything else):&lt;br /&gt;&lt;br /&gt;&lt;tt&gt;var joy = new Joystick();&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;That's about it! Using it in your game is a matter of reading the controller's axes and buttons wherever you would normally read the keys:&lt;br /&gt;&lt;br /&gt;&lt;tt&gt;var joyX = joy.getX();&lt;br /&gt;var joyY = joy.getY();&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;Using it from Flash is slightly more complicated due to having to access plug-ins via &lt;a href="http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/external/ExternalInterface.html"&gt;ExternalInterface&lt;/a&gt;, but the ActionScript &lt;a href="http://code.google.com/p/javascript-joystick/source/browse/trunk/examples/flash/Joystick.as"&gt;Joystick&lt;/a&gt; class hides most of that away. Accessing it from a Java applet uses &lt;a href="http://java.sun.com/products/plugin/1.3/docs/jsobject.html"&gt;LiveConnect&lt;/a&gt;, but again the &lt;a href="http://code.google.com/p/javascript-joystick/source/browse/trunk/examples/applet/src/Joystick.java"&gt;sample code&lt;/a&gt; takes care of this.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, what are you waiting for? Bring on the games!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6462132765458801485-1585402092810957221?l=blog.numfum.com' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.numfum.com/2010/06/accessing-joysticks-from-javascript.html</link><author>noreply@blogger.com (Carl Woffenden)</author><thr:total>7</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6462132765458801485.post-5473824430403494263</guid><pubDate>Wed, 07 Jan 2009 09:16:00 +0000</pubDate><atom:updated>2009-01-07T01:44:11.451-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>open source</category><category domain='http://www.blogger.com/atom/ns#'>java</category><category domain='http://www.blogger.com/atom/ns#'>j2me</category><category domain='http://www.blogger.com/atom/ns#'>opposite lock</category><category domain='http://www.blogger.com/atom/ns#'>game</category><title>Opposite Lock Updated Downloads</title><description>Following on from last year's release of Opposite Lock &lt;a href="http://blog.numfum.com/2008/01/opposite-lock-gpled.html"&gt;under a GPL license&lt;/a&gt;, the &lt;a href="http://code.google.com/p/oppositelock/downloads/list"&gt;full game&lt;/a&gt; is available to download from the project's site. The files are the 1.3.4 release from June 2007 (the last commercial release) and are optimised versions of what's available in the repository.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;applet code="Stub" archive="http://oppositelock.googlecode.com/files/ol-app-050208.jar" width="176" height="208"&gt;&lt;/applet&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Use the cursor keys and space to play in the above applet (you can also select menus using the mouse). The applet is the J2ME code running using a thin MIDP2.0 wrapper written (originally) to test the game's AI.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6462132765458801485-5473824430403494263?l=blog.numfum.com' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.numfum.com/2009/01/opposite-lock-updated-downloads.html</link><author>noreply@blogger.com (Carl Woffenden)</author><thr:total>4</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6462132765458801485.post-4437946260076354315</guid><pubDate>Wed, 30 Apr 2008 21:00:00 +0000</pubDate><atom:updated>2008-05-01T02:16:29.293-07:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>java</category><category domain='http://www.blogger.com/atom/ns#'>graphics</category><category domain='http://www.blogger.com/atom/ns#'>j2me</category><category domain='http://www.blogger.com/atom/ns#'>director</category><title>J2ME Director Player</title><description>No code this time round, just a quick «look what I done!» This started life as a cut scene player for a (still unreleased) cutesy puzzle game, which was then recycled for the animations in &lt;a href="http://www.pocketgamer.co.uk/r/Mobile/Football+Manager+Quiz/review.asp?c=2746"&gt;Football Manager Quiz&lt;/a&gt;. It uses similar techniques to the mode 7 renderer (posted a while ago) in order to draw the real-time transforms. Animations are exported from Director, reduced to a compact binary form, then played back in pure Java on the phone. The video shows a (rather aged) K750 and a (slightly newer) K800 in action.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/iXsGT2anIls&amp;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/iXsGT2anIls&amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6462132765458801485-4437946260076354315?l=blog.numfum.com' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.numfum.com/2008/04/j2me-director-player.html</link><author>noreply@blogger.com (Carl Woffenden)</author><thr:total>7</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6462132765458801485.post-6751120950399190602</guid><pubDate>Sat, 05 Jan 2008 00:10:00 +0000</pubDate><atom:updated>2008-01-14T15:31:18.377-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>open source</category><category domain='http://www.blogger.com/atom/ns#'>java</category><category domain='http://www.blogger.com/atom/ns#'>mobile</category><category domain='http://www.blogger.com/atom/ns#'>bluetooth</category><category domain='http://www.blogger.com/atom/ns#'>gpl</category><category domain='http://www.blogger.com/atom/ns#'>multiplayer</category><category domain='http://www.blogger.com/atom/ns#'>jsr-82</category><category domain='http://www.blogger.com/atom/ns#'>j2me</category><category domain='http://www.blogger.com/atom/ns#'>opposite lock</category><category domain='http://www.blogger.com/atom/ns#'>game</category><title>Opposite Lock GPLed</title><description>Something a little more substantial than a snippet for this latest instalment... an entire mobile Java game! &lt;a href="http://www.pocketgamer.co.uk/r/Mobile/Opposite+Lock/review.asp?c=2518"&gt;Opposite Lock&lt;/a&gt;'s source code is now available on &lt;a href="http://code.google.com/p/oppositelock/"&gt;Google Code&lt;/a&gt; under a GPL license. Check the sources out of SVN (the &lt;a href="http://oppositelock.googlecode.com/svn/jsr/trunk/"&gt;'jsr' trunk &lt;/a&gt;is the only active one for now) and it should build as-is with &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt; and &lt;a href="http://www.eclipseme.org/"&gt;EclipseME&lt;/a&gt;. Go on! What are you waiting for?!&lt;br /&gt;&lt;br /&gt;Okay, where's the catch? Well, whilst the Java source is exactly the same as the published version, I've only included three of the 10 tracks (as per the free demo version). That's the only difference. When the game sales finally peter out I'll release the art assets under a &lt;a href="http://creativecommons.org/"&gt;Creative Commons&lt;/a&gt; license and commit the missing tracks to the repository.&lt;br /&gt;&lt;br /&gt;So, now you have the source how do you create your own tracks? For that you'll need the editor and build tools, available from the project's &lt;a href="http://code.google.com/p/oppositelock/downloads/"&gt;download page&lt;/a&gt;. I'll be cleaning up and adding the source for these to the repository in good time.&lt;br /&gt;&lt;br /&gt;&lt;object height="355" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/yd3Zzdsug84&amp;amp;rel=1"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/yd3Zzdsug84&amp;amp;rel=1" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;I wrote this between 2004/5, originally released as Jet Set Racing (which will explain why the letters 'jsr' appear everywhere). Opposite Lock is a reworking of this earlier game engine with new graphics (and new code to handle the expanded tracks). The tools are all pure Java and run happily on Windows and Mac OS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6462132765458801485-6751120950399190602?l=blog.numfum.com' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.numfum.com/2008/01/opposite-lock-gpled.html</link><author>noreply@blogger.com (Carl Woffenden)</author><thr:total>4</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6462132765458801485.post-6589309466787943244</guid><pubDate>Thu, 27 Sep 2007 15:02:00 +0000</pubDate><atom:updated>2007-10-01T13:55:40.463-07:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>java</category><category domain='http://www.blogger.com/atom/ns#'>renderer</category><category domain='http://www.blogger.com/atom/ns#'>floorcasting</category><category domain='http://www.blogger.com/atom/ns#'>mode7</category><category domain='http://www.blogger.com/atom/ns#'>mode 7</category><category domain='http://www.blogger.com/atom/ns#'>midp</category><category domain='http://www.blogger.com/atom/ns#'>j2me</category><title>J2ME Mode 7 Floor Renderer</title><description>Following on from yesterday's fixed point maths routines, here's a little demo which builds on that. It's another oldie, again from around 2002/3, which I've used in a more advanced form on quite a few projects. It's a very simple texture mapper, visually in the style of the SNES's famed &lt;a href="http://en.wikipedia.org/wiki/Mode_7"&gt;mode 7&lt;/a&gt;. Given a 2D map, it presents the image as a horizontal &lt;a href="http://www.numfum.com/cw/texturedFloor.png"&gt;texture mapped surface&lt;/a&gt;. It's primitive stuff but can be used to quite nice effect, and with it being entirely software based it doesn't require any additional APIs on the phone.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.numfum.com/cw/mode7-270907.zip"&gt;Grab the source&lt;/a&gt; and take a look at &lt;span style="font-family:courier new;"&gt;Renderer.java&lt;/span&gt;. Most of the work is done in &lt;span style="font-family:courier new;"&gt;renderFloor(),&lt;/span&gt; which simply works out a pixel offset for each scanline and fills the buffer accordingly. I've taken out some of the optimisations so it's easier to read, but even still it's no slouch!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6462132765458801485-6589309466787943244?l=blog.numfum.com' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.numfum.com/2007/09/midp-mode-7-floor-renderer.html</link><author>noreply@blogger.com (Carl Woffenden)</author><thr:total>9</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6462132765458801485.post-8076221583863516954</guid><pubDate>Wed, 26 Sep 2007 12:43:00 +0000</pubDate><atom:updated>2007-09-26T13:31:01.810-07:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>java</category><category domain='http://www.blogger.com/atom/ns#'>maths</category><category domain='http://www.blogger.com/atom/ns#'>midp</category><category domain='http://www.blogger.com/atom/ns#'>j2me</category><category domain='http://www.blogger.com/atom/ns#'>fixed point</category><category domain='http://www.blogger.com/atom/ns#'>recursive synthesis</category><title>Java Fixed Point Maths</title><description>One of the first things I wrote when I started J2ME was a set of fixed point maths routines. I've seen quite a few others over the years, for Java and other languages, and they all seemed to follow the same pattern: sin and cos tables, plus a few methods for basic operations (multiply and divide, usually). The one I &lt;a href="http://www.numfum.com/cw/fixed-260907.zip"&gt;offer here&lt;/a&gt;, which in various guises and languages has served me well since forever, is a little more advanced (not much, but enough for most mobile games and applications).&lt;br /&gt;&lt;br /&gt;The sin and cos (and by extension tan) routines are still table based, but instead of providing the table in-line with the code, it's generated using recursive synthesis at runtime. The advantage here is that the class can be quickly tailored for less or more fixed point precision, depending on the use (16.16 for general usage, 12.20 for audio work, etc.). There's also a fast atan, which was most useful for the physics and AI in Jet Set Racing (&lt;a href="http://www.archive.org/download/NumfumLtdJetSetRacing/jsr.mov"&gt;seen here&lt;/a&gt;, and Opposite Lock, &lt;a href="http://www.youtube.com/watch?v=yd3Zzdsug84"&gt;seen here&lt;/a&gt;), plus a few other bits and bobs.&lt;br /&gt;&lt;br /&gt;Most of the algorithms I devised myself, unless otherwise noted in the comments. The precision is pretty good (I have a test suite for it somewhere) but don't go taking my word for it, find out for yourself!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6462132765458801485-8076221583863516954?l=blog.numfum.com' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.numfum.com/2007/09/java-fixed-point-maths.html</link><author>noreply@blogger.com (Carl Woffenden)</author><thr:total>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6462132765458801485.post-3567626329804595109</guid><pubDate>Fri, 21 Sep 2007 14:55:00 +0000</pubDate><atom:updated>2007-09-24T14:17:32.205-07:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>java</category><category domain='http://www.blogger.com/atom/ns#'>rtsp server</category><category domain='http://www.blogger.com/atom/ns#'>rtp</category><category domain='http://www.blogger.com/atom/ns#'>midp</category><category domain='http://www.blogger.com/atom/ns#'>j2me</category><category domain='http://www.blogger.com/atom/ns#'>rtsp</category><category domain='http://www.blogger.com/atom/ns#'>mmapi</category><category domain='http://www.blogger.com/atom/ns#'>streaming audio</category><title>Streaming Audio on J2ME</title><description>For years I've been wanting to create a circular audio buffer for J2ME. Midi is okay but what I would really like is MOD playback, with maybe a few real-time sound effects thrown in, and generally a way of altering sound on-the-fly. I'd tried a mixer based on a blocking InputStream, which worked in Sun's WTK emulator but not on any actual phones (which load in the entire stream). I'd also tried a custom MMAPI DataSource, which didn't work either (same result as using an InputStream). I'd even tried the "switching between two Player instances" method, which although it (sorta) worked, wasn't low latency.&lt;br /&gt;&lt;br /&gt;One idea I was hopeful about was running an RTSP (Real Time Streaming Protocol) server on the phone and playing the audio stream using MMAPI. This was interesting since the latency could realistically be as low as 1/25th of a second, perfect for generated sound and audio effects. I started by reading the protocol documentation (&lt;a href="http://tools.ietf.org/html/rfc2326"&gt;RFC 2326&lt;/a&gt;), along with RTP (&lt;a href="http://tools.ietf.org/html/rfc3550"&gt;RFC 3550&lt;/a&gt;) and SDP (&lt;a href="http://tools.ietf.org/html/rfc4566"&gt;RFC 4566&lt;/a&gt;), then by snooping the traffic between Quicktime and Darwin Streaming Server. The whole thing was hacked together in marathon coding session, then refined the following day. I'd like to end by saying "and it worked beautifully" but unfortunately whilst the server itself worked, playing the stream didn't work on any of the phones I tried. Grab the &lt;a href="http://www.numfum.com/cw/rtspd-210907.zip"&gt;source code&lt;/a&gt; and have a play. Start the server running in WTK (or use the GCF implementation I posted earlier) and &lt;a href="rtsp://127.0.0.1:8554/stream.wav"&gt;listen&lt;/a&gt; to the audio stream (which is just a rasping noise) in Quicktime, Realplayer, VLC, etc. Try the midlet version on a phone and you might get lucky... then again, you might not! I tried it in a few Sony Ericsson and Nokia phones, which I know can play back RTSP streams. The Nokia phones (6600, 6630) showed the most promise, since the loopback address appears to work, unlike the SE phones (K750, K800).&lt;br /&gt;&lt;br /&gt;The server isn't the most elegant you'll ever see, and a better method would be to run the RTP part in a single thread, pumping out packets to all the connected clients. Then again, it was only designed for one client (the phone itself) and works well for this purpose. Like most of the code I'm planning on posting, I'm releasing it under a "do with it as you please, only give me credit for it" license. If you have any bugs, questions or suggestions, I'd like to hear them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6462132765458801485-3567626329804595109?l=blog.numfum.com' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.numfum.com/2007/09/streaming-audio-on-j2me.html</link><author>noreply@blogger.com (Carl Woffenden)</author><thr:total>20</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6462132765458801485.post-209401369190121033</guid><pubDate>Fri, 21 Sep 2007 14:03:00 +0000</pubDate><atom:updated>2007-09-30T11:24:27.918-07:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>java</category><category domain='http://www.blogger.com/atom/ns#'>mobile</category><category domain='http://www.blogger.com/atom/ns#'>generic connection framework</category><category domain='http://www.blogger.com/atom/ns#'>jsr 197</category><category domain='http://www.blogger.com/atom/ns#'>midp</category><category domain='http://www.blogger.com/atom/ns#'>j2me</category><category domain='http://www.blogger.com/atom/ns#'>gcf</category><title>Generic Connection Framework on J2SE</title><description>This is the first of my "poking around the the dusty corners of my harddrive, digging out snippets of code that someone might find useful" posts. This one stems from my preference for working interactively with a shell when writing network code, something I couldn't really do with J2ME. The announcement of &lt;a href="http://jcp.org/en/jsr/detail?id=197"&gt;JSR-197&lt;/a&gt; (the Generic Connection Framework for J2SE) 4-5 years ago made be believe I'd be able to hack away in the shell Real Soon Now™, then place the same code into a J2ME project (as well as the more obvious share code between platforms). Nothing seemed to materialise out of the JSR spec (or at least anything complete), and as I'd already written most of my own J2ME implementation, I wrote a GCF package to complement it. Anyway, so &lt;a href="http://www.numfum.com/cw/gcf-210907.zip"&gt;here it is!&lt;/a&gt; It has working HTTP, HTTPS, socket and UDP datagram protocols (I also have a JSR-82 over IP implementation too, but I'm saving that for another day!) and I've been using it for quite a few years without issues. I'm releasing it under a "do with it as you please, only give me credit for it" license. If you have any bugs, questions or suggestions, feel free to get in touch.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6462132765458801485-209401369190121033?l=blog.numfum.com' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.numfum.com/2007/09/generic-connection-framework-on-j2se.html</link><author>noreply@blogger.com (Carl Woffenden)</author><thr:total>2</thr:total></item></channel></rss>
