Not so super Mr Branson…

One of the most exciting things for me this year, was to get a Fibre Optic internet connection.  For years I’d been subjected to my mates bragging about how quick their internet connection was.  So I convinced my house mate that we should get Virgin’s “Super Fast” 30Mbps connection.  And I thought my worries were over.

Nope…..

Since installing the “Super Hub” which was apparently made by Netgear (I doubt this as it sucks, and Netgear make great kit!), I’ve had the network go off-line for no reason, I cannot connect to the router, despite no settings changing on it or my computer, and when I can connect with an ethernet to the router, I cannot connect wirelessly.

The last straw was tonight, when I was on the phone for 15 minutes, and that was listening to the same music, which was beset by white noise!!  Further more, I had to speak to a lady, who after telling her I was a computer programmer and experienced in networks, insisted that I “try turning it off and on again” (am I in an episode of the I.T. crowd?)  which I dutifully did, and when she couldn’t see anything wrong on the router, came to the conclusion that my computer was to blame. 

Now this was despite the fact that my computer in no way sets it’s own IP address or anything of the sort, however the lady was adamant that my computer was at fault.  Despite the fact that neither my laptop or my housemate’s laptop could connect to the router, it was all our computer’s fault.

30 minutes later, and considerably lighter in my pockets, I decided to ignore the lady, and did a factory reset on the router.  After which the LAN worked, but still no wireless.  The one redeeming feature of the super hub is that it has a modem mode, so I found my old netgear wireless max router, and connected that to the super hub, and so far it works.

Needless to say, I’m having some serious questions to ask of Virgin’s “Customer Service”  I was on hold for ages, and treated like an idiot, despite the fact I was nothing but polite to the nice lady (who’s english wasn’t that good….)  And having read up on their forums, there’s been a blight of complaints about the “Super Hub”. 

So in finishing, I’ll say choose very carefully who you go with.  If BT had rolled out their fibre here, I’d have probably gone for that, but as that’s not the case, I’ll have to put up with Virgin for a while longer.  I can’t wait to see what they’ll do to wind me up next!

Tools….

Ok, I’m going to kick off this post with something controversial.  I like Microsoft!  Yup, that’s right, I’m a Microsoft fan.  I enjoy using their products like Visual Studio, Windows 7, the live writer tool I’m using to write this. 

Having said that, I also really enjoying using Linux, I use around five different distros (Debian, Fedora, Mint, Gentoo and Ubuntu at the moment.)  I enjoy playing with them, developing on them and generally learning a great deal about computer programming the whole time using them.

And I can do that on Windows too.  What I don’t get, is why is there such what seems like hatred between the camps?  I’m not going to apologise for using a tool that makes my life easier, why should I?  I got this at work a few days back, where I use Kate for editing my source code.  (I develop C++ in Unix), and got a huge backlash from a couple of developers.  The usual comments like “real developers use vi”.  So you’re saying that I’m not a proper developer because I don’t use the “right” editor?  Get lost!  Or “Emacs? yuck!!”

It’s a programmer’s choice as to what tool to use for what purpose.  We have enough to think about, with what we’re writing without getting dragged in to an editor war or an operating system war!  I use different Operating Systems depending on what I want to do, and I’m not going to apologise for that either.

There seems to be a lot of energy wasted on the internet with using the “correct” programming language or the correct editor.  Who cares at the end of the day?  Most of it is good natured I’ll grant you that, and I do enjoy pitching in with “Visual Basic 3.0 is simply the best language out there…” which earns a giggle.  But some people really do need to relax about who uses what.  It’s their personal preference at the end of the day. 

A great deal of coders, (I include myself in this statement) have been made to feel very small because they’re perceived as not good enough coders because they use the wrong editor/make tool/language.  And it really needs to stop.  There’s enough hatred in the world, and there are far bigger things we need to worry about as developers rather than what editor we use!

Sorry for the rant…

Resolutions…

