Monday, 21 August 2017

My Fantasy Gig: Polish Death Metal



It’s no secret that I like death metal. Three of my favorite death metal bands are all from Poland. I’ve been lucky enough to see all of them at least twice individually, but never together. I’ve often wondered why they haven’t all toured together. I’ve never been to Poland either so I’d settle for seeing them all together in their home country.

Decapitated

Opening the show I’d have Decapitated a technical death metal band. Their style, as you would expect, is heavy and progressive. While currently the smaller and less well know of the three bands on this bill, Decapitated are growing in popularity and are poised to step into the shoes of metal titans such as Lamb of God.

After getting into Vader and Behemoth I was really excited to read about another Polish death metal band and I wasn’t disappointed, especially as I also have a soft spot for progressive metal. Often with metal bands who have been around a while, their back catalogue is noisy and unpalatable. Not the case with Decapitated. They’re tight, aggressive and heavy from the first album through to the more recent ones. I’ve seen them play three times now (once even in Norwich) and their live performance demonstrates their skill as musicians.

Behemoth

I’d have Behemoth second on the bill. By far the biggest of the three bands, Behemoth are one of the best metal bands around at the moment. Currently (summer 2017) they are touring the US with Lamb of God and Slayer. I’ve seen them play three times. Once to about 10 people at a club in Bradford and twice to thousands at Bloodstock.

Their singer is often in the press, in Poland and around the world. He famously burned a bible on stage in Poland and was promptly arrested. Later he was diagnosed with and beat cancer.

In the early days Behemoth’s style of ‘blackened death metal’ was heavily influenced by US death metal giants Morbid Angel, but much more palatable. That said they’ve improved on almost every album. Their 2013 album the Satanist is a masterpiece of modern metal. Probably their least heavy album to date, but still crushing.

Vader

Headlining I’d have Vader. I’d describe them as the godfathers of Polish death metal. While not as popular or well selling as Behemoth, they belong at the top. Vader play more traditional death metal, sometimes with trashy tinges. I really struggled to get into their back catalogue. I just wasn’t ready, but every album is superb.

I’ve seen them twice, both times in small clubs. Their sound wasn’t the best, but being a huge fan I put that down to the PA in the clubs. I am sure that atop such a fine bill, they would shine and show what they can really do.

Of course the final encore would comprise of all three bands playing a metal classic together.

Monday, 14 August 2017

A Review: Express in Action

Express in Action: Node applications with Express and its companion tools

By Evan Hahn
ISBN: 978-1617292422

This is another excellent JavaScript book from Manning. It contains a great introduction to Express.js and I wish I’d read it sooner as it explains a lot of things about Express.js and how to use it, as well as the tools surrounding it and Node.js, which I had previously worked out for myself. If you’re thinking of writing a web application, especially one in JavaScript, I recommend you read this book first.

The book is far from perfect. It could have been a lot shorter. There is a fair amount of repetition and the chatty style makes it overly verbose and irritating in many places.  The author tries to cover too much and goes beyond Express.js unnecessarily in a few places. However, given that, it’s still not a huge book and quite easy to read.

Sunday, 13 August 2017

A review: JavaScript the Good Parts

By Douglas Crockford
ISBN: 978-0596517748

Every JavaScript developer with a pre-existing working knowledge of JavaScript should read this book. JavaScript is a powerful and varied language, but it was developed in a hurry and there’s plenty wrong with it. This book outlines the good bits of the language and highlights the bad bits and the bits you should just avoid. There’s also a fair amount about the author’s JSLint project in the appendices.

This book was written in 2008 and probably needs updating. It’s hard going in places and the diagrams did little to nothing to help my understanding. I’ve come away still wondering about new and constructors, but I know I just need to review them again when I need them and it’ll get clearer.  I’m still not sure which function declaration syntax is best, but I’m not sure it matters too much.


Friday, 11 August 2017

Getting to the route of the problem

In 2016, Venkat Subramaniam wrote an incredible book called ‘Test-Driving JavaScript Applications’ which, along with JavaScript tools such as Mocha, Istanbul, Prettier and Eslint, have made me fall in love with JavaScript and Node.js (well for UI development anyway). JavaScript isn’t a proper language, right? For a long time I argued not, because the tools weren’t available to develop software with unit tests, static analysis and code coverage. This has changed and now I’m starting to take JavaScript seriously, even beyond jazzing up a web based UI. I’m almost over the lack of static typing.

I’m currently using Express.js, a web framework for Node.js, a lot and Venkat includes a section on testing Express.js routes in his book. They’re a bit like controllers in the Modal View Controllers pattern:

router.get('/', function(req, res, next) {
task.all(function(err, tasks) {
res.send(tasks);
});
});

Venkat’s example test looks like this:

