<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<feed xmlns="http://www.w3.org/2005/Atom">

	<title>Planet Compsoc</title>
	<link rel="self" href="http://planet.warwickcompsoc.co.uk/atom.xml"/>
	<link href="http://planet.warwickcompsoc.co.uk/"/>
	<id>http://planet.warwickcompsoc.co.uk/atom.xml</id>
	<updated>2010-09-02T09:00:27+00:00</updated>
	<generator uri="http://www.planetplanet.org/">Planet/2.0 +http://www.planetplanet.org</generator>

	<entry xml:lang="en">
		<title type="html">In limbo</title>
		<link href="http://www.paper-stranger.net/blog/?p=211"/>
		<id>http://www.paper-stranger.net/blog/?p=211</id>
		<updated>2010-09-01T07:10:52+00:00</updated>
		<content type="html">&lt;p&gt;It&amp;#8217;s always sobering when I think of my &amp;#8216;to-do&amp;#8217; list and all the things I haven&amp;#8217;t yet done. In ten or so days, I will be yanked away from the city back into the peaceful rumination of university life, tucked away in a little campus. It&amp;#8217;s all so cyclical and I&amp;#8217;m so predictable, it becomes a self-perpetuating system fuelled by all my expectations and worries &amp;#8211; but also my aspirations; my quiet, wishful thinking. &lt;/p&gt;
&lt;p&gt;I could describe this bridge of uncertainty and choice either as liberating or terrifying. I know I&amp;#8217;m at a stage where I can make life choices without backtracking too much, but I&amp;#8217;m admittedly wary of being on that conveyor belt, that path of &amp;#8216;settling&amp;#8217; for this-and-that, slowly ensnaring years of my life away until I wake up one day, mid-life crisis and all, asking myself &amp;#8220;&lt;em&gt;What the hell have I done with my life?&lt;/em&gt;&amp;#8221; And, I know, I would have no answer.&lt;/p&gt;
&lt;p&gt;Delayed gratification aside, there are a lot of things I wish I could take the plunge for &amp;#8230; but I&amp;#8217;m a comfort-lover and a convenience-addict shaped by all things safe and within reach. I was never taught how to take risks &amp;#8211; only how to avoid them. I&amp;#8217;ve spent most of my life trying to sort out Plan B and account for various contingencies, I&amp;#8217;ve never really thought about Plan A. There is so much to be said about being strong and choosing what other people might scoff at &amp;#8211; but there&amp;#8217;s also so much naivety in believing that it would turn out any differently from the previous millions of attempts people have strived &amp;#8211; and failed &amp;#8211; for. &lt;/p&gt;
&lt;p&gt;In any case, this strange inertia makes me feel like I&amp;#8217;m overlooking the canyon edge into a bottomless pit. I lose a lot of focus when I&amp;#8217;m in Hong Kong because everything here seems so gratuitous, so indulgent, filled with girly chit-chats and softly-uttered romance by Victoria harbour. There are candle-lit dinners overlooking the sea; giggly whispers as we lean over the balcony of a towering skyscraper, dangling our wine glasses in the glow of the light symphony; there are succulent banquets, plates of sashimi, juicy dumplings, warm custard-filled buns with creamy-soft insides, each engulfed in passing moments that are used and discarded. We live for the next, and then the next. I forget a lot of the things that haunt my mind but I know it is starting to all come back as the flight date looms ever closer. &lt;/p&gt;
&lt;p&gt;On a lighter note &amp;#8211; Kim&amp;#8217;s visit! I will post photos as soon as I get my grubby hands on them. &lt;/p&gt;</content>
		<author>
			<name>Trip</name>
			<uri>http://www.paper-stranger.net/blog</uri>
		</author>
		<source>
			<title type="html">Never Trust This Person</title>
			<subtitle type="html">Take my word for it.</subtitle>
			<link rel="self" href="http://trip.uwcs.co.uk/blog/?feed=rss2"/>
			<id>http://trip.uwcs.co.uk/blog/?feed=rss2</id>
			<updated>2010-09-01T08:00:06+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Films (6)</title>
		<link href="http://mulletron.uwcs.co.uk/blog/?p=121"/>
		<id>http://mulletron.uwcs.co.uk/blog/?p=121</id>
		<updated>2010-08-31T16:06:05+00:00</updated>
		<content type="html">&lt;p&gt;I haven&amp;#8217;t watched that many films recently, but I thought I&amp;#8217;d cover a few I recall before I forgot them totally!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Warning: contains spoilers&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Some Kind of Monster&lt;/strong&gt;&lt;br /&gt;
