The role covers April 2004 till Oct 2010. Employed as a software engineer, I helped move a company from an ad-hoc software creation, to a structured development process. The company was focused on the reseller market for internet bandwidth. The company had an efficient sales force, and was awarded in a number of places, to quote the commercial directors linked-in profile “murphx was voted ISP of the Year at the Comms Business Awards 2009 and has been listed in Sunday Times Microsoft Tech Track 100, 2009, Deloitte Fast 50 and Deloitte Fast 500 EMEA as one of the fastest growing technology companies in the UK”.

Towards the end of this period, the company had been bought by Daisy plc, and is no longer a separate trading entity to the best of my knowledge. After I left, the original development team, under the CTO was formed as new company ~ called murja ~ as a pure software services company. This still seems to be a turbulent state, and that leaving at that point was a smart idea.

Responsible for

  • Developed solutions for business goals using OOP;
  • Primary author for the majority of the companies post-2004 business logic infrastructure;
  • Assisted authoring several three tier business portals, inside clustered LAMP servers;
  • Designed, wrote, documented and maintained about 20 XML RPC API (quite a few internal);
  • Designed, used and managed several customer databases;
  • Wrote several high scalability performance critical services for “realtime” business systems;
  • In collaboration with network team, monitored and maintained the services I had written;
  • Integrated with a range of external vendors provisioning systems (where the API had a range of maturity before service contracts where signed);
  • Did due diligence on quality, so a single process could run for several months with variable data;
  • Developed business software to provide and manage the business processes for a DSL service provision, billing and accounting addons;

As software engineering

As I was the fourth employee – and first software engineer – I used the following software engineering ideas to reduce risk. By the time I left, the company had grown considerably :

  • Better processes on software versioning and release management, moving source archive into subversion;
  • Built the test environment so live deployment was no risk (and performance benchmarking was possible);
  • Improved process management, so there are semi-formal documented mile stones that reduce business mis-communication;
  • Added management-focused full requirements and feature specifications, so there was visibility on intellectual property;
  • Create a loose-coupled and strong architecture, so libraries could be upgraded without side-effects;
  • Pushed documentation processes so historical software isn’t a “blackbox”;
  • Organised technical reviews on “best practice” and technological platforms;
  • Scaled up the human interaction features to use templates, for better branding and per-client settings;
  • Created XML RPC documentation process and review; as the company expanded, it published API to its clients. Devised a way to manage XML examples with syntax hi-lighting;
  • Initiated and managed the “bugtrack” software for errors and improvements;
  • Created and used test-plans as a means to demonstrate correct functionality of entire state machines;
  • Experience in managing development against incomplete and changing APIs from third parties;
  • Developed scripts for operational processes, to automate routine activities;
  • Created package distribution as a mechanism for stable code release, rather than direct editing. My new system had to interoperate with existing package process for the rest of the host(s);
  • Experience in harmonising coding standards to ensure consistency between different periods and developers;

Experience

I have gained commercial experience in the following systems and tools:

  • OO PHP 4 (for the majority of development);
  • AJAX, OO JS, DOM JS;
  • HTML4 and CSS;
  • vim textual manipulation;
  • RPM building and package managing;
  • Zend bytecode optimizer;
  • Perl scripting;
  • C under Unix;
  • Usage of SVN (commandline);
  • Apache, HTTP and COOKIEs; all the configuration and settings for the host;
  • Unix tools: sed, expect, grep, ssh, ssh-agent;
  • Interaction with and responsibility for other peoples code (and raising standards against this);
  • Practical problem solving using regexes, for vim, Perl and grep variants;
  • Unix firewalls and routing: iptables, routed, ethereal;
  • MySQL 4 - usage and optimisation, abit of MySQL5;
  • XML1.0, XML1.0 with namespaces, SOAP;
  • Network programming with sockets;
  • IP address management (traditional ranges, CIDR, routing) + integrity checking;
  • Email systems and routing: IMAP, POP3, SMTP, MIME, encoding, SMS gateway;
  • Netflows, several versions;
  • RADUIS protocol (including several specialised RFCs, Cisco specific features);
  • Documentation systems: man/troff, ms-word, PDF exporters, documentation tools;
  • L2TP protocol, LCP protocol, kernel IO streams;
  • syslogd, configuration and management;
  • Sophisticated use and control of expect;
  • The ISP industry - not that I was intending on working inside this again;

