Category Archives: Development

Development Internet

Making the jump from Classic ASP to ASP.Net – Which language to choose?

I’ve been developing using some flavour of VB/VBA/VBScript for about ten years, and I’m very used to the way it works, but I’m realising it’s time to move on.  Technologies have changed, and even though my Classic ASP applications perform perfectly well, they don’t fit in with the direction my organisation wants to move in.  I’ve been putting things off way too long, and it’s time I moved on, too, before I find myself way too behind the times.

So, with that in mind, I’ve explored a little and found I have two options (from a Microsoft and ASP.Net point of view) – to go with VB.NET or shift over to C#.  In this article I want to discuss my decision and why I came to it.

Coming from a generally VB-based background, the obvious draw for me is to move across to VB.Net.  I know it’s nothing like what I’m used to, but it’s pretty close and probably not that much of a learning curve (apart from being better at OOP stuff), but is it the right decision to make?

Turns out it possibly isn’t.

Do a search on StackOverflow.com for questions asked about C# and VB.Net and here’s what you get:-

csharp

for C#, as opposed to a similar search for VB.Net:-

vbnet

Wow.  I mean, wow…  That’s ten times the amount of questions about C# than about VB.Net.  Now, what does that mean?  Does it mean C# is ten times more difficult than good ol’ VB?  I don’t think so.  Look at the amount of followers for each.  Here’s the number of followers on StackOverflow for C#:-

csharpfollows

And here’s the same statistic for VB.Net:-

vbnetfollows

Again, ten times the number of C# followers.  To me that says how many people are interested in the technology and want to read about it.

I decided to do more research, so I jumped to GitHub and looked at their language specific pages.  I started with C#.  It’s worth noting here that on the languages pages it doesn’t mention the number of repositories, but it does tell you where the chosen language sits in terms of popularity.  I digress, here is the result for C#:-

c#git

And here’s the result for VB (unfortunately, Github doesn’t seem to split VB into sub-languages, but in this case it doesn’t matter):-

vbgitHmmm…speaks for itself again, doesn’t it?  Let’s try something else though, as I’m still not convinced.  What jobs are out there?  I opted to look at Monster.co.uk and search for both ‘C#’ and ‘vb.net’.  Here’s what I got for C#:-

c#jobs

And for VB.Net?

vbjobs

Finally, following a search on programmer salaries, I came across a very simple looking search on Indeed.com where you can search by keyword and you get an average salary (in dollars) for jobs matching that keyword.  I couldn’t resist.  Here’s the result for c#:-

csharpsalary

and the salary for VB.Net:-

vbnetsalary

Not a massive difference, but the results still speak for themselves, I think.

Still not completely convinced about the overwhelming evidence provided to me by my ‘scientific’ research, I spoke to a seasoned developer colleague of mine yesterday and asked him which I should go for, and his reaction was along the lines of “you know how Classic ASP is now?  That’s what VB.Net will be in about 5 years..”.