&lt;em&gt;When the hell did Metallica become such a bunch of wimps?&lt;/em&gt;&lt;br /&gt;
This documentary covers Metallica&amp;#8217;s period of inner turmoil leading up to the release of St. Anger.  I&amp;#8217;ve been interested in watching this film for a while, mainly out of interest at Metallica&amp;#8217;s internal relationship rather than its Cinematic value.  The characters come across very much as one would expect.  Lars Ulrich is as self-obsessed and needy as a man can be.  James Hetfield does seem to genuinely struggle with his emotions and wears his heart on his sleeve.  Kirk Hammett seems stuck in the middle of it all.  There&amp;#8217;s a great scene depicting an argument between the band mates where he is trying to play peacemaker.  He seems to calm them down.  Lars looks at the camera.  He looks again.  Then decides to start off on another rant.&lt;/p&gt;
&lt;p&gt;Its very much Ulrich&amp;#8217;s film &amp;#8211; he has the most screen time, his father is involved, there&amp;#8217;s a meeting between him and Dave Mustaine that appears to be told entirely from his point of view.  Its quite self serving in that regard.  He is very open about his relationship with Hetfield though, about the love/hate and about their disagreements over the years.  It still comes across as though he wants some more acknowledgement from Hetfield about how important he is.  He doesn&amp;#8217;t deserve it frankly.&lt;/p&gt;
&lt;p&gt;There&amp;#8217;s a nice narrative arch to the film though &amp;#8211; their bass player Jason Newsted has left, and they are seeking a replacement whilst writing a new album.  Inner turbulence destabilises this attempt and Hetfield goes into rehab.  A lot of the new material they&amp;#8217;ve written needs improvement.  Lars Ulrich offers a physical manifestation of this rebirth by selling the artwork that has dominated the interior of his home for years.  Hetfield&amp;#8217;s return from drug rehab brings new problems &amp;#8211; he can&amp;#8217;t practise too much of the day, but doesn&amp;#8217;t want to let other people create the new album behind his back.  At the end things work out though &amp;#8211; they complete and release their new album and get a new bass player.&lt;/p&gt;
&lt;p&gt;The problem is that even though the film does have a nice rounded narrative arch, the characters haven&amp;#8217;t really developed.  Hetfield has got off drugs, and should be applauded for that.  When he returns though &amp;#8211; he still has the same control issues and we never see him get away from them.  Ulrich is still acting like a pubescent teenager.  Hammett is still the man in the middle.  Some Kind of Monster gives a snapshot of a dysfunctional family of sorts &amp;#8211; but they get their act together without resolving their dysfunction.  This is a conclusion as dissatisfying as the album St. Anger.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hard Knocks: The Chris Benoit Story&lt;/strong&gt;&lt;br /&gt;
&lt;em&gt;Fascinating film because of its time period and the man&amp;#8217;s history&lt;/em&gt;&lt;br /&gt;
I&amp;#8217;m a intermittent professional wrestling fan.  Its not big.  Its not clever.  It really doesn&amp;#8217;t fit in with my other interests at all, or most of my friends for that matter.  Chris Benoit used to be one of my absolute favourite wrestlers.  He wasn&amp;#8217;t that large, but he was very intense and an excellent technical wrestler.  He made his opponents look a million dollars and had an excellent work rate.  Coincidently he shares his birthday with me.  This DVD is a WWE released documentary of his life, timed to piggyback off his winning the World Heavyweight Title in 2004 &amp;#8211; a work of pure commercial ambition to enrich a promotion and a wrestler in their prime.  It covers his early years working in Canada, Mexico, Japan and ECW.  His rise through the ranks in WCW to his main eventing Wrestlemania.  At the point of this release Benoit is at his apogee.&lt;/p&gt;
&lt;p&gt;The documentary is delightfully revisionist and fails to tell the full story of his rise.  In 1996 Kevin Sullivan was booking WCW.  The booker is the person who decides who fights who and who wins in a professional wrestling promotion.  His offscreen Wife Nancy &amp;#8211; going by the name &amp;#8216;Woman&amp;#8217; &amp;#8211; was also his onscreen wife.  In the story lines she leaves Sullivan and starts a relationship with Benoit during their feud.  Off screen the exact same thing happens.  Kevin and Nancy Sullivan eventually get divorced, and Sullivan retires from the ring in order to concentrate on his booking.  He is then fired as WCW head booker fairly shortly after.  One of the primary reasons that Benoit leaves WCW in 2000 isn&amp;#8217;t the decline in the promotion&amp;#8217;s stature its because Sullivan has just regained his power as head booker, and Benoit doesn&amp;#8217;t trust him at all.&lt;/p&gt;
&lt;p&gt;Another missing aspect of this whole saga is the sorry downfall of Chris Benoit that occurs after the release of this DVD.  He never regains the World Title and he position in the WWE ranks slowly drops down the card.  His friend Eddie Guerrero, who he worked with in ECW and WCW at a similar times and moved to WWE with commits suicide.  On June 22 2007 Chris Benoit tied his wife Nancy up at the foot of their bed and asphyxiated her.  He then proceeded to Strangle his 7 year old son, and finally on June 25th he hangs himself.  The man portrayed in this DVD, the gap-toothed, smiling, honest, man who has worked his way up through the ranks to the top of his promotion through talent and determination is a murderer.&lt;/p&gt;
&lt;p&gt;I guess this brings me to the purpose of watching this documentary.  WWE has a huge child audience, and a huge responsibility towards them.  Their current product is PG rated &amp;#8211; it avoids blood, serious swearing and nudity.  Their stories are simple fables &amp;#8211; with an underlying good vs bad naive morality.  The kind of thing most parents seem to want their children to watch.  The wrestlers themselves though are hewn from imperfection.  Jeff Hardy, probably the most popular wrestler in 2009, is a long time drug user and is currently undergoing criminal prosecution for alleged drug trafficking.  This is even referred to in his last major storyline before leaving WWE. &lt;/p&gt;
&lt;p&gt;People like the on screen characters because their catchphrases, their bold clothing and their attitude.  If you can peer behind the curtain things aren&amp;#8217;t the good vs evil struggles that appear on television there are complex struggles in the person lives of these people.  The good guys may not triumph.  The bad guys may not perish.  Examples of life imitating art like Nancy choosing Chris Benoit over Kevin Sullivan are notable because they are so rare, because of the huge differences between the comic book world of wrestling and real life.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Doctor Zhivago&lt;/strong&gt;&lt;br /&gt;
&lt;em&gt;A personal epic?&lt;/em&gt;&lt;br /&gt;
Doctor Zhivago tells the tale of a Russian Poet and Doctor during the end of Tsarist Russia and the early years of Communism.  David Lean&amp;#8217;s films feel simultaneously personal and epic.  In Dr. Zhivago he manages to constantly switch between the struggles in his love life and his personal outlook and the beautiful scenery and surroundings that the story is set in.  Its actually not shot in Russia, but mainly in Spain sadly.  There&amp;#8217;s a deliberate focus within the film on the emotional aspects of the story and away from the political background.  In some sense Dr. Zhivago is an archetypal upper middle class Russian during communism.  Regardless of his personal talents and his vocation for healing he is under the control of the party machine.  He is forced to move from his home.  There&amp;#8217;s a fascinating scene where Klaus Kinski plays a madman on a train, under imprisonment for alleged treason, ranting and raving.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m somewhat disappointed that there isn&amp;#8217;t more coverage of the political aspects of the revolution.  It doesn&amp;#8217;t really cover the Provisional Government or consider the implications of a potential middle ground that people like Zhivago represent.  Here Dr. Zhivago is portrayed as an honest man in surroundings outside of his control.  His political fate is controlled by others &amp;#8211; initially the Tsar&amp;#8217;s government and then the Bolsheviks.  I suppose this could all get quite heavy handed especially given the love story and epic nature of his personal journey.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Inception&lt;/strong&gt;&lt;br /&gt;
&lt;em&gt;Another intelligent Blockbuster from Christopher Nolan&lt;/em&gt;&lt;br /&gt;
Inception stars Leonardo DiCaprio as Cobb &amp;#8211; a man who steals people&amp;#8217;s intellectual property via their dreams.  Separated from his children he takes on one last job in the hope that he can be cleared of murder charges that hang over his head and be reunited with them.  One of things that disappointed me about Avatar when I saw it was that it really lacked any serious exploration of the idea of dreams as reality.  The real hook there was love &amp;#8211; that was the motive for Sully to keep himself in his avatar.  Inception confronts that head on by presenting a shared dream state where your thoughts can create reality.  That offers the peril that your more warped instincts and your obsessions creep in.  The dreams themselves involve one plugging into a crazy machine that&amp;#8217;s vaguely reminiscent of the game from David Cronenberg&amp;#8217;s eXistenZ.&lt;/p&gt;
&lt;p&gt;This emphasizes the notion of Cinema as being a kind of shared dreaming experience.  You have the fantasy and the escapism, but also need some emotional connection with the characters involved.  Unfortunately I saw Inception at Chapter in Cardiff who were having some projection problems at the time, and our &amp;#8216;shared dream&amp;#8217; was rudely interrupted twice.  This didn&amp;#8217;t ruin the experience but it did make one incredibly aware of the fragility of the metaphor.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve become increasingly bored of recent action film outings.  In the 1980s cheap humour and irony were allowed to liven things up, &amp;#8220;You know I said I&amp;#8217;d kill you last Sully?&amp;#8221;  Unfortunately as the move has been made to more mainstream outings a significant amount of seriousness has cropped in.  Combined with the current trend of editing action sequences that makes my sweet sixteen look well shot and I&amp;#8217;m totally lost.  Christopher Nolan often seems to liven things up by putting small puzzles into his films at times of tension.  Placing the prisoner&amp;#8217;s dilemma in The Dark Knight was a good example of this.  Obviously since it was a film it got explored from the psychological, rather than game theoretic, point of view but exciting nonetheless.  Frankly I have no idea how would explain the notion of an equilibrium being pareto-suboptimal in a film, let alone in a dramatic way.  I think that even given Batman&amp;#8217;s interference its Pareto-suboptimal since it can just be modelled as another state, and blowing the other guys up still doesn&amp;#8217;t lose you any utility, but that&amp;#8217;s just a sidenote.  Here the notion of the impossible occurring in dream sequences is manifested by Penrose Stairs.  These are first introduced simply to show you this idea, but then later used in a critical action sequence as a creative way of someone winning the fight.  Also they are revealed in both cases by a change in camera position suggesting a subjective view on the objectivity of a shared dream experience.&lt;/p&gt;
&lt;p&gt;Obsession is a theme persistent throughout Nolan&amp;#8217;s work.  His first film, &amp;#8216;Following&amp;#8217; revolves around a man obsessed with following people with his camera and filming them.  Alongside its memory related plot Memento explores the obsession a man goes through when trying to find his wife&amp;#8217;s killer.  In Batman Begins Batman is obsessed with Bats (shuuuut up) and more seriously with his father, his search for a father figure through Alfred and Ducard etc.  The Prestige documents two magicians obsessed with each other.  The Joker is obsessed with &amp;#8216;The Batman&amp;#8217; in The Dark Knight.  Here Cobb&amp;#8217;s wife provides the focus of attention.  He is longing for some closure and some sleep as much as he is longing to see his children.&lt;/p&gt;
&lt;p&gt;The film utilises some heist-movie tropes, and could be seen as a heist movie.  A team of specialists are assembled.  There&amp;#8217;s a mark who must be conned in order to perform the Heist.  A convoluted plot outlined before the heist happens in thrown into chaos almost immediately as things go disastrously wrong.  In this case its a heist turned on its head &amp;#8211; they are trying to put an idea into the mark&amp;#8217;s mind rather than steal something from his wallet.  [0]&lt;/p&gt;
&lt;p&gt;I&amp;#8217;d highly recommend Inception to people, I went with my mum to see the film and she&amp;#8217;s normally quite anti- violent action packed films, though these issues all disappear as soon as there&amp;#8217;s something interesting going on.  I&amp;#8217;m inclined to conclude from that its pretty open to anyone.  My only real criticism is that perhaps it good do with a little less action.  The snow scape is quite picturesque but Inception does seem to turn into a Bond Movie for about 10 minutes around then.  I really don&amp;#8217;t think its too much to ask for a blockbuster film to also aim for consistent creativity, but sadly I think that drags Inception down to &amp;#8216;must see summer film level&amp;#8217; from potentially something higher.&lt;/p&gt;
&lt;p&gt;[0] On a tangent &amp;#8211; apparently they&amp;#8217;re remaking Le Cercle rouge, Outrageous!&lt;/p&gt;</content>
		<author>
			<name>Mulletron</name>
			<uri>http://mulletron.uwcs.co.uk/blog</uri>
		</author>
		<source>
			<title type="html">Rising Antinomy</title>
			<subtitle type="html">More True Contradictions ...</subtitle>
			<link rel="self" href="http://mulletron.uwcs.co.uk/blog/?feed=rss2"/>
			<id>http://mulletron.uwcs.co.uk/blog/?feed=rss2</id>
			<updated>2010-09-01T14:00:17+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Scott Pilgrim vs. The World: The Trailer: The Movie</title>
		<link href="http://twinklefeet.uwcs.co.uk/blog/?p=39"/>
		<id>http://twinklefeet.uwcs.co.uk/blog/?p=39</id>
		<updated>2010-08-29T03:41:55+00:00</updated>
		<content type="html">&lt;p&gt;I&amp;#8217;m not normally a cinema goer. Pretty much anyone who knows me knows that I much prefer to watch films at home, lying on a sofa. Cinemas, while an interesting outing, are expensive, restrictive, expensive and expensive. Perhaps growing up in a village where the nearest city didn&amp;#8217;t even have a multi-screen cinema has turned me against them somewhat. However this summer I&amp;#8217;ve been out to see more films than in the past 4 years put together; the latest being the well-hyped Scott Pilgrim vs. The World.&lt;/p&gt;
