# Thursday, May 22, 2008
Denis Mierzwiak
posted @ Thursday, May 22, 2008 3:24:09 PM (New Zealand Standard Time, UTC+12:00)    Comments [0] | |
# 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!

posted @ Tuesday, January 15, 2008 8:50:00 AM (New Zealand Daylight Time, UTC+13:00)    Comments [0] | |
# Wednesday, January 09, 2008
Update: 22nd May 2008 - Please if you have any .Net reactor related queries, post them to this google group, rather then emailing me directly, as you're more likely to get a response.  Cheers!

If you recall in the last Architecture Chat (#21) Gareth of Slyce Software mentioned the demise of .Net Reactor, a German code obfuscation product that many users swear by.. but over the past 2 or so months it went completely dark as the company ceased responding to any correspondence, or making releases - where as prior they were almost phenomenally fast to get back to queries, and we releasing every couple of weeks.

Well I got an interesting email from a .Net Reactor user who has been suffering the same issues, not having a response out the company in the last couple of months but he did advise that releases are starting to flow out the company again, with 3 new versions released in December... so things could be looking up, even if the wall of silence continues.

Apparently it got so bad that even some add-on vendors have withdrawn in-prorgess products due to a lack of communication with Eziriz - what I find interesting here is how quickly all the good work you can do building up a community around a product for developers can unwind - and demonstrates how important a visible "heartbeat" for a product is to keeping trust in your project - be it through regular releases, actively participating in forums and mailing lists or at the very least publishing the odd bit of news on your site.

Fingers crossed the company starts answering peoples emails again at any rate - it'd be a shame to see a popular product's community turn their back on it just because their worried it's going to dissappear completely.

Right, so yes, there is a point to this post - assuming the worst and .Net Reactor is winding down, can anyone else recommend an obfuscation/licensing products in the sub 300 US$ range that works well?

Edit:

Shortly after posting this I was notified that Apparently everything is good once more in .Net Reactor land with the lead developer having been taken away from development due to other life issues taking over in the later part of last year, but he's back and developing/communicating once more so it should be "business as usual".

I look forward to seeing what cool things Eziriz get up to in 2008!

Edit (Again):

And shortly after that I also got an email, so everything is definitely fine once more with .Net Reactor:
Dear Mr. Henderson, I am sorry for the problems you had with my product support. Gareth Hayter referred me to your blog. Please be sure, .NET Reactor product development/support is firing on all cylinders again.

Best regards,

Denis Mierzwiak, Chief Technical Officer.
posted @ Wednesday, January 09, 2008 7:17:54 PM (New Zealand Daylight Time, UTC+13:00)    Comments [2] | |
# 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 higher level of abstraction – or lower level if you look at it from the perspective of the problem your trying to solve i.e. closer the metal of the problem domain itself).

We pretty much wrapped it up there, so that’s year 1 of the Architecture Chats brought to a close (we decided against one more for this year, because of the holidays and not to mention our venue being overrun with rampant shoppers, probably removing any chance of finding a park or hearing ourselves think!)

Big thanks to Alex James (Meta me) for getting this chat off the ground, and thanks to all the regulars who come along every fortnight – you’ve all helped to make the Architecture chat one of the most successful and interesting recurring events I’ve had the pleasure of attending/participating in – and it’s been great to have been able to swap ideas and information over the last year.

Have a merry Xmas and a happy new year one and all!

posted @ Thursday, December 06, 2007 3:14:25 PM (New Zealand Daylight Time, UTC+13:00)    Comments [0] | |
Search
FeedCount

Tags...
.Net (83) .Net Reactor (4) .net user groups (9) 2008SummerRoadTrip (1) ActiveRecord (1) architecture (1) architecture chat (95) ArchitectureCamp2007 (2) asp.net (1) Astoria (1) Auckland (1) base4 (9) batching (1) binsor (1) blog (4) boo (1) books (1) C# 3.0 (9) cambodia (9) CAML.Net (1) castle (40) china (8) codecamp (3) codeplex (3) dapper.net (1) DevDefined Ltd. (4) DirectShow.Net (1) DLR (1) DSL (4) EAUG (1) Enterprise Architect (5) Enterprise Architecture (1) Enterprise Library (1) F# (1) feedburner (2) first post (1) Friendster (1) generics (1) googlegears (1) hacks (3) hardware (3) hongkong (2) Horn (1) hyper-v (1) ideas (1) IoC (21) IronPython (13) IronRuby (2) jobs (1) Languages (2) laos (8) LINQ (7) LiveId (1) LLU (1) Local Government (1) MDA (1) MDD (1) microsoft (1) Model Driven Development (1) mono (1) monorail (2) Movies (1) Music (1) nDepend (1) news (1) NHibernate (3) NUnit (2) nvelocity (1) OAuth (6) office (1) OpenSocial (1) orcon (1) photos (1) php (1) PostSharp (1) powerpoint (1) presentations (1) ReSharper (1) REST (2) rhino commons (3) rhinomocks (5) Ruby (1) SaaS (1) scm (1) Screen Architect (0) SharePoint (5) silverlight (1) Splicer (4) SQL2008 (1) supcom (1) survey (1) svn (1) Syzmk (4) thailand (6) Tools (2) Tortoise SVN (1) trac (2) Travel (36) Unity (2) vietnam (7) vista (2) visual nhibernate (1) vmware (1) volta (3) VS2008 (1) WCF (3) wiki (2) wikipedia (1) Windows Server 2008 (1) windsor (6) WinForms (1) wix (2) WPF (2) xmlrpc (1) yahoo pipes (1)
Who am I?
Alex Henderson
Alex Henderson
Auckland, New Zealand
Managing Director at Dev|Defined Limited

"Self Confessed Coding Junky for 15 years"
View Alex Henderson's profile on LinkedIn
 
Mobile: +64-21-402-969
Email: bittercoder 'at' gmail 'dot' com
MSN: bittercoder_nz@hotmail
Skype: alex.devdefined
Navigation