it('should register uri / for get', function(done) {
    // ...        

    var registeredCallback = router.get.firstCall.args[1];
    registeredCallback(req, res);
});

I’ve left out some mocking and other boilerplate for brevity and so that we can concentrate on the one bit I don’t like. Venkat describes the test in full detail in his book.  Take another look at this line:

    var registeredCallback = router.get.firstCall.args[1];

What it does is get the second argument for the first get route declared with the router. That’s what is returned by firstCall, the first declared route. So if there is more than one get route declared with the router and at some point you change the order in which they are declared or you declare another get route in-between, the test will break. It’s brittle.

In fact it’s worse. To get the second get route you’d use secondCall and so on. So although it’s probably a very large number, there are a finite number of get routes you can get from the router with this method. For me this rang alarm bells.
Google suggested this is the way that everyone is doing it. It appears to be the standard practice. It doesn’t sit at all well with me. I’d much rather be able to look up route in the router by its path. After a while printing all sorts of things to the console to find out the data structures, I was able to develop this:

var rh = {
    findGet: function(router, path) {
        for (var i = 0; i < router.get.args.length; i++)
            if (router.get.args[i][0] === path)
                return router.get.args[i];

        return null;
    },

   // ..
};

module.exports = {
    execGet: function(router, path, req, res) {
        var get = rh.findGet(router, path);
        if (get != null) get[1](req, res);
    },

    // ..
};

The findGet function takes a router and the path to test and returns all of the arguments declared for that route or null if it’s not found.  The execGet function uses those arguments to execute the route, meaning that the test now becomes:

it('should register uri / for get', function(done) {
        // ...

        execGet(router, '/', req, res);
    });

Which is not only far more expressive, but less brittle and less code per test. It means that the declaration order of the routes for the router no longer matters. Of course similar functions can be added to facilitate testing post, put and delete.

I wanted to write this up as I couldn’t find any other solution with Google. Hopefully it will encourage developers to write more tests for Express routes as they become easier and less brittle.


NorDev: JavaScript Starter Kit – Beginners Full Day Workshop


Date: 9:00 am to 4:45 pm, Thursday 5th October 2017

Location: The King’s Centre, King Street, Norwich, NR1 1PH

Price: £50.00 per person

Level: Beginner

Prerequisites: Laptop with wifi, modern browser, text editor

RSVP: https://www.meetup.com/Norfolk-Developers-NorDev/events/242461849/

JavaScript is amazing.

It is a powerful, simple, infuriating, elegant and sometimes irrational programming language which was born in a hurry and can now do almost anything you can imagine. It can make whizzy websites, speak to databases, and draw maps, it can fly drones, make games, and build apps. You can run it on your watch or on your phone, on any web page or on hundreds of virtual servers.

And if you’re reading this you’re probably contemplating learning it.

This day-long workshop aims to cover enough ground to give you a broad base from which to start your quest. We’ll use plenty of practical exercises to explore the language. We’ll cover some of the tricky parts which often mystify people – especially handling asynchronous code, which is one of the language’s great strengths. We’ll spend most of our time in the browser, but we’ll also play around with node.js, JavaScript’s foremost server-side environment. There’ll be time to survey some of the different tools and frameworks which are popular with JavaScripters at the moment. As well as all this we’ll explore JavaScript’s history, its culture and community, and the factors behind its explosive growth. Perhaps most importantly we’ll introduce a set of resources which’ll help you continue your learning independently.

You’ll need to come equipped with a laptop, and you should have a modern browser installed, along with a text editor you’re comfortable using. You don’t need to have a lot of knowledge or experience to join in, though any familiarity with another programming language will help a lot.

There’s a lot to get into one day, so please bring lunch and Neontribe will be buying the first round in the pub straight after the workshop.

Rupert Redington

Rupert ran away from the theatre to become a web developer at the turn of the century. Since then he’s been making mistakes at Neontribe as fast as he can, learning from a reasonable percentage of them. Recently he’s been using Javascript to help teenagers talk to doctors, Americans to buy airline tickets and everybody to find their way to the loo.

“Rupert did a fine job of making this an entertaining subject and his enthusiasm for js was infectious.” – Matthew Shorten

“Thoroughly enjoyed it! Presenter was excellent. Would be interested in any other JS courses that he runs.” -Stephen Pengilley

“I’d certainly sign up for other courses Rupert hosts in a flash. This was an introduction and as such it was perfectly positioned (in my humble…), but if ever there’s an “intermediate” course which goes into more depth with core principles & real-world use of loops, arrays, functions & objects that would be great.” – Steve Harman

Thursday, 20 July 2017

Vacancy: Executive PA / Office Manager