&lt;p&gt;Apparently based off a comic book, SPvTW has got a lot of attention from the teenage/early 20s crowd. Personally I hadn&amp;#8217;t heard about the movie until people started posting the trailer to Facebook, but the hype is definitely there. I went into this movie having only seen the trailer. I&amp;#8217;d not seen or heard anything about the plot or even how good the film was supposed to be. But still, it was a good opportunity to get out of the house and spend some time with some friends. An occurrence all too rare during the holidays. The story of the movie is as follows: Scott Pilgrim is your standard geeky, 22-year-old bass player who lives in a small Toronto house with his roommate Wallace. Scott meets, literally, the girl of his dreams. Unfortunately his pursuit of said girl leads to some unfortunate encounters as Scott needs to defeat her Seven Evil Exes in order to have a relationship with the girl, all the while trying to achieve stardom with his terribly named band.&lt;/p&gt;
&lt;p&gt;The film clocks in at 112 minutes, but needs to fit in a lot of story.  It juggles the plot threads of the various characters around with the  long fights and even a few surreal visual scenes, all under 2 hours. Obviously, this means that the movie is &lt;em&gt;fast. &lt;/em&gt;After the short intro, the movies rockets up to a blistering pace and never really slows down. Of course, this can lead to some great comic moments. There&amp;#8217;s a running joke where the camera cuts away from Scott, someone mentions his hair only to immediately cut back to him wearing a hat. There&amp;#8217;s a lot of small jokes that definitely gave me a chuckle. The problem is that they&amp;#8217;re all blink-and-you&amp;#8217;ll-miss-it moments. While this can help a movie every now and then, I&amp;#8217;m not so convinced it works as the entire concept behind the movie&amp;#8217;s pacing. The movie also has this strange habit of throwing random effects on the screen at important or pivotal moments: big batman-style sound effects accompanying the musical portion, a kiss leading to a load of floaty hearts escaping the kissers&amp;#8217; mouths, etc. My guess is that this is trying to keep the style of the comic, similar to a number of other adaptations. But this combined with the movies over the top speed leads to the whole thing feeling rather schizophrenic. Scenes and people jump right out of nowhere with little-to-no buildup and at times can feel very heavy-handed. Even though they can sometimes feel out of place the visuals are quite impressive. Throughout the movie the style and cinematography are fantastic. The snow covered city shots are great, and while you may not expect them, the stylised effects the movie occasionally burps out at the viewer look very nice. All in all it gives a very pleasing experience visually.&lt;/p&gt;
&lt;p&gt;Hopefully a film that features an up-and-coming band will have some good music (Wyld Stallyns not withstanding).  For the most part it succeeds. It has some vaguely interesting alternative rock stuff, meandering around various similar styles.  The music in the several band-playing scenes is on the whole very good and fits the visuals seamlessly. This is also where a lot of the direct video game references fall. The film opens to the sound of some familiar Legend of Zelda music, which features all the way through the move. At one point it&amp;#8217;s even remixed to provide an oddly haunting soundtrack to a quite serene scene. Not something normally associated with 8-bit music these days.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s a good thing that the majority of direct video game references are kept to the music. The few that aren&amp;#8217;t are, unfortunately, a bit jarring. They don&amp;#8217;t really fit that much with the rest of the movie, and if you don&amp;#8217;t know what they&amp;#8217;re talking about then it won&amp;#8217;t make a whole lot of sense. It can feel a little like the viewer is being pandered to, but for the most part this is just nit-picking. They&amp;#8217;re few and far between and, much like the rest of the movie, they&amp;#8217;re gone almost as soon as they show up so it&amp;#8217;s not much of a problem.&lt;/p&gt;
&lt;p&gt;All in all SPvTW is a solid movie, but very, very silly and at times more than a little juvenile. My advice would be this: Watch the trailer. If it doesn&amp;#8217;t grab you, then perhaps give Scott Pilgrim a miss. But if you like it, you&amp;#8217;ll probably love the movie itself because, really, it&amp;#8217;s just more of the same.&lt;/p&gt;</content>
		<author>
			<name>Twinklefeet</name>
			<uri>http://twinklefeet.uwcs.co.uk/blog</uri>
		</author>
		<source>
			<title type="html">Pretentious Prog Nonsense</title>
			<subtitle type="html">One man's fight against supreme frustration.</subtitle>
			<link rel="self" href="http://twinklefeet.uwcs.co.uk/blog/?feed=rss2"/>
			<id>http://twinklefeet.uwcs.co.uk/blog/?feed=rss2</id>
			<updated>2010-08-29T04:00:29+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Radio Silence</title>
		<link href="http://blog.phenorbital.co.uk/2010/08/29/radiosilence/"/>
		<id>http://blog.phenorbital.co.uk/?p=207</id>
		<updated>2010-08-28T23:04:32+00:00</updated>
		<content type="html">&lt;p&gt;So, it&amp;#8217;s been a while since the last blog post &amp;#8211; and I&amp;#8217;ve not really got much to explain that other than being rather busy with work (what&amp;#8217;s new there) and generally apathetic about the whole thing (yeah&amp;#8230; my fault entirely).&lt;/p&gt;