So the new year is here, and happy new year to all my readers.  Whoever or wherever you are.  I have been thinking about what my resolutions are going to be this year regarding my programming skills.  And I think I’ve come up with some good ones.

Master a programming language

One of the biggest things I’d really like to do this year is to learn a programming language quite well.  So for this year, it’s going to be C++ AND C#.  I work day in day out in C++, but at home I code in C#.  So I’m planning to get the hang of these languages.  I’ve had some success with this of late, where I’ve learned to write something in C++, and then I’ve converted it to run in C’#, and if anything, I’ve learned a lot more doing that.  So it’s a quick win as far as I can see.  (And with C#, I don’t have to worry about pointers Smile )

Get more involved in the .NET community

As you may have read in my last blog post, I attended my first .NET user group meeting.  And I really enjoyed it.  It’s something I plan to do more of this year, and hope to attend more events, and get to know more folks.  I’ve met some incredible people at these things and I’ve learned a lot as well.  So I’ll be getting more involved in community this year, and by the year’s end, I will have given a Grok talk on some topic or other.

Learn to use version control

I want to have my code hosted somewhere properly this year, and learn how to run a source code repository properly.  It’s not something I’ve really thought of all that much, so I’ve got myself a github account, mainly thanks to seeing the good stuff Phil Haack is doing over there (@haacked) so I can play with my own repository and learn how to do stuff like branching, merging and all that.  There’s a build manager at work that does all that, so I don’t see that side of things.

Use a build tool

This goes hand in hand with my last resolution.  I’ve never used a build tool so I’m looking to learn, and I’m open to any recommendations anyone has on what would work with C#, as on my linux box, I’ll just use Make, but I don’t know which would be the best for C#. 

Write something someone else will actually use.

Yup!  I plan to write something useful.  I’ve got a couple of ideas for the windows phone platform, and so I’m actually in the process of designing them.  I’m keeping some kind of diary of what I’m doing at the moment, so that’ll appear on the blog soon enough.  So watch this space!

Read more and blog more.

My problem is, Call of Duty is too damn tempting, so this year, I’m looking at cutting down on this, and actually read some programming books.  Notes of which I’ll put up on my blog, and I’ll keep a list of what I’ll have read this year too.  So that should be good.  And this will mean I blog a whole load more.

I’m looking forward to what 2012 will bring, I’ve already got some dates for Developer Developer Developer days in my diary, and I’m hoping to make a few more of them this year.  I made it to two last year!! Which was great.  This year, I’ll head there with a bit more knowledge, so who knows?  I may even do my grok thingy whatsit at one of them.

As ever, would appreciate thoughts, comments etc Smile

Learning in community…

I attended my first night at the Gloucester .NET user group tonight, and I must confess I was somewhat nervous about attending.  Having not met the local user group, it was somewhat daunting turning up to the place that looked something akin to the white house.

I needn’t have worried.  Jimmy, the host (@_jimmys) was friendly, and ensured I felt welcome.  The rest of the attendees turned up, and I have to confess I thought there would be more there if I’m honest.  But then again, it’s quite nice being in a smaller group. 

The talk was on developing awesome apps for the Windows Phone 7 platform given by Matt Lacey (@mrlacey), and it was a fantastic talk!  He covered a lot of stuff such as the six things a Windows Phone 7 must have! (context, input, output, response, connection, resource) using a hand as a guide.  It worked because I’ve actually remembered it!  He also did some demo’s of how easy it was to develop something for the Windows Phone 7 platform.  But the really impressive bit for me, wasn’t just the code, but also about the business side of it. 

He discussed what elements went in to making a windows phone app look good, and fit in and get noticed.  He covered topics such as marketing your apps as well, and different business models you could pursue.  Matt also discussed Metro and how that methodology makes apps on the phone a whole lot cleaner, and clears out a load of stuff we really don’t need on a device where screen space and careful design are a premium.

