You are currently browsing the archives for the Javascript category


Things a web developer might need to know

I saw a post on reddit the other day, and answered there, but thought I’d clean up my response there for here, fleshing out a couple more ideas, and get your feedback as well.

The original question from was a 16 year old who’s been doing some basic CRUD apps, but is getting bored and wanted to move on to ‘real’ development.  There were some good replies, but few went in to the depth of detail that I think beginners are even aware of.  Granted, this might scare off some, but for others it might give them some ideas about what’s possible and what’s involved in professional web development.  I know I’m going to leave off some topics, so feel free to add on!

Generally, in professional web programming gigs, the “programming” part is just that – a part of the job, and often not even a majority, unless you’re fast and loose with the definition of programming.  I’m taking it to mean primarily one language – usually a server side tech like C#, PHP, Ruby, etc.

Version Control

Understanding the basics of version control – when, how and why to use it – is essential for professional software development.  Git and subversion are probably the most widely used today – mercurial, darcs, cvs and others are either gaining or losing ground daily, but understanding the basics of git and svn (differing systems certainly) will stand you in good stead in 2012, 2013 and beyond.

Even working by yourself you really should be using it as well, but I frequently talk to solo developers who say “well, I don’t need it, because I just work on my own projects”. A few reactions I have to that sentiment are:

  • Much like backups, you won’t really understand how much you need it until you need it.
  • Branching opens up a whole world of possibilities in your approach to development, allowing you to work non-sequentially when necessary, that you’re only thinking with part of your brain without version control.
  • Most professionals use some form of it. To work with anyone else, you’ll need it, and you may as well start now.

Ticket/issue systems

I don’t have a horse in this race specifically, and personally am not a 100% convert, but the more I work, the more I need things written down in a centralized place which others can use and modify, but that also allows me to hook in to with my code.  Being able to commit code and indicate “this is for ticket #723″, and having that tie in to the ticket system so that I can see the code from the ticket system, is very powerful.

Go back to issues 6 months later, and see the code changes in context with the notes on the issue in question – it gives you a different (new?) perspective on how you write commit messages, what’s important to note, what’s not, and so on.  Personally, I’m using redmine right now, but have used other tools in the past.  Find something that works for you and/or your team and stick with it.

Testing

Unit, integration, load, performance, scalability, acceptance – there are loads of ‘types’ of testing, and you may lump some together, and your process may change over time.  I’m less concerned with whether you have load/performance/scalability testing processes – those aren’t always considerations for projects.  Unit and/or integration testing are generally useful regardless of the size/scope of the project.

Get comfortable with a testing tool (junit, nunit, phpunit, cucumber, rspec, etc).

Continuous integration

Hand in hand with testing is a way to automate the testing process.  Every time you check in code, have a set of tests run and show you the results.  Again, once you make this a habit, it can be very powerful.

Jenkins is the current standard in the Java world – there are probably others for other technologies – search for “<my tech language> continuous integration” for specifics.

Security

Along with other types of testing, you should be aware of security testing strategies to employ against your sites.  Mess with URLs, try to POST bad data to your scripts, etc.  Automate those tests.  Find tools to do the same.  sqlmap is a tool to automate SQL injection attacks against your site – using that is eye-opening.

Are you using prepared statements over raw SQL strings?  Stored procedures?  Various levels of access to your database(s)?  There are a number of techniques to help avoid or reduce SQL injection attacks.

Learn about Cross-Site Request Forgeries (CSRF), and how to protect against them.   Learn about Cross-Site Scripting (XSS) attacks.

SQL injection, CSRF and XSS still make up the vast majority of security holes in websites.  Learn how to protect against them and you’ll be a long way towards being secured (but never take it easy!)

Performance

There’s a whole world of topics to cover under performance – code caching (do you write optimized and optimizable code?), data caching, page caching, HTTP caching headers (etags, etc), asset caching, compression, minification, CSS sprites, mobile-optimized sites.