&lt;p&gt;Still &amp;#8211; I&amp;#8217;m going to try and resurrect this with some posts over the next few weeks (as I&amp;#8217;ve got nothing else planned apart from work), and in the meantime I shall leave this post with a photo from a recent trip to Scotland (click to go to the flickr set with the rest of the photos):&lt;a href=&quot;http://www.flickr.com/photos/christopherhawley/sets/72157624827562340/with/4935328627/&quot;&gt;&lt;img class=&quot;aligncenter&quot; title=&quot;Scotlandshire&quot; src=&quot;http://farm5.static.flickr.com/4098/4935328627_47f23f368b_m.jpg&quot; alt=&quot;A view from a dam in the Highlands&quot; width=&quot;240&quot; height=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;!--c285fc82cbc74dac90cdaa330c223f02--&gt;&lt;/p&gt;</content>
		<author>
			<name>Blood God</name>
			<uri>http://blog.phenorbital.co.uk</uri>
		</author>
		<source>
			<title type="html">phenorbital</title>
			<subtitle type="html">Blog of a graduate working in banking IT in London.</subtitle>
			<link rel="self" href="http://blog.phenorbital.co.uk/feed/"/>
			<id>http://blog.phenorbital.co.uk/feed/</id>
			<updated>2010-08-31T20:00:25+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Doctor Who Adventure Games: TARDIS micro-review</title>
		<link href="http://nathanwong.co.uk/blog/2010/08/28/doctor-who-adventure-games-tardis-micro-review/"/>
		<id>http://nathanwong.co.uk/blog/?p=162</id>
		<updated>2010-08-27T23:29:08+00:00</updated>
		<content type="html">&lt;p&gt;&lt;img class=&quot;alignnone wp-image-163&quot; title=&quot;Doctor Who Episode 3&quot; src=&quot;http://nathanwong.co.uk/blog/wp-content/uploads/2010/08/drwhoep3.jpg&quot; alt=&quot;&quot; width=&quot;684&quot; /&gt;&lt;br /&gt;
