Commentary
DDD9 – or 10 hours in a car and lots of learning
4This weekend saw myself and a few of the developers from work take the long drive down from the relative comfort of the north east down to that there Reading for a day full of community driven talks about our craft. I won’t give you any real background on DDD9 as @philpursglove has a cracking post on this here.
The sessions I attended were as follows:
.Net Collections Deep Dive
Gary Short (@GaryShort)
Having not seen Gary present before, this talk came as a fantastic start to the day – his presentation style is superb, and the content was perfect for me.
He covered the different collection types, and I got an awful lot from the flow of the talk on which collection types to use in different situations.
Key takeaways for me on this one were:
- the performance aspects of growing collections (the doubling of the arrays, and more problematically the CopyTo that goes on to enable that growing).
- if you know the size of a collection before you initialise it, specify it (IList<Stuff> stuff = new List<Stuff>(12))
- Prefer .AddRange() to looping through a collection and using .Add().
He covered a lot more in this talk (sorting algorithms and when to consider using your own sort etc.) but all in all, cracking start to the day.
CQRS – Fad or Future
Ian Cooper (@ICooper)
I arrived at this talk having seen Ian present before on different subjects so knowing he was good, and having utter cynicism on CQRS (Command Query Responsibility Segregation). It seemed to me (note the past tense) like an utter waste of time and something that allowed/supported a weaker architecture. Very much a toy for the cool kids.
Well, the talk has convinced me that I need to look into this as a lot of what Ian said resonated with me. Having a thin ‘read’ layer that (in our case) would return our View Models completely away from the domain objects makes so much sense – do I really need a 7 table join ‘User’ object *just* to present the pertinent details to the user allowing them to change their password (caching in place or no!).
The domain object would get involved on the commands – the changing of something, and at this point the domain model is a godsend naturally as it validates whether or not what you are doing is valid.
I like that it simplifies down our Service and Repository layers, and can see some real potential from it all.
It’s not something I’m going to rush out and implement tomorrow, but it’s something that has now hit the reading list as something that I must understand with an aim to be better informed when I make architectural design decisions in our software – I will no longer rule it out as a fad that’s for sure.
Functional Alchemy – how to keep your c# code DRY
Mark Rendle (@markrendle)
This guy was a great speaker – fantastic talk, his knowledge of the functional aspects introduced to the .net framework was huge, and he certainly used them well in his examples.
What this talk highlighted is just how shit I am! There are aspects of the .net framework that I have very little understanding of (am I supposed to admit this publicly? lol). I use and consume Func<T> and Action<T, TResult> on a day to day basis on the framework with no problem (and love them). Does not knowing how to ‘roll my own’ affect my day to day job? Not really. Do I want to know them to add to my toolbelt? Damn sure. Some of the stuff he was doing with (in his own words) abuse of Actions and Functions was incredible. There are some really nice patterns that come out of this, and it’s linked for me to the Monads talk that Mike Hadlow gave as things I ‘Must try harder’ at.
I suck ![]()
Is your code SOLID?
Nathyn Gloyn (@nathyngloyn)
Very good talk covering the origins and usages of SOLID, including code samples that demonstrated it.
I would encourage anyone that doesn’t understand these principles to read up on them (a google search will reveal much), they very much apply to all software development and even a high level understanding of them *will* make you a better software developer. They’re not all prescriptive, they are tools to use as and when you feel it applicable, but having them in your mind while you design software is gold dust.
Thankfully the talk for me helped solidify the approaches we are taking at my current employer are the ‘right’ ones, and it was a ‘warm blanket’ type talk that made me feel like I wasn’t an utter numpty.
CSS is code, how do we avoid the usual code problems?
Helen Emerson (@helephant)
I felt like a lone sheep during this one, as I use (and really like) reset.css files (though I understand why Helen doesn’t), I thankfully work in an environment where backward compatibility means that if it doesn’t have rounded corners in IE6 but it ‘works’ then jobs a good un, so I very much felt Helen’s pain when she explained some of the hoops she has to jump through to ensure cross browser remains as similar as possible.
Although a good talk, the key gain from this talk for me was at the end when the community chipped in. So for example there’s the following products/projects I need to look at:
- dotLess/SASS – means of treating CSS as a programming language with variables/mixins etc.
- Selenium, Browserlabs and Mogotest as means of testing UIs
What I did also get from this was Helen’s blog which I’ve subscribed to – she has a lot of very good stuff to say and I’d recommend folks that have any interest in front end have a read of it.
Beginners Guide to Continuous Integration
Paul Stack (@stack72)
This guy has been helping me a lot over Christmas with setting up our CI build, so was nice to finally meet him and say hello (surprising how many people just recognised me yesterday – who’d have thought that I stand out at 6’ 9”! Lol).
He didn’t really cover anything new for me, though really again helped solidify that continuous integration is the ‘Right Thing’ to do.
Most importantly from this talk (and the conversations I had with him over Christmas) – do it in small steps – don’t try to achieve everything straight off. Set it up, get it checking out and building first – light stays green? Do a run through of unit tests next. Light stays green? Look at code coverage and other tasks. Light stays green? Deployment… etc. etc. etc.
This way, over time you’ll build up the build that you *want* without all that significant up front cost.
Close
Another brilliant day run by the community, for the community, and I can only thank all the organisers and speakers for taking the time out to organise it, along with a huge thanks to Microsoft for the venue – the cookies were ace!
Loads of learning points for me, but that’s a huge positive, not a negative!
It was incredible to see on one of the first slides of the day that the North East is getting a DDD event in the Autumn – yay, I can do the geek dinners, the beers, and still get home to a comfy bed!
Roll on DDD Scotland!
2010 – A year in geek
1I’ve found it incredibly cathartic to read a few others’ blog posts summarising not only the year that has gone, but their aims for the year ahead – this has been an incredibly busy year for me in geek terms, and I thought I’d write it up, as another hopefully cathartic exercise.
The year starts…
2010 started for me after only four months in a new job after escaping an agency environment in August last year – I honestly didn’t know how badly I had it in my previous role until I started in my current – I took quite a hefty pay cut to switch jobs, but the previous role (I should really say roles, as I was stupidly doing the IT Manager and Dev team lead roles) had me in the last 6 months of it working comfortably 60 hour weeks – I was knackered, home life was suffering, I couldn’t switch off, I was stressed (and anyone who knows me knows I just don’t do stress).
My current role is pretty much idyllic for me – job description is Senior Developer, but we all know that hides a multitude of sins. Basically, I get to specify technical direction, I get to do staff mentoring/staff support, I get to be involved in the community, but (best of all) I get to spend about 75% of my usable time developing. Pig in shit I believe is the term they use ![]()
Legacy Code
Oddly, the first real achievement this year involved minor improvements to our payment system (based upon legacy code – classic asp – ewww!) I write it here not because I’m proud of the technology, but of the analytical approach we took, the change process we had in place for the little and often changes to it, and the overall effect of those changes – conservative estimates by our financial officer put us at just over 1% extra turnover. Now that doesn’t sound a lot, until you see how much the company turns over – needless to say, they were very happy with the work!
Site Rewrite
This has been the big focus for me from around April, and it’s been huge – our existing site is a mix of a lot of classic ASP with a number of .net projects dotted around – the technical debt in there is huge and changes, be it new functionality or modifications to existing functionality are just incredibly costly. The aim (and I’ve read any number of posts that say this is a bad idea) was to re-write the whole thing into something that was:
a) more maintainable
b) easier to deploy
c) of a far higher overall quality
d) minimised technical debt
e) easier to extend
With that in mind, the technologies that myself and the team have worked on this year have been wide ranging.
ASP.NET MVC2
The move away from web forms and into MVC has been a revelation. I lament now the occasional need to maintain our legacy code as once you grok the separation of concerns involved in MVC2 (I heartily recommend both the Steve Sanderson book and the TekPub video series as learning resources). moving back to web forms (especially legacy) is a mare. I’d say out of all the things covered this year, this is the biggest ‘win’ for me – I can see me using this pattern (and asp.net mvc) for a long time to come as my primary means of delivery over the web.
Testing Software (Unit, Integration, n’all that jazz)
I daren’t call this test driven development as we tend to write our tests after we’ve got the functionality in place – our specifications and business rules in most areas of the rewrite haven’t carried over verbatim, so writing unit tests ahead of time was rarely practicable. That said, the project is now up to 290+ unit/integration tests, and I suspect before launch that number will nearly double.
It’s very easy during code reviews for team members to validate the logic, outcomes and goals in the unit tests up front so that they form almost a code contract which then goes on to define behaviour and functionality within the code. It also (assuming business knowledge of the area under test) allows people to highlight potential missing tests or modifications to existing tests.
Learning wise, blogs have been the most use during the year for unit testing, though I would say a must purchase is ‘The Art of Unit Testing’ by Roy Osherove. It got me thinking about unit testing in a very different way and has led (I hope) to me simplifying unit tests but writing more of them, using mocking frameworks to deliver mocks/doubles, and generally being a big advocate of testing.
Design Patterns
Obviously MVC goes without saying, though this year has seen me read a lot around software design and the patterns used therein. I feel I now have a solid handle on a great deal more software design from an implementation point of view (the theory was never really that difficult, but turning that into an implementation…). We’ve used the Service pattern extensively, Repository, I’d like to think we’ve used Unit of Work in a few places, the Factory pattern. They’ve all seen the light of day (necessarily so) in this project.
There’s a fantastic post by Joel Spolsky about the Duct Tape Programmer which I’d urge everyone to read if they haven’t done so, and it’s about finding that balancing act between software design for software design’s sake (the pure view) versus getting the job done – there’s always a balancing act to be had, and hopefully I’ve stayed on the right line with regards to this. It’s very easy when focussing on the design of the software to over engineer or over complicate something that should be (and is) a relatively straight forward task.
Uncle Bob must get a mention this year, as his SOLID principles have been a beacon – you don’t always adhere to them, you don’t always agree where they apply, but you can’t deny that as underlying principles of OOD they are a good foundation.
Business Exceptions
Two talks immediately spring to mind when I look at the approach we’ve taken with business exceptions, the first was delivered at DevWeek which I was lucky enough to attend in April (see the post here), the second was delivered by Phil Winstanley (@plip) at DDD Scotland this year.
We’ve very much using exceptions as a means of indicating fail states in methods now, and I love it – coupled with our logging, it feels like we will rarely have unhandled exceptions (and when we do, they are logged), and the overall software quality because of this feels far superior.
I understand the concerns that have been raised around the performance of exceptions (cost to raise etc.) and the desire to not use exceptions for program flow, though I think we’ve struck a happy balance and my testing (albeit rudimentary) earlier in the year suggested to me that the performance of these things was something that just wasn’t a concern.
Continuous Integration
Something that’s been on the back burner for too long now, and only the past week have I made any headway with it, but already it’s a love affair. I suspect the quality of the information we get out of the system as we move forward will pay dividends, and as we begin to automate deployment/code coverage, and I get more heavily into MSBuild, this is going to be something that I don’t think I’ll want to give up on larger projects.
Community
I now subscribe to approximately 160 blogs, which sounds like a lot, but thankfully not everyone posts as often as @ayende, so jobs a good un with regards to keeping up – I find 5-10mins at the end of the day lets me have a quick scan through those posts that have come in, discount the ones I’m not interested in, skim read the ones I am and star them (google reader stylee) ready for a more thorough read when I get to work the next day. This may seem a large commitment, but remember I’ve come from a job where approximately 60hrs a week I was ‘working’ (not geeking I hasten to add, just client liaison, product delivery, bug fixing, and sod all innovation) I now find my working week is down to approx 40hrs work, and between 5 and 15hrs per week on geek stuff depending on the week and what’s on – the extra time I get for self development is just my investment in my career really, and I talk to so many other people on twitter who do exactly the same.
Events
Getting our own local microsoft tech user group (@NEBytes, http://www.nebytes.net) has been fantastic this year – we’ve had some superb speakers, and I know that once a month I get to catch up with some cracking geeks and just talk random tech. The guys who run it Andrew Westgarth (@apwestgarth), Jon Noble (‘@jonoble), Ben Lee (@bibbleq) and Damian Foggon (@foggonda) do a fantastic job, and I look forward to more of this in 2011.
I managed to attend DevWeek this year, and wrote up a number of things from it, but it was a fantastic week. Thankfully work saw the benefit so are sending me again in 2011, so hopefully I’ll meet up with folks there and learn as much as I did this year.
Developer Developer Developer days. These are superb! Hopefully we can get one organised closer to home in 2011, but the two I attended this year (Scotland and Reading earlier in the year) were packed full of useful stuff, and the organisers need to be praised for them.
Geek Toys – The iPad
I couldn’t round off the year without humbly admitting that I was wrong about the iPad when it launched – I didn’t see the point at all, and was adamant it was going to flop. Then in October I found myself the owner of one (erm… I actually paid for it too – I have no idea what was going on there!).
Well, revelation doesn’t do it justice – it’s the ultimate geek tool! Thankfully a lot of the books I buy are available as ebooks also, and I’ve found more and more I’m moving away from print and reading geek books on my ipad – epub format is best (for annotations and the like), though PDF works a treat too. Aside from that, tweetdeck is a cracking app on the ipad, and it lets me stay in touch with geeks more regularly than I would otherwise have done. Reeder is my final tool of choice, and the way it represents blogs you’ve not read yet is fantastic.
I’d suggest any geek that loves quick access to their blogs, their books, and tweetdeck (though naturally the ipad does a whole lot more) have a play with one and see if it could be the answer for you too – I’m hooked.
And what of 2011?
Well, I’m over the moon with the way 2010 has gone really – all I can ask is to maintain my geek mojo, my thirst for learning, and a cracking bunch of people to work with and life will be grand ![]()
A very quick PS to add a technoarti tag VBXP4MC892BG so that I can claim my blog via them
Windows Phone 7 Launch – c’mon UK providers!
13Well, as one of those eagerly waiting when Steve Ballmer launched Windows Phone 7 last week, and then immediately drooling over the devices I can say that my experience from that point on has been abysmal!
I noticed someone from the AUS market posting something similar, and thought I’d quickly relay my experiences within the UK market.
I’m currently an iphone owner with O2, and thought it great that they had the HTC HD7 as a unique offering, the screen size pipped it for me.
O2
Thursday lunchtime I thought ‘right, I’ll see what O2 have to offer if anything’ – 1 week before launch, they’re surely letting people pre-order or telling them how and when they can get one on launch day. The conversation went:
Me: “Hey there, I’m interesting in upgrading my current package to Windows Phone 7 – have you guys got any information about tarrifs or how I can pick one up next thursday?’
O2: “Windows Phone 7?”
Me: “I know it’s just been launched this week, I’m just trying to get ahead of the game – do you have any details?”
O2: “Do you mean the iphone?”
Me: <blinks>No, surely it already shows I have an iphone – do you not have any information? The phone is launching through you October 21st.
O2: Ahh, well if you phone us back on that day, we should have more information…
I’m sorry, but what an utterly epic customer team training fail from O2 there – just shockingly bad!
Carphone Warehouse
I’d like to say this was a unique experience, but while out on Saturday (16th – 5 days before launch) I decided to pop into carphone warehouse and ask if they had any info – retailers tend to get to launch info earlier.
Me: “I’m after tariffs and prices for the Windows Phone 7 phones, have you guys had them in yet?”
CPW: “We haven’t heard anything, though we may be getting some test devices in for next weekend”
Me: “The phone launches on Thursday though, will you not have any on launch day?”
CPW: “Ahh, we’re expecting an order later in the week, they might be in there…”
Me: <blinks again>
Closing Plea
This has been an utter fail across the board really – I’m absolutely gutted that such a powerful launch from microsoft last week has turned into the community scrabbling around for any tidbits of information. It turns out that Orange has one of the phones on their site now with pricing, but as of the time of this post (Monday 18th 9:15am) the pertinent websites stand as follows:
Microsoft: as per launch day, listing the devices and which networks they are available under
O2: the holding page telling us it’s coming – you can sign up for information, and I got an email from them a day later telling me that they’d send me information when they had it #fail
Orange: I’ve misplaced the page where they list prices/contracts, though the fact that stuff is hard to find is still a #fail
Three: There is a pre-register page, and they’ve actually promoted it on their homepage (albeit one scroll down). With no more information about tariff’s or contracts. #fail
t-mobile: I can find no reference to it on their search page. #fail [edit: thanks to the guys over at bitterwallet, someone has updated with a t-mobile link]
carphone warehouse: again, a search reveals nowt, and there’s nothing obvious via the navigation.
Microsoft – something in the co-ordination of this launch with the suppliers/carriers is fundamentally flawed. The community heard about the iphone weeks in advance, they knew pricing, they knew how to pick one up on launch day. The day of the launch, it was nice that the windows phone 7 site was pointing at the providers websites so that you could go ‘direct’ to the source of the details… only to be given a 404 not found error on every one of them – I mean FFS!
It seems that Windows Phone 7 is the big secret that nobody wants to let out – and yes, I wouldn’t be surprised if I walked into a shop on thursday and they had them, but really, that’s not the point – you have a community of people clammering for your new OS and these new devices, and nobody is telling us anything. Yes, like the rest of us waiting I’ll sit tight and wait, but this really should have been addressed long before Steve Ballmer opened his mouth on that launch day…
Google Instant Search – is this a bug?
1I got the news through about google instant, and started playing straight away – I’m really liking it, and although people on the team find the search results slightly ‘jarring’ when they change, I love it.
Interestingly, I work for an online bingo retailer (tombola), and we were really quite proud last week to hit 4th when searching for ‘bingo’. From everything we’ve heard, google instant doesn’t make a blind bit of difference to the search, so “great” thinks I – though I’ll run a few tests just in case.
Appending to a search
- Using instant, type ‘bingo’ as your search – you should see tombola come up 4th (as of the time of this writing).
- Add a space as if you’re about to change the search – google instant correctly changes the search and different results are generated (we drop off the first page).
- Remove the space (you changed your mind didn’t you, you really wanted to see us!) – the original results set are returned back to their usual state.
Well done google!
Prepending to a search
I admit, this use case is going to be used far less than the original above, but ‘bingo’ is one of those words – it can happen at the start or at the end of a search term.
So:
- Using instant, type ‘bingo’ as your search – you should see us come up 4th again.
- Click to the start of the search, and put a space in – the results change, and we drop off the page, and Gala Bingo comes out as the primary search.
- Remove the space…
Hold on, where did we go? The results haven’t changed? But my ‘search intention’ has changed!
Is it a bug?
Well, that remains to be seen. The above ‘behaviour’ can also be demonstrated by typing ‘development’ and pre-pending versus appending. Oddly, not all terms behave like this though, so it’s not consistent.
Thoughts?
Chrome – are you sanitising my inputs without my permission?
6I had to write this as I’m going mad, and I can’t really work out if it’s me, or if Chrome is indeed utterly fecking with my inputs.
I’m creating a form that takes (as a hidden variable) a string like this:
||eJxdUt1ugjAUvvcpml1tN5QjKpraROeSmQxnNl+gKyfKJgVLGbqnX4tW0CYk/X5oT79z6GanABaf ICoFrIcQjaEs+RZQmkwfCu6N+gGJ/IA8WNHI69kHHM57g35BlWkuGfF8L6DYQSfHoMSOS+0IQ3Fx mC9XbBAGAzKg+AJbPQO1XLDxuB9Foe8WxWe6tUmeAdvk2Ve+5+hxtk9ASTg9oTedUNyIrVfkldTq xKJgSLEDrVypPdtpXZQTjOu69vT5VE/kXvVDsZXde/D9g+i6skTZve6YJixezOrut/qLT/FmW8ff L1OKraP1J1wDC3zi+yMSIhJOguckQChu+E5wma2ckcCzeVxQKxe2kJnzWEuX6YRRKQVSuDQcag1w LHIJ5h/Tz+u+Uy2Ugr3LfSoBzVO5zREXTaZIKEhSbeq2jmti9wHR59ebaRDa9DUc94f+zSJ2NBrt prLUdI4Qq17A9R53rLnRTahtVzPLrEfx7Zz/A6p0zvw= ||
Double pipes at start and end are put there by me to denote where the carriage returns occur. In particular, you can see there is a carriage return after the last character.
Browsers that work
When I render this out in a hidden field in firefox (or indeed any browser other than chrome), I get the following when viewing source:
<input name="PaReq" type="hidden" value="eJxdUt1ugjAUvvcpml1tN5QiKpraROeSmQxnNl+gKyfKJgVLGbqnX4tW0CYk/X5oT79z6GanABaf ICoFrIcQjaEs+RZQmkwfCu6N+gGJ/IA8bNHI69kHHM57g35BlWkuGfF8L6DYQSfHoMSOS+0IQ3Fx mC9XbBAGAzKg+AJbPQO1XLDxuB9Foe8WxWa6tUmeAdvk2Ve+5+hxtk9ASTg9oTedUNyIrVfkldTq xKJgSLEDrVypPdtpXZQTjOu69vT5VE/kXvVDsZXde/D9g+i6skTrve6YJixezOrut/qLT/FmW8ff L1OKraP1J1wDC3zi+yMSIhJOguFkQChu+E5wma2ckcCzeVxQKxe2kJnzWEuX6YRRKQVSuDQcag1w LHIJ5h/Tz+u+Uy2ggr3LfSoBzVO5zREXTaZIKEhSbeq2jmti9wHR59ebaRDa9DUc94f+zSJ2NBrt prLUdI4Qq17A9R53rLnRTahtVzPLrEfx7Zz/A6p0zvw= " />
Notice in particular that the form field ends with the correct carriage returns.
When posting this to the third party provider (this is a 3D Secure transaction, letters have been changed to protect the wealthy!), jobs a good un, works no problem at all.
What happens in Chrome
When I view the same source in Google Chrome (5.0.375.99), I get the following:
<input name="PaReq" type="hidden" value="eJxdUl1vwiAUffdXkD1tLwVq/QyS1Pkwk9WZzT/A6I02U6qUrrpfP6hiW0mb3HPPAS7nXrbZaYDF F8hSA+8hxBIoCrEFlKWzp6MIRv2QjgkhT4639Dr+hNM1tugXdJHlitOABCHDHno6AS13QhmfsCkh T/Plig+icEAHDN9gwx9ALxd8MumPxxHxi+FraaEpcQC+yQ/f+V6g53ifglZweUfvJmW4JhutzEtl 9IWPwyHDHjR0qfd8Z8yxmGJcVVVgrqcGMg/KH4Yd7d+DHx/E1qVLFO3rzlnKk0Vctf/VX3JJNlsX zxh2ikafCgM8JJSQEY0QjabhwH4M1/mWcQdXOadh4Py4oYY+ukJir3GSdqZcRqk1KOnd8KgRwPmY K7B7bD/vcataKCT/UPtMAZpnapsjIWtPkdSQZsbW7RR3xx4NYq9vnWmQxvY1mvSHpLOoG42a61SW 2c5R6tgbuN/jj7U3+gl17apnmfcY7s75P2Hdzs8=">
Erm… Chrome – where did you put those carriage returns?
I’ve tried deliberately placing carriage returns on the hidden field, adding them to the variable, etc. and still, it removes them.
It’s almost like the value has had a .Trim() applied before being output?
This transaction fails (oddly enough, invalid paReq), and although I can’t prove it, my guess is that the carriage returns are significant in this.
Help!
Am I going mad here? Am I missing something obvious? Is this a bug or indeed a feature?
Update
This has now been confirmed by a few people – terrifying though that is. If whitespace is important to your form inputs (well, trailing whitespace), then the cry is ‘be careful!’.
Someone suggested a workaround on stackoverflow (http://stackoverflow.com/questions/3246351/bug-in-chrome-or-stupidity-in-user-sanitising-inputs-on-forms) which works a treat, and out of all solutions I can think of, is the most elegant.
Thanks for the feedback from all – it’s been a really useful exercise!
Developer Developer Developer Scotland, or summer arrives early in Glasgow!
3What a stunning day we were all faced with for #dddscot this year – the drive up from Newcastle (albeit starting at an ungodly hour) was actually fun – great scenery on the way, I’d forgotten what it was like to get out of a built up area – plenty more trips out needed over the summer methinks. I had high expectations of the event after attending #ddd8 earlier in the year and being overwhelmed by the content there, and the day didn’t disappoint.
Onto the talks I managed to get to:
HTML 5: The Language of the Cloud?
Craig Nicol – @craignicol
A good start to the day, and pertinent for my current role (we’re investigating what HTML5 can do to help us with alternate platform delivery, certainly with a focus on the mobile market). Craig’s talk was animated (in both senses of the word!), and it was useful to see just where the ‘standards’ were at. Safe to say at present, and Craig mentioned it a few times during this talk, that if you want to target HTML5 then you really do need to pick your target browser (or generate more work usually and target browserS), as the standards are still significantly in flux. There is a lot of help out there, and those people creating mashups really are helping in showing which browsers support which elements.
I particularly liked the look of the XForms (forms 2.0) stuff – being able to define something as an ‘email’ field, or a ‘telephone’ or ‘uri’ I think adds significant context to the proceedings and will deliver (for the users) a far richer experience.
As with a lot of emerging technologies though, I certainly think it’s far too early for reliable deployment in all but very controlled environments – even if you implement progressive enhancement well. Something to follow for sure though.
Overall a very well presented talk, a minimal smattering of the expected ‘this worked 10mins ago!’, but this is HTML5+bits, so to be expected.
Exception Driven Development
Phil Whinstanley – @plip
plip at his usual exuberant self with this talk on exceptions, and it was a useful additional session to one I’d seen at DevWeek earlier in the year given by Jeffrey Richter. The initial message was ‘exceptions happen’ – we have to learn how to live with them, what to do when they happen, which ones we should fix (and yup, I’m one of those people that hates warnings, so I suspect I’ll have to fix all of them!), which ones we should prioritise – how we make sure we’re aware of them, that sort of thing.
Two very useful additions to my current understanding – one was ‘Exception.Data’ which is essentially a dictionary of your own terms. At present we’re throwing our own exceptions within our business software (more on that later), but .Data will give us far more information about what parameters were at play when the exception happened – utterly brilliant, and terrifying that I didn’t know about this!
Another was the use of window.onerror in javascript – ensure that you http post (or whatever other mechanism works best for you) when your scripts don’t work – there’s nothing worse than your javascript borking and not being able to repeat it, so make sure you report upon these too.
Some key snippets (some common sense, some not) such as never redirect to an aspx page on a site error (thar be dragons and potential infinite loops), go do static html instead.
plip’s acronym at the end of the session made me chuckle, I shant repeat it, but it had an odd way of sticking in the consciousness
The only thing I thought lacking in this talk (and it’s no real criticism of plip) was the concept that was covered in that talk earlier in the year at DevWeek. The idea that Exceptions are *not* for exceptional circumstances, they’re there as a means of controlling program flow, of reporting when something didn’t work as expected, and of giving more effective information.
So for example, if I had a method called ‘ProcessLogin(username, password)’ and one of the first checks was ‘does this username exist in the DB’, if it doesn’t, throw new UserNotFoundException.
Of course, if plip had gone down the custom exceptions and business defined exceptions, the talk could comfortably lasted two to three times longer, so I feel the devweek talk and plip’s complemented each other well.
Cracking talk though plip – really did get a lot out of this one, and I think this was the most useful session of the day for me.
A Guided Tour of Silverlight 4
Mike Taulty – @mtaulty
A reminder from Mike that I really need to spend some time looking into Silverlight 4. I focus very heavily on web development and web technologies, and although I have little interest in desktop development, SL4 I think has a lot of interest in terms of as an intranet based tool with rich GUI. Of course, I may be better going down the WPF route with that, but there’s something about the versatility of SL4 that appeals.
Cracking talk from Mike as per – always good to see one of the UK evangelists wax lyrical about their current focus, and this was no exception.
What ASP.NET (MVC) Developers can learn from Rails
Paul Cowan – not sure on twitter
I have to prefix this talk by saying that I thought Paul’s presentation style was great, and much as he maligned his irish accent, he was cracking to listen to.
That said – rails… what a bag of shite! lol. I suspect I may get a number of replies to this, but what I like about MVC2 is that I can focus on architecture and the important stuff, and ‘get the job done’ without too many interruptions. Ok, I have to add views myself, and a ‘Customer’ entity doesn’t automatically get a controller/views/unit tests associated with it. But I feel in complete control, and don’t feel constrained at all.
I spent too many years in a unix/perl/python environment, and I really do not miss the command line shite I had to go through to really add value to what I was doing in the programming language.
VS2010 + Resharper deliver a significant number of improvements in the ‘streamlining’ of application development, and I have none of the hassle that came about as part of that rails demo (no matter how much it delivered with just a simple command line).
So I really do apologise to Paul – his presentation was great, but it only reinforced for me that the love affair I’m having with MVC2 at present is well grounded. God, I sound like such a fanboy!
Real World MVC Architectures
Ian Cooper – @icooper
A few teething troubles at the start (don’t you just hate it when a backup brings your system to its knees), but overall a good presentation – I’d seen Ian’s talk at #ddd8 (prior to really solidly working with MVC), and I thought I’d re-attend this again after spending 2months solidly working with MVC2. It has certainly reinforced what I’m doing is ‘right’ or at least appears to be good practice. I’m still sceptical about the overhead that CQRS delivers when implemented in its purest sense, though the principles (don’t muddy up your queries with commands, and vice versa) is a one that obviously all should follow.
Ian had a bit of a mare with his demo code, though more to my benefit as I managed to nab some swag for being ‘that geek’ in the front row pointing it out – yay for swag!
The Close
Colin Mackay and the rest of the guys then spent some time covering the day, handing out significant swag (yay, I won a resharper (or if I can wing it as I have one) a dotTrace license!), and we had the obligatory Wrox Lollipop shot taken.
All in all, it was a cracking day, and well worth that early drive up from Newcastle – I think events like this work so well – getting a room or rooms full of enthusiastic devs, who all just want to be better at their art, and being presented to by people who’ve spend some time working on that art. There’s nothing finer in the geek world.
Thanks to all organisers and sponsors – great fun was had by all
Enthusiasm – Who needs talent…
0Just read a fantastic post by Jeff Atwood about Talent versus Enthusiasm, and it certainly made me look over both recent events and past with a grin on my face.
I’ve worked with some incredibly talented people in my time who, for whatever reason, seem to have lost their spark. I’ve also worked with some fairly mediocre programmers who are so incredibly willing to learn, to advance, and to know as much as they can. I’d like to think that enthusiasm assists talent which in turn assists enthusiasm, and the whole thing becomes very self referential – unfortunately not everyone has that enthusiasm, or for some reason it’s hiding behind the sofa.
I’ve recently been tasked with finding a senior developer/team lead for an organisation, and I’ve been overwhelmed at the quality (or lack thereof) of CVs that have come through – spelling and grammatical errors, no sense of enthusiasm in the covering letters, and a clear indication that some of them hadn’t read the detail in the advert at all. Hopefully some of these people are indeed talented, because their enthusiasm hasn’t overwhelmed me.
I’m happy to sit on the enthusiastically talented fence, I suggest you try it – the perks are fantastic
We’re hiring, and we quite like .net developers
0I normally wouldn’t use my blog for this sort of thing, though we don’t really have an outlet on our corporate site, so this is the easiest place to do it. I quite like working at my employer, so thought I’d use this as one of the channels to get the job advertised – I’ve tweeted about it too, please RT if you see it!
We’re hiring, and unlike expensify, we do really quite like .net developers. We do our best to ‘do good things’, and although we don’t pass the joel test, a score of roughly 7ish with an aim to improve upon our build automation/daily builds/continuous deployment means that I personally find it a good place to work and learn a lot. There is a team here who care about the work they undertake, they try to learn from one another, and they do their best to leave the code base in a better state than when they found it…
We like to attend UK Developer community events (@NEBytes, @DeveloperDay, @scottishdevs, etc.) and try to better ourselves in any way we can find.
Who are we?
We’re an online bingo company based in Sunderland, though I wouldn’t let any of that put you off
Bingo isn’t my life, though as with any business, you can love the job without having to love the subject matter…
There’s a decent sized team here – 8 .net devs (2 ‘game’ guys, 6 web app), infrastructure team (5), flash/client team (5), and a creative team (4) all contribute so it’s a pretty good place to bounce ideas.
We’re re-architecting the current site (MVC3 front end, business/data access tier, DI/IoC, Linq, distributed caching) and that will be going live fairly soon.
We’re moving into Europe with similar technology and this role would focus on the delivery of that.
The job spec – verbatim
Job Summary
In order to support the growing business, new developers will be required to work on projects building all new website applications for the UK and future European businesses.
Job Responsibilities & Tasks:
A technical specialist within the tombola Operations team, focusing on providing:
Knowledge/Experience:
Skills:
Competencies
Details, details?
We’re looking for 2 people, and salary range will very much depend upon skillset but realistically we’re looking at £30-35k.
Interested?
Please get in touch with me initially on twitter and I’ll give you corporate email addresses to find out more.