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.

Lock Down

Hello all,

Hope you’ve had a stonkingly great Christmas, and you’ve not gotten too drunk :-)

I was round a friend of my dad’s today fixing his computer. It turns out that some *expletive* had hacked in to his computer, and installed a load of trojan horses and all that crap. Now normally, you’d think, what’s the big deal? The big deal, is this chap is in his 80′s! And he relies on his computer to communicate with his friends. It’s a bug bear of mine that there are folks like this out there, who pray on those who are not fully IT literate. So they’ll install a little program, that’ll go…”YOU MUST INSTALL THIS ANTI VIRUS, YOU ARE INFECTED….”

I spent the best part of three hours fixing his computer today. The result was a very happy gentleman. So I thought I’d post a few ideas for those of us who have relatives who aren’t IT savvy.

Change the router password

This may sound obvious, but it’s surprising how many folks who should know better don’t do this. The first thing you should do when you get your shiny new router, is change the password, so the buggers can’t get in through it. And DO NOT choose a dictionary word for your password. Use numbers instead of letters, use capitals, and if the router allows it, special characters and symbols too, for example… p£r*t93nnKI£ would be a good one, as it’d take ages for them to brute force it.

Make sure you use encryption on your wireless

Make sure you encrypt what you send over the wireless network! Otherwise, you may have a secure computer, but stuff can still be seen in the clear between your computer and the router. Do not use WEP if you have other options available. WEP can be hacked inside 30 seconds these days, your best bet is to use WPA2, it’s more secure and takes longer to crack. Although I’m told now that someone has managed to hack that as well!! The same applies to the password though, make it bloody difficult for the crook to brute force it. The more characters the better.

Hide the network

This might sound like a strange one to do, but on almost all routers, you can stop it broadcasting it’s SSID. So unless you know the name of the network you’re trying to connect to, then you won’t be able to find it.

Firewall and Antivirus

This has been said again and again, but it’s so worth it. Make sure you have an up-to-date antivirus and firewall installed on your PC. The router does come with a Firewall, but it’s always better to have a software one there as well just in case they slip through. And run deep system scans often. I tend to use AVG for my Anti-Virus and recently Comodo for the firewall. However I would recommend shelling out for something like Kaspersky which are pretty good, or possibly MacAfee or Panda.

Carry out system updates

Allow the computer to update your computer! Microsoft release the updates to secure the holes in the computer. I know it can be a pain, but you can set them to be installed at times you’re not on your computer. So do it as often as you can.

I hope all that helps, as ever I welcome any comments..

Happy new year one and all.

Netbook adventure…..

Well, I’ve had my netbook a while now, and sadly it would appear that there are a few niggles with Maverick Meerkat when run on the Asus eee Pc.

Among these, is that when I install new packages, it tells me that they did not install correctly. It also does this when I try to update the system with new system updates. The update issue I’ve also noticed when I’m trying to update my desktop…so those could be server problems.

But it also tells me that my hard disk is dying (it hasn’t yet…and it’s a solid state drive…) and that my battery only has 1.9% capacity left.

When I use gedit to do some coding on it, then the e’s don’t display correctly. So at the moment I’m installing Kate.

Also Empathy doesn’t run properly either. I create my accounts and so on, however it seems not to find the servers etc. It also won’t allow me to use a twitter client either….it’s just plain weird…

Now I do genuinely like Ubuntu, and I’m not sure they’ve ironed everything out with the netbook edition yet, or it could be that my netbook is so old, that it wont run properly.

It found the wireless drivers and everything perfectly, first time, and at present I’m sat on my bed at home typing out this blog post.

I’m going to take a look at their knowledge centre to see if there are any fixes I can apply on to this, and well see what happends.

Tools…..

The thing I love about computers, is that no matter what you want to do, (within reason…) there is somewhere a tool to do it. So I got wondering what tools do you guys use when you’re developing? I thought I’d list some of the tools I use and that I’ve found useful.

Ubuntu Linux

Frankly, I much prefer Linux over Windows (sounds weird in light of my last post…) but it makes development so much easier! I love having a terminal window open where I can see what’s going on. It also has a much better program management system that Windows as well, where you don’t have to reboot everytime you’ve added a new program! I have Sun’s Java on there, and the gcc family of compilers too. It’s a bit fiddly I’ll grant you, but it is a brilliant O/S. And best of all it’s free!

Eclipse

A brilliant if somewhat slow IDE! I use it for all my Java development, and I love the way you can integrate things like Ant, JUnit and C++ development tools in to one IDE. It does require the Java Run Time to run it, but it’s a brilliant bit of software. The debugger is kinda cool in it as well, and makes things a lot easier than depending on the good old Null Pointer Exception!! You can actually see what’s going on.

VMWare Workstation

I’d be lost without this! It allows me to have all sorts of weird and wonderful operating system environments without having to re-format my computer to try something or to learn something. It’s a bit pricey but it’s better than anything else I’ve used thus far.

Kate

A basic text editor, but it’s still pretty cool. If I was in a pinch, I’d use Vi, but when in the Windows Linux, Kate is the only editor I’ll use.

Firebug