Micro-review really is the appropriate term here, because there really isn&amp;#8217;t much of a game to pass comment on. From first loading the game through the end of the credits took no more than 50 minutes, a quarter of which time was likely absorbed replaying failed attempts at minigames.&lt;/p&gt;
&lt;p&gt;Indeed, very little has changed from the formula &lt;a title=&quot;Geronimo! Dr. Who Adventures | Whittlings&quot; href=&quot;http://nathanwong.co.uk/blog/2010/07/05/geronimo-dr-who-adventures/&quot;&gt;outlined in my previous post&lt;/a&gt;, so it&amp;#8217;s worth only noting the few changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Corresponding to the reduced length of the game, there are only two environments to explore, one of which is largely filled with factual trinkets from the Doctor&amp;#8217;s past. At least both environments are pretty well realised.&lt;/li&gt;
&lt;li&gt;There&amp;#8217;s a new minigame! But it&amp;#8217;s a quiz, which sucks. Particularly when you have to restart the whole thing after failing the final question. The stupid and finicky maze minigame also makes an unwelcome return.&lt;/li&gt;
&lt;li&gt;It would be impossible to describe the puzzles as challenging.&lt;/li&gt;
&lt;li&gt;I think they only use a single piece of background music and loop it for the duration of the game.&lt;/li&gt;
&lt;li&gt;It&amp;#8217;s not all bad: the quality of the writing is, on the whole, significantly improved over previous episodes; as is the voice acting, which is generally of a decent quality. The few slip-ups seem to be the result of shoddy Direction.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Edit:&lt;/em&gt; I almost forgot: no stealth sections! Best. Doctor Who game. Ever.&lt;/p&gt;</content>
		<author>
			<name>Estel</name>
			<uri>http://nathanwong.co.uk/blog</uri>
		</author>
		<source>
			<title type="html">Whittlings » planet</title>
			<subtitle type="html">Nathan Wong</subtitle>
			<link rel="self" href="http://nathanwong.co.uk/blog/category/planet/feed/"/>
			<id>http://nathanwong.co.uk/blog/category/planet/feed/</id>
			<updated>2010-08-28T00:00:25+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Netbeans on n900</title>
		<link href="http://benjiweber.co.uk/blog/2010/08/23/netbeans-on-n900/"/>
		<id>http://benjiweber.co.uk/blog/?p=120</id>
		<updated>2010-08-23T20:47:52+00:00</updated>
		<content type="html">&lt;p&gt;I meant to post some time ago about how great the &lt;a href=&quot;http://maemo.nokia.com/n900/&quot;&gt;n900&lt;/a&gt; is for java development. Not only can one install OpenJDK, but Netbeans is even usable. It&amp;#8217;s pretty easy to get running. Just install openjdk6 in the application manager. Then download and run the netbeans installer.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://files.benjiweber.co.uk/nbn900/Screenshot-20100527-141307.png&quot; alt=&quot;installation&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://files.benjiweber.co.uk/nbn900/Screenshot-20100527-150754.png&quot; alt=&quot;running&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It even runs at quite a reasonable speed if you&amp;#8217;re not running much else.&lt;/p&gt;</content>
		<author>
			<name>Benji</name>
			<uri>http://benjiweber.co.uk/blog</uri>
		</author>
		<source>
			<title type="html">Benji's Blog</title>
			<link rel="self" href="http://benjiweber.co.uk/blog/feed/"/>
			<id>http://benjiweber.co.uk/blog/feed/</id>
			<updated>2010-08-23T21:00:32+00:00</updated>
			<rights type="html">Copyright - 2008 
		
			Benjamin Weber</rights>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Java Abuse: public static void main was not invented here.</title>
		<link href="http://benjiweber.co.uk/blog/2010/08/23/java-abuse-public-static-void-main-was-not-invented-here/"/>
		<id>http://benjiweber.co.uk/blog/?p=107</id>
		<updated>2010-08-23T20:42:48+00:00</updated>
		<content type="html">&lt;p&gt;Normally a command-line Java application will have an entry method that looks something like:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;java&quot;&gt;&lt;span&gt;public&lt;/span&gt; &lt;span&gt;static&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; main&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;... &lt;span&gt;args&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;
    &lt;span&gt;/* Code that launches the application/deals with command line params here */&lt;/span&gt;