As I said before, many of these may not be useful to all developers all the time – they may never rise beyond the level of ‘interesting’ at your current project/gig.  Be aware that the tools, techniques and trends may change quickly as new tech and usage patterns emerge, so even if you ‘know’ this stuff, revisit it every so often if you’re not immersed in it day to day.

JavaScript/front-end

How good are you with JavaScript?  Would you be able to write a full app in a browser using JavaScript only, making service calls to a back-end via SOAP or REST?  There’s a whole world with toolkits and libraries like jQuery, Dojo, AngularJS, JavaScript MVC, templating systems and more.  Are you able to selenium-test your front-end app?  How about running browser-based tests via qunit or a similar testing tool?

Mobile

The rise of mobile – smartphones, tablets, etc – has opened up a new set of opportunities and challenges to be aware of.  Data caps, optimized graphics, new UI controls for touch interfaces, and more.  Understanding ‘best practices’ for mobile, and keeping up with them, will keep you busy for a while.

Other technologies

How good are you with search tools?  Business dashboards?  Data gathering and analytics creation, interpretation and action?  There are a number of things that businesses need which don’t particularly relate to any one specific tech, but they’ll all need (quick way to search for data, generate reports, etc.)  Find some common business problems in your current situation and look for some of the top packages out there that solve those problems that you can integrate (SOLR, Lucene and ElasticSearch on the search side, for example; Jasper Reports or Pentaho on business reporting options, etc.)

What language again?

Notice that I really didn’t focus on any language or particular tech.  All of the above are skills that professional web developers need to have – or, if not possess 100%, be *aware* of.  I’m certainly no master of web tech, but I keep up with it enough to know who the real masters are in various areas.

What surprises me some is students coming out of school, and sometimes with more than a couple years under their belt, who’ve never heard of some or many of these ideas.  Perhaps I’m just meeting more than my fair share of true ‘code monkeys’ who copy/paste PHP/jQuery from 9-5, but I’d like to think, but that initial reddit post got me thinking a bit about this (that and some recent conversations with beginners and seasoned experts at a few regional meetups lately).

Won’t this all change?

Yes and no.  The idea of continuous integration was certainly not popular when I started in software development …. 18 years ago.  No doubt it was being done, but not by people I knew, nor in any popular literature I could find.  Some of these ideas take hold, and some don’t; Test-Driven Development, ‘Agile’, etc may come to be seen as fads in a few years – I can’t say for certain.  But… the fundamentals of communication and being aware of multiple aspects of a project (accuracy, speed, security) won’t go away.  These are issues that *will* be addressed on a project eventually, either during the initial work when it’s under your control, or at 2am on a Saturday morning because everything’s broken or you’ve been hacked :)

Gentle plug: if it’s before November 17, try to make it to indieconf, a conference for independent web professionals (and maybe just those that act like it!)

Side note: one of the upsides of freelance work is you often get to control the tools/processes for the work, and can pick/choose the tools you want.  One of the downsides is that sometimes you end up working with a team who “doesn’t believe” in any of this stuff, and you end up wasting a lot of time fighting problems that continually get reintroduced because of lack of testing.  I’m no saint on all this – I’ve done my share of skimping, and I speak from experience when I proclaim the value of using these sorts of tools.


I'm currently working on a book for web freelancers, covering everything you need to know to get started or just get better. Want to stay updated? Sign up for my mailing list to get updates when the book is ready to be released!

Web Developer Freelancing Handbook

New indieconf speakers announced

I’m happy to announce new speakers for indieconf: Zoe Mickley Gillenwater, Brandon Eley, Neil Tortorella, Michael Eaton and Mike Girourard have all been confirmed over the past several days, and I’m really excited to have them on board!

You can read more about each speaker or take a look at their session topics, which include CSS3, getting started in freelancing, networking techniques and more.

If you’ve not got your tickets yet, register today!


I'm currently working on a book for web freelancers, covering everything you need to know to get started or just get better. Want to stay updated? Sign up for my mailing list to get updates when the book is ready to be released!

