Interesting times and justifying ones existence :)

Well, wasn’t yesterday an interesting day!  Had a conversation with a friend about what it is I actually do.  They didn’t feel that I was selling myself effectively enough via this blog, though thankfully this blog was never about that – it (I hope) shows that I’m keen to learn, keen to do more, and never content with knowing ‘enough’.  They asked in particular for me to clarify what work I had done whilst working on suite-e, and looking back over our work schedules, project documents, and just generally over the functionality in there, it turned out to be quite a list:

  • User Controls / Custom Server Controls
  • Using .net forms and role-based security with the membership and role providers
  • Use of Enterprise Library application blocks for Data Access, Exception Management and Logging
  • Extention methods
  • Significant Ajax use (both ASP.NET Ajax and Telerik Ajax wrappers)
  • Linq (minor)
  • Facade design pattern (5 tier solution, UI -> Business Facade -> Business -> Dal Facade -> Dal)
  • Significant use of inheritance throughout the data and UI layers
  • Interface use (minor, where necessary)
  • Custom/3rd Party Controls (Telerik)
  • Hand rolled URL routing for friendly URLs (sitting atop urlrewriting.net)
  • Use of Themes, Masterpages, including browsercaps useage to allow CSS targetting more effectively for cross browser
  • jQuery use (my input minor)
  • CSS
  • Xhtml
  • > 80 table relational data model, significantly more stored procs, cursors, temp tables
  • Web services to authenticate licensing of the product
  • Windows services to manage email send from the CRM module
  • Significant and ongoing refactoring, including fxcop use when readying the solution for microsoft testing
  • Upgrade from .net 1.1 through 2.0, and then incorporating 3.5 elements when applicable

Suite-e as a product has obviously had more than one developer work on it, though it felt good whilst writing this up to realise how far I’d come and what technologies I’d learned and put into practice during the implementation.  I essentially architected the vast majority of the product, both code and SQL schema from its early days through to the modular CMS, Product Catalogue, E-commerce, CRM and Events management solution that it is today, with over 170 files and 51k lines of code across 6 projects, over 80 tables, significantly more stored procedures… the list goes on :)

It’s incredibly understandable that a blog would give people a perception of who you are, indeed it’s a very personal blog, so it certainly should, though I hope this blog also gives folks a perception of the sort of developer I am, that will keep ploughing on and learning as much as I am able, because that is what is ‘fun’ to me.

NerdDinner, and initial thoughts on MVC

Although I’ve not yet finished it, I thought I’d start my wee reflection on MVC as learned through NerdDinner.

Obviously, the immediate thing that hits you is that you aint in Kansas any more – ignore the asp.net postback model, it’s all change and there is going to be some significant re-learn before I get anywhere near good I think.

I do love the separation of concerns, the theory behind it is sound from a maintenance and extensibility point of view.  Keeping my model tucked away nicely, and using it to provide the meat that the controller feeds of, which then in turn drives the View I think makes perfect sense.  I need to work far more heavily on the URL Routing before starting to design anything bigger just to see how a richer navigation hierarchy will sit.

I love the way postbacks are handled (at least in the NerdDinner app) and AcceptVerbs() just makes sense to me.  I can see I’m going to have to read up a bit more on programming against an interface, as I haven’t covered so much of this.  I wasn’t a big fan of the Respository pattern, I’d have perhaps gone down the facade route, or (when and if I understand it) perhaps IoC will help with this, though obviously this was just one example.

It’s my first successful play with Linq to SQL, and I’m liking the abstraction and the codified approach to it, though I’ll have to run some heavier tests through SQL Profiler to see how it works in terms of performance.

I’m going to have to look through the source code to find out just how all of the helper methods work rather than just use them – chucking Html.ActionLink() on the page is all well and good, but I want to know what it actually does in the code (easily enough done now that MVC source code is available)

I’m only just getting now to the integration/work with Ajax, which I think will be interesting – I shall keep the blog updated with stuff as I cover it.

The weight lifts, back to the fun stuff…

Well, the launch of the bulk of the client sites we were working on throughout May/June has left me with a weeks holiday – yay!  I’m more determined than ever to spend it learning – busman’s holiday I guess, though I’d feel like I’d wasted the week if I sat playing on the consoles or just bumming around – I’m sure catching up on sleep will help too.

I’m really enjoying the learning that I can get from just an hour of reading through stackoverflow or those peoples tweets that I follow, key over the next week is focussing this and getting some more technical contacts to learn from – there are some cracking recent ones including @spolsky, @elijahmanor, and @scottgu – and just getting time to read all about it will be bliss.

I finally asked my first question on stackoverflow the other week and thankfully it was well received.  Polymorphism in c# has always for me been a timtowdi concept, and although I’ve not had significant need for it in the past, I’ve always liked the flexibility interfaces give in implementation.  Thankfully the answers seemed to back that up, and give some good concrete examples.  So nice to know there is a community around like this that will happily offer support/views, and ultimately can lead to a ‘best practice’ guide on issues.  Of course, we’ll ignore the ‘answering without reading the question’, and all the other minor issues SO has – on the whole, a cracking resource.

So, fingers crossed this will again be the start of regular posting – this next week is working through the MCTS training kit and just learning more, doing more – key areas I have to focus on really are build management (NANT), WPF (for MCTS and curiosity more than anything), Design Patterns (I’ve only really used the Facade in anger, but there is so much discussion at present about IoC and Dependency Injection that I have to have a read).

I want to be playing with Linq (the elements I’ve played with so far highlight how seriously powerful it is if used carefully) and other more ‘hands on’ elements, though I think getting that grounding right is first and foremost.

More to follow during this weeks ‘holiday’ :)