&lt;span&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This is far too easy, there must be a way to NIH it ¬_¬. There are a few annoyances with the public static void main method.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Args are passed in as an Array, rather than something like a List&amp;lt;String&amp;gt;&lt;/li&gt;
&lt;li&gt;We can&amp;#8217;t choose to call the main method something other than main.&lt;/li&gt;
&lt;li&gt;It&amp;#8217;s a bit obscure how the startup process works.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There is a common way to execute code on app startup without using a static void main method. You can use a static initialization block:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;java&quot;&gt;&lt;span&gt;static&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;
    &lt;span&gt;/* Code here run on class load. */&lt;/span&gt;
&lt;span&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;So we could launch our application from within a static initialization block. However this presents a number of problems:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;We get a nasty error when the application finishes (Exception in thread &amp;#8220;main&amp;#8221; java.lang.NoSuchMethodError: main)&lt;/li&gt;
&lt;li&gt;We have no access to the command line arguments&lt;/li&gt;
&lt;li&gt;We can&amp;#8217;t have multiple &amp;#8220;Main&amp;#8221; classes with this method (Both static initialization blocks will be run, if both classes are loaded)&lt;/li&gt;
&lt;li&gt;It doesn&amp;#8217;t really provide any benefits over static void main.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;These problems can, however, all be overcome. &lt;/p&gt;
&lt;h3&gt;Suppressing NoSuchMethodError&lt;/h3&gt;
&lt;p&gt;We can just call System.err.close(); at the end of our initialization method.&lt;/p&gt;
&lt;h3&gt;Access to the command line arguments&lt;/h3&gt;
&lt;p&gt;This one is probably the most difficult. I&amp;#8217;ve not found any &amp;#8220;good&amp;#8221; way to do this, but there is a hack that works at present on Sun&amp;#8217;s Java, though it may stop working at any point.&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;java&quot;&gt;sun.&lt;span&gt;misc&lt;/span&gt;.&lt;span&gt;VMSupport&lt;/span&gt;.&lt;span&gt;getAgentProperties&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;.&lt;span&gt;get&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;sun.java.command&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This will give the command line string used to start the application. There are alternatives involving attaching to the currently running VM with the Agent API or shelling out to external processes and using platform-specific commands to work out the command used to start the application. If anyone knows a proper way to access the command line arguments using the public API then please let me know.&lt;/p&gt;
&lt;h3&gt;Multiple Main Classes&lt;/h3&gt;
&lt;p&gt;We need to get our initialization system to ignore invocations from classes other than the one used to start our application. This can be done by checking the length of the StackTrace. e.g.&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;java&quot;&gt;&lt;span&gt;new&lt;/span&gt; &lt;span&gt;Throwable&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;.&lt;span&gt;fillInStackTrace&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;.&lt;span&gt;getStackTrace&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;.&lt;span&gt;length&lt;/span&gt; &lt;span&gt;==&lt;/span&gt; &lt;span&gt;2&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3&gt;Reflection Examples&lt;/h3&gt;
&lt;p&gt;With these 3 issues solved it&amp;#8217;s possible to do things like:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;java&quot;&gt;&lt;span&gt;package&lt;/span&gt; &lt;span&gt;MainlessDemo&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span&gt;import&lt;/span&gt; &lt;span&gt;java.util.List&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
&lt;span&gt;import&lt;/span&gt; &lt;span&gt;static&lt;/span&gt; uk.&lt;span&gt;co&lt;/span&gt;.&lt;span&gt;benjiweber&lt;/span&gt;.&lt;span&gt;realjava&lt;/span&gt;.&lt;span&gt;mainless&lt;/span&gt;.&lt;span&gt;Bootstrap&lt;/span&gt;.&lt;span&gt;init&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span&gt;public&lt;/span&gt; &lt;span&gt;class&lt;/span&gt; ReflectionMainless &lt;span&gt;&amp;#123;&lt;/span&gt;
	&lt;span&gt;static&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt; init&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt; &lt;span&gt;&amp;#125;&lt;/span&gt;
	&lt;span&gt;public&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; main&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;final&lt;/span&gt; List&lt;span&gt;&amp;lt;&lt;/span&gt;String&lt;span&gt;&amp;gt;&lt;/span&gt; args&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;
		&lt;span&gt;System&lt;/span&gt;.&lt;span&gt;out&lt;/span&gt;.&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;Hello World&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
		&lt;span&gt;System&lt;/span&gt;.&lt;span&gt;err&lt;/span&gt;.&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;From std err&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
		&lt;span&gt;for&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;String&lt;/span&gt; arg &lt;span&gt;:&lt;/span&gt; args&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;
			&lt;span&gt;System&lt;/span&gt;.&lt;span&gt;out&lt;/span&gt;.&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;arg&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;	
		&lt;span&gt;&amp;#125;&lt;/span&gt;
	&lt;span&gt;&amp;#125;&lt;/span&gt;
&lt;span&gt;&amp;#125;&lt;/span&gt;
&lt;span&gt;/* Output:
$ javac -cp .:./RealJava.jar ./MainlessDemo/*.java &amp;amp;&amp;amp; java -cp .:./RealJava.jar MainlessDemo.ReflectionMainless Foo Bar Baz
Hello World
From std err
Foo
Bar
Baz
*/&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Here a statically imported &amp;#8220;init&amp;#8221; method instantiates our main class, invokes our non-static main method, and passes it the command line arguments. The class to instantiate can be determined by walking back up the stack trace again.&lt;/p&gt;
&lt;p&gt;We can also inject constructor arguments if we wish:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;java&quot;&gt;&lt;span&gt;package&lt;/span&gt; &lt;span&gt;MainlessDemo&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span&gt;import&lt;/span&gt; &lt;span&gt;java.util.List&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
&lt;span&gt;import&lt;/span&gt; &lt;span&gt;static&lt;/span&gt; uk.&lt;span&gt;co&lt;/span&gt;.&lt;span&gt;benjiweber&lt;/span&gt;.&lt;span&gt;realjava&lt;/span&gt;.&lt;span&gt;mainless&lt;/span&gt;.&lt;span&gt;Bootstrap&lt;/span&gt;.&lt;span&gt;init&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span&gt;public&lt;/span&gt; &lt;span&gt;class&lt;/span&gt; ReflectionMainlessWithArgs &lt;span&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
	&lt;span&gt;// This time we pass in the constructor argument&lt;/span&gt;
	&lt;span&gt;static&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt; init&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;Hello World&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt; &lt;span&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
	&lt;span&gt;private&lt;/span&gt; &lt;span&gt;final&lt;/span&gt; &lt;span&gt;String&lt;/span&gt; message&lt;span&gt;;&lt;/span&gt;
&amp;nbsp;
	&lt;span&gt;// Even though we load another class that is Launchable it doesn't get launched.&lt;/span&gt;
	&lt;span&gt;static&lt;/span&gt; &lt;span&gt;final&lt;/span&gt; ReflectionMainless test &lt;span&gt;=&lt;/span&gt; &lt;span&gt;new&lt;/span&gt; ReflectionMainless&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt; 
&amp;nbsp;
	&lt;span&gt;public&lt;/span&gt; ReflectionMainlessWithArgs&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;final&lt;/span&gt; &lt;span&gt;String&lt;/span&gt; message&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;
		&lt;span&gt;this&lt;/span&gt;.&lt;span&gt;message&lt;/span&gt; &lt;span&gt;=&lt;/span&gt; message&lt;span&gt;;&lt;/span&gt;
	&lt;span&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
	&lt;span&gt;public&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; main&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;final&lt;/span&gt; List&lt;span&gt;&amp;lt;&lt;/span&gt;String&lt;span&gt;&amp;gt;&lt;/span&gt; args&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;
		&lt;span&gt;System&lt;/span&gt;.&lt;span&gt;out&lt;/span&gt;.&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;message &lt;span&gt;+&lt;/span&gt; &lt;span&gt;&amp;quot; (Passed in through constructor)&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
		&lt;span&gt;for&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;String&lt;/span&gt; arg &lt;span&gt;:&lt;/span&gt; args&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;
			&lt;span&gt;System&lt;/span&gt;.&lt;span&gt;out&lt;/span&gt;.&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;arg&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;	
		&lt;span&gt;&amp;#125;&lt;/span&gt;
	&lt;span&gt;&amp;#125;&lt;/span&gt;
&lt;span&gt;&amp;#125;&lt;/span&gt;
&lt;span&gt;/* Output:
$ javac -cp .:./RealJava.jar ./MainlessDemo/*.java &amp;amp;&amp;amp; java -cp .:./RealJava.jar MainlessDemo.ReflectionMainlessWithArgs Foo Bar Baz
Hello World (Passed in through constructor)
Foo
Bar
Baz
&amp;nbsp;
*/&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3&gt;Interface Examples&lt;/h3&gt;
&lt;p&gt;Unfortunately, apart from substituting an argument Array for a List, we &amp;#8216;ve not really improved anything. However, now that we&amp;#8217;re in control of the initialization process we can do more interesting things, like use an interface:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;java&quot;&gt;&lt;span&gt;public&lt;/span&gt; &lt;span&gt;interface&lt;/span&gt; Launchable &lt;span&gt;&amp;#123;&lt;/span&gt;
	&lt;span&gt;public&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; main&lt;span&gt;&amp;#40;&lt;/span&gt;List&lt;span&gt;&amp;lt;&lt;/span&gt;String&lt;span&gt;&amp;gt;&lt;/span&gt; args&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
&lt;span&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;


&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;java&quot;&gt;&lt;span&gt;package&lt;/span&gt; &lt;span&gt;MainlessDemo&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span&gt;import&lt;/span&gt; &lt;span&gt;java.util.List&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
&lt;span&gt;import&lt;/span&gt; &lt;span&gt;uk.co.benjiweber.realjava.mainless.Launchable&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
&lt;span&gt;import&lt;/span&gt; &lt;span&gt;static&lt;/span&gt; uk.&lt;span&gt;co&lt;/span&gt;.&lt;span&gt;benjiweber&lt;/span&gt;.&lt;span&gt;realjava&lt;/span&gt;.&lt;span&gt;mainless&lt;/span&gt;.&lt;span&gt;Bootstrap&lt;/span&gt;.&lt;span&gt;init&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span&gt;public&lt;/span&gt; &lt;span&gt;class&lt;/span&gt; SaferMainless &lt;span&gt;implements&lt;/span&gt; Launchable &lt;span&gt;&amp;#123;&lt;/span&gt;
	&lt;span&gt;static&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt; init&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;new&lt;/span&gt; SaferMainless&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt; &lt;span&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
	&lt;span&gt;public&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; main&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;final&lt;/span&gt; List&lt;span&gt;&amp;lt;&lt;/span&gt;String&lt;span&gt;&amp;gt;&lt;/span&gt; args&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;
		&lt;span&gt;System&lt;/span&gt;.&lt;span&gt;out&lt;/span&gt;.&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;Hello from a Launchable&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
		&lt;span&gt;for&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;String&lt;/span&gt; arg &lt;span&gt;:&lt;/span&gt; args&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;
			&lt;span&gt;System&lt;/span&gt;.&lt;span&gt;out&lt;/span&gt;.&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;arg&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;	
		&lt;span&gt;&amp;#125;&lt;/span&gt;
	&lt;span&gt;&amp;#125;&lt;/span&gt;
&lt;span&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span&gt;/*
Output:
$ javac -cp .:./RealJava.jar ./MainlessDemo/*.java &amp;amp;&amp;amp; java -cp .:./RealJava.jar MainlessDemo.SaferMainless Foo Bar Baz
Hello from a Launchable
Foo
Bar
Baz
*/&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Now it&amp;#8217;s clearer how the initialization process works, you can use your IDE to follow execution through from the init block to the main method. This also gives us the freedom to call our main method something different, and inject dependencies before reaching the main method.&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;java&quot;&gt;&lt;span&gt;package&lt;/span&gt; &lt;span&gt;MainlessDemo&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span&gt;import&lt;/span&gt; &lt;span&gt;java.util.List&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
&lt;span&gt;import&lt;/span&gt; &lt;span&gt;uk.co.benjiweber.realjava.mainless.Launchable&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
&lt;span&gt;import&lt;/span&gt; &lt;span&gt;static&lt;/span&gt; uk.&lt;span&gt;co&lt;/span&gt;.&lt;span&gt;benjiweber&lt;/span&gt;.&lt;span&gt;realjava&lt;/span&gt;.&lt;span&gt;mainless&lt;/span&gt;.&lt;span&gt;Bootstrap&lt;/span&gt;.&lt;span&gt;init&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span&gt;public&lt;/span&gt; &lt;span&gt;class&lt;/span&gt; SaferAnonymousMainless &lt;span&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
	&lt;span&gt;static&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt; init&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;new&lt;/span&gt; Launchable&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;
		&lt;span&gt;public&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; main&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;final&lt;/span&gt; List&lt;span&gt;&amp;lt;&lt;/span&gt;String&lt;span&gt;&amp;gt;&lt;/span&gt; args&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;
			SaferAnonymousMainless mainless &lt;span&gt;=&lt;/span&gt; &lt;span&gt;new&lt;/span&gt; SaferAnonymousMainless&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
			mainless.&lt;span&gt;setMessage&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;I was injected manually&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
			mainless.&lt;span&gt;someMethodNotCalledMain&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;args&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
		&lt;span&gt;&amp;#125;&lt;/span&gt;
	&lt;span&gt;&amp;#125;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt; &lt;span&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
	&lt;span&gt;private&lt;/span&gt; &lt;span&gt;String&lt;/span&gt; message&lt;span&gt;;&lt;/span&gt;
&amp;nbsp;
	&lt;span&gt;public&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; setMessage&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;final&lt;/span&gt; &lt;span&gt;String&lt;/span&gt; message&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;
		&lt;span&gt;this&lt;/span&gt;.&lt;span&gt;message&lt;/span&gt; &lt;span&gt;=&lt;/span&gt; message&lt;span&gt;;&lt;/span&gt;
	&lt;span&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
	&lt;span&gt;public&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; someMethodNotCalledMain&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;final&lt;/span&gt; List&lt;span&gt;&amp;lt;&lt;/span&gt;String&lt;span&gt;&amp;gt;&lt;/span&gt; args&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;
		&lt;span&gt;System&lt;/span&gt;.&lt;span&gt;out&lt;/span&gt;.&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;message&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
		&lt;span&gt;for&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;String&lt;/span&gt; arg &lt;span&gt;:&lt;/span&gt; args&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;
			&lt;span&gt;System&lt;/span&gt;.&lt;span&gt;out&lt;/span&gt;.&lt;span&gt;println&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;arg&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;	
		&lt;span&gt;&amp;#125;&lt;/span&gt;
	&lt;span&gt;&amp;#125;&lt;/span&gt;
&lt;span&gt;&amp;#125;&lt;/span&gt;
&lt;span&gt;/* 
Output:
$ javac -cp .:./RealJava.jar ./MainlessDemo/*.java &amp;amp;&amp;amp; java -cp .:./RealJava.jar MainlessDemo.SaferAnonymousMainless Foo Bar Baz
I was injected manually
Foo
Bar
Baz
&amp;nbsp;
*/&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href=&quot;http://github.com/benjiman/realjava/blob/master/src/main/java/uk/co/benjiweber/realjava/mainless/Bootstrap.java&quot;&gt;Source for the BootStrap.init method is here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thanks to &lt;a href=&quot;http://blog.prelode.com/&quot;&gt;Faux&lt;/a&gt; for some of the ideas.&lt;/p&gt;
&lt;p&gt;Yes I know this isn&amp;#8217;t remotely a good idea, no need to tell me &lt;img src=&quot;http://benjiweber.co.uk/blog/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt;  &lt;/p&gt;</content>
		<author>
			<name>Benji</name>
			<uri>http://benjiweber.co.uk/blog</uri>
		</author>
		<source>
			<title type="html">Benji's Blog</title>
			<link rel="self" href="http://benjiweber.co.uk/blog/feed/"/>
			<id>http://benjiweber.co.uk/blog/feed/</id>
			<updated>2010-08-23T21:00:32+00:00</updated>
			<rights type="html">Copyright - 2008 
		
			Benjamin Weber</rights>
		</source>
	</entry>

</feed>
