June 24th, 2009 at 10:22 pm
If you're new here, you may want to subscribe to my RSS feed. Thanks for visiting!
It’s fair to say that today’s processors are getting pretty advanced. The arrival of dual core processors marked a significant change in processor design and the performance we can expect from them. Whatever your beliefs about the limitations and upper limits of Moore’s Law for single core processors, multicore processors are here to stay. And with multicore (or manycore), as developers, there’s a whole new way of programming to master: parallel programming.
Microsoft has recognised this with their Task Parallel Library (with a focus on the .NET architecture here). Indeed, Microsoft’s commitment and vision in the parallel space, particularly for developers is recognised by those on the ground and by those further up the corporate ladder: “Microsoft’s goal is to make the benefits of building software on manycore architectures simple and accessible to the broad developer community.” - S. Somasegar.
Processor manufacturers are keen to promote development for manycore. It’s easy enough to sell processors (or so I believe), however if programmers have to re-align their development techniques and thinking, writing applications that run on manycore devices is going to mean a change to the rules. Historically, programmers have shyed away from parallel and concurrent programming. The challenges of understanding and dealing with race conditions, task-to-task communication and synchronisation have played their part in chasing developers away. In the concurrent programming space, predictability, re-orderability, reconciliation and data stability cause similar concerns.
Intel are in the software library space too, they have their Intel® Parallel Studio which promises to deliver simplified, end-to-end parallelism to Microsoft Visual Studio C/C++ developers. Indeed, Intel are providing considerable support for those of us learning parallel whether it’s as a beginner or an advanced practitioner.
June 2009 saw Intel launch their own on-line TV channel: the Intel® Software Network TV. Of course, you can follow the show on Twitter: @isntv
Whilst the channel isn’t 100% dedicated to parallel programming, there are two specific shows of interest:
- Parallel Programming Talk (Every Tuesday, 8AM Pacific – 1600 in the UK)
June 30: Joe Duffy of Microsoft will discuss the Microsoft Parallel Extensions to .NET and Microsoft Task Parallel Library. Joe Duffy is the lead developer and architect for Parallel Extensions to .NET.
- Teach Parallel (Alternate Tuesdays, 10AM Pacific – 1800 in the UK)
June 30: HPC Centers can help support curricular change. Tom interviews Scott Lathrop, Blue Waters Technical Program Manager for Education & TeraGrid Area Director for Education, Outreach and Training.
I’ve been watching the shows since the June 9th launch: they’re professionally done, yet have the air of flying-by-the-seat-of-your-pants about them…which adds both realism and that little something to each show! Typically the shows are live and bring together big names either in person or over a video link. Remote presenters often appear on a laptop screen which gives the show a real sense of community. Most shows are 30 minutes long, which is good insofar as they don’t take too much time out of your working day. And they are “right-timed”, live broadcasting doesn’t start until 8AM Pacific which is 1600 London time.
So far the shows have focused on parallelism in academia. However you may have noticed that I’ve included details about the June 30 shows. I’m particularly interested in Joe Duffy’s inclusion on the agenda. Joe’s the author of a couple of very popular books:
If you are developing applications using the Microsoft tools, listening to what Joe Duffy has to say is a not-to-be-missed opportunity. Learning how to take advantage of manycore processors that are available is going to be a key skill to have (if it isn’t already). Joe’s a lead developer and architect for the Parallel Extensions to .NET. He probably works very closely with The Moth, and we know that Dan’s content is second-to-none: I’m sure we can expect the same from Joe.
See you online at Intel® Software Network TV on the 30th of June at 1600 (London time)!
References
Dealing with Concurrency: Designing Interaction Between Services and Their Agents
Parallel computing
Concurrent computing
Tags:
Intel,
Joe Duffy,
Microsoft,
Moore's Law,
Parallel,
Parallel Extensions,
Task Parallel Library,
The Moth
May 7th, 2009 at 11:00 am
Swag: that stuff given away at IT Pro and Developer conferences. Swag is typically the free stuff that conference organisers give away “willy nilly”. Expensive prizes may also be referred to as swag, but you may have to work for them (answer questions) or simply be lucky (name drawn out of a “hat”)
But what makes good swag?
For me, good swag revolves around a few key concepts:
- Usability. A pen is usable, however it’s an easy piece of swag for vendors and conference organisers to give out. How many conference pens have you got? How many are still capable of writing anything? I filled an A4 paper box with conference pens gathered over the last 10 years: none of them worked without a lot of effort. Granted pens are excellent if you need people to fill in feedback forms – having a pile of pens handy encourages folks to complete the form as they don’t have to hunt for a pen of their own. USB pen/key drives are usable, however only if they are “right sized”: 512MB is no good these days…unless it’s simply a CD replacement (devExpress gave out 512mb drives at one of the TechSummits, it contained up-to-the-minute builds of CodeRush and RefactorPro – this is when a 512MB drive is considered good swag!) For key drives, 4GB used to be an expensive option, however nowadays, 8GB and even 16GB should be deemed reachable.
- Fun. Swag has to have a reason for being, be it useful or fun. Wrox lollypops are fun, as can be seen here.
- Practical. Practical and usable are very closely related, however there is a fine line. Practical to me, means it’s not “throw away” type swag. Usable means that I might not use it daily, but I will put it somewhere that I can use it. Socks and wearables that aren’t garish are practical. For example, I have a few pairs of thick Microsoft/MSDN socks – these are practical. Branded clothing is also practical, although some folks prefer the branding to be “delicate”…I personally don’t mind branding being “in your face”. If you are thinking about producing wearables, assess your audience: how many XXL t-shirts do you see at conferences? Too many IMHO.
With those key points in mind, here are my four favourite pieces of swag:
DevExpress laptop bag. Laptop bags are emotive items. This one is perfect for 17″ laptops, whilst still providing space for other toys and chargers (when I remember to pack it!) It also has two stretchy bits at either end – ideal for a small umbrella (I live in Scotland, sometimes the rain is so heavy that a small umbrella is required) and a soft drink of some kind too.
Microsoft SharePoint thermal mug. I use this virtually every day. It’s perfect. It fits in my car’s cup holder. It works – hot drinks stay really hot for well over an hour. It doesn’t spill. I’m sure that I blagged this from @lliu during a Microsoft MVP Summit.
Office duffel bag. I have two of these. They are great for carrying camera equipment at events as well as being an excellent golf shoe bag!
I also find myself using a Microsoft .NET rucksack that was given out at MSDN Roadshows around 2000-2001. It’s almost usable as a laptop bag, but since it has little in the way of padding, care is required. Nonetheless, it’s “right sized”, not too big and not too small.
That’s not to say that the CodeZone fleece, the Microsoft MVP rugby shirt and dress shirts aren’t good swag – they are used very frequently too. Good wearables, IMHO, make good swag, especially if the vendor goes out of their way to ask you what size you are!
Bad swag manifests itself in the form of:
- Stuff that is hard to get rid off. If swag doesn’t fall into the usable or practical, folks may reject it. Conference organisers like to give swag away…they’re not so keen to take it back! Personally, I try to recover and re-use as much swag as I can: cleaners don’t want swag, they’ll simply “bin it”. It’s important to recover such swag: vendors paid for it and gave it to the conference, recovery is key. Besides, it’s only common decency to grab a box and run around the conference rooms cleaning up after you, yes?
- Breaks easily. Good swag can be delicate swag, i.e. it breaks very easily. If that happens, word gets around and you have bad swag!
- Doesn’t work. Swag that looks to be useful and practical needs to work. I’ve seen a lot of USB gizmos that were very appealing, however they simply didn’t work when plugged in.
- Good, but legacy. Think about USB devices. 1.1 is old hat now, don’t expect your audience to like you if you give them a 1.1 device that relies on a little bit of speed! Folks won’t thank you for a USB 1.1 pen drive these days!
So those are my thoughts about good/bad swag; some of them are “from the field”, i.e. from attendees at events; some are simply my observations. They’re aren’t meant to be rude in any way, so please don’t take them that way. Perhaps they’ve helped you? I would be keen to read/hear your views on this topic…
What makes good swag? What are your favourite items of swag? Please do share in the comments!