All in all it was a great night.  I learned a lot, and it also gave me an idea for my first ever proper mobile app.  (I’ve already written “hello world”). And once things are going with that app, I’ll update the blog to keep you informed if you’re interested.

Messing about, and being clever with it.

I’ve been looking at a friend’s computer over the last few days trying to get data off the hard disk.  I tried all sorts of things like Knoppix, but it wouldn’t boot the drive.  When I tried to run a Dell Diagnostic on it, it wouldn’t read the drive.   I had a disk caddy, but I figured it was dead as the disk that was inside it didn’t work.  So tonight I decided to take the drive out as i’ve ordered a new caddy, when I took the case off, I plugged it in out of curiosity to see if my drive had the dreaded click of death, and sure enough it did.  So that’s one of MY disks dead.  But then I spotted the thing had a SATA socket on it, and it got me thinking….

Short Term FixSo….I got the drive out of the Dell box that wasn’t behaving itself.  Yanked the SATA cable out, and plugged it in to the tail end of the drive, and into the SATA socket, then using the desktop SATA power cable, I cobbled together a short term solution.  (Don’t try this if you’re of a nervous disposition!!!)  And the set up looked like this.  (see left)

As you can see it’s a somewhat cannibalised solution, the electronics of the drive are pointing at the air, so that it doesn’t short on the computer case.  And there’s plenty of room for air to move about.  But I was surprised it actually worked!!! 

So at the moment, I’m running a scan disk on it to check for bad sectors etc.  I’m also hoping to get the data off it as well, and burn that to DVD for my friend in an effort to ensure that they at least have all their stuff.

If I could make one plea, it would be when it’s WITHIN REASON, don’t be scared to experiment with stuff.   I’ve got another proper caddy on it’s way.  But that’ll stay in its box until I need it now.  This solution seems to work fine.  I’ll let you know what the outcome was.

Opening the source….

Over the last few months, I’ve been trying to improve my coding skills.  I’ve had a wide range of advice from people, and a lot of it has been excellent.  Such as reading the code of others which is a great piece of advice, and it’s one I thoroughly advise. 

However one I do struggle with is “get involved with an open source project”.  Which sounds great.  And I would do it.  Except for a few things.

  • I don’t have that much confidence in my ability to write code.  So I’d be waaay to cautious to join a team.
  • I don’t have confidence that I’ll know a given programming language well enough to be useful.
  • There’s nothing out there that leaps and grabs my imagination.  I know that sounds overly harsh, but I read through stuff and go…”I’m not sure I could do any of that.”  (Again heading back to point 1…) 

In a nutshell, it’s a very daunting thing for a newbie to get involved with an open source project.  Or am I completely wrong?  If I am, I would welcome suggestions as to which projects to get involved with, and ones that welcome those who are still learning their trade.  (I’ve only been a software developer full time for two years, so still in the early stages…)

Heroes……..

I was chatting with a mate of mine the other night, and we got around to discussing our technical heroes. And it threw up some interesting results. He had a couple I didn’t know about, and I had a couple that really surprised him. So here are my top heroes in the Technical world.

#1 – Steve Wozniak.

Steve Wozniak is the guy that helped found Apple. He designed the circuit board for the Apple 1, and designed the Lisa, as well as the Apple 2. He started off as an engineer for HP. Met some kid called Steve Jobs, and the rest as they say is history. Why is he my hero? Well, while many will, and plenty have, said all manner of things about Steve Jobs, mainly about his temper etc, I can’t think of anybody who has a bad word to say about Wozniak. He’s one of the true geniuses of his generation, yet he’s still a humble guy. After he scaled down his involvement with Apple (He didn’t leave despite what people think…), he designed the first ever universal remote control! He also gave away computers and laptops to students in his local area, he taught computer science at high school, bascially, he gave back to the community. Always a hacker at heart, and still now encourages people to choose the path less trodden in technical terms, and to follow their dreams. I hope I get the chance to meet him, as he’s one of the truly genuine guys in the tech world.

