Architecture Chat #25

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_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem onsentPromptBehaviorAdmin 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.

Read More

2008-04-29 - Architecture Chat Tomorrow

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.

  • LiveMesh - lots of talk about this over the last couple of weeks.
  • xUnit 1.0 now available.
  • New Drop of Spec# available.
  • Migrations frameworks - plenty to choose from now, including Migrator.NetRikMigrationsMachine.Migrations [src] and Twining (though more of a general toolkit than a migrations framework)... probably missed a few others as well.


If you have any other topic suggestions just leave a comment on this post.

See you all tomorrow!

Read More

Architecture Chat #24

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.

Read More

Upcoming Sylvia Park Architecture Chat

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!

Read More

IronPython & NUnit - Updated For NUnit 2.4

Someone recently sent me an email letting me know my NUnit "support" for IronPython project only targeted NUnit 2.2 and was a little out of date.

(For those not sure what I'm talking about - perhaps take a look back at these posts (12) from October of 2006)

I didn't realise anyone was actually using it - but I see it's being linked too from the IronPython cookbook, so I decided to take half an hour and update it to target NUnit 2.4 - I left it targeting IronPython 1.1 however instead of 2.0 (IronPython users should be able to handle that task if required).

The usage changes a little from NUnit 2.2 to 2.4, instead of deriving your tests from a custom TestSuite class you now just annotate an empty class with some attributes... makes everything a little cleaner as your project doesn't need to reference IronPython etc. any more.

[PythonSuite, Script(FileName = "MyPythonFixture.py")] public class MyPythonSuite { }

The python files are embedded resources by default (though it's a minor code change to support external python files as well) - you can include multiple Script attributes for a single suite as well, if required.

If you want to dynamically include python resource files based on their content i.e. all embedded resources with a first line containing "#test" then you would do this:

[PythonSuite(DiscoverEmbeddedResources = true, DiscoveryKey = "#test")] public class DynamicPythonSuite { }

The project is now split into two assemblies.
  • IronPythonTest.Addin
  • IronPythonTest.Framework


The Addin assembly needs to be installed into your NUnit 2.4 add-ins directory i.e. C:Program Files (x86)TestDriven.NET 2.0NUnit2.4addins - you will need to place the IronPython assemblies in there as well if they're not registered in the
GAC.

Only the framework assembly needs to be referenced in your project so you can have access to the PythonSuite and Script attributes.

And that's about it, all other questions should be answered in the posts from 2006, or just leave a comment on this post if you have any trouble.

Code can be downloaded from here.

Read More