April 17th, 2009 at 11:35 pm
Earlier this week I set a Programming Challenge using an example from my first year in academia. So far it has attracted 60 or so comments and solutions!
I’m particularly impressed with the range of languages that have been used.
Regular day-to-day offerings in C# are there, C# with LINQ, PowerShell and VBScript. “Vanilla” C, C++, Perl, Ruby and Python aren’t left out; neither are Smalltalk, Haskall, Lisp, clojure, Scala, F#, T-SQL, Informix SQL, SyBase SQL, APL, APL2 and A+. 6502 machine code and Excel are in the submission pot to – extreme diamond plotting!
There are even submissions in Octave and J (references here and here)!
I’ve had offers of solutions in JavaScript and jQuery, hopefully they’ll arrive soon!
I haven’t verified it yet, but here’s one of the J solutions, stunningly terse:
It is written in Iverson’s J programming language.
3 :’(],|.@}:)(|.@}.”_1,.])(AB{~i.Y)(_2<\2#i.Y)}'' ''$~2#Y=.>:y(=i.1:)AB=.a.{~65+i.26′”0
by Tracy Harms
That won me “most cryptic” tweet from Stuart!
Naturally I’m pleased, I wasn’t expecting it to be so popular! Huge thanks to all involved so far!
For the sake of completion, I’ve scanned in the original Pascal submission. Here it is:

Oh dear: notice the scandalous indentation after the FOR loop. Cringe.
If I was to write a C# version of the Pascal code, I might end up with something similar to this:
-
using System;
-
-
namespace diamond
-
{
-
class Program
-
{
-
static void Main(string[] args)
-
{
-
char widest_char;
-
int next_char, finish_char, wide, range, direction, position, spacelength, loop;
-
-
widest_char = Console.ReadKey().KeyChar;
-
Console.WriteLine();
-
-
wide = (int)widest_char;
-
direction = 1;
-
spacelength = 1;
-
position = 1;
-
-
next_char = 66;
-
finish_char = 65;
-
-
range = 2 * (wide – finish_char);
-
-
// Calculate initial left indent
-
int mid = wide – 65 + 1;
-
-
String firstLetter = Char.ToString((char)finish_char);
-
firstLetter=firstLetter.PadLeft(mid+1);
-
Console.WriteLine(firstLetter);
-
-
for (loop = 1; loop < range; loop++)
-
{
-
Console.Write(” “.PadLeft(mid – position));
-
Console.Write((char)next_char);
-
-
Console.Write(” “.PadLeft(spacelength));
-
Console.WriteLine((char)next_char);
-
-
next_char = next_char + (1 * direction);
-
position = position + (1 * direction);
-
spacelength = spacelength + (2 * direction);
-
-
// Flip direction when the middle of the diamond is reached
-
if (next_char == wide) direction = -1;
-
}
-
-
Console.WriteLine(firstLetter);
-
-
Console.ReadLine();
-
}
-
}
-
}
Back in 1988, I was reasonably pleased with the Pascal solution. Looking at it now, there are a few things I’d probably change, however hindsight with experience is a wonderful thing.
I can’t remember how long it took me to write the Pascal version, probably not very long as I had prototyped the solution using BBC Basic V – a programming language that I had been using since I was 13…some five years before I set eyes on the diamond plotter task! I can’t recall exactly, but I’m reasonably sure that the BBC Basic version took me about an hour to get working…
Of course, throwing readability, etc. out of the window, were I thinking about writing a similar solution today in 2009, I might find myself writing something similar to this:
-
using System;
-
-
namespace ConsoleApplication5
-
{
-
class Program
-
{
-
static void Main()
-
{
-
int range = Console.ReadKey().KeyChar – 65;
-
Console.Clear();
-
-
Console.WriteLine(String.Format(“{0}A”, “”.PadLeft(range)));
-
int r = 1, dir = 1;
-
while ((r > 0) && (range>0))
-
{
-
char c = Convert.ToChar(r + 65);
-
Console.WriteLine(String.Format(“{0}{1}{2}{3}”, “”.PadLeft(range – r),
-
c, “”.PadLeft(r + (r – 1)), c));
-
if (r == range) dir = -1;
-
r = r + dir;
-
}
-
Console.WriteLine(String.Format(“{0}A”, “”.PadLeft(range)));
-
-
Console.ReadKey();
-
}
-
}
-
}
How long did it take me to write a solution today? 30 minutes. 10 minutes of which were spent strangely refactoring for fewer lines of code and terseness. It was interesting writing this version, readability and ability to follow the work-flow came through in the initial version. Then the desire to strip it back to the very basics caught up with me. It’s still not perfect, but it does the job. That said, I’m not sure my original Pascal tutor would be hugely happy with it! C’est la vie!
I’ll write another post that brings together all the submissions that I’ve received so far – keep them coming!
Tags:
BBC Basic,
C#,
challenge,
diamond,
Pascal,
programming
April 16th, 2009 at 8:02 am
Colin Mackay invites you to blog about DDD Scotland in exchange for a local delicacy:
A Tunnock’s Caramel Wafer* to anyone who blogs about Developer Day Scotland between now and 20th April 2009. You must send me a link to the blog post and the prize can be collected only at Developer Day Scotland on 2nd May 2009. (*Prize subject to change, but will be a Scottish food delicacy)
There’s plenty of other legalese that applies, your acceptance of this delicacy and subsequent weight gain has nothing to do with us, etc.
Leave your links in comments here at this blog, e-mail Colin or send @scottishdevs a message on Twitter!
April 15th, 2009 at 8:54 am
What:
WCF Master Class with Juval Löwy (English)
http://www.idesign.net/idesign/DesktopDefault.aspx
When:
June 29 – July 3, 2009
Where:
Zurich, Switzerland (here, to be exact!)
IDesign and John F. Martin present Master WCF in five intense days with Juval Löwy covering WCF programming, design guidelines, pitfalls, original techniques and best practices.
You will see how to take advantage of built-in features such as service hosting, instance management, asynchronous calls, synchronization, reliability, transaction management, disconnected queued calls, security and the .NET Services Bus. The material presented includes IDesign’s original techniques and utilities and goes well beyond anything you can find in conventional sources. The objective of the class is not to just make you a WCF expert, but also a better software engineer.
the cost of the class is 2995€, which includes lunch and dinner, 3495€ which also include the Hotel (excl. any tax)
***
Free session on Thursday 2nd July
Free, however registration is required: john.martin@idesign.net
What:
Energynet – The Next Boom in Software: Juval Löwy, President of IDesign Inc.
When:
Thursday, July 2, 19:00 – 20:30 PM
More detail:
The ongoing economy unraveling is the defining moment of our time. Many professional developers are fearful for their livelihood, as employers and customers cut and slash development plans, and as economic activity grinds to a halt. But not everywhere. In centers of technical excellence and innovation such as the Silicon Valley, the major players, from investors to industry leaders, are aligning themselves with the next boom in software, a field Juval Löwy calls the Energynet.
Alternative energy covers a wide range, from new cars, to micro renewal sources energy producers, infrastructure upgrades to charge stations and distribution, new power and transformation grids, and integration of billing systems, let alone commercial building and homes modification. And the key for making all that work is software. We simply cannot make the physics or the chemistry substantially better, but we can profoundly integrate systems, iron out inefficiency, automate and vertically
integrate energy trading, production and consumption; and the key to all of that is great software.
This massive new software system is the Energynet, and the analogy to the Internet is a good one? instead of packets and request the Energynet transfers watts and usage data, connecting anything and everything in the energy market. In this unique session, Juval Löwy will present the case for the next boom in software, share personal observation and perspectives, and point out the skills and expertise required of developers that want to not only survive but thrive on the next boom in software.
Tags:
Energynet,
IDesign,
John F. Martin,
Juval Lowy,
WCF
April 13th, 2009 at 2:24 pm
Twenty years ago, during my first year in academia, my Pascal tutor set us some top-notch assignments.
Your mission:
Write a program which draws a diamond of the form illustrated below. The letter which is to appear at the widest point of the figure (E in the example) is to be specified as input data.
Here’s a scan of the original hand-out:

My original Pascal solution, which I prototyped using BBC Basic V, took less than a page of fan-fold listing paper and was implemented as a console application. 50% of the listing dealt with input validation and “do you want to run the program again?” code! I will convert the example line-by-line into C# for later publication here! Of course, were I to write it today, it should look very different!
I’d be keen to see your solutions, written in your choice of programming language. Novelty value for uniqueness in your choice of programming language may well be rewarded! Procedural, object-oriented, functional, dynamic, verbose, terse…the choice is yours!
“What’s in it for me?” you might ask?
Well, nothing really, a bit of kudos and the feeling of a job well done! However, I will offer the two best/novel UK-based solutions a much-coveted DDD polo shirt (modelled here!). My decision is final, colour may vary, size might not be the same size as you, yada yada, other legalese applies, etc.
Submission by comments here on this post, by e-mail (top right About Me), or via Twitter @camurphy please!
Over to you!
UPDATE: Comments seem to mangle the code formatting, it has been suggested that code is submitted either via e-mail or via http://pastebin.com/
Tags:
challenge,
diamond,
Pascal,
programming
March 30th, 2009 at 1:41 am
What:
WebDD’09
- With all the latest stuff from MIX 09
Microsoft’s annual MIX event is where they reveal their future strategy & technology – what’s happening with Silverlight, Expression, Live, MSN and advertising.
If you are unable to go then we’ve timed WebDD’09 so we get the latest juice – some of the speakers will be at MIX 09 – and have the opportunity to see what it actually means to us in the web development community and what we can do with the announcements.
What do you get at WebDD’09?
Get an independent view of Microsoft’s new stuff
Time with other web community types – it’s run by the community for the community
Choice of two tracks of technical content running throughout the day
Good content – no fluffiness (or Marketing!)
Lunch and beverages throughout the day with choices for the vegetarian and carnivore inclined
Oh yeah and thanks to Microsoft’s sponsorship the event is TOTALLY free!
When:
April 18th 2009 – Saturday
Where:
Microsoft’s Thames Valley Park Campus, Reading
Schedule:
http://developerdeveloperdeveloper.com/webdd09/Schedule.aspx
Register:
http://developerdeveloperdeveloper.com/webdd09/Register.aspx
March 30th, 2009 at 12:06 am
During 2006 I wrote a post about C# Lists. Of course, technology moves on, C# is no exception to that rule.
Whilst the examples I used in the 2006 blog entry still work today, LINQ heralds further levels of elegance and reduced the number of lines of code required to achieve the same results.
Here are the examples updated to use LINQ:
-
using System;
-
using System.Collections.Generic;
-
using System.Linq;
-
using System.Text;
-
-
namespace ConsoleApplication1
-
{
-
class Program
-
{
-
public class Person
-
{
-
public int age;
-
public string name;
-
-
public Person(int age, string name)
-
{
-
this.age = age;
-
this.name = name;
-
}
-
}
-
-
static void Main(string[] args)
-
{
-
List<Person>people = new List<Person>();
-
-
people.Add(new Person(50, “Fred”));
-
people.Add(new Person(30, “John”));
-
people.Add(new Person(26, “Andrew”));
-
people.Add(new Person(24, “Xavier”));
-
people.Add(new Person(5, “Mark”));
-
people.Add(new Person(6, “Cameron”));
-
-
var unsorted = from p in people select p;
-
var sortedByAge = from p in people orderby p.age select p;
-
var theYoung = from p in people where p.age < 25 select p;
-
var sortedByName = from p in people orderby p.name select p;
-
-
foreach (var p1 in sortedByName)
-
Console.WriteLine(string.Format(“{0} {1}”, p1.name,p1.age));
-
-
Console.ReadLine();
-
}
-
}
-
}
On line 38, simply replace sortedByName with any of the other result sets.
The use of LINQ in this simple example does demonstrate increased readability – the LINQ expressions are easier to understand than those present in the 2006 blog entry. If lines of code are your metric (and for some they are!), the LINQ version’s conciseness does mean a reduction in the LOC count.
March 20th, 2009 at 7:55 am
.Net Developer Roles, Competitive Salary @ NetIDme Ltd.
C# 3.5, ASP.NET MVC, AGILE, TDD
East Kilbride, Scotland, UK
http://www.netidme.com
We are looking for a number of .Net developers, both senior and junior, to join our team in Scotland,UK developing exciting products in the digital identity and communications arena. You should be happy working for a cutting edge, dynamic, fast moving company.
Developers must be able to demonstrate the following skills and experience:
- Experience with C# and ASP.NET
- A strong grasp of object-oriented design
- Ability to produce quality code across all layers of a web application stack
- 3+ years development experience on commercial or open source projects
Experience in any of the following areas will prove advantageous:
Interested?
Send your CV to: recruitment@netidme.com, including an indication of your salary expectation.
Please Note: All prospective employees must undergo a Disclosure Scotland check
NO 3RD PARTY REFERRALS PLEASE
OpenID,Information Cards, CardSpace, ASP.NET MVC, TDD, nHibernate,Castle Project
Tags:
ASP.NET MVC,
CardSpace,
Castle Project,
Information Cards,
nHibernate,
OpenID,
TDD
March 11th, 2009 at 11:44 pm

Podcast feed – subscribe here!
In this show I’m talking with Matt Lacey about Windows Mobile, the devices that you might meet if you are developing for the mobile market, the challenges that present themselves and the solutions that are in place. Matt also tells us what tools we need in order to develop or target mobile devices.
This podcast: http://www.craigmurphy.com/podcasts/057-Matt-Lacey.mp3

Resources
wurfl
Matt on Twitter
Matt’s web-site
DevEvening user group

Technorati Tags: Matt Lacey, DevEvening, Windows Mobile, Windows phones
March 9th, 2009 at 1:32 am

Podcast feed – subscribe here!
In this show, I’m joined by Microsoft Academic Evangelist Paolo Barone. We talk about Paolo’s role promoting Microsoft and .net in academia, XNA, Silverlight, Twitter and close with a chat about Windows 7. You’ll also get a chance to hear my [dreadful] attempt to close the podcast in Paolo’s native language!
During our chat about Twitter and Windows 7, we noted that Steven Sinofsky was very open to community feedback…hopefully this short recording is enough to convince Steven to join us all on Twitter where feedback is almost constant, first-hand and directly addressable!
This podcast: http://www.craigmurphy.com/podcasts/056-Paolo-Barone.mp3

Resources
Paolo’s blog
Paolo on Twitter
Steven Sinofsky, Senior Vice President, Windows and Windows Live Engineering Group
Technorati Tags: Paolo Barone, Steven Sinofsky, Twitter, XNA, Windows 7, Silverlight, Moonlight
Tags:
Moonlight,
Paolo Barone,
Silverlight,
Steven Sinofsky,
Twitter,
Windows 7,
XNA
March 6th, 2009 at 12:17 pm
What:
US MVP David Solomon is running a Windows OS Internals & Advanced Troubleshooting
When:
April 20th -24th
Where:
London, UK
Description:
A public offering of David Solomon Expert Seminar’s hands-on Windows OS Internals & Advanced Troubleshooting class is taking place in London on April 20-24. Gain a deep understanding of the internals of the core operating system components and how to leverage advanced troubleshooting tools to dig beneath the surface when things go wrong.
Registration:
The URL to register and for more details is http://solsem.com/london.html