Category Archives: Developer Events

DDD2 is over…

DeveloperDeveloperDeveloper is over, I must say that this was the busiest event I’ve played a part in organising (both from the sheer number of attendees and the number of tracks!) It took me until Sunday morning to relax (I did however, enjoy the euphoria of the event and the post-event drinks!)

Please visit http://www.developerday.co.uk/feedback2.asp and let us know what you thought of the sessions, the organisation, anything in fact…we’ll listen and act upon it. If you thought something sucked (like that pratt who dropped a can of Dr.Pepper at the back of Dinus’ session, for example…I’m sorry, btw!), tell us: we will do something about it for next time. And if something went well, we’d like to hear about that too.

We had 320 attendees, 30 sessions spread over 5 tracks. Only one session had to be swapped out due to speaker illness; a further two sessions were swapped to allow a delayed speaker time to arrive.

After the success of the first DDD day and now the success and overwhelming attendance figures at the second DDD day, if you liked what you saw and would like to be a part of the next one (likely to be Q2 2006), get in touch. We’ll happily take suggestions for topics, offers of sessions, and any other support – you’ll find my e-mail address available here: http://www.craigmurphy.com

Anyway, here are a few of my photographs of the event, more to follow: (let me know if you’d like full size copies)

ddd
The view from the stairs: lots of attendees, lots of q’n’a

ddd
Anton did a good job stepping in at the last minute (thanks Anton!)

ddd
Brian and Guy – the food must have been good!

ddd
Remember to thank the catering staff at events!

ddd
ddd
ddd
Daniel (aka lennybacon) and Amy – there’s sparkle between them…of the camera flash!

ddd
Melita and Jonathan – without whom, there would be no DDD venue or web-site: much thanks are due! Melita also organised the rather cool DDD polo shirts sported by organisers and speakers!

ddd
Melita and Sarah

ddd
ddd

ddd
DDD rocks! The youngsters (Iron Maiden were not on the agenda! May be next time?)

Microsoft’s product launch event…free products…INETA mirroring

Are you ready for the launch event of 2005?

rock

Click here to register for a launch event near you – London events are filling up fast, hence the second London day.

Attend one of the launch events and I am reliably informed that you’ll receive full copies of VS2005 Pro and SQL Server 2005 Standard – can’t be bad!

If you are unable to register or simply can’t make it on those days, fear not: your local INETA group is likely to be mirroring some of the launch material (albeit through November, December, etc.)

Don’t know what your local INETA user group is called? There’s a list here.

I’ll be attending Edinburgh on December 7th.

ScottishDevelopers – October 27, Edinburgh, Plumbing with Spring

Plumbing with Spring explores the philosophy and practice of the Dependency Injection design pattern (also known as Inversion of Control), a strategy for meeting the service and configuration requirements of components which can vastly simplify the job of testing assemblies and knitting an application together. Although there are a number of other frameworks available that support this approach, I’ll be looking specifically at Spring, a low-overhead open-source solution available for both Java and .NET. The session will consist of approximately 30% chat and 70% code examples.

Douglas Lindsay is currently working for JPMorganChase in Glasgow, designing and building large-scale systems with Java and Oracle. Previously, he has developed software for a number of companies, including The Solution Works who offer quality bespoke software development services; and the National Engineering Laboratories whose main focus is on research for the oil and gas sector. Besides Java, Douglas has experience with Delphi and C#, and has a number of years’ experience in both desktop and web application development.

Venue: Edinburgh (five minutes walk out of town from Haymarket railway station)

Start time: 1930

Registration and further information can be found here (free’n’quick registration required).

DeveloperDeveloperDeveloper 2

I’m pleased to report that after no marketing whatsoever (apart from blogging and word of mouth), registrations for DDD2 have exceeded 400. They actually exceeded 400 a few weeks ago, it’s only now that I’m getting around to blogging about it!

So, if you’ve registered to attend DDD2 (on October 22nd, Saturday) and now you’ve found something better to do (shame on you!) can you please let us know so that we can allocate your place to one of the 55 folks on the waiting list.

