Like many people, I don’t really use Linkedin much at all. However I do keep my profile reasonably up to date - so when they added the “Skills and Expertise” area along with a system for endorsements I added some items to my profile and left it at that.
A few months down the track, I really don’t think the system is working. Some of the endorsements I’ve received have been from people who have never seen any evidence of my knowledge in the skill they’re endorsing me for. These endorsements are from people I haven’t seen for over 10 years, when my life and career definitely had a different focus, and when some of the things they’re endorsing me for didn’t even exist. I’ll take the endorsements, as in fact I *do* happen to know about the skills I listed on my profile, however the point is that there’s absolutely no way to verify any of this despite the “social” nature of the system, which is where we get to a couple of the big issues I have with Linkedin.
First is the spammy and “in your face” nature of a lot of Linkedin’s reminders and notifications. They’re constantly emailing, trying to convert me to a premium account (No! I don’t want to HURRY to claim your offer of a free month of Linkedin Premium! You’ve been offering me that for 6 months!), and this spamcentric approach applies to the way they handle endorsement notifications, although these are less about email and more about taking up a chunk of screen real estate. When the big section appears with the big “ENDORSE ALL” button, it’s going to be quicker for some people just to click the thing and get rid of it.
Secondly is the “you endorse me for something and I’ll endorse you for something” back scratching culture that Linkedin seems to cultivate (whether they mean to or not). That was certainly how it felt that many recommendations occurred, and it seems like skills endorsements have gone a similar way. I get that this is a symptom of how the modern world works, but the thought that every endorsement out there is just someone trying to improve their own profile is a sad thing, and adds to the reduced value of Linkedin as a service.
So the outcome is a spammy social media site, where a large part of the value added crowd sourced network graph based information about other people comes from a desire to make message boxes go away as quickly as possible, or a selfish need to have endorsements or recommendations reciprocated. That doesn’t sound too useful to me.
Disclaimer: I have “Magnets”, “Paradigm Shifts” and “Enhanced Synergistic Outcomes” listed in my Profile’s Skills and Expertise section, so you may not want to take my opinion of Linked in too seriously.
Tags: Social Networks
I’ve spent the last couple of months involved with a project that makes heavy use of Windows Azure. On top of that, there’s been a lot of recent enhancements and improvements in the world of Azure, hence this post has an Azure theme, covering Azure related things which have appeared over the last few weeks.
Windows Azure: Active Directory Release, New Backup Service + Web Site Monitoring and Log Improvements – some new features released on the 8th of April - cloud based Active Directory, Windows Azure backups, and diagnostic improvements to Azure Web Sites.
Introducing the Event-Driven Message Programming Model for the Windows Azure Service Bus and What's New in the Windows Azure SDK 2.0 Release (April 2013) both cover some new features that were recently added to the Windows Azure Service Bus specific. The new event driven programming model looks handy. TL;DR – some cool stuff was released for the Service Bus.
Penny Pinching in the Cloud: Enabling New Relic Performance Monitoring on Windows Azure Websites – using New Relic to obtain handy performance monitoring information from your Azure based sites (TL;DR – oooh shiny graphs!).
Windows Azure SDK 2.0 for .NET Released - Some cool new stuff – improved publishing and management for Web sites (which of course are still in preview mode), streaming diagnostic logs for Web sites, updates to the Visual Studio Table Explorer, performance updates, new powershell cmdlets, and more. I’m looking forward to Web sites coming out of preview, as they’re looking more and more like a viable (and cost effective) option for some of our hosting.
If you’re someone who liked videos, then you can also learn more about the SDK release, and see some demos of it in action, from Scottgu’s visit to the Cloud Cover Show on Channel9:
Publishing to Azure Web Sites from any git/hg repo – handy deployment options for Azure Websites where the code is hosted on either:
- a local git repository
- a TFS project
- a git project on GitHub
- a git or Mercurial project on Bitbucket
- a git or Mercurial project on CodePlex
- code in a Dropbox folder
Tags: Microsoft, Windows Azure
Here’s a few useful Sublime Text related items. I’ve been using Sublime Text as my text editor of choice for many years and don’t think I’ve even scratched the surface of what it can do yet.
Flatland is a simple theme and accompanying color scheme for Sublime Text 2 – based on the Soda theme, looks nice.
Syncing Sublime Text 2 Settings via Dropbox – contains instructions for both Windows and OSX.
Tags: Sublime Text
Hacking the <a> tag in 100 characters – obvious but interesting. Just when you thought you’d made your Mom safer online by hovering over a hyperlink to make sure it’s going to where she thinks it’s going (although you could argue that 3498349 layers of URL shorteners over every damn thing are already ruining that for her).
Makeover Your Résumé as an Interactive Infographic – uses infogr.am which looks pretty cool.
Macbook Air Deconstruction – neat. Although at the end the lights come on, but, does it boot?
JSON debugger/visualizer for Visual Studio 2012 – In the past I’ve used Sublime Text with some JSON syntax highlighting as well as some simple web based tools so having this in the IDE is handy.
The Harlem Shake for iOS – open sourced, for all your iOS based Harlem Shaking requirements.
Export your Google Reader feeds – useful for anyone who’s never actually looked at where the export function lives! It’d be so easy to fill this post with links entirely about Google Reader shutting down.
A while back when I ripped open by Macbook Pro to install a second HDD I commented on how it felt a little ‘wrong’. I also mentioned a semi random crippling speed issue with VMware Fusion and the Optibay (actually it’s related to any additional hard drive by the sounds of it).
Well it seems that the thread and the issue are both still alive and well and frustrating people well over a year after I originally created it.
I’m kind of surprised by that, but have to wonder whether it’s the sort of issue that pops up due to the closed/controlled nature of Apple hardware. Developers aren’t used to needing to cater for a huge variety of hardware configurations, and instead probably (I’m guessing, clearly) get used to simply checking what model and era they’re executing on and assuming that no evil hackery has gone on since the machine was shipped from the hallowed sanctum of Cupertino (or from China, whatever).
Granted, the nature of virtualisation (or virtualization for those who prefer the z) is as such that it’s working at a much lower level than a lot of standard software, so it’s a class of software that’s more prone to issues with non-standard hardware, but I’d be really interested in whether there’s a lot of other examples out there of software issues like this popping up with Apple hardware that’s been modified.
The issue was crippling, and made it impossible to use virtualisation, so in the end, my “fix” was to buy a new MBP. I still stand by what I said in my original post in that the MCE Optibay is a great modification, but I really did find the whole experience “interesting” and can’t see myself ever wanting to modify any Apple hardware I may or may not own in the future. I also find myself wondering, if maybe that’s not entirely unintentional on Apple’s part.
Tags: OSX, Apple
Securing Web Application Technologies – “The SWAT Checklist provides and easy to reference set of best practices that raise awareness and help development teams create more secure applications. It's a first step toward building a base of security knowledge around web application security. Use this checklist to identify the minimum standard that is required to neutralize vulnerabilities in your critical applications.'” (or grab the poster here in PDF format)
6 Reflections After 3 Years of Business – in the style of Patrick McKenzie. Summaries like this are useful – this post inspired me to do a quick (private) one of my own, and there’s something about seeing numbers visualised that can be incredibly powerful for both planning and reflection (yes, I realise that’s stating the obvious a little).
Step by step from jQuery to Backbone – experienced in jQuery but interested in Backbone? Well, click the link.
Extending the ASP.NET Optimization Framework – a couple of useful ideas for customising ASP.NET’s bundling and minification functionality introduced in v4.5. Particularly useful for anyone using jQuery templates.
Bundling and minifying in ASP.NET MVC – a basic 101 post introducing the aforementioned functionality, with a couple of tips and tricks thrown in.
Holy Grail of eCommerce Conversion Optimization - 91 Point Checklist and Infographic – I found the infographic a bit of a mess, but when you look at the items in list form there’s a few there that are good points and reminders. There’s also a lot of recommending services that are probably affiliates of SEOMoz.
When thinking about software architecture, one of the things I’m always keeping an eye on is third party dependencies, and here’s a reason why: The Facebook glitch that took out your favorite site proves the web is more vulnerable than ever.
The issue was fixed pretty quickly, but it’s still a great example of why you should think carefully before introducing an addition dependency into your system, especially to something important such as “login”.
As a side note, I was involved in adding Facebook login to some large eCommerce sites last year, and in doing that we experienced a few minor glitches and outages on Facebook’s side – the experience of not being able to do anything to fix an issue, and having to sit back and wait for Facebook was an interesting experience. A good one to have early on in the process as a reminder about this sort of danger.
NZ readers will probably have heard of Novopay, and the issues it’s had that have made the media. For non-NZ readers, it’s basically a new payment system that went bad and messed up a load of people’s salary and wages payments.
This story, Ministers knew of 147 defects with Novopay, highlights the fact that the software team involved had entered into the project as a fixed price deal, and the article makes it sound like things went sour pretty quickly. I don’t have any insight or knowledge into how the Novopay project was run, but after reading the story and having been involved in many fixed price projects before, I have a few thoughts, and they mostly revolve around changes and change request management.
Firstly, I’d love to know how many changes to the initial scope were made by the Ministry after signing off on the fixed price deal. I’m not saying they made any, they may have made none whatsoever, but my experience says otherwise. Handling change requests in a fixed price project is hard to do well. Why? Many reasons, I suspect, and they’ll vary from project to project. If the first change request crops up early on, the developers could decide to simply do it, rather than force a change request – either because it’s a small change, or because they decide it’s easier to just do it “just this once” than have the discussion about charging for a change to the scope. Then, subsequent change requests get harder to discuss… it snowballs, quickly.
It can also be contentious to define what’s a bug/defect versus a legitimate change, and you can spend a lot of time arguing the point – which results in a lot of lost goodwill between parties. That’s often a reason for the “sigh just do it” path, as it’s easier and better PR than the alternative, especially if the amount of work required to make a change isn’t large - however these instances all add up over the course of time, especially on a large project.
Next, related to the previous points is the quality of the project’s supporting documentation. Were both parties involved in all documents? What I mean here is that if the customer wrote the business requirements and the provider wrote the technical spec, then there’s a chance the customer didn’t read/understand the spec, and just assumed the provider covered all the requirements. “We’re not technical, so this document isn’t for us”. It’s so easy to end up with thousands of pages of useless documentation that help no one and never get read, but still manage to tick enough boxes to convince people that they’re good and useful.
Looking at the timeline of the project, it’s fairly apparent that it was a large project in that it was measured in years. In the current environment of change, I wonder (out loud) how do you factor that rate of change into a project when creating a fixed price? One way is to include a huge margin on top of your quote (and of course there should be some contingency and margin, as fixed price should be a more expensive option, because it means that the provider is taking all the risk), but that’s likely to get the customer asking a lot of questions. Another option is to break the project into phases, price each one separately, and agree to a review before commencing each phase to check for factors which have changed – however if the customer wants a fixed price, then they want a fixed price, and probably won’t be too keen on that option.
I’ve used this quote before, and although it’s a quote about agile I think it’s incredibly relevant to large software projects and fixed prices:
Agile thinking requires us to recognize that we cannot plan further than we can see, and that predictions and estimates become hazier the further into the future we try to project. This recognition makes the traditional concepts of carved-in-stone estimates, schedules, and even corporate strategies untenable. If we can’t know what the marketplace will look like in three years, much less how our teams will choose to respond to the new realities, what’s the point in planting stakes in the ground?
Maybe none of the above points apply to Novopay, it’s certainly a possibility, however while reading that story I couldn’t help feeling that there’s another side to be told, and that it probably involves the topic of change requests.
So, are fixed price projects for suckers? Maybe. Sometimes. The post title is deliberately provocative, and it’s never that black and white in reality. I think it depends on the customer, the size of the project (and the nature of the project), and many other variables. However, I do think if you’re entering into a fixed price project without being confident that you have a good framework in place to handle it, and if you’ve not planned for the worst case scenarios, then you may well be a sucker.
Note: If you’ve got an approach, strategy, or even just some tips and tricks that you use to help manage fixed price projects and change requests, then I’d love to hear about it! Drop me a line, send me an email, send me a Tweet, whatever works for you!
Tags: Project Management, Management, Methodology
jQuery Mobile Advanced - More jQuery Mobile and jQuery Mobile Themes – links to some advanced jQuery mobile articles with an ASP.NET theme.
Improve the performance of your ASP.NET app – and find out if your database is slowing you down – free ebook from Red Gate, which is also something of a publishing experiment:
This book began as a publishing experiment: could we make the collective wisdom of the ASP.NET and SQL Server communities available as an eBook? We chose performance improvements as our topic, and started asking for tips in November 2012.
The ASP.NET developer checklist – a checklist of best practices, with the code on Github too for anyone interested.
OWASP Tesing guide – it’s not new (2008) but is pretty extensive, so is worth a fresh mention.
Taking payments online (in Europe) in 2013 – an interesting read for anyone who has worked, or does work, with online payments.
Liftoff is “a CLI for configuring opinionated defaults for new Xcode projects”.
My name is Ross Hawkins and I'm a developer, consultant, business owner and writer based in Auckland,
New Zealand (pictured below!). My current work revolves around ASP.NET, C#, jQuery, Ajax,
SQL Server, and a mix of other Microsoft development technologies.
I also have about 15 years of experience with IBM Lotus Notes/Domino and associated technologies. While Notes/Domino
is no longer my primary focus I still like to dabble and keep my skills up to date.
I own and run 2 businesses - Hawkins Consulting Services,
and Ignition Development.
delivered to the browser. Previously, ASP.NET 1.1 used the
aspnet_client directory whereas now 2.0 uses WebResource.axd.
Published on October 8, 2006
jQuery Wildcard Selectors - some simple examples
I wrote about jQuery wildcard selector syntax briefly back in 2009, and since then that post has received a lot of views â€“ way more than a post that brief should ever have seen..
Published on October 14, 2011
Microsoft AJAX Extensions: Sys.Debug is null or not an object
One of the breaking changes which was made with
the 1.0 release of the Microsoft Ajax Extensions was the renaming
of the 'Debug' class to 'Sys.Debug' for reasons of compatiability
with other frameworks. Breaking changes like this can often be a source of frustration..
Published on May 22, 2007
Simple ASP.NET Character Counter
Published on December 4, 2006
Adding Tooltips to Gridview Headers
As the title says, this is a very simple but dynamic way of achieving tooltip text on a header column. It's not overly flash, but it's lightweight and quick to implement.
Published on April 15, 2007
May, 2013 (2)
April, 2013 (2)
March, 2013 (2)
February, 2013 (3)
January, 2013 (5)
December, 2012 (4)
November, 2012 (4)
October, 2012 (3)
September, 2012 (3)
August, 2012 (4)
July, 2012 (1)
June, 2012 (4)
May, 2012 (2)
April, 2012 (4)
March, 2012 (2)
February, 2012 (4)
January, 2012 (3)
December, 2011 (3)
November, 2011 (8)
October, 2011 (9)
September, 2011 (8)
August, 2011 (5)
July, 2011 (4)
June, 2011 (7)
May, 2011 (5)
April, 2011 (3)
March, 2011 (8)
February, 2011 (4)
January, 2011 (3)
December, 2010 (8)
November, 2010 (5)
October, 2010 (6)
September, 2010 (7)
August, 2010 (11)
July, 2010 (12)
June, 2010 (8)
May, 2010 (8)
April, 2010 (4)
March, 2010 (8)
February, 2010 (6)
January, 2010 (12)
December, 2009 (13)
November, 2009 (11)
October, 2009 (12)
September, 2009 (12)
August, 2009 (2)
July, 2009 (7)
June, 2009 (12)
May, 2009 (9)
April, 2009 (9)
March, 2009 (9)
February, 2009 (8)
January, 2009 (7)
December, 2008 (6)
November, 2008 (7)
October, 2008 (9)
September, 2008 (12)
August, 2008 (9)
July, 2008 (6)
June, 2008 (24)
May, 2008 (13)
April, 2008 (16)
March, 2008 (8)
February, 2008 (10)
January, 2008 (1)
December, 2007 (14)
November, 2007 (11)
October, 2007 (11)
September, 2007 (13)
August, 2007 (11)
July, 2007 (5)
June, 2007 (15)
May, 2007 (11)
April, 2007 (9)
March, 2007 (9)
February, 2007 (10)
January, 2007 (8)
December, 2006 (18)
November, 2006 (11)
October, 2006 (14)
September, 2006 (9)
August, 2006 (10)
July, 2006 (4)
June, 2006 (4)
May, 2006 (6)
April, 2006 (3)
February, 2006 (6)
January, 2006 (10)
September, 2005 (2)
August, 2005 (4)