Jane Dallaway

Jane Dallaway

Jane Dallaway  //  Development manager, photographer, dog owner and snowboarder based in Brighton, UK
Email: jane @ dallaway.com
Also at:        

SQLBits VI

On Friday I attended my 2nd SQLBits conference.  This time it was hosted at the Church House Conference Centre, Westminster which was a good centre, with plenty of facilities and some beautiful rooms.  It also benefitted from being just a 15 minute walk from Victoria.

The day started with a hot breakfast sandwich (bacon, sausage or egg) and tea or coffee, before the first session started at 9.20am.  There were 4 streams of talks, and 3 different audiences - DBAs, Developers, or Business Intelligence users. There was always at least one talk for each audience going on at any one time giving a reasonable amount of choice. Only one talk had to be cancelled due to a speaker not being able to get to London because of the volcano and this was replaced with a panel session.

I chose to start by attending the talk 

Getting started with SQL Azure by Dr Keith Burns, Data Architect, Microsoft UK (I can't find a website for Keith that has been recently updated - his blog seems to stop in August 2007 - if you know of one, please leave me a comment)

SQL Azure - Keith Burns

As I mentioned the other day, I am interested in finding out more about the Microsoft offering for cloud computing, so this was an obvious choice.  As this was the first talk of the day, my notes are a little fragmented as I got my self into note taking mode, but my key takeaways were:

  • Reporting and the BI tools aren't on the cloud yet, so you'd need to use a local version of these tools
  • Availability is high - each database is in 3 places, in different scale units
  • DB performance is affected by "neighbours" on the same machine. Load balancing is happening automatically but is not perfect yet
  • Connections may get killed if it they are for long running transactions
  • Updates to SQL Azure will be rolled out on a 2 monthly basis
  • Databases can currently be 1GB, or 10GB.  If you exceed this you get a nasty looking error message.  If you currently have 1GB you can upgrade via an ALTER DATABASE statement.  A 50GB offering is in the works as is spatial data
  • Prices are in dollars, charged daily - so if you use it for one day you pay for one day - it works out that a 1GB database is approximately £72/year

Tea and pastries time before choosing a DBA talk (the developer one wasn't of real interest to me)

Inside the SQL Server Query optimizer by Conor Cunningham, Principal Architect, SQL Server Query Processor

Query optimizer Overview - Conor Cunningham

This was a packed out talk, and I ended up sitting on the floor, as did several others.

Conor's session was a bit full

I've never really known much about how the optimizer works, and I knew that this wasn't exactly going to be an introductory session, so I was somewhat concerned about how much of it I'd follow, and whether I'd actually gain anything out of it.  What I learnt was:

  • My maths isn't as good as it once was - I'm sure I'd have understood more whilst I was at university
  • The aim from query optimisation is "good enough" - trying to find the best query plan would take too long so good enough will usually do
  • Query optimizer is just a set theory engine
  • Just indexing is usually insufficient - you want to evaluate whether an index is "covering" as a non covering index will typically need to do a fetch from the base table (SQL Server 2005 and beyond I believe)
  • An index can be used to return data, not just for filtering or ordering - hence the use of covering indexes
  • Missing index DMVs can suggest covering indexes
  • Parallel queries are considered for "expensive" queries (> 5 seconds) but not all operators support parallelism and some scalar functions will prevent parallelism
  • User Defined Functions don't have good histogram support - so don't get optimized well - this was picked up in greater detail in Simon Sabin's talk later in the day - so forward to the end of this post if you can't wait to find out

Another quick cup of tea before moving on to 

Non-Functional Dependencies - A talktorial on getting performance and scalability right through proper Database Design and understanding Set and Relational theory by Tony Rogerson, SQL Server MVP.  The slides for this talk are available here

Performance & Scalability through normalisation and set theory - Tony Rogerson

A discussion on some of the things to be considered when using SQL.  Amongst them were:

  • a demo of the difference in performance around choosing the different kinds of surrogate keys - IDENTITY, NEWID and NEWSEQUENTIALID (which was new to me) - NEWID causes fragmentation of data and so affects performance, NEWSEQUENTIALID has the benefits of NEWID but without fragmentation
  • normalisation - a quick tour through what normalisation is and why you'd use it - I was happy to discover that the majority of this was still tucked away in my memory despite it being about 18 years since I was first taught it in University algorithms lessons
  • discussion of the use of NOLOCK (he doesn't like it) and the use of READ_COMMITED_SNAPSHOT (which seemed to have problems too and appeared to be able to break referential integrity) and I didn't come away with an answer of how to ensure that reading data didn't fail because of locks against the data

And then it was lunchtime - a nicely provided brown bag lunch featuring a sandwich, bag of crisp, impossible to peel orange, a muffin and a carton of fruit juice - and time to sit outside in Deans Yard, watching people playing football on the lawn and trying to get my brain to rapidly process everything I'd heard during the morning to allow me to prepare for an afternoon featuring more of the same.  The key sponsors had all been given an opportunity to display their wares during a lunchtime spot, so I stopped by to hear about

Redgate's new product SQL Source Control 

I've long been a fan of the SQL Compare tool so it seemed obvious to hear about the new product.  This demo seemed to fit in every one of their SQL related tools which meant I wish I'd made a Redgate Product Bingo card.  The premise of the tool sounds good, integrating into existing source control tools - SVN and TFS at the moment.  They also brought my attention to a free tool SQL Search which I'll be downloading and installing when I'm back in the office as it looks like it'll save me querying the INFORMATION_SCHEMA views quite so often.  Version 1 of the SQL Source Control tool doesn't manage data, which means that when you add a column that you need to be NOT NULL, you can't specify how that column should be populated for existing data - which means you get an error.  It appears that this might be a good solution whilst in early days development, but not so useful for live systems.  Deployment is via the following steps:

  1. get latest of scripts
  2. compare scripts to backup (via SQL Compare)
  3. let SQL Compare generate update scripts

Redgate are running an early access program at the moment allowing you to get hold of the tool prior to its actual release.

I had a few minutes here before the next session, although there was no tea to be found before moving on to

Denormalisation - having your cake and eating it by David Whitehorn and Yasmeen Ahmad

Denormalization - David Whitehorn and Yasmeen Ahmad

Another packed out session

Demormalisation session full

This was quite a theoretical discussion, rather than explaining any tips and tricks on how to achieve your denormalisation.  It also covered a lot of the same normalisation content that Tony had covered before lunch.  Mainly stating that normalisation is good, but sometimes denormalization is good too - for ease of use, or reporting purposes.  Normalisation guarantees good design but only forms part of it and when you normalise you remove a lot of insert, update, delete anomalies but you don't guarantee it which then means using triggers etc to ensure there are no anomalies whatsoever.  Normalisation also comes with some performance overheads which may be removed using denormalisation.

Possible methods for denormalisation are:

  • Duplicated data
  • Splitting tables
  • Using derived columns - store calculated values

Basically, the decision as to whether to normalise or denormalise depends what you're going to do with the data. 

Time for tea and donuts before the next session

Afternoon refreshments

Improving database performance by removing the database by Simon Munro

Simon Monro

This talk was about the concept of database less systems - it was pretty well attended which surprised me at a SQL conference.  One of the first things Simon said was

This talk is not about NoSQL.  It is about why NoSQL won't die

Which was a bit of a shame as I was quite keen to learn about NoSQL.  However, he did point us in the direction of this video from the last SQLBits conference.

Scalability is often mentioned as the reason why SQL isn't a good solution - but actually, NoSQL isn't going to be any better.  Scalability is about more than just this.  He recommended a book The Art of Scalability which gives guidance about the scalability of everything - hardware, software, processes, architectures etc

Some of the takeaway points for me were:

  • Before we change something, to make an effective change we need to understand why it is like it is in the first place
  • Data is temporal - it's value changes over time
  • Never forget that people create a lot of spreadsheets to mould data how they like it - so your database isn't likely to be the only place where data is stored no matter how much you want to believe it is

Simon had some of the best slide decks I saw on the day, I particularly liked this one

Simon Monro's slide deck - Do we want it to change?

and this one

Data slide from Simon Monro's deck

This was probably the most interesting and engaging of the talks I went to, and it challenged me to go away and think more about some of his points.

The final break of the day before the final talk which for me was

High Performance Functions by Simon Sabin

High Performance Functions - Simon Sabin

I'd seen Simon present on a couple of previous occasions so I already knew that he'd be a good way to end the day.  And he was.  This followed on nicely from Conor's earlier stuff about scalar valued User Defined Functions not being optimised properly and gave some demonstrations to prove it - basically the query plan showed lots of nested loops, which indicate that each scalar function believes itself to return only one row.  Simon acknowledged the reason that UDFs, when they were first created, were welcomed by the developer community was because of the help they gave to code reuse - something that I'm sure we all strive for.  The best workaround presented was to use query hints - hash /merge - to help query plan generation, where hash join is the safest option when there is no option but to use a scalar function. 

But an alternative, at least in SQL 2008, is to use Inline table valued functions, mainly because:

  • the function returns a query
  • they work a bit like a parameterized view
  • the query is consumed into main query for query plan because they are resolved down to base functions

Another alternative is to use the CLR as an alternative approach - the more complex the operation, the more chance that the CLR will perform better than SQL.

Simon's summary was:

  • Don't use scalar fns
  • Do convert to inline table fns
  • Do consider using CLR

And that was the end of SQLBits VI - the evening continued with beer, pizza and games at the conference centre, but I sloped off home with a brain full of information to process and a can of coke for my journey.  Another excellent SQLBits.

Loading mentions Retweet
Filed under  //  conference   event   SQL   SQLServer  

Comments (2)

UK Tech Days - Visual Studio 2010 Launch - A path to big ideas

On Monday I attended the first of the UK Tech Days DevDays events happening in London this week. The event was the UK launch event for Visual Studio 2010.

After a problem with overrunning engineering works on the Brighton to London route, we arrived in time for the keynote, and just caught the end of Mark Johnston's warm-up set.
Mark welcomes us

Session 1 - keynote with Jason Zander, General Manager, Visual Studio
Jason Zander - Life Runs On Code
The keynote was an overview of what the rest of the day would cover, giving insights into the new areas for Visual Studio. The highlights for me were:

  • multi monitor support - the ability to undock windows and move them onto another physical screen will be so useful
  • architecture explorer - inspects code and diagrams it - looks like a great tool for getting to grips with a new project
  • test manager - love the idea of intellitrace to help debugging and resolving issues raised by QA

During the tea break I was interviewed by Sara from Microsoft about my feedback on the day so far before heading back in for:

Session 2 - Windows development with VS2010 with Matt Nunn
Matt Nunn - Business AND User Experience

Quite a lot of this presentation was covering rich user experiences via Silverlight 4 on the desktop (or "out of browser" as it was referred to by Matt, meaning that it can interact with files etc on the local desktop. Also mentioned was the use of Windows 7 look and feel in a native code environment. The highlight for me though, and the most relevant to my current project, was the bit about parallelism. The demo made it look pretty simple to implement, making use of Parallel LINQ and the simple looking .AsParallel() call (example).

Next up was lunchtime and a lovely burger at GBK on Fulham Broadway before:

Session 3 - Web and Cloud Development with Richard Erwin

Richard Erwin

This session started with some good news, TFS being included with the MSDN license, ASP.NET 4 being a bit more security aware (requests checked for potential cross site script attacks etc). Quite a few of the things being demo'd seemed to have been around for a while, I guess I'd forgotten that ASP.NET MVC hadn't previously been included as part of Visual Studio but had been a separate download - it felt a bit like old news though.

How many speakers does it take to fix the internet?

Unfortunately, before the demos from the Web part were over, Richard discovered he had a lack of internet connection (despite everyone in the audience consuming the provided wifi) which meant that the ajax enabled demos failed, which was everything beyond the basics (and how many times do I need to see a grid view control being used).  This also impacted the cloud computing section, an area I'd been interested to find out more about. Somehow, demoing the cloud using just a desktop lost its magic for me, and I didn't really feel I gained much from this session. However, it was good to find out that not all of the solution needs to be cloud based, meaning that the web farm could be in the cloud, whilst the database remains in-house, or vice versa.

Another quick tea break before:

Session 4 - SharePoint and office development with David Bishop

David Bishop

First the disclaimer, I know nothing about SharePoint, I've never really used it, so a lot of the "functionality x has improved" and "you can do y now" meant nothing to me, but the general consensus via twitter seemed to be that these were good things.

The statistic that there are 100 million licenses for SharePoint is pretty impressive, but I can't help wondering how that compares to other tools, a number alone means little without a comparitor. This session, for me, was the weakest of the day (but as I said above, I have no real knowledge or interest in SharePoint at the moment), and it overran.  

No more tea breaks, straight on with a quick:

Sponsored Video slot for the Intel Parallel studio which integrates into Visual Studio 2010. This seemed to have some good features for checking for locks and waits etc and may be worth an investigation.  

Then on to the final session of the day:

Session 5 - Improving developer-tester collaboration with Giles Davies

Giles Davies - Introducing Test Manager

The Test Manager toolset was mentioned, and demo'd briefly in the keynote, and this session went in to the product in a bit more depth, and I class it as one of the highlights of the day for me - I didn't know anything about this tool before the launch day.

The idea is that it is "Like a DVR for developers", so whist QA are busy testing, their actions get recorded in a video, and in a trace (I was pleased to hear that Intellitrace copes with threads too) all to help the developer reproduce and fix the issue. It seemed to be as simple as opening a debug session, using the intellitrace data and stepping through the code until the issue happens, then moving forward or backward as necessary to identify the bug. One thing that slightly concerned me in the demo was that there seemed to be a disconnect between the debug activity and the code fixing as the source file then had to be opened and fixed. I guess this is to cope with versioning differences between QA code and development code, but I was just somewhat concerned that a fix could be applied to the wrong place.

Once the code fix has been applied, then the original action recording made when the QA was testing (and finding the issue), can be used to test the bug fix. With the addition of assertions, this action recording can then become an automated regression test (a Coded UI Test). It strikes me that this might be a good alternative to Selenium, except that it doesn't currently support the breadth of browsers, but the fact that it could refer back to the original test case and integrate into the test plan may outweigh that disadvantage, especially if third party add-ons can be sourced.

Summary

So, all in all a mixed bag of sessions, some excellent, some disappointing, but overall the day met my expectations of giving me an overview into what's new and giving me some areas to go and find out more about, either via the hands-on-labs, which I've long been a fan of, or simply by downloading and trying them out.  Thanks Microsoft.

Footnote

The sessions were all recorded, and the videos, and the presentations etc should be available at the UKTechDays site.  In the meantime, the twitter tag for the event is UKTechDays, and there seems to be a reasonable amount of discussion going on there.

Loading mentions Retweet
Filed under  //  Development   event   photos  

Comments (0)

Back Stage at UK Tech Days – Day One : Underbelly

I was at the Visual Studio 2010 launch event as part of Microsoft's UK Tech Days yesterday. In the tea break after the keynote speech, I was interviewed by Sara Allison (primarily because I was one of the few females in the audience). I'm at around 2 minutes in. I'll post about the day itself later.

Loading mentions Retweet
Filed under  //  event  

Comments (0)

Wired Sussex Media Jobs & Skills fair

Today Nick and I spent some of the day at the Wired Sussex Media Jobs & Skills fair manning the Madgex stand.  This is a new event for me, having missed previous years, and I have to say I rather enjoyed it.  There was a good presence of local companies, and some good representation of support for freelancers (such as the Farm, the Werks and the Skiff), and of course Wired Sussex were out in force.

Madgex are currently only recruiting for a Global Sales Director and so we weren't really present from a recruitment perspective, more from the position of reminding the local community that we are still around and active, and to share our experiences of working in the media sector, and what the various job roles we have actually involve on a day-to-day basis.  Weekly, internally to Madgex (although hopefully coming soon to the lab site), I produce a newsletter listing all of the community events I've tracked down from around Brighton, Sussex and London which seem to be relevant to the team.  Today we produced a special list of these for the next 7 days to distribute to anyone interested, which allowed us to introduce people to some of the more active, and frequent local events like Flash Brighton, UX Brighton etc

I spoke to a wide variety of different people today, from sixth form college students, to people finishing their MAs in Digital Media, to java developers, to freelance designers, to Adam from Garage Studios (who taught my flash course), to one of the ladies from City College who oversees the NVQ I'm doing, to a business coach, to creative writers and film-makers.  I enjoyed talking to them all, suggesting events, or people that they could or should talk to, and I even managed to get a few plugs in for my Brighton Bloggers site, so am hopeful I'll see a flurry of new add requests soon.

All in all it felt like a good event, enabling me to practice my networking skills with a more diverse group of people than I usually meet.  Of particular benefit to me was the opportunity to talk to Sixth Form students, and BA/MA students and get feedback from them on how they see the world of media evolving and understand more about what their various courses actually involve.  Thanks Wired Sussex, I hope to be back next year.

Loading mentions Retweet
Filed under  //  brighton   event   photo  

Comments (0)

FLASH: Improve your lighting techniques

Sunday will see me heading down to Garage Studios, a local Brighton based photographic studio, to take a course entitled FLASH: Improve your lighting techniques. I own a Nikon SB-800 AF flash unit but only know how to do the very basics with it and would like to know how to do more.

I thought it would be useful to record what I hope to gain from attending the course, so that I can see how well it does and I do, so:

  • how to actually use my flash in anything other than the automatic mode
  • understand how to balance flash light against natural or alternative light sources to get the right exposure rather than having to correct in Lightroom
  • how to make use of reflectors
  • what difference is made by taking the flash off the camera

I'm really looking forward to my day, I am a bit anxious that I'm a total newbie on all things flash, but I was reassured that at least part of the day will be spent going back to basics (well, not back for me obviously) so I hope to learn lots...
Loading mentions Retweet
Filed under  //  brighton   event   learn   photography  

Comments (0)

Event: Copyright Seminar for Photographers

On September 30th there is a seminar being run here in Brighton on "An Introduction to Copyright for Photographers". The event is free and is being run by Mayo Wynne Baxter Solicitors.

The event is described as

Join us for a lively and interactive seminar where solicitor Scott Gair will addressing the issues and challenges faced by creative professionals in their industries.
In the seminar we will be discussing:-
  • Where does copyright exist
  • Who owns copyright in certain works
  • How do you assign/licence copyright
  • How do you protect your copyright

Spaces at this event are limited, so to secure your place please contact Scott Gair on sgair@mayowynnebaxter.co.uk or call 01273 223258.

Unforunately I can't attend it, but hopefully someone else can and will be able to share their learnings as it sounds like it'll be useful stuff

Loading mentions Retweet
Filed under  //  brighton   copyright   event   photography  

Comments (0)

Skillswap goes portable

  

On Tuesday I attended the Skillswap goes portable talk. It featured two of my fellow Madgexians, Glenn and Bruce, and was split into two parts.

Bruce was up first talking about


Followed by Glenn presenting his
Experiments in Data Portability
View SlideShare presentation or Upload your own. (tags: stack open)

Both were well presented, had live demos (Glenn's including twitter which is always a brave act) and were interesting. There were also some excellent questions from the, unfortunately smaller than usual, audience.

All in all, another excellent evening from the Skillswap guys.

Loading mentions Retweet
Filed under  //  Brighton   event   skillswap  

Comments (0)

VBUG Conference, Reading - 4th November 2008

A colleague and I attended the VBUG Winter Conference on Tuesday 4th November. We arrived a bit late and so missed the welcome and housekeeping. So we headed straight into the (already started) keynote...

Keynote : Tips and tricks for succesful software teams by Roy Osherove (Roy@osherove.com)

This seemed to be a collection of thoughts, loosely tied together by a voting system - highest scores got presented. As we weren't there for the beginning, its a bit hard to determine how this worked but there seemed to have been some sort of voting on which of a list of topics should be talked about.

First up were ways that he has found of working successfully in a team:

  • Timebox iterations
  • Use of user stories
  • Use of whiteboard to show progress -it's big, it's visible (to all - team and visitors)
  • Use a backlog to hold all the requirements - the new requirements don't make it into current cycle
  • Bad tests better than no tests
  • Integration tests better than no tests
A "kind-of agile" aproach, but not strictly adhering to any of the true methodologies, a pick of the most suitable aspects from all of them, implemented little by little until having a process that worked. All sounds sensible so far...

Next he moved on to automated build tools, and mentioned a couple of tools, focussing specifically on Finalbuilder. This is a GUI tool with visual programming. It can do remote deployments, and is apparently easy to maintain. It can also be called from the command line with different parameters. They use it with TeamCity to manage the continuous integration aspect.

Next up was the advice "Learn to say No" probably more aimed at small business owners, but also relevant to all - don't overcommit. If you can't say No, then say I'll get back to you. Take time to think about what is being asked of you before commiting to it.

The next one was to make use of tools to add productivity - he used to work with a developer who was much more productive than others. On investigation this came down to using tools to generate bits of code, templating etc. In the vb6 world he used a tool called CodeSmart used to produce properties, comments, etc and Source+ 2000 which is a repository of reusable code components. By using tools like this, the developer can auto-generate the simple stuff, and concentrate more on the important and value added stuff.

In a similar vein, learn how to use the environment - invest time in finding out how to use your IDE. A couple of keystrokes to do simple actions can save a lot of time in the long run.

The final one was the benefits of the stand up meeting. A simple round robin of all members of the project team, with 30 seconds per answer only - if more time is needed, then it probably should move to an outside meeting. The questions are:

  • What did you do yesterday?
  • What are you going to do today?
  • What is stopping you?

Session 1: Data-Driven AJAX in ASP.NET by Jeffrey McManus

Jeffrey is one of the developers of document-sharing site approver.com and has a wide variety of employment history with some major companies - including Yahoo Developer Network. His was the most interesting talk of the day, and part of that was down to his interest and passion in the subject.

His first comment was on how good it is that Jquery is going to be included in the stack. It is already possible to use ASP.Net Ajax with JQuery.

He reminded everyone that ASP.Net Ajax is built in to .NET 3.5, optional free install for .NET 2.0

He then gave some examples on when to use Ajax. He suggested the following scenarios:

  • Feedback on long running tasks
  • Provide info to user quickly economically in context
  • Draw users attention to important events in lifecycle of the application
He spoke about the JSON data format, and mentioned about it being a community driven standard. At a high-level it stores Javascript key value pairs. It is a fairly efficient method. ASP.Net Ajax consumes JSON internally but doesn't expose it. There are some free, open source .NET json libraries but Jeffrey hasn't really had any experience of them:All of his demos have been written using the SQLlite database. SQLlite is free, open source and public domain. It needs no installation and no configuration. He described it as being like access without GUI. It is distributed as a small dll - 220k for db engine and ADO.NET provider.

Some ASP.Net Ajax controls demand SOAP so you have to write a SOAP proxy for just about any data you wish to use - this sounds a bit faffy. Where this is the case it uses names of SOAP method parameters and not the method signature (he used prefixText and count for AutoComplete as his example)

The alternatives to using ASP.Net Ajax are:

He mentioned the Open Ajax alliance whch is "is an organization of leading vendors, open source projects, and companies using Ajax that are dedicated to the successful adoption of open and interoperable Ajax-based Web technologies. The prime objective is to accelerate customer success with Ajax by promoting a customer's ability to mix and match solutions from Ajax technology providers and by helping to drive the future of the Ajax ecosystem." The main intention is for various vendors Ajax stacks to not break when used with each other.

His final point was that it is possible to write an HTTPHandler to produce and consume Json. A quick search via google turns up a JsonHandlerDotNet project.

Session 2: Functional Programming in C# 3.0 by Oliver Sturm (Oliver@sturmnet.org)

So what is functional programming?:

  • A programming paradigm
  • Avoids state and mutable data
  • Well known languages Inc haskell, lisp, f#
  • Focus on application of functions
  • Many imperative and oo languages have fp features
  • Functional programming languages have features that support higher order functions, currying, recursion, list comprehensions
  • Any function should only work on parameters passed in, should not persist anything, or use any other variable - anything it isn't supposed to do is called a side effect
Why is functional programming interesting?
  • Promotes modularisation - reuse stuff on a functional level rather than a class level
  • Lazy evaluation --> greater efficiency
  • Target of avoiding side effects has several advantages: scalability, optimization, debugging, testing
  • By only relying on functions with no side effects then you can parallelise really easily. Testing is easier because no external dependencies so don't need mock objects or setup/teardown scripts
His example code made use of the Array.ForEach function within .NET 3.5 to use functional programming in C#. Alternatively, can use lambda expressions which makes the code look cleaner.

Examples of higher order functions:

  • Map (Select in linq) - do something for each element in a list (foreach in above example)
  • Filter (where in linq) - extract elements based on criteria
  • Reduce (aggregate in linq) - summarize elements according to some calculation (ie sum, count etc)
A variation of Select in .Net is SelectMany to allow a select to return multiple things rather than the usual single thing

Functional programming in C# benefits are:

  • Easy to unit test - no side effects
  • Programming for scalability is easier
  • Easy to get things done
  • BUT make sure all of team understands it BEFORE you use it :-)

Session 3: Red, Green, then what? by Gary Short (Gary@garyshort.org)

This talk was all about refactoring, and the title comes from the phrase "Red, Green, Refactor". Gary was up front about the fact that he works for DeveloperExpress, authors of two refactoring tools, but he was very impartial about tools when he was presenting and I think did a great job of being neutral about tools whilst really selling the benefits of a tool, any tool.

What is refactoring?

  • Improving code without changing overall results
  • Improves understandability
  • Usually motivated by difficulty of adding new functionality
Why refactor?
  • Software entropy - a tendency that over time codebase becomes chaotic. Some examples of this are subversion of object behaviour, multiple child objects, algorithms become more specific etc
He introduced a concept called Design debt - over time you are more likely to bodging a solution to get it done because of deadlines etc, over time the amount of times bodges have been made go up until you finally get to a point where can't progress without refactoring so you are forced to refactor - this becomes a high risk area for project. So, refactor more often to keep the risk to the project low.

To refactor effectively use a tool - examples of tools are are CodeRush, RefactorPro, Resharper

So, why use a tool?

  • Reliability
  • Repeatability
  • More confidence which means that you're more likely to refactor more often
Examples of refactoring made easier by using a tool:
  • Changing a method signature
  • Convert to initializer (decompose too)
  • Make implicit/explicit - use of var keyword
An interesting question was raised which is what happens if you're refactoring inside a library and you don't know who consumes it? A library provides a contract so you can't break the interface. So, instead create a new function and mark the old one with an attribute of Obsolete and also hide it from browsability using the attribute EditorBrowsable to use EditorBrowsableState.Never (note, this will only hide the method from projects which reference the assembly and not within the project itself)

The key to good refactoring is good testing - without unit testing it is hard to ensure you haven't broken it.

Session 4: Go with the flow - introduction to windows workflow by Ben Lamb

I missed the very beginning of this session, and so didn't necessarily fully grasp what this talk was going to give me. Ben also mis-timed his talk somewhat and so didn't get to summarize and wrap up as well as I'm sure he would have liked to. The summary for this talk is "Changing business requirements are the bugbear of the application developer. The Windows Workflow Engine (WWF) allows business rules to be modelled in a graphical environment, possibly by a business analyst rather than the developer, making changes easier to accommodate"

He started using an example of an estate agent - they may deal with commercial properties, or residential properties, they may be part of a larger group, or chain. The workflow employed by an estate agent will probably differ between agents, or even between commercial and residential within one agency. So, if you were modelling the design for a system, you'd need to model these differences.

I have a series of notes about this talk, but none of them make a lot of sense to me, and so I don't necessarily think there is much point in me distributing them. It's probably better to look at the Windows Workflow Foundation site, and try some of the Hands On Labs exercises.

Summary


All in all I had a good day and attended some good talks given by some excellent speakers covering an array of development topics. The event had more of a DDD day feel than something like ReMix as it was community led rather than vendor led. I would recommend the event and would be interested in attending again.
Loading mentions Retweet
Filed under  //  event   review   vbug  

Comments (0)

Brighton Photo Fringe

On Saturday, I met up with one of the ladies I met on the Creative Digital Photography course and after a little bit of plotting we headed off to visit some of the galleries in the Brighton Photo Fringe.

Our first destination was the Brighton Media Centre and the Bystander exhibition. There was a good collection of photos displayed, and my personal favourites were those by Claire Pepper and Laura Pannack which I found really arresting. Next up was the Rimini-Beach exhibition, still in the Media Centre, by Beatrice Haverich. These had some amazing colours.

We left the Media Centre and headed down to the seafront to see the Petrusco exhibition in the Fortune of War. These photos, whilst not exactly to my tastes, have obviously had a large amount of planning to result in some eye-catching images.

Next up was the Human Endeavour exhibition at the Bellis Gallery. This was probably my favourite exhibition and covered a theme which covered the societal impact of consumerism and waste, geological scars on the landscape, globalisation etc. I left this exhibition clutching a map styled collection of photographs entitled Textures of Time: landscape architecture produced by Richard Chivers. This document is a really different way to display images, which is probably why I felt compelled to buy it. My favourite diptych photo is that of a quarry, mainly because if you just saw the left hand photo on its own you wouldn't really see anything remarkable about it, but when it is displayed next to its partner the full story becomes apparent.

All in all, a great wander and some wonderful inspirational images. I'd recommend a wander around if you get an opportunity.

Loading mentions Retweet
Filed under  //  brighton   event   photography   review  

Comments (0)

Women In Media

On Friday morning I headed over to The Old Market in Hove for the Women In Media conference. I have to admit I really wasn't sure what I was attending, or who the conference was aimed at before I turned up, and to be honest, I left still wondering. I think my biggest problem was the whole "Women in" bit to be honest. I'm now a development team leader (i.e. moving into management), but have worked in the software development area for 15 year. In that time I've come across the odd issue because of being female, but not necessarily more than for being a northerner, or a Hull City fan or whatever so I've never really identified my femaleness as being an issue in the workplace.

The event started with a keynote from Linde Wolters of TheNextWomen which touched on the percentages of women in various areas of the media industry. She also identified some reasons as to why these percentages weren't higher, touching on geek culture and tribalism and competition. All in all a pretty good keynote with areas to think about - where are the guiding lights? where are the female role models?

The next talk was a panel discussion about Women on the Web. This was chaired by Jenni Lloyd of Nixon McInnes and consisted of Denise Wilton from moo.com, Sophie Major from Yahoo! Developer Network and Rosie Freshwater from Leapfrogg. The panel all had a 5 minute or so slot each to explain who they were, and what they did before answering questions from the floor. One of the things that was common across all these ladies, or is it women, I can never quite work that one out, is passion. These were all inspirational people, with inspirational messages. They have followed different paths, none of them having started out in the direction in which they ended up, and all of them seemed to have taken different opportunities as they have arisen (which is a great relief to me as that is effectively what I've done too). Ok, so I know that I love the web, its what I changed my focus to in about 1999 so am bound to be inspired here, but I genuinely believe that it would have been hard to leave that session without being inspired.

I didn't get on with the next panel discussion, about Women In Games, as well at all. Maybe it's because I don't understand the unique pressures of the games industry, maybe it's because I don't see myself as a victim, but I found the panel discussion somewhat irrelevant and a complete contrast to the previous session - I don't even have any notes on this which is really, really unusual for me - I make notes about everything...

There was then a break for lunch, and after having had a see-saw morning, I decided not to go back in the afternoon. Overall, I left still not being sure who the conference was aimed at, but still feeling inspired by what the Women on the Web had to say. Would I attend this conference again? Possibly with the intention of learning from the people in my area, the people who I have something in common, but I probably wouldn't hang around for the other talks.

Loading mentions Retweet
Filed under  //  Brighton   conference   event   women in media  

Comments (0)