Thursday, 11 December 2008

Revamp & Revise, Don’t Regurgitate

I have just read a blog post (will keep the link to myself I think – I don’t want to offend the writer) that seems to me a real problem with a lot of what I see coming down the RSS tubes to be fed in to my brain.

People pick good topics to write about. But how often do they write something that makes us think differently, question what we do, help us to improve our skills/craft?

The article I am referring to was actually discussing dirty/smelly code. It did a great job in identifying some common code smells, but did little to actually give insight in how to rectify them.

I have approached this before (the topic of discussion in the article in fact) with a question of mine on StackOverflow*. In this question I asked “what are code smells?” and importantly “how do we fix them?”.
* This has actually turned out to be my most popular question!

Otherwise, what do we have? We have a lot of people on teh Interwebs going “this is bad! this is bad!”. Well duh! We know! Tell us how to fix it, what is good? how can we rethink things to make it better all-round?

I may not write much on this blog, but I always try to end things on a note that will hopefully make you think. It is thinking and creating that makes us evolve. Even if people get nothing from what they read here directly, if they walk away and something switches on a light bulb in their mind, I will be a happy man.

Think about what you see, write about what you think. A blog post should be a personal web log, not a themed photocopier.

I am all for inspiration based on other blog posts (that’s what made me write this one) but don’t just repeat what “that guy” said – do something with it.

Ask yourself:

  • Why do I like this blog post? For you to be wasting your precious time with it, it must have some sparked some brain activity
  • What do I not like about the post? What you don’t like is not always negative, negative thoughts can highlight positive simply by contrasting.

This can then lead to other interesting questions:

  • What does the post talk about?
  • Is it a niche subject area?
  • Is it something you are working on/have worked on?
  • Can your experience bring extra insight to the topic?
  • Do you feel any areas been missed in the discussion?
  • Would it be useful to a friend/peer group?

These sorts of questions when answered in your own article will add a real personal edge to the post. You will be offering more of what you know rather than what “the other post said”. You may be engaging more with your community/peer group. Links to other people that may also have interest helps share the love.

Can your posts make people say:

“Yeah {Your Name} talked about that too, they had some interesting thoughts about X, Y, Z. Really got me thinking.”

Hmmm? :)

Wednesday, 10 December 2008

Software IS Service

http://www.iso.org/iso/it.jpgSo, there is often lots of talk about SoA and SaaS within the geek community. They are great ways to build reusable, malleable frameworks and provide functionality to people, great.

But I can’t help but feel that even with all of these acronyms and buzzwords that we are sometimes missing the point. Software, regardless of design is about providing a service. This may be a humble “beep” to let people know something has happened, to keeping people connected and communicating, to maintaining a life support machine to keep someone alive!

As developers, we should never forget this core purpose. Think about the application, what it is going used for and what it could be used for. The “could” is important, as this sparks innovation. You may be able to write a Facebook clone, but can you make it better?

I like to think of it like this. You go in to a store, you want to purchase that awesome new Christmas sweater you have seen, you get to the store and are horrified that they are out of stock! Oh noes! So you ask the cashier if they have any more in stock they look up, rather bothered that you have interrupted their stream of nothing and say “sorry that was all our stock” (let’s say they are telling the truth as well). You then walk away from the shop, saddened by the fact you will not be looking cool this Christmas.

Now, lets say the cashier is the software, at this point, it is serving customers and taking their money, exactly what all cashier’s do. Does it work? Sure, but how is the service? Terrible.

Now, take two. You go into the store and they are out of stock, you ask the cashier and they say “I’m really sorry, we are out of stock – but wait a second, I will see if our other stores have any in stock”. They then run off to a phone, and you hear them talking. They return to the desk.. “I’m really sorry, these sweaters are real popular, they are out of stock too”. “Oh, OK” you reply with a sad, sad face and slowly begin to turn to leave. “Wait!” the cashier shouts, “I have one more thing I can try”. They then run off to the phone again, you hear some more talking, and they return to the desk..

“I have just been on the phone to distribution, they are getting more of these in stock on the 19th, they will be in store on the 20th. Did you want me to take your name and number and let you know when it’s here?”.

Bingo. The cashier has thought outside of the box, and done their best to provide an end-to-end service. They went far beyond the required “take money, put in till, give receipt” to strive towards a goal of service delivery.

Perhaps we need to think about development differently? Do we need a new focus? A new paradigm? Goal/Service-Driven Development perhaps?

What are your thoughts?

Can’t Link, Won’t Link #4

ASP.NET

Debugging with VS2008 at the Dallas ASP.NET UG – A look at various debugging tools available to the ASP.NET developer.

