tag:blogger.com,1999:blog-24007902899274932712024-02-02T19:59:41.673+00:00MogBlogIt was easy, it was cheap, go and do itNeil McLaughlinhttp://www.blogger.com/profile/06957875166062459907noreply@blogger.comBlogger23125tag:blogger.com,1999:blog-2400790289927493271.post-64974476302171840272010-12-03T22:40:00.003+00:002010-12-03T22:47:21.374+00:00Django/PYTHONPATH gotchaJust picking up django again after a while away and had had some problems with the following error when running 'django-admin.py runserver --settings=mysite.settings'<div><br /></div><div>Error: Could not import settings 'mysite.settings' (Is it on sys.path? Does it have syntax errors?): No module named mysite.settings</div><div><br /></div><div>Google was not my friend as all of the returned results were to do with apache config etc</div><div><br /></div><div>Turned out I'd simply forgotten to put the current working directory (.) in the PYTHONPATH (e.g export PYTHONPATH=.:$APPENGINEPATH:$APPENGINEPATH/lib/yaml/lib:$APPENGINEPATH/lib/webob:$APPENGINEPATH/lib/ipaddr:$APPENGINEPATH/lib/fancy_urllib</div><div>) doh!</div><div><br /></div>Neil McLaughlinhttp://www.blogger.com/profile/06957875166062459907noreply@blogger.com0tag:blogger.com,1999:blog-2400790289927493271.post-17210901056393783992010-12-02T09:29:00.018+00:002010-12-02T12:18:23.336+00:00Google App Script: Experiences in Cloudland<span class="Apple-style-span">I'm a bit of a fan of Software as a Service and Google Apps. It seems to solve a lot of problems allowing me to work with bigger building blocks and to focus on solving domain specific problems rather than writing another document storage solution or emailer service. So the announcement earlier this year of the availability of </span><a href="http://code.google.com/googleapps/appsscript/guide.html">Google App Script</a> (GAS) caught my eye. GAS is server side javascript plus a stack of libraries and which forms part of the suite of tools making up <a href="http://www.google.com/apps/">Googles Apps</a>. My first thoughts on seeing the introductory webcast were:<div><ul><li><span class="Apple-style-span">This looks powerful - it's the glue between SaaS</span></li><li><span class="Apple-style-span">How do you test drive it?</span></li><li><span class="Apple-style-span">Is it just Spreadsheets and VBA for the cloud?</span></li><li><span class="Apple-style-span">Is it a quick win with lots of pain down the line?</span></li></ul><span class="Apple-style-span"><div><span class="Apple-style-span">My experience with javascript in the past has always been with code which hacks about with the DOM in a browser or, even worse, implements business logic in the UI. I had not appreciated how elegant and powerful it can be. </span>GAS comes with some standard libraries to do things with google apps like send email, update calenders, create documents and build sites plus some low level stuff like http fetches, parse xml, consume soap services and build UI's. All this makes it a very compelling offering and one worth a try to put it through it's paces. There is one notable omission from the libraries and that is access to the google data services which meant that there was no easily available persistence mechanism.</div><br />The project to try GAS out was a simple site inspection application where an inspector can be allocated an appointment to inspect a premises, complete an online inspection report and a reviewer can look at the completed report and make additional comments before generating a summary. This project would exercise a few of the available libraries.<br /><br />There were a few false starts to do with persitence. Trying to use a spreadsheet as a relational database (doh!) and using the simple key-value store in <a href="http://en.wikipedia.org/wiki/BigTable">Big Table</a> every script gets for free were both discounted early on. Also I discovered a couple of useful SaaS applications:</span><div><span class="Apple-style-span"><ul><li><a href="http://www.surveygizmo.com/">SurveyGizmo</a> which seemed to do everything we wanted to do from a inspection report UI perspective. it does not have any workflow but does have a decent XML based API. This removed the need for us to create our own inspection report builder.</li><li><a href="https://cloudant.com/">Cloudant</a> which offered an instance of CouchDB (a RESTful document database) which allowed us to simply use the GAS Http Fetch libraries for persistence.</li></ul>The approach I used was to use a script to build and display a UI for scheduling an inspection and send an email to the inspector containing a link to the report to be completed. The UI was displayed within an iframe of a page within a dedicated google site. There were also other pages containing iframes: one which displayed a list of surveys and their status (pending, awaiting review & reviewed) and another which displayed an individual survey response.<br /><br /><span class="Apple-style-span" style="font-size: large;"><b>Experiences</b></span><br /><br />In a conversation with a colleague I was pointed at an excellent book by Douglas Crockford called <a href="http://www.amazon.co.uk/JavaScript-Good-Parts-D-Crockford/dp/0596517742/ref=sr_1_1?ie=UTF8&qid=1291284399&sr=8-1">'Javascript: The Good Parts'</a> which turned out to be invaluable and which completely changed my perspective on javascript. Coupled with this I had also recently attended Software Craftsmanship 2010 at Bletchley Park during which I had attended a session entitled <a href="http://sc2010subs.wordpress.com/2010/08/08/understand-a-language-better-test-drive-your-own-unit-testing-framework-michael-hunger/">Understand a language better – Test Drive your own Unit Testing Framework</a> by Michael Hunger which was a real eye opener for me and answered one of my original questions (Q: How do I test drive this, A: By writing the <a href="http://gas-unit.googlecode.com/">gasUnit</a> test framework!). Reading the book, writing the test framework and using the excellent <a href="http://www.jslint.com/">jslint</a> all together made me feel much more comfortable coding and resulted in tested code with clear separation of concerns using MVC.</span><div><span class="Apple-style-span"><br /></span></div><div><span class="Apple-style-span">Despite my enthusiasm for javascript as a language I had a number of problems with the GAS:</span></div><div><span class="Apple-style-span"><br /></span></div><div><a href="http://code.google.com/googleapps/appsscript/guide_user_interfaces.html"><span class="Apple-style-span">UI libraries</span></a></div><div><ul><li><span class="Apple-style-span">These are a scripting layer on top of the <a href="http://code.google.com/webtoolkit/overview.html">GWT</a> and allow you to programatically build UI's. </span></li><li><span class="Apple-style-span">It is marked as experimental and it is not a full implementation of all the features of GWT. For instance styling seemed a little clunky and there was no way of rendering pure html.</span></li><li><span class="Apple-style-span">Both IE and FireFox threw errors for some of my scripts which rendered OK in Chrome - this is very worrying since one of the purposes of using GWT is to remove concerns about cross browser compatability.</span></li><li><span class="Apple-style-span">Pages also took an age to render (presumably because of the rendering javascript download and execution) but once loaded the interaction with the page was very responsive</span></li><li><span class="Apple-style-span">The page source looked as ugly as sin but have you looked at the page source for the google home page recently!</span></li><li>I think some of my problems were more to do with the change in mindset from pages and http post/get to one based around an ajax based web application.</li></ul><div><span class="Apple-style-span">General</span></div><ul><li><span class="Apple-style-span">Each script needs to be stand alone so it is not easy to reuse code. For example, in order to reuse the test framework code in each script I placed the framework in a Google Code SVN repository and pulled in the file using a fetch + eval. This worked OK but is not ideal, probably hinders performance and is considered evil by jslint.</span></li><li><span class="Apple-style-span">The script editor was amazing considering it is a browser based application. It seemed to cope with intermittent networks OK, recovered code following disconnects, was very responsive on a good network and produced a very fast red-green-refactor cycle when doing TDD. Debugging required tracing using the Logger library which worked OK. Refactoring and navigation is very primitive. The revision history for a script is not a full history (~ last 20) so is of limited value when making frequent changes.</span></li><li><span class="Apple-style-span">There doesn't seem to be a very active community - I posted a couple of general questions (well phrased I hope!) which were never answered.</span></li></ul><div>All in all GAS worked very well. The UI library is still very beta and we decided not to use it as a solution at this point but will return to it at some point. It was a great tool for quickly prototyping a workflow without having to worry about servers or deployment. I still have some concerns about integrating this into a managed source control, build and release process - I don't want to be part of a 'deploy and fix' hackfest. </div></div></div><div><br /></div><div>There will be a separate post on my experiences of javascript and of developing <a href="http://gas-unit.googlecode.com/">gasUnit</a>.</div></div>Neil McLaughlinhttp://www.blogger.com/profile/06957875166062459907noreply@blogger.com0tag:blogger.com,1999:blog-2400790289927493271.post-9835837619575958112010-09-22T23:02:00.005+01:002010-09-22T23:55:09.860+01:00Entity-Attribute-Value modelsJust listened to Ayendes podcast on RavenDB, a .NET document DB solution, at Herding Code (<a href="http://herdingcode.com/?p=255">http://herdingcode.com/?p=255</a>). A long podcast but worth the effort with some interesting stuff especially around dealing with model changes over time, event sourcing and the sweet spot for usage. Ayende mentioned Entity-Attribute-Value models as particularly appropriate for a document DB which caught my attention as it sounded very much like the approach we had taken at PAI. So I started digging around and found the following:<br /><ul><li>Wikipedia entry: <a href="http://en.wikipedia.org/wiki/Entity-attribute-value_model">http://en.wikipedia.org/wiki/Entity-attribute-value_model</a></li><li>Python/Django implementation: <a href="http://pypi.python.org/pypi/eav-django/1.3.3">http://pypi.python.org/pypi/eav-django/1.3.3</a></li><li>C# implementation: <a href="http://hanssens.org/post/Generic-Entity-Attribute-Value-Model-e28093-A-POCO-Implementation.aspx">http://hanssens.org/post/Generic-Entity-Attribute-Value-Model-e28093-A-POCO-Implementation.aspx</a></li></ul>The implementations are focused on persistence using a relation DB but with a document database this should all just happen. I think it is time for us to switch out our long thin relational model for a document database - probably RavenDB.<div><br /></div><div>Edit: Just found this useful blog post which dissects an MVC/RavenDB app and comments on best practice: <a href="http://ayende.com/Blog/archive/2010/07/28/reviewing-communitycourses-a-ravendb-application.aspx">http://ayende.com/Blog/archive/2010/07/28/reviewing-communitycourses-a-ravendb-application.aspx</a></div>Neil McLaughlinhttp://www.blogger.com/profile/06957875166062459907noreply@blogger.com0tag:blogger.com,1999:blog-2400790289927493271.post-69248372707040257192010-06-11T00:42:00.005+01:002010-06-11T00:52:30.707+01:00Reflections on tonight's agile testing uk meetupJust completed a very interesting practical exercise with Gojko Adzic at the agile testing uk (http://agiletesting.org.uk/) event hosted by skillsmatter in London. Worked well as a group exercise and a very well attended meeting (~60 people).<br /><br />Looked at a fit test and discussed why it was bad:<br /><br />* Lack of focus<br />* Lack of clear definition of business rule(s) under test<br />* Included technical/software terms terms, db ids and references to fixture classes.<br />* Non locale specific terms (check vs cheque)<br />* Some irrelevant data<br /><br />Key things I got out of it:<br /><br />* Should describe behaviour for business rules - specification not a script<br />* OK to include non business rules (e.g. ordering of results) to make testing easier as long as it doesn't conflict with existing business rules. May also prompt discussion around rules<br />* Non-deterministic ordering is a particular problem which causes test failures and sometimes removal of tests by developers<br />* We missed an obvious business rule - do we send cheques for £0 (eg someone on the payroll who has not worked during the period in question)<br />* Feel much more comfortable with Given-When-Then (esp with tables) vs Fitness<br />* Most teams expressed acceptance tests using to Given-When-Then rather with tables - teams which did seemed to get into difficulty<br /><br />Need to take another look at the slide stack to see if I have missed anything.Neil McLaughlinhttp://www.blogger.com/profile/06957875166062459907noreply@blogger.com3tag:blogger.com,1999:blog-2400790289927493271.post-91235597276386080262010-03-20T10:34:00.006+00:002010-03-22T23:28:02.488+00:00Some reflections on Martin Fowlers presentation at AgileYorkshire this week.During Thursday's commute I read a Martin Fowler blog post - a great piece on the maturity of REST implementations (<a href="http://martinfowler.com/articles/richardsonMaturityModel.html">Richardson Maturity Model</a>). It took about half an hour to read, re-read and digest. The information in it could have been a candidate for one of the presentations making up Martin's pick and mix selection from Wednesday. I could easily find 2 other blog posts of his which could be similarly described. So if I can read a few well written blog posts on an interesting subject why should we go through the hassle of organising a night, getting a speaker to travel 'oop North and having 100 people spend some of their valuable social life at a geek night?<br /><br />For me the value of evenings such as Wednesday is only partly about the content. Equally important is the sense of event it generates and, in particular, the atmosphere of discussion and enquiry it fosters. It was a shame we had a tight deadline to keep to which meant that the time for questions was limited but even so the buzz both beforehand and afterwards was palpable. The presentations by Martin on Wednesday were great seed topics for the resulting discussions which occurred during the evening and will have continued for some days afterwards. As a case in point, I have just had a conversation about it with a non-technical friend who stopped by this afternoon.<br /><br />I think it is true that developers - and by that I mean people who spend a large part of their working week turning user stories into delivered features - as a whole do not blog. They may document the solution to a problem they have found or throw out some observational/controversial stuff in the run up to redundancy or contract renewal, but the number who blog as reflection is small. For a profession which has a reputation as being "socially awkward" I have found that the preferred communication medium of good developers is a good ol' face to face discussion. This is odd in that some of the discussions around the topic of Martin's final segment (gender skewing in development teams) invoked the "autism" argument. This is that on an autistic spectrum there is evidence that males have a higher incidence than females (<a href="http://www.nas.org.uk/nas/jsp/polopoly.jsp?d=2493&a=3370">http://www.nas.org.uk/</a>) and since there are more male developers than female developers then, ergo, autistic tendencies must be required to be a developer. I think this an example of a <a href="http://www.blogger.com/%28http://en.wikipedia.org/wiki/Affirming_the_consequent">converse error</a>).<br /><br />The irony of observing the intense social interactions between developers arguing passionately and empathetically about the subject of where they lie on an autism scale was not lost on me. We were still discussing the subject matter the following day and I expect the themes will keep re-occurring.<br /><br />So are social events like Agile Yorkshire events necessary or could we have achieved the same outcome by other means; comments on a blog post, VOIP meeting, a video link presentation? Asides from the importance of an influential figure like Martin acknowledging grass-roots community groups by presenting to them I think that a physical meet-up is important. This is because of the quality and effectiveness of the communication it encourages and in the end a developer who can not communicate effectively is not a good developer.Neil McLaughlinhttp://www.blogger.com/profile/06957875166062459907noreply@blogger.com0tag:blogger.com,1999:blog-2400790289927493271.post-48613918815957985722009-12-10T23:24:00.013+00:002009-12-14T01:32:40.084+00:00Kanban Presentation at Agile Yorkshire and NHS ICThe end of year event seemed to go well - it was good to be in a posh, well equipped venue where we didn't have to strain to hear the speaker. The food from Anands was great but my catering estimation technique leaves much to be desired. I thought about how much I usually eat and drink and then multiplied it by the number of expected attendees. Obvious to me now that I lie above the mean.<br /><br />I was very impressed with David's Kanban Overview and Experience Report - a polished and compelling presentation. The combination of the two common sense ideas in Kanban; making the working state of a team clearly visible through the use of a Kanban board and reducing task switching by limiting the amount of work in process is very attractive to us. It was these two simple things coupled with the collection of simple metrics such as lead, development and engineering time across many tasks which has me hooked. The ability to use this data to quantify the effects, positive or negative, of any adjustments to the system (increased WIP limits, more team members). The ability to use these stats to the team's benefit is significant to me - the simplicity and volume of stats seems so relentless and very difficult to refute. In the past development teams have had gut feelings about whether process/environment changes are good or bad but this is difficult to sell to managers. A Kanban approach seems to give more bargaining power to the participants in the value stream by providing a ton of useful information without over-burdening them with meaningless time sheet style data collection. I've already sourced a mechanical date stamp (as found in libraries) to mark up the transition dates for tasks!<br /><br />The following day David and Peter came to visit us at NHS Information Centre (NHS IC) where they participated in an introspective by the some of the development team. This was a useful exercise and revealed some interesting problems - none of which were particularly unusual for a development team. It was a good way to focus attention on the good and bad parts of our current process prior to Davids presentation to the NHS IT meeting later that day. The presentation was very well received across the board from senior managers to developers. By the following morning several teams had already made a start on creating a Kanban board and were questioning how their work was structured. Interestingly, they were keen to identify data to collect in order to generate statistics. This level of keenness for time-recording is not common for developers and hopefully reflects a desire for process improvement rather than sticks to beat others with!<br /><br />Our team (an established team running along broadly xp/scum lines) very quickly had <a href="http://twitpic.com/t1sp4">our kanban board</a> up since we were using a scrum board in Mingle and the transition was relatively painless . What occurred next surprised me as it seems our iterations just vanished. The PM removed the current iteration and after a panicky moment we just shrugged and carried on with no fall as yet as we go with flow.<br /><br />I have had an uneasy feeling about our sprints recently. For the last few as we had been operating in "release" mode where we had a list of stuff (mostly small "tweak" stories and defects) in priority order. Detailed story point estimation wasn't of much value, we were releasing to UAT very frequently (I'll try to blog about this separately). So when the iterations disappeared I felt like we had gained more than we had lost. Mostly we had a gained a more honest view of the way we were working in practice. We plan to release fortnightly but my guess is that this will converge to a release per feature - this is easier in a web environment.<br /><br />Coincidentally, we also had a planning meeting on this day too. The planning around the Kanban board placed the focus on the only attendee from the team of 3 customer proxies. He clearly felt uncomfortable making decisions as to what should go into the input queue and the resulting prioritised queue may end up being adjusted after he has discussions with the others. Unlike our previous approach where we planned on a Monday for the following two weeks the flexibility inherent in the Kanban prioritisation process means that we have some leeway in the timing of planning. In some of the prioritisation discussions it became clear that for some features the discussion may need to involve more customers which raised the question as to who really owns the input queue. This is probably not the most shouty and may also change over time. Need to think more about this.<br /><br />I was aware that there was no real estimation going on during the prioritisation process - specifically we didn't get to play planning poker. Kanban seems to encourage the use of T-Shirt sizing and the collection of data to give lead time values based on historical data values for those T-Shirt sizes. Story point estimation can be used but is often not felt to be of value. This is an area where we need to be clearer and will probably start with simple T-Shirt sizing. <br /><br />This is as far as we have got will post further updates as we progress and refine.<br /><br />I'll also post on Peters excellent "Why Do Coders Code" exercise separately.Neil McLaughlinhttp://www.blogger.com/profile/06957875166062459907noreply@blogger.com0tag:blogger.com,1999:blog-2400790289927493271.post-78418268418199683462009-09-30T17:56:00.005+01:002009-10-01T00:27:19.828+01:00Extreme Tuesday ClubLast night I attended my first ever Extreme Tuesday Club (XTC) event. XTC was one of the influences behind the setting up of AgileYorkshire for some of the original founders at Erudine. I was down in London for sys admin course so it was good to be able to go along and see XTC first hand. They have a good setup (although they are having to up sticks and find a new venue). The evening was combined with a presentation by David Anderson on Kanban which, for me, was fascinating. In my current job (Lead Dev) I am trying to direct things along in a traditional agile direction. As a team we already practice TDD and CI with some pair programming. I am trying to get us focused on iterations and the ability to deliver potentially releasable product (all agile buzzword bingo terms!) at the end of an iteration. The presentation made me feel a little uneasy. I am aware, at a high level, of the ideas behind Kanban and Work In Progress (WIP) limits but felt if we could get our iterations going smoothly then we would have a bit of a breather and then we could start moving towards a process based on WIP rather iterations once I understood Lean.<br /><br />David seemed to be suggesting that implementing WIP is the first thing you should do. I need to read and discuss this a little more. I didn't manage to copy down the points but the essence of it was improve your existing process - don't bring in new processes wholesale. By simply implementing WIP and giving visibility through a physical Kanban board (augmented by an online system for reporting and organisational visibility) you will get process improvement which will lead to more organisational maturity which in turn will make it more likely for bigger process changes to be successful. The decoupling of the planning, development and release schedules seemed to be really important (they are all tightly coupled with agile iterations) as it is a dependancy which, if it existed between software components, would be removed during refactoring and which is something I need to think about.<br /><br />Davids assertion was that if you implement simple changes to existing systems then you will get benefit earlier with minimal resistance and that given time the people you interact with will be asking you for ways that they can change too! It felt strange hearing the terms Software Engineering, IEEE, CMMI being mentioned in a positive way at an agile evening. I can guess that stuff like this might rub some in the agile community up the wrong way.<br /><br />Other than the presentation I managed to talk to Steve Freeman who is a (?the) founder of XTC which was great and hopefully we can start talking to him about his experiences, some ideas and joint publicity. Also played a Kanban game to show the effects of batching work in a pipeline (<a href="http://blog.crisp.se/mattiasskarin/tags/flow/">http://blog.crisp.se/mattiasskarin/tags/flow/</a>) which was great fun and would go down well at AgileYorkshire. I might have persuaded a few people to make the trip up to t'frozen north to present/participate in AgileYorkshire but it might of just been Beer Bravado :)<br /><br />All in all a great evening and, as usual, came away with more questions than answers but with some insights into Kanban and the feeling that I need to do more reading/talking and, if I do, it should move me forward (especially if beer fueled).Neil McLaughlinhttp://www.blogger.com/profile/06957875166062459907noreply@blogger.com0tag:blogger.com,1999:blog-2400790289927493271.post-91613734713984250242009-07-31T13:05:00.003+01:002009-07-31T13:11:52.227+01:00How to test for dialog boxes using watinNote need to add a using for (?) watin.core.dialoghandlers<br /> <br />[Test]<br /> public void Default_PressEnterWithoutSearchTerm_NoDialogDisplayed()<br /> {<br /> using (var browser = new IE())<br /> {<br /> var dialogHandler = new AlertAndConfirmDialogHandler();<br /> browser.DialogWatcher.Add(dialogHandler);<br /><br /> browser.GoTo(_url);<br /> browser.WaitForComplete();<br /><br /> browser.Button(Find.ById(homeSubmitID)).Click();<br /> Assert.AreEqual(0, dialogHandler.Count);<br /> browser.WaitForComplete();<br /> }<br /> }<br /><br />This asserts for no dialog box (a bad negative test) but could be changed to assert >1 dialogs or even on the dialog message.Neil McLaughlinhttp://www.blogger.com/profile/06957875166062459907noreply@blogger.com1tag:blogger.com,1999:blog-2400790289927493271.post-37277912276070999172009-07-18T18:19:00.005+01:002009-07-20T12:03:25.662+01:00Notes From OpenSource .Net Exchange IIIReally enjoyed the meeting - there was a good buzz about it. Nice venue and the beer and pizzas were a good touch. Something to consider for AgileYorkshire. Gojko has posted a good overview <a href="http://bit.ly/Hb16b">here</a> so I wont repeat that but other things which I made a note of were:<br /><ul><li>Check out the universal test runner <a href="http://www.gallio.org/">Gallio</a> which was mentioned during the presentation on Concordion. This would be useful if we started to run several types of tests (Unit, Integration, Acceptance, etc) during CI or just developers.</li><li>Check out the new tools from MS - "Web Platform Installer" and "Web Deployment Tool". Seems like it might be a useful as a way of getting a replica of the live environment. One comment was that it has a steep learning curve but was very powerful once mastered. There are several OSS applications (e.g. wikis) available in an "application store" which might be useful. Also seems to be the way you should get and install ASP.MVC</li><li>I was also interested enough in OpenRasta to want to do a bit more digging. It seemed really powerful and that it might be possible to start using it in an existing ASP.NET app so that it is inherently more testable and with no requirement to restructure folders etc.</li><li>During the presentation on MPI found myself wondering if this is a way of making the processing of vehicle geolocation data (velocity, events, distance etc) in a more scalable way but suspect that this would be using a sledgehammer to crack a nut - there are probably better ways based on message queues and services. Interested that it will run on Mono which opens up cheap linux servers to be used for processing but in an MS environment.</li><li>Spoke to Wendy from SkillsMatter about potential collaberation with regard to sponsorship, speakers and technical help. I need to get in touch with them with some concrete proposals.</li><li>[Added later] Had a conversation in the pub afterwards with a guy who had raised the question in the meeting about the view engines regarding what the reaction of designers was when given a view to develop. I'd always assumed that you could give a designer a view and a collection of view data and they would be happy to use this data (with iterations, conditionals and other programming structures). Turns out this may be very far from the case and many designers would baulk at this. He felt that it was better to get the designers to mock something up and for the developers to add the view data later preferably as a paired task with a designer. There does seem to be an impedance mismatch between the designer and developer parts of generating a view which I had not appreciated.<br /></li></ul>Written on the train on my way home (posted the following day). Notes on the BBC visit to follow.Neil McLaughlinhttp://www.blogger.com/profile/06957875166062459907noreply@blogger.com0tag:blogger.com,1999:blog-2400790289927493271.post-51269029720936924392009-07-16T15:12:00.002+01:002009-07-16T15:44:43.814+01:00Visit to moveme.comJust back from an interesting morning with the development team at <a href="http://www.moveme.com/">moveme</a>. Paired with James, their lead developer, and over the morning discussed their approach to agile mixed in with the TTD coding. First thing I noticed was that the tool set was different. They use Tortoise and subversion (no surprise there) but they use xUnit coupled with testdriven.net. xUnit is new to me and they felt it encouraged better practices and was more extensible. It was also strange with testdriven.net where you get pass/fail text rather than reds and greens but I could get used to it. They also seemed to be (vehemently) opposed to resharper but I didn't get chance to ask why. James favoured CC.NET over TeamCity as he felt it gave him more control. More food for thought. Might ask them to comment on this.<br /><br />The interesting stuff was the management buyin of agile (their CEO is a scrum advocate) and the fact that the dev team want to move to more lean/kanban way of working based on there need to respond very rapidly to changing business requirements. These changes come from monitoring the web stats and looking to monitize behaviour. They gave a great example of where they had been able to spot an opportunity to to add a referal link to generate click through money and acted upon it during a sprint after discussing the cost/benefits of doing such a thing. I can see how the whole kanban pull model might work. I'd never been convinced that dev teams needed to respond in days rather than weeks but this example convinced me.<br /><br />Other things of note are that they felt that they worked better without a tester. That might be because they had had an old school QA tester who found it difficult to work in an agile environment but they didn't think this was the case. Note sure how this approach will scale as the dev team grows again (there was 4 of them). As always in successful teams they had an excellent onsite customer proxy who understood the domain and was vision, rather than sales, focused.<br /><br />They used the concept of <a href="http://alandean.blogspot.com/2009/04/golden-hours.html">Golden Hours</a> which seemed to be a useful practice and worth trying.<br /><br />I need to check out https://www.ohloh.net/p/simplewebservices which is a project of Alans as I'm not sure what it gives. Some swotting for the return train trip perhaps.<br /><br />All in all a worthwhile visit.Neil McLaughlinhttp://www.blogger.com/profile/06957875166062459907noreply@blogger.com0tag:blogger.com,1999:blog-2400790289927493271.post-71921854725515123952009-06-11T14:20:00.000+01:002009-06-17T08:46:29.068+01:00Clipboard and RDP problemsFinally found out how to solve that annoying problem whereby the clipboard gives up the ghost when using RDP/rdesktop - I always imagined it was down to the linux side of the equation but managed to get it back by killing rdpclip.exe on the windows side. I can now cut and paste within the RDP session but not between linux and windows which means I can't cut and paste the link which suggested killing rdpclip.exe (ho hum). I'll leave that part of the problem to another day.Neil McLaughlinhttp://www.blogger.com/profile/06957875166062459907noreply@blogger.com0tag:blogger.com,1999:blog-2400790289927493271.post-2805704870717201022009-05-20T23:49:00.000+01:002009-05-20T23:49:20.548+01:00Unit Testing Google App Engine Applications - Blogs at Near InfinityLots of stuff out there on unit testing and mocking GAE:<br /><br /><a href="http://blog.appenginefan.com/2008/06/unit-tests-for-google-app-engine-apps.html">http://blog.appenginefan.com/2008/06/unit-tests-for-google-app-engine-apps.html</a><br /><a href="http://www.nearinfinity.com/blogs/page/sfarley?entry=unit_testing_google_app_engine">Unit Testing Google App Engine Applications - Blogs at Near Infinity</a><br /><br />Got this working locally:<br /><br /><a href="http://appengine-cookbook.appspot.com/recipe/app-engine-test-runner/">http://appengine-cookbook.appspot.com/recipe/app-engine-test-runner/</a>Neil McLaughlinhttp://www.blogger.com/profile/06957875166062459907noreply@blogger.com0tag:blogger.com,1999:blog-2400790289927493271.post-87716356996308238082009-05-20T23:18:00.000+01:002009-05-20T23:18:56.093+01:00App Engine Recipe - App Engine Test RunnerDoing TDD with Googles App Engine -<br /><br /><a href="http://appengine-cookbook.appspot.com/recipe/app-engine-test-runner/">App Engine Recipe - App Engine Test Runner</a>Neil McLaughlinhttp://www.blogger.com/profile/06957875166062459907noreply@blogger.com0tag:blogger.com,1999:blog-2400790289927493271.post-75286180280896513582009-05-20T21:13:00.000+01:002009-05-20T21:13:05.545+01:00Rake and .NET: The Story ContinuesSo many new tools to help there is no time to code!<br /><br />Sounds like Rake, NDepend and NCover in particular will be useful. I'd like to see what NDepend makes of our legacy code base.<br /><br />Tobin Harris blogs about this and other things here -<a href="http://www.tobinharris.com/past/2009/4/9/rake-and-net-the-story-continues-/"> Rake and .NET: The Story Continues</a>Neil McLaughlinhttp://www.blogger.com/profile/06957875166062459907noreply@blogger.com1tag:blogger.com,1999:blog-2400790289927493271.post-75486015048884363452009-05-15T09:56:00.000+01:002009-05-15T09:56:48.276+01:00Welcome to Shelfari! Read, Share, Explore! - ShelfariThis could be a good way of building up a recommended reading list for Agile Yorkshire as GoodReads doesn't seem to do what we want.<br /><br /><a href="http://www.shelfari.com/">Welcome to Shelfari! Read, Share, Explore! - Shelfari</a>Neil McLaughlinhttp://www.blogger.com/profile/06957875166062459907noreply@blogger.com0tag:blogger.com,1999:blog-2400790289927493271.post-90330679173797153072009-04-24T15:31:00.000+01:002009-04-24T15:31:57.584+01:00Visual Studio Remote Debugging SetupSetting up remote debugging on our UAT environment turned out to be pretty straight forward after a false start.<br /><br />The steps I followed were from <a href="http://msdn.microsoft.com/en-us/library/y7f5zaaa.aspx">here</a><br /><br />In summary they were:<br /><br />* Copy over msvsmon.exe fromMicrosoft Visual Studio 9.0\Common7\IDE\Remote Debugger\x86 on the development machine to the UAT box<br />* Ensure that you have a local account with the same name on both machines - we used the local <span style="font-style: italic;">administrator</span> account which is created as a matter of course on all machines. (Note: I tried to avoid having to do this step by setting msvsmon to run in "No Authentication" mode but, although I could attach to processes, symbols were not loading from pdbs making debugging impossible - this is a known limitation when using No Authentication)<br />* Use "Run As" option to run VisualStudio as the local administrator account<br />* Use the qualifier field in Attach To Process dialog in Visual Studio to point at the remote machine. I needed to select only Native and Managed code types as T-SQL was reporting an error.<br />* It then just works - and very well tooNeil McLaughlinhttp://www.blogger.com/profile/06957875166062459907noreply@blogger.com1tag:blogger.com,1999:blog-2400790289927493271.post-49937823711808024572009-04-20T22:20:00.000+01:002009-04-20T22:20:21.910+01:00InfoQ: Domain Driven Design QuicklyDDD was heavily referenced at alt.net in the north.<br /><br /><a href="http://www.infoq.com/minibooks/domain-driven-design-quickly">InfoQ: Domain Driven Design Quickly</a> is a useful summary to DDD and a good read before launching at Eric Evans' <a href="http://www.amazon.com/exec/obidos/ASIN/0321125215/domainlanguag-20">Domain Driven Design</a><br /><br /><a href="http://www.infoq.com/minibooks/domain-driven-design-quickly"><br /></a>Neil McLaughlinhttp://www.blogger.com/profile/06957875166062459907noreply@blogger.com0tag:blogger.com,1999:blog-2400790289927493271.post-52380470199916309562009-03-20T09:36:00.000+00:002009-03-20T09:36:06.745+00:00Digital PR (that's Punk Rock) | Juice DigitalI'm not alone!<br /><br /><a href="http://blog.juicedigital.co.uk/2009/03/digital-pr-thats-punk-rock/">Digital PR (that's Punk Rock) | Juice Digital</a>Neil McLaughlinhttp://www.blogger.com/profile/06957875166062459907noreply@blogger.com1tag:blogger.com,1999:blog-2400790289927493271.post-73539311995204304332009-03-03T13:46:00.000+00:002009-03-03T13:46:38.629+00:00Google AppsJust trying to get my head around dns settings and google apps.<br /><br />In order to get www.mittenview.co.uk to be hosted at google apps and to use mittenview urls had to:<br /><br />1) Add a CNAME value for www pointing at ghs.google.com. (trailing stop is important) in the DNS table at plusnet<br />2) Add a mapping from www.mittenview.co.uk to http://sites.google.com/a/mittenview.co.uk/Home<br />3) Make site publicly shared (Open site for editing then - Site settings > Share This Site > Check "Anyone in the world may view this site")<br /><br />Phew!<br /><a href="https://www.google.com/a/cpanel/mittenview.co.uk/Dashboard"></a>Neil McLaughlinhttp://www.blogger.com/profile/06957875166062459907noreply@blogger.com1tag:blogger.com,1999:blog-2400790289927493271.post-26612832478686703282009-02-27T07:24:00.000+00:002009-02-27T07:24:02.665+00:00Community - UK UsergroupsNeed to consider contacting these guys to put a link up to agileyorkshire.org<br /><br /><a href="http://msdn.microsoft.com/en-gb/community/aa905717.aspx">Community - UK Usergroups</a><br />http://www.agilealliance.org/show/1641Neil McLaughlinhttp://www.blogger.com/profile/06957875166062459907noreply@blogger.com0tag:blogger.com,1999:blog-2400790289927493271.post-91412688930746439312009-02-13T09:08:00.000+00:002009-02-13T09:08:17.461+00:00‘It was easy, it was cheap, go and do it! Anarchy in the UK music business: independent production in the early 1980s’Nice follow on article - not read it all yet but first skim suggests it is worth a read ...<br /><br /><a href="http://www.york.ac.uk/org/satsu/OnLinePapers/PR/mus-tech/mus-tech.htm">‘It was easy, it was cheap, go and do it! Anarchy in the UK music business: independent production in the early 1980s’</a>Neil McLaughlinhttp://www.blogger.com/profile/06957875166062459907noreply@blogger.com0tag:blogger.com,1999:blog-2400790289927493271.post-56284863892456476582009-02-13T09:03:00.000+00:002009-02-13T09:03:38.926+00:00Main Page - GeekUpWikiJust been looking at the geekup pages and am now coming around to the idea that Agile Yorkshire should have a site instead of just using the google groups page. Also, we need to get more collaberative with them - I like their idea of a CodeMashup day ( <a href="http://geekup.org/wiki/index.php?title=Main_Page">Main Page - GeekUpWiki</a>) we could combine forces. Will try to work out some ideas this weekend!Neil McLaughlinhttp://www.blogger.com/profile/06957875166062459907noreply@blogger.com1tag:blogger.com,1999:blog-2400790289927493271.post-24441277201051264562009-02-04T23:07:00.001+00:002009-10-02T13:14:12.208+01:00Gabba Gabba HeyJust watched a film about the Ramones and while watching it was struck by the similarity between the early DIY ethic in punk and the whole ALT.NET movement. I was always more into the DIY than the safety pins, bondage pants and no future - for me punk meant tearing down the things which stood in your way.<br /><br />First there is the whole us and them, outsider, rebel feeling going on. We are forging communities and loose alliances. Lean, mean and punky [ASP MVC, NHibernate, jQuery, Agile] vs. the big bloat prog rock [ASP.NET, Entities, Prince2]<br /><br />We are meeting in the back room of <a href="http://www.agileyorkshire.org/">pubs</a> with revolutionary zeal to spread the message of change <all>, talking with passion about how we feel in our bones how software should be developed. Feelings which have grown out of observing and learning - where learning follows experience rather than checklists and process which fly in the face of our experiences. The corporates ain't going to persuade us to accept HowToDevelopSoftware dogma - we've got software development under investigation - prodding it, turning it over and inside out, figuring out what works and what is waste.<br /><br />And the similarity with the Ramones?<br /><br />Despite their simple tools and methods they were admired for their tight fast performances, 2 minute iterations, rapid audience feedback, simple, easily understood structures - a condensed symphony. In the beginning they knew nothing and realised that you make progress by picking up your instruments and using them with vision.<br /><br />I'm a 3 chord coder, getting stuck in, doing what I can, learning from it and going round the loop again, no twiddly solo coding for me, I'm happiest in the gang of us, pusing against my limitations and exploring the possibilities<br /><br />Hey Ho, Let's Go!</all>Neil McLaughlinhttp://www.blogger.com/profile/06957875166062459907noreply@blogger.com0