Now I know that might be a somewhat subjective statement (the  guy develops using C#), but I got the point…

Based on these findings, I’ve decided to try to learn C#.  From both a personal and professional standpoint, I think it’s the right thing to do. I know it’s going to be a challenge,  especially moving from a scripting/procedural language like VBScript to a more Object Oriented language such as C#.

I’ve started today, and hope to post more on my experiences as I go on.

I’d be interested to see what you guys think about my decision, and my rather non-scientific methodologies in reaching that decision.  I’m also aware there are other web technologies out there, but my hand is somewhat forced by the organisation I’m working in.  I still intend to learn some PHP at some point, but not yet.

Development

9 essential non-technical skills for developers

You can develop.

You can develop.

Anybody can develop.

There is very little in the way of your learning how to develop.

I just wanted to get that out of the way before I start, because this post is about what I consider the top essential skills that any developer should have or put the effort into learning.  Some of the skills discussed are those that come naturally, whilst others can be learned and developed with practise.  I’m certainly not saying you can only be a developer if you tick all of the boxes discussed here, but I think they are a big help, and I also believe that in most cases they are skills that can be fed and watered and nurtured over time.

I’m discussing non-technical skills here, so I won’t be talking about specific languages, tools or concepts, although I may do that in a future post.

Let’s get started, shall we?

Math(s)/Algebra

I’m not saying you should have a phd in mathematics, or that you should understand calculus, but a decent understanding of the basic mathematical concepts is, I think, an important skill to have if you are a developer.  Using variables efficiently requires a decent grasp of algebra, especially if you intend to calculate values to use in your applications.  If you’re wanting to develop games, you will likely need a good understanding of geometry and basic physics concepts, too, or you’ll find it hard (and frustrating) work.

No good with maths?  Make your way to Khan Academy and learn (more on this later).  It’s easier than you think, and very rewarding (and will make your programming life much, much easier, trust me).

Problem solving skills

If you’re wanting to be a developer, you probably already have these.  After all, what else is development if not solving problems?  The great thing about this skill is that, the more you do it, the better you get at it.  Answers can sometimes take a long while to come, but when they do, the additional knowledge you get from them tends to stick.

Communication and social skills

I don’t think there’s really any job you can do without having good communication skills, and developing is no exception.  Being able to explain to people what you are doing is fundamental in developing applications, especially if your clients are of a non-technical nature.  If you’re going it alone as a freelance developer, good communication is vital for you to get business and develop good working relationships that might get you more.  Documenting your efforts well also requires good written communication so that others can understand how things work, or why you made particular decisions in your development process.

A thirst for knowledge

I firmly believe that you can’t really stand still as a developer.  With new trends and technologies appearing all of the time, it’s important to have an enquiring mind and to keep yourself ahead of the crowd.  With the internet at your disposal, you can learn more or less anything, it’s just a case of looking in the right places.  In fields such as development, nobody ever knows everything (some people seem to, or pretend to).  Keeping on track and never allowing yourself to stagnate is, in my opinion, super important.

Organisation

Developing software requires good (if not, great) organisational skills.  Opening up an IDE and randomly vomiting code into it might get you the results you want to start with, but it can become a nightmare to maintain that code as it increases in size, especially if when you start getting bugs.  A good developer knows how to organise their work to make it not only easier to maintain, but also to pass on to others.  Planning a software project well makes it much easier to develop, too, especially if you’re working with true object-oriented development or in teams.

Organisation and planning are also important for you to get an idea of how long projects might take.  Telling a client your work will only take two weeks is fine, if you’ve planned it right.  If not, and the project takes two months, that client won’t be knocking on your door any time soon.

Patience

I believe patience is a skill that can be learned and nurtured.  Some are better at it than others, and some are more patient in certain circumstances than they are in others, but I believe that, given the practice you can get better at it.  Patience is really important for developers for a number of reasons.

First of all, learning new techniques and technologies takes patience, and we’ve already discussed how important your thirst for knowledge is, haven’t we?

Second, you will need patience when developing applications, especially if you encounter a bug (or multiple bugs) and can’t quite yet figure out how to fix it/them.  Reading line after line of code, or following the path of your code through a debugger requires a keen eye and, yes, sometimes lots and lots of patience.  Remember, computers only do what they are told, so if you’re not getting the results you want, it’s you that did something wrong, not the computer (most of the time).  Don’t throw your machine through the nearest window if you’re not getting the results you need. Go outside, breathe and relax…learn to be patient and things will seem so much easier, I promise.

Memory

Whilst there are tools and techniques to help improve memory, in general I think people either have good ones, or they don’t.  That doesn’t mean a bad memory is a barrier to good software development, but having a decent one can help.  Being able to keep a number of things in your head at the same time can be really useful when developing solutions, especially if you are moving values around between variables in your application.  Having said that, there’s only so much you can keep in your head at any one time, so being able to organise yourself is once again, very important.  Pen and paper are extremely useful tools, too.  Write things down that your head doesn’t want to store so that you can refer to them quickly when needed.

The ability to handle criticism, and to be self-critical

One thing you’ll hear a lot as a developer is criticism.  Your application takes too long to load, the font you use is terrible to read, and the form you built doesn’t seem logical.  Don’t take it to heart.  One skill that is important is being able to handle criticism well.  Most of the time it will be constructive, but often it won’t be.  Being able to listen and see things from your users’ perspective can help you a lot. Why don’t they like the font?  How could it be better?  Speak to people and you might find they are actually right!  Usage of software and styling can be subjective, so learn to handle feedback well and have a reasoned response if you feel the user is wrong.  Don’t get grumpy or defensive, it’ll get you nowhere.

Self-criticism is also essential.  You aren’t perfect.  No, you really aren’t..  Writing a piece of software, leaving it alone for a few days or weeks and then coming back to it will often highlight areas that don’t work as well as you thought when you first wrote it.  Self-criticism makes the difference between a good developer and a ‘just ok’ developer, and makes the difference between an adequate product and an outstanding one.  With every re-visit of anything you make or develop, you should see something you could have done better.  Learn this trait and use it regularly.

And last of all (but possibly one of the most important)…

Being a nice person

Being a nice person is just good, ok?  If you regularly lurk on forums waiting for questions from noobs only to shoot them down in flames for not knowing as much as you, you’re not a nice person.  You were new to this stuff once too, remember?  If you can’t be helpful, don’t bother.  It doesn’t help and can be a real confidence killer for those just starting out.

Can you think of any more?  Comments are welcome, as always.

2toria Charts Development

jqBullet – bullet graphs for wepages

Those of you who have followed 2toria over the last couple of years will know that I’ve taken more than a passing interest in graphs, charts and general data visualisation.  Whilst I’ve shifted my focus somewhat over the past year, these things still interest me greatly.  Over this weekend, I’ve been combining a couple of my passions (namely web technologies and the aforementioned data) to create jqBullet, a jQuery plugin designed to display bullet graphs in the web browser.

I’ve been planning for some time to put something together to help the data visualisation community but not had the knowledge, however a new found interest in the HTML5 canvas element and how to manipulate it has made things a lot more interesting here at 2toria towers.

jqBullet, like some other chart-based plugins such as flot, makes the dynamic creation and display of bullet graphs on your webpages and web-based applications/dashboards easy.  There’s still a lot of work to do to make it complete in accordance with the specification described on the perceptual edge website, but it’s getting there.  My hope is that it comes in useful for at least a handful of people, and I’m looking forward to developing it further over the coming weeks.

jqBullet is really easy to use.  All you need is to add a canvas element to your pages and link to both jQuery and the jqBullet libraries.  Make your link to jQuery first in your code, just to be on the safe side.

So, let’s say for example that you have a canvas element with dimensions 300px by 50px, and an ID of ‘myBullet’, here is the code you would need to display the following graph on your page:-

jqbullet

jQuery code:-

$(document).ready(function() {
    $("#myBullet").bullet({
        featuredMeasure: 175,
        compMeasure1: 200,
        qualScale1: 150,
        minValue: 0,
        maxValue: 350
        })
});

The options passed to the bullet method are very straightforward, and explained in further detail on the project homepage at jqbullet.2toria.com.

I’m hoping to further develop and support this project for some time, so please do take a look and let me know if you find it useful.  There are a handful of things that are still in ‘to do’ phase at the moment, but they will be implemented shortly.  Some of these include:-

  • An additional comparative measure
  • More than one qualitative range (up to a maximum of five)
  • Ability to change graph colors
  • Font options

As per usual, comments are more than welcome.  The code for jqBullet is also available on Github, if you’re interested in having a look or forking it.

Development Web Development

More HTML5 canvas tinkerings – an analog clock

I’ve been playing around with more HTML5 canvas stuff to try to reinforce my learning so far and, tonight, finally managed to finish a little project I’ve been messing with for the past couple of days, an analog clock!

canvasclock

It’s nothing too special, but I’m very happy with it.  The code could definitely do with some tidying up, I think, and I’ll definitely get around to it soon.  There’s so many things I’m realising are possible with this exciting technology, so look out for more posts on the subject.

In terms of the coding for the clock, one of the things I’m most happy with is the little routine I threw together to draw the numerals on the clock face:-

				
var theAngle = 30;

var numerals = ["I","II","III","IV","V","VI","VII","VIII","IX","X","XI","XII"]

for(i=0;i<12;i++) {
	context.save();
	context.rotate(theAngle*(Math.PI/180));
	context.translate(0,-100);
	context.rotate(-theAngle*(Math.PI/180));
	context.fillText(numerals[i],0,0);

	context.restore();
	theAngle = theAngle + 30;
}

That I even managed to suss this bit out proves to me that I’m slowly starting to get the hang of what I’m doing, not only with the limited canvas knowledge I have, but with jQuery. It’s nice to have an idea in my mind of what I want to achieve and to be able to turn my thoughts into something real on the screen.

I’ve a couple more exciting ideas that I hope to put together over the next few days, so please do keep an eye out for more. When I understand things more, I hope to pen a few canvas related tutorials to help you guys out, too!

Until next time!  The full code for the clock can be found on Github.com.  Feel free to fork, comment, etc as you please.