
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
- 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.