Naked Element are a software development company based in Norwich looking to recruit a self motivated, outgoing, well organised person looking for variety in a small, yet progressive tech company. There is opportunity for the right person to grow into a more specialised role, based on your strengths, as the company grows.

Salary: £18-20,000 per annum salary (depending on experience)

Hours: 37.5 hours per week

Location: New Patricks Yard, 2 Recorder Road, Norwich, Norfolk, NR1 1NR

Application Deadline: 28th July 2017

Essential skills and qualities:

  • Good client and communication skills
  • Exceptional organisation
  • Self motivated
  • You thrive in a fast-paced office environment
  • Competent user of email systems, document creation and management software packages
  • Ability to prioritise

Desirable skills and qualities:

  • An Interest in Software, Technology, Development, or any wider part of the ICT industry
  • Previous Administration and Office Management experience 
  • A Level 3 qualification or equal in Administration or Business Management

Main Responsibilities:

Office Management

  • Running the office on a day-to-day basis depending on the needs of the business, it’s directors and employees
  • Purchasing stationery and equipment
  • Liaising with suppliers
  • Answering the phone
  • Preparing agendas, documents and contracts

Company Administration

  • Book keeping
  • Managing finances
  • Financial forecasting/producing reports
  • Paying and raising invoices
  • Paying bills
  • General administration
  • Payroll

Social Media & Marketing Assistant

  • Assisting the commercial director in all elements of marketing as required
  • Setting up daily social media
  • Preparing and sending marketing material
  • Attending networking events
  • Exhibiting at events

Sales Assistant

  • Assisting the commercial director in all elements of sales as required
  • Prospecting
  • Warm calling
  • Meeting prospects & clients
  • Sandler training provided

Account & Project Management

  • Day to day running of projects
  • Project reporting
  • Liaising with all stakeholders during projects
  • Regular client reviews & other account management as necessary

 Executive PA

  • Managing diaries for both the Commercial Director & CEO
  • Booking events & meetings
  • Booking travel

Benefits

  • Pension after 3 months
  • 6 Month probationary period
  • A lovely, air-conditioned working environment in the centre of Norwich
  • Flexible working hours

This is the perfect opportunity for those looking for an interesting, never the same each day role to grow their skills. You will benefit from the guidance of staff with over 20 years experience in Business, Finance and Project Management. This is also a chance to gain an in depth insight into the software development industry.

If you would like to apply for this opportunity, please send CV’s to emma@nakedelement.co.uk 

Thursday, 29 June 2017

Norfolk Developers Business Dinners Return



We are pleased to announce that Norfolk Developers Business (NorDevBiz!) is making a return. NorDevBiz is aiming is to increase awareness of Norfolk Developers member's businesses and stimulate internal and external referrals.

Our second evening meeting will be on Monday 3rd of July 2017 at the Library Restaurant in Norwich at 7.30pm.

Arrive is for 7pm for informal networking and a 7.30pm sharp start. The evening will (provisionally) be as follows:

  • Informal networking (from 7pm)
  • Introductions  - an introduction to the group from Dom Davis followed by a one minute introduction from each attendee (7.30pm)
  • Main Course
  • Spotlight -  Sean Billings will give a 10 to 15 minute introduction to his business and take questions
  • Pudding
  • Close - Dom Davis

This is a business focussed event where we will learn more about each other’s businesses with the aim of generating both internal and external referrals. Most content will not be of a technical nature.

Dress code is comfortable.

Please get in touch if you are interested in attending our business dinner. Please also note that places are limited.

paul@norfolkdevelopers.com

Tuesday, 27 June 2017

Node.js the Right Way: Practical Server-Side JavaScript That Scales

By Jim R. Wilson
ISBN-13: 978-1937785734

Node.js the Right Way is a fantastic little book. It’s a small book (but then it’s Pragmatic exPress) and it doesn’t go into anything in much detail, but then that’s what makes it fantastic. It gives a useful and practical overview of writing Node.js server side applications and explains many of the tools and JavaScript patterns which will be useful to Node.js programmers.

It starts off with examples of manipulating the local file system using Node.js. This struck me a little odd as the only thing I tend to use the local file system for is reading configuration files. If I need to write a file I tend to put it in Amazon S3. However, this is genius and looking at how to manipulate the filesystem gives some useful insights into Node.js programming.

The book then goes on to look at networking with sockets, something which is often neglected in a world where we expect everything to be RESTful. There’s then a tour through scalable messaging, including clustering, how to access databases and how to write web services, including JavaScript promises and generators!

The final chapter covers writing a web application with a single page front end and authentication. This is the only place the book falls down. Too much is covered in two short a chapter. It’s still quite useful though.

This is not a book for a novice JavaScript or even a novice Node.js developer, but for once a little knowledge is not a dangerous thing and Node.js the Right Way will help increase that knowledge. It even led me to believe JavaScript might actually be the future.

