<?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> &#187; Technology Blog</title>
	<atom:link href="http://matt-e-lewis.co.uk/category/technology-blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://matt-e-lewis.co.uk</link>
	<description></description>
	<lastBuildDate>Thu, 15 Oct 2015 12:50:44 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.38</generator>
	<item>
		<title>CAP Theorem</title>
		<link>http://matt-e-lewis.co.uk/technology-blog/cap-theorem/</link>
		<comments>http://matt-e-lewis.co.uk/technology-blog/cap-theorem/#comments</comments>
		<pubDate>Thu, 15 Oct 2015 12:50:44 +0000</pubDate>
		<dc:creator><![CDATA[matt lewis]]></dc:creator>
				<category><![CDATA[Technology Blog]]></category>

		<guid isPermaLink="false">http://matt-e-lewis.co.uk/?p=345</guid>
		<description><![CDATA[I spent a fascinating 3-4 days last week at work with Greg Young learning more details around Domain Driven Design (DDD), Command Query Responsibility Segregation (CQRS) and Event Sourcing. This is definitely a topic that I will blog about soon. In the meantime, one of the areas touched upon was CAP Theorem which is sometimes [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I spent a fascinating 3-4 days last week at work with Greg Young learning more details around Domain Driven Design (DDD), Command Query Responsibility Segregation (CQRS) and Event Sourcing. This is definitely a topic that I will blog about soon. In the meantime, one of the areas touched upon was CAP Theorem which is sometimes referred to as Brewers Conjecture.</p>
<p>This was originally proposed by Eric Brewer back in 1998, and states that any distributed system can only achieve two of the following three properties:</p>
<ul>
<li>Consistency (C) &#8211; this means the system will always return the most up-to-date information e.g. any read of a record after it has been updated, must return the updated information</li>
<li>Availability (A) &#8211; this means the system is available so that a non-failing node will return a response within a reasonable amount of time</li>
<li>Partition Tolerance (P) &#8211; this means the service can survive a communication breakage that results in some nodes in a cluster being unable to communicate with other nodes. This is known as split brain</li>
</ul>
<p>One of the fallacies of distributed computing is that networks are reliable &#8211; they are not. As such, any distributed system must be designed to handle network partitions. This means when designing a system, we will need a trade off between consistency and availability.</p>
<p><a href="http://matt-e-lewis.co.uk/wp-content/uploads/2015/10/CAP-Example.png"><img class="alignleft size-medium wp-image-346" src="http://matt-e-lewis.co.uk/wp-content/uploads/2015/10/CAP-Example-300x133.png" alt="CAP Example" width="300" height="133" /></a></p>
<p></br></br></br></br></br></br><br />
In the example above, data is distributed across 4 nodes. To be fully consistent, when Client A updates a record, Client B must be able to read that record, even when the read is made from a separate node. The problem occurs when there is a network partition, which prevents the updates being synchronized or replicated to the other data nodes.</p>
<p>In its simplistic form, there are two basic options. A system that mandates consistency will fail when Client B attempts to access the record. A system that mandates availability will succeed but return stale data when Client B attempts to access the record.</p>
<p>It is crucial to understand that this is not an either/or binary decision. Instead, there are patterns which allow a sliding scale of availability or consistency. A system as a whole will also consist of many services, and each of these may choose a different preference. This is based on factors such as risk and probability. In my current role, the view is to be consistent when we can, but when not possible we will choose availability. This is because the probability of multiple transactions taking place almost simultaneously on a specific record are extremely rare. When choosing to use local data to improve availability, a staleness indicator will be included. This would allow a transaction to be rejected if the perceived risk was high enough if transacting against stale data.</p>
]]></content:encoded>
			<wfw:commentRss>http://matt-e-lewis.co.uk/technology-blog/cap-theorem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Lean Enterprise</title>
		<link>http://matt-e-lewis.co.uk/technology-blog/the-lean-enterprise/</link>
		<comments>http://matt-e-lewis.co.uk/technology-blog/the-lean-enterprise/#comments</comments>
		<pubDate>Mon, 12 Oct 2015 22:10:19 +0000</pubDate>
		<dc:creator><![CDATA[matt lewis]]></dc:creator>
				<category><![CDATA[Technology Blog]]></category>

		<guid isPermaLink="false">http://matt-e-lewis.co.uk/?p=337</guid>
		<description><![CDATA[With glowing references from people I have huge respect for, it was only a matter of time before I sat down and read “The Lean Enterprise’. It is a fascinating book which contains plenty of advice, backed up by case studies that really bring it to life. There is a lot of information in the [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="http://matt-e-lewis.co.uk/wp-content/uploads/2015/10/lean-enterprise.gif"><img class="alignleft size-full wp-image-338" src="http://matt-e-lewis.co.uk/wp-content/uploads/2015/10/lean-enterprise.gif" alt="lean enterprise" width="180" height="276" /></a> With glowing references from people I have huge respect for, it was only a matter of time before I sat down and read “The Lean Enterprise’. It is a fascinating book which contains plenty of advice, backed up by case studies that really bring it to life. There is a lot of information in the book, with many common themes reinforced throughout. There were a number of areas that stood out to me, based on past or current experiences, namely:</p>
<p>1) Ability to Innovate<br />
2) Command and Control versus Mission Command<br />
3) Continuous Improvement<br />
4) Value Stream Mapping<br />
5) Role and Importance of IT<br />
6) IT Best Practices<br />
7) Multiple Strategies</p>
<p></br></p>
<p>1) Ability to Innovate<br />
The long term value of an enterprise is related to its ability to increase the value it provides to customers &#8211; and to create new customers &#8211; through innovation. We are in a rapidly changing world, and no business can afford to stand still, as no business model is indefinitely sustainable. It was fascinating to read the average expectancy of a Fortune 500 company has declined from around 75 years half a century ago, to less than 15 years today. Professor Richard Foster of Yale University even estimates that by 2020, more than three-quarters of the S&amp;P 500 will be companies that we have not heard of yet.</p>
<p>The example was given of Kodak who invented the digital camera in 1975. However, this was seen as competing against their existing business model optimised around developing photographs. As a result of not recognising future trends, and the unwillingness to cannibalise (or disrupt) their existing business model, they ended up filing for bankruptcy in 2012. Other examples include Blockbuster vs Netflix, HMV and Tower Records vs iTunes, YouTube and Spotify. This all adds to the evidence that you need to constantly scan the horizon, and restlessly reinvent yourself.</p>
<p>2) Command Control vs Mission Command<br />
This struck a chord after spending many years working for a global services organisation.</p>
<p>Command and Control is the idea that people in charge make the plans and the people on the ground execute them. This is thought to be modelled on how the military operates, but is outdated. My own experience was working for an organisation in which any change needed to be escalated to get approvals at a continually higher level. What seemed worse, was that an American-led organisation, the strategies and setup were based on the US market, which in many cases was different than in the UK. There were plenty of people who in my mind “got it”, and had some great ideas. However, they were never entrusted to act on it, without spending months escalating to the core central team.</p>
<p>The organisation itself was so large, that lots of formal processes were put in place. However, this placed focus on pre-defined ways of working. It meant that innovation was stifled, which was a real shame. I can fully understand the rationale behind it, but the primary measurement for employees was utilisation. This also prevented an environment where learning new skills was encouraged, as all focus was on utilisation, and most quarters I was there (which was many) training budgets were slashed and courses cancelled.</p>
<p>Counter to Command and Control is Mission Command. With this approach, the general direction or intent of the mission is communicated from the centre, but those below have the authority to make decisions as situations change without waiting for approval through the chain of command. This also means the centre can specify the outcome they are looking to achieve, whilst allowing others to derive their own plans to achieve this based on their own knowledge of the local market.</p>
<p>3) Continuous Improvement<br />
A number of methods where discussed that all had similar characteristics:<br />
Eric Ries Build-Measure-Learn loop<br />
Colonel John Boyd created the OODA loop (Observe, Orient, Decide and Act)<br />
Deming Cycle Plan-Do-Check-Act</p>
<p>The key is to run cheap and quick experiments and building in feedback loops. Much of this thinking is already incorporated in the Government Service Design Manual with the service design phases moving from Discovery to Alpha, Beta and Live.</p>
<p>4) Value Stream Mapping<br />
This was another aspect of the book that I could relate too. Many features take a small to develop and test, but take a long time to deliver end-to-end as a result of waiting time. The best way to understand where problems start is by performing an activity called value stream mapping. A value stream is the flow of work from a customer request through to the fulfilment of that request. Each value stream crosses many functions or lines of business within an organisation.</p>
<p>I have spent a long time working on various client sites, many of which heavily weighed down by red tape and process. There are often governance boards of one variety that sit infrequently, and rely on submissions being well in advance. The cost of missing one of these submissions can add weeks in and of itself. Then you read about companies such as Amazon, Netflix and Etsy where teams in many cases do not need to raise tickets and have changes reviewed by an advisory board to get them deployed to production.</p>
<p>5) Role and Importance of IT<br />
The 2015 State of DevOps Report found that high performing IT organisations experience 60x fewer failures and recovery from failure 168x faster than their lower-performing peers. They also deploy 30x more frequently with 200x shorter lead times. An MIT Sloan Management Review report found that companies whose engineering teams did a good job of delivering their work on schedule and simplifying their systems achieved better results with much lower code bases, even if their IT investments aren’t aligned with business priorities.</p>
<p>6) IT Best Practices<br />
Decouple deployment and release: Deployment is the process of installing a piece of software, Release is the process of making the new feature available to the end user. Release is a purely business decision. There are different techniques available for this. For example, using blue-green deployments which requires two separate production environments. There is also a concept called ‘dark launching’. Developers can protect new features using ‘feature flags’ so they are only accessible to a particular set of users. This also allows for different flavours of a feature to be tested to see which is more popular, a technique known as A/B testing. Companies such as Amazon and Microsoft typically run hundreds of experiments in production at any one time and test every new feature using this method rolling it out. The same goes for Etsy, Bing, Facebook and Netflix<br />
Perform Real Failure Injection Exercises &#8211; Amazon, Google and Facebook inject faults into their production systems on a regular basis to test their disaster recovery processes. Netflix run a set of services known as the Simian Army, led by Chaos Monkey.<br />
Automate Everything &#8211; make sure all builds and deployments are automated to reduce risk of releases<br />
Reduce Batch Sizes</p>
<p>7) Multiple Strategies<br />
It is important for most organisations to have a balanced portfolio. It is also clear that exploring new opportunities and exploiting existing ones are fundamentally different strategies. The ‘Three Horizon’ model can be used to look at these different horizons.</p>
]]></content:encoded>
			<wfw:commentRss>http://matt-e-lewis.co.uk/technology-blog/the-lean-enterprise/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Goodbye Consultancy, Hello Civil Service</title>
		<link>http://matt-e-lewis.co.uk/technology-blog/goodbye-consultancy-hello-civil-service/</link>
		<comments>http://matt-e-lewis.co.uk/technology-blog/goodbye-consultancy-hello-civil-service/#comments</comments>
		<pubDate>Sat, 22 Aug 2015 20:59:30 +0000</pubDate>
		<dc:creator><![CDATA[matt lewis]]></dc:creator>
				<category><![CDATA[Technology Blog]]></category>

		<guid isPermaLink="false">http://matt-e-lewis.co.uk/?p=306</guid>
		<description><![CDATA[I joined PwC Consulting on 24th October 1999 after finishing a Masters degree at University. In 2002, PwC span off its consulting arm to separate it from the audit side of the business. A new company called ‘Monday’ was created, business cards printed and pencils sharpened. In the end, only days after this rebranding, ‘Monday’ [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I joined PwC Consulting on 24th October 1999 after finishing a Masters degree at University. In 2002, PwC span off its consulting arm to separate it from the audit side of the business. A new company called ‘Monday’ was created, business cards printed and pencils sharpened. In the end, only days after this rebranding, ‘Monday’ was bought for $3.5 billion by IBM. As a result, on 1st October 2002, I became an IBM employee in the Global Business Services division.</p>
<p>Now, almost 16 years since I first started work, I’m about to wave goodbye to the consultancy lifestyle and become a civil servant at the DVLA. On the face of it, that may seem like a crazy decision. I was doing well for myself at IBM. I’d received the highest grade given to only a small percentage of people in 3 of the last 4 years. I’d been elected to the Technical Consultancy Group (TCG), the top cross-brand technical community in IBM UK and Ireland, and I was part of the Public Sector CTO team.</p>
<p>The perception of the civil service is one of faceless individuals in suits and bowler hats. Worse still, for someone like myself with a huge interest in technology, public sector is associated with big old archaic computer systems. The truth though, is that the times are changing.</p>
<p>DVLA are on the cusp of a major transformation. Government is still faced with a large deficit meaning departments need to find ways to save money. It’s well known that legacy technology is costly and inflexible, with vast sums of money spent just to stand still. As a result, there is a fantastic opportunity to completely re-engineer the existing outdated processes whilst focusing on user need. The exemplars delivered at DVLA, for all their shortcomings, demonstrated that the agency were capable of delivering new capabilities in the cloud, built on open standards and open source, embracing DevOps, utilising multi-suppliers and delivered using an agile methodology. I firmly believe this is the approach all industries will adopt.</p>
<p>At the same time, DVLA are actively involved in building a local digital community through their partnership with TechHub, and are forging closer alliances with universities. More importantly, it allows me to get more hands-on with technology.</p>
<p>Personally, I am exciting about the next couple of years. It’s up to me to make the most of it, and that’s something I intend to do.</p>
]]></content:encoded>
			<wfw:commentRss>http://matt-e-lewis.co.uk/technology-blog/goodbye-consultancy-hello-civil-service/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Capturing Metrics Challenge part 1 &#8211; Dropwizard and Graphite</title>
		<link>http://matt-e-lewis.co.uk/technology-blog/capturing-metrics-challenge-part-1-dropwizard-and-graphite/</link>
		<comments>http://matt-e-lewis.co.uk/technology-blog/capturing-metrics-challenge-part-1-dropwizard-and-graphite/#comments</comments>
		<pubDate>Tue, 21 Jul 2015 19:50:55 +0000</pubDate>
		<dc:creator><![CDATA[matt lewis]]></dc:creator>
				<category><![CDATA[Technology Blog]]></category>

		<guid isPermaLink="false">http://matt-e-lewis.co.uk/?p=284</guid>
		<description><![CDATA[Performance metrics are key for monitoring and maintaining any system. As part of a prototype exercise, I had been busy writing some custom components to handle this. It had basically involved writing some components on Dropwizard that consume messages on RabbitMQ and write them into a MongoDB collection. There was a lot more complexity involved, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Performance metrics are key for monitoring and maintaining any system. As part of a prototype exercise, I had been busy writing some custom components to handle this. It had basically involved writing some components on Dropwizard that consume messages on RabbitMQ and write them into a MongoDB collection. There was a lot more complexity involved, as messages could arrive in any order, and I also needed to expose an API that would show summary information by service type etc.</p>
<p>Anyway, that was all exciting but deep down it felt like the wrong approach and too much custom coding involved. Looking around, there are a number of options that utilise configuration options in Dropwizard, or existing libraries.</p>
<p>The initial simple challenge was to show how you can expose performance metrics from Dropwizard and I chose <a href="http://graphite.readthedocs.org/en/latest/index.html" target="_blank">Graphite</a> as a monitoring tool to collect the data and render graphs on demand.</p>
<p>The first challenge was how to install Graphite locally on Mac OS. Graphite has a whole load of dependencies e.g. Graphite Web, Carbon, Whisper, Ceres. This was going to be a pain, but luckily there is a handy <a href="https://github.com/hopsoft/docker-graphite-statsd" target="_blank">Docker image for Graphite and Statsd</a>. Firing up Boot2Docker, I had a running instance of Graphite in no time at all.</p>
<p>Configuring Dropwizard to output metrics to Graphite was just as simple. All it took was:<br />
1) Adding the following config to the yaml file:<br />
<code><br />
metrics:<br />
reporters:<br />
- type: graphite<br />
host: localhost<br />
port: 8080<br />
prefix: </code></p>
<p>2) Adding the @Timed annotation the relevant resources<br />
3) Adding the &#8216;dropwizard-metrics-graphite&#8217; dependency to the maven POM file</p>
]]></content:encoded>
			<wfw:commentRss>http://matt-e-lewis.co.uk/technology-blog/capturing-metrics-challenge-part-1-dropwizard-and-graphite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MongoDB for Java Developers &#8211; Done!</title>
		<link>http://matt-e-lewis.co.uk/technology-blog/mongodb-for-java-developers-done/</link>
		<comments>http://matt-e-lewis.co.uk/technology-blog/mongodb-for-java-developers-done/#comments</comments>
		<pubDate>Sat, 28 Feb 2015 22:43:39 +0000</pubDate>
		<dc:creator><![CDATA[matt lewis]]></dc:creator>
				<category><![CDATA[Technology Blog]]></category>

		<guid isPermaLink="false">http://matt-e-lewis.co.uk/?p=147</guid>
		<description><![CDATA[I&#8217;ve just completed the free online 7 week course provided by MongoDB University on &#8216;MongoDB for Java Developers&#8217;. I&#8217;ve done plenty of Computer Based Training (CBT) courses over my last 16 years in the IT industry. In general, I have found most of them to be a waste of time, with a handful that have [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve just completed the free online 7 week course provided by MongoDB University on &#8216;MongoDB for Java Developers&#8217;. I&#8217;ve done plenty of Computer Based Training (CBT) courses over my last 16 years in the IT industry. In general, I have found most of them to be a waste of time, with a handful that have been ok. This MongoDB course was an exception. It was by far the best online course I have taken, and provided a fantastic introduction to this non-relational JSON document store.</p>
<p>I&#8217;m currently working on a client site where MongoDB has been implemented in production, and I&#8217;m continually hearing about other organisations that have started to adopt one of the new breeds of NoSQL data stores. I had spent time reading Martin Fowler&#8217;s book on NoSQL and the emerging world of Polyglot Persistence. However, there is a world of difference between understanding something in theory and getting hands-on practical experience.</p>
<p>This MongoDB course is not going to make someone an expert in the technology. After all, its only a few hours a week and only lasts for 7 weeks. What it does is provide a great introduction to all the major concepts such as JSON/BSON, atomic operations, the aggregation framework, sharding and replica sets (as well as the Java database driver). For someone like me who is not administering or developing on Mongo it provided everything I needed. For those who do need to administer or develop on Mongo, it&#8217;s a fantastic free way to give yourself a solid base of knowledge.</p>
<p>What&#8217;s next for me? I&#8217;m not sure. I&#8217;ve just started dabbling with R, and want to try some hands on coding with Go. However, I enjoyed this course so much, I think I might take the official certification exam and maybe try the DBA course.</p>
]]></content:encoded>
			<wfw:commentRss>http://matt-e-lewis.co.uk/technology-blog/mongodb-for-java-developers-done/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bluemix Demo</title>
		<link>http://matt-e-lewis.co.uk/technology-blog/bluemix-demo/</link>
		<comments>http://matt-e-lewis.co.uk/technology-blog/bluemix-demo/#comments</comments>
		<pubDate>Tue, 03 Feb 2015 19:39:34 +0000</pubDate>
		<dc:creator><![CDATA[matt lewis]]></dc:creator>
				<category><![CDATA[Technology Blog]]></category>

		<guid isPermaLink="false">http://matt-e-lewis.co.uk/?p=114</guid>
		<description><![CDATA[Today I gave a presentation and hands-on demonstration of IBM Bluemix. This had given me an opportunity to spend a number of hours over the past week or two trying to understand more about Bluemix, its relationship to Cloud Foundry, and the whole concept of Platform as a Service (PaaS). For me, PaaS is a [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Today I gave a presentation and hands-on demonstration of IBM Bluemix. This had given me an opportunity to spend a number of hours over the past week or two trying to understand more about Bluemix, its relationship to Cloud Foundry, and the whole concept of Platform as a Service (PaaS).</p>
<p>For me, PaaS is a powerful concept that can provide significant advantages, though you also have to understand its limitations. For example, when you are composing an application from multiple third-party services all hosted in different clouds and accessed over the internet, you clearly can&#8217;t guarantee any SLA&#8217;s. It was also strange binding an instance of a database such as MongoDB, and having no sysadmin control over its configuration. Effectively, you are consuming it as a service and shouldn&#8217;t have to worry. There are always going to be corner cases where you need extreme throughput or performance that requires a lot of optimisation, but with modern databases and technologies, that seems to be the exception rather than the norm.</p>
<p>I ran four simple demos:<br />
1) The first was configuring a simple Java web app from Intellij, and then pushing this to Bluemix using just the Cloud Foundry command line interface (CLI). I also used the CF CLI to scale the number of instances/memory etc.<br />
2) For the second demo, I ran node-red on my macbook as a part of a flow that was listening for messages on an open source MQTT broker (mosquitto), and would change the colour of the Blink1 USB device that I had plugged in. I configured an HTTP input that allowed people in the room to access a URL on their smart phones and automatically control the colour of the Blink1.<br />
3) For the third demo, I subscribed to a public Twitter feed, fed the incoming tweets through a Sentiment Analyser, and then used this to communicate with the Blink1 to show whether the tweets were positive, negative or neutral.<br />
4) Finally, I subscribed to a public Twitter feed, and pushed these tweets into a collection on a MongoDB instance. I then exposed them from MongoDB via a URL. I was going to call it a REST API, but in reality it was just an HTTP endpoint that returned a JSON message with a collection of documents from MongoDB.</p>
<p>It was definitely impressive showing what you could knock up from scratch in just a matter of minutes. When I get a chance, I intend to play around with the Watson cognitive computing APIs, to see if there is something interesting I can come up with here.</p>
]]></content:encoded>
			<wfw:commentRss>http://matt-e-lewis.co.uk/technology-blog/bluemix-demo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MongoDB for Java Developers Week 2</title>
		<link>http://matt-e-lewis.co.uk/technology-blog/mongodb-for-java-developers-week-2/</link>
		<comments>http://matt-e-lewis.co.uk/technology-blog/mongodb-for-java-developers-week-2/#comments</comments>
		<pubDate>Wed, 21 Jan 2015 20:53:32 +0000</pubDate>
		<dc:creator><![CDATA[matt lewis]]></dc:creator>
				<category><![CDATA[Technology Blog]]></category>

		<guid isPermaLink="false">http://matt-e-lewis.co.uk/?p=108</guid>
		<description><![CDATA[Finished the week 2 of this online course a couple of days ago. I have to say I have been pleasantly surprised by the course. My experience of technical courses has not been great. All to often you end up being told what to write and where to put it in the code and that [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Finished the week 2 of this online course a couple of days ago. I have to say I have been pleasantly surprised by the course. My experience of technical courses has not been great. All to often you end up being told what to write and where to put it in the code and that is supposed to make you an expert. I am making a conscious effort not to simply go back to the notes for the homework sections, but just use the API reference along with some trial and error. I definitely feel I know significantly more about MongoDB than a couple of weeks ago, and being able to quickly fire it up on the mac and play around either directly in the shell or via an IDE allows me to keep on learning. Roll on Week 3!</p>
]]></content:encoded>
			<wfw:commentRss>http://matt-e-lewis.co.uk/technology-blog/mongodb-for-java-developers-week-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MongoDB for Java Developers</title>
		<link>http://matt-e-lewis.co.uk/technology-blog/mongodb-for-java-developers/</link>
		<comments>http://matt-e-lewis.co.uk/technology-blog/mongodb-for-java-developers/#comments</comments>
		<pubDate>Sun, 11 Jan 2015 15:18:38 +0000</pubDate>
		<dc:creator><![CDATA[matt lewis]]></dc:creator>
				<category><![CDATA[Technology Blog]]></category>

		<guid isPermaLink="false">http://matt-e-lewis.co.uk/?p=75</guid>
		<description><![CDATA[I spent yesterday completing the course and homework for the first week of the &#8216;MongoDB for Java Developers&#8217; course from the MongoDB University. It&#8217;s only a 7 week course, but one of my goals for this year is to get a lot more hands on with technology, as that it something I really miss. I [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I spent yesterday completing the course and homework for the first week of the &#8216;MongoDB for Java Developers&#8217; course from the MongoDB University. It&#8217;s only a 7 week course, but one of my goals for this year is to get a lot more hands on with technology, as that it something I really miss.<br />
I already had a good high level understanding of MongoDB as its used a lot at my current client. The first week of the course was fairly straightforward. I have a worry that some aspects are like coding at 10,000 feet. I wrote my first piece of Java code in a commercial environment 15 years ago for an investment bank in London. At the time, we didn&#8217;t have a chance to evaluate lots of software, so I had to write the code in Notepad and compile it in MS-DOS. I&#8217;d often work in environments which had no internet connectivity and the world of open source had yet to really take off. This meant all setting of class paths, environments etc where done manually.<br />
The course had the following prerequisites:</p>
<ul>
<li>MongoDB</li>
<li>Java 6 or Java 7</li>
<li>Maven as a build tool</li>
<li>Spark as a Web framework</li>
<li>Freemarker as a templating engine</li>
</ul>
<p>I use my Macbook for work, so there is a specific profile installed on it. I used Homebrew to install a number of the tools. When I type</p>
<blockquote><p>java -version</p></blockquote>
<p>I see I am running Java 7.</p>
<p>When I type</p>
<blockquote><p>mvn -version</p></blockquote>
<p>I see it is picking up Java 6</p>
<p>I couldn&#8217;t find any .profile or .bash_profile, but I figured it was all working so easiest not to consume hours trying to figure out what is going on. I only know that this could be something that comes back to bite me. You could also see how quickly things move on. The suggested way to install Freemarker has now changed using Maven to include it as a dependency in the pom.xml. However, the &#8216;Getting Started&#8217; examples from their website all used lambdas, which were only introduced in Java 8, and this course only goes up to Java 7. Still, it all seemed to work easily enough, and I guess that&#8217;s the main thing. Now waiting for the second week to be made available.</p>
]]></content:encoded>
			<wfw:commentRss>http://matt-e-lewis.co.uk/technology-blog/mongodb-for-java-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