Development

Using Singletons Safely - @Mendelt talks about not how to create this popular pattern, but rather how to use it safely – something often missed in other guides.

50 Extremely Useful and Powerful CSS Tools – LONG article (was trying to read on my Xda!) but covers a LOT of good tools. Very good resource.

Experimental Study about TDD – From the people at Channel9, Nachi Nagappan talks about the good/bad sides of TDD, based on metrics (not had a chance to watch this myself yet, but it looks like it may be interesting).

Design and Testability – Good article with some good links about how design and testability do not always go hand-in-hand, but design and test-focused development (TDD/BDD/ATDD etc.) can reap some great rewards.

TDD Does Not Mean “Test First” – Great article on testing approach. Only just found Sarah’s blog, check it out, some good reads!

GTD

How to Control the Way You React (Part 1) – I REALLY need to read this, re-read it, and then read it again! :)

5 Key Characteristics of a Successful Entrepreneur – Interesting article, a colleague and I were actually discussing point four the other day.

11 Ways to Cure “Someday Syndrome” – Good article. Real food for thought on rather than thinking/dreaming about getting things done, actually get them down in to a project and actually done!

Community

Start Up Your Web Business with Microsoft BizSpark – I actually use DreamSpark since I am studying in MS technologies, and I have to say, its an AWESOME scheme. Great to see “M$” helping out the startup’s too. Good job MS!

First Look: Firefox 3.1 Beta 2 – Firefox gets it’s own Chrome’s “Incognito” mode..

Monday, 8 December 2008

Can’t Link, Won’t Link #3

ASP.NET

Oxite, ASP.NET MVC-based Blog – Video from the peeps at Channel9 and some code they put together :)

3 New Hands-On Virtual Labs for ASP.NET – Covering ASP.NET AJAX 3.5 SP1, Developing ASP.NET Dynamic Data and Introduction to ASP.NET MVC.

How to create nested master pages in VS2008? – Title says it all :)

Community

New Firefox extension turns Amazon.com into illegal free-for-all – Dubbed “Pirates of the Amazon”, while inappropriate I thought it was an interesting concept (certainly sparked some discussion for me on Twitter). Sadly, it has already hit the rocks.

40 Ways to deliver killer blog content – as always, Chris Brogan offers good advice, I need to take a lot of this on board.
Twitter needs two Channels – Chris Brogan brings another good article about making Twitter a more useful platform/system for all concerned.

Don’t be afraid of people better than you - @SaraJChipps writes a good article on why we should deal with the fact some people are better than us, and then learn from them.

Development

Advice on partitioning code through assembliesPatrick Smacchia offers his thoughts on how and when to create a new assembly for your code.

A fluent approach to C# parameter validation – Great article by the guys who bring you Paint.NET, the awesome free paint-replacement application (and then some).

What is a good test? - Sarah Taraporewalla offers her thoughts.

Friday, 5 December 2008

Can’t Link, Won’t Link #2

I never got the chance to post yesterday, so there may be a double-whammy today!

GTD & Lifehacking

Solid State Drive: Enhance developers' productivity – Good article that has got me seriously thinking about upgrading my primary drive to a SSD..

Productive Brain Exercises? – Good list of mental exercises to help keep the old noggin fresh.

Google Reader – Square is the new roundVERY INTERESTING – Look at the interface Google now seem to have taken on compared to the previously linked Helvetireader..

Development

List of talks now up on C# in Depth site – Jon Skeet, the man, the legend has posted links to his talks on the C# in Depth site.

Book: Coding4Fun, 1st Edition – Another book that popped up on the Safari radar. Looks like it may be good for those looking to get more creative and have some fun with code in their spare time (without too much digging!).

Design

Expression WebcastsSeries of webcasts on MSDN for Microsoft Expression.

Designing the Holy Search Box – Good article looking at the design of the lowly-yet-oh-so-important “Search” box.

Book: Everything you know about CSS is wrong! 1st Edition – Added this to my Safari this morning. Touches on the common CSS vs. Tables issues and the like. May be a good read.

ASP.NET

Controlling HTML in ASP.NET WebForms – Podcast on how to get some control back of your markup in ASP.NET WebForms.

Management

How to fight management incompetence – Good article on overcoming some common management failings. I personally took some of this on board even though I am not a manager, especially the point about accountability.

Discuss Results, Not Tasks – Covers changing perspective to focus on what has been done rather than what must be done. Food for thought.

Do You Love What You Do?

(Photo by icadrew) I’ve been having some interesting discussions with some work colleagues of late. The general theme was “are we happy with what we are doing?”.

