Tuesday 27 March 2012

Development Environment Must-Haves: Standard Build and Deploy

In this short series I'll outline the tools you really do need for a professional quality software development environment. Many of them will seem like common sense to many of you. Many of them have been inexplicably missing from development environments I've seen over the past few years. The list isn't meant to be "the final solution" - you may have these things, you may have alternatives, you may have nothing at all - in which case...

Standard Build and Deploy


Photo credit: nyuhuhuu on Flickr
Some years ago I was lead developer on a Java project and had about 6 software developers working for me. We had a "standard build" which we were developing using ant in order to streamline the development process. Our source code was being managed in VSS. I was often frustrated to find that I would get the latest code base from VSS and that the build didn't work. I would look at the check-in history and ask the programmer about their changes, and the fact that they didn't compile. The programmer would invariably look confused and say "well, it compiled in -" and then name an IDE application they were using on their PC. I think we had some with JBuilder some with Netbeans some with IntelliJ and it was a bit of a free-for-all despite my client trying to standardise.

This was where the drive for the standard build came from, to have something which would be the "de-facto" process, where the components would be built and packaged, and if it didn't build there, it was regarded as a failure.

With time, the IDEs were standardised, but I do remember impressing on my team on more than one occasion that "It doesn't matter if it builds in JBuilder. It doesn't matter if it builds in Netbeans. All that matters is that it builds when I build it using the standard build ant task".

Using a tool like ant, it's only a small step to run tasks to carry out deployments, and having spent some time going back to manual deployments (in a case where there were no tasks implemented) the value of these were underlined even more.

Summary of Gains


  • Consistency of builds
  • Easier management of build artefacts (built code libraries and also support files)
  • Faster deployment of artefacts for testing

Monday 19 March 2012

How NOT to Reply to Job Posts on LinkedIn

Photo credit: Nan Palmero
With a little effort, you can lose that dream job with a carefully crafted comment on LinkedIn.

Last week I saw a recruitment post on a LinkedIn group. If I'm honest, I have to say that it might well have been spam, certainly the organisation the poster works for has a less than stellar reputation in some parts, but that's neither here nor there. For this discussion, the poster gets the benefit of the doubt.

The message ended with "I am recruiting now" and "Message me if you are interested". There are five public comments from interested parties:
  • What is it that you do?
  • What's the business about? I'm really interested.
  • Hello, I am interested in hearing about your business. :)
  • Interested, too. What's it about?
  • Can you please send further information (****@gmail.com)

Now, I know quite a bit about the job, because I opened the poster's LinkedIn profile, had a quick read and clicked through to the web site. At this point put yourself in the position of the recruiter. Having posted your vacancy information, you get two sets of replies:
  • Those who read your LinkedIn profile and web site and contacted you directly with a message indicating they had done some research and were interested in what you were doing and what the job might involve.
  • Those who posted a follow-up asking what it was all about, with no hint that they were prepared to spend even a small amount of time researching your business.
Which set will you use as a basis for your shortlist?


Tuesday 13 March 2012

Do Conference Tweets Say More About You than the Speaker?

There are those who do... and those who Tweet...

I was at QCon in London last Friday to be on a panel session. It was fascinating to see what goes on at conferences now, having not been to one for years. Good to see Tweets in context whilst actually being at the event, rather than from afar.

Picture by NCVO

Like any such event, the talks (I managed to get to four) varied in terms of interest, presentation and engagement, depending on what you want to learn about, and the experience and skill of the presenter. What surprised me were a couple of Tweets about a talk that I attended on the data structures behind LinkedIn.

The early parts of the talk were interesting, and helped me to understand a bit more about what goes on behind the scenes when various LinkedIn events take place, such as making a new connection. After a while, it did lose its way slightly, and I found it harder to follow, probably due to a lack of understanding on my part of the finer points, and perhaps a rather flat presentation style on the part of the speaker. Frustratingly, he also hinted at some new excitement within the architecture, but didn't cover it in the talk.

