About Andrew McRae
I have a wife, two adult children, and live
in a leafy harbourside suburb in Sydney.
I am an Engineering Manager for Google Inc.
My other job is to avoid being a full time system
adminstrator to my family's IT needs. As a result of this,
I am developing a deep and lasting respect for all the
administrators of Windows PCs.
In my copious spare time, I sail, go bushwalking (hiking), and
What I Do
I work as a software engineer for
as part of their Sydney Engineering office.
One of my main hobbies is photography.
I use a Canon 6D II digital SLR, the latest in a long line of Canon DSLRs
(a 450D, a 20D, and a 300D) and other digital cameras
(Canon S110, Kodak DC-290, various others) I have owned, even going back
to a venerable Sony Mavica
(the one with the floppy disk drive, 0.25 megapixels).
You can see the results of my
amateur photographic efforts in
my photo gallery. My main
interest is in panoramic landscape photography.
One of my photos was selected for
Earth Science Picture of the Day.
all photos on this site are © Copyright by Andrew McRae.
Scotland, Ireland and Wales, July 2018
Dublin and Wicklow, October 2016
California Sierras, September 2016
Tararua Range Traverse, March 2016
Adelaide to Coffin Bay and return, February 2016
Austria, Croatia, Prague, September 2015
Dolomites Alta Via 2, July 2015
Circumnavigation of Kangaroo Island, February 2015
NZ Hike, Arthurs Pass, February 2015
Spain and France, June 2014
Haba Snow Mountain, China, May 2014
I hold eleven patents:
US Patent 6,785,843 - Data plane restart without state change in a control plane of an intermediate network node.
US Patent 6,970,462 - Method for High Speed Packet Classification.
US Patent 7,154,888 - Method for classifying packets using multi-class structures.
US Patent 7,236,493 - Incremental compilation for classification and filtering rules.
US Patent 7,325,074 - Incremental compilation of Packet classification using Fragmented Tables.
US Patent 7,415,023 - Method for classifying packets using multi-class structures.
US Patent 7,525,973 - Flexible software-based packet switching path.
US Patent 7,571,216 - Network device/CPU Interface Scheme.
US Patent 7,646,771 - Compilation of Access Control Lists.
US Patent 7,904,546 - Managing processes on a network device.
US Patent 8,990,365 - Processing management packets.
In September 2006 I took a trip to Mt Hagen, Papua New Guinea,
to do some volunteer work (Linux training).
I wrote a blog of the trip, along
with some photos.
In September 2006 I joined Google Inc.
Previously, for 3 years I was a Senior Principal Engineer
in a Silicon Valley startup
called NetDevices Inc.,
working on a new branch office router.
Prior to October 2003, I was at Cisco Systems, where I had been a
Distinguished Engineer in the Routing Technology Group, working
on next generation router architectures.
I joined cisco in October 1995 as part of the ELC group in Core Engineering.
I have worked on a number of port adaptors, mostly serial and
channelised. I spent 18 months on the
product, as a technical leader. I was the lead engineer on the
, the next generation processing engine for the C7200 series. I also
was the designer and implementor of
TurboACL, a new patented high speed packet classification algorithm.
Before cisco, I was a Principal Engineer at Mits Ltd. (Australia), where
for 11 years I worked on real time supervisory and control systems.
My responsibilities included communications
and embedded systems, and a range of other areas
such as Unix applications and drivers.
In the dim past I co-founded a company
specialising in motion control special effects and
computer graphics for film and television.
In extra-curricular activities, I was an early developer of PC-Card technology for
the FreeBSD project (though I doubt any of my code has
actually survived), and actively promote
the use and development of Open Source Software.
I was involved in the Australia Unix Users Group
(AUUG), where I regularly
deliver papers, hang out with the local Unix folks and
generally have a good time. I was programme
chair of AUUG'98.
I am a founding member and a past director of the
Australian Chapter of the
Here is a list of papers that I have published, some of which
are online, and others which can be obtained from the
A Status Report on the X11 Windowing System, presented
at the Australian Unix Users Group (AUUG) conference, September 1989.
Unix in the Real Time World, presented at the AUUG
Summer conference, Sydney, February 1990.
A Unix Task Broker, published in the AUUG newsletter
Porting TCP/IP to 802.4 Token Bus, presented
at the September 1991 national AUUG conference (Sydney).
Open LANs Span All Boundaries, Article in
Computing Australia, September 1991.
Hardware Profiling Of Kernel Network Code, presented at the AUUG
Summer conference, Sydney, April 1992, and also presented
at the AUUG national conference September 1992.
C++ in an Embedded Environment, presented
at AUUG national conference September 1992.
The Architecture of a Distributed Substation Management
System, presented at Distribution Automation/Demand Side
Management conference, Palm Springs, California, January 1993.
Hardware Profiling of Kernels, presented
at USENIX Winter conference, San Diego, California, January 1993.
386BSD: A Look Under The Hood, presented
at AUUG Canberra and Sydney summer conferences February 1993.
Intelligent Substations: Costs and Benefits, presented
at Electricity Supply Engineers' Association conference, September
A New Communications Paradigm For UNIX, presented
at AUUG national conference September 1993.
Substation Management for Distribution Utilities, presented
at Distribution 2000, Melbourne, November 1993.
IP Firewalls using a Tunnel Driver, presented at CSIRO
System Security seminar September 1994.
Unix: Live Free or Die!, article for Open Systems
Review, March 1995; reprinted in AUUGN April 1995.
Plug and Play Unix, presented
at AUUG Canberra summer conference February 1995.
FreeBSD and PCMCIA, half day seminar for
NSW AUUG Summer technical workshops March 1995
The World Wide Web and Online Documentation, paper for
MITS Users Group meeting, June 1995.
Plug'n'Play Unix, invited talk presented
at AUUG national conference September 1995.
The Internet in the 21st Century, presented
at AUUG national conference September 1996.
Globally Distributed Software Development Challenges,
presented at SEA'99 (Software Engineering Australia), Canberra, April 1999.
High Speed Packet Classification,
presented at AUUG national conference September 1999. The
for this talk are also available.
Toaster: A High Speed Packet Processing Engine, presented
at the AUUG national conference June 2000.
A User Level
Networking Infrastructure for Linux, presented
at AUUG National Conference, September 2004.
Router on Linux, presented
at AUUG National Conference, October 2005.
A Linux Task Manager,
presented at AUUG National Conference, October 2006.
An Open Network Platform,
presented at AUUG National Conference, October 2006.