Alan McNeil
PC since 1982, Mac since 1984, Web & Linux since 1998, Rails since 2005
Skills (things I've done)
Software I've written:
- Commercial
- Internal - 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
- Email server monitoring scripts
- Backup scripts
- Monitoring scripts to check uptimes, queues, disk space, mailboxes, modems, UPS's
- 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
- Ethereal & tcpdump - network traffic sniffer
- ISP Network services
- 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
- 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
- Email
- Monitoring
- Backup
- Rsync - remote sync server which is good for secure backups
- OpenSSH - Secure remote shell
Languages I've learned:
- 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 ([re]invented operator precedence without prior exposure, amazing my prof 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.
- 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 again).
- Perl (Power tool for Unix and Web)
- PHP (Simpler that Perl)
- Ruby & Rails (A great web programming combo. Rails reminds me of Smalltalk without the long pauses for garbage cleanup.)
- Specialized languages I've used short projects:
-
- sed, grep - If you use Unix/Linux, you usually end up learning one or both of these two.
- 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 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 (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
Design
Miscellaneous
- 1 year of Montessori Training
- 16 year of Piano Training
- 1000+ miles of hiking