 Tuesday, September 02, 2008
Hi All, I'm afraid I'm going to have to postpone the Architecture chat until next week, due to other commitments on Thursday. So it's now rescheduled for next Thursday - 11 th September - if anyone has any topics, or saw anything cool at code camp or teched this week then leave a comment on this post and I'll add to the list of topics for next week.
 Monday, August 18, 2008
Hi all, there's an Architecture chat this Thursday - 21st August @ 11:30am onwards. Some things that I've caught my eye since last time: - .Net 3.5 SP1 and VS2008 RTM are here
- VS2K8SP1 and SQL2K8 installs are a big mixed bag, some people no problem, other tearing hair out!
- And so are the war stories such as regressions and critical changes - doh!
- Visibility and trouble with non-developers being unable to quantify the quality of developer outputs - sparked off by this post by Casey.
- Resharper 4.01 RC1 is out.
- ASP.NET MVC now and in the future (i.e. where it's going, and perhaps a discussion on future of monorail vs. MVC and Monorail 2??).
- Security practices on MVC, WCF etc.
- Redmine - an interesting (and nicer) alternative to Trac - wonder if there's an easy transition path for existing Trac sites?
Edit: updated this list with some suggestions from others. If anyone has any topic suggestions - just make a post on this entry, or send me an email / IM message. Details of previous posts and directions etc. can be found here on the wiki.
Here's the write-up for Architecture Chat #32 (from Thursday 7 th August 2008) ... some of the things we discussed: - Jabl / Jass (Javascript abstraction language) - we discussed this approach of writing languages that transform into another language - the tradeoffs of debug experience vs. productivity etc.
- Debug experiences in DSL's and in particular the lack of support in these language rewriting/transformation projects.
- The magic bullet language i.e. two-way debugging experience, language independent refactoring support, modular/pluggable language support (sorta like Boo).
- Code camp at the end of this month.
- Self explaining code / blaming code (i.e. code that can explain the decisions it makes in english, or at least identify the blame (i.e. steps) that lead to the result it selected. Though we didn't bring it up, I quite like the way Rhino Security does this.
- xUnit thoughts after a month of using it on a commercial project.
- Ice ZeroC - WCF alternative?
- Sql Server partitioned tables, and the simpler query plans / improvements in 2008.
See the wiki for write up's of previous chats, thanks to all those who attended.
 Wednesday, August 06, 2008
There's a few things going on in Auckland over the next month or so, just to summarize if you haven't been paying attention :) So plenty of things going on! I would suggest signing up for the code camp sooner rather then later if you don't want to miss out - also if you know of any other events that I've left off this list, drop me a comment and I'll add them to it.
Architecture chat tomorrow at 11:30am... I'm going to leave it fairly open for topics so all come along with something interesting to say ;o) ... or leave a comment on this post if you'd like to give me or anyone else a heads up on what you'd like to talk about. Some things I'd personally be interested: - Auckland recruitment environment.
- Must read books for both new and seasoned developers alike.
- Implementing code that can explain itself - for example security mechanisms able to explain (in English) why you do or do not have access, DSL's that give meaningful reasons for the decisions made, and how to flow those messages through the context of operations etc.
All are welcome - drop me an email if you're a new comer and we'll keep an eye out for you! Information regarding the location and previous chat write-ups can be found here.
 Monday, July 28, 2008
This is a writeup for the last 2 architecture chats - both were pretty free-form, with little of the topics mentioned in the posts getting much discussion as we all had own things to talk about! As a brief summary: Plenty of talk about Lightweight code-gen and run-time vs. post-compile IL weaving, debugging integration etc. Hard to cover all the little facets that were explorer - but it's been interesting - it seems like more developers are starting to dabble with IL. We talked about approaches for introducing cross-cutting behavior such as versioning and history to your data access and approaches for flowing metadata from your domain model up to the UI (including searching, validation etc.) and ways to index, query and flow the information across boundaries in the application. As a tangent to this I've been talking about how I've been using MDA/MDG to drive the domain model generation (including things like validation, search annotations etc.). We talked about the recent S3 outages and approaches for placing resources on both European and US data centers simultaneously, and possible ways to mitigate the double-upload bandwidth costs. Discussions (sparked originally from a email discussion on the NZ dotnet user group) around hiding the implementation details of your ORM from the rest of your application - and the practicalities of how deep this needs to go, using linq through boundaries etc. Discussions around injecting logic into generated source code, both in asp.net/winforms generated code as well as possible ways to intercept custom tool generation so you could manipulate the output. Spartan programming got a mention - Peter felt it aligned with alot of his current coding style. Embedding NHaml as a view engine in non-MVC applications, and the general experience with different view engines including Brail, ASP.NET MVC's default ASPX View engine etc. (Including the error reporting and debugging experience) - We also talked briefly about the Spark view engine, which looks to be like it could be quite palatable to non developers while still offering a useful syntax for developers. If anyone has any topic suggestions for next weeks chat just leave a comment on this post or flick me an email.
 Wednesday, July 23, 2008
Sylvia Park Architecture chat tomorrow - 11:30am - all welcome - see the wiki for more details. Some possible topics: Also we didn't cover some of the topics from last time, so I'll recycle them. - Non-paged CLR host - Nno paging during normal operation and no paging will occur when the application is idle.... hmmm... could be useful!
- StyleCop - C# source code analysis for compliance against a set of rules that embody Microsoft's own style conventions.
- Spartan programming
- PSake
- build automation tool without the angle bracket "tax" (bit like rake
or bake (boo make) - but with more similiarity to existing command line
tools).
- Dependency Injection is dead? (A provocatively named article, but really it's just about using compile-time IL-weaving to do lazy loaded DI).
- TypeMock racer
- interesting deadlock finder (still under development) - and probably
a sign of things to come (i.e. array of tooling to verify sound
multi-threaded code).
- AAA style syntax
for Rhino Mocks (Arrange, Act, Assert) - I've been using this for the
past couple of weeks on a project, it really allows for concise easy to
read testing with stubs/mocks.
Look forward to seeing you all there!
 Wednesday, July 09, 2008
Architecture chat tomorrow, some things that have caught my eye lately: - Non-paged CLR host - Nno paging during normal operation and no paging will occur when the application is idle.... hmmm... could be useful!
- StyleCop - C# source code analysis for compliance against a set of rules that embody Microsoft's own style conventions.
- Spartan programming
- PSake - build automation tool without the angle bracket "tax" (bit like rake or bake (boo make) - but with more similiarity to existing command line tools).
- Dependency Injection is dead? (A provocatively named article, but really it's just about using compile-time IL-weaving to do lazy loaded DI).
- TypeMock racer - interesting deadlock finder (still under development) - and probably a sign of things to come (i.e. array of tooling to verify sound multi-threaded code).
- AAA style syntax for Rhino Mocks (Arrange, Act, Assert) - I've been using this for the past couple of weeks on a project, it really allows for concise easy to read testing with stubs/mocks.
If anyone has any topics they'd like to cover just leave a comment on this post (so other's can get a heads up as well). Notes from previous meetings and directions etc. can be found here on my wiki - all are welcome to attend. Also tonight is the Ellerslie .Net user group - A testers perspective's with Hafiz Vegdani, starting at 6pm.
 Monday, July 07, 2008
Reasonable turnout at the last Architecture Chat - appologies about the late write-up! So we talked about a few things last week - on a recurring them of IL generation and weaving we discussed verifying generated assemblies with PEVerify - and how to ensure IL you generate is not invalid and Garreth mentioned some issues with ILDASM crashes when using Mono.Cecil. We talked about the process for wrapping and abstracting functionality and services, and I gave a brief mention to this blog post which provides a slightly more formalized description to this process - Wafagy. The discussion moved onto file/XML persistence and substituting traditional relational databases with alternative persistence mechanisms, especially in the cloud. Static analysis tools were discussed, and thoughts about what (if any) alternatives exist to tools such as NDepend. We talked about the use of "toolkit" style projects such as the Umbrella project or Rhino Commons and the compromise often felt between plucking out only the bits you want (to control the surface area of your project) verses the wish to easily integrate updates and unit tests from the library into your project as they undergo continual improvement. I also talked about hostile templating/transformation languages (such as the template language in Enterprise Architect which I've been using for a recent project) and what features make a domain or templating language "hostile" to being part of your daily process i.e. lack of debugging, lack of comment syntax, poorly identified or completely missed syntax errors, left to right expression evaluation, lack of operator presidence rules etc. I then gave a quick run through how I've been using the MDA and MDG to model a PIM (platform independent model) of the domain, including OCL constraints, and how it's automatically transformed into a platform specific model (Castle ActiveRecord with validation attributes in this case) which is then used to generate code from - and the issues I've encountered so far with the tool. Details of previous chats can be found here on the wiki. The next Architecture chat is this Thursday, all are welcome.
 Wednesday, June 25, 2008
Architecture Chat Tomorrow... Some possible things to talk about: Subversion 1.5 - and it's new merge tracking features. WCF/WF Features in .Net Framework 3.5 SP1 - a blog post caught my eye with things I hadn't noticed before mostly around DataContract Serialization i.e. ability to serialize graphs (not just trees), an attribute-free mode for the serializer and a suite of strongly typed classes to make implementing AtomPub easier (i.e. Workspaces etc.). P/Invoke Interop Assistant - handy little tool, about 5 years too late for me :) Umbrella Project - Interesting project, take a look at Ayendes involved post for an overview. The ExtensionPoint<T> approach for making extensions more discoverable is interesting - something we discussed right back when the first beta's of VS2008 were on the horizon. I'd personally also like to talk about some thoughts people have on the bare minimums for a usable language and domain specific languages in particular - i.e. debugging, native support for comments etc. and some experiences with a rather hostile Model driven architecture transformation language I've had to deal with over the last couple of weeks :) As usual, if anyone has any topics - feel free to leave a comment, send me an email etc. Notes from previous meetings and directions etc. can be found here on my wiki - anybody is welcome to come along.
 Sunday, June 15, 2008
5 people turned up This week. Peter kicked off the discussion with a review of the Agricultural Field days in a disheartening lack of anything IT there, this sparked an interesting discussion around what's holding back adoption of technologies such as RFID's for animal identification and some possible inhibiting factors, like the cost to early adoptors, education etc. After this we returned to more mundane things... first off we Discussed Velocity a bit, comparing it to memcached and some of the interesting features like tagging and the current lack of push functionality in the CTP. Silverlight 2 beta 2 was next... talked about the new visual state manager and designer integration into Expression Blend. I noticed after the chat that Ivan has posted an interesting discussion around why he believes the Visual State Manager isn't a great idea - during the chat we did puzzle a little over why silverlight is diverging from WPF, and just how cross-polination between WPF and Siliverlight will occur. Other things that interested us about the silverlight 2 beta 2 release were Inking & Stylus support (and incidentally second-hand tablet PC's are becoming dirt cheap, so no excuse not to have one lying on your desk!). Multi-tile source, which could prove interesting for providing information generated on the fly or integrated with existing GIS sources etc. Cross-domain support, background thread support for networking and duplex WCF communications - I could see this providing interesting possibilities, i.e. a silverlight control that makes the web client a temporary member of a grid network, perhaps distributed virally as a facebook app. Not to mention the more mundane business applications. After talking silverlight for a while Jamie then mentioned the OAuth library I'd written - so I went through what OAuth is/does vs. OpenID (there seems a bit of confusion in some peoples minds of what each of these projects aims to achieve) and then what's been implemented, and what is yet to come - for more info on the OAuth library check out this wiki page. A rambling discussion sparked off by Peter mentioning IBM having broken the "petaflop barrier" and the gradual approach towards a platform for an accurate simulation of the human brain, I made some references to " I am a strange loop" and everyone talked about the general difficulties with artificial inteligence and the current predictions regarding when computers will have enough horsepower to emulate brain function. Thanks all for coming - see you all in a couple of weeks (Thursday 26th June).
 Wednesday, June 11, 2008
There is an Architecture chat tomorrow, 12th June, 11:30am at Garrisons, Sylvia Park. Some thoughts of possible discussions: I'm also interested in picking peoples brains around Use cases vs User stories and mapping them to test cases etc. Look forward to seeing you all there.
 Thursday, May 29, 2008
Architecture Chat was today... discussions included: - ADO.Net Data Services shortcomings (no COUNT for starters... ).
- Entity Framework usability & the extensibility model (or lack thereof) etc.
- Template Engines / Domain specific languages and debug integration.
- The EyeFI Explore SD Card that packs both Wireless and GPS + 2GB storage into a single package.
- Sql Server Compressed Tables & Indexes.
- Thoughts around having pile-like columns in a database, and avoiding column-level information redundancy (compressed column).
- StringBuilder performance.
- Practical uses for BigTable (and Amazon SimpleDB etc.).
- A lot of developers don't use or even know of the yield operator in C#.
Thanks all for coming and see you in a couple of weeks.
 Wednesday, May 28, 2008
Morning All. I'm presenting on "REST with .Net" tonight at the Ellerslie .Net User Group. More details can be found on the Ellerslie user group site. I'll be (attempting) to cover: I have a touch of the flu - so we might not make it through everything before I loose my voice :) but we'll give it a go... and I'm hoping to keep the REST & WCF section short - seeing as we had Ron Jacobs covering that last Friday at the Auckland connected systems user group. And tomorrow we have the Architecture Chat at 11:30, the last chat was very quiet (just 3 of us, so I didn't bother writing it up) - hopefully this week will be a little more lively - if anyone has any topic suggestions then just send me an email or comment on this post... See you all there!
 Monday, May 05, 2008
Small'ish turn out last Thursday.. but interesting discussions, including: Hiring graduates - and what's more important, raw intellectual horse power or some demonstration of existing skills, the value of a bachelors vs. masters/honors degree... And how you can determine a candidates passion, and desperate lack of talent out there at the moment. Discussed Database migrations - and different strategies for migrating (both data-centric and object-centric) and the missing database-agnostic "ETL" requirement for transforming data during a migration... Database structure problems were discussed, i.e. legacy databases, and the problems they can present when attempting to work/map/scale them. 2D Barcodes also got a mention (i.e. QR Code) - including the Microsoft research project into high capacity color barcodes. The impedance mis-match between Amazon's SimpleDB and SQL Server, and how you can implement SimpleDB constructs in a SQL Database for testing etc. Steganography got a bit of a mention - i.e. encrypting hidden messages into images, and how transformation/cropping tolerant you can make these processes. I mentioned the LinqBridge project - which gives you access to Linq for objects in .Net Framework 2.0 projects. Great for those of us on projects which can't shift to 3.5 just yet for one reason or another. FYI - Beware Resharper 4.0 EAP's though, they have a tendency to get confused by 2.0 Projects with Extension methods, turning your Linq statements in a nested set of Enumerable.Where(... etc. calls. Keith mentioned Pourable computing - which is not something I'd come across before (you can find it briefly discussed in this TED talk by Neil Gershenfeld - part of the CBA @ MIT) We also talked about LiveMesh - including the flaw in Vista (pre SP1) which prevented you from installing the LiveMesh software without UAC enabled... and Peter raised the question "why aren't you using UAC" ... annoying messages was the response - at which point he suggested we just disable them in the registry by setting HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\ConsentPromptBehaviorAdmin
to 0.
And then a recurring topic around source control, file versioning (i.e. never overwriting a file) and how office-wide mesh computing could help.
Thanks all for coming - see you all on the 15th of May.
 Wednesday, April 30, 2008
Architecture chat tomorrow, 1st May, 11:30am at Garrisons, Syliva Park. Last week was a nice general discussion, I wouldn't mind doing something similar again - so I'm pretty topic light at the moment... other then a few general observations from the community. If you have any other topic suggestions just leave a comment on this post. See you all tomorrow!
 Wednesday, April 23, 2008
Good turn-out for the Architecture chat last week... thanks for coming along all (I believe there was 8 of us) What we talked about: Jabber / XMPP got a brief mention – as I’m currently investigating it for some side-projects as a scalable way to interact with a cloud of servers/devices... but nobody else had much interest/experience so we moved on. Silverlight 2.0 beta ‘s - talked briefly about beta 1 and upcoming beta 2 - including Deep Zoom and the NBC Olympics silverlight player which looks to deliver a better experience then TV ever could. We also had an in-depth discussion around the woes of working with/without app-domains and loading and unloading assemblies from either disk or byte arrays into the current app domain, security implications etc. Bunch of points were made, and it was a pretty interesting discussion: - Briefly discussed Cecil – The swiss army knife of IL :)
- PostSharp – which provides an interesting tool set for implementing AOP and other concepts (such as software transactional memory).
- Garbage collection of types.
- .Net Framework 3.5 add-in system (System.AddIn & System.AddIn.Contract) - we also posed the question, can it run without the 3.5 framework installed – a quick reverse engineer and compile via .Net reflector in VS2005 suggests that yes, yes it can work quite well without the rest of the the 3.5 libraries.
- Altering IL at run-time, and the ruby-like concepts of a class is “never done” down to the concept of being able to break apart a routine at runtime and alter the IL, and where JIT’ing fits into the life cycle of IL and Execution.
Automatic unit test generation got a mention – I had a total mind blank and couldn’t remember the name of the product (which we have discussed in the past) – which of course was pex... Sadly still no public beta for us to try yet! Amazon web services – we discussed the dev pay limited beta (takes the pain out of dealing with customers/billing when developing apps for EC2/ S3) – this included discussing the development of applications for the “cloud” and what opportunities exist when leveraging the Amazon services, including the recently added support for persistent local disks to the EC2 platform. Also in relation to EC2 we discussed writing apps for EC2 using C#/Mono - this led to a discussion on the state of Mono, i.e. where it's .Net 3.5 support is at and if/when WPF might be ported to Mono. Thanks for all coming along, the next meeting is slated to be next Thursday, May 1st.
 Monday, April 14, 2008
 Hi All, I'm back from my honeymoon... and so that means it's time to resume the Sylvia Park Architecture Chat. Next one is scheduled for this Thursday, 17th April 2008 at 11:30am at Garrisons. No set topics this week - just an open floor / general catch up - though if anyone has any ideas just leave a comment on this post or send me an email. Look forward to seeing you all there!
 Thursday, February 07, 2008
