Software Development Meme

Looks like I've been

- so here goes.

How old were you when you first started programming?

Apple II e when I was like 7, Vic20 when I was like 8... but
really my start was about 10 with GW-Basic on a 286 AT 16mhz.

How did you get started in programming?

I was interested in programming from about age 6 or 7.. though
I think I was 12 when I taught myselfTurbo C++ (And the object
oriented concepts that went with it) - so I've spent over half my
life in object oriented languages - not sure if that's good or

I owe my parents a large amount of gratitude as they recognized my
interests early on, and though we had little money they spent a lot
trying to encourage my interests (computers were not so cheap in
the 80's).

What was your first language?

Basic on the Apple II e and Vic20 - but really I think it
wasn't until GW-Basic in Dos4 (and later quick basic) that I became
fluent at writing programs and starting to break problems out into
a series of functions. After basic came C++ (and in-line
assembler), Tcl/Tk and Visual Basic 3 or 4 - then once I started
tertiary study I added Pascal, Delphi, Jade, bash, java and perl to
the list.

What was the first real program you wrote?

A "real" program ... I'm going to take "real" as something
commercial with "users" ... hmm.. I had a part-time job when I was
like 14 helping to add functionality to a C based DOS accounting
system used around New Zealand - That'd be the first "real" program
I added code to.  Around 17 I started writing a lot of code
for open source projects [same time I started studying at Unitec]
(I think all the projects are dead and gone now) and had a keen
interest in writing libraries for game development prior to the
advent of hardware accelerated 3D, later transferring that interest
to OpenGL once Voodoo and NVidia hardware started getting

What languages have you used since you started programming?

Basic (at least 4 or 5 variants), C, C++, Tcl/tk, Bash,
Pascal, Jade, Java, JavaScript, Python, Ruby, ASP, T-SQL, Visual
Basic 3 and above, VB.Net, F#, VBA, Lisp, Perl, Boo and a few
others - though C# has been my language of choice since the early
beta's of the .Net Framework v1.

What was your first professional programming gig?

I think probably working as a Junior at Terabyte Interactive (when they
were based in Newmarket) on a rowing machine C++/OpenGl
visualization app (the infamous RowPro project).

If you knew then what you know now, would you have started

Without a doubt - I was passionate about it when I was 8...
I'm still passionate about it after 20 years. It scratches 2 itches
I've had my entire life, a need to create and a need to
debate/discuss/analyze problems/challenges.

If there is one thing you learned along the way that you would tell
new developers, what would it be?

Learn to learn, and if you don't like learning find a new
profession.  I almost feel like learning is my job, and
developing solutions is a side-effect of trying to achieve my
primary objective of learning.

What's the most fun you've ever had ... programming?

Hmm... I couldn't pick any one project - most fun
environment-wise would be my early days a Terabyte, it had a
wonderful dot-com feel, and we didn't have much work on (at times),
so we got to pursue our own pet projects and take long team
breakfasts in the local cafe - A fun environment, albeit a doomed

Probably since then I would say the "Syzmk Rich Media Processor" -
an application which had a wonderful variety of requirements and an
interesting suite of technologies (it was developed with early
releases of the Castle project and betas of the .Net Framework 2.0)
and was one of the first projects I approached in a TDD

Who's next?

Read More

2008-07-08 - Architecture Chat Tomorrow

Architecture chat tomorrow, some things that have caught my eye lately:

  • Non-paged CLR host - Non 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.

Read More

Architecture Chat #29

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

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.

Read More

Castle Visual Studio Integration 0.3 released

Jonathon Rossi over in
Brisbane has been hard at work on the CVSI project (Castle
Visual Studio Integration) and has released
version 0.3
which now supports VS 2008 - for those not in the
know CVSI provides nvelocity intellisense when writing views for

I did some testing of some earlier releases last week and it's
looking good, hilights include:

  • New installer which supports 2005 and 2008.
  • Basic XHTML intelisense.

It also includes some fixes which means the intelisense now
works when the templates are not in a web application project
(useful for those of us writing applications where we have
pluggable modules) and fixes for multi-level inheritence, so
helpers and view components with multiple levels of base class i.e.
FormHelper (which now inherits from AbstractFormRelatedHelper) will
be included in the list of classes, something which bugged me with
earlier releases on 2005.

Great work Jono!
Read More

2008-06-24 - Architecture Chat Tomorrow

Architecture Chat Tomorrow... Some possible things to talk

Subversion 1.5 - and it's new
merge tracking

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 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
on my wiki - anybody is welcome to come along.

Read More