Anyway, that's my opinion. Someone else's opinion expressed on Twitter was more along the lines of "hey, we've got this great new storage architecture, but I'm going to talk about Oracle instead" and another described the talk as a "snooze fest" and expressed relief that it did at least finish early.

I get the impression they didn't like it. They could have walked out (perhaps they were some of those who did in fact leave, as happened in most of the talks I attended, as people made an early decision to swap rooms) rather than stay. True, it wasn't the greatest talk but then it wasn't awful either, and for all I know, the presenter was doing it to get out of his comfort zone (as I did with the panel session) and he was at least prepared to try to share some of his knowledge. Yes, I know that people paid good money to be there and have expectations, but something else occurs to me:

If you're recruiting, who are you going to choose when you do your social media background checks - someone who's prepared to do something (the speaker) or someone who's prepared to Tweet about how bad it all is?

Wednesday 7 March 2012

Pinterest Pin Notifications - Updated Email Format

In a previous post I set up email notifications for new pins on Pinterest using ifttt. I soon changed the default email format so that the subject line of the email told me pretty much everything I needed to know: that it was Pinterest, who pinned, and when. The change to the ifttt task to do this looks like this:


Monday 5 March 2012

More LinkedIn Data Analysis

Looking deeper into the data available from the LinkedIn API reveals more about how it is used by the connections in my network.

Previously I described how I had used the LinkedIn API to extract data from my network, and the results of some basic analysis. Since then, I've made enhancements in order to:
  • Extract network events of other types, not just Shares
  • Store the event data in a MySQL database
  • Query the database to analyse usage
  • Present summary results using RGraph
This month I am concentrating on what is probably the most commonly used aspect of LinkedIn, namely expanding a network of connections. For January, I had already established that only around 10% of my network were sharing updates or article links, so for February I was interested to see whether it would be the same sort of figure for establishing new connections.

I suspected that it would be higher, and I was correct: nearly half in fact as the charts show. Note that clicking on the chart below will take you to a web page created solely for this purpose:


Thursday 1 March 2012

Get Pinterest Pin Notifications with ifttt

Pinterest will notify you when others like, re-pin and comment on your pins, but there doesn't seem to be much to help you with what the people you're following are pinning. You don't really have a choice other than to check your home page on Pinterest to see what's new. Help is it hand however from a combination of something Pinterest does offer, and another rising web star, ifttt.

If you check your home page on Pinterest, you'll see the RSS feed icon under your profile. Hover your mouse over that icon and you'll see the URL for the feed. If you click on the icon, you'll see the feed in your browser. Of course, you're not alone in having this feed, other users on Pinterest have one as well, and it gets updated whenever they pin something new. If you watch this feed, you can know when the people you follow pin something. However, this could be a lot of feeds to monitor.

Ifttt stands for "If this then that" and is a rules-based processing engine for web applications. You can find out more here, but in a nutshell, it allows you to check something has happened, and if it has, perform an action.

One of the things it can check is for a change to a feed. You tell it the feed, and it checks it for changes at a regular interval. When it does change, you can give it an action to perform, such as sending you an email.

Here's how to create a task in ifttt which will send you notifications when someone pins something new on Pinterest:

Create a new task - click on "create a task" and the initial prompt screen appears:

Click on "this" to add a channel. The screen looks like this (I've selected the "Feed" channel):
Clicking on this will result in you being asked to configure the feed channel, here I've just selected a new feed item:

Now configure it with the Pinterest feed you want to monitor, for example for http://pinterest.com/npellinacci/feed.rss you would do this:
Next click on "Create trigger" to complete this step. You'll then be asked to choose the action to perform:
Click on "that" and you'll be asked to choose a channel for the action, here I've selected "Email":
Clicking on this will result in you being asked to configure the action channel, which in this case is just to send an email:
When you click on this, you'll be asked to configure the subject and body fields for your message, which will appear with some pre-populated data items from the trigger channel. For now, you can leave this as it is and click on "Create action":
Finally, a summary of your task appears, and you can add a description for it, remember to make it meaningful, and then click "Create task" to complete your work.
And you're done. Now, whenever ifttt detects a change to the feed, you'll receive an email to let you know.