The future of Google

Google plus you, personal search. Interesting idea, but I’m already seeing it making a difference, even for people without a Google+ account – and that’s why it’ll be big.

I’ve been playing about with the Kinect SDK with a mate, and now that we’ve got things up and running, we want to do things properly, so we went to grab a copy of NUnit so we can unit test the gesture recognition code (I’ll have another blog on that if there’s interest). So, he searches for NUnit on his machine, and the first result is http://www.nunit.org, as expected. What I didn’t expect, because he doesn’t have a Google+ account, is that my name (and wordpress.com) appeared next to the result, because of this blog post : http://craignicol.wordpress.com/2009/05/14/ddds2-tdd-i-dont-have-time-round-up/

So, the social data is need into the algorithm already, using my Google+ profile to link my to WordPress and his contacts to link him to me.

And that’s something Google has needed for a long time – search that tells me what my friends know, because if they’ve bookmarked Putty, I’ll know I’m downloading from the right site.

Leave a Comment

2011 in review

The WordPress.com stats helper monkeys prepared a 2011 annual report for this blog.

Here’s an excerpt:

A New York City subway train holds 1,200 people. This blog was viewed about 3,700 times in 2011. If it were a NYC subway train, it would take about 3 trips to carry that many people.

Click here to see the complete report.

My most popular post was “Agile Is Dead“, 6 months after it was posted, when I got a big boost from Scandinavia. I don’t know if it was a conference, but I appreciate all the support. I’ve got a few ideas for tech and political blogs in 2012. The tech stuff will stay here, but you’ll be able to follow both on my twitter account ( @craignicol ).

All the best for 2012.

Leave a Comment

Slides and Mind Maps for DunDDD

DunDDDAs promised, here’s the slides and mindmaps for the sessions I was involved in at DunDDD 2011. The Mind Maps were generated using FreeMind.

The Philosophy of Code

This talk was an experiment on my part, given the knowledge I’ve picked up from reading books and articles from some of the smartest people in the business and beyond, and I wanted to share some of that. As Gary Park noted, it still needs some polish, but I think there’s a good idea in there, so I hope to get another chance to present it in the future. The presentation itself is licensed under creative commons, but please pay attention to the photo attributions if you want to use them in your own work. I’ve also included a link to the original mind map which contains many more great quotes.

Google Docs : The Philosophy of Code

Mind42 : The Philosophy Of Code

Download The Philosophy Of Code Mindmap (.mm format)

Software Requirements

The original presentation was given by Craig Murphy (on Twitter as @CAMurphy) and is available here : Open Discussion on Software Requirements

The mind map generated from the discussion is reproduced below.

There was a good discussion of how requirements can have different levels of detail and how the methodology can shape the process and the documentation, as well as the change process. A bit of waterfall vs. agile, but each has their place.

Mind42 : Software Requirements

Download the Software Requirements Mindmap (.mm format)

How The Web Was Lost

This talk drifted a little, since we agreed fairly quickly that with the demise of Flash and Silverlight, and the rise of the web-powered desktop in Windows 8, the web has in fact one. +1 for open standards. But where does that leave the behemoths like Apple and Microsoft who have benefited the most from the traditional role of the desktop. Can they keep developers and users on their platforms, or will they be lost to cross-platform development?

Mind42 : How The Web Was Lost

Download How The Web Was Lost (.mm format)

Comments (2)

DunDDD

Just a quick post on my way back from DunDDD (slides and mind maps to follow)  http://dundee.dddscotland.co.uk/

It’s the first time I’ve been to a developer event in Dundee and I was impressed with the enthusiasm and commitment of the attendees, so I hope that’s a good sign that there will be another one next year. Aside from the 3 sessions I was leading, I also attended Gary Short’s mining Twitter talk and Colin Gemmel’s Ruby talk. Lots of good info in both so thanks to them, all the other speakers and organisers for another great event.

If you missed out on this one and are interested in more, check out http://www.scottishdevelopers.com for more events. A couple in Edinburgh in 2011, followed by more events in Edinburgh, Dundee, Aberdeen and Glasgow next year. Well worth following to keep up with the geek scene in Scotland.

http://dundee.dddscotland.co.uk/

EDIT

For more reviews please have a look at the following blogs:

Dundee DDD Conference – Chris Hillman (@chillax7)

A review of #DunDDD – Gary Park (@gep13)