Now, I do not want to speak badly of my employer, they pay me money which allows me to do things that I want to do. However, there is a general feeling of upset at this time as we have been through a rough project, and the current outlook it that it is not going to improve in a hurry. I personally just take it as a challenge, I am not the sort of person to let something bother me for too long before doing anything about it, so I don’t let things like this phase me (other than my initial rants!).

I responded to the question with:

I love what I do, I just don’t like the way I am/we are doing it.

The thing is, while walking home from work, this really sparked some brain activity, because I was lying. Recently, I have NOT been loving it! I have been fed up going in to the office, and this was rubbing off on ME and my outlook.

I got in to software because it interests me. It makes me question everything, how do things work? Why do they work that way? Could they work better? This spills over into everything that I do. Due to this, programming for me is a passion, maybe an obsession.

The good news is, I have been making changes to improve my outlook, I am reducing some of the study stress, being more assertive at work and trying to code more of what I want in my spare time. This helps keep the creativity flowing and the brain energised. Once again, I am loving what I do, yeah there are some bad bits, like the 9-5 drag, but I am still getting my fixes in the evening. :)

I have also started working on some ideas with @Mendelt which has been great. He is a very switched on guy and TBH, even if we do not use a single line of the code we produce, we have already had some interesting discussions, and he has got me learning new ways of working and thinking more about what I do. So, if you are reading, thank you Mendelt.

This all adds fuel to the fire of creativity, which is something we should all strive to keep burning. Do whatever it takes to keep the fire burning that makes YOU love what YOU do.

Tuesday, 2 December 2008

Can’t Grok, Won’t Grok.. Can’t Fix Your Car Either

So, while reading @Mendelt’s blog post I thought “What the hell” let’s see what this site thinks of my blog (and my brain)..

ISTP - The Mechanics

The independent and problem-solving type. They are especially attuned to the demands of the moment are masters of responding to challenges that arise spontaneously. They generally prefer to think things out for themselves and often avoid inter-personal conflicts.
The Mechanics enjoy working together with other independent and highly skilled people and often like seek fun and action both in their work and personal life. They enjoy adventure and risk such as in driving race cars or working as policemen and firefighters.

Interesting results.. Anyone who knows me will know I wanted to be in the Royal Marines (before it all fell through due to medical reasons). I am also a little bit passionate about what I do (as people on my twitter network will probably tell you!).

You also get a nice image of your brain:

image

Which is also incredibly accurate.. I have no feelings, intuition or the ability to think…

Sadly though, I am not a skilled mechanic and if your car/bike/tank is playing up I will not be able to do much to fix it :)

What type is your blog?

Can’t Link, Won’t Link #1

I have been giving my blog some thought lately, I’ve been really busy with both study and work - I really can’t wait to have my studies done next year so I can do more of what I want to do!

Like most geeks, I read a lot of information each day using RSS in my reader (I use Google Reader). Some of this does nothing for me, others spark a large amount of interest.

The sad thing is, at this point in time I rarely have a chance to follow up on it and play with my thoughts but I cant help but feel I need to at least get something down, anything! Even if I don’t get a chance to play with it myself, I can at least possibly spark interest for other people who can.

So I decided to start “Can’t Link, Won’t Link”. This will give me the opportunity to share any links I find that may be of interest, with a small summary of my thoughts on it. Hopefully, this will spark some interest your end, and will also serve as a repository and public reference point for some of my ideas (which may later become projects).

Some of the links may be new, some may be old, some may be boring, some may spark a fantastic idea!

Please comment and let me know if you will possibly find it useful!

Development

Back to Basics: Delegates, Anonymous Methods and Lambda Expressions - Good article covering something that so many developers (myself included) may not understand entirely.

MVP Design Pattern Screencast – The good folks at the Springfield .NET UG have been kind enough to create and share a screencast on the MVP design pattern.

5 Books Every Developer Should Read – Good reading list, check out the additions in the comment too.

GTD & Lifehacking

10 Keys to Work/Life Balance – Article that has been very useful to me recently. Stepcase Lifehack has been awesome in consistently delivering great articles.

Your Creative Genius Mindset: The Essential Qualities for “Outside the Box” Thinking – Another good article from SL on getting creative.

ASP.NET

Beware Of Deploying Debug Code In Production – Covers key points about that one little attribute in your <compilation> tag in your configuration file.

ASP.NET Patterns Every Developer Should Know – Covers some of the basic patterns that every ASP.NET web dev should know. Take note: The Singleton implementation shown is not thread safe. This is likely to be a big deal in a web application.