Hi all... So first off, there's no Architecture Chat today - I'm tied up with prior commitments (due to the short week) so it's going to be held Thursday next week -14th of February, appologies to anyone who was going to attend. As far as possible topics, what about: - All the interesting stuff that came out of Lang.Net (or at least was brought to my attention by that symposium)
- Cosmos - a cute operating system written in C#.
- Charlie Calvert's started posting on the future of C# (4.0).
- Jumbala - another interesting step down the MDA road, this time as an action language for UML state machines... which can actually be compiled.
- .Net Mass Downloader - here's something I was thinking of doing myself, a mass download for all the .Net Framework source code.
- Resharper 4 EAP delayed.
- Lightspeed 1.2 released.
- The rise of WPF vs WinFroms.
- The Auckland dev community are slackers compared to Tauranga.
- Vista SP1 and Windows 2008 RTM.
No doubt there will be plenty more. See everyone next week!
 Monday, February 04, 2008
 So the sun has set on day 1 of the Summer Road Trip 2008 in Auckland - The Presentation was done by JB, Chris and Myself this afternoon - it went very well, people enjoyed the content and the mix of integration, server management, database and development topics really meshed together nicely I thought... There was enough to keep everyone interested, regardless of the hat you wear - and plenty of prizes too - well all love swag right?! Big thanks to our MC Jaqcui, who handled the Intro and Outro and let everyone know about the local Ellerslie & Central Auckland user group's - where I'll be sure to run a few sessions later in the year... and of course Darryl for handling some of the finer details like the venue, lunch, and the dinner afterwards - much appreciated. For all those that came along - first off thanks for coming, obviously without participation in these events they'll just dry up and stop happening - and second don't forgot that there is no time like the present to start picking up these technologies and developing applications with and for them - the products are all but ready, so why can't you be (and not only are they great technologies, they're fun too). The next presentation is in Tauranga - and there are still places left, so sign up here - It's going to be on tomorrow (5th of Feb) at 1:00pm I believe. And finally a short plug ;o)  For anyone that found this presentation interesting and would like to discuss the technical details of things like emerging technologies, general software Architecture, Developer Tools, Running software businesses etc. I also organise the local Sylvia Park Architecture Chat - which is a pretty casual meeting of some very smart people in the .Net Community. We normally get together on a fortnightly basis at Garrisons in Sylvia Park and are always keen to have more people/fresh faces to come along and join in our discussions or even just float some development/architecture questions or problems you might have that the group can help solve - keep an eye on my blog, or the dot.net.nz mailing list for announcements of when we'll next be meeting up :) And all are welcome of course!
 Wednesday, January 23, 2008