This really is a superb little tool for debugging websites, and it’s something I use all the time I do web development. (Which isn’t all that often if I’m honest…) It’s also saved my skin more than once when trying to figure something out.

For the most part, these have been free tools (with the exception of VMWare Workstation) which goes to show that there’s a lot of good stuff out there if you go looking for it. I didn’t mention the paid stuff I use like Visual Studio 2010 and SQL Server 2008, because not everyone has access to these. But Microsoft do Express editions, which are pretty cool, and at least allow the user to develop in the .NET framework if they want to, which is pretty neat.

As ever, comment away

The iPlate part 2….

I never did tell you how the iPlate went did I?

Well…it turns out that where I used to live, was so far from the exchange, that it didn’t do that much difference. Which was a bit annoying. I also found out that we had the new style of phone cable, so it wasn’t just copper, but a cross of copper and aluminium. While that doesn’t sound important to some, to me as a networking geek, it’s hugely important.

In an effort to cut costs, comms companies use metal mixes, so these days not many to the house cables are just copper. What does it matter? Copper is a better conductive material than Aluminum, and therefore provide better bandwidth. But nowadays, it’s mostly alu-copper mix, which in a word…sucks!! Big time!!

So my advice? If you’re not that far from the exchange, then it’s probably worth it. But be sure you can install it on your junction box.

peace out :-)

There ya go Jimmy ;)

How to be a good programmer…part 1…of…?

I’ve been reading a lot on the internet at the moment about how to become a good programmer. It’s something I’ve been thinking about for a long time. I found myself talking a good game when it comes to programming, but I only ever code at work. I see the coders I work with and respect, and think “I wish I was that good.” But there’s a damn good reason why they’re that good! They’ve put in the work and the effort to get there. So I thought it was about time I started doing the same. It’s quite galling at 32 to look at all these nice new graduates coming in to coding jobs and know more than you! (There’s a reason why I can assure you, something to do with a career change coming out of University.)

So I got sick and tired of feeling sorry for myself, and always bemoaning the lack of time I have, so I’ve decided to do something about it. So I’ve taken it upon myself to learn C++. It’s something I’ve always wanted to do, and it’s something I’ll be able to use in the real world too. But I digress…

So how to become a good programmer?

*Disclaimer* This is what I’ve found has helped me, I know folks out there have their own opinions on this topic, but I’m only going through what’s helped me to learn. Also I’ve read a wide range of articles on this, and I’ll include links to those articles where appropriate.

1. Play with the language.

If you have experience of any other programming languages, then this could be a good place to start. Don’t make the mistake I made, in starting a project, and trying to learn the language at the same time. I did that, and it didn’t work. And I ended up giving up.

So now I’ve started to learn C++, because I know Java, it’s a bit easier…(not saying it’s easy mind…) So I’ve learned to write things like Hello World, I’ve also written a basic calculator, and that’s the best way to start.

Start small, and build your knowledge

2. Network with other coders

The best discovery I did was to use Twitter. Through it, I connect with other coders all over the world, so I know I can ping them with a question. But also more than that, they have blogs!! And there’s a lot you can learn from other coders in that way.

3. Read Blogs

As I mentioned in my earlier point, a lot coders (if not almost all of them) have their own blog, and that will usually specialise in a certain technology or whatever you’re after.

I have a couple I read,

Scott Hanselman’s Blog

Scott is a .NET developer, and his blog is quite an interesting read. He also does a weekly podcast that can be accessed from the same site, which is kinda cool.

Jeff Atwood’s Blog

A great blog of generally techincal stuff, the most recent article covered the Gawker network takedown…

Craig Murphy’s Blog

My friend’s blog. Also my tech mentor outside of work. Craig’s blog posts are always interesting for a read. And the dude keeps winning MVP’s somehow…(gotta learn that secret).

You’ll notice a distinctly Microsoft Orientation at the moment?? That’s because I’ve not managed to find any C++ or Java one’s yet. (I could do more on the Java and C++ I guess…) But these are the three main ones I follow, and there are countless others that I read too, but I thought I’d best not put them up here for the sake of the reader not falling asleep ;-)

4. Don’t rush!

The temptation is to rush and dive straight in to start writing some code. Please please please don’t do it!!! I’m a junior developer (at 32…I know…) and I’ve learned how good it is to stop think about the design of the system you’re going to be working.

Also, allow things to sink in! It’s all well and good diving in to fixing something, but say you write a cool algorithm that solves something but a week later you figure out a better way to do it, but to change it now would involve a huge refactor and would break several other bits of your project?

5. Read books

Read often. At work I try to have half a day a week that’s dedicated to just reading. At the moment I’m reading Find the Bug by Adam Barr. It’s an investment at the end of the day.

But be selective in your reading. There’s such a glut of programming books out there, the coder has never had more choice. But that’s both a blessing and a curse! Because sadly there are some truly awful programming books out there.

O’Reilly are a pretty safe bet, as are Wrox. I have them on my bookshelf.

6. Get a mentor

I can’t tell you how helpful I’ve found this. I have a technical mentor where I work, who I can bounce ideas off. He also recommends some good books for me to read, but also gives me the chance to air my ideas in a safe place, so he’ll be able to tell me if it’s good or not!