#2 – Donald Knuth

Donald Knuth is the God Father of computer algorithms. His books are well known. On the back cover of Volume 1 of The Art of Computer Programming, even Bill Gates found his stuff tricky to understand and commented “If anyone has read this cover to cover, and understood it, send me a resume…” Also he’s man enough to encourage readers to hunt errors down in his books, and get the chance to win a cheque for a hexidecimal dollar! But more than that, this is a chap who could have made millions, (probably did with his books), but chose to remain as a lecturer. He is incredibly well respected, and he makes my brain bend when I try to read his books.

#3 – Graham Worely.

I can guarantee you won’t have heard of this guy. He was a sixth former at the secondary school I started attended in North Wales, and he is the chap who encouraged me to get in to computer programming. Until then, I’d messed and pootled with computers, but then I met Graham, who actually gave me a copy of Quick Basic 4.5 for my 286, to get in to programming. He also allowed me access to the school’s computer lab to program in BASIC on the school’s BBC computers. (Until my maths teacher didn’t think I was doing well enough in Maths, and she stopped it…my marks dropped below 70%….) Not long after that, he gave me a copy of Borland’s Turbo C++ 4.5 to play with that as well. I didn’t have Windows on my 286, so it was all command line driven. If it wasn’t for him, I don’t think I’d be a programmer now. If you have heard of him, then you’ll know he’s quite a cool guy. Last I heard, he teaches up in North Wales somewhere. So if you do read this buddy, thank you. :-)

#4 – Steve.

Many of you won’t know this guy either I’m afraid. But he’s someone I worked with until very recently. A very clever chap (but he supports Leeds United the silly boy…), and always had the time for a newbie developer. You could go and ask him pretty much anything, and rather than give you a short shrift or use super technical language to try and prove how clever he was, he’d put things in plain and simple english. Never once did he treat me like an idiot, even though more often than not I felt like an idiot for not knowing stuff. Sure there’d be banter, but it would never be on someone’s ability or lack thereof in my case. He’d do code reviews of stuff I’d done, and not once did he do a Steve Jobs (This is a pile of shit!!). If it was bad, he’d explain WHY it was bad, and WHY my using a certain type of cast in C++ was a really bad idea. There was one incident I’ll never forget, I think I’d done something stupid like broken encapsulation, and he did a Terry Jones from Monty Python voice, you know when he says the immortal line, “He’s not the Messiah, he’s a very naughty boy!”. He basically told me off in that voice, which had me laughing, but I remembered not to do it again. So Steve, if you’re reading this, thanks for the support, the endless talks on various little bits and bobs, and so many other things I won’t go in to here. :-) If I make my first million, I’ll get you a Leeds season ticket, about five quid right? ;-)

There’s a few there you’ll know, there’s a lot you won’t know. But these people have directly or indirectly shaped me in to the coder I am today. I’ll be the first to admit I’m not there yet, I’ve only been a professional coder for two years. I know some will ask, “But what about Bill Gates? What about Steve Jobs?” I do admire Gates and Jobs, however they’ve both done stuff I didn’t agree with. For example, Steve Jobs was renowned for losing his temper with people, and being incredibly rude to people too. (Currently reading the biography…) And in regards to Gates, there was the whole monopoly hearings and so on. Neither seemed to be willing to have some healthy competition. Which is sad really, because competition breeds better products in almost all cases.

How about you? Who are your techincal heroes?

Visual C++ 2010…and other stuff as well…it’s all FAIL!!!!

Well, I was all set to start learning Visual C++, and I tried to create a project in Visual Studio 2010, only for it not to let me for some reason. Which was weird. I’d try and create all manner of projects in Visual C++, but for some reason, it just wouldn’t create a project for me.

I’m not sure why this was. I did try an abortive install of Service Pack 1 for VS2010, (folks told me it wasn’t necessarily a good update, as they’d had issues with it.)