The Sylvia Park Architecture Chat is to be held this Thursday, 11:30am at Garrisons in Sylvia Park. I think we are well and truly into the digestion phase after being flooded with so many product drops and previews over the last few months – announcements are low, but the amount of content about taking advantage of what’s finally in our hands is increasing... arguably this is far more interesting/rewarding then actually getting the tech drops in the first place. At any rate, things that have caught my eye this week (not much as you’ll see, I haven't had much opportunity to read blogs over the last few weeks): If anyone has any topic suggestions, either fire me a comment/email or just bring yourself along – all are welcome.
 Tuesday, January 15, 2008
Sorry about the late write-up, been a little busy!
Small turn out, with 5 us in all, including new comer Jamie –
a recent graduate from Auckland University, it was great to talk with someone just entering the industry proper and I think everyone else found it very interesting to hear about what's going on at Auckland Uni.
So first off we discussed adventures with alternative
licensing products – Gareth had a few war stories, and mentioned he’s returned
to using .Net Reactor and got a refund on the previous product he tried out
because it just wasn’t living up to expectations, and had some questionable weak points.
We talked about the C5 Generic Collection Library – though none
of us have attempted to use them in anger, a few people had heard about them
recently because it seems to be doing the podcast/blog rounds, even though the
project first debuted at the start of 2006, and was in development well before
then.
The classes were developed at the IT University in
Copenhagen, and feature a large number of specialised collections, as well as
introducing features to provide event handlers and sliding views, support for
clearing collection ranges etc. There is a recent video on MSDN Channel 9, which is worth a watch as well.
Because we didn’t have it in our hands last year before I
wrapped up the Architecture Chat I discussed the ASP.Net Web Extensions CTP,
mentioning the amount of community interest in MVC and that the Data Services
(Astoria) is looking better and better.
From there we talked about the MVC Contrib. project (and
community) that’s sprung up after the ASP.Net MVC release, which is getting
some New Zealander's attention around the world because of their contributions
of both an XSLT View engine and NHaml View engine – the contrib project is also
providing integration with the popular IoC containers in .Net and a number of
other extensions.
I talked about F# parsing, and my explorations of writing parsers
in F#, especially after reading the series of posts from DevHawk (Harry Pierson), and experimenting
with writing DSL’s in F# by hand. I think my next "goal" is to master integrating F# libraries into my C# code, so I can commercialize on it and start weaving it into my day to day tool set.
I’m not sure I
articulated how elegant F# syntax can be - but hand writing custom parsers in F# with the aid of Active Patterns is much
nicer then the equivalent in a language like C#, If you’re following the
pragmatic programmer guidelines of learning a language a year, you could do
much worse than to learn F# for 2008, it certainly gives the brain a good workout :)
From their I mentioned PEX for use in automated white box
testing – Jamie said he had worked on a 4th year project to do automated
black box testing, and found it interesting that white box testing of this
nature could be made viable/useful... PEX seems to have done it though.
Though it’s not been made available to the general public as
yet (only academia) – I suggest having a listen to this hanselminutes podcast, and then watching
this screencast to get a better idea of just what PEX is doing/aiming to
achieve... I find the support for mocking
particularly interesting, as I’m always sceptical of automated test generation,
as it normally falls apart once you start to work objects when have numerous injected dependencies that are used by the class to do it's work.
Last of all I mentioned TeamCity (JetBrains CI & Build server) Professional Edition is
free, and I’ve been starting to play with it - and considering migrating over
from my current CruiseControl.Net setup for new projects, I’m going to trial it
on a small project and see if it’s worth moving to for what I do.
Last of all – though I forgot to mention it at the time - I’ve
also been looking at Jazz (or more so Rational Team Concert)
lately, it certainly looks to resolve many of the headaches I suffer with
managing concurrent versions of products, especially from the build server
perspective – obviously anything with the name “Rational” is to be feared by
the small or micro ISV because of prohibitive costs – but it’s nice to see just how they approach solving
the problem, as shown in the video "fixing a bug in a previous release".
Not a bad start to the year, hopefully we can make the next one
bigger and better, and maybe get some more long-running architectural discussions going on ... maybe around Behavior Driven Development/Design or maybe Feature Driven Development and what makes it more suitable for fixed-price jobs.
See you all next time!
 Tuesday, January 08, 2008
So, the Sylvia Park Architecture Chat is back for 2008 – To be held this Thursday, 11:30am at Garrisons in Sylvia Park. Some possible topics for discussion are listed below, though feel free to suggest additional topics either via a comment on this post or email - I haven't been keeping much of an eye on technology over the xmas break. - ASP.Net Web Extensions CTP Preview Was Released, including MVC, Dynamic Data Support (scaffolding *yawn*), Silverlight extensions & Data Services (Astoria).
- MvcContrib project sparked off – adding NVelocity, NHaml (developed by Andrew Peters) and Xslt (Developed by Ivan Porto Carrero) view engines to the ASP.Net MVC project as well as providing integration with a select number of IoC containers and other improvements to make the ASP.Net MVC CTP easier to work with i.e. convention over configuration.
- The Castle Refactor – Monorail is getting an overhaul in the Castle Project, and they are in the process of moving to the NHibernate (2.0) Trunk as well. Hopefully it will make my guide to running with the “trunks” largely obsolete.
- Parallel FX CTP – We didn’t talk about this last time, might be worth giving it a look.
- Practical F# Parsing – I mentioned a little bit about parsing with F# at the last Architecture, and this series I've been watching with interest as it's covered off implementing a PEG parser with F# -writing Parsers with F# is pretty slick compared to object oriented languages.
- Internet Explorer 8 announcements.
- Rod Drury – For anyone involved in a startup from day one I’m sure we can give these series of posts (1,2 & 3 of 6 so far) a definite head nod (or a long drawn out sigh for guidance arriving to late ;o)
See you all there!
 Thursday, December 06, 2007
So plenty of subjects today, though a small’ish turn-out, kinda goes with the time of year, and is probably also related to the bar camp Agile down in Wellington tomorrow, which I know at least one of the regulars is heading to. Code protection and obfuscation was floated by Garreth – sparked off by his need to find a new code protection production, as the product he currently uses doesn’t appear to be under development any longer ( .Net Reactor I believe was the product). In fact, it’s worse than that – he suspects that the Author may have had an accident or something similar, because the releases stopped a few months back and the Author is no longer replying to questions or queries on the forum, but prior to that was a very active individual - He can’t even be contacted by cell phone. Incidentally if anyone reading this knows of the Author or his fate personally, we'd love to find out more. Right - so deploying key logic on web-services and some of the alternative licensing products having a requirement of a windows service being installed alongside the product got discussed, with the good and the bad points - it was interesting to see that most of us didn't mind having a windows service installed on our machine to license the product, as long as it was well behaved and made it abunduntly clear that this was being done by the product, and was named/described well (so you knew just what it was) - Garreth just wanted to confirm this with some fellow developers because he's looking into a range of products including PRO-Tector from Nalpeiron that uses this approach, and was worried he might get too much "kick back" from his target customers (i.e. other developers). From there we moved onto obfuscation products – we’ve talked about these before, including Dofuscator and SmartAssembly which came highly recommended from Andrew @ Mindscape. All of this rounded up with a discussion around “should you even bother obfuscating” and the rationale behind Microsoft obfuscating key portions of their technologies such as SharePoint or Dynamics CRM (i.e. not just protecting IP, but perhaps protecting volatile and undocumented behaviour which you might leverage or rely on which could be broken easily between service packs for even the same version of the product). Garreth also recommended Kagi that none of us had heard of – which is a great e-commerce solutions/services provider that goes above and beyond using alternatives like Paypal or local credit card merchants, key differentiating points he made were: • It takes care of varying Tax legislation etc. so you don’t personally need to think about collecting VAT etc. - because they act as a "reseller' for your product. • Supports non-electronic processing i.e. Cheques, purchase orders, direct debit etc. • Entirely customizable UI, can be entirely gutted and made to look like your own site. • It understands selling Software and digital content, and provides call backs so you can integrate custom license generation etc. Within the payment site and provisioning workflow. It could be just the ticket if your thinking of selling some software and don’t want to completely roll your own solution. Next I ran quickly through the various product announcements etc. over the last 3 weeks - We pretty much bypassed everything and headed straight to Silverlight 2.0 and Volta (VS2008 is old news already, though the Isolated VS2008 Shell got a mention, however most were shocked at the size of the redistributable component – 315MB – that’s a big ask if you want to leverage it for a simple product/project). I was also hoping to get back to talking about the ParalellFX CTP which I’ve also been playing around with – but never got the opportunity. So Volta has featured in previous discussions – some of us didn’t even imagine it would see the light of day – yet we now have a preview in our hot little hands which can be played with – I took it for a test drive this morning, and miraculously it works!? With naught but an attribute I was happily able to move code between my client script and server... We discussed the implications of this, the intended audience (It looks very appealing to existing win forms developers who have resisted until now from engaging a web platform, because it feels very "familiar"). I’m quite keen to take an existing windows forms application and see how easily I can move from thick client to web client/server using this approach i.e. just how much of the existing code base, event driven structure etc. can be maintained – even in its current state I think it could do a pretty good job of converting some winforms apps I've built in the past, short of re-implementing complex visual controls. Things I've still yet to try: - Unit testing with NUnit (can't see why it wouldn't work though)
- Introducing additional tiers i.e. tier splitting between an application server, webservice and client script (not sure this works when using Visual Studio at the moment - the release notes suggest "no", so will probably require some spelunking and command line compilation at this stage.
We talked about Silverlight 2.0, its release date (probably near the end of Q1 2008) - and just what ships and what doesn’t i.e. is there a compiler and does it live on the server, extensible control model, 2-way data binding etc. Certainly Silverlight 2.0 is looking very comprehensive, and the Silverlight team look to have been/are very busy (I wonder how on track the Moonlight team are, considering the surface area of things to develop has grown somewhat from the original 1.1 scope). Next we talked about DSL’s ... what makes a DSL... the stages of DSL’ness from the “barely there” Fluent interface, through to varying grades of internal DSL and finally a custom language which requires parsing into a syntax tree (which F# is great for I think) and being consumed by your application, or a Visually depicted DSL, ah-la Microsofts DSL SDK for VS.Net. In the same conversation we also talked about operator overloading, making things explicit, avoiding operators all together (i.e. “A == B” is far less meaningful in relation to a domain specific language then "A.Equals(B)" or even better “A equals B” – i.e. being terse may prevent your DSL from being explicit enough to be read by the people who best understand the domain language and the concepts it's modeling to begin with. We also talked about the things which make a internal DSL work well with languages like Boo i.e. the ability to drop braces, and whitespace awareness (which I hated, but I’m gravitating back towards liking it once more in the right context, because a couple of spaces is a lot nicer to read then opening/closing braces and associated visual noise - and it’s easier to show the raw code to clients when discussing problems because it’s less confusing). Along the same line we talked about operator overloading conventions and on a side note Peter gave Algol a mention for having such wonderful (!) set of operators and needing a special keyboard or a memory for keystroke combos ;o) ¬, ?, ?, ?, ?, ×, ÷, ÷×, ÷*, %×, ?, ×:=, ÷:=, ÷×:=, ÷*:=, %×:=, ~ ?, ?,÷::=,:?:, :,::, ::=... He also mentioned Postscript, though I don’t know much about its operators etc. and didn’t really feel like digging up some samples from the red book. Incidentally F# lets you define new operators:
let ( <:-> ) a b = string.Format("{0} is happy about {1}", a, b)
let ( <%=> ) a b = string.Format("{0} is confused by {1}", a, b)
let m = "mort" <:-> "user defined operators"
let n = "but mort" <%=> "his own code"
let result = Console.WriteLine("{0}, {1}", m, n)
Which of course displays: mort is happy about user defined operators, but mort is confused by his own code.From there we branched into discussing multi-language projects – i.e. why do we need to have separate languages in separate assemblies... a lot of us fondly remember the old days of in-line assembler, and would like opportunities to use a language like F#, Boo or one of the DLR based languages in-line within a C# or VB.Net project – i.e. within the bounds of a function/method... I see F# pattern matching as a great example of where this would be really handy – same goes for embedding your own DSL’s in-line, or even leveraging a few lines of concise ruby code to do some string manipulation. I suggested a compiler model much like Boo’s would work well in allowing this to happen – though there are issues with just how you compile it, approach merging the separate chunks of IL etc. and cross-referencing. PDF file parsing got discussed - there is a binary and text based standard (which is largely human readable) – Peter suggested that ABC PDF is very good at pulling apart PDF documents for information extraction in the Enterprise edition, and also supports CMYK colour, useful if you’re working with professional printers. Because there isn't much metadata stored in many cases, you often have to rely on specific style information to identify key bits of content. We then had a talk about model driven architecture, and in particular, integrating UML models, code and business related information such as device and install inventories, and product life cycle information - we're finally starting to see some traction in New Zealand in this space, and it's ushering in the rise of the true " Enterprise Architect", with people becoming more aware of frameworks for Enterprise Architecture such as Zachman, TOGAF etc. and realizing the true value of driving from an ultimate and largely strategic high-level organizational model of past, present and future systems (including when certain systems are going to be retired), all the way down to individual applications, business processes, use cases, test scripts/runs, classes, unit tests, machine inventories and even live application data that can be used to be make decisions... even as a develop this has real value, i.e. integrating with a system you could identify how many systems integrate with it, when it's due to retired/replaced/upgraded, maybe how many transactions it's processing, or how often it refreshes itself with key business data from other parts of the organization. I saw a nice example of this just last week at the EA Symposium presented by IAG. It's definitely a subject I'd like to visit again in the future, and perhaps we can get one of the NZ experts in this field to come and participate such as Lukas Svodba (who also runs the arcast.co.nz site) - this also ties in with MDA and MDG, The later of which I'm still having difficulty reconciling with a largely agile test driven development process. Also on that note I mentioned the JetBrains meta programming system and wondered if it will ever reach a v1 status, I had high hopes for it a couple of years ago. It doesn’t seem to have had much activity associated with it over the last couple of years (I almost wonder if it was largely an Idea which was well before it’s time for a lot of the .Net community, that are only now starting to appreciate DSL’s and considering working/developing at a |