Here’s how you can let us know that you can’t make it:

Via msevents.

Or via ‘phone 0870 166 6680 and quote 1886.

Thanks in advance!

Scottish Developers – eXtreme.NET

Dr.Neil Roodyn came to a sunny Edinburgh to talk to Scottish Developers about eXtreme.NET. Dr.Neil was presenting at a half-day mini-conference; the other session was by Christian Weyer whose slides are available here.

curse
Christian curses that Java compiler!

As the other speaker noted, Dr. Neil spent some 2 hours and 15 minutes talking about writing code…without actually writing any code at all. But that was the intention, and it made for a thoroughly excellent presentation. And it was nearly a full-house, there were only a handful of empty seats.

crowd shot
Nearly a full house!

Dr.Neil kicked off the session with a look at XP’s four values: Communication, Simplicity, Feedback and Courage. He went on to note that respect starts at the top [of the management tree] and goes all the way down to the developers/workers and the customer. Respect is lost when the project manager/client asks developers to do something in an unreasonable time-frame.

The first of many quotes:

Anybody, including a lone developer, is part of a team if they are working on software for a client.

When comparing the traditional cost of change curve for a software project, Dr.Neil makes a potentially emotive statement:

As a system grows, it should not be exponentially costly to make changes.

In other words, the cost of change curve shouldn’t be a curve at all, it should be a straight line that very gradually rises over the course of the project (image to follow)

Audience Poll
Dr.Neil’s quick poll of the audience revealed an interesting statistic. Two questions were asked: 1) who knows .net? and 2) who uses .net? More hands went up for question 2 than did for question 1. I suppose nobody wants to be seen as “knowing .net”, “in its entirety?” Perhaps for fear that Dr.Neil was going to pick on whoever claimed to “know all of .net”…fear not, this would not have been the case, it was merely a poll.

.net, call it what you want, a technology, a platform, a framework, Dr.Neil simply describes it as “cool”, and rightly so. He is using it to help him and his customers deliver high quality business-focused systems within a short delivery time-frame. Dr.Neil knows of a customer with some 85,000 [NUnit] tests, with a 5-day bug fix period and no bug-tracking database (more about this in a moment). The said customer operates on the premise that [the XP] values come first, they throw away anything that degrades those values.

Thinking out of focus
When a new project comes along, the thought process often looks like this:

  • Choose the Technology and the toys (e.g. .net, web services)
  • Choose the Process, Practices and Methodologies
  • Choose the People

This is, in fact, the wrong way around. We should choose the people first, then the process, then the technology. We should drop the heavy focus on writing masses of project documentations (consider the value it adds). Dr.Neil made good use of a car dealer analogy to get this point over: when buying a new car, the deal says to you “the car’s not ready yet, but here’s the manual.” You’d far rather he said: “the car is ready, but the manual needs some work…it’ll be ready next week.” Instead, the focus should be on “better product, better code”. It should be easy to install (this is the first point at which the user experiences your software, make it an easy and memorable one!), it should have features and functions the users wants and needs, it should ship with the most business value , it should have high quality (i.e. repeatedly works) and it should be upgradeable (i.e. we can add features after the fact, at low cost and with ease).

Bugs reproduce – throw away your bug-tracking database
Bugs that live in a bug-tracking database simply attract more bugs – if you have a database/place to put bugs, every developer will start populating the database with bugs they have found; even the customer will get involved. Bug-tracking databases are simply repositories where folks will “submit’n’forget”, i.e. once a bug’s in the database, it is unlikely to see much resolution activity…

Typically our bug databases see bugs being prioritised in some way. Unfortunately, most developers (myself included at times) procrastinate – as such, we find ourselves taking the easy lower priority items out of the bug-tracking database and we fix those. Lower priority items tend to be lower in business value…even if you take a handful of them together, their value isn’t a much as a single high priority item. Hence Dr.Neil suggests that we dispense with a bug-tracking database and simply fix bugs as they are found, i.e. we have no known bugs in our software.

