About Andrew McRae
I have a wife, two children (23 & 20), and live
in a leafy North Shore suburb in Sydney.
I am a senior software engineer for Google Inc.
My other job is to avoid being a full time system
adminstrator to my childrens' computers. 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 play squash, 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 450D digital SLR.
I have just traded down to this lighter camera from a Canon 20D so that I
don't have to carry as much weight on hikes.
Previously I have owned a Canon 300D Digital Rebel,
a Kodak DC-290, and 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.
Subscribe and get updates when new photos are posted.
Haute Route, Swiss Alps, September 2012
New York City, May 2012
Wilkin Valley and Rabbit Pass, NZ, January 2012
Our combined 100th Birthday Party, December 2011
Hardys Bay to Patonga, October 2011
Australia Top End, September 2011
Snowboarding at Lake Tahoe, California, February 2011
Rees-Dart Track, New Zealand, January 2011
Kokoda Track, PNG, April 2009
Mt Aspiring and Bonar Glacier, February 2009
I have filed (or in the process of filing) eleven patents.
These patents have been granted:
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.
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 the developer of PC-Card technology for
the FreeBSD project, and actively promote
the use and development of Open Source Software.
I am also 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 current 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.