Wednesday, 14 June 2017

Know your hammer from your screwdriver: The right tool for the job

As software developers, we at Naked Element, are skilled and experienced in a number of different programming languages and aware of many, many more. Choosing the right programming language for a piece of software is as important as choosing a hammer to knock in a nail, a flat headed screw driver for a flat headed screw and a cross headed screwdriver for cross headed screw. However with software it’s far more complicated as there isn’t always just one tool for the job.

It’s also important to consider the skills you have at hand. For example, you wouldn’t usually ask a plumber to fix your electrics or an electrician to fix your plumbing. However, given enough time most plumbers could learn to do electrics and vice versa. Generally people with a talent for practical things can easily pick up other practical skills. It’s the same with software developers, but you have to consider whether the investment in new skills will return sufficient results in an acceptable time frame, or whether to risk compromising your margins by bringing in already experienced outside help. It’s not an easy decision!

Software developers (the good ones at least) love learning new things - programming languages in particular - but there are divisions of course. Some software developers are only interested in writing software for Microsoft Windows, for example, or for Open Source platforms such as Linux and the tools they use are quite different. It’s even more pronounced with Android developers and iPhone developers! You don’t often get developers who like a bit of everything, but it does happen, and those are the sorts of developers we have at Naked Element.

It’s true that we’d happily write Java (a general purpose programming language aimed at open source software development) all day long, but that wouldn’t allow us to develop complete pieces of software. We regularly use various combinations of Java, Ruby on Rails and JavaScript in order to get the best result. We’ve turned our hand to Python and, more recently, Microsoft core languages such as C# and VB.net too. It depends what our clients need and our assessment of the right tool for the job. Sometimes it’s not even about choosing a programming language. Sometimes it’s about choosing pre-built software, such as Wordpress, and customising it to our client’s needs. We wouldn’t use Wordpress for anything more complicated than a simple e-commerce system, but for websites, including ours, it’s the right tool for the job.

So when you’re choosing your software development partner, consider whether they’re using the right tools for your project or whether they’re just using the hammer they’re familiar with to knock in your screw.

Monday, 12 June 2017

Sign on the Dotted Line – Why Contracts are Important

Contracts might seem like something only big business needs, and many small companies work without them, but if your work is important to you, it is vital to have a contract in place. A well put together contract can make a business relationship stronger and more successful, so it is worth investing some time and effort in getting a contract just right.

When people think of contracts, they often seem daunting, filled with complicated language only solicitors understand, fine print made to confuse the signatory and seemingly endless clauses that only apply in the most unique of circumstances. Documents like this are off putting, and occasionally detrimental to the business process, especially at the beginning of a new working relationship. Contracts don’t need to be pages and pages long, or contain lots of legal jargon or penalties, the most important thing is that all parties understand the content of the contract and all are in agreement as to their own responsibilities. It is very important to make clear what is expected of each party and what will happen if either side fails to keep up their end of the agreement. Being clear on cost is essential too - what is included in the charge and, very importantly, what is not included. A good contract should only contain information relevant to that particular piece of work and should be written in simple, understandable language where possible. Having someone sign something they don’t understand is not a good way to begin!

For general terms of business, applicable to every piece of work, a Master Service Agreement can prove useful to accompany each specific work contract and Naked Element agrees and signs an MSA with every client. This MSA does not oblige either party to work with each other, it merely details the quality of the service or product, each party’s availability throughout the business relationship and the responsibilities they have to each other. Only once a schedule is signed, does it become a binding contract. The MSA defines the confidentiality clauses, copyright details, intellectual property rights, payment terms and the scope of charges as well as liability from each party. These key details are indispensable for any business, whether the project is worth £500 or £5,000,000 as they are crucial if something were to go wrong.

Contracts also shouldn’t be designed to catch someone out, or tie them down unnecessarily, they should be an agreement, put together for the benefit of all parties. Where possible, a clever business person should be open to discussing and amending a proposed contract before it is signed if the other party wishes to make changes. It is also often beneficial to include a clause allowing either party to revisit a contract for adjustment after a set period of time. Being flexible and open to future issues in this way increases trust between parties, making a successful business relationship more likely.

A good contract should -

  • Only include relevant information
  • Use simple language
  • Outline benefits of the contract to both parties
  • Be negotiable
  • Be adjustable where appropriate

With a proper contract the client will feel they can depend on the product or service they are paying for and can rely on the contract to ensure they will not be out of pocket if something goes awry. By the same token, the service provider is protected by the contract if a client should renege on something that was previously mutually agreed upon. A good contract, that has everyone's  interests covered equally, makes a business seem more trustworthy, as well as more professional, and if everything goes well, more likely to do business again.

Words by Lauren.