Mentioned of “broken window syndrome” was made – one broken window attracts another: the only solution is to not have broken windows, i.e. keep things in good condition. Replace “broken window” with bug, and “keep things in good condition” with “fix bugs as they are found” and you’ll see where this is going!

Why do software projects fail?
65-85% of software projects fail. Granted, fail is perhaps extreme, but take it to mean any number of things including: fail, crash, bug-ridden, under-used, fully-featured where 80% of the features aren’t used, and so on… In contrast to the aircraft industry, where failures do exist but are trapped and handled much better, the software industry seems to accept that it produces stuff that fails. Why is this?

A quick audience poll and subsequent discussion resulted in the following answers:

  • politics
  • pitch/price low just to get the job (the value comes via requests for change…expensive changes too)
  • someone else’s budget (not my problem)
  • choice of language
  • choice of technology
  • the decision to use complex patterns (that we don’t actually need)
  • the decision to use specific practices (that are outdated or are not suitable for this project)
  • we make our software more complex that it needs to be (to make “us” look smart and/or to justify high salaries). We do make our software more complex than it need be, citing excuses like “it’ll save us time later if we do…”. Project complexity is seen as a get out clause, a get out of jail card: “it was a tough project, no wonder it failed”. I have refrained from using such language on this blog so far, but get out of jail cards are another form of arse covering – such things should not be tolerated on a project. Although, quite where the high salaries are…I might need to do some more research…

Kent Beck: “Comments in code means you’re not finished.”

Principles
Dr.Neil went on to explain some principles that help create great software (and bring projects in on time!):

  • rapid feedback.
  • assume simplicity. Aim for a “task time” of about 30 minutes (avg), this may mean some items that are 5 minutes, others that are 30 minutes. Note that estimate accuracy increases as task time reduces. Try and achieve a project with >90% of it being small tasks and <10% large tasks that require more effort. The small tasks will provide the sense of achievement and the endorphins that developers long for.
  • incremental changes. Big changes don’t work, there is too much disruption and they are typically too hard to understand (even by those so-called high-salaried folkes!)
  • quality. There are only two choices: excellent and outstanding.
  • teach learning. Learnt something new? Spend 20 minutes teaching it to your co-workers via a “nugget”, a webcast or a blogcast.
  • small initial investment. Put a little bit in, get a lot out. Don’t work long hours, don’t work harder rather than smarter.
  • play to win. Build yourself a track record of winning, ship software frequently.
  • experiment. Use XP’s spikes for what they are good at: if you can’t estimate a task, perform a spike. Limit your spikes to 4 hours.
  • honesty & openness.
  • go with instincts. We should learn from this – developers who have been on many projects in the past bring with them a lot of good experience – typically they’ll be the first to say “that’ll never work” or “we need 12 weeks, not 6 weeks”. Listen to them. They know their stuff, don’t insult them by offering them 6 weeks, you’ll just lose any respect that you had from them if you do.
  • shared responsibilities.
  • adaptability.
  • leave baggage behind.
  • realistic measurements.

The Team(s) must be aligned, it’s the only way to move the project through to completion. Dr. Neil Roodyn, Edinburgh, July 21st 2005

Another quote that just makes perfect sense:

a piece of functionality is not complete unless it is being used by a customer

Four key stages
We noted that there were four stages involved in delivering a great piece of software:

  1. Coding. Without code, there is no program
  2. Testing. Without test results, you know nothing “trust nothing until it is proven”
  3. Listening. Developers are dumb, most of the time they don’t understand “the business” and they write code that other developers don’t understand.
  4. Designing. Organise and plan for enough flexibility, keep it simple, logical modules, organise code, prepare to re-design

Dr.Neil noted that his studies show that most bugs are “created” by programmers after 6pm. Tired programmers create bugs. Don’t be too surprised, if you are lucky enough to be working with Dr.Neil, to find that he’ll kick you out at 6pm…go home, have a life.

