The Awks They Turn North-Eastward. They're Taking the Vulcans to Alderaan!
Tom Fosdick
Tom Fosdick is a software architect whose experience ranges from low level coding through to product management, delivery and customer relationships.
For nearly 20 years Tom has specialised in providing advanced technology to front line Emergency Services both in the UK and internationally.
Shirt and tie, green tank top, brown jacket with leather patches on the elbows and horn rimmed spectacles. The image of my college maths tutor yelling “break the line, change the sign!” is still burnt into my brain. Nevertheless De Morgans’s Law is one of those things from my days as an electronics research technician that’s still useful today – so it was worth it.
I needed to change an if statement around. Originally it was like this;
if (null == cert || !cert.HasPrivateKey)
doMainPart()
else
doElsePart()
But I wanted to switch the main and else part around, so I wanted to reverse the result of the condition. I could have done this…
if ( !(null == cert || !cert.HasPrivateKey))
But instead I employed De Morgan’s Law. To invert the meaning of the entire condition the first step is to invert the meaning of each individual term of the condition. So:
null == cert becomes null != cert
!cert.HasPrivateKey becomes cert.HasPrivateKey
The second step is to change the operators that combine the terms, so OR becomes AND and vice-versa. Thus (null != cert && cert.HasPrivateKey) gives the exact opposite result to (null == cert || !cert.HasPrivateKey).
if (null != cert && cert.HasPrivateKey)
doElsePart()
else
doMainPart()
It’s really easy to tie yourself in knots with this kind of stuff, remembering De Morgan’s law can save a lot of heartache.
If you’re wondering why it’s “break the line, change the sign” this is because of the way boolean logic is written is electronics: if you want to invert the meaning of something you don’t put a ! in front of it, you draw a line over the top of it. So our condition would have started as:
null == cert || cert.HasPrivateKey
We then want to invert the entire operation, so we draw a line right over the top…
null == cert || cert.HasPrivateKey
Now we apply De Morgans’s Law, we break the line and change the sign.
null == cert && cert.HasPrivateKey
Of course the two inversions on the right-hand side cancel each other out, so we finish with:
I made a mistake when I joined The University of Hull back in 2008. I don’t mean that joining university was a mistake, it was one of the best career decisions I’ve made. I made a mistake with the way I used social media.
Part of the role at The University was to be an ambassador, to represent and promote the university and the field of computer science. “No problem,” I thought, “I’ll just use my existing social media accounts.” That was the mistake.
It led to two problems. The first is that my online persona changed. I suddenly became aware that I used the account for professional purposes. That changed the image of the account, it became my professional persona and it became very difficult for me to be the person that my friends know outside of the professional environment.
The second problem is that I started adding professional “friends” and followers. That reinforced the first problem.
I went from someone who’d been very active on social media to someone who only posted the most carefully filtered content.
If you are a professional you have to be somewhat circumspect, once you’ve hit the “send” button you’ve lost an element of control – it’s out there. Even friend-locked posts and old blog articles can resurface at inopportune moments.
At the last interview I was at one of the interviewers let slip something that they couldn’t have known unless they’d read my blog – and not only that but it wasn’t in the most prominent article either. As a professional your online presence matters.
Fortunately the Victorian image of professionalism is now fading. I maintain however that a professional image is important. It’s about giving your clients and peers confidence that when you turn up to work you’re going to do a good job. For instance, if your social media streams contain a disproportionate amount of pictures and stories of you partying with your friends to all hours that’s going to damage your professional credibility.
A balance still needs to be maintained.
For myself however I no longer work for The University, in fact being an ambassador for computer science is no longer an official part of my job at all. So you’d think it would be easy for me to rectify those mistakes I made back when I joined The University and revert my social media personas back to being more like the real me. You’d think that. It appears to be proving more difficult than I thought, however.
It’s well know that throwing exceptions in constructors is a bit dodgy (mainly because of possible memory leaks), but things recently got a bit weird.
It worked fine on my machine, however on my colleague’s machine Visual Studio’s unhandled exception dialog kept popping up. After he hit the continue button everything seemed to work OK, but it was still unnerving.
To cut a long story short I’d written something a bit like this[1]…
That particular overload of the TcpClient constructor tries to open a connection and throws a SocketException if it fails. The exception should be marshalled through the await to the catch, but it was all going a bit strange.
So I changed it to something a bit like this[1] and it all started to behave properly.
Underneath the bonnet (or hood, if you’re not British) ConnectAsync starts a Task to manage the older BeginConnect asynchronous mechanism. Nevertheless, exceptions throw in this scenario are marshalled properly with no weirdness.
Now ultimately both versions of the code seem to work correctly, but what is clear is that there is something different about the exception handling in constructors. So I’d recommend avoiding not just avoiding throwing exceptions in your own constructors but if you can, avoid using constructor that throws an exception.
[1]In order to make the point clear I’ve simplified these examples to the point where, as code, they’re not terribly useful in their own right. I certainly wouldn’t recommend using these as any kind of template.
Reading Time: < 1minuteOne of the beauties of the Raspberry Pi is that it’s so low power [in comparison to a PC] you can afford to leave one on all the time. When I got my first Pi I tried using it as a mirror of this blog. It worked, but it was rather slow.
The Raspberry Pi 2B has got a lot more beans that the first version of the Pi. I got one for Xmas, so I thought I’d revisit the mirror idea. Assuming my little script is working properly, there should now be a mirror of this site on my Pi 2B.
I’d been working for Seed Software for a few short weeks when the manager announced that he was going snowboarding for a week. “Who’s in charge whilst you’re away?” I inquired, “You are!” came the reply.
Over a year ago I posted the story of how I came to work for Seed Software, but the story didn’t end there. There’s the small matter of what happened between then and me leaving Seed in October 2015. It was quite an experience. I’m not sure if people take me entirely seriously when I say that I learnt as much in Seed as any of the interns or students but it is nevertheless true.
So I’d just about worked out where the stationary cupboard was and suddenly I was being asked to run the business. This was definitely not in the job description for a software developer but before I made that point I took a moment to think about it. I’d spent the past few years in my previous company trying to convince the senior management that some software developers understood more than just matters technical. I’d had some success, but here was an opportunity for me to prove it by stepping right into the front line of running a business, if only for week.
Nothing much happened, it was rather an uneventful week. I don’t know if I was more disappointed or relieved. Nevertheless it cemented my position as being very actively involved in the running of the business of Seed Software.
After that I started getting down to trying to learn WPF and WCF, neither of which I’d used before, and trying to build a Command and Control system. I’d got out on the road a bit too, the C&C was very much developed with the Fire Service which meant frequent visits to site with the latest developments to make sure we were all heading in the same direction. I’d also been to a few of the other sites because although the other products were managed by the Seed Manager there was only one of him and we needed some resilience.
It was that need for resilience that soon bit us, “Tom,” the Seed Manager said, “Erm… I’ve double-booked myself. I don’t suppose you could cover a sales presentation next week? I’ve got the slides and everything.”
This wasn’t entirely unexpected. I’d known before I joined Seed Software that it was just a software development team. There were no sales, marketing or operations staff. A business can’t survive without these functions though which left only one conclusion: the development team were doing them. This is actually one of the things I found exciting about Seed, if the business was going to work and I was going to be successful within it I knew that I was going to have to get involved in these functions to a much greater level than I ever had been before. Sure I’d been to sales presentations, I was actually a bit of a regular, but I’d always been the “technical expert” that answered the questions that the salesperson couldn’t. I’d never actually delivered a sales presentation before.
As it turned out Seed’s presentation was part of a much larger event where several suppliers were pitching their wares at a group of senior fire officers from many services across the country.
This was a great learning opportunity for me – I was on relatively late in the day which meant that I had a lot of time to watch what the others presenters did and tune my own performance. I was expecting swish, professional salespeople to glide in and deliver polished shows that would make mine seem shambolic and amateurish.
That is not what happened. They were all professional enough but there was no performance, no spark, no charisma.
By my slot half the audience had been struck down with a nasty case of…
.
This is where it struck me how just how different Seed Software really was in 2009, there was nobody else like us there. I had some Powerpoint slides, just to get across some of the key information, but most of our sales presentations were live demonstrations of the kit. This, it transpired, was a breath of fresh air. I was able to engage with the audience, sleepy heads popped up and started asking questions. I ran out of business cards and had to start writing my details on the back of potential customers’ ones.
I was beginning to settle in to Seed, I was a lead developer, software architect, product manager, deputy business manager and occasional sales guy. The phrase “can do attitude” crops up in a lot of places and generally it means something it’s not supposed to but in 2009 / 2010 Seed Software embodied it in its true sense. It didn’t seem like there was anything that we couldn’t make work somehow.
2011 was not so kind to us. The business was growing too fast for The University to react and we were all having to put in way too much work just to keep our heads above water. To make matters worse the Seed Manager ran into a spot of bad luck – a couple of serious accidents ruled him out for extended periods of time. I found myself trying to develop the Command and Control, project manage delivery to the first control rooms and the subsequent go-lives and manage the business of Seed itself.
It was insane, one day I looked at my timesheet and I’d accumulated 28 extra days of time-off-in-lieu. I had to offload the management of the business to the department’s Enterprise Director, or I would have burnt out.
Despite the workload Seed was still a hugely positive, exciting place to work. What we’d achieved was pretty amazing too, two industry professionals and a bunch of students had successfully developed and delivered a mobilising system – the single most important computer system in a fire service – into two live control rooms.
The workload however was still out of control. Even with the Seed Manager back full time it was clear that we needed to make big changes. The Seed Manager position was actually a hybrid position, half developer, half manager. It was obvious that managing the business alone had now become a full time job. The role was therefore split into two, a senior developer and a dedicated business manager.
Preferring to retain a technical role, the Seed Manager left. I had also planned to leave – I knew that a chapter in the development of Seed Software was coming to a close. Seed was going to change, it was going to become more established, less dynamic. I also wanted to move back here, to Suffolk.
I did move, but I didn’t leave Seed. The University rather unexpectedly offered me a remote working contract. This threw up a whole myriad of new challenges. When I first became a remote worker I thought I’d be knocking out a steady stream of blog articles on what the problems were and how we were trying to solve them.
That’s a subject for another time however. As for the story, In October 2015 Seed was about 3 times the size it was in 2011, had a lot more products than it did an had begun to offer a support function. Brigid Command and Control is was well established as the primary mobilising system in the control rooms of 3 of the UK’s Fire and Rescue Services.
That just about brings my story at Seed to a close. But what about the future of Seed? The changes I predicted have certainly happened: I believe that Seed Software will become a highly successful business.
Reading Time: 6minutesI knew when I accepted an invitation to visit Hull University‘s campus “to help with induction week” that my usual place in the university guest house would probably be booked. What I didn’t appreciate was that the entirety of North Hull would be booked.
Where some people see problems, I see opportunities. As a cyclist, a cycling advocate and indeed a sustainable travel advocate I was keen to see how far Hull had come since I left in 2011, so I booked a hotel near the bus station, about 2 miles from campus and started investigating bicycle hire.
Cycle Hub and Secure Storage
Initial impressions were great, Hull Cycle Hub provides secure, 24hr access cycle storage for £1 a day and it hires bikes for £3.50 a day. The service desk is open from 8am to 3pm every day – if you want access outside these hours you need to pick up a card. These hours are fine for people arriving in Hull but I can imagine it might be difficult for some people to return the bike or the card because they’ll be leaving Hull later than 3pm.
Nevertheless Hull Cycle Hub is a great facility, especially as it’s right in the train and bus station and that’s right in the centre of town.
I had a problem though – although you can get from Suffolk to Hull via train it’s cheaper and faster to hire a car (seriously). The university is the most convenient pick up and drop off point for hire cars and it’s 2 miles out of town. So it actually worked out most practical if I hired a bike from Hull University’s Bike Hub rather than the central Cycle Hub.
So on my way in to Hull I picked up a 24 hour access card (£10 refundable deposit) from the Cycle Hub then once I arrived in campus made my way to the Bike Hub.
University Campus, Bike Hub and Bicycle Hire
I happily bounded in and announced that I’d like to hire a bike for a week. “Oh,” replied the chap behind the desk, “We’re having to prioritise 3 month hires at the moment I’m afraid.” Now I can understand this in induction week, but it should have been mentioned on the web site and in their other publicity material. Once I explained that I was only in Hull for a week and that I needed the bike to get to and from the university however Adam – who runs the Bike Hub – dug me out a suitable bike.
The saddle was duly adjusted for me and Adam went though all the particulars of the bike, provided me with lights, a lock (and instructions on how to use it) and a helmet and then asked if I’d ridden in the UK much. This caught me by surprise a little, “I have to ask,” he explained, “because we can’t just let people who have no idea what they’re doing loose on the roads.”
So I handed over £70 cash (refundable deposit) plus the hire fee and we sorted some basic paperwork out and then I noticed a problem. It’s a problem that I actually find with a lot of sustainable travel but particularly cycle places, the opening hours. They’re not open on Fridays, so a week’s hire means Monday to Monday. Unfortunately I wasn’t going to be there on Monday, so if I wanted my deposit back I’d have to return the bike on Thursday.
I could deal with that – the bus service to and from the university is actually pretty good.
So I got the bike and rode off. Now, I have to say at this point that £5 per week is extremely cheap for bicycle hire (and £30 for 3 months is an absolute steal). So I was trying to manage my expectations with regard to the bike. It was OK. It was well enough maintained, but there were a few little niggles; the saddle wasn’t comfortable for me; the front brake was a bit jerky; the chain-ring shifter wasn’t indexed and the chain occasionally hopped off the top sprocket onto number 2 all by itself. Overall though, for a bike that was clearly 10% or less of the cost of the bikes I usually ride, it was acceptable. You do get what you pay for and I absolutely can’t fault the value for money. Overall it was a decent enough run-about, I was happy to ride it the 2 miles or so from Cycle Hub in town to the university and back. A change of saddle and a couple on minor upgrades and it would have made a perfectly serviceable commuter bike.
‘Ull Roads
I had quite forgotten what cycling in a city was like – so many cars all trying to get somewhere fast, so many that all they do is cause congestion. There was a great poster I saw in the Netherlands, it said “You are not in traffic, you are traffic”.
By day two I was used to it again and could relax. The cycle routes between town and the university don’t seem to have changed much, they still rank as pretty good. There are on road cycle lanes and bus lanes you can use for most of the way.
Thursday
So time came for me to give the bike back. This all went well until I had to get my deposit back. Now, for entirely understandable reasons Bike Hub doesn’t keep much cash, in order to get a refund you have to go to the university’s cash office. This itself isn’t a problem. The problem is that Bike Hub can’t authorise payments. So you have to fill in a form that then had to be signed by two people in the Estates office. That takes time and is not the sort of thing that most people would want to be running around trying to do on their last day of term. Surely there has to be a better way?
So now without a bike I hoped on a bus back to the city centre. This was entirely straightforward, the bus was clean, comfortable and quick.
At this point I have to mention Hull Paragon Interchange, the combined bus and rail station in the centre of Hull. This is a really good facility and works very efficiently. It’s easy to see the bus and train services at a glance and get to the right place without confusion. Every urban centre should have one of these.
Conclusion
Hull Cycle Hub has the potential to make a real impact to cycling in Hull, at the moment however it appears to be much under-used.
The Bike Hub at Hull University does very cheap bike hire, but you get what you pay for. The bikes could be better, the opening times are a bit limiting and the bureaucracy to get your deposit back is highly irritating. However, having said this it’s still exceptional value for money.
The buses are the real winner here – they’re clean, comfortable and efficient. If I were in exactly this situation again I’d probably buy a one week ticket and forget about bike hire.
Having said this, I think next time I would try to arrange to pick up and drop off the hire car in Hull City Centre. If I could do that then Cycle Hub could provide everything I needed. I’m fortunate in that I could return the bike on Friday before their 3pm closing time – that I think might be the sticking point for most people.
This is something I find with a lot of cycle facilities and it really irritates me – the service is good but the opening hours just aren’t practical for people with regular jobs. This is an area that we really need to work on.
You can read more about Hull University’s sustainable travel initiative on their web site.
I am, it has to be said, a bit of a car nut. I like cars, I like motorsport. So put a couple of hundred of the most classic racing cars in history on a track and race them – and I really do mean race them – and you’ve got my interest.
Goodwood Revival is a pastiche of course – it nominally attempts to revive motorsport as it was before 1970, the reality is that it does no such thing. I would argue that it doesn’t want to either – motorsport is still dangerous but before 1970 it was practically suicidal. Goodwood itself claimed the life of Bruce McLaren and ended the career of Sir Stirling Moss.
So I’ll hear no nostalgic talk of “The Golden Era of Motorsport” – sure there were things that were better, but there’s a hell of a lot that was worse. I also don’t think we want to look too with too rosy an eye at the realities of life for the average person in the mid twentieth century. We’ve come a long, long way since then.
The beauty of the Goodwood Revival is that we can ignore the crappy standard of living and the appalling attitude to safety and just celebrate the good stuff. Let’s face it, the cars were much, much prettier and had an elegant simplicity that today’s machines – although clearly far superior in just about every other way – lack.
Decisions, Decisions
The people I was with were dressing 1950s style, so I had to fit in with them. I’m not exactly preppy, I’m not a military person and a not really a biker so (months ago) I started looking at what the early Teddy Boys wore. This was a bit of a non-starter – they wore smart Edwardian clothing. The basic lounge (business) suit hasn’t really changed much in 100 years so whilst looking like an authentic 1950s Ted is pretty easy, it’s not really playing the game.
So I started looking at other 1950s fashion and I ran into this image of James Dean from Rebel Without a Cause. There’s no way my hair was going to do that – far too short, but I should be able to get a jacket, shirt and trousers pretty easily…
Tweed jackets also have the added bonus of being warm, which is a definite advantage at a race track.
Glamping
Trying to find accommodation is a pain. There is a lot in the local area and Goodwood do put on shuttle bus services, but demand far outstrips supply. The reality is that if you do find somewhere for a reasonable price you’re likely to have to drive into the event each day. That’s inconvenient from a traffic point of view and also because you have to have a designated driver, which is not really in the spirit of Goodwood Revival (see earlier comments about this not actually being the 1950s).
The other option is camping at the site. This however is not like camping a music festival. You get a good size pitch and the facilities are good and well maintained. You’re also with a different set of people: camping – or more precisely motorhomes and caravans – are deeply embedded into motorsport in the UK. These are people who are used to being to be up and compos mentis at a reasonable time in the morning because they’re involved in the racing. Sure there’s some pretty hard partying going on, but it’s at the event- the camp site is actually a bit of a peace haven.
We’re experienced campers and nothing about the arrangements really phased us. Overall Goodwood do a great job in creating a perfectly reasonable temporary camp site in what is otherwise a farming field.
There are a few things that I someone considering this option might want to be aware of:
The route to the camp site is adequately signed, but only just and the signs start appearing a little on the late side compared to the main event signs.
There are generators and flood lights at each facilities station that run all night. If you’re bothered by these pick a pitch away from them.
People actually drive across the site to the facilities. The site isn’t that big however and anyone without mobility problems doesn’t really have an excuse for this.
Traffic queues to get in and out of the camp site are pretty horrendous at peak times.
Toilets, showers and washing up facilities are provided and I think I saw an Elsan point. There’s also a “boudoir” where you can do your make-up etc. Don’t get too excited, it’s just a portacabin.
The site is pretty flat, but make sure if you’ve got a tent or awning that you bring good pegs, the ground is very, very stony.
The camping overall is a little disorganised, it somewhat relies on the fact that the majority of people there are seasoned campers and that everyone can work things out for themselves pretty well.
Thursday
So we arrived mid-Thursday. There was a fish and chip van on the camp site but it wasn’t signposted and we in fact came across it entirely by accident. Other than that there didn’t seem to be much around or much information on what might be elsewhere.
We were aware however of “Over The Road” – shopping and entertainment zone that didn’t require a ticket. We figured that some of the stall-holders would be aware of people arriving on Thursday and would probably be open so we decided to head there.
This is when we ran into the first problem – there was no information about how best to get there. So we followed the signs to the track and found not only the entrance to the venue locked but the exit from the camp site locked and a total lack of any information or signs. We looked at a (OS) map, hopped the gate and made our way via the roads to “Over the Road” – something that I wouldn’t recommend unless you’re accustomed to walking on country roads.
We got there to find that only a handful – out of several hundred – of the stalls were open. It was lucky we had eaten earlier and had some beer back at the camp site otherwise we would have really struggled. As it was we got the lay of the land then made our way back to the camp site.
All of this hassle could have easily been resolved if the information we’d been given at the start – about camping – were a little better.
Now, enough of the complaining. Here’s a picture of a Jaguar D-Type.
Into The Weekend
So Friday morning came and we made our way to the track and attempted to buy a programme. Finding a stall was easy, people were leaving with programmes and money seemed to be changing hands. It wasn’t advertised as a programme stall however and this became a common theme of the weekend: all the staff are extremely helpful and well informed, but signs and directions were sometimes a little lacking. Common sense is definitely required.
Racing!
If you’re not familiar with classic racing events you would be forgiven for thinking that they’d be populate largely by owner-drivers tiptoeing round the track, terrified of scratching their pride and joy.
Nope.
This is former – and possibly future – Formula 1 driver Guido Van Der Garde a few seconds after he’d demolished the chicane with what was until that point a rather nice example of an AC Cobra.
The car was recovered to the pits where a combination of crowbars and lump hammers was used to re-shape the offending bodywork so that it didn’t foul the wheels and was something approximating the shape it should be. Several reels of tape were then applied and the car was then sent on its way and spent the rest of the weekend quite happy.
I don’t know what the total car casualty list for the weekend was and I’d hate to think of the bill.
OK, so nobody’s taking the same level of risk that their historic counterparts would, but here’s my point: they’re definitely very serious indeed about racing.
One question for us was grandstand or no grandstand. Grandstand seats certainly don’t guarantee you a better view – many of the best views are to be had stood near the track. The one big advantage that a grandstand gets you is somewhere dry – there are a few other covered areas but none that you could watch the racing from. If you don’t mind getting rained on, I’d say don’t bother with grandstand seating.
I’m not going to go into the racing too much because Goodwood themselves do that a lot better. You can currently watch all the 2015 races on the Revival site. There were some pretty fun races.
Retro! Vintage!
Of course a major part of The Revival is the feel of being somewhere in the mid twentieth century. A lot of people dress in the fashions of the day – enough that it seems normal.
The venue helps too – the last contemporary race at Goodwood was held in 1966 and it was effectively closed in 1970 which gives them a bit of a head start, but a lot of effort has been put in at the venue to make it look like something mid twentieth century.
The track also has a distinctly retro feel, there are no large safety fences as there would be at a F1 Grand Prix track. There are large run-off areas, gravel traps and large banks of earth fronted by ranks of tyres and Armco barrier. This means you can get some great views and really feel like you’re part of the action. On the flip side it’s hard to not be aware of what it says on the back of every ticket, “motor sport is dangerous”.
Shopping! Paddocks!
There are a lot of stalls. A lot. Most of them are related to motoring or motor sport. There are a few others, I particularly remember a barn construction company and a number of niche clothing companies. You could easily lose a day between the main venue and “over the road” just going round the stalls.
There are also the paddocks, somewhere around half of these are open to the public to have a nose around – being able to get up close and personal with some of the cars is a real privilege – a lot of them are of major historic importance and are utterly irreplaceable.
There are also other attractions too – the Earl’s Court Motor Show, Bonhams, etc. If you want to see a decent amount of racing then you need at least two days to get round everything.
Speaking of getting around, there are handy, free and frequent tractor-buses that circle the perimeter. Otherwise it’s a fair old walk.
Food! Water!
There is certainly no shortage of booze, but don’t expect pub prices. If you want to get yourself over-refreshed it’s going to cost you – particularly if you end up in one of the Veuve Clicquot bars. There is however nothing stopping you from bringing in your own favoured tipple, although if that’s beer it could get rather inconvenient.
There’s also plenty of entertainment, a couple of small stages at the event that host bands and a couple of touring groups of singers. “Over the road” also had a roller-disco and another stage. All of the acts we saw were pretty good.
Food however was a bit of a let-down. There were a few catering tents that did average quality mass catering for prices that weren’t too horrendous. There were also a reasonable number of catering vans. The problem is that most places sold pretty much the same things – pies, pasties, burgers, fish and chips. There were a couple of pizza stalls which were really the only vegetarian option. I’m sad to say that compared to the British F1 Grand Prix at Silverstone the catering at Goodwood Revival was poor. We visited FoS in 2007 the catering was pretty decent which only served to add to our frustration.
Celebs! VIPS!
Yes, there were a few knocking about – particularly a few notable owners / drivers. The ones we saw were all very friendly and patient. There were a few other people we spotted around too.
Quite a sizeable chunk of the venue is however dedicated to VIPs of one sort or another. This can be a bit irritating at times, particularly if the car you want to gawp at is in one of the “Members Only” paddocks. One has to keep in mind however that the access one gets as a mere prole is remarkable anyway – there’s no way you can get near any of the cars at most race meets!
You Should Go
OK, I’ve been a bit whingy and it’s true there are problems, but now you’ve read this you know what they are and how to deal with them!
Overall Goodwood Revival is a fantastic event and enormously good fun for any kind of motor-sport fan.
Reading Time: 2minutesAfter considering the matter for some time now I’ve decided to leave The University. I know this will come as a surprise to many and it was to me a little. The reasons are rather complex, but it boils down to the fact that I’ve achieved what I set out to achieve and that many threads are coming to a natural end.
I’ve been at Seed Software for more than 6 years, it’s been a remarkable journey and we’ve taken the business way ahead of anyone’s expectation. I’m hugely proud to have been a key player in taking Seed from a start-up to one of the biggest suppliers of software to the UK Fire Service and the most successful project of its type in the UK.
It is now though time to draw a line under this chapter and begin a new one. So I’m looking for a new role beginning in October this year. I’m keeping an open mind as to what that might be.
Update Septmber 22nd 2015
I’ve now agreed terms with another organisation. I’ll be leaving Seed Software in mid October.
–end of update–
My career is punctuated by large switches of environment. Embedded to VMS to *nix to Windows, flow orientation to OO, native to managed, waterfall to agile and of course keyboard to chainsaw when I worked in habitat management for a while.
Find out more about some of the key projects I’ve worked on or more about me in general on the “About” page.
I want a program that will print out the numbers 1,2,3,4,5,6,7,8,9 in a shuffled order. The order must be different each time the program runs. Note that the same number must be different each time. It should be possible to extend this to work with 52 numbers, in which case I can make a shuffled deck of cards.
You can use the Random number generator in C#, but you must make sure that the same number never appears twice, as a deck of cards which contains more than 4 aces has been known to raise suspicion.
As it was Friday lunchtime however I decided to make the solution anything but simple, firstly I replaced the numbers with the actual card names and secondly I thought I’d write it in PostScript because it demonstrates a totally different form of notation from the way we write the normal imperative languages like C# or Java.
/Suits [(Clubs)(Diamonds)(Hearts)(Spades)] def
/Cards [(Ace)(Two)(Three)(Four)(Five)(Six)(Seven)(Eight)(Nine)(Ten)(Jack)(Queen)(King)] def
/YCursorMax 720 def % 10 inches from bottom
/YCursor YCursorMax def
/XCursorMin 72 def % 1 inch from the left
/XCursor XCursorMin def
/XColWidth 113 def % 1/4 of the printable page
/Helvetica findfont
12 scalefont
setfont
/Deck [ 0 1 51 {} for ] def
0 1 50 {
/SwapLeft exch def
52 SwapLeft sub realtime rand mul exch mod
SwapLeft add /SwapRight exch def
Deck SwapLeft get
Deck SwapRight get
Deck exch SwapLeft exch put
Deck exch SwapRight exch put
} for
0 1 3 {
dup /Col exch def
0 1 12 {
Col 13 mul add Deck exch get
dup 13 mod
XCursor YCursor moveto
Cards exch get show
5 0 rmoveto
(of) show
5 0 rmoveto
13 div cvi
Suits exch get show
/YCursor YCursor 20 sub def
} for
/XCursor exch 1 add XColWidth mul XCursorMin add def
/YCursor YCursorMax def
} for
showpage
Reading Time: 2minutesIt’s simple – we can’t make processors go any faster. But we can add more cores.
The OS can schedule different processes to different cores but to take full advantage of the potential we need to be writing applications that run on multiple cores.
Unsurprisingly there’s a lot of investment in making this easier for programmers – to the point that it’s now easier than falling off a log…
The individual actions will be run in parallel, or to be more precise may be run in parallel. The task scheduler takes care of whether or not to actually run them in parallel and the degree of parallelism.
When we arrive at SomeReallyComplexThing all the previous tasks will have been done.
That’s ace. It’s a lot easier than messing about with threads.
Even before the Parallel library was around it wasn’t actually difficult, but you needed some lateral thinking…
Ok, I admit, I’m simplifying. You still need to understand the basic problems of concurrent programming but the mechanics of writing code that can take advantage of parallelism are now trivial.