Hi, I’m James Jefferies, a Software Engineer & Technologist. I formed ShedCode in the Summer of 2011 to work on interesting projects with interesting people.
After many years of being an employee for large companies, solving problems by thinking hard & asking computers to help, I wanted to be more flexible with who I could work with & what I worked on.
I love to fix all kinds of problems, from building bespoke web, desktop & mobile applications, performance consultancy, server administration, technical architecture and general technical advice.
ShedCode is based in an office above the Site Gallery in Sheffield, South Yorkshire. Pop in to see us for a chat in the cafe downstairs!
Finance Portal - Web application enabling statements and payments for a financial services client with Technophobia - built using lightweight Java stack.
Happenstance Project (Digital R&D fund)
Password storage, retrieval system - internal system built using Grails & Groovy.
Recruitment system for South Yorkshire Police with Technophobia - built using the JSF, Spring, Hibernate, Java stack.
Meter reading systems & Mobile meter installation systems for what is now RWE npowerRWE
Barclays Bank - my first proper job, Customer Relationship Management application & infrastructure architecture for Barclays Bank
Way back in 1999 I was sent on a ‘Java for C Programmers’ course which opened my eyes to the power (and some of the pain!) of the Java language. Since then I’ve spent most of my time building applications to run in the Java ecosystem. It’s my fallback language now & I have a lot of experience working with many of the common Java libraries & frameworks, Spring, JSF, Struts, iText, Junit, Hibernate.
Grails and Groovy
I’ve worked on a few Grails projects and have enjoyed how productive the framework is, whilst still being built on many familiar Java frameworks. My platform of choice for JVM applications.
Rails and Ruby
Recently I’ve started learning Ruby, Rails & Sinatra - it’s obvious to see why Rails & Sinatra are so popular for rapid building of prototypes, proofs of concept and startup MVPs.
It is fair to say that my CSS knowledge is somewhat rudimentary. I can get by, but I’ve had the fortune to work with some excellent front end developers over the years and usually call on them for assistance if required.
I’m most at home at a unix like command prompt. Preferably with zsh & screen installed, ready to go. Having learnt unix shell, way back at University, I’ve a lot of experience of working in that world.
Over all that time, I’ve picked up a lot of systems admin knowledge and skills, although I wouldn’t claim to be an admin, I can get a server up and running, secured and raring to go without too much problem.
Having used AIX & Solaris for a lot my career, in recent years I’ve spent a lot more time with Debian & Ubuntu and they are my operating systems of choice for server builds.
I do admin for a couple of clients, looking after 3 servers at the moment, providing them with technical & hosting support, including domains and DNS.
Mac OS X and iOS
I’m not an old school Apple fan, but in 2003 I bought my first Mac, a secondhand PowerBook, and since then, have weaned friends and family off Windows XP to join the world of OS X. It’s not perfect, but it works for me, has a Unix variant behind the scenes & is reliable.
I’ve recently beein doing some work getting to know iOS, Objective-C & Cocoa development.
Recently I’ve been working a lot with MySQL and Postgres, however before that I spent many years working with Oracle Databases (8i, 9i, 10g) and their Java Application Stack.
Electronics, Arduinos, RaspberryPis
Many years ago, I had a 100 in 1 electronics kit, recently my interest in electronics has resurfaced, thanks to having an Arduino to work with. I’ve recently been working with attempting to run an Arduino and printer with steam power.
How do I work?
Over the years I’ve worked on many types of project, from classic waterfall projects through to those using various Agile methodologies. I think it is fair to say that most projects have either been very waterfall like, or have incorporated some of the classic Agile methodologies.
Although I know and understand how waterfall projects work, I’d much prefer to work in a more Agile way, especially with daily standup meeting/scrums for integrated teams, product owners managing priorities, test driven development, continous integration, process automation etc.
I’ve also worked on projects where I’ve taken a brief or existing product away to work on with regular milestone checks, I’m able to think on my feet and use my experience to work without supervision.
How do I write code?
- I’m a fan of test driven development, in a pragmatic fashion. Not all my code has test coverage, but most of it usually has. Critical functionality always has coverage!
- Although I have done some work in a pair programming environment, it has been unusual in my career to do that. When I have done it, it has usually been for a certain period to crack a specific piece of functionality or problem, rather than continously. It’s great to learn from other people!
- I like processes to be automated where possible. For example, a computer can run my tests for me and let me know if I’ve made a mistake, whilst I’m working on other things.
- I use IDEs (Eclipse, SpringSource Tool Suite, IntelliJ IDEA) but also do a lot of work in good old vi.
I have recently started to use GitHub for code I think other people will find useful (as well as this site and jamesjefferies.com) - you can see the ruby script I wrote for receiving the Network Rail Data Feeds as a way of learning about them and Ruby. There are also many blog posts about what I learnt on my blog
Thanks for taking the time to have a look at ShedCode!