Web Developer Freelancing Handbook

Latest JavaScript Magazine available

The November JavaScript Mag (JSMag) is now available.  Here’s a quick run down of what’s inside:

* Shea Frederick completes his overview of the IDE landscape for JavaScript developers

* Jay Garcia dives in to the ExtJS Component Lifecycle

* Christian Tiberg explains how to use StorageEngine (YUI) in your apps

* Tom Hughes-Croucher demonstrates making Yahoo Query Language even more useful with server-side JavaSscript

* Kyle Simpson walks you through JSON-P error handling

* Matt Henry covers the latest Community News

Have a closer look!

JSMag is now 10% off when purchased as a 12 month subscription!


I'm currently working on a book for web freelancers, covering everything you need to know to get started or just get better. Want to stay updated? Sign up for my mailing list to get updates when the book is ready to be released!

Web Developer Freelancing Handbook

GroovyMag and JSMag issues

The August issues of GroovyMag and JSMag are both out.  They’ve been out since earlier this month, but I didn’t publicize them here yet.  :)

GroovyMag‘s content this month includes Part I of building a Grails Portal, Part II of  Logging in Grails, a deeper look at Groovy Typing, the Clojure Plugin, Grails with RMI, and more.

JSMag this month includes pieces on using Cross-Domain AJAX, Events with JavaScript, Yahoo Query Language, ExtJS Plugin Development, Mobile App Development with Dojo, and more.

I mentioned it on the JSMag blog, but not here, so I’ll repeat myself.  One of the pieces of feedback I got on JSMag a few months ago was that the topics looked a bit advanced.  While that was intentional, I’ve added a monthly column aimed at people new to JavaScript.  The column is written by Shea Frederick, so whenever you see anything from him in JSMag, it’s for JS beginners.  I’m still looking for a name to give the column (“Beginner’s Corner” sounds a bit too cliched, no?) so if you have any suggestions, let me know.  :)


I'm currently working on a book for web freelancers, covering everything you need to know to get started or just get better. Want to stay updated? Sign up for my mailing list to get updates when the book is ready to be released!

Web Developer Freelancing Handbook

JSMag May 2009 available


The May 2009 JSMag is now available. This month:

  • Mashups from the Ground Up (Josh Holmes)
  • Flex/AJAX Bridge Gotchas (Michael Pelz-Sherman)
  • Demystifying Custom Events in jQuery (Rebecca Murphey)
  • Web Testing with Windmill (Adam Christian)
  • RIA Revolution (Leon Gersing)
  • Book excerpt from “JavaScript for Programmers” (Deitel, Deitel)
  • Community News (Matt Henry)

More info can be found at http://jsmag.com/latest


I'm currently working on a book for web freelancers, covering everything you need to know to get started or just get better. Want to stay updated? Sign up for my mailing list to get updates when the book is ready to be released!

Web Developer Freelancing Handbook

Cover Art Contest for JavaScript Magazine

Reposting here from the JavaScript Magazine blog:

JSMag is holding a contest to find a cover photo for its next issue.  The selected winner will receive a gift certificate to BN.com or Amazon.com (winner’s choice) and a free subscription to JSMag.

Submitted photos need to be black and white, and at a resolution for printing, but other than those requirements, the subject matter is open.  Submitters will have to provide WebDev Publishing with a non-exclusive, royalty free right to reuse the image in future WebDev Publishing, and need to verify that they are the original rights-holder to the image(s) being submitted for consideration.

To submit an entry, email editor@jsmag.com, or simply tag a picture on Flickr with “jsmag” and we’ll find it.

Winner will be selected by JSMag appointees, and winner will be contacted by email and announced here.

Contest ends at the end of April 22, GMT.

So, get out your cameras and starting sending in your pics (or posting on flickr).

One question was asked the other day – “how many entries can I submit?”.  You can enter as many pictures as you wish.


