Alan McNeil
PC since 1982, Mac since 1984, Web & Linux since 1998, Rails since 2005
Skills (things I've done)
Software I've written:
- Public Web
- Private Web - system administration
- NISP ISP control panel (dns, email, ftp, web) via Rails web pages (Rails/Postgresql)
- DSL control via Rails web pages (Rails/Postgresql)
- Radius control via web pages (PHP/MySQL)
- Modem status web pages
- Nagios plugins for system monitoring multiple servers (Nagios3)
- Commercial (CD or disk in a box)
- Internal - system administration
- Automated Rescue scripts for Nagios to run in emergencies. (An attempt to stop email system pages at 4am)
- Email server monitoring scripts
- Backup scripts
- Monitoring scripts to check uptimes, queues, disk space, mailboxes, modems, UPS's
- Databases have configured replicating servers (mySQL and Postgresql/slony)
- Bit level
- Assemblers both native and cross-platform
- CPU & hardware simulators to debug programs before hardware was available.
- C compilers adhoc, recursive decent & operator precedence
- Peephole optimizers pass 3 for compilers
- Macro languages & interpreters: Many specialized languages to make it easier for beginners to program pinballs, video games, and consumer electronics.
- Hardware drivers (sync serial, hard drives, tape, tablet) in multiple operating systems.
System and Networking tools I've learned and configured: (all are free Linux/Unix software)
- Networking
- Routers [Cisco & Imagestream] - multiple load balanced T1s and fiber interfaces
- Quagga - dynamic routing software that handles BGP, OSPF and more
- iptables - Linux routing software. I've done traffic splitting and shaping with iptables
- tc - Traffic Control and shaping
- WireShark & tcpdump - network traffic sniffer
- openVPN - Virtual Private Network
- Network services & Servers
- OpenVZ - Very compact virtual server system. Compiled, packaged and installed the OpenVZ kernel from scratch. Created new templates from scratch. Debugged errors in net startup.
- FreeRadius - Authentication for modems. I've set up both MySQL driven and unix user based schemes in parallel
- Bind9 - DNS server
- Apache - "the" web server
- Nginx - fast web server
- ProFTPd & other FTP and TFTP servers - proFTP works well with MySQL
- DHCP - dynamic host configuration
- NTP - Net time protocol which keeps all the servers' time in sync
- Syslog-ng - remote syslog
- Asterisk - Open source telephony
- Elastix - VoIP Phone system based on Asterisk
- Squid - Caching web proxy server
- Email
- Monitoring
- Backup
- Rsync - remote sync server which is good for secure backups
- Linux RAID - Multiple Disks stay in sync with no special hardware needed
- DRBD - High availability redundant disks (in separate servers)
- Mysql database redundancy - Database stays in sync across servers
- Source Control & Project Management
- Basecamp - current favorite client project tracker
- Redmine - project manager with a lot of features
- PivitalTracker - agile project management tool
- Story Mapper - helps focus on the big picture while working with PivitalTracker
- Mercurial - distributed source control, a personal favorite
- Subversion - centralized source control
- Git - probably the most popular centralized source control
- BaseCamp - (not free) project collaboration tool
- Miscellaneous
- MythTV - Linux software digital video recorder and media server
- Firefly - Free Linux Roku and iTunes Media server
- TeamSpeak - realtime voice chat
- Jabber - Open source and standards (XMPP) chat
- Arduino - fun micro controller
- Propeller - somewhat flawed micro controller
Languages I've learned (in chronological order):
- Fortran II (age 14 - I dropped the pass 2 card deck and got kicked out of comp center)
- Fortran IV (still cards)
- Fortran G (finally got access to a TTY and a 'research account'. "Misused" plotter for art.
- PL/1 (I [re]invented operator precedence expression parsing without prior exposure, amazing my professor who expected all of us to use recursive descent. I knew one of the test expressions was 35 left parens, an x followed by 36 right parens which would make IBM 360 overflow its stack so I looked for another way.
- AlgolW (a cool language, the precursor of Pascal)
- TUTOR (an interpreted language for PLATO computer based instruction. It had a strange backtrack & re-execute mode while "judging" student answers)
- Basic (on my Altair, IMSAI, SOL20 and other early personal computers)
- Forth (is basically a macro language. I used it to develop video games)
- C (Finally, I knew enough to write my first compiler. I used it to write pinball & video games)
- Pascal (the original Mac development system was UCSD Pascal. I bought the 128K mac on roll-out and a Lisa to program the Mac. Total cost about $10000.)
- Smalltalk I did one major music project using Smalltalk. It's great until garbage collection time.
- C++ w/STL - This combo rocks with a good editor/browser like Object Master (OM seems to have disappeared completely).
- Perl (Power tool for Unix and Web)
- PHP (Simpler that Perl and abused like BASIC by numbskulls trying to program out of paper bags.)
- Ruby & Rails (A great web programming combo. Rails reminds me of Smalltalk without the long pauses for garbage cleanup.)
- HAML and SASS shorthand html and css. Not a fan of HAML.
- Sinatra lightweight server
- RSpec, Cucumber, Factory Girl Rails favorite testing framework
- Specialized languages I've used short projects:
-
- awk, sed, grep - If you use Unix/Linux, you usually end up learning these.
- Kyma - specialized signal processing/music composition language
- Max - Visual data flow language
- Lilypond - Music typesetting language
Hardware Skills
- Read schematics, build, solder, and debug electronic projects.
- Design small electronic projects.
- Spec'd and wrote ROM's for development systems
- Helped design patented graphics chip set.
Machines & Operating Systems
- IBM 1620 (ugh check stop again!) no real operating system, just fortran batch card operation
- IBM 360/370 (look don't touch, submit the job to the operator on punch cards) TSO
- CDC Cyber70 (look, don't touch) PLATO
- Digital PDP-8e (toggle in boot code, load paper tape) bare bones fun.
- Interdata 7/32 (boot from tape, 360 clone) It came with a simple OS with SOURCE!
- Altair, IMSAI, SOL20 (8080, z80 personal computers) eventually CP/M
- MODCOMP - fairly insane CPU architecture designed for telcos and military.
- PC's (XT, AT, etc) CP/M86 MSDOS Windows 1 -> 2k/XP -> 7 (Note Windows 1 and 2 created local black hole conditions - they SUCKED.)
- Macs (128, II, etc) MacOS (Great UI. In 1988, Apple network engineers told me early that "Macs are NOT for GAMES!!" Maybe someday they will change their minds.)
- LINUX Debian, RedHat, Suse, Gentoo, Ubuntu
- FreeBSD Unix
- Cisco IOS
- Android / Java - I don't like Java after using Ruby
Design
Miscellaneous
- 1 year of Montessori Training
- 16 years of Piano Training
- 1000+ miles of hiking
- Decent square dancer but prefer the old dances on 78's
- Honorary Doctor of Philosophy in Pizza Makin' Science by Western Flathead Universality - a joke degree but the pizza is no joke Chicago deep dish.
- Learning Bandoneon - probably invented by a cryptographer as the key arrangement is an enigma