<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Technical &#38; Software Blog - ssims.co.uk &#187; Opinions and Observations</title>
	<atom:link href="http://blog.ssims.co.uk/index.php/category/opinions-and-observations/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.ssims.co.uk</link>
	<description>Software, Computing and Web technology discussion</description>
	<lastBuildDate>Tue, 10 Jan 2012 21:34:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>It doesn&#8217;t have to be the cloud vs software</title>
		<link>http://blog.ssims.co.uk/index.php/2011/11/the-cloud-vs-software/</link>
		<comments>http://blog.ssims.co.uk/index.php/2011/11/the-cloud-vs-software/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 20:57:25 +0000</pubDate>
		<dc:creator>ssims</dc:creator>
				<category><![CDATA[Opinions and Observations]]></category>

		<guid isPermaLink="false">http://blog.ssims.co.uk/?p=800</guid>
		<description><![CDATA[The word cloud used in the context of technology evokes a conflicted reaction from me. I am simultaneously both compelled and repelled by changes in the technology industry under the banner of &#8216;the cloud&#8217;. It&#8217;s important to be clear about what I am discussing here. In its rawest definition cloud computing means technology delivered over the internet. [...]]]></description>
			<content:encoded><![CDATA[<p>The word cloud used in the context of technology evokes a conflicted reaction from me. I am simultaneously both compelled and repelled by changes in the technology industry under the banner of &#8216;the cloud&#8217;.</p>
<p>It&#8217;s important to be clear about what I am discussing here. In its rawest definition cloud computing means technology delivered over the internet. Essentially the term cloud is used interchangeably where we might have once simply talked about internet or web based products.</p>
<p>Many vendors offer different types of cloud services under different umbrellas (most popularly Software as a Service, Platform as a Service and Infrastructure as a Service &#8211; SaaS, PaaS and IaaS). The vast majority of these services, are essentially software of one form or another, usually sold on a scalable pricing model &#8211; out with the software licence, in with the pay as you go business model.</p>
<p>The end goal of using cloud solutions is that every bit of technology used in an organisation is handled and exists remotely. That means you use virtual computers, virtual servers, and web applications for everything. It also should mean that all software you use is easily integrated through the vendors&#8217; use of open standards which allows for easier sharing and use of information.</p>
<p>The cloud vision is one of a brave new world where things are available everywhere at any time, all through the internet. The ultimate message from some vendors is that software and its development is irrelevant to users, and all they need know is that they are using technology &#8216;in the cloud&#8217;.</p>
<p>Its a really nice picture to paint, and one that is causing a big growth in provision and use of cloud technologies. The discerning reader may feel that there is a &#8216;however&#8217; hanging in the air. This &#8216;however&#8217; is about the reality of what software is and how it has been developed and provided for decades (a long time in the IT industry). These business models and technologies are nothing new. Whether things exist on-site or remotely, and whether they are physical or virtual, the problem domain is the same. Remember those open standards I mentioned that helps this technology to be easily integrated? There may be no surprises that vendors in fact aren&#8217;t adhering to them. Web applications are, both visually and behind the scenes, not all that different to desktop applications &#8211; they still have to solve business problems and do all the same things they did before, they are just delivered in a more accessible and scalable way.</p>
<p>What about companies that are offering to take care of all your technology by &#8216;taking your organisation to the cloud&#8217;, removing the need for any involvement in software development entirely and the choice of software utilised? Well the problem is that you end up with very general all-purpose solutions which implement many features that different customers want, which others may not. There is good reason that a lot of business software is still designed and developed in consultation with an individual customer, because they have very specific needs. The more you clutter software up with irrelevant features, the harder it is to use and therefore the less marketable it becomes. What you end up if you try to do everthing for everyone is something that is paradoxically very general but complex. If you envisage how customers belong to different portions of a Venn diagram (think Google+ circles if you prefer), you start to realise that actually, you need the flexibility to accomodate the very varied target market. Or you need to provide a niche product which is of course what many software companies have done succesfully in the past. In my opinion this latter option is a much better way for cloud vendors to work.</p>
<p>My conclusion then is that the way forward for &#8216;the cloud&#8217; is to stop thinking of it as a magical all encompassing environment for your technology. Instead I strongly believe there should be a varied vibrant market of ready made cloud solutions which aim to solve particular problems, and also businesses which offer a bespoke cloud solutions. Essentially I&#8217;m proposing a much simpler view of the cloud &#8211; take the software and IT industry as it currently exists and push as much as is beneficial out to the internet. But don&#8217;t try and reinvent what software and IT is, otherwise you risk throwing away every bit of it that has evolved thus far and needlessly introducing uneccesary change into customers&#8217; businesses, which they could come to resent you for.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ssims.co.uk/index.php/2011/11/the-cloud-vs-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dennis Ritchie passes away&#8230; Paying tribute to the unsung heroes of technology</title>
		<link>http://blog.ssims.co.uk/index.php/2011/10/dennis-ritchie-passes-away-paying-tribute-to-the-unsung-heroes-of-technology/</link>
		<comments>http://blog.ssims.co.uk/index.php/2011/10/dennis-ritchie-passes-away-paying-tribute-to-the-unsung-heroes-of-technology/#comments</comments>
		<pubDate>Thu, 13 Oct 2011 08:29:30 +0000</pubDate>
		<dc:creator>ssims</dc:creator>
				<category><![CDATA[Opinions and Observations]]></category>
		<category><![CDATA[Technology News]]></category>

		<guid isPermaLink="false">http://blog.ssims.co.uk/?p=809</guid>
		<description><![CDATA[In recent days Steve Jobs&#8217; sad death has been heavily covered by bloggers and the press, along with summaries of his life achievements. Another key figure in the development of the technology we all use everyday has also sadly passed away recently. Dennis Ritchie was best known for being the creator of the C programming [...]]]></description>
			<content:encoded><![CDATA[<p>In recent days Steve Jobs&#8217; sad death has been heavily covered by bloggers and the press, along with summaries of his life achievements. Another key figure in the development of the technology we all use everyday has also sadly passed away recently. Dennis Ritchie was best known for being the creator of the C programming language.</p>
<p>Tributes flooding in on <a href="http://news.ycombinator.com/">Hacker News</a> provide an excellent insight into his impact on the world around us:</p>
<blockquote style="color: #000000; font-size: 10pt;"><p><span style="color: #000000; font-size: 10pt;"><span style="color: #000000; font-size: 10pt;">There are several billion people using many billions of devices every day. </span></span>From the code in your microwave to massive computing clusters, virtually all of our software can trace its ancestry back to this man&#8217;s intellectual output. I&#8217;m eternally grateful for his life and contributions to humanity. &#8211; steveb</p></blockquote>
<p>One commenter summed it up for all those programmers out there:</p>
<blockquote>
<pre><code> #include &lt;stdio.h&gt; main() {  </code><span class="Apple-style-span" style="font-family: monospace;">
 printf("goodbye, world\n"); 
</span><span class="Apple-style-span" style="font-family: monospace;">} - bootload</span></pre>
</blockquote>
<p>It is worth remembering that while there are many individuals who have made high profile contributions to the industry, there are scores more who either due to personal preference to lead more private lives or the nature of their work never get much recognition the public domain. So not only would I like to pay tribute to this great man, but also to all those out there without whom the world would be a very different place. So a warm thank you goes out to all those people, their families have every right to be proud.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ssims.co.uk/index.php/2011/10/dennis-ritchie-passes-away-paying-tribute-to-the-unsung-heroes-of-technology/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Moving on</title>
		<link>http://blog.ssims.co.uk/index.php/2011/10/moving-on/</link>
		<comments>http://blog.ssims.co.uk/index.php/2011/10/moving-on/#comments</comments>
		<pubDate>Tue, 11 Oct 2011 12:36:21 +0000</pubDate>
		<dc:creator>ssims</dc:creator>
				<category><![CDATA[Opinions and Observations]]></category>

		<guid isPermaLink="false">http://blog.ssims.co.uk/?p=805</guid>
		<description><![CDATA[Very soon I shall be joining a new company, Open Objects, in Cambridge and moving to the area. I am forever grateful for the experience gained at my previous employer and I wish them all the best for the future. I&#8217;ll be moving to the area with my lovely girlfriend whom I&#8217;m proud to say [...]]]></description>
			<content:encoded><![CDATA[<p>Very soon I shall be joining a new company, Open Objects, in Cambridge and moving to the area. I am forever grateful for the experience gained at my previous employer and I wish them all the best for the future. I&#8217;ll be moving to the area with my lovely girlfriend whom I&#8217;m proud to say will begin her graduate job in Cambridge also.</p>
<p>I look forward to this new chapter, and hope to continue blogging about development and the tech industry in the future.</p>
<p>As an aside I&#8217;ve recently been working on some of the security aspects of web applications and I came across <a href="http://www.cl.cam.ac.uk/~jcb82/doc/entropy-encryption_draft.pdf">this nice article</a> introducing a novel cryptography technique which reinforces the fact that some of us techies can relate our work to the real world and common social experience!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ssims.co.uk/index.php/2011/10/moving-on/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Disoriented programming</title>
		<link>http://blog.ssims.co.uk/index.php/2011/08/disoriented-programming/</link>
		<comments>http://blog.ssims.co.uk/index.php/2011/08/disoriented-programming/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 13:02:56 +0000</pubDate>
		<dc:creator>ssims</dc:creator>
				<category><![CDATA[Business Development]]></category>
		<category><![CDATA[Opinions and Observations]]></category>

		<guid isPermaLink="false">http://blog.ssims.co.uk/?p=774</guid>
		<description><![CDATA[Here&#8217;s a little something to chew over &#8211; what would happen if we removed the structure and constraints imposed on the working developer? Would everything descend into chaos and be wholly unproductive&#8230; or would great things emerge with natural order from the lack of burocracy and politics? There has always been much discussion of Google&#8217;s &#8217;20% time&#8217;, [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_797" class="wp-caption alignright" style="width: 310px"><a href="http://www.github.com"><img class="size-medium wp-image-797 " title="github logo" src="http://blog.ssims.co.uk/techblog/wp-content/uploads/2011/08/github1-300x222.png" alt="" width="300" height="222" /></a><p class="wp-caption-text">github enables open source developers to collaborate effectively</p></div>
<p>Here&#8217;s a little something to chew over &#8211; what would happen if we removed the structure and constraints imposed on the working developer? Would everything descend into chaos and be wholly unproductive&#8230; or would great things emerge with natural order from the lack of burocracy and politics? There has always been much discussion of Google&#8217;s &#8217;20% time&#8217;, allocated to developers to work on whatever they want. It is difficult to analyse how or whether this works in practice, but there are some great examples of work done purely because it is the developer&#8217;s choice in the open source and philanthropic spheres.</p>
<p>Some of this unstructured work glues together the many systems we take for granted every day, and often those responsible deliver quality unrivalled in the corporate world without receiving a penny in return. With an increasing buzz around tech startups, social media and &#8216;cloud&#8217; technologies, some organisations are beginning to implement different approaches towards their software development practices, and a few are making good money from it. There is a definite likelihood that developers who have been working for large firms for some time inherit quite a blinkered view of the problem domain on which they are working.</p>
<p>While I don&#8217;t necessarily agree that the product centric world of venture capital seeking startups is the way forward for entrepreneurial developers, I do think exploring new avenues for building innovative and useful software is important. When one begins to analyse the reasons for highly structured development approaches, it is obvious that it is for the most part a direct result of the way in which business is commissioned and carried out, so it is very likely a different approach to both business as well development is necessary for the change to be successful.</p>
<p>With increasing regularity I find myself turning to open source software to solve problems I&#8217;ve encountered. The pool of resources publicly available at sites like <a href="http://www.github.com">GitHub</a> is growing rapidly, as are businesses founded on open source technology. Not all open source development is disorganised or lacking in structure but the work is certainly distributed and grows very differently to traditional closed source software.</p>
<p>The real boundary I&#8217;m trying to draw here is between work a developer has to do, and work a developer wants to do. I believe that in the latter case the results speak for themselves.</p>
<p>&#8230;You can <a href="http://github.com/stewartsims/">find me on GitHub here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ssims.co.uk/index.php/2011/08/disoriented-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The real cost of student debt</title>
		<link>http://blog.ssims.co.uk/index.php/2011/07/the-real-cost-of-student-debt/</link>
		<comments>http://blog.ssims.co.uk/index.php/2011/07/the-real-cost-of-student-debt/#comments</comments>
		<pubDate>Thu, 21 Jul 2011 12:11:47 +0000</pubDate>
		<dc:creator>ssims</dc:creator>
				<category><![CDATA[Opinions and Observations]]></category>

		<guid isPermaLink="false">http://blog.ssims.co.uk/?p=761</guid>
		<description><![CDATA[I recently graduated from university and began full time employment in the software industry. The discussion over the rise in tuition fees that has taken place in the UK and the general situation of having just finished a degree has got me thinking about attending university and its financial viability. My own opinion is rapidly [...]]]></description>
			<content:encoded><![CDATA[<p>I recently graduated from university and began full time employment in the software industry. The discussion over the rise in tuition fees that has taken place in the UK and the general situation of having just finished a degree has got me thinking about attending university and its financial viability.</p>
<p>My own opinion is rapidly heading towards the conclusion that university at the very least does not offer a majority of people any kind of financial gain on balance. It would seem to me that for most people the only real &#8216;career-wise&#8217; benefit of getting a degree is to be found in the opening of a few extra doors in terms of career progression over the lifetime of the graduate. However this is dependent upon the perceived quality of the the degree and university in question.</p>
<p>The real debt students face is not simply due to the tuition fees they must pay back, but includes the extra cost of living supplemented for most students by the maintenance loan available. This loan provides only a fraction of the amount of money necessary to survive a very frugal lifestyle in student accommodation with current food and service prices, and the debt will never be underwritten. Additionally there is the non monetary costs of the time and efforts invested in studying, which for a <em>decent </em>degree I would argue are often greater than the time and effort required in most entry level jobs.</p>
<p>Of course even though university doesn&#8217;t offer the guarantee of overall monetary gain, it does offer much more besides this in terms of life experience, intellectual stimulation, and an opportunity to expand one&#8217;s social horizons.</p>
<p>I decided to undertake my degree after a false-start at another university followed by a period of working in a &#8216;proper&#8217; job. This helped me to appreciate more about what attending university can offer. When I look back on my student days, I can honestly say it was extremely worthwhile even if it hadn&#8217;t given me any advantage in terms of earning power and employability. But that was largely due to people met and experiences had that money can&#8217;t buy.</p>
<p>In my mind the question to ask about rising tuition fees is not will it offer more earning power to future graduates, but what is the money really being <span style="text-decoration: line-through;">spent</span> wasted on?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ssims.co.uk/index.php/2011/07/the-real-cost-of-student-debt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Are all standards inherently flawed?</title>
		<link>http://blog.ssims.co.uk/index.php/2011/06/are-all-standards-inherently-flawed/</link>
		<comments>http://blog.ssims.co.uk/index.php/2011/06/are-all-standards-inherently-flawed/#comments</comments>
		<pubDate>Wed, 01 Jun 2011 16:34:02 +0000</pubDate>
		<dc:creator>ssims</dc:creator>
				<category><![CDATA[Opinions and Observations]]></category>

		<guid isPermaLink="false">http://blog.ssims.co.uk/?p=720</guid>
		<description><![CDATA[In the world of software development when you come to implement something for real, using technologies that are supposed to conform to open standards, it is very often the case that those technologies  are not quite as rigidly standardised as you might have hoped. To put this into a wider context most computer users would [...]]]></description>
			<content:encoded><![CDATA[<p>In the world of software development when you come to implement something for real, using technologies that are supposed to conform to open standards, it is very often the case that those technologies  are not quite as rigidly standardised as you might have hoped.</p>
<p>To put this into a wider context most computer users would relate to &#8211; I&#8217;m willing to bet most have come across the odd device that somehow doesn&#8217;t seem to work when plugged into that fantastically universal and seemingly completely standardised connector called USB. The reason for this is some way down the line either the device manufacturer or the computer manufacturer have deviated from the standard. Naughty manufacturers, may be the initial response of a frustrated user, but we shouldn&#8217;t go around making assumptions that it is necessarily their fault. I say this because in reality, when a technology is implemented you have to deal with the complexities introduced by real world problems. I refer to the diagram in this post to give an illustration of what I&#8217;m getting at.</p>
<div id="attachment_737" class="wp-caption aligncenter" style="width: 410px"><img class="size-full wp-image-737" title="standard-decay" src="http://blog.ssims.co.uk/techblog/wp-content/uploads/2011/04/standard-decay.jpg" alt="" width="400" height="300" /><p class="wp-caption-text">the sims model of standard decay in technologies!</p></div>
<p>A quick example in the Java world &#8211; The Enterprise JavaBeans technology in combination with Java Persistence Architecture is supposed to provide a layer of abstraction upon database interaction, known to developers as object relational mapping. The holy grail of object relational mapping is for the developer not to have to worry about issues relating to the particular relational database they are using and the application server on which their code should be running. The EJB technology is supposed to meet this goal. In reality there are inevitable implementation issues such as primary key generation options available differing depending on the database and entity relationship declarations working differently on different application servers.</p>
<p>Of course such a technology as EJBs shouldn&#8217;t be overlooked as a result of these flaws, because in fact the level of standardisation and generalisation involved is a great achievement in itself.</p>
<p>The inherent complexity of implementing technologies makes me wonder whether standards shouldn&#8217;t be defined up to a clear agreed point, beyond which vendors that implement a particular technology should define a layer which sits between the standard and the non-standard sections of the implementation which behaves according to&#8230; the vendors own standard (for an interface between standard and non-standard features!).</p>
<p>A simplified version of the circuitous argument above: standards should perhaps be more rigid and less ambitious, and any non-standard shenanigans should be extensions to the standard implemented, rather than modifications.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ssims.co.uk/index.php/2011/06/are-all-standards-inherently-flawed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>University project complete, outlook on current affairs and lessons learnt over the last few years</title>
		<link>http://blog.ssims.co.uk/index.php/2011/05/university-project-complete-outlook-on-current-affairs-and-lessons-learnt-over-the-last-few-years/</link>
		<comments>http://blog.ssims.co.uk/index.php/2011/05/university-project-complete-outlook-on-current-affairs-and-lessons-learnt-over-the-last-few-years/#comments</comments>
		<pubDate>Wed, 11 May 2011 12:50:48 +0000</pubDate>
		<dc:creator>ssims</dc:creator>
				<category><![CDATA[Opinions and Observations]]></category>

		<guid isPermaLink="false">http://blog.ssims.co.uk/?p=739</guid>
		<description><![CDATA[I&#8217;ve finally completed the lion&#8217;s share of the work and submission for a large university project today and as one tends to do when they have exam revision to be done I am reflecting [procrastinating] on life in general. This post will start with an abstract and possibly largely irrelevant outlook on the world today, [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve finally completed the lion&#8217;s share of the work and submission for a large university project today and as one tends to do when they have exam revision to be done I am reflecting [procrastinating] on life in general. This post will start with an abstract and possibly largely irrelevant outlook on the world today, and progress to talk about actual things I&#8217;ve discovered through the course of the last few years.</p>
<p>A perceived observation one could make about both international and national (UK) current affairs this year is that things are, at least in part, chaotic. I&#8217;m a big believer in choas. That is to say the literal sense of the word, and that I believe that the world <em>seems </em>to behave in a completely random and chaotic way. But there are obvious signs that order emerges from this chaos. Sometimes that order seems to be very meaningful. This is a somewhat philosophical, and potentially theological area of discussion as some believe these ordered events are governed by physical laws and others from a higher power. I plump for the former. Though I&#8217;m willing to accept the latter is a possibility I find it less compelling.</p>
<p>Anyway the point is, governments are being overthrown overseas and here in the UK we certainly have a chaotic political environment. Such chaos can lead you into thinking quite pessimistically about the future of the world that may be inherited by the young generations of today (such as myself) and the younger generations yet to come. The desperate eyes of those struggling to make ends meet in a precarious economic situation would dampen anyone&#8217;s spirits. The important thing to remember is that order will likely emerge from this chaos and that it has the potential to be much improved on the order that existed before. I think that outlook allows one to see a glimmer of hope and even excitement at what could eventually be. As I graduate very soon, the feeling of entering a brave new world is somewhat amplified.</p>
<p>So with that said (and most readers probably wondering what on earth I&#8217;m on about) I thought I would summarise some of the lessons I have learnt in recent years that might help in moving forward:</p>
<p><strong>If you want to build or achieve something, and haven&#8217;t yet started, begin now or abandon it entirely.</strong></p>
<p><strong> </strong><strong>It is very possible to get sick of something you once loved doing. </strong>Attempting to turn something into a successful business is<strong> </strong>quite likely to suck the fun out of it. There will always be obstacles to overcome and if you try push through them too quickly by working too hard, you&#8217;ll get sick of what you were trying to achieve. At that stage you really need to take a step back and some time out, because you&#8217;re in danger of screwing it up. After some time you may well get back into a place where you love doing it again.<br />
(I&#8217;m always sceptical of  people that are overly passionate about their business&#8230; it probably means they haven&#8217;t hit any of the many inevitable problems they face yet).</p>
<p><strong>People don&#8217;t <em>care</em> about products.</strong><strong> </strong>Very few end users of products such as web apps really have much concern for those that they use. No one product is a panacea for life in today&#8217;s world. If it disappeared for some reason a large chunk of facebook&#8217;s user base would probably be mildly frustrated for a moment and then just get on with their lives. And this is a big tech company we are talking about.</p>
<p><strong>If you want progress, it helps have patience and be prepared to change.</strong></p>
<p><strong>We live in a culture where praise is massively outweighed by criticism, take it seriously when people say you&#8217;ve done a good job and use positive feedback to figure out what you&#8217;re fantastic at doing. </strong>Take on criticism as well, but don&#8217;t forget that a few words of praise being so rare is worth an awful lot.</p>
<p>Well that&#8217;s about it for now. I wanted to make this a fairly general post accessible to a much wider audience than my usual. Sometimes its important to take a breather and unload what is on your mind, and hopefully you might find some part of it interesting. I&#8217;ll be back soon with an introduction to programming using Prolog, a mouse and some cheese! Look out for that soon. In the mean time for me and probably many thousands of others across the country at the moment, it is back to revision <img src='http://blog.ssims.co.uk/techblog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ssims.co.uk/index.php/2011/05/university-project-complete-outlook-on-current-affairs-and-lessons-learnt-over-the-last-few-years/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EJBs in the three tier system</title>
		<link>http://blog.ssims.co.uk/index.php/2011/03/ejbs-in-the-three-tier-system/</link>
		<comments>http://blog.ssims.co.uk/index.php/2011/03/ejbs-in-the-three-tier-system/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 21:39:10 +0000</pubDate>
		<dc:creator>ssims</dc:creator>
				<category><![CDATA[Java Development]]></category>
		<category><![CDATA[Opinions and Observations]]></category>

		<guid isPermaLink="false">http://blog.ssims.co.uk/?p=713</guid>
		<description><![CDATA[This is primarily written as a basic primer for those CMP students on the same course as me that are struggling and or frustrated with Enterprise JavaBeans. I won&#8217;t give any course work specific info, but hopefully this may help at least a bit. Firstly I should probably mention I have worked in a real [...]]]></description>
			<content:encoded><![CDATA[<p>This is primarily written as a basic primer for those CMP students on the same course as me that are struggling and or frustrated with Enterprise JavaBeans. I won&#8217;t give any course work specific info, but hopefully this may help at least a bit.</p>
<p>Firstly I should probably mention I have worked in a real software development environment coding EJBs and I&#8217;m also using the technology in my third year project, so there is a real practical use for it in the big bad world.</p>
<p><em>So, what the heck is all this EJB stuff?</em><br />
Well Enterprise JavaBeans allow you, amongst other things, to get data from a database and manipulate it. Using EJBs adds an extra tier to your system architecture, which essentially cuts down on the amount of SQL and database connectivity code you have to write (see <a href="http://blog.ssims.co.uk/index.php/web-application-architecture/">here for more info about web application architecture</a>). You&#8217;ve got three main types of beans:</p>
<ul>
<li>Entity beans &#8211; these represent tables in the database. They&#8217;re just a class with a few annotations which tell the EJB container to map between the table columns and the fields in the class.</li>
<blockquote>
<li>Example:
<div id="_mcePaste">@Entity</div>
<div id="_mcePaste">@Table(name=&#8221;YOUR_TABLE_NAME_HERE&#8221;)</div>
<div id="_mcePaste">public class EntityName implements Serializable {</div>
<div id="_mcePaste">private Integer id; //column 1</div>
<div id="_mcePaste">private String name; //column 2</div>
<div id="_mcePaste">private List&lt;AnotherEntity&gt; otherEntities = new ArrayList&lt;AnotherEntity&gt;(); //a one to many relationship</div>
<div id="_mcePaste">public EntityName () { }</div>
<div id="_mcePaste">@Id</div>
<div id="_mcePaste">@GeneratedValue(strategy=GenerationType.IDENTITY) //container generates id</div>
<div id="_mcePaste">@Column(name=&#8221;id&#8221;) //here we tell the container the name of the column this field maps to</div>
<div id="_mcePaste">public Integer getId() {</div>
<div id="_mcePaste">return id;</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">public void setId(Integer id) {</div>
<div id="_mcePaste">this.id = id;</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">@Column(name=&#8221;name&#8221;)</div>
<div id="_mcePaste">public String getName() {</div>
<div id="_mcePaste">return name;</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">public void setName(String name) {</div>
<div id="_mcePaste">this.name = name;</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">@OneToMany(cascade={CascadeType.ALL},</div>
<div id="_mcePaste">fetch=FetchType.EAGER,</div>
<div id="_mcePaste">orphanRemoval=true)</div>
<div id="_mcePaste">@JoinTable(name=&#8221;YOUR_JOIN_TABLE_HERE&#8221;,</div>
<div id="_mcePaste">joinColumns={@JoinColumn(name=&#8221;entity_id&#8221;)},</div>
<div id="_mcePaste">inverseJoinColumns={@JoinColumn(name=&#8221;another_entity_id&#8221;)})</div>
<div id="_mcePaste">public List&lt;AnotherEntity&gt; getOtherEntities() {</div>
<div id="_mcePaste">return otherEntities;</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">public void setOtherEntities(List&lt;AnotherEntities&gt; entities) {</div>
<div id="_mcePaste">this.otherEntities = entities;</div>
<div id="_mcePaste">}</div>
<p>&#8230;</li>
</blockquote>
<li>Session Beans &#8211; this is where you stick all your actual code which does stuff with the entities.</li>
<blockquote>
<li> Example:</li>
<li>@Stateless</li>
<li>public class DoStuffSessionBean implements DoStuffInterface {</li>
<li><span style="white-space: pre;"> </span>@PersistenceContext(unitName=&#8221;PERSISTENCE_CONTEXT&#8221;) //defines where mapping to database</li>
<li><span style="white-space: pre;"> </span>private EntityManager entityManager; //entity manager allows you to insert, update and delete tables in the database</li>
<li><span style="white-space: pre;"> </span>@Override</li>
<li><span style="white-space: pre;"> </span>public AnotherEntity findAnotherEntityById(Integer id) {</li>
<li><span style="white-space: pre;"> </span>try {</li>
<li><span style="white-space: pre;"> </span>return entityManager.find(Location.class, id);</li>
<li><span style="white-space: pre;"> </span>} catch(NoResultException e) {</li>
<li><span style="white-space: pre;"> </span>return null;</li>
<li><span style="white-space: pre;"> </span>}</li>
<li><span style="white-space: pre;"> </span>}<br />
&#8230; (thats a pretty boring session bean, see entityManager.merge, entityManager.persist and entityManager.remove for more things you can do</li>
</blockquote>
<li>Message Driven Beans, these are nothing to do with the database but are very useful for delivering messages for event driven processes, not really covered in the module we are carrying out though</li>
</ul>
<p><em>Great, but how do I set it all up in the first place?</em><br />
That&#8217;s half the battle with this sort of stuff. I use Eclipse IDE, you can create a new enterprise application which gives a nice structure to your project, NetBeans will also do this for you though. Its worth noting <strong>our lab machines have no facilities for developing EJB components as NetBeans doesn&#8217;t link to any EJB compatible server (e.g. JBOSS or Glassfish, it does have TomCat but this is only a servlet container so can&#8217;t do it), and the version of Eclipse is not Enterprise Edition. </strong><br />
So its down to using your own machines for development and then deploying on JBOSS when you&#8217;re done, or fiddle with the lab machines a bit&#8230; Eclipse runs out of a directory (of course you would ask a member of staff first before doing this in case we are not supposed to do this&#8230;)</p>
<p><em>OK what&#8217;s the point in doing it this way?</em><br />
Aside from the benefits already mentioned, EJBs are very scalable due to session beans. Instead of opening and closing database connections specifically, the EJB container manages all this for you and selects a bean out of a pool of them which are ready and waiting to process the method you want to perform. Basically when you have thousands of users of a system, all heavily hitting the database it enables your web application to still respond quickly.</p>
<p><em>How does it fit in with the rest of the application?</em><br />
Well, you use your session bean to gain access to, create and modify your entity beans. You can access the session bean from a servlet (using a JNDI lookup or dependancy injection &#8211; a simple @EJB annotation). There is some setup to do in the way of XML files, but IDEs can get you a long way in that respect.</p>
<p><em>Anything else?<br />
</em>There are loads of great tutorials but be aware there are a shed load of different ways to implement EJBs, so make sure at the very least its an example for EJB 3.0 you&#8217;re looking at. If something isn&#8217;t working out from one tutorial, take a look at some others and see what the most commonly used approaches are. <em> </em></p>
<p>I hope that very short intro is in some part useful to people. I have very little time to put into something like this, but I know there are going to be people tearing their hair out (to put it mildly) with this particular course work.</p>
<p><em> </em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ssims.co.uk/index.php/2011/03/ejbs-in-the-three-tier-system/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Stuff I&#8217;ve done and stuff I&#8217;ve learnt&#8230;</title>
		<link>http://blog.ssims.co.uk/index.php/2011/03/stuff-ive-done-and-stuff-ive-learnt/</link>
		<comments>http://blog.ssims.co.uk/index.php/2011/03/stuff-ive-done-and-stuff-ive-learnt/#comments</comments>
		<pubDate>Tue, 08 Mar 2011 10:16:29 +0000</pubDate>
		<dc:creator>ssims</dc:creator>
				<category><![CDATA[Opinions and Observations]]></category>

		<guid isPermaLink="false">http://blog.ssims.co.uk/?p=710</guid>
		<description><![CDATA[In the last few months I&#8217;ve been working intensively on my current main project. It&#8217;s easy to lose perspective on certain things when you&#8217;re working so closely to a particular project. So in a quick breather while one of my applications is building for the several hundredth time, I thought I would recap a bit. [...]]]></description>
			<content:encoded><![CDATA[<p>In the last few months I&#8217;ve been working intensively on my current main project. It&#8217;s easy to lose perspective on certain things when you&#8217;re working so closely to a particular project. So in a quick breather while one of my applications is building for the several hundredth time, I thought I would recap a bit.</p>
<p>Amidst finishing my degree I&#8217;ve been working on a project for what I estimate to be over 250 hours of development time alone. In this time I&#8217;ve come across many obstacles and new technologies. Here is a list of just some of those I&#8217;ve been using in recent months:</p>
<ul>
<li>Constraint Logic Programming for practical applications such as resource planning and scheduling</li>
<li>Building custom widgetsets in Vaadin</li>
<li>RESTful Web Services</li>
<li>SOAP Web Services</li>
<li>More EJB based Object Relational Mapping</li>
<li>Google Calendar and Contacts Data APIs</li>
<li>Google Accounts OAuth authentication &#8211; which yes I have now got working, more info to follow soon</li>
<li>Google GMail API</li>
<li>Java Message Service (JMS)</li>
</ul>
<p>And there is more to come as I move to going live with a product I&#8217;m developing from all these bits and pieces. This is not just a case of &#8211; &#8216;yeah I&#8217;ve looked at few code examples on the internet&#8217;, this is learning through application of these technologies to the extent that they work well with my software. I&#8217;ve not only learnt things, but learnt them without any assistance and integrated them together in applications. When I look back on all this, it makes me realise how much value I&#8217;ve accumulated as a developer in this time, and it also makes me feel much less like I&#8217;m wasting my last few months of studenthood.</p>
<p>Sure its been a utter slog at times with a mountain of information to digest and development to get through, but I think it is worth it in the long run.</p>
<p>When I look at the proportion of people who started our degree course who will actually end up being a software developer it is a little sad because so many had the potential but are unlikely to end up going into software at all. I&#8217;m not concerned for myself, those that have stuck it out and put the time in will in the next few years become incredibly valuable to employers. Its just a shame that so few will make the most of the opportunity, and it needs to change.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ssims.co.uk/index.php/2011/03/stuff-ive-done-and-stuff-ive-learnt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OAuth for Google Data API &#8211; not that easy to implement</title>
		<link>http://blog.ssims.co.uk/index.php/2011/02/oauth-for-google-data-api-not-that-easy-to-implement/</link>
		<comments>http://blog.ssims.co.uk/index.php/2011/02/oauth-for-google-data-api-not-that-easy-to-implement/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 22:35:47 +0000</pubDate>
		<dc:creator>ssims</dc:creator>
				<category><![CDATA[Java Development]]></category>
		<category><![CDATA[Opinions and Observations]]></category>

		<guid isPermaLink="false">http://blog.ssims.co.uk/?p=705</guid>
		<description><![CDATA[Google are fantastic at building APIs, but their authentication mechanisms (while I&#8217;m sure are very secure) are not always the easiest thing to implement. I&#8217;m working with the Google Data APIs at the moment for my project, for which an app needs access to google accounts, cue OAuth. Anyone who doesn&#8217;t agree it is difficult [...]]]></description>
			<content:encoded><![CDATA[<p>Google are fantastic at building APIs, but their authentication mechanisms (while I&#8217;m sure are very secure) are not always the easiest thing to implement.</p>
<p>I&#8217;m working with the Google Data APIs at the moment for my project, for which an app needs access to google accounts, cue OAuth.</p>
<p style="text-align: left;">Anyone who doesn&#8217;t agree it is difficult to use need look no further than the exceptions you can expect if something goes wrong:</p>
<p style="text-align: center;"><img class="size-full wp-image-707 aligncenter" title="exceptionmania" src="http://blog.ssims.co.uk/techblog/wp-content/uploads/2011/02/exceptionmania1.jpg" alt="" width="615" height="433" /></p>
<p style="text-align: left;">Yay! There&#8217;s no short-cut either. One thing to be thankful for is the fact that the ClientLogin authentication mechanism (really only meant for installed apps) can be implemented in two lines of code and provides a great way of testing web apps in the development phase. Unfortunately eventually you&#8217;ll have to implement OAuth if you want a properly secure web app for your users.</p>
<p style="text-align: left;">I will try and post some advice to others that need to implement OAuth once I figure it out. Even Google themselves admit in the documentation it is not the easiest of things to use, which does speak volumes. Supposedly however it helps make your apps authentication extensible if using other providers web services, although I&#8217;ve yet to check how many other web service providers use OAuth.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ssims.co.uk/index.php/2011/02/oauth-for-google-data-api-not-that-easy-to-implement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