Test-Driven Development (TDD)
On the subject of Test-Driven Development (TDD), Dr.Neil reminded us:

  • that TDD is a design exercise
  • that it makes us write the least code and the most simple code
  • that it makes us consider interfaces and design
  • it puts quality first, not functionality (this is most important)
  • writing tests for third party components is a good thing
  • a green “screen” or bar means you can potentially ship your product, you have something shippable

tdd - the red screen
Dr.Neil ponders over the red screen, indicating test failure (luckily, he forced the test failure for demo purposes!)

…And Finally…
This was a throughly excellent session, if you weren’t there you missed something special. If you get the chance to be present at one of Dr.Neil’s presentations, pull out all the stops to be there.

Links
Dr.Neil’s tools, links and presentation relating to this posting can be found here.

Colin provides a similar write-up here. And there’s more over here.

DeveloperDeveloperDeveloper – the return

Saturday 22nd October 2005 – Save the date!

The second DeveloperDeveloperDeveloper day is coming!

Like the first event, it will be held at Thames Valley Park (TVP), Reading, UK.

Call for speakers: If you are interested in delivering a 60-75 minute session or even a 30 minute session, please let me know: craig@scottishdevelopers.com

We’re open to your choice of topics, but given the close proximity to the Visual Studio 2005, SQL Server 2005 and Biztalk Server 2006 launch on the 7th of November, we’re happy to take topics for those products too. This is a Community Community Community event, so product plugs/marketing sessions might not go down too well.

We going to cater for all levels: if you are a “wanna-be” speaker, this is your chance to shine, we can guarantee an informal, relaxed environment, and will give you all the support you need to promote yourself to the next level. If you’ve never spoken at a developer event in the past, this is your chance! 30 minutes is very easy to fill! We’d love to hear from you!

There is a good chance that the sessions will be put to the community for selection/voting, i.e. the sessions will be Chosen By Developers, chosen by you.

Watch this blog, amongst others, for further announcements!

Can’t wait!

TechEd 2005 – Being more productive in .NET

Juval Lowy – some session!

We kicked off with a look at the under-used WinCV.exe class viewer (something that Delphi has enjoyed for some time now…). Juval compared a search for ‘object’ using the WinCV class viewer and a search on the MSDN. He referred to the class viewer as “intellisense on steroids”.

WinCV
WinCV at work – it has incremental search too

WinCV is available today, you can find it here:
C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin

However, if you are looking at Visual Studio 2005 betas, you’ll find it’s built in to the product. Take a look at the View –> Code Definition Window menu option:

Code Definition Window

Tied in with this, Visual Studio 2005 has a right-click menu option “Go To Definition”. This works very much like Delphi’s ability to turn methods and properties into URLs when the control key is pressed…in which case it has been a Delphi feature for a long time now!

Conditionals via the System.Diagnostics namespace

// I must change my WordPress theme such that it respects code a little better :-(
#define MySpecialCondition //usually DEBUG

public class MyClass
{
public MyClass()
{}
[Conditional("MySpecialCondition")]
public void MyMethod()
{}
}

//Client side code
MyClass obj = new MyClass();

//This line is conditional
obj.MyMethod();

Link File
Interestingly, and this is something that I’ve preached about during my TDD presentations, Juval went on to remind us about the little drop-down menu that is attached to the Open menu:

unlucky for some
Open –> Link File is useful

If you’re anything like me, you’ll hate having to copy classes/files between projects. Indeed if you download any of the TDD examples, you’ll see I make copious use of the Link File option to share a class between more than one project. In Juval’s words: [Link File] “References the file for compilation purpose, but does not copy it”.

Starting more than one project
One thing that did catch my eye was Juval demonstrating “multiple start up projects”. It’s tiresome when building client/server applications that we find ourselves starting the server, then running the client. The screenshot below can be reached via right-clicking on the Solution item inside the Solution Explorer, then choose Properties (Visual Studio 2003/2005):