So I downloaded the from Microsoft to get rid of it, and I’ve now started a web install of it again. I did toy with getting the express edition, but I’ll see if a re-install works first. If that doesn’t, then the express edition it is, or I’ll move wholesale across to Linux.

Secondly, also a Microsoft issue I’m afraid, is that I can’t install Service Pack 1 for my Windows 7 installation. I got an obscure error code, so I clicked on the link, and got told that the service pack must be able to access the boot loader.

Ah….

You see, currently I dual boot on my computer, I have Open Suse (but that may be changed for Ubuntu 11.04 possibly…) on one partition of my drive, and Windows 7 on the other. So Grub handles the boot loading stuff, and sadly it seems that Microsoft has had a complete tizzy over this, and it petulantly refuses to update my computer.

I’m pretty sure I’m not the only one who dual boots, but the way things have gone in the last month, I may not have to worry about Windows again, I may well end up moving to Linux and run Windows in a virtual machine on a linux box…Yes Microsoft it really has come to that!

So to install this Service Pack that Windows Update keeps insisting I install, I have to boot a windows 7 DVD, do a fixmbr to reset the boot loader, and then reboot in to Windows, and then somehow get Grub back so I can access my linux stuff all over again.

Yet again, this is a clear indication of a lack of forward thinking on the massive company’s part. Not everyone has a single operating system on their computer. Especially not geeks like me.

Developer Developer Developer South West….Review #234 out of ….

Last Saturday, I was fortunate enough to be able to attend the Developer Developer Developer South West (#DDDSW) at U.W.E in Bristol, and if the Reading one was anything to go by, it was going to be great fun. I must confess, I left my registration to the last minute (Not recommended), and fortunately they’d opened up another 20 slots.

The other thing, is that this time, I didn’t know what the sessions were going to be. Indeed I didn’t know until I rocked up to Bristol and grabbed my badge and goody bag. (My laptop finally has a conference sticker on it!!). Now the last few conferences I’ve attended, a lot of what’s been going on went over my head a bit. At the time I didn’t work in the software engineering industry and code day in day out. Much to my surprise, there was a Getting Started track, which had talks on C#, ASP MVC Version 3.00, WPF, The .NET Framework itself, and Visual Studio 2010.

My current coding background is BASH, Java and C++, so I plumped for the Getting Started Track, and it was pretty good. The first talk on C# made me realise just how far I’d come since the first programmer’s conference I attended in London a few years back, I actually answered some questions on Object Orientation…(don’t ask me about Polymorphism though, still trying to bend my brain around that one….) And it was quite a nice feeling. Not to say I was smug with the answers I gave, but the fact that something had sunk in, I must confess I was worried about how I retain stuff.

Then there was a talk on the .NET framework, and how it does what it does. Rich spoke of how programs are run within the .NET Framework, and he covered topics like the J.I.T (Just In Time Compiler), the CLR and other stuff I can’t recall at present. That I found quite useful, while a lot of it went over my head a bit, it has inspired me to read more about the Framework, the overiding thing I got out of that talk, (I stand open to correction here…) is that the .NET Framework is the same for any language pretty much, so as long as there’s a .NET library for a given language, you can write apps that make use of the .NET Framework in pretty much any language that supports .NET

Next came the talk on the MVC Framework in ASP.NET, and most of this did go over my head, as I’ve had no frame of reference when it came to ASP.NET, as I’d never even looked at it, but Steven gave a great talk despite me (thankfully….) and explained how using the new MVC makes development and implementation of the Model View Controller even easier.

Of course, no geek day was complete without a decent lunch, and boy was it a good one. Proper pasties!! Which was awesome.

I must confess, I missed the Visual Studio talk, as I’d only slept an hour on Friday night (oddly enough, I’m still not sleeping right, the timing of this blog post is a testimony to that.) And finally there was the WPF talk….which I’m ashamed to say, my body won out, and I dozed through some of it…despite my drinking as much coffee…so if the speaker is reading this, then I apologise profusely, it wasn’t the content, it was the frail thing plumped in a chair in the back row…(and the room was hot and stuffy, and it was somewhat dark, and it was after lunch……I could go on, but I won’t.)

But all in all, the conference was awesome. I came away very much inspired. So much so, that it appears that I’ve somehow volunteered to give a talk at a future DDD. How do I get in to these situations? Well, I asked how come there was no talks on Visual C++, didn’t anyone develop in it? Craig (@CAMURPHY) reckoned it was a good idea, in fact, he thought it was such a cool idea, that he sold it to the organisers, and made me promise to submit it for the next DDD in Sunderland!!

Then came the evening meal at the all you can eat in Bristol somewhere, I can’t recall where it is. All I remember is leaving feeling like the Christmas Turkey….stuffed.

It was truly an awesome day, and I encourage all of you who haven’t been, to go. Do what you have to (within the bounds of the law) to go. Sell your goat, your dog, your cat, your goldfish, whatever it takes. Not only will you learn stuff, be inspired, but even better than that, you’ll meet new people, make new friends and establish contacts in places far and wide.

So if you’re up for it, look out for DDD North in Sunderland this October, I’m hoping to be there, whether or not I’ll be speaking, is a choice I leave to the voters.

The Pragmatic Programmer – Part 1

Thanks to various recommendations, I’ve started reading The Pragmatic Programmer, and I’m only half way through it at the moment, but there’s been a lot of stuff that’s challenged the way I do my work. And I thought I’d share some of what’s caught my attention.

Invest in your knowledge

This sounds like such common sense, but often we crowd out training due to time pressures, deadlines and such. I’ve actually had to block off a time in my day when I tell folk “I’m training, so please do not disturb”. And it doesn’t have to be a massively long time either. I try and give an hour a day to reading a technical book, or play with some tech that I’m using at work at the moment, and as a consequence my bank of knowledge builds up slowly.

Learn a new language every yeah

This one struck me, as I have enough trouble remembering a language, never mind learning a new one. At present, I’m learning C++ for work, so I could argue that’s my language for this year. But before today, I’ve tried learning two or three at once, and you know? It doesn’t work. I’m finding that by concentrating on one main programming language, I’m able to get to grips with it quicker, and become more proficient quickly.

Learn a text manipulation language

This is something I would strongly recommend, I’m currently looking at Perl at the moment, I know a lot are fans of Python, but to be honest it’s something I’ve always wanted to learn, which may offend some folks, but hey, it’s my life right? ;-)

