Ian Beckwith

Linux sysadmin, bespoke development and web solutions

Full, acronym-heavy skill list. For a higher-level description of my skills see the main page.

programming

  • over 20 years experience
  • languages include php, javascript/ecmascript, sql, perl, c, c++, ruby, python, posix sh / bash, java, m4, sed, awk
  • designing, implementing and maintaining codebases from small scripts up to large complex systems
  • object oriented, procedural and declarative programming. metaprogramming, code generation, templating
  • able to dive into new codebases, languages and apis and get up to speed quickly
  • porting, with and without autotools: posix, linux, solaris, bsd, mac/osx
  • debian development.
  • revision control systems - usage, setup, admin, training, support and migration: git (including gitolite hosting), svn, darcs, cvs, rcs
  • writing/maintaining secure code, including webapps and other network-facing daemons
  • integration with payment gateways - sagepay/securetrading
  • internationalisation - converting codebases to support unicode/utf-8, supporting translation with .po files
  • regular expressions (basic/extended/perl)
  • debugging with strace, gdb, valgrind and good old printf(3)
  • network-enabled code from socket-level to higher-level apis.
  • test-driven refactoring

sysadmin

over 20 years experience managing linux and unix systems

  • linux system administration: onsite, hosted, VMs, cloud
  • linux distributions: Debian, Redhat/RHEL/CentOS, Ubuntu, Slackware, MCC-Interim, SLS
  • other unix systems: Solaris, SunOS, FreeBSD, HPUX, Irix
  • standard unix command-line toolset
  • automation/scripting of common tasks
  • OS upgrades and keeping systems up-to-date with security patches
  • security auditing, securing servers against attack, recovering compromised systems, forensics
  • virtualisation with vserver, kvm and chroots
  • load balancing and other multi-server setups
  • PCI DSS compliance
  • writing documentation for users and developers
  • setup, maintenance and periodic testing of encrypted, redundant, geographically distributed backups
  • speccing out hardware for purchase
  • system construction for servers and workstations
  • handling storage: RAID, file-servers, NAS, cloud, backups
  • kernel compilation, installation, tuning
  • data recovery

networking

I've managed many networks, from trivial LANs up to that of a small ISP.

  • TCP/IP, ethernet, leased lines, ppp, wireless, ipv6
  • firewalls and routing, cisco and linux iptables, static routes and OSPF
  • load-balancing (round-robin DNS and hardware load-balancers)
  • file servers with nfs and samba
  • DNS: hosting domains with BIND, registering domains, scripting DNS updates
  • VPNs with openvpn and iodine!
  • file transfer for untrusted users into locked down chroots using ftp or sftp
  • Remote monitoring of hosts via snmp, munin and custom tools
  • dialup with RADIUS for authentication

web

  • Responsive, clean, standards-compliant HTML5 & CSS3 (or earlier), both static and generated by code or templates
  • server-side development backed by databases
  • Front-end development (HTML5, CSS3, Javascript, AJAX, Responsive),
  • Backend development with PHP, perl, ruby, etc...
  • NoSQL & cacheing solutions
  • frontend libraries: jQuery, jQueryUI, bootstrap, prototype, tinyMCE
  • validated, cross-browser compatible code and markup
  • online payment gateways, SSL and PCI Compliance
  • development and maintenance of java applications, applets and servlets; deployment with tomcat and glassfish
  • Apache web server: installation, maintenance, tuning, customization
  • Combining and minifying CSS and JavaScript
  • integration with 3rd-party APIs and internal customer systems via http[s] (RESTful and RESTless), RSS, email and [s]ftp using XML, JSON, SOAP and CSV.

databases

  • installation, admin and tuning of relational and NoSQL databases
  • design, normalisation and optimisation of database schemas
  • querying and manipulation of data with SQL
  • experience of MySQL, MariaDB, PostgreSQL, MSSQL and REDIS
  • integration with codebases via embedded SQL or an ORM (doctrine)
  • exporting, cleaning, transforming and importing datasets

mail

  • MTAs: postfix, exim, sendmail, qmail, smail
  • sending of secure authenticated mail with SMTP and SASL
  • mail reading via IMAP and POP3 with dovecot
  • Spam filtering with postgrey, spamassassin, DKIM, SPF, procmail
  • virus scanning with clamav
  • supporting multiple domains with virtual mailboxes
  • mailing lists: mailman, majordomo
  • scripted sending/receiving/processing of mail in a variety of languages, including MIME handling.

free software development

I have been writing, maintaining and releasing free software for over a decade, both my own projects and contributing to other people's code. See my personal site for more details.

  • maintaining a variety of packages in the debian distribution - see my personal site for more information.
  • keeping up to date with new upstream versions and cooperating with upstream developers
  • acting as an upstream developer where none exists
  • fixing and reporting bugs
  • adding features
  • handling releases
  • producing stable snapshots of actively-developed code
  • following distribution-wide policies and best practices to ensure packages integrate properly with the rest of the system
  • writing and handling security patches
  • dealing with bug reports and feature requests from users
  • writing man pages and other documentation

projects

previous projects I've been involved with include:

  • online events calendar
  • web-based exam simulator for mock exams
  • a hotel booking system and property management system
  • a FUSE-based virtual filesystem for querying tag metadata from audio files (eg /goth/AND/decade/1990s/)
  • a suite of tools for managing a music collection
  • a system monitoring and notification framework
  • a web-based document management system for disaster response planning
  • maintaining, modernising and extending a proprietary CMS
  • a perl module for reading and writing PFIF, the People Finder Interchange Format
  • maintaining several free software projects
  • maintaining debian packages

soft skills

  • Technical writing, user support, documentation for users and developers
  • Experience managing projects and coordinating developers and other key stakeholders
  • Dealing with vendors and service providers
  • Management of online communities
  • UK driving licence and passport.
  • Available at unsociable hours for upgrades, deployments and emergencies.
  • Ability to call upon associates with other specialities: graphic design, SEO, online strategy, copywriting.