Comments (3)

Apprentice programmer

unlit olympic flame

Let’s talk about plumbing, and customer service, and an experience I had recently with a company I won’t name. Overall the experience was good, but I don’t want anyone to get into trouble because they’ve misinterpreted what I have said here. (and if you’re wondering about the picture : the Olympic flame isn’t lit either).

A couple of months ago, our gas combination boiler failed. It refused to start and complained that the flue was blocked. I sighed because we’d had the bearings on the fan replaced last year. So I called the service company to get it fixed.

A couple of days later, I was working from home to let the service technician in. He was fairly young but identified a problem. Unfortunately, a new part was required, so he had to come back the next day. He came back, replaced the part, fired up the boiler and all looked good. The next morning, no hot water and a flue warning :-( it was the weekend by this point so we got a senior employee, who identified an error in the replacement part (fitted the wrong way) and identified the original problem as a blocked inlet. 5 minutes to identify, 1 hour to dismantle the boiler to get to the blockage and put it back together.

He finished, switched the boiler off, and then made sure it fired when put back together. Problem solved.

So, what did I learn, and why am I posting this on a programming blog?

Firstly, a monthly fee means that I didn’t have to worry about callout or parts, which was great, and left me less annoyed than I might have been.

Secondly, your first fix might not be the right fix. It looked right and it passed the first test, but caused problems later on (at the next restart). Ever written the wrong test and thought the problem was solved? Threading has caught me out in that way before.

Thirdly, just because it passes the test, doesn’t mean the problem is fixed. The boiler fired easily when the case was open and there was more airflow, but didn’t fire when the case was closed. Ever had a bug that only appeared in production or in a system test?

Fourthly, experts will find problems quicker than rookies, but rookies still need to learn.

Fifth, sometimes the only way to fix a problem, even a small one, is to tear everything apart, blow on it, and put it back together again.

The second guy also said something that struck a chord, as I’ve been trying to do it myself : he was disappointed that the company didn’t send the junior out with him so he could pass on his experience so that he’d learn for next time. Apparently, the fault itself is rare, so it’s a good learning opportunity. For developers : fix your own bugs, as there are a lot of things apprentice developers will see in the first few years after they graduate that are rare enough not to come up in university but common enough to be real problems in the real world. For example,
trusting user input (and the related buffer overrun bugs).

So, what have you learned from other professionals?

Leave a Comment

Weekly Developer Hangout Revival : Friday 14th October, noon

I’m planning to restart the weekly developer hangouts I was running from my Google+ profile now that invites are no longer required and screen and document sharing have been added.
Next Friday I hope to be talking about iPhone 4s, Nexus Prime, and whether node.js really is a cancer or if node.js is not cancer.

If you’re planning on coming, give me a shout here, or on my Google+ page, and please spread the word.

Comments (1)

Weekly Developers Hangout #2 : remote? working?

Yep, it’s not Scottish, and it’s the second one – I 1-indexed that one, boosh.

A few technical problems – turns out microphones and headphones don’t work unless they’re turned on and enabled, and webcams don’t work if you don’t have one.

So, the chat? Can you work on island whilst the rest of your team are on another island? Webcams will see to most of that, but even on a beautiful island like Mull, don’t expect people to flock from all over the world to you office, just to hack some PHP. Make use of the tools at your disposal.

As some of you may know, I started a monthly technical forum at work, broadcast out from head office to 3 remote sites and whatever client sites people want to dial in from. We make heavy use of slides and low-motion visuals to save bandwidth, and try and keep things accessible to people only on the phone. It’s a big team, and a big effort, but after a year of meetings, it’s really paying off, management are backing it, and it’s a good place for staff to talk and learn. Getting the images and sounds to the remote office isn’t the tricky part (although it’s harder than it should be), the trick is to keep the remote participants engaged. Give them feedback channels in advance of the event so they can get their questions answered. Provide videos afterwards for people to watch at their leisure. And at every opportunity, remind them that their voice should be heard. If an online conversation is swamped by one site, what’s the point of having it online?

If you’re coming along next week, noon at My Google+ Profile (invites : http://goo.gl/P0p2b ) keep an eye on the news for something you want to discuss, or throw a link to a book, a gadget or a toolkit you want to discuss below.

Until next week peeps.

Leave a Comment

Weekly (Scottish?) Developers Google+ Hangout?

I had an idea for running a book club for Google+ Hangouts, but after David Christiansen turned up, it became a more interesting catch-up, covering HP selling off WebOS, and discussing zaproxy ( http://code.google.com/p/zaproxy/ ) penetration testing tool and JIRA agile project management tool ( http://sandbox.onjira.com/secure/Dashboard.jspa?os_username=jens&os_password=password ).

Some good chat, but we were wondering if other Scottish Developers would be interested in a weekly Friday lunchtime hangout to shoot the breeze on the tech stories, tools and blogs of the week.

If you’re not on Google+ and need an invite, give me a shout and I’ll email one back to you, or click here for an invite : http://goo.gl/P0p2b . If you are interested and on Google+ come and find me at https://plus.google.com/112347442728934313588 and jump on in next time. Web cams and mic optional (if you’re a fast typist), but you will need speakers to listen in.

If there’s more good info, I might even start a weekly blog on it, but we’ll see how much interest there is.

What do the rest of you think?

Craig.

Comments (2)

Innovation vs Quicksand

Anyone following me on Google+, Facebook or Twitter may have seen me posting quite a lot about the many Intellectual Property cases currently strangling the mobile computing market. A lot of them involve Apple, but it’s not an attack on them. They just happen to be in the dominant mobile position now that Microsoft was in 10 years ago on the desktop, and so they’ve got the most to lose.

Last decade, the stories were of Microsoft using Windows to cripple competing office suites and promote its own, and the big move to unify the desktop, server and mobile Windows experience with XP and .net, and giving us IE6 and anti-trust cases. Now, we have Apple unifying desktop and mobile, and pushing others away with policies on in-app purchases and legal battles blocking competition in the marketplace.

I like competition. Competition makes phones faster, batteries last longer, and keeps everyone on their toes. Without it, innovation stagnates.

I am not a lawyer, so I don’t understand why a sketch that looks like a sat nav can be used by Apple to stop tablets from competitors being sold. It’s not like the Chinese rip-off that fooled even the employees at the fake Apple stores.

There is something rotten in the world of technology. It’s about patents, copyright and other protection, but whereas it works for Dyson, to protect his cyclone, whilst allowing competition from other bagless systems, the same protections are smothering the computing and smartphone market, distracting all companies into defending themselves against others, instead of differentiation through innovation. I don’t to work in an industry that’s moving through quicksand, dragging platforms, tools and devices back. We’re already held back enough trying to build for incompatible browsers without having to rewrite for new platforms just because the ui of one has protected interactions (think touch screen versions of Amazon’s pervasive One-Click patent). Higher costs for developers, higher costs and frustration for end users and the vendors fighting amongst themselves won’t benefit, ripping chunks out of each other and alienating the rest of us.

Samson needs to come and cut some crown jewels in half.

Leave a Comment

Chimera wishlist : !NullReferenceException

What features from other languages do you wish your main development language had?

As someone whose first real applications were written in C++, the thing that always bugged me about C# and Java (after they got generics and autoboxing sorted) was the way they handled references. In my C++ mind, C# and Java pass pointers around, and pointers are allowed to be null. So every single time I have to use them, I have to check them for null, or set up the caller to make sure they’re not null. As Anders Hejlsberg points out, that single fact causes more problems than anything else in C#.

Also, I wish C# allowed const references like C++ to guarantee an object isn’t modified within a method when passing by reference, which is always useful to avoid copying large objects. C# would have to support const methods too, of course.

50% of the bugs that people run into today, coding with C# in our platform, and the same is true of Java for that matter, are probably null reference exceptions. If we had had a stronger type system that would allow you to say that ‘this parameter may never be null, and you compiler please check that at every call, by doing static analysis of the code’. Then we could have stamped out classes of bugs.

But peppering that on after the fact once you’ve built a whole platform where this isn’t built in… it’s very hard to pepper on afterwards. Because if you start strengthening your APIs and saying that you can’t pass null here or null here or null here, then all of a sudden you’re starting to break a bunch of code. It may not be possible for the compiler to track it all properly.

Anyway, those are just things that are tough later. You sort of end up going, well ok, if we ever get another chance in umpteen years to build a new platform, we’ll definitely get this one right. Of course then we’ll go and make other mistakes! But we won’t make that one.

http://www.computerworld.com.au/index.php/id;1149786074;pp;3

So, what do you wish for?

Leave a Comment

Older Posts »