I'm currently working on a book for web freelancers, covering everything you need to know to get started or just get better. Want to stay updated? Sign up for my mailing list to get updates when the book is ready to be released!

Web Developer Freelancing Handbook

Javascript magazine launch date


Here we go!  :)

We’re committed to getting Javascript Magazine out the door on March 2.

A few short notes:

  • The magazine will be PDF only to start with – print version may come later, depending on demand levels
  • The magazine is tentatively priced at $4.99 per month
  • We have some great content for the first issue(!)
  • We’re always on the look out for contributors (we pay for content!)

Sign up at http://jsmag.com to be alerted for email notices when the magazine launches.  A blog will be coming soon on that domain, but until then, you can subscribe to this blog for more info.

Articles for the first issue include:

  • Unit testing your Javascript
  • What’s new in jQuery 1.3
  • The “object literal” pattern
  • Functional programming with Javascript

The above articles are already in production.  Other articles which might make it in issue 1 include an ExtJS tutorial, UI testing, and Debugging Javascript without the alert() function.

What sorts of topics would you like to read about in JSMag?

 


I'm currently working on a book for web freelancers, covering everything you need to know to get started or just get better. Want to stay updated? Sign up for my mailing list to get updates when the book is ready to be released!

Web Developer Freelancing Handbook

New community site for Javascript developers and user groups

Testing out the demand for a community site focusing on Javascript developers. When I was investigating the Javascript Magazine idea (still in the works – got some great contributors potentially lined up!) I realized that Javascript is everywhere, yet nowhere. There are few, if any, Javascript user groups or similar resources out there. There’s *loads* of books, and occasionally a few sessions at conferences, but no social ongoing stuff. So, I’m looking to start one.

Head over to http://jsusers.com and join up. The system is pretty open right now as to how it might be used. I’m anticipating people will use it to form topical or regional ‘groups’ to manage communication between themselves. That would be the best use, at least as far as I can tell right now. I’m using it to get some interest in a Raleigh area Javascript user group, and hopefully we’ll meet next month.

Groups for YUI, dojo, mootools and others would be great, as would groups for dealing with Javascript and particular technologies (Javascript integration with specific .Net or PHP apps, for example). Really, it’s open to what ever people want to make of it, but I’d like to see adhoc group creation. :)

Question? Comments? Leave them here or ping me at @jusers


I'm currently working on a book for web freelancers, covering everything you need to know to get started or just get better. Want to stay updated? Sign up for my mailing list to get updates when the book is ready to be released!

Web Developer Freelancing Handbook

Javascript Magazine – gauging interest

I’m in the planning stages of a Javascript magazine, similar to the GroovyMag publication I’ve already got out.  Before jumping in too deep, I’m looking to gauge interest in the idea.  Are you interested in a monthly Javascript magazine?  If so, click the link above and sign up.  Or, just leave a comment below.  :)  Thanks!


I'm currently working on a book for web freelancers, covering everything you need to know to get started or just get better. Want to stay updated? Sign up for my mailing list to get updates when the book is ready to be released!

Web Developer Freelancing Handbook

Aptana and jQuery

Nathan from onWired (a local web company) gave a presentation on jQuery, which has repiqued my interest in it. The docs were always a shortcoming, but Aptana has had scriptdoc support for jQuery for awhile now. I think if I need to do more AJAXy stuff, I’ll try jQuery for my next project. If it’s too hard, I’ll go back to YUI. :)

Here’s a screenshot of Aptana’s code assist feature for jQuery…


I'm currently working on a book for web freelancers, covering everything you need to know to get started or just get better. Want to stay updated? Sign up for my mailing list to get updates when the book is ready to be released!

Web Developer Freelancing Handbook


Get updates on my upcoming book!
  • Get better clients!
  • Make more money!
  • Avoid costly mistakes!
I'm hard at work writing a book which will give you everything you need to know to get started in web freelancing, from getting clients and getting paid to contracts and what types of work you should consider.