Discussion of technology

  • Created the companies AJAX tool-set + operational procedures;
  • Wrote the 2005 pre-AJAX “live product availability” in the end user portal;
  • Replaced the Javascript form validation library with a better one, with aim of running the same rule-based process on the server-side, to reduce administration costs on data cleaning;
  • Created the first and second generation XML API infrastructures for XML RPC. This corporate asset is designed to be lightweight, and efficient in memory and running costs. This includes strong data-typing to ensure all records in new customers data are complete and valid;
  • Wrote an XML regression tester for the new XML RPC infrastructure;
  • Analysed several XML data management systems, created employers process;
  • Wrote a bulk import tool to allow entire client user-bases to be moved into my employers systems;
  • Created and managed the configuration system for most operational software;
  • Created 'man' pages for admin visible files and the configuration;
  • Created a payment collection system with integration into several service providers;
  • Created a system for repeat payments, similar to direct debit;
  • Extended the shopcart class;
  • Created the third edition user signup portal, although this has been depreciated;
  • Worked to rewrite HTML rendering into compliance with w3c standards, often by replacing GUI interfaces (work in tandem with roll-out of XML infrastructure);
  • Created several IP management systems, as the company is an ISP they need to manage many thousand IPs for RIPE;
  • Managed and extended the log analysis tools, as business infrastructure expanded. Created daily summary mails for middle management, and pro-active user-account management;
  • Actively negotiated with the rest of the staff to help their work flow, by deploying minor kaizen improvements;
  • Created, deployed and managed data cleaning and fixing tools to improve company data-sets;
  • As tandem to the previous performed billing reconciliation to correlate client accounts;
  • Created two generations of the AAA infrastructure;
  • Created Asterisk modules for the voice push products (and anwserphone, same thing);
  • Managed and assembled technology for access to fax without a fax receiver;
  • Did investigation to send SMS packets straight to mobile supplier (big cost saving on error reporting);
  • Patched qmail for large scale use with MySQL integration;
  • Analysis for direct debit integration;
  • Managed Linux kernels, with regards to high concurrency sockets;
  • Created the technical information process to support “scratch card” products (not currently available I believe), these products are prepay limited-rate bandwidth;
  • Pushed documentation processes so historical software isn’t a “blackbox”;

  • Organised technical reviews on “best practice” and technological platforms;
  • Created technical infrastructure for “non-business accounts” - these are cheaper rates for evening and weekend bandwidth;
  • Created operational software for QoS products targeted at VoiP;
  • Created software to manage VoiP systems;
  • Created an answerphone (to push and pull messages) service to sell with the VoiP services;
  • Created account management process so user accounts may be managed by clients, but run via my employers bandwidth;
  • Created the technical process to support various types of client account, and integration into my employers “central pipes”;
  • Created reporting software for all the above product types;
  • Created a management platform for the mail infrastructure;
  • Created infrastructure for email templates and management on sending emails;
  • Created infrastructure for provisioning systems based on email;
  • Created a templated SMS integration;
  • Created software to allow management of users routing space (outside of the users private network);
  • Created a management tool for database tables, operationally used on logging tables;
  • Created a tool to monitor the health of databases;
  • Analysed and optimised SQL transactions on established systems, as growth lead to saturation of resources. Revision of table structures and indices as necessary;
  • Analysed and constructed data caching processes for high performance operational systems;
  • Developed processes to improve internal data storage, specifically physical addresses;
  • Performed a security audit for the company;
  • Created scripts to assist code management and RPM building, including a system to automatically compile source to a single binary, required sudo, supported auto-distribution;
  • Day to Day problem solving with bash (scripting solutions as useful);

Learning

This was my first real job. When I joined I was very shy and in-secure. In hindsight, I would have behaved the way I do now for the whole period, but that is quite difficult.
I will talk about project management I was doing in this role at various points, which is the important bit of what I was doing at the end. The work improved my project tracking and management skills.
I gained lots of technical experience, but this wasn't an enterprise employer for the majority of its life.


Systems developer

RSS. Share: Share this resource on your twitter account. Share this resource on your linked-in account. G+

Systems developer

RSS. Share: Share this resource on your linked-in account. Share this resource on your twitter account. G+ ­ Follow