multiple startup projects
Multiple startup projects…very handy

Beware of the false Finds!
Personally, I love Visual Studio’s folding editor: the ability to mark sections or regions of code and hide them away is long overdue! However, when a piece of code is folded away, pressing Control-F to perform a Find operation can lead to surprising results. Code that is folded can be included or excluded from the Find dialog’s operation, i.e. Find operations that you expect to be successful, aren’t. By default in Visual Studio 2003, the Find dialog ‘Search hidden text’ check box is unchecked…therefore you may not find what you are looking for, even though you know it’s there! In Visual Studio 2005, the checkbox is checked.

Name those threads!
Presented as being useful during debugging, naming threads is remarkably simple (apologies for the VB code):


Imports System.Threading

Dim currentThread As Thread = Thread.CurrentThread

Dim threadName As String = "Main UI Thread"
currentThread.Name = threadName

Peculiar Selections
Oh, and rectangular text/code selections? You need to hold the ALT key down whilst dragging (works in both Visual Studio 2003 and 2005). This is a feature you either love or hate, but as Juval says: “Very useful in removing namespaces and repeated definitions “.

This and That
Visual Basic has been blessed with the My class that provides access to a multitude of things, such as Audio, Keyboard, Mouse, Network, etc. Perhaps because C# developers are deemed smarter than Visual Basic programmers (I’m already ducking!), C# doesn’t have the My class. Until now at least. Juval has spent some time working on an implementation and he was keen to demonstrate it to us. So, given that Visual Basic has “Me” and “My”, C# now has “This and That“, I jest you not:

This and That

Download this and that.

And finally…
This was a really good session that presented a lot of the differences between Visual Studio 2003 and 2005 and did so by means of lots of demonstrations. Juval was a little quick at flicking between the PowerPoint slides and the Visual Studio IDEs for my liking, something I found he did in another session too – don’t let that put you off, he’s a good speaker and won’t let you down technically. You’ll find Juval blogging about Lornhorn.

Juval left us with a pointer to his coding standard, available via www.idesign.net.

He also mentioned that his book is undergoing a revision and should be with us this month, Programming .NET components, 2nd Edition, Juval Lowy, O’Reilly 2005:

TechEd 2005 – IT Blogging

Microsoft’s Betsy Aoki and Eileen Brown gave an excellent Chalk’n’Talk session that was well attended and enjoyed a moderate amount of interaction. This session was preceeded by Betsy’s session about MS IT Microsoft’s Blogging Engine – Construction and Delivery, blogged about here.

Being a Chalk’n’Talk, slide content was limited and was required merely to spark discussion.

Here are some of the things we discussed, with my notes underneath:

What’s a Blog/Why Blog?

Inside/Outside Reach

Customers talk back
Blogs are a great way for your customer to talk to you – but make sure that you don’t become their personal support specialist!

Remember no “Flogs”
This made me chuckle: the guys over at http://www.falafelsoft.com/ use flogs instead of blogs!

Present yourself as resource and aggregator

How do blogs differ from forums/newsgroups/chats?
I’m not sure if we discussed this to completion, I’ll need to check the audio. However, for me, I blog because:

  1. RSS/Atom feed creation is free.
  2. RSS/Atom provides an easy subscription mechanism for my readers
  3. I can access my blog from anywhere, as TechEd’s wireless connectivity demonstrated
  4. no FTP is required, which means I could blog from behind a firewall
  5. it [the blog] pushes content out
  6. content keywords add Google fodder that promotes ranking and facilitates easier searching
  7. content can be short and focussed
  8. there’s much less noise than nntp

Does blog platform matter: yes and no

Consider small audiences and Steve Ballmer: who do YOU want to reach?
“Leverage the power of the small audience”, Betsy Aoki – good quote: you may only have 20 folks reading your blog, but if they are your 20 best customers…

What to Post

Consider “ego searches,” post longevity

X-casting and alternative delivery mechanisms