7. What to learn?

It’s all very tempting to learn the syntax first, but I’d caution against that. I’ve been focussing mainly on learning algorithms and data structures. It’s important to UNDERSTAND these, rather than learn the syntax. Because once you understand these, then the syntax will come as you learn the language. And at the end of the day, an Array is always an Array, whether it be in LISP, C, Fortran or whatever.

8. Coding Contests

One of the best things I’ve done is to sign up to TopCoder.com. TopCoder is a coding competition site, where you can win cash for your code!! (How cool is that???) So I use their practice rooms so I can get some feel of how the competitions are laid out. (I’m nowhere near good enough to take part in the competitions yet) But it gives you a chance to whack out some code, and it’s quite satisfying when your code works ;)

I know most will know all this, but this is what has helped me so far in learning C++ as well as other languages. You may have noticed that I’ve not mentioned joining and opensource project in this post. That’s because i’ve not done so yet, however that is also an awesome way to becoming a better programmer.

As always, any comments etc are always welcome.

Earl Grey and Operating Systems

There’s nothing I like more than a cup of Earl Grey while messing around with a virtual machine working out a certain operating system.

Tonight, it’s Sun…sorry…Oracle (or whoever they are now) Solaris 10. I’ve had to use it a few times, and I’ve found that I’ve got huge gaps in my knowledge.

While it’s true that LINUX & UNIX is similar across a broad range of distributions, there are some big differences.

So why am I installing Solaris? Well I was faced with using the front end for a project recently, and found I didn’t know enough about how to use it.

I also want to expand my skill set. And I thought a virtual machine would provide a harmless way for me to do that, rather than make a balls of the one I have at work.

First impressions?

The standard GUI does look a bit basic when compared to other Linux and Unix distros I’ve used (Enterprise Red Hat, Centos to name a few) And it’s clear that the front end is Java driven.

I also can’t get used to the fact that you simply place the mouse cursor over the window you want to be focussing on it. I can already see that this can be very irritating, and the first thing I’ll be doing once I’ve installed it, is to disable it…if I ever figure out how…lol

The installation itself is easier than I expected, but I would imagine that as my experience grows, I’ll be looking at more detailed set up options. It’s good to know that these options are there as well.

It’s not finished installing yet, but it should be good fun having a play. I’ll post some of my adventures on here :-)

Happy coding…

New toys….well new to me…

I know I’m probably a bit behind the curve, but I’ve finally taken the plunge and got a netbook. I bought it second hand, and it’s a nice little Asus EEE Pc running Ubuntu’s brilliant maverick meerkat netbook operating system.

And this post comes from the meerkat so to speak…siimples….

So far, i like it, the keyboard is a bit smaller than I’d like if I’m honest, but i don’t forsee myself spending hours upon hours cutting code on this thing. Sure I’ve installed my C and C++ compiler on Ubuntu and will be using trusty Vi or gedit to cut my code with.

As i type a bit more and get used to the practice, I’m finding myself getting quicker on the keyboard but there have been a few near misses so far.

Why have I got one? Well, I the idea was that I could take some coding stuff with me wherever I go, at the moment I’m focussing on learning C++, and improving some of my coding techniques as well. It’s also brilliant for reading blogs etc, and catching up on e-mails and facebook and stuff like that, so that’s pretty cool too.

However this is not without it’s downsides. The netbook originally came with Xandros, but I didn’t like the way the desktop was laid out. So I elected to install Ubuntu on it. The install went perfectly, however at the moment on my desktop here, I have a message telling me that my SSHD is not being used within certain parameters, nd that the thing is getting very hot at the moment, and i don’t want anything that’s on my lap or thereabouts getting cooked thank you very much. So I’ve followed the guidance on the Ubuntu site as to what to do, but when I do sudo update-grub I get an EOF (end of File) exception for doing the very thing I’ve been told to do. I’m going to post something on the appropriate support forums and await their response.

I am a MASSIVE Ubuntu fan, and I’m looking to get involved with development with it at some point, (hence learning C++), so I don’t want a holy war between Linux and Windows users, I use both O/S’s and each one does something for me the other one can’t.

That said, I like my little netbook….

Shiny :-)

Radio Silence…

Much has happened since my last post on this blog.

I’ve moved house, and I’ve been very busy with work. However things have now settled a bit, and I now have a bit of time to start blogging again on techie stuff. Which is kind of cool.

So what have I been doing? I’ve been learning Java mostly, which is kinda cool. I’m loving working with such a groovy programming language. Unfortunately it’s meant I’ve not been doing my .NET stuff as well, but I now have a bit of spare time on my hands I’ll be able to start learning again.

So I’ve rebuilt the laptop, so now I’m running Win 7 Ultimate, with Office 2010, and VS2010 so I’m gonna be learning some pretty funky stuff, and I have some little projects I can be working on, and details of which may or may not appear on here. I’ve also been out of the loop for a long time in terms of techie advances etc too, so I’m hoping I’ll be able to catch up sooner rather than later.

Anyways, I’d best get back to learning.