Learn to use your environment

So often I must confess, I’d be lost without an IDE, however I’ve found that I rely way to much on them. Sure they’re great when you need to do something and you have all the tools in one place, but what if I’m on a box and those tools aren’t there?

To that end, I’ve started learning how to use vi properly (I’m not looking to start a war here people!!), and as well as that, the various debug tools that I have at my disposal at work. Sure it’s not as pretty as the IDE environment I’m used to, but I’m actually finding that I’m having to learn about the language I’m writing in properly, and how my project is laid out. Sure, it won’t have the pretty red lines that say you’ve borked the syntax in a certain command, but even so. This is how all the great coders started out! They didn’t have flashy IDE’s and nice clicky windows to do things for them, they had to do it by hand. And THAT IS A GOOD THING!!

Use Source Control

This is a great tip, it’s like a giant undo button for when, that’s right WHEN you screw up your code. And I know I’ve certainly screwed up more times than I care to recall. But there is great sense in this tip. As then if you find a bug, and you need to trace back when the bug originated, if you use source control, you’ll be able to get a snapshot of the code at any given time. It also makes building projects a whole lot easier too!

That’s all I’ve got so far, there’s so much more to come I know, and as time goes on, I’ll write some more. But I strongly encourage everyone to read that book, I’m not on commission, but it has genuinely changed the way I write my code, and has helped me become a better coder, as I’m thinking a lot more about stuff other than coding too. There’s more to being a great programmer than just writing code.