Link generosity and becoming a human Aggregator

Corporate credibility
This topic reminded me of this and this.

Fighting comment spam

Gaining readers: promotion/tagging/search discoverability
Eileen noted that a simple spelling mistake in one of her posts resulted in a huge number of hits.

Spiders and Bugs

An audio recording of this session can be found here: http://podcasts.msmobiles.com/?p=73 .

Further information:
IT learns to tune out blogging’s white noise
Blogcasts: Coming soon to a computer near you
Microsoft uses blogs to reach out to IT community

How To Blog And Not Lose Your Job

eXtreme .NET and Web Services – TechEd speakers hit Scotland!

July 21st – TechEd speakers come to Scotland!

I caught up with Christian Weyer at TechEd 2005 last week, he’s a great guy…and he’s coming to Scotland next week to deliver his “‘Add Web Reference’ Reconsidered: Implementing Web Services the Other Way” session.

And Dr. Neil Roodyn will be presenting his “eXtreme .NET – An Introduction to Better Software Development” session.

Extreme Programming (XP) and web services on the same agenda – it doesn’t get any more up to date than that!

Interested? There’s more information here: http://www.scottishdevelopers.com/modules/news/article.php?storyid=86

I hear that a free copy of Visual Studio 2005 beta 2 DVD pack will be given away to every attendee! (in addition to a free CodeZone gift!)

There’s also talk of a hillwalk on the 22nd of July…

TechEd 2005 – MS IT Microsoft s Blogging Engine – Construction and Delivery

Microsoft’s Betsy Aoki gave us a great session explaining all about “blogging at Microsoft”. Initially, during 2003/4 there were only 5 bloggers using BlogX, after PDC a further 200 signed up and within a year there were over 1000…mainly using .Text. Currently, Betsy manages of 1600 Microsoft bloggers split between blogs.msdn.com and blogs.technet.com (and a handful of other employee-specific sites).

Those of you who are avid bloggers and follow Microsoft blogging closely, will know that Microsoft have gone through a few blogging engines in their time so far. Initially, some Microsoft bloggers used BlogX. This was followed by .Text and now by Community Server 1.0 (written by Scott Watermasysk and Telligent Systems who are lucky enough to be able to say: “Writing blogging software is our day job now!” I’m only jealous!)

Betsy played a pivitol role in the migration to .Text and the subsequent migration to Community Server 1.0. When migrating from one engine to another, it’s worth considering how refferals might work: consider setting up 304 redirects for the RSS feeds. Raymond Chen‘s blog took over 30 minutes to port from .Text to Community Server…mainly due to the vast number of referrers!

Betsy noted some of the problems peculiar to a blog site. Particularly:

  1. Skins are absurdly important. You would think content was the important thing, no, it’s the look’n’feel. How long did you spend looking out the theme/skin for your blog?
  2. Microsoft employees want to blog: Wherever, whenever. Initially, Microsoft bloggers were a little reluctant to blog, stating “you want me to blog and do my day job”. Now, and this was evident in this session and Betsy and Eileen’s session (more later), Microsoft bloggers can’t get enough of it. Folks are on the ‘phone complaining when they can’t get to their blog…it’s an addiction (a soft one luckily!)

I was interested to learn that Microsoft don’t have an official blogging policy, but they do offer advice on “how to blog” and particularly, “how to blog smart”. Robert Scoble is noted as “setting the scene” and “driving it forward”. Betsy explained that Microsoft don’t have a blogging policy because they don’t want their employees to feel constrained, nor do they want blog readers to believe that employees are being told what to write…i.e. blog posts become a marketing device. So it seems that good stuff doesn’t always need policy.

I enjoyed this session, it was delivered well and gave me an insight into something most of us take for granted…I mean, blogs.msdn.com just appeared…did it not?

There is a recording of the session here: http://podcasts.msmobiles.com/?p=74
and a related news item at the msmobiles.com portal can be found here: http